Artikelgids
Een bediener wat verskeie laat loopWordPressWebwerf, gedeelmemcachedKan dit data-oorskrywing of oorspraakprobleme veroorsaak?
Hierdie artikel bied 'n stap-vir-stap gids oor hoe om tydelike en objekkasdata perfek oor verskillende webwerwe te isoleer deur 'n aparte kasvoorvoegsel (WP_CACHE_KEY_SALT) en objekkasskripte te konfigureer.
Elimineer datakonflikte 100%, wat verskeie webwerwe toelaat om die ultieme geheuevlak-versnellingservaring gelyktydig te geniet, en sluit veiligheidswenke in om slaggate in produksieomgewings te voorkom!
'n Paar dae gelede het 'n vriend my gevra oor sy drie WordPress-webwerwe wat op sy bediener loop. Hy wou Memcached opstel om hulle te versnel, maar hy was bekommerd dat die data deurmekaar sou raak.
Ek het op daardie oomblik gelag, want ek het self in hierdie strik getrap.

Eerlikwaar, Memcached is ongelooflik maklik om op te stel vir 'n enkele webwerf, maar dit raak interessant as dit kom by verskeie webwerwe wat saam bestaan. Hoekom?
Standaard plaas Memcached alle webwerwe se tydelike en objek-kasgeheue in dieselfde poel. Stel jou voor dat webwerwe A en B dieselfde kasgeheue-sleutel gebruik – dit sou chaos veroorsaak. A se data sou B s'n direk oorskryf, en die twee webwerwe sou met mekaar se data begin "inmeng".
Wat ek teëgekom het, was selfs snaakser, eenelektrisiteitsvoorsienerDie webwerf se produkbesonderhedebladsy het artikelinhoud van 'n ander blogwebwerf vertoon. Ek was verstom en het gewonder: "Wat is dit???"
Dit het my 'n hele nag geneem om dit uit te pluis; dit het 'n kas-sleutelkonflik geblyk te wees.
So vandag deel ek my konfigurasiemetode in die hoop dat dit vriende met dieselfde behoeftes kan help. Ek verken dit steeds self, en sommige van my idees is dalk nog nie ten volle ontwikkel nie, maar hierdie metode het goed vir my gewerk.
Voorbereiding van bedieneromgewing
Voordat jy begin met die opstel van WordPress, moet jy seker maak dat die bediener die Memcached-diens en die PHP Memcached-uitbreiding geïnstalleer het.
Hoe om Memcached in HestiaCP te installeer?
As ons Ubuntu as voorbeeld neem, behels dit slegs drie reëls opdragte.
sudo apt update
sudo apt install memcached php-memcached
sudo systemctl restart php8.x-fpm # 根据你的 PHP 版本改Na die installasie, onthou om te kyk of die Memcached-diens loop.
sudo systemctl status memcachedAs jy "aktief (loop)" sien, beteken dit daar is geen probleem nie.
Let asseblief daarop dat pakketname tussen verskillende stelsels kan verskil. Hierdie opdrag word gewoonlik op Debian-stelsels gebruik. Indien... CentOS Vir ander verspreidings moet jy dalk yum of dnf gebruik om hulle te installeer.
Ek het destyds Ubuntu 20.04 gebruik, en die hele proses het redelik glad verloop.
Kernbewerking: Konfigureer kasvoorvoegsel
Hierdie stap is die siel van die hele konfigurasie en die sleutel tot die voorkoming van dataverwarring.
Jy moet 'n unieke kasvoorvoegsel by die wp-config.php-lêer in die wortelgids van elke WordPress-webwerf voeg.
Maak die wp-config.php-lêer van die eerste webwerf oop en vind hierdie reël kommentaar.
/* That's all, stop editing! Happy blogging. */In hierdie bedryfBoVoeg by
// 网站 A 的配置
define( 'WP_CACHE_KEY_SALT', 'site1_unique_string_' );Maak dan die wp-config.php-lêer op die tweede webwerf oop en voeg 'n soortgelyke konfigurasie by.
// 网站 B 的配置
define( 'WP_CACHE_KEY_SALT', 'site2_unique_string_' );Ek sê vir jou, die string wat volg op WP_CACHE_KEY_SALT moet wees...Absoluut uniekJa. Ek stel voor dat jy die webwerf se domeinnaam of die afkorting daarvan direk gebruik, soos site1_com_ of site2_net_.
Ek was lui en het nommers gebruik, maar drie maande later het ek heeltemal vergeet watter nommer met watter webwerf ooreengestem het, en ek moes hulle een vir een opsoek, wat 'n regte hoofpyn was.
Dink daaraan: Memcached werk deur data te stoor en te herwin gebaseer op kasgeheue-sleutels. As jy 'n unieke voorvoegsel vir elke webwerf stel, sal hul data natuurlik geïsoleer word en nie met mekaar inmeng nie.
Dit is soos om elke webwerf sy eie kluis te gee. Alhoewel hulle almal in dieselfde kamer is, is die sleutels verskillend, so die data sal nie deurmekaar raak nie.
Aktiveer objekkasgeheue
Nadat die voorvoegsel gekonfigureer is, is die volgende stap om WordPress in staat te stel om Memcached eintlik te gebruik.
Daar is twee opsies hier, en ek het albei probeer. Elkeen het sy eie voordele.
Opsie 1: Inpropmetode (mees moeitevry)
Meld aan by die WordPress-adminpaneel en installeer 'n kas-inprop wat Memcached ondersteun.
Aanbeveel W3 Totale CacheDie stabiliteit is goed. Na installasie, kies in die inprop-instellings Memcached as die kastipe, voer 127.0.0.1 as die bedieneradres in, en voer die verstekpoort 11211 in, en stoor dan.
As jy 'n suiwerder oplossing wil hê, kan jy dit direk installeer. Memcached-voorwerpkasgeheue Hierdie inprop is spesifiek vir hierdie doel ontwerp; dit het geen ander diverse funksies nie.
Om eerlik te wees, het ek aanvanklik gedink die inprop-benadering was redelik goed, aangesien dit gerieflik is. Maar later het ek gevind dat sommige inproppe met 'n klomp funksies kom wat ek nie nodig het nie, en ek is altyd bekommerd oor opdaterings, bang dat hulle skielik 'n funksie sal byvoeg wat my konfigurasie deurmekaar maak.
Opsie 2: Ontplooi object-cache.php handmatig (meer beheerbaar)
As jy 'n bietjie van 'n perfeksionis soos ek is en nie te veel inproppe wil installeer nie, kan jy hierdie oplossing gebruik.
Laai af vanaf die amptelike WordPress-inpropbewaarplek. Memcached-voorwerpkasgeheue Hierdie inprop, of jy kan die nuutste object-cache.php-lêer op GitHub vind. Laai dan die onttrekte object-cache.php-lêer op na die wp-content-gids van elke webwerf via FTP of SSH.
Let daarop dat dit die wortelgids van wp-content is, nie die subgids van plugins nie.
Nadat jy dit bygevoeg het, sal WordPress die kas outomaties herken en aktiveer. Jy hoef niks te konfigureer nie, want dit sal die WP_CACHE_KEY_SALT lees wat jy vroeër in wp-config.php gestel het.
Ek wou tyd bespaar, so ek het hierdie oplossing hoofsaaklik gebruik omdat dit beheerbaar is. As 'n probleem opduik, weet ek waar om oplossings te soek, en ek sal nie onkant betrap word deur outomatiese inprop-opdaterings nie.
Verifieer dat die konfigurasie effektief is.
Nadat jy klaar is met die voorbereiding van die monster, sal jy beslis wil weet of dit suksesvol was, reg?
Die eenvoudigste manier is om die status van Memcached na te gaan. Koppel met behulp van telnet- of nc-gereedskap.
echo "stats" | nc 127.0.0.1 11211Dan sal jy 'n klomp statistieke sien. Gee spesiale aandag aan die waardes van `cmd_set` en `get_hits`, en verfris die bladsy 'n paar keer om te sien of hulle toeneem. Indien wel, beteken dit dat die kasgeheue korrek werk.
Nog 'n meer intuïtiewe manier om dit te verifieer, is om beide webwerwe gelyktydig oop te maak en te kyk of hulle met mekaar inmeng. As webwerf A nie inhoud van webwerf B vertoon nie, beteken dit basies dat die voorvoegsel werk.
Ek het destyds 'n selfs meer streng toets gedoen. Ek het verskillende oorgangswaardes op twee verskillende webwerwe gestel en toe die nc-instrument gebruik om die data direk in Memcached te navraag. Ek kon inderdaad twee sleutel-waarde-pare met verskillende voorvoegsels sien, sonder enige verwarring.
Op daardie oomblik het ek regtig gevoel asof ek iets groots bereik het, en net daaraan te dink laat my wonderlik voel.
Moenie veiligheidskwessies ignoreer nie
Aangesien alle webwerwe 'n enkele Memcached-instansie deel, is daar 'n sekuriteitsrisiko waarvan jy bewus moet wees.
In teorie, as ander gebruikers op die bediener is, kan hulle jou gekaste data deur 'n plaaslike poort lees. Alhoewel dit 'n sekere vlak van tegniese kundigheid vereis, is dit altyd wys om versigtig te wees.
Daarom moet jy seker maak dat jou Memcached behoorlik werk. Moet nooit na publieke IP-adresse luister nie.In die `/etc/memcached.conf` konfigurasielêer, maak seker dat hierdie lyn teenwoordig is.
-l 127.0.0.1Op hierdie manier sal Memcached slegs na die plaaslike teruglusadres luister en sal nie van buite toeganklik wees nie.
As jy uiters hoë sekuriteitsvereistes het, of as jou bediener webwerwe huisves waarmee ander gebruikers nie gemaklik is nie, stel ek voor dat jy oorweeg om ... Redis Redis kan as 'n plaasvervanger vir Memcached gebruik word. Dit ondersteun multi-databasis isolasie en wagwoordverifikasie, wat aansienlik beter sekuriteit bied.
Redis is egter effens meer kompleks om te konfigureer as Memcached. As jy dit net vir persoonlike of klein spandoeleindes gebruik, is Memcached met die luisterlimiet van 127.0.0.1 basies voldoende.
Sommige slaggate wat teëgekom is
Laastens, laat ek 'n paar slaggate deel wat ek teëgekom het, in die hoop om jou te help om 'n paar ompad te vermy.
Die PHP-uitbreidingsweergawe moet versoenbaar wees.Ek het voorheen 'n situasie teëgekom waar ek die php-memcached-uitbreiding geïnstalleer het, maar WordPress het dit nie herken nie. Ek het later ontdek dat dit as gevolg van 'n PHP-weergawe-wanverhouding was. Maak seker dat jy jou PHP-weergawe noukeurig nagaan wanneer jy uitbreidings installeer om te verhoed dat jy die verkeerde een installeer.
Maak seker dat jy die object-cache.php-lêerpad reg kry.Maak seker dat jy dit in die wortelgids van wp-content plaas, nie die plugins-gids nie. 'n Vriend van my het dit op die verkeerde plek gesit en lank probeer om dit reg te stel, maar sonder sukses.
Moenie 'n te kort string vir die kasvoorvoegsel gebruik nie.Ek het aanvanklik a_ of b_ gebruik, maar later gevind dat hulle te kort was en maklik met WordPress se eie kasgeheue-sleutels gebots het. Jy moet ten minste 'n ewekansige string van sewe of agt karakters of 'n domeinafkorting gebruik.
Onthou om die kasgeheue vir beide webwerwe skoon te maak.Eenkeer het ek net die kasgeheue van een webwerf skoongemaak, maar die ander webwerf het steeds die ou data behou, wat veroorsaak het dat die inhoud van die twee webwerwe teenstrydig was. Dit het my lank geneem om die probleem uit te vind.
Om eerlik te wees, ek weet nie of hierdie ervarings vir almal nuttig sal wees nie, maar ek het dit sonder voorbehoud gedeel.
Skryf aan die einde
Die konfigurasie van Memcached vir verskeie webwerwe is nie tegnies ingewikkeld nie; die kernprobleem is die konfigurasie van die kasvoorvoegsel. Die duiwel lê egter in die besonderhede. Probleme met weergawe-ooreenstemming, lêerpaaie en sekuriteitskonfigurasies kan jou aansienlike probleme veroorsaak.
Ek gebruik hierdie metode nou al amper 'n jaar, bestuur drie WordPress-webwerwe, en tot dusver het ek geen groot probleme ondervind nie. As jy iets soortgelyks doen, kan jy dit gerus probeer.
Terloops, as jy enige beter oplossings het of enige interessante slaggate teëgekom het, los gerus 'n kommentaar en deel dit. Ek sal graag by jou wil leer.
Hoe meer mense hiervan weet, hoe minder mense sal immers in die strik trap, reg?
Aangesien jy tot hier gelees het, as jy dit nuttig gevind het, like en deel dit asseblief. As jy eerste opdaterings wil ontvang, kan jy my ook volg!
Dankie dat jy my artikel gelees het. Sien jou volgende keer.
Hoop Chen Weiliang Blog ( https://www.chenweiliang.com/ Die artikel "Hoe om Memcached met verskeie WordPress-webwerwe op dieselfde bediener te deel? Die uiteindelike konfigurasiegids om 100% foute te voorkom" wat hier gedeel word, kan dalk vir jou nuttig wees.
Welkom om die skakel van hierdie artikel te deel:https://www.chenweiliang.com/cwl-34368.html
