Kā koplietot Memcached vairākās WordPress vietnēs vienā serverī? Pilnīga konfigurācijas rokasgrāmata, kas nodrošina 100% kļūdu neesamību.

Vai vienā serverī darbojas vairākas WordPress vietnes, kas koplieto Memcached, un tas rada datu pārrakstīšanas vai savstarpējo savienojumu problēmas?

Šajā rakstā sniegta detalizēta instrukcija par to, kā perfekti izolēt īslaicīgus un objektu kešatmiņas datus dažādās vietnēs, konfigurējot atsevišķu kešatmiņas prefiksu (WP_CACHE_KEY_SALT) un objektu kešatmiņas skriptus.

100% novērš datu konfliktus, ļaujot vairākām vietnēm vienlaikus baudīt maksimālu atmiņas līmeņa paātrinājuma pieredzi, un ietver drošības padomus, lai novērstu kļūmes ražošanas vidē!

Pirms dažām dienām kāds draugs man jautāja par viņa trim WordPress vietnēm, kas darbojas uz viņa servera. Viņš vēlējās konfigurēt Memcached, lai tās paātrinātu, taču viņš uztraucās, ka dati tiks sajaukti.

Es tajā brīdī iesmējos, jo pats biju iekritis šajā slazdā.

Kā koplietot Memcached vairākās WordPress vietnēs vienā serverī? Pilnīga konfigurācijas rokasgrāmata, kas nodrošina 100% kļūdu neesamību.

Godīgi sakot, Memcached ir neticami viegli iestatīt vienai vietnei, taču tas kļūst interesanti, ja runa ir par vairāku vietņu līdzāspastāvēšanu. Kāpēc?

Pēc noklusējuma Memcached ievieto visu vietņu īslaicīgās un objektu kešatmiņas vienā krātuvē. Iedomājieties, ja vietnes A un B izmantotu vienu un to pašu kešatmiņas atslēgu — tas radītu haosu. A dati tieši pārrakstītu B datus, un abas vietnes sāktu "traucēt" viena otras datus.

Tas, ar ko es saskāros, bija vēl smieklīgāk: e-komercijas vietnes produkta informācijas lapā bija redzams cita emuāra vietnes raksta saturs. Es biju pilnīgi apstulbis, domājot: "Kas tas ir?!"

Man vajadzēja veselu nakti, lai to izdomātu; izrādījās, ka tā ir kešatmiņas atslēgas konflikts.

Tāpēc šodien es dalos ar savu konfigurācijas metodi cerībā, ka tā var palīdzēt draugiem ar līdzīgām vajadzībām. Es pats to joprojām pētu, un dažas no manām idejām, iespējams, nav pilnībā izstrādātas, taču man šī metode ir labi nostrādājusi.

Servera vides sagatavošana

Pirms sākat WordPress konfigurēšanu, pārliecinieties, vai serverī ir instalēts Memcached pakalpojums un PHP Memcached paplašinājums.

Kā instalēt Memcached, izmantojot HestiaCP?

Ņemot Ubuntu kā piemēru, tas ietver tikai trīs komandu rindiņas.

sudo apt update
sudo apt install memcached php-memcached
sudo systemctl restart php8.x-fpm  # 根据你的 PHP 版本改

Pēc instalēšanas atcerieties pārbaudīt, vai darbojas Memcached pakalpojums.

sudo systemctl status memcached

Ja redzat ziņojumu "aktīvs (darbojas)", tas nozīmē, ka problēmu nav.

Ņemiet vērā, ka pakotņu nosaukumi dažādās sistēmās var atšķirties. Debian balstītām sistēmām parasti tiek izmantota šī komanda; tomēr CentOS vai citām izplatījumiem instalēšanai, iespējams, būs jāizmanto yum vai dnf.

Tobrīd es izmantoju Ubuntu 20.04, un viss process noritēja diezgan gludi.

Galvenā darbība: kešatmiņas prefiksa konfigurēšana

Šis solis ir visas konfigurācijas dvēsele un atslēga datu sajaukšanas novēršanai.

Katras WordPress vietnes saknes direktorijā esošajam failam wp-config.php jāpievieno unikāls kešatmiņas prefikss.

Atveriet pirmās vietnes wp-config.php failu un atrodiet šo komentāru rindiņu.

/* That's all, stop editing! Happy blogging. */

Pievienot virs šīs līnijas

// 网站 A 的配置
define( 'WP_CACHE_KEY_SALT', 'site1_unique_string_' );

Pēc tam atveriet failu wp-config.php otrajā vietnē un pievienojiet līdzīgu konfigurāciju.

// 网站 B 的配置
define( 'WP_CACHE_KEY_SALT', 'site2_unique_string_' );

Es jums saku, ka virknei aiz WP_CACHE_KEY_SALT ir jābūt absolūti unikālai . Es iesaku jums izmantot savas vietnes domēna nosaukumu vai saīsinājumu, piemēram, site1_com_ vai site2_net_.

Es biju slinks un izmantoju ciparus, bet trīs mēnešus vēlāk es pilnībā aizmirsu, kurš skaitlis atbilst kurai tīmekļa vietnei, un man tie bija jāmeklē pa vienam, kas bija īstas galvassāpes.

Padomājiet par to: Memcached darbojas, uzglabājot un izgūstot datus, pamatojoties uz kešatmiņas atslēgām. Ja katrai vietnei iestatīsiet unikālu prefiksu, to dati dabiski tiks izolēti un netraucēs viens otram.

Tas ir līdzīgi kā katrai vietnei piešķirt savu skapīti. Lai gan tās visas atrodas vienā telpā, atslēgas ir atšķirīgas, tāpēc dati netiks sajaukti.

Iespējot objektu kešatmiņu

Pēc prefiksa konfigurēšanas nākamais solis ir iespējot WordPress, lai tas faktiski izmantotu Memcached.

Šeit ir divas iespējas, un esmu izmēģinājis abas. Katrai no tām ir savas priekšrocības.

1. variants: spraudņa metode (visvienkāršākā)

Piesakieties WordPress administratora panelī un instalējiet kešatmiņas spraudni, kas atbalsta Memcached.

Es ieteiktu izmantot W3 Total Cache ; tas ir diezgan stabils. Pēc instalēšanas spraudņa iestatījumos atlasiet Memcached kā kešatmiņas veidu, ievadiet serverim 127.0.0.1 un noklusējuma portu 11211, pēc tam saglabājiet.

Ja vēlaties tīrāku risinājumu, varat tieši instalēt Memcached Object Cache spraudni, kas ir paredzēts šim uzdevumam un kam nav citu funkciju.

Godīgi sakot, sākotnēji man šķita, ka spraudņu pieeja ir diezgan laba, jo tā ir ērta. Taču vēlāk atklāju, ka dažiem spraudņiem ir vesela virkne funkciju, kas man nav vajadzīgas, un es vienmēr uztraucos par atjauninājumiem, baidoties, ka tie pēkšņi pievienos kādu funkciju, kas sabojās manu konfigurāciju.

2. variants: manuāla object-cache.php izvietošana (labāk kontrolējama)

Ja esat tāds pats perfekcionists kā es un nevēlaties instalēt pārāk daudz spraudņu, varat izmantot šo risinājumu.

Lejupielādējiet Memcached Object Cache spraudni no oficiālās WordPress spraudņu krātuves vai atrodiet jaunāko object-cache.php failu vietnē GitHub. Pēc tam augšupielādējiet izvilkto object-cache.php failu katras vietnes wp-content direktorijā, izmantojot FTP vai SSH.

Ņemiet vērā, ka tā ir wp-content saknes direktorijs, nevis spraudņu apakšdirektorijs.

Pēc pievienošanas WordPress automātiski atpazīs un aktivizēs kešatmiņu. Jums nekas nav jākonfigurē, jo tas nolasīs WP_CACHE_KEY_SALT, ko iepriekš iestatījāt wp-config.php failā.

Es gribēju ietaupīt laiku, tāpēc izmantoju šo risinājumu galvenokārt tāpēc, ka to var kontrolēt. Ja rodas problēma, es zinu, kur meklēt risinājumus, un mani nepārsteigs automātiskie spraudņu atjauninājumi.

Pārliecinieties, vai konfigurācija ir efektīva.

Pēc parauga sagatavošanas pabeigšanas jūs noteikti vēlēsities uzzināt, vai tas bija veiksmīgs, vai ne?

Vienkāršākais veids ir pārbaudīt Memcached statusu. Izveidojiet savienojumu, izmantojot telnet vai nc rīkus.

echo "stats" | nc 127.0.0.1 11211

Tad jūs redzēsiet virkni statistikas datu. Pievērsiet īpašu uzmanību `cmd_set` un `get_hits` vērtībām un dažas reizes atsvaidziniet lapu, lai redzētu, vai tās palielinās. Ja tā notiek, tas nozīmē, ka kešatmiņa darbojas pareizi.

Vēl viens intuitīvāks veids, kā to pārbaudīt, ir vienlaikus atvērt abas vietnes un pārbaudīt, vai tās viena otru traucē. Ja vietne A nerāda saturu no vietnes B, tas būtībā nozīmē, ka prefikss darbojas.

Toreiz es veicu vēl stingrāku testu. Divās dažādās tīmekļa vietnēs iestatīju dažādas pārejas vērtības un pēc tam izmantoju nc rīku, lai tieši vaicātu datus Memcached. Es patiešām varēju redzēt divus atslēgu-vērtību pārus ar atšķirīgiem prefiksiem, bez jebkādas neskaidrības.

Tajā brīdī es tiešām jutos tā, it kā būtu paveicis kaut ko lielisku, un tikai doma par to vien manī rada fantastisku sajūtu.

Neignorējiet drošības jautājumus

Tā kā visas tīmekļa vietnes koplieto vienu Memcached instanci, pastāv drošības risks, par kuru jums jāzina.

Teorētiski, ja serverī atrodas citi lietotāji, viņi varētu nolasīt jūsu kešatmiņā saglabātos datus, izmantojot lokālo portu. Lai gan tas prasa zināmu tehnisko zināšanu līmeni, vienmēr ir ieteicams būt piesardzīgam.

Tāpēc jums jānodrošina, lai jūsu Memcached pakalpojums nekādā gadījumā neklausītos publiskajās IP adresēs . Pārliecinieties, vai šī rinda ir iekļauta konfigurācijas failā `/etc/memcached.conf`.

-l 127.0.0.1

Tādā veidā Memcached klausīsies tikai lokālajā cilpas adresē un nebūs pieejams no ārpuses.

Ja jums ir ārkārtīgi augstas drošības prasības vai ja jūsu serverī tiek mitinātas tīmekļa vietnes, par kurām citi lietotāji neuztraucas, iesaku apsvērt Redis izmantošanu Memcached vietā. Redis atbalsta vairāku datubāzu izolāciju un paroļu verifikāciju, padarot to daudz drošāku.

Tomēr Redis konfigurēšana ir nedaudz sarežģītāka nekā Memcached. Ja to izmantojat tikai personīgām vai nelielas komandas vajadzībām, Memcached ar klausīšanās ierobežojumu 127.0.0.1 būtībā ir pietiekams.

Dažas sastaptās kļūmes

Visbeidzot, ļaujiet man pastāstīt par dažām kļūdām, ar kurām esmu saskāries, cerot palīdzēt jums izvairīties no dažiem līkločiem.

Pārliecinieties, vai jūsu PHP paplašinājuma versija ir saderīga . Iepriekš saskāros ar situāciju, kad instalēju paplašinājumu php-memcached, bet WordPress to neatpazina. Vēlāk atklāju, ka tas bija saistīts ar PHP versiju neatbilstību. Instalējot paplašinājumus, rūpīgi pārbaudiet savu PHP versiju, lai izvairītos no nepareizas versijas instalēšanas.

Pārliecinieties, ka ceļš uz object-cache.php failu ir pareizs . Tam jāatrodas wp-content saknes direktorijā, nevis plugins direktorijā. Mans draugs to ievietoja nepareizā vietā un ilgi mēģināja to labot, taču bez panākumiem.

Kešatmiņas prefiksam neizmantojiet īsas virknes . Sākumā es izmantoju tādas virknes kā a_ un b_, bet atklāju, ka tās ir pārāk īsas un viegli konfliktē ar WordPress ģenerētajām kešatmiņas atslēgām. Izmantojiet vismaz septiņu vai astoņu rakstzīmju nejaušu virkni vai domēna saīsinājumu.

Notīrot kešatmiņu, atcerieties notīrīt abu vietņu kešatmiņu . Reiz es notīrīju tikai vienas vietnes kešatmiņu, bet otrā vietnē joprojām bija saglabāti vecie dati, izraisot neatbilstības starp abām vietnēm. Man vajadzēja ilgu laiku, lai atrisinātu problēmu.

Godīgi sakot, nezinu, vai šī pieredze būs noderīga visiem, taču esmu ar to dalījies bez iebildumiem.

Rakstiet beigās

Memcached konfigurēšana vairākām vietnēm tehniski nav sarežģīta; galvenā problēma ir kešatmiņas prefiksa konfigurēšana. Tomēr velns slēpjas detaļās. Problēmas ar versiju saskaņošanu, failu ceļiem un drošības konfigurācijām var radīt ievērojamas problēmas.

Es šo metodi izmantoju jau gandrīz gadu, pārvaldot trīs WordPress vietnes, un līdz šim neesmu saskāries ar nopietnām problēmām. Ja darāt kaut ko līdzīgu, iespējams, vēlēsities to izmēģināt.

Starp citu, ja jums ir kādi labāki risinājumi vai esat saskārušies ar interesantām kļūdām, droši atstājiet komentāru un dalieties ar tām. Es labprāt mācītos no jums.

Galu galā, jo vairāk cilvēku par to uzzinās, jo mazāk cilvēku iekritīs šajā slazdā, vai ne?

Tā kā esi izlasījis līdz šim brīdim, ja tas tev bija noderīgi, lūdzu, atzīmē ar “Patīk” un dalies ar to. Ja vēlies saņemt jaunumus pirmie, vari arī sekot man!

Paldies, ka izlasījāt manu rakstu. Uz tikšanos nākamreiz.

发表 评论

您的邮箱地址不会被公开.必填项已用*标注

Ritiniet uz augšu