Каталог артыкулаў
Хочаце запускаць некалькі на адным серверыWordPressХвалюецеся з-за перазапісу кэшаваных дадзеных і памылак фронтэнда, калі на вашым сайце ўключана кэшаванне аб'ектаў Redis? Гэты падручнік дае поўнае кіраўніцтва па наладжванні Redis на некалькіх сайтах WordPress на адным серверы!
У гэтым уроку выкладаецца два метады размеркавання розных баз дадзеных Redis (0-15) і ізаляцыі прэфікса Cache Key Salt шляхам змены wp-config.php. Гэтыя метады выдатна вырашаюць праблему заблытвання дадзеных і значна паляпшаюць прадукцыйнасць сервераў з высокай паралельнасцю. Абавязковы інструмент для вэб-майстроў!
Некалькі дзён таму сябар, які кіруе незалежным вэб-сайтам, паскардзіўся, што яго два вэб-сайты на WordPress апошнім часам паводзяць сябе дзіўна. Загалоўкі паведамленняў з сайта А пастаянна перанакіроўвалі на сайт Б, а кэшаваныя выявы з сайта Б незразумелым чынам з'яўляліся ў раздзеле каментарыяў сайта А. Я адразу засмяяўся; проста Redis не быў настроены на ізаляцыю.
Падумайце: многія людзі, імкнучыся зэканоміць грошы, любяць размяшчаць некалькі сайтаў WordPress на адным серверы і выкарыстоўваць Redis для кэшавання на ўсіх з іх. Вынік? Усе сайты па змаўчанні падключаюцца да базы дадзеных Redis 0, што прыводзіць да блытаніны з дадзенымі. Калі ключ кэша сайта А супадае з ключом кэша сайта Б, гэта рэцэпт катастрофы.
Шчыра кажучы, я сам трапіў у гэтую пастку. Калі я ствараваў унутраную базу ведаў, два тэставыя асяроддзі выкарыстоўвалі адзін экзэмпляр Redis, у выніку чаго кэшы перазапісваліся адзін аднаго. Мне спатрэбілася шмат часу, каб разабрацца ў праблеме. Таму ў мяне ёсць некаторы папярэдні вопыт у гэтай галіне, якім я магу падзяліцца.
Асноўная ідэя вырашэння гэтай праблемы — ізаляцыя. Дадзеныя кожнага вэб-сайта захоўваюцца ў асобнай прасторы, не перашкаджаючы адзін аднаму. Як дасягнуць гэтай ізаляцыі? Ёсць два асноўныя падыходы.

Варыянт 1: Прызначце розныя базы дадзеных Redis розным вэб-сайтам
Першы падыход, які я таксама рэкамендую, заключаецца ў тым, каб прызначыць кожнаму вэб-сайту асобную базу дадзеных Redis. Redis па змаўчанні мае 16 баз дадзеных, пранумараваных ад 0 да 15. Вы можаце наладзіць вэб-сайт А выкарыстоўваць базу дадзеных 0, вэб-сайт Б выкарыстоўваць базу дадзеных 1 і гэтак далей. Гэта падобна на тое, каб даць кожнаму вэб-сайту асобны раздзел жорсткага дыска, што забяспечвае фізічную ізаляцыю дадзеных і найчысцейшае захоўванне дадзеных.
Канкрэтныя крокі наступныя: спачатку ўсталюйце плагін пад назвай «Redis Object Cache» ў адміністрацыйнай панэлі кожнага сайта WordPress. Распрацоўшчыкам з'яўляецца Ціль Крюс, і гэты плагін з'яўляецца самым стабільным і надзейным. Пакуль не ўключайце кэшаванне. Затым падключыцеся да сервера праз FTP або SSH, знайдзіце файл wp-config.php у каранёвым каталогу кожнага сайта і дадайце некалькі радкоў канфігурацыі над радком «/* Вось і ўсё, спыніце рэдагаванне! Шчаслівай публікацыі. */».
Напрыклад, канфігурацыя вэб-сайта А:
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 Key (Salt).
Гэты падыход дазваляе ўсім вэб-сайтам выкарыстоўваць адну і тую ж базу дадзеных Redis, але адрознівае дадзеныя з дапамогай унікальнага прэфікса. Прасцей кажучы, гэта як быццам усе жывуць у адным будынку, але кожная кватэра мае унікальны адрас, што не дазваляе кіроўцам дастаўкі рабіць памылкі.
Метад канфігурацыі падобны, таксама ўключае даданне канфігурацыі ў wp-config.php, але галоўнае, што WP_CACHE_KEY_SALT павінен быць унікальным, а WP_REDIS_DATABASE можа быць такім жа (або пакідацца пустым, па змаўчанні 0).
Канфігурацыя вэб-сайта А:
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/ Артыкул «Як наладзіць Redis для некалькіх вэб-сайтаў WordPress на адным серверы? Канчатковы падручнік па пазбяганні заблытвання дадзеных», апублікаваны тут, можа быць карысным для вас.
Запрашаем падзяліцца спасылкай на гэты артыкул:https://www.chenweiliang.com/cwl-34366.html
