Мақала анықтамалығы
Бір серверде бірнеше серверді іске қосқыңыз келедіWordPressВеб-сайтыңызда Redis нысандарын кэштеу қосылған кезде кэштелген деректерді қайта жазу және алдыңғы қателер туралы алаңдайсыз ба? Бұл оқулық бір сервердегі бірнеше WordPress сайттарында Redis-ті конфигурациялау бойынша толық нұсқаулықты ұсынады!
Бұл оқулық wp-config.php файлын өзгерту арқылы әртүрлі Redis дерекқорларын (0-15) бөлудің және Cache Key Salt префиксін оқшаулаудың екі әдісін үйретеді. Бұл әдістер деректердің шатасуын тамаша шешеді және жоғары параллельді серверлердің жұмысын айтарлықтай жақсартады. Веб-шеберлер үшін міндетті түрде болуы керек!
Бірнеше күн бұрын тәуелсіз веб-сайтты басқаратын досым екі WordPress веб-сайтының соңғы кезде таңқаларлықтай жұмыс істеп жатқанына шағымданды. А веб-сайтындағы жазба тақырыптары В веб-сайтына қайта бағыттала берді, ал В веб-сайтындағы кэштелген суреттер А веб-сайтының түсініктеме бөлімінде түсініксіз түрде пайда болды. Мен бірден күлдім; мәселе тек Redis оқшауланбағандықтан туындады.
Ойлап көріңізші: көптеген адамдар ақша үнемдеу мақсатында бірнеше WordPress веб-сайттарын бір серверге сыйғызып, олардың барлығын кэштеу үшін Redis пайдаланғанды ұнатады. Нәтижесі қандай? Барлық веб-сайттар әдепкі бойынша Redis 0 дерекқорына қосылады, бұл деректердің шатасуына әкеледі. Егер А веб-сайтының кэш кілті В веб-сайтының кэш кілтімен сәйкес келсе, бұл апатқа әкелуі мүмкін.
Шынымды айтсам, мен де осы тұзаққа түсіп қалдым. Ішкі білім базасын құрып жатқан кезде, екі сынақ ортасы бір Redis данасын ортақ пайдаланды, нәтижесінде кэштер бір-бірінің үстінен жазылды. Мәселені түсіну үшін көп уақыт кетті. Сондықтан, бұл салада бөлісетін алдын ала тәжірибем бар.
Бұл мәселені шешудің негізгі идеясы - оқшаулау. Әрбір веб-сайттың деректері бір-біріне кедергі келтірмей, өзінің бөлек кеңістігінде қалады. Бұл оқшаулауға қалай қол жеткіземіз? Екі негізгі тәсіл бар.

1-нұсқа: Әртүрлі веб-сайттарға әртүрлі Redis дерекқорларын тағайындаңыз
Бірінші тәсіл, бұл менің ең басты ұсынысым, әр веб-сайтқа бөлек Redis дерекқорын тағайындау. Redis-те әдепкі бойынша 0-ден 15-ке дейін нөмірленген 16 дерекқор бар. Сізде A веб-сайты 0 дерекқорын, B веб-сайты 1 дерекқорын және т.б. пайдалана алады. Бұл әрбір веб-сайтқа бөлек қатты диск бөлімін беру сияқты, бұл физикалық деректерді оқшаулауды және ең таза деректерді сақтауды қамтамасыз етеді.
Нақты қадамдар келесідей: Алдымен, әрбір WordPress веб-сайтының әкімшілік панеліне "Redis Object Cache" деп аталатын плагинді орнатыңыз. Әзірлеуші - Till Krüss, және бұл плагин ең тұрақты және сенімді. Әзірге кэштеуді қоспаңыз. Содан кейін, FTP немесе SSH арқылы серверге қосылыңыз, әр веб-сайттың түбірлік каталогында wp-config.php файлын табыңыз және "/* Болды, өңдеуді тоқтатыңыз! Жариялау сәтті өтсін. */" жолының үстіне бірнеше конфигурация жолын қосыңыз.
Мысалы, A веб-сайтының конфигурациясы:
define( 'WP_REDIS_HOST', '127.0.0.1' );
define( 'WP_REDIS_PORT', 6379 );
define( 'WP_REDIS_DATABASE', 0 ); // 用数据库0
define( 'WP_CACHE_KEY_SALT', 'site_a_' ); // 加个独立前缀,双重保险B веб-сайты үшін дерекқор нөмірін және префиксін өзгертіңіз:
define( 'WP_REDIS_HOST', '127.0.0.1' );
define( 'WP_REDIS_PORT', 6379 );
define( 'WP_REDIS_DATABASE', 1 ); // 用数据库1
define( 'WP_CACHE_KEY_SALT', 'site_b_' ); // 前缀也要改Айтпақшы, егер сіздің Redis данасында құпия сөз болса, оны әр веб-сайттың конфигурациясына қосу керек:
define( 'WP_REDIS_PASSWORD', '你的Redis密码' );Конфигурация файлдарын өзгерткеннен кейін, әрбір веб-сайтқа оралыңыз.WordPress сервері«Параметрлер» -> «Redis» бөліміне өтіп, «Нысан кэшін қосу» түймесін басыңыз. Егер бәрі жақсы болса, күй «Қосылды» деп көрсетіледі. Осы кезде екі веб-сайттың деректері оқшауланады.
2-нұсқа: Әртүрлі Redis пернесінің префикстерін пайдаланыңыз (Salt)
Дегенмен, алдын ала ескертуім керек бір қателік бар. Егер сізде 16-дан астам веб-сайт болса немесе тек бір ғана дерекқорды ұсынатын бұлттық Redis қызметін пайдалансаңыз, бірінші тәсіл жұмыс істемейді. Бұл жағдайда сізге екінші тәсілді қолдану қажет болады: әртүрлі Redis кілт префикстерін (Salt) пайдалану.
Бұл тәсіл барлық веб-сайттарға бірдей Redis дерекқорын ортақ пайдалануға мүмкіндік береді, бірақ деректерді бірегей префикс арқылы ажыратады. Қарапайым тілмен айтқанда, бұл барлығы бір ғимаратта тұратындай, бірақ әр пәтердің бірегей мекенжайы бар, бұл жеткізушілердің қателіктер жіберуіне жол бермейді.
Конфигурация әдісі ұқсас, сонымен қатар wp-config.php файлына конфигурация қосуды қамтиды, бірақ ең бастысы, WP_CACHE_KEY_SALT бірегей болуы керек, ал WP_REDIS_DATABASE бірдей болуы мүмкін (немесе бос қалдырылады, әдепкі мәні 0).
A веб-сайтының конфигурациясы:
define( 'WP_REDIS_HOST', '127.0.0.1' );
define( 'WP_REDIS_DATABASE', 0 );
define( 'WP_CACHE_KEY_SALT', 'www_siteA_com_' ); // 确保唯一B веб-сайтының конфигурациясы:
define( 'WP_REDIS_HOST', '127.0.0.1' );
define( 'WP_REDIS_DATABASE', 0 );
define( 'WP_CACHE_KEY_SALT', 'www_siteB_com_' ); // 确保唯一Конфигурациядан кейін, плагин серверінде кэштеуді қосыңыз.
Redis конфигурациясының жиі кездесетін мәселелері және шешімдері
Дегенмен, екінші нұсқа икемді болғанымен, оның ықтимал қаупі бар екенін ашық айтуым керек. Егер сіздің плагиніңіз кэшті тазалаған кезде бүкіл 0 дерекқорын тазаласа, басқа веб-сайттардан алынған деректер қателесіп әсер етуі мүмкін. Сондықтан, егер сізде 16 немесе одан аз веб-сайт болса, қауіпсіздікті арттыру үшін бірінші нұсқаны пайдалануды ұсынамын.
Конфигурациялау процесінде сіз кейбір мәселелерге тап болуыңыз мүмкін. Мысалы, конфигурация өзгерістерін енгізгеннен кейін веб-сайт қателерді немесе бос экранды көрсетуі мүмкін. Мұндай жағдайларда алдымен wp-config.php файлындағы код синтаксисін тексеріп, үтірлер немесе нүктелі үтірлер жоқ екенін тексеріңіз. Сонымен қатар, серверде PHP Redis кеңейтімі (php-redis) орнатылғанына көз жеткізіңіз; егер жоқ болса, алдымен оны орнатыңыз.
Тағы бір жиі қойылатын сұрақ: белгілі бір веб-сайттың кэшін қалай тазалаймын? Әрбір веб-сайттың WordPress әкімші панеліндегі "Кэшті тазалау" түймесін басыңыз. Егер сіз бірінші әдісті (әр түрлі дерекқорлар) пайдалансаңыз, ол тек ағымдағы веб-сайтқа сәйкес келетін дерекқорды тазалайды және басқа веб-сайттарға әсер етпейді. Егер сіз екінші әдісті (бірдей дерекқор, әртүрлі префикстер) пайдалансаңыз, кейбір плагиндер тазалау процесі кезінде бүкіл 0 дерекқорын тазалауы мүмкін, сондықтан бірінші әдіс бірнеше сайт үшін ұсынылады.
Redis конфигурациялау іс жүзінде бірнеше телефонды зарядтауға ұқсайды. Әрбір телефон үшін жеке зарядтағышты пайдалануға болады (1-нұсқа) немесе әрбір кабель үшін тәуелсіз қосқышы бар қуат сымын пайдалануға болады (2-нұсқа). Негізгі қағида - зарядтау қауіпсіздігін қамтамасыз ету және қысқа тұйықталудың алдын алу.
Бірнеше сайтты алғаш рет орната бастаған кезде, Redis-ті конфигурациялау оңай деп ойлағаным есімде, тек бірнеше параметрді өзгерту керек еді, солай ма? Бірақ ол өндіріске енгізілгенде, кэштеудің барлық түрлері пайда болды. Кейінірек техникалық мәліметтер көбінесе сол «қарапайым» жерлерде жасырынып қалатынын түсіндім.
Қазір артқа қарасақ, конфигурация процесінің өзі күрделі болған жоқ, бірақ оқшаулаудың негізгі тұжырымдамасы өте маңызды болды. Жүйені жобалауда оқшаулау тұрақтылықты қамтамасыз етудің кілті болып табылады. Қала құрылысы сияқты, тұрғын аудандар, өнеркәсіптік аймақтар және коммерциялық аймақтар бөлек болуы керек, әйтпесе хаос пайда болады.
Дәл осы техникалық конфигурацияға да қатысты. Әрбір веб-сайттың басқаларға кедергі келтірмей, өзіндік тәуелсіз кеңістігі болуы керек. Бұл тек техникалық мәселе ғана емес, сонымен қатар дизайн принципі.Философия.
Осы жерге дейін оқығаннан кейін, егер сізге пайдалы болса, лайк басып, бөлісіңіз. Егер сіз алдымен жаңалықтарды алғыңыз келсе, мені де оқи аласыз!
Мақаланы оқығаныңызға рақмет. Келесі кездескенше.
Hope Chen Weiliang блогы ( https://www.chenweiliang.com/ Мұнда бөлісілген «Бір сервердегі бірнеше WordPress веб-сайттары үшін Redis бағдарламасын қалай конфигурациялауға болады? Деректердің шатасуынан аулақ болудың ең жақсы оқулығы» мақаласы сізге пайдалы болуы мүмкін.
Осы мақаланың сілтемесін бөлісуге қош келдіңіз:https://www.chenweiliang.com/cwl-34366.html
