Нийтлэлийн лавлах
Нэг сервер дээр олон сервер ажиллуулахыг хүсэж байнаWordPressВэбсайт нээгдэв.RedisКэшлэгдсэн өгөгдөл бие биенээ дарж бичиж, урд талын алдаа гаргах вий гэж санаа зовж байна уу? Энэ заавар нь нэг сервер дээрх олон WordPress сайтууд дээр Redis-ийг тохируулах эцсийн гарын авлагыг өгөх болно!
Энэхүү заавар нь wp-config.php файлыг өөрчлөх замаар Redis-ийн өөр өөр өгөгдлийн сангууд (0-15) болон Cache Key Salt угтвар тусгаарлалтыг хуваарилах хоёр аргыг заадаг. Эдгээр аргууд нь өгөгдлийн төөрөгдлийг төгс шийдэж, өндөр зэрэглэлийн серверүүдийн ажиллагааг мэдэгдэхүйц сайжруулдаг. Вэбмастеруудад зайлшгүй шаардлагатай зүйл!
Хэдэн өдрийн өмнө бие даасан вэбсайт ажиллуулдаг найз маань хоёр WordPress вэбсайт нь сүүлийн үед хачин ажиллаж байгаа талаар гомдоллосон. А вэбсайтаас гарчигнууд В вэбсайт руу дахин чиглүүлэгдэж байсан бөгөөд В вэбсайтаас кэшлэгдсэн зургууд А вэбсайтын сэтгэгдэл хэсэгт тайлбарлахын аргагүй гарч ирж байв. Би тэр даруй инээсэн; энэ нь зүгээр л Redis-ийг тусгаарлахаар тохируулаагүйтэй холбоотой асуудал юм.
Үүнийг бодоод үз дээ: олон хүн мөнгө хэмнэхийн тулд хэд хэдэн WordPress вэбсайтыг нэг сервер дээр чихэж, бүгдийг нь кэш хийхэд Redis ашиглах дуртай байдаг. Үр дүн нь юу вэ? Бүх вэбсайтууд анхдагчаар Redis Database 0 руу холбогддог бөгөөд энэ нь өгөгдлийн замбараагүй байдалд хүргэдэг. Хэрэв А вэбсайтын кэш түлхүүр нь В вэбсайтын кэш түлхүүртэй давхцаж байвал энэ нь гамшигт хүргэх жор юм.
Үнэнийг хэлэхэд би өөрөө ч энэ урхинд орсон. Би дотоод мэдлэгийн бааз бий болгож байх үед хоёр туршилтын орчин нэг Redis инстанцийг хуваалцаж байсан бөгөөд үүний үр дүнд кэшүүд бие биенээ дарж бичиж байсан. Асуудлыг олж мэдэхэд надад их хугацаа шаардагдсан. Тиймээс энэ чиглэлээр хуваалцах урьдчилсан туршлага надад бий.
Энэ асуудлыг шийдэх гол санаа бол тусгаарлалт юм. Вэбсайт бүрийн өгөгдөл бие биедээ саад учруулахгүйгээр өөрийн гэсэн тусдаа орон зайд байрладаг. Бид энэ тусгаарлалтыг хэрхэн хийх вэ? Хоёр үндсэн арга зам байдаг.

Сонголт 1: Өөр өөр вэбсайтуудад өөр өөр Redis мэдээллийн санг оноох
HestiaCP дээр Redis санах ойн кэшийг хэрхэн суулгах талаар?
Эхний арга нь миний хамгийн чухал зөвлөмж бөгөөд вэбсайт бүрт тусдаа Redis мэдээллийн сан оноох явдал юм. Redis нь анхдагчаар 0-ээс 15 хүртэл дугаарлагдсан 16 мэдээллийн сантай. Та А вэбсайт 0 мэдээллийн санг, В вэбсайт 1 мэдээллийн санг гэх мэтийг ашиглаж болно. Энэ нь вэбсайт бүрт тусдаа хатуу дискний хуваалт өгөхтэй адил бөгөөд энэ нь физик өгөгдлийг тусгаарлах, хамгийн цэвэр өгөгдлийг хадгалах боломжийг олгодог.
Тодорхой алхмууд нь дараах байдалтай байна: Эхлээд WordPress вэбсайт бүрийн админ самбарт "Redis Object Cache" нэртэй залгаасыг суулгана уу. Хөгжүүлэгч нь Till Krüss бөгөөд энэ залгаас нь хамгийн тогтвортой бөгөөд найдвартай. Кэшийг идэвхжүүлэхээ боль. Дараа нь 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_' ); // 加个独立前缀,双重保险В вэбсайтын хувьд мэдээллийн сангийн дугаар болон угтварыг өөрчлөхөд л хангалттай:
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 backend"Тохиргоо" -> "Redis" руу ороод "Объектын кэшийг идэвхжүүлэх" дээр дарна уу. Хэрэв бүх зүйл хэвийн явагдвал төлөв нь "Холбогдсон" гэж харагдах болно. Энэ үед хоёр вэбсайтын өгөгдөл тусгаарлагдсан байна.
Сонголт 2: Өөр өөр Redis түлхүүрийн угтваруудыг ашиглах (Salt)
Гэсэн хэдий ч би танд урьдчилан анхааруулах ёстой нэг алдаа байна. Хэрэв та 16-аас дээш вэбсайттай эсвэл зөвхөн ганц мэдээллийн сантай үүлэн Redis үйлчилгээг ашиглаж байгаа бол эхний арга нь ажиллахгүй. Энэ тохиолдолд та хоёр дахь аргыг ашиглах шаардлагатай болно: өөр өөр Redis түлхүүрийн угтвар (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_' ); // 确保唯一Вэбсайт В-ийн тохиргоо:
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
