เบเบฒเบ™เบ•เบดเบ”เบ•เบฑเป‰เบ‡ WordPress เบญเบฑเบ”เบ•เบฐเป‚เบ™เบกเบฑเบ”เบเบฑเบš NGINX Unit เปเบฅเบฐ Ubuntu

เบเบฒเบ™เบ•เบดเบ”เบ•เบฑเป‰เบ‡ WordPress เบญเบฑเบ”เบ•เบฐเป‚เบ™เบกเบฑเบ”เบเบฑเบš NGINX Unit เปเบฅเบฐ Ubuntu

เบกเบตเบญเบธเบ›เบฐเบเบญเบ™เบซเบผเบฒเบเบขเปˆเบฒเบ‡เบเปˆเบฝเบงเบเบฑเบšเบเบฒเบ™เบ•เบดเบ”เบ•เบฑเป‰เบ‡ WordPress; เบเบฒเบ™เบ„เบปเป‰เบ™เบซเบฒ Google เบชเปเบฒเบฅเบฑเบš "WordPress install" เบˆเบฐเบเบฑเบšเบ„เบทเบ™เบกเบฒเบ›เบฐเบกเบฒเบ™เป€เบ„เบดเปˆเบ‡เบซเบ™เบถเปˆเบ‡เบฅเป‰เบฒเบ™เบœเบปเบ™เป„เบ”เป‰เบฎเบฑเบš. เบขเปˆเบฒเบ‡เปƒเบ”เบเปเบ•เบฒเบก, เบ•เบปเบงเบˆเบดเบ‡เปเบฅเป‰เบงเบกเบตเบ„เปเบฒเปเบ™เบฐเบ™เปเบฒเบ—เบตเปˆเป€เบ›เบฑเบ™เบ›เบฐเป‚เบซเบเบ”เบซเบ™เป‰เบญเบเบ—เบตเปˆเบชเบธเบ”เบ—เบตเปˆเบชเบฒเบกเบฒเบ”เบŠเปˆเบงเบเปƒเบซเป‰เบ—เปˆเบฒเบ™เบ•เบดเบ”เบ•เบฑเป‰เบ‡เปเบฅเบฐเบ•เบฑเป‰เบ‡เบ„เปˆเบฒ WordPress เปเบฅเบฐเบฅเบฐเบšเบปเบšเบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™เบ—เบตเปˆเบ•เบดเบ”เบžเบฑเบ™เป€เบžเบทเปˆเบญเปƒเบซเป‰เบžเบงเบเป€เบ‚เบปเบฒเบชเบฒเบกเบฒเบ”เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เปƒเบ™เป„เบฅเบเบฐเบเบฒเบง. เบšเบฒเบ‡เบ—เบตเบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเบ—เบตเปˆเบ–เบทเบเบ•เป‰เบญเบ‡เปเบกเปˆเบ™เบ‚เบถเป‰เบ™เบเบฑเบšเบ„เบงเบฒเบกเบ•เป‰เบญเบ‡เบเบฒเบ™เบชเบฐเป€เบžเบฒเบฐเบ‚เบญเบ‡เบ—เปˆเบฒเบ™, เบซเบผเบทเบกเบฑเบ™เบญเบฒเบ”เบˆเบฐเป€เบ›เบฑเบ™เบเป‰เบญเบ™เบงเปˆเบฒเบ„เปเบฒเบญเบฐเบ—เบดเบšเบฒเบเบขเปˆเบฒเบ‡เบฅเบฐเบญเบฝเบ”เป€เบฎเบฑเบ”เปƒเบซเป‰เบšเบปเบ”เบ„เบงเบฒเบกเบเบฒเบเบ—เบตเปˆเบˆเบฐเบญเปˆเบฒเบ™.

เปƒเบ™เบšเบปเบ”เบ„เบงเบฒเบกเบ™เบตเป‰, เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเบžเบฐเบเบฒเบเบฒเบกเบฅเบงเบกเป€เบญเบปเบฒเบชเบดเปˆเบ‡เบ—เบตเปˆเบ”เบตเบ—เบตเปˆเบชเบธเบ”เบ‚เบญเบ‡เบ—เบฑเบ‡เบชเบญเบ‡เป‚เบฅเบเป‚เบ”เบเบเบฒเบ™เบชเบฐเบซเบ™เบญเบ‡ bash script เป€เบžเบทเปˆเบญเบ•เบดเบ”เบ•เบฑเป‰เบ‡ WordPress เป‚เบ”เบเบญเบฑเบ”เบ•เบฐเป‚เบ™เบกเบฑเบ”เปƒเบ™ Ubuntu, เปเบฅเบฐเบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเบเปˆเบฒเบ‡เบœเปˆเบฒเบ™เบกเบฑเบ™, เบญเบฐเบ—เบดเบšเบฒเบเบงเปˆเบฒเปเบ•เปˆเบฅเบฐเบŠเบดเป‰เบ™เป€เบฎเบฑเบ”เปเบฅเบฐเบเบฒเบ™เบ„เป‰เบฒเบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเป€เบฎเบฑเบ”เปƒเบ™เบเบฒเบ™เบญเบญเบเปเบšเบš. เบกเบฑเบ™. เบ–เป‰เบฒเบ—เปˆเบฒเบ™เป€เบ›เบฑเบ™เบœเบนเป‰เปƒเบŠเป‰เบ—เบตเปˆเบกเบตเบ›เบฐเบชเบปเบšเบเบฒเบ™, เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบ‚เป‰เบฒเบกเบ‚เปเป‰เบ„เบงเบฒเบกเบ‚เบญเบ‡เบšเบปเบ”เบ„เบงเบฒเบกเปเบฅเบฐเบžเบฝเบ‡เปเบ•เปˆ เป€เบญเบปเบฒ script เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ”เบฑเบ”เปเบเป‰เปเบฅเบฐเบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เปƒเบ™เบชเบฐเบžเบฒเบšเปเบงเบ”เบฅเป‰เบญเบกเบ‚เบญเบ‡เบ—เปˆเบฒเบ™. เบœเบปเบ™เป„เบ”เป‰เบฎเบฑเบšเบ‚เบญเบ‡เบชเบฐเบ„เบดเบšเปเบกเปˆเบ™เบเบฒเบ™เบ•เบดเบ”เบ•เบฑเป‰เบ‡ WordPress เปเบšเบšเบเปเบฒเบ™เบปเบ”เป€เบญเบ‡เบ—เบตเปˆเบกเบตเบเบฒเบ™เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™ Lets Encrypt, เปเบฅเปˆเบ™เบขเบนเปˆเปƒเบ™เบซเบ™เปˆเบงเบ NGINX เปเบฅเบฐเป€เบซเบกเบฒเบฐเบชเบปเบกเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบญเบธเบ”เบชเบฒเบซเบฐเบเปเบฒ.

เบชเบฐเบ–เบฒเบ›เบฑเบ”เบ•เบฐเบเบฐเบเปเบฒเบ—เบตเปˆเบžเบฑเบ”เบ—เบฐเบ™เบฒเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰ WordPress เป‚เบ”เบเปƒเบŠเป‰ NGINX Unit เป„เบ”เป‰เบ–เบทเบเบญเบฐเบ—เบดเบšเบฒเบเป„เบงเป‰เปƒเบ™ เบšเบปเบ”เบ„เบงเบฒเบกเป€เบเบปเปˆเบฒ, เบžเบงเบเป€เบฎเบปเบฒเบเบฑเบ‡เบˆเบฐ configure เป€เบžเบตเปˆเบกเป€เบ•เบตเบกเบชเบดเปˆเบ‡เบ—เบตเปˆเบšเปเปˆเป„เบ”เป‰เบเบงเบกเป€เบญเบปเบฒเบขเบนเปˆเบ—เบตเปˆเบ™เบฑเป‰เบ™ (เป€เบŠเบฑเปˆเบ™เบ”เบฝเบงเบเบฑเบ™เบเบฑเบšเปƒเบ™ tutorials เบญเบทเปˆเบ™เป†เบˆเปเบฒเบ™เบงเบ™เบซเบผเบฒเบ):

  • WordPress CLI
  • เปƒเบซเป‰เป€เบ‚เบปเป‰เบฒเบฅเบฐเบซเบฑเบ” เปเบฅเบฐเปƒเบšเบขเบฑเป‰เบ‡เบขเบทเบ™ TLSSSL
  • เบเบฒเบ™เบ•เปเปˆเบญเบฒเบเบธเปƒเบšเบขเบฑเป‰เบ‡เบขเบทเบ™เบญเบฑเบ”เบ•เบฐเป‚เบ™เบกเบฑเบ”
  • NGINX Caching
  • เบเบฒเบ™เบšเบตเบšเบญเบฑเบ” NGINX
  • HTTPS เปเบฅเบฐ HTTP/2 เบฎเบญเบ‡เบฎเบฑเบš
  • เบญเบฑเบ”เบ•เบฐเป‚เบ™เบกเบฑเบ”เบ‚เบฐเบšเบงเบ™เบเบฒเบ™

เบšเบปเบ”เบ„เบงเบฒเบกเบˆเบฐเบญเบฐเบ—เบดเบšเบฒเบเบเบฒเบ™เบ•เบดเบ”เบ•เบฑเป‰เบ‡เบขเบนเปˆเปƒเบ™เป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบเบซเบ™เบถเปˆเบ‡, เป€เบŠเบดเปˆเบ‡เบžเป‰เบญเบกเป†เบเบฑเบ™เบˆเบฐเป€เบ›เบฑเบ™เป€เบˆเบปเป‰เบฒเบžเบฒเบšเป€เบŠเบตเบŸเป€เบงเบตเบเบฒเบ™เบ›เบธเบ‡เปเบ•เปˆเบ‡เบชเบฐเบ–เบดเบ”, เป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบเบเบฒเบ™เบ›เบธเบ‡เปเบ•เปˆเบ‡ PHP, เปเบฅเบฐเบ–เบฒเบ™เบ‚เปเป‰เบกเบนเบ™. เบเบฒเบ™เบ•เบดเบ”เบ•เบฑเป‰เบ‡เบ—เบตเปˆเบกเบตเบเบฒเบ™เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เบชเปเบฒเบฅเบฑเบšเป€เบˆเบปเป‰เบฒเบžเบฒเบš virtual เบซเบผเบฒเบเปเบฅเบฐเบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™เปเบกเปˆเบ™เบซเบปเบงเบ‚เปเป‰เบ—เบตเปˆเบกเบตเบ—เปˆเบฒเปเบฎเบ‡เบชเปเบฒเบฅเบฑเบšเบญเบฐเบ™เบฒเบ„เบปเบ”. เบ–เป‰เบฒเบ—เปˆเบฒเบ™เบ•เป‰เบญเบ‡เบเบฒเบ™เปƒเบซเป‰เบžเบงเบเป€เบฎเบปเบฒเบ‚เบฝเบ™เบเปˆเบฝเบงเบเบฑเบšเบšเบฒเบ‡เบชเบดเปˆเบ‡เบšเบฒเบ‡เบขเปˆเบฒเบ‡เบ—เบตเปˆเบšเปเปˆเบกเบตเบขเบนเปˆเปƒเบ™เบšเบปเบ”เบ„เบงเบฒเบกเป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰, เบ‚เบฝเบ™เปƒเบ™เบ„เปเบฒเป€เบซเบฑเบ™.

เบ„เบงเบฒเบกเบ•เป‰เบญเบ‡เบเบฒเบ™

  • เป€เบ„เบทเปˆเบญเบ‡เบšเบฑเบ™เบˆเบธเป€เบŠเบตเบšเป€เบงเบต (LXC เบซเบผเบท LXD), เป€เบ„เบทเปˆเบญเบ‡ virtual, เบซเบผเบทเป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบเบ‚เบญเบ‡เบฎเบฒเบ”เปเบงเบ›เบปเบเบเบฐเบ•เบด, เบกเบตเบขเปˆเบฒเบ‡เบซเบ™เป‰เบญเบ 512MB เบ‚เบญเบ‡ RAM เปเบฅเบฐ Ubuntu 18.04 เบซเบผเบทเบซเบผเบฒเบเบเบงเปˆเบฒเบ™เบฑเป‰เบ™เบ•เบดเบ”เบ•เบฑเป‰เบ‡เบซเบผเป‰เบฒเบชเบธเบ”.
  • เบ—เปˆเบฒเป€เบฎเบทเบญเบ—เบตเปˆเบชเบฒเบกเบฒเบ”เป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡เบญเบดเบ™เป€เบ•เบตเป€เบ™เบฑเบ”เป„เบ”เป‰ 80 เปเบฅเบฐ 443
  • เบŠเบทเปˆเป‚เบ”เป€เบกเบ™เบ—เบตเปˆเบเปˆเบฝเบงเบ‚เป‰เบญเบ‡เบเบฑเบšเบ—เบตเปˆเบขเบนเปˆ IP เบชเบฒเบ—เบฒเบฅเบฐเบ™เบฐเบ‚เบญเบ‡เป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบเบ™เบตเป‰
  • เบเบฒเบ™เป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡เบ”เป‰เบงเบเบชเบดเบ”เบ—เบดเบฎเบฒเบ (sudo).

เบžเบฒเบšเบฅเบงเบกเบชเบฐเบ–เบฒเบ›เบฑเบ”เบ•เบฐเบเบฐเบเปเบฒ

เบชเบฐเบ–เบฒเบ›เบฑเบ”เบ•เบฐเบเบฐเบเปเบฒเปเบกเปˆเบ™เบ„เบทเบเบฑเบ™เบเบฑเบšเบ—เบตเปˆเป„เบ”เป‰เบญเบฐเบ—เบดเบšเบฒเบ เบเปˆเบญเบ™เบซเบ™เป‰เบฒเบ™เบตเป‰, เบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเป€เบงเบฑเบšเป„เบŠเบ•เปŒเบชเบฒเบกเบŠเบฑเป‰เบ™. เบกเบฑเบ™เบ›เบฐเบเบญเบšเบ”เป‰เบงเบเบชเบฐเบ„เบดเบš PHP เบ—เบตเปˆเบ–เบทเบเบ›เบฐเบ•เบดเบšเบฑเบ”เบขเบนเปˆเปƒเบ™เป€เบ„เบทเปˆเบญเบ‡เบˆเบฑเบ PHP เปเบฅเบฐเป„เบŸเบฅเปŒเบ„เบปเบ‡เบ—เบตเปˆเบ—เบตเปˆเบ–เบทเบเบ›เบธเบ‡เปเบ•เปˆเบ‡เป‚เบ”เบเป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบเป€เบงเบฑเบš.

เบเบฒเบ™เบ•เบดเบ”เบ•เบฑเป‰เบ‡ WordPress เบญเบฑเบ”เบ•เบฐเป‚เบ™เบกเบฑเบ”เบเบฑเบš NGINX Unit เปเบฅเบฐ Ubuntu

เบซเบผเบฑเบเบเบฒเบ™เบ—เบปเปˆเบงเป„เบ›

  • เบ„เปเบฒเบชเบฑเปˆเบ‡เบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเบˆเปเบฒเบ™เบงเบ™เบซเบผเบฒเบเปƒเบ™เบชเบฐเบ„เบดเบšเบ–เบทเบเบซเปเปˆเบขเบนเปˆเปƒเบ™เป€เบ‡เบทเปˆเบญเบ™เป„เบ‚เบชเปเบฒเบฅเบฑเบš idempotency: script เบชเบฒเบกเบฒเบ”เบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เบซเบผเบฒเบเบ„เบฑเป‰เบ‡เป‚เบ”เบเบšเปเปˆเบกเบตเบ„เบงเบฒเบกเบชเปˆเบฝเบ‡เบ•เปเปˆเบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเบ—เบตเปˆเบเบฝเบกเบžเป‰เบญเบกเปเบฅเป‰เบง.
  • script เบžเบฐเบเบฒเบเบฒเบกเบ•เบดเบ”เบ•เบฑเป‰เบ‡เบŠเบญเบšเปเบงเบˆเบฒเบ repositories, เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบชเบฐเบซเบกเบฑเบเบ‚เปเป€เบญเบปเบฒเบเบฒเบ™เบ›เบฑเบšเบ›เบธเบ‡เบฅเบฐเบšเบปเบšเปƒเบ™เบซเบ™เบถเปˆเบ‡เบ„เปเบฒเบชเบฑเปˆเบ‡ (apt upgrade เบชเปเบฒเบฅเบฑเบš Ubuntu).
  • เบ—เบตเบกเบ‡เบฒเบ™เบžเบฐเบเบฒเบเบฒเบกเบเบงเบ”เบžเบปเบšเบงเปˆเบฒเบžเบงเบเป€เบ‚เบปเบฒเบเปเบฒเบฅเบฑเบ‡เปเบฅเปˆเบ™เบขเบนเปˆเปƒเบ™เบ–เบฑเบ‡เป€เบžเบทเปˆเบญเปƒเบซเป‰เบžเบงเบเป€เบ‚เบปเบฒเบชเบฒเบกเบฒเบ”เบ›เปˆเบฝเบ™เบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเบ‚เบญเบ‡เบžเบงเบเป€เบ‚เบปเบฒเบ•เบฒเบกเบ„เบงเบฒเบกเป€เบซเบกเบฒเบฐเบชเบปเบก.
  • เป€เบžเบทเปˆเบญเบเปเบฒเบ™เบปเบ”เบˆเปเบฒเบ™เบงเบ™เบ‚เบญเบ‡เบ‚เบฐเบšเบงเบ™เบเบฒเบ™เบเบฐเบ—เบนเป‰เบ—เบตเปˆเบˆเบฐเป€เบ›เบตเบ”เบ•เบปเบงเปƒเบ™เบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒ, script เบžเบฐเบเบฒเบเบฒเบกเป€เบ”เบปเบฒเบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเบญเบฑเบ”เบ•เบฐเป‚เบ™เบกเบฑเบ”เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบเปƒเบ™เบšเบฑเบ™เบˆเบธ, เป€เบ„เบทเปˆเบญเบ‡ virtual, เปเบฅเบฐเป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบเบ‚เบญเบ‡เบฎเบฒเบ”เปเบง.
  • เปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเบญเบฐเบ—เบดเบšเบฒเบเบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒ, เบžเบงเบเป€เบฎเบปเบฒเบชเบฐเป€เบซเบกเบตเบ„เบดเบ”เบ—เปเบฒเบญเบดเบ”เบเปˆเบฝเบงเบเบฑเบšเบญเบฑเบ”เบ•เบฐเป‚เบ™เบกเบฑเบ”, เป€เบŠเบดเปˆเบ‡เบžเบงเบเป€เบฎเบปเบฒเบซเบงเบฑเบ‡เบงเปˆเบฒเบˆเบฐเบเบฒเบเป€เบ›เบฑเบ™เบžเบทเป‰เบ™เบ–เบฒเบ™เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบชเป‰เบฒเบ‡เป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบžเบทเป‰เบ™เบ–เบฒเบ™เบ‚เบญเบ‡เบ—เปˆเบฒเบ™เป€เบญเบ‡เป€เบ›เบฑเบ™เบฅเบฐเบซเบฑเบ”.
  • เบ„เปเบฒเบชเบฑเปˆเบ‡เบ—เบฑเบ‡เบซเบกเบปเบ”เปเบกเปˆเบ™เบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เบˆเบฒเบเบœเบนเป‰เปƒเบŠเป‰ เบฎเบฒเบ, เป€เบžเบฒเบฐเบงเปˆเบฒเบžเบงเบเป€เบ‚เบปเบฒเบ›เปˆเบฝเบ™เบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเบฅเบฐเบšเบปเบšเบžเบทเป‰เบ™เบ–เบฒเบ™, เปเบ•เปˆ WordPress เบ•เบปเบงเบกเบฑเบ™เป€เบญเบ‡เปเบฅเปˆเบ™เป€เบ›เบฑเบ™เบœเบนเป‰เปƒเบŠเป‰เบ›เบปเบเบเบฐเบ•เบด.

เบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเบ•เบปเบงเปเบ›เบชเบฐเบžเบฒเบšเปเบงเบ”เบฅเป‰เบญเบก

เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเบ•เบปเบงเปเบ›เบชเบฐเบžเบฒเบšเปเบงเบ”เบฅเป‰เบญเบกเบ•เปเปˆเป„เบ›เบ™เบตเป‰เบเปˆเบญเบ™เบ—เบตเปˆเบˆเบฐเปเบฅเปˆเบ™เบชเบฐเบ„เบฃเบดเบš:

  • WORDPRESS_DB_PASSWORD โ€” เบฅเบฐโ€‹เบซเบฑเบ”โ€‹เบœเปˆเบฒเบ™โ€‹เบ–เบฒเบ™โ€‹เบ‚เปเป‰โ€‹เบกเบนเบ™ WordPress
  • WORDPRESS_ADMIN_USER - เบŠเบทเปˆเบœเบนเป‰เปƒเบŠเป‰ WordPress admin
  • WORDPRESS_ADMIN_PASSWORD - เบฅเบฐเบซเบฑเบ”เบœเปˆเบฒเบ™ WordPress admin
  • WORDPRESS_ADMIN_EMAIL โ€” เบญเบตเป€เบกเบง admin WordPress
  • WORDPRESS_URL - URL เป€เบ•เบฑเบกเบ‚เบญเบ‡เป€เบงเบฑเบšเป„เบŠเบ—เปŒ WordPress, เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบ”เป‰เบงเบ https://.
  • LETS_ENCRYPT_STAGING โ€” เบซเบงเปˆเบฒเบ‡เป€เบ›เบปเปˆเบฒเป‚เบ”เบเบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™, เปเบ•เปˆเป‚เบ”เบเบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเป€เบ›เบฑเบ™ 1, เบ—เปˆเบฒเบ™เบˆเบฐเปƒเบŠเป‰เป€เบŠเบตเบšเป€เบงเบตเบ‚เบฑเป‰เบ™เบ•เบญเบ™เบ‚เบญเบ‡ Let's Encrypt, เป€เบŠเบดเปˆเบ‡เบกเบตเบ„เบงเบฒเบกเบˆเปเบฒเป€เบ›เบฑเบ™เปƒเบ™เบเบฒเบ™เบฎเป‰เบญเบ‡เบ‚เปเปƒเบšเบขเบฑเป‰เบ‡เบขเบทเบ™เป€เบฅเบทเป‰เบญเบเป†เปƒเบ™เป€เบงเบฅเบฒเบ—เบปเบ”เบชเบญเบšเบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเบ‚เบญเบ‡เบ—เปˆเบฒเบ™, เบ–เป‰เบฒเบšเปเปˆเบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™ Let's Encrypt เบญเบฒเบ”เบˆเบฐเบ›เบดเบ”เบเบฑเป‰เบ™เบ—เบตเปˆเบขเบนเปˆ IP เบ‚เบญเบ‡เบ—เปˆเบฒเบ™เบŠเบปเปˆเบงเบ„เบฒเบงเป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเบเบฒเบ™เบฎเป‰เบญเบ‡เบ‚เปเบˆเปเบฒเบ™เบงเบ™เบซเบฅเบฒเบ.

script เบเบงเบ”เป€เบšเบดเปˆเบ‡เบงเปˆเบฒเบ•เบปเบงเปเบ›เบ—เบตเปˆเบเปˆเบฝเบงเบ‚เป‰เบญเบ‡เบเบฑเบš WordPress เป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เบ–เบทเบเบ•เบฑเป‰เบ‡เปเบฅเบฐเบญเบญเบเบ–เป‰เบฒเบžเบงเบเป€เบ‚เบปเบฒเบšเปเปˆเปเบกเปˆเบ™.
Script เป€เบชเบฑเป‰เบ™ 572-576 เบเบงเบ”เป€เบšเบดเปˆเบ‡เบ„เปˆเบฒ LETS_ENCRYPT_STAGING.

เบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเบ•เบปเบงเปเบ›เบชเบฐเบžเบฒเบšเปเบงเบ”เบฅเป‰เบญเบกเบ—เบตเปˆเบกเบฒเบˆเบฒเบ

script เปƒเบ™เป€เบชเบฑเป‰เบ™ 55-61 เบเปเบฒเบ™เบปเบ”เบ•เบปเบงเปเบ›เบชเบฐเบžเบฒเบšเปเบงเบ”เบฅเป‰เบญเบกเบ•เปเปˆเป„เบ›เบ™เบตเป‰, เบšเปเปˆเบงเปˆเบฒเบˆเบฐเป€เบ›เบฑเบ™เบšเบฒเบ‡เบ„เปˆเบฒ hard-coded เบซเบผเบทเบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบ„เปˆเบฒเบ—เบตเปˆเป„เบ”เป‰เบกเบฒเบˆเบฒเบเบ•เบปเบงเปเบ›เบ—เบตเปˆเบเปเบฒเบ™เบปเบ”เป„เบงเป‰เปƒเบ™เบžเบฒเบเบเปˆเบญเบ™เบซเบ™เป‰เบฒ:

  • DEBIAN_FRONTEND="noninteractive" โ€” เบšเบญเบเปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™เบงเปˆเบฒเบžเบงเบเป€เบ‚เบปเบฒเปเบฅเปˆเบ™เบขเบนเปˆเปƒเบ™เบชเบฐเบ„เบฃเบดเบš เปเบฅเบฐเบšเปเปˆเบกเบตเบ„เบงเบฒเบกเป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰เปƒเบ™เบเบฒเบ™เป‚เบ•เป‰เบ•เบญเบšเบ‚เบญเบ‡เบœเบนเป‰เปƒเบŠเป‰.
  • WORDPRESS_CLI_VERSION="2.4.0" โ€” WordPress CLI เป€เบงเบตเบŠเบฑเปˆเบ™เบ‚เบญเบ‡เปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™.
  • WORDPRESS_CLI_MD5= "dedd5a662b80cda66e9e25d44c23b25c" โ€” checksum เบ‚เบญเบ‡ WordPress CLI 2.4.0 executable file (เป€เบงเบตโ€‹เบŠเบฑเบ™โ€‹เปเบกเปˆเบ™โ€‹เป„เบ”เป‰โ€‹เบฅเบฐโ€‹เบšเบธโ€‹เป„เบงเป‰โ€‹เปƒเบ™โ€‹เบ•เบปเบงโ€‹เบ›เปˆเบฝเบ™โ€‹เปเบ›เบ‡ WORDPRESS_CLI_VERSION). script เปƒเบ™เป€เบชเบฑเป‰เบ™ 162 เปƒเบŠเป‰เบ„เปˆเบฒเบ™เบตเป‰เป€เบžเบทเปˆเบญเบเบงเบ”เบชเบญเบšเบงเปˆเบฒเป„เบŸเบฅเปŒ WordPress CLI เบ—เบตเปˆเบ–เบทเบเบ•เป‰เบญเบ‡เบ–เบทเบเบ”เบฒเบงเป‚เบซเบฅเบ”เปเบฅเป‰เบง.
  • UPLOAD_MAX_FILESIZE="16M" โ€” เบ‚เบฐเปœเบฒเบ”เป„เบŸเบฅเปŒเบชเบนเบ‡เบชเบธเบ”เบ—เบตเปˆเบชเบฒเบกเบฒเบ”เบญเบฑเบšเป‚เบซเบผเบ”เปƒเบชเปˆ WordPress. เบเบฒเบ™โ€‹เบ•เบฑเป‰เบ‡โ€‹เบ„เปˆเบฒโ€‹เบ™เบตเป‰โ€‹เปเบกเปˆเบ™โ€‹เป„เบ”เป‰โ€‹เบ–เบทเบโ€‹เบ™เปเบฒโ€‹เปƒเบŠเป‰โ€‹เปƒเบ™โ€‹เบซเบผเบฒเบโ€‹เบšเปˆเบญเบ™โ€‹, เบชเบฐโ€‹เบ™เบฑเป‰เบ™โ€‹เบกเบฑเบ™โ€‹เบ‡เปˆเบฒเบโ€‹เบ—เบตเปˆโ€‹เบˆเบฐโ€‹เบ•เบฑเป‰เบ‡โ€‹เบกเบฑเบ™โ€‹เบขเบนเปˆโ€‹เปƒเบ™โ€‹เบšเปˆเบญเบ™โ€‹เบ”เบฝเบงโ€‹.
  • TLS_HOSTNAME= "$(echo ${WORDPRESS_URL} | cut -d'/' -f3)" โ€” เบŠเบทเปˆเป€เบˆเบปเป‰เบฒเบžเบฒเบšเบฅเบฐเบšเบปเบš, เปเบเบเบญเบญเบเบˆเบฒเบเบ•เบปเบงเปเบ› WORDPRESS_URL. เปƒเบŠเป‰เป€เบžเบทเปˆเบญเปƒเบซเป‰เป„เบ”เป‰เปƒเบšเบขเบฑเป‰เบ‡เบขเบทเบ™ TLS/SSL เบ—เบตเปˆเป€เบซเบกเบฒเบฐเบชเบปเบกเบˆเบฒเบ Let's Encrypt, เป€เบŠเบฑเปˆเบ™เบ”เบฝเบงเบเบฑเบ™เบเบฑเบšเบเบฒเบ™เบขเบฑเป‰เบ‡เบขเบทเบ™ WordPress เบžเบฒเบเปƒเบ™.
  • NGINX_CONF_DIR="/etc/nginx" โ€” เป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡เป„เบ›เบซเบฒเป„เบ”เป€เบฅเบเบฐเบ—เปเบฅเบตเบ—เบตเปˆเบกเบตเบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒ NGINX, เบฅเบงเบกเบ—เบฑเบ‡เป„เบŸเบฅเปŒเบ•เบปเป‰เบ™เบ•เป nginx.conf.
  • CERT_DIR="/etc/letsencrypt/live/${TLS_HOSTNAME}" โ€” เป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡เป„เบ›เบซเบฒ Let's Encrypt เปƒเบšเบขเบฑเป‰เบ‡เบขเบทเบ™เบชเปเบฒเบฅเบฑเบšเป€เบงเบฑเบšเป„เบŠเบ—เปŒ WordPress, เป„เบ”เป‰เบกเบฒเบˆเบฒเบเบ•เบปเบงเปเบ› TLS_HOSTNAME.

เบเบฒเบ™เบกเบญเบšเบŠเบทเปˆเป‚เบฎเบ”เปƒเบซเป‰เบเบฑเบšเป€เบŠเบตเบšเป€เบงเบต WordPress

script เบเปเบฒเบ™เบปเบ”เบŠเบทเปˆเป‚เบฎเบ”เบ‚เบญเบ‡เป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบเป€เบžเบทเปˆเบญเปƒเบซเป‰เบ„เปˆเบฒเบเบปเบ‡เบเบฑเบšเบŠเบทเปˆเป‚เบ”เป€เบกเบ™เบ‚เบญเบ‡เป€เบงเบฑเบšเป„เบŠเบ—เปŒ. เบ™เบตเป‰เบšเปเปˆเปเบกเปˆเบ™เบ„เบงเบฒเบกเบˆเปเบฒเป€เบ›เบฑเบ™, เปเบ•เปˆเบกเบฑเบ™เบชเบฐเบ”เบงเบเบเบงเปˆเบฒเบ—เบตเปˆเบˆเบฐเบชเบปเปˆเบ‡เบˆเบปเบ”เบซเบกเบฒเบเบ‚เบฒเบญเบญเบเบœเปˆเบฒเบ™ SMTP เป€เบกเบทเปˆเบญเบ•เบฑเป‰เบ‡เป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบเบ”เบฝเบง, เบ•เบฒเบกเบเบฒเบ™เบเปเบฒเบซเบ™เบปเบ”เบ„เปˆเบฒเป‚เบ”เบเบชเบฐเบ„เบดเบš.

เบฅเบฐเบซเบฑเบ”เบชเบฐเบ„เบฃเบดเบš

# Change the hostname to be the same as the WordPress hostname
if [ ! "$(hostname)" == "${TLS_HOSTNAME}" ]; then
  echo " Changing hostname to ${TLS_HOSTNAME}"
  hostnamectl set-hostname "${TLS_HOSTNAME}"
fi

เบเบฒเบ™เป€เบžเบตเปˆเบกเบŠเบทเปˆเป€เบˆเบปเป‰เบฒเบžเบฒเบšเปƒเบชเปˆ /etc/hosts

เป€เบชเบตเบก WP-Cron เปƒเบŠเป‰เป€เบžเบทเปˆเบญเป€เบฎเบฑเบ”เบงเบฝเบเป€เบ›เบฑเบ™เป„เบฅเบเบฐ, เบฎเบฝเบเบฎเป‰เบญเบ‡เปƒเบซเป‰ WordPress เบชเบฒเบกเบฒเบ”เป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡เบ•เบปเบงเป€เบญเบ‡เบœเปˆเบฒเบ™ HTTP. เป€เบžเบทเปˆเบญเปƒเบซเป‰เปเบ™เปˆเปƒเบˆเบงเปˆเบฒ WP-Cron เป€เบฎเบฑเบ”เบงเบฝเบเบขเปˆเบฒเบ‡เบ–เบทเบเบ•เป‰เบญเบ‡เปƒเบ™เบ—เบธเบเบชเบฐเบžเบฒเบšเปเบงเบ”เบฅเป‰เบญเบก, script เป€เบžเบตเปˆเบกเป€เบชเบฑเป‰เบ™เปƒเบชเปˆเป„เบŸเบฅเปŒ / etc / hostsเป€เบžเบทเปˆเบญเปƒเบซเป‰ WordPress เบชเบฒเบกเบฒเบ”เป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡เบ•เบปเบงเบกเบฑเบ™เป€เบญเบ‡เบœเปˆเบฒเบ™เบเบฒเบ™เป‚เบ•เป‰เบ•เบญเบš loopback:

เบฅเบฐเบซเบฑเบ”เบชเบฐเบ„เบฃเบดเบš

# Add the hostname to /etc/hosts
if [ "$(grep -m1 "${TLS_HOSTNAME}" /etc/hosts)" = "" ]; then
  echo " Adding hostname ${TLS_HOSTNAME} to /etc/hosts so that WordPress can ping itself"
  printf "::1 %sn127.0.0.1 %sn" "${TLS_HOSTNAME}" "${TLS_HOSTNAME}" >> /etc/hosts
fi

เบเบฒเบ™เบ•เบดเบ”เบ•เบฑเป‰เบ‡เป€เบ„เบทเปˆเบญเบ‡เบกเบทเบ—เบตเปˆเบˆเปเบฒเป€เบ›เบฑเบ™เบชเปเบฒเบฅเบฑเบšเบ‚เบฑเป‰เบ™เบ•เบญเบ™เบ•เปเปˆเป„เบ›

เบชเปˆเบงเบ™เบ—เบตเปˆเป€เบซเบผเบทเบญเบ‚เบญเบ‡เบชเบฐเบ„เบดเบšเบ•เป‰เบญเบ‡เบเบฒเบ™เบšเบฒเบ‡เป‚เบ„เบ‡เบเบฒเบ™เปเบฅเบฐเบชเบปเบกเบกเบธเบ”เบงเปˆเบฒ repositories เปเบกเปˆเบ™เบ—เบฑเบ™เบชเบฐเป„เบซเบก. เบžเบงเบเป€เบฎเบปเบฒเบ›เบฑเบšเบ›เบธเบ‡เบšเบฑเบ™เบŠเบตเบฅเบฒเบเบŠเบทเปˆเบ‚เบญเบ‡ repositories, เปเบฅเบฐเบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบ•เบดเบ”เบ•เบฑเป‰เบ‡เป€เบ„เบทเปˆเบญเบ‡เบกเบทเบ—เบตเปˆเบˆเปเบฒเป€เบ›เบฑเบ™:

เบฅเบฐเบซเบฑเบ”เบชเบฐเบ„เบฃเบดเบš

# Make sure tools needed for install are present
echo " Installing prerequisite tools"
apt-get -qq update
apt-get -qq install -y 
  bc 
  ca-certificates 
  coreutils 
  curl 
  gnupg2 
  lsb-release

เบเบฒเบ™เป€เบžเบตเปˆเบก NGINX Unit เปเบฅเบฐ NGINX repositories

เบชเบฐเบ„เบฃเบดเบšเบ•เบดเบ”เบ•เบฑเป‰เบ‡ NGINX Unit เปเบฅเบฐ open source NGINX เบˆเบฒเบเบšเปˆเบญเบ™เป€เบเบฑเบšเบกเป‰เบฝเบ™ NGINX เบขเปˆเบฒเบ‡เป€เบ›เบฑเบ™เบ—เบฒเบ‡เบเบฒเบ™เป€เบžเบทเปˆเบญเบฎเบฑเบšเบ›เบฐเบเบฑเบ™เบงเปˆเบฒเบฅเบธเป‰เบ™เบ—เบตเปˆเบกเบตเบเบฒเบ™เบ›เบฑเบšเบ›เบธเบ‡เบ„เบงเบฒเบกเบ›เบญเบ”เป„เบžเบซเบผเป‰เบฒเบชเบธเบ”เปเบฅเบฐเบเบฒเบ™เปเบเป‰เป„เบ‚เบ‚เปเป‰เบšเบปเบเบžเปˆเบญเบ‡เบ–เบทเบเปƒเบŠเป‰.

เบชเบฐเบ„เบฃเบดเบšเป€เบžเบตเปˆเบก NGINX Unit repository เปเบฅเบฐเบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™ NGINX repository, เป€เบžเบตเปˆเบกเบฅเบฐเบซเบฑเบ” repositories เปเบฅเบฐเป„เบŸเบฅเปŒเบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒ. apt, เบเปเบฒเบ™เบปเบ”เบเบฒเบ™เป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡ repositories เบœเปˆเบฒเบ™เบญเบดเบ™เป€เบ•เบตเป€เบ™เบฑเบ”.

เบเบฒเบ™เบ•เบดเบ”เบ•เบฑเป‰เบ‡เบ•เบปเบงเบˆเบดเบ‡เบ‚เบญเบ‡เบซเบ™เปˆเบงเบเบ‡เบฒเบ™ NGINX เปเบฅเบฐ NGINX เป€เบเบตเบ”เบ‚เบทเป‰เบ™เปƒเบ™เบžเบฒเบเบ•เปเปˆเป„เบ›. เบžเบงเบเป€เบฎเบปเบฒเป€เบžเบตเปˆเบก repositories เบฅเปˆเบงเบ‡เปœเป‰เบฒเป€เบžเบทเปˆเบญเบซเบผเบตเบเป€เบงเบฑเป‰เบ™เบเบฒเบ™เบญเบฑเบšเป€เบ”เบ” metadata เบซเบผเบฒเบเบ„เบฑเป‰เบ‡, เป€เบฎเบฑเบ”เปƒเบซเป‰เบเบฒเบ™เบ•เบดเบ”เบ•เบฑเป‰เบ‡เป„เบงเบ‚เบถเป‰เบ™.

เบฅเบฐเบซเบฑเบ”เบชเบฐเบ„เบฃเบดเบš

# Install the NGINX Unit repository
if [ ! -f /etc/apt/sources.list.d/unit.list ]; then
  echo " Installing NGINX Unit repository"
  curl -fsSL https://nginx.org/keys/nginx_signing.key | apt-key add -
  echo "deb https://packages.nginx.org/unit/ubuntu/ $(lsb_release -cs) unit" > /etc/apt/sources.list.d/unit.list
fi

# Install the NGINX repository
if [ ! -f /etc/apt/sources.list.d/nginx.list ]; then
  echo " Installing NGINX repository"
  curl -fsSL https://nginx.org/keys/nginx_signing.key | apt-key add -
  echo "deb https://nginx.org/packages/mainline/ubuntu $(lsb_release -cs) nginx" > /etc/apt/sources.list.d/nginx.list
fi

เบเบฒเบ™เบ•เบดเบ”เบ•เบฑเป‰เบ‡ NGINX, NGINX Unit, PHP MariaDB, Certbot (Let's Encrypt) เปเบฅเบฐเบ„เบงเบฒเบกเป€เบžเบดเปˆเบ‡เบžเบฒเบญเบฒเป„เบชเบ‚เบญเบ‡เป€เบ‚เบปเบฒเป€เบˆเบปเป‰เบฒ

เป€เบกเบทเปˆเบญ repositories เบ—เบฑเบ‡เบซเบกเบปเบ”เบ–เบทเบเป€เบžเบตเปˆเบก, เบžเบงเบเป€เบฎเบปเบฒเบ›เบฑเบšเบ›เบธเบ‡ metadata เปเบฅเบฐเบ•เบดเบ”เบ•เบฑเป‰เบ‡เบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบ. เปเบžเบฑเบเป€เบเบฑเบ”เบ—เบตเปˆเบ•เบดเบ”เบ•เบฑเป‰เบ‡เป‚เบ”เบเบชเบฐเบ„เบดเบšเบเบฑเบ‡เบ›เบฐเบเบญเบšเบกเบตเบชเปˆเบงเบ™เบ‚เบฐเบซเบเบฒเบ PHP เบ—เบตเปˆเปเบ™เบฐเบ™เปเบฒเปƒเบ™เป€เบงเบฅเบฒเปเบฅเปˆเบ™ WordPress.org

เบฅเบฐเบซเบฑเบ”เบชเบฐเบ„เบฃเบดเบš

echo " Updating repository metadata"
apt-get -qq update

# Install PHP with dependencies and NGINX Unit
echo " Installing PHP, NGINX Unit, NGINX, Certbot, and MariaDB"
apt-get -qq install -y --no-install-recommends 
  certbot 
  python3-certbot-nginx 
  php-cli 
  php-common 
  php-bcmath 
  php-curl 
  php-gd 
  php-imagick 
  php-mbstring 
  php-mysql 
  php-opcache 
  php-xml 
  php-zip 
  ghostscript 
  nginx 
  unit 
  unit-php 
  mariadb-server

เบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒ PHP เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบเบฑเบš NGINX Unit เปเบฅเบฐ WordPress

script เบชเป‰เบฒเบ‡เป„เบŸเบฅเปŒเบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเปƒเบ™เป„เบ”เป€เบฅเบเบฐเบ—เปเบฅเบต conf.d. เบ™เบตเป‰เบเปเบฒเบ™เบปเบ”เบ‚เบฐเบซเบ™เบฒเบ”เบเบฒเบ™เบญเบฑเบšเป‚เบซเบฅเบ”เป„เบŸเบฅเปŒเบชเบนเบ‡เบชเบธเบ”เบชเปเบฒเบฅเบฑเบš PHP, เป€เบฎเบฑเบ”เปƒเบซเป‰เบ„เบงเบฒเบกเบœเบดเบ”เบžเบฒเบ”เบ‚เบญเบ‡ PHP เบชเบฒเบกเบฒเบ”เบ–เบทเบเบชเบปเปˆเบ‡เบญเบญเบเป„เบ›เบซเบฒ STDERR เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบžเบงเบเบกเบฑเบ™เบˆเบฐเบ–เบทเบเบšเบฑเบ™เบ—เบถเบเป„เบงเป‰เปƒเบ™เบซเบ™เปˆเบงเบ NGINX, เปเบฅเบฐเป€เบ›เบตเบ”เบซเบ™เปˆเบงเบ NGINX เบ„เบทเบ™เปƒเปเปˆ.

เบฅเบฐเบซเบฑเบ”เบชเบฐเบ„เบฃเบดเบš

# Find the major and minor PHP version so that we can write to its conf.d directory
PHP_MAJOR_MINOR_VERSION="$(php -v | head -n1 | cut -d' ' -f2 | cut -d'.' -f1,2)"

if [ ! -f "/etc/php/${PHP_MAJOR_MINOR_VERSION}/embed/conf.d/30-wordpress-overrides.ini" ]; then
  echo " Configuring PHP for use with NGINX Unit and WordPress"
  # Add PHP configuration overrides
  cat > "/etc/php/${PHP_MAJOR_MINOR_VERSION}/embed/conf.d/30-wordpress-overrides.ini" << EOM
; Set a larger maximum upload size so that WordPress can handle
; bigger media files.
upload_max_filesize=${UPLOAD_MAX_FILESIZE}
post_max_size=${UPLOAD_MAX_FILESIZE}
; Write error log to STDERR so that error messages show up in the NGINX Unit log
error_log=/dev/stderr
EOM
fi

# Restart NGINX Unit because we have reconfigured PHP
echo " Restarting NGINX Unit"
service unit restart

เบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเบ–เบฒเบ™เบ‚เปเป‰เบกเบนเบ™ MariaDB เบชเปเบฒเบฅเบฑเบš WordPress

เบžเบงเบเป€เบฎเบปเบฒเป€เบฅเบทเบญเบ MariaDB เบซเบผเบฒเบเบเบงเปˆเบฒ MySQL เป€เบžเบฒเบฐเบงเปˆเบฒเบกเบฑเบ™เบกเบตเบเบดเบ”เบˆเบฐเบเปเบฒเบŠเบธเบกเบŠเบปเบ™เบซเบผเบฒเบเบ‚เบถเป‰เบ™เปเบฅเบฐเบเบฑเบ‡เบชเบฒเบกเบฒเบ” เบชเบฐเบซเบ™เบญเบ‡เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบ—เบตเปˆเบ”เบตเบเบงเปˆเบฒเป‚เบ”เบเบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™ (เบญเบฒเบ”เบˆเบฐเป€เบ›เบฑเบ™, เบ—เบธเบเบชเบดเปˆเบ‡เบ—เบธเบเบขเปˆเบฒเบ‡เปเบกเปˆเบ™เบ‡เปˆเบฒเบเบ”เบฒเบเบเบงเปˆเบฒเบ™เบตเป‰: เป€เบžเบทเปˆเบญเบ•เบดเบ”เบ•เบฑเป‰เบ‡ MySQL, เบ—เปˆเบฒเบ™เบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เป€เบžเบตเปˆเบกเบšเปˆเบญเบ™เป€เบเบฑเบšเบกเป‰เบฝเบ™เบญเบทเปˆเบ™, เบ›เบฐเบกเบฒเบ™. เบ™เบฑเบเปเบ›).

script เบชเป‰เบฒเบ‡เบ–เบฒเบ™เบ‚เปเป‰เบกเบนเบ™เปƒเบซเบกเปˆเปเบฅเบฐเบชเป‰เบฒเบ‡เบ‚เปเป‰เบกเบนเบ™เบ›เบฐเบˆเปเบฒเบเบฒเบ™เป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡ WordPress เบœเปˆเบฒเบ™เบเบฒเบ™เป‚เบ•เป‰เบ•เบญเบš loopback:

เบฅเบฐเบซเบฑเบ”เบชเบฐเบ„เบฃเบดเบš

# Set up the WordPress database
echo " Configuring MariaDB for WordPress"
mysqladmin create wordpress || echo "Ignoring above error because database may already exist"
mysql -e "GRANT ALL PRIVILEGES ON wordpress.* TO "wordpress"@"localhost" IDENTIFIED BY "$WORDPRESS_DB_PASSWORD"; FLUSH PRIVILEGES;"

เบเบฒเบ™เบ•เบดเบ”เบ•เบฑเป‰เบ‡เป‚เบ›เบฃเปเบเบฃเบก WordPress CLI

เปƒเบ™เบ‚เบฑเป‰เบ™เบ•เบญเบ™เบ™เบตเป‰ script เบ•เบดเบ”เบ•เบฑเป‰เบ‡เป‚เบ„เบ‡เบเบฒเบ™ WP-CLI. เบ”เป‰เบงเบเบกเบฑเบ™, เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบ•เบดเบ”เบ•เบฑเป‰เบ‡เปเบฅเบฐเบˆเบฑเบ”เบเบฒเบ™เบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒ WordPress เป‚เบ”เบเบšเปเปˆเบ•เป‰เบญเบ‡เปเบเป‰เป„เบ‚เป„เบŸเบฅเปŒเบ”เป‰เบงเบเบ•เบปเบ™เป€เบญเบ‡, เบ›เบฑเบšเบ›เบธเบ‡เบ–เบฒเบ™เบ‚เปเป‰เบกเบนเบ™, เบซเบผเบทเป€เบ‚เบปเป‰เบฒเบชเบนเปˆเบฅเบฐเบšเบปเบšเบเบฐเบ”เบฒเบ™เบ„เบงเบšเบ„เบธเบก. เบกเบฑเบ™เบเบฑเบ‡เบชเบฒเบกเบฒเบ”เบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰เป€เบžเบทเปˆเบญเบ•เบดเบ”เบ•เบฑเป‰เบ‡เบซเบปเบงเบ‚เปเป‰เปเบฅเบฐ add-ons เปเบฅเบฐเบ›เบฑเบšเบ›เบธเบ‡ WordPress.

เบฅเบฐเบซเบฑเบ”เบชเบฐเบ„เบฃเบดเบš

if [ ! -f /usr/local/bin/wp ]; then
  # Install the WordPress CLI
  echo " Installing the WordPress CLI tool"
  curl --retry 6 -Ls "https://github.com/wp-cli/wp-cli/releases/download/v${WORDPRESS_CLI_VERSION}/wp-cli-${WORDPRESS_CLI_VERSION}.phar" > /usr/local/bin/wp
  echo "$WORDPRESS_CLI_MD5 /usr/local/bin/wp" | md5sum -c -
  chmod +x /usr/local/bin/wp
fi

เบเบฒเบ™เบ•เบดเบ”เบ•เบฑเป‰เบ‡เปเบฅเบฐเบ•เบฑเป‰เบ‡เบ„เปˆเบฒ WordPress

script เบ•เบดเบ”เบ•เบฑเป‰เบ‡ WordPress เบฎเบธเปˆเบ™เบซเบผเป‰เบฒเบชเบธเบ”เป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™เป„เบ”เป€เบฅเบเบฐเบ—เปเบฅเบต /var/www/wordpress, เปเบฅเบฐเบเบฑเบ‡เบกเบตเบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒ:

  • เบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเบ–เบฒเบ™เบ‚เปเป‰เบกเบนเบ™เป€เบฎเบฑเบ”เบงเบฝเบเบœเปˆเบฒเบ™เบŠเบฑเบญเบเป€เบเบฑเบ”เป‚เบ”เป€เบกเบ™ unix เปเบ—เบ™ TCP เปƒเบ™ loopback เป€เบžเบทเปˆเบญเบซเบผเบธเบ”เบœเปˆเบญเบ™เบเบฒเบ™เบˆเบฐเบฅเบฒเบˆเบญเบ™ TCP.
  • WordPress เป€เบžเบตเปˆเบกเบ„เปเบฒเบ™เปเบฒเบซเบ™เป‰เบฒ https:// เป„เบ›เบซเบฒ URL เบ–เป‰เบฒเบฅเบนเบเบ„เป‰เบฒเป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเบเบฑเบš NGINX เบœเปˆเบฒเบ™ HTTPS, เปเบฅเบฐเบเบฑเบ‡เบชเบปเปˆเบ‡เบŠเบทเปˆเป‚เบฎเบ”เบซเปˆเบฒเบ‡เป„เบเบชเบญเบเบซเบผเบตเบ (เบ•เบฒเบกเบ—เบตเปˆเบชเบฐเบซเบ™เบญเบ‡เปƒเบซเป‰เป‚เบ”เบ NGINX) เบเบฑเบš PHP. เบžเบงเบเป€เบฎเบปเบฒเปƒเบŠเป‰เบฅเบฐเบซเบฑเบ”เบšเบฒเบ‡เบญเบฑเบ™เป€เบžเบทเปˆเบญเบ•เบฑเป‰เบ‡เบ„เปˆเบฒเบกเบฑเบ™.
  • WordPress เบ•เป‰เบญเบ‡เบเบฒเบ™ HTTPS เป€เบžเบทเปˆเบญเป€เบ‚เบปเป‰เบฒเบชเบนเปˆเบฅเบฐเบšเบปเบš
  • เป‚เบ„เบ‡เบชเป‰เบฒเบ‡ URL เปเบกเปˆเบ™เบญเบตเบ‡เปƒเบชเปˆเบŠเบฑเบšเบžเบฐเบเบฒเบเบญเบ™เบขเปˆเบฒเบ‡เบ‡เบฝเบšเป†
  • เบเบฒเบ™เบญเบฐเบ™เบธเบเบฒเบ”เบฅเบฐเบšเบปเบšเป„เบŸเบฅเปŒเบ—เบตเปˆเบ–เบทเบเบ•เป‰เบญเบ‡เบ–เบทเบเบ•เบฑเป‰เบ‡เป„เบงเป‰เบชเปเบฒเบฅเบฑเบšเป„เบ”เป€เบฅเบเบฐเบ—เปเบฅเบต WordPress.

เบฅเบฐเบซเบฑเบ”เบชเบฐเบ„เบฃเบดเบš

if [ ! -d /var/www/wordpress ]; then
  # Create WordPress directories
  mkdir -p /var/www/wordpress
  chown -R www-data:www-data /var/www

  # Download WordPress using the WordPress CLI
  echo " Installing WordPress"
  su -s /bin/sh -c 'wp --path=/var/www/wordpress core download' www-data

  WP_CONFIG_CREATE_CMD="wp --path=/var/www/wordpress config create --extra-php --dbname=wordpress --dbuser=wordpress --dbhost="localhost:/var/run/mysqld/mysqld.sock" --dbpass="${WORDPRESS_DB_PASSWORD}""

  # This snippet is injected into the wp-config.php file when it is created;
  # it informs WordPress that we are behind a reverse proxy and as such
  # allows it to generate links using HTTPS
  cat > /tmp/wp_forwarded_for.php << 'EOM'
/* Turn HTTPS 'on' if HTTP_X_FORWARDED_PROTO matches 'https' */
if (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && strpos($_SERVER['HTTP_X_FORWARDED_PROTO'], 'https') !== false) {
    $_SERVER['HTTPS'] = 'on';
}
if (isset($_SERVER['HTTP_X_FORWARDED_HOST'])) {
    $_SERVER['HTTP_HOST'] = $_SERVER['HTTP_X_FORWARDED_HOST'];
}
EOM

  # Create WordPress configuration
  su -s /bin/sh -p -c "cat /tmp/wp_forwarded_for.php | ${WP_CONFIG_CREATE_CMD}" www-data
  rm /tmp/wp_forwarded_for.php
  su -s /bin/sh -p -c "wp --path=/var/www/wordpress config set 'FORCE_SSL_ADMIN' 'true'" www-data

  # Install WordPress
  WP_SITE_INSTALL_CMD="wp --path=/var/www/wordpress core install --url="${WORDPRESS_URL}" --title="${WORDPRESS_SITE_TITLE}" --admin_user="${WORDPRESS_ADMIN_USER}" --admin_password="${WORDPRESS_ADMIN_PASSWORD}" --admin_email="${WORDPRESS_ADMIN_EMAIL}" --skip-email"
  su -s /bin/sh -p -c "${WP_SITE_INSTALL_CMD}" www-data

  # Set permalink structure to a sensible default that isn't in the UI
  su -s /bin/sh -p -c "wp --path=/var/www/wordpress option update permalink_structure '/%year%/%monthnum%/%postname%/'" www-data

  # Remove sample file because it is cruft and could be a security problem
  rm /var/www/wordpress/wp-config-sample.php

  # Ensure that WordPress permissions are correct
  find /var/www/wordpress -type d -exec chmod g+s {} ;
  chmod g+w /var/www/wordpress/wp-content
  chmod -R g+w /var/www/wordpress/wp-content/themes
  chmod -R g+w /var/www/wordpress/wp-content/plugins
fi

เบ•เบฑเป‰เบ‡เบ„เปˆเบฒ NGINX Unit

เบชเบฐเบ„เบฃเบดเบšเบ•เบฑเป‰เบ‡เบ„เปˆเบฒ NGINX Unit เป€เบžเบทเปˆเบญเปเบฅเปˆเบ™ PHP เปเบฅเบฐเบˆเบฑเบ”เบเบฒเบ™เป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡ WordPress, เปเบเบ namespace เบ‚เบญเบ‡เบ‚เบฐเบšเบงเบ™เบเบฒเบ™ PHP เปเบฅเบฐเป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒ. เบกเบตเบชเบฒเบกเบฅเบฑเบเบชเบฐเบ™เบฐเบ—เบตเปˆเบ„เบงเบ™เป€เบญเบปเบฒเปƒเบˆเปƒเบชเปˆ:

  • เบเบฒเบ™เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™ Namespace เบ–เบทเบเบเปเบฒเบ™เบปเบ”เป‚เบ”เบเป€เบ‡เบทเปˆเบญเบ™เป„เบ‚, เป‚เบ”เบเบญเบตเบ‡เปƒเบชเปˆเบเบฒเบ™เบเบงเบ”เบชเบญเบšเบงเปˆเบฒ script เปเบฅเปˆเบ™เบขเบนเปˆเปƒเบ™ container. เบญเบฑเบ™เบ™เบตเป‰เป€เบ›เบฑเบ™เบชเบดเปˆเบ‡เบˆเปเบฒเป€เบ›เบฑเบ™เป€เบžเบฒเบฐเบงเปˆเบฒเบเบฒเบ™เบ•เบดเบ”เบ•เบฑเป‰เบ‡เบ•เบนเป‰เบ„เบญเบ™เป€เบ—เบ™เป€เบ™เบตเบชเปˆเบงเบ™เปƒเบซเบเปˆเบšเปเปˆเบฎเบญเบ‡เบฎเบฑเบšเบเบฒเบ™เปเบฅเปˆเบ™เบžเบฒเบŠเบฐเบ™เบฐเบ—เบตเปˆเบงเบฒเบ‡เป„เบงเป‰.
  • เบ–เป‰เบฒเบกเบตเบเบฒเบ™เบฎเบญเบ‡เบฎเบฑเบš namespaces, namespace เบˆเบฐเบ–เบทเบเบ›เบดเบ”เปƒเบŠเป‰เบ‡เบฒเบ™ เป€เบ„เบทเบญเบ‚เปˆเบฒเบ. เบ™เบตเป‰เปเบกเปˆเบ™เบชเบดเปˆเบ‡เบˆเปเบฒเป€เบ›เบฑเบ™เป€เบžเบทเปˆเบญเบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰ WordPress เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเบžเป‰เบญเบกเป†เบเบฑเบ™เบเบฑเบšเบˆเบธเบ”เบชเบดเป‰เบ™เบชเบธเบ”เปเบฅเบฐเบชเบฒเบกเบฒเบ”เป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡เป„เบ”เป‰เปƒเบ™เบญเบดเบ™เป€เบ•เบตเป€เบ™เบฑเบ”.
  • เบˆเปเบฒเบ™เบงเบ™เบชเบนเบ‡เบชเบธเบ”เบ‚เบญเบ‡เบ‚เบฐเบšเบงเบ™เบเบฒเบ™เบ–เบทเบเบเปเบฒเบ™เบปเบ”เบ”เบฑเปˆเบ‡เบ•เปเปˆเป„เบ›เบ™เบตเป‰: (เบซเบ™เปˆเบงเบเบ„เบงเบฒเบกเบˆเปเบฒเบ—เบตเปˆเบกเบตเบขเบนเปˆเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เปเบฅเปˆเบ™ MariaDB เปเบฅเบฐ NGINX Uniy)/(เบˆเปเบฒเบเบฑเบ” RAM เปƒเบ™ PHP + 5)
    เบ„เปˆเบฒเบ™เบตเป‰เบ–เบทเบเบเปเบฒเบ™เบปเบ”เป„เบงเป‰เปƒเบ™เบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเบซเบ™เปˆเบงเบเบ‡เบฒเบ™ NGINX.

เบกเบนเบ™เบ„เปˆเบฒเบ™เบตเป‰เบเบฑเบ‡เบซเบกเบฒเบเบ„เบงเบฒเบกเบงเปˆเบฒเบกเบตเบขเปˆเบฒเบ‡เบซเบ™เป‰เบญเบเบชเบญเบ‡เบ‚เบฐเบšเบงเบ™เบเบฒเบ™ PHP เป€เบฎเบฑเบ”เบงเบฝเบ, เป€เบŠเบดเปˆเบ‡เป€เบ›เบฑเบ™เบชเบดเปˆเบ‡เบชเปเบฒเบ„เบฑเบ™เป€เบžเบฒเบฐเบงเปˆเบฒ WordPress เป€เบฎเบฑเบ”เบเบฒเบ™เบฎเป‰เบญเบ‡เบ‚เป asynchronous เบซเบผเบฒเบเบเบฑเบšเบ•เบปเบงเบกเบฑเบ™เป€เบญเบ‡, เปเบฅเบฐเบšเปเปˆเบกเบตเบ‚เบฐเบšเบงเบ™เบเบฒเบ™เป€เบžเบตเปˆเบกเป€เบ•เบตเบกเบ—เบตเปˆเป€เบฎเบฑเบ”เบงเบฝเบ, เบ•เบปเบงเบขเปˆเบฒเบ‡, WP-Cron เบˆเบฐเปเบ•เบ. เบ—เปˆเบฒเบ™เบญเบฒเบ”เบˆเบฐเบ•เป‰เบญเบ‡เบเบฒเบ™เป€เบžเบตเปˆเบกเบซเบผเบทเบซเบผเบธเบ”เบฅเบปเบ‡เบ‚เปเป‰เบˆเปเบฒเบเบฑเบ”เป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เป‚เบ”เบเบญเบตเบ‡เปƒเบชเปˆเบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเบ—เป‰เบญเบ‡เบ–เบดเปˆเบ™เบ‚เบญเบ‡เบ—เปˆเบฒเบ™, เป€เบžเบฒเบฐเบงเปˆเบฒเบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเบ—เบตเปˆเบชเป‰เบฒเบ‡เบ‚เบถเป‰เบ™เบ™เบตเป‰เปเบกเปˆเบ™เปเบšเบšเบญเบฐเบ™เบธเบฅเบฑเบ. เปƒเบ™เบฅเบฐเบšเบปเบšเบเบฒเบ™เบœเบฐเบฅเบดเบ”เบชเปˆเบงเบ™เปƒเบซเบเปˆ, เบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเปเบกเปˆเบ™เบฅเบฐเบซเบงเปˆเบฒเบ‡ 10 เบซเบฒ 100.

เบฅเบฐเบซเบฑเบ”เบชเบฐเบ„เบฃเบดเบš

if [ "${container:-unknown}" != "lxc" ] && [ "$(grep -m1 -a container=lxc /proc/1/environ | tr -d '')" == "" ]; then
  NAMESPACES='"namespaces": {
        "cgroup": true,
        "credential": true,
        "mount": true,
        "network": false,
        "pid": true,
        "uname": true
    }'
else
  NAMESPACES='"namespaces": {}'
fi

PHP_MEM_LIMIT="$(grep 'memory_limit' /etc/php/7.4/embed/php.ini | tr -d ' ' | cut -f2 -d= | numfmt --from=iec)"
AVAIL_MEM="$(grep MemAvailable /proc/meminfo | tr -d ' kB' | cut -f2 -d: | numfmt --from-unit=K)"
MAX_PHP_PROCESSES="$(echo "${AVAIL_MEM}/${PHP_MEM_LIMIT}+5" | bc)"
echo " Calculated the maximum number of PHP processes as ${MAX_PHP_PROCESSES}. You may want to tune this value due to variations in your configuration. It is not unusual to see values between 10-100 in production configurations."

echo " Configuring NGINX Unit to use PHP and WordPress"
cat > /tmp/wordpress.json << EOM
{
  "settings": {
    "http": {
      "header_read_timeout": 30,
      "body_read_timeout": 30,
      "send_timeout": 30,
      "idle_timeout": 180,
      "max_body_size": $(numfmt --from=iec ${UPLOAD_MAX_FILESIZE})
    }
  },
  "listeners": {
    "127.0.0.1:8080": {
      "pass": "routes/wordpress"
    }
  },
  "routes": {
    "wordpress": [
      {
        "match": {
          "uri": [
            "*.php",
            "*.php/*",
            "/wp-admin/"
          ]
        },
        "action": {
          "pass": "applications/wordpress/direct"
        }
      },
      {
        "action": {
          "share": "/var/www/wordpress",
          "fallback": {
            "pass": "applications/wordpress/index"
          }
        }
      }
    ]
  },
  "applications": {
    "wordpress": {
      "type": "php",
      "user": "www-data",
      "group": "www-data",
      "processes": {
        "max": ${MAX_PHP_PROCESSES},
        "spare": 1
      },
      "isolation": {
        ${NAMESPACES}
      },
      "targets": {
        "direct": {
          "root": "/var/www/wordpress/"
        },
        "index": {
          "root": "/var/www/wordpress/",
          "script": "index.php"
        }
      }
    }
  }
}
EOM

curl -X PUT --data-binary @/tmp/wordpress.json --unix-socket /run/control.unit.sock http://localhost/config

เบ•เบฑเป‰เบ‡เบ„เปˆเบฒ NGINX

เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒ NGINX เบžเบทเป‰เบ™เบ–เบฒเบ™

script เบชเป‰เบฒเบ‡เป„เบ”เป€เบฅเบเบฐเบ—เปเบฅเบตเบชเปเบฒเบฅเบฑเบš cache NGINX เปเบฅเบฐเบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบชเป‰เบฒเบ‡เป„เบŸเบฅเปŒเบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเบ•เบปเป‰เบ™เบ•เป nginx.conf. เป€เบญเบปเบฒเปƒเบˆเปƒเบชเปˆเบเบฑเบšเบˆเปเบฒเบ™เบงเบ™เบ‚เบญเบ‡เบ‚เบฐเบšเบงเบ™เบเบฒเบ™ handler เปเบฅเบฐเบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเบ‚เบฐเบซเบ™เบฒเบ”เป„เบŸเบฅเปŒเบชเบนเบ‡เบชเบธเบ”เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ”เบฒเบงเป‚เบซเบผเบ”. เบเบฑเบ‡เบกเบตเป€เบชเบฑเป‰เบ™เบ—เบตเปˆเป„เบŸเบฅเปŒเบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเบเบฒเบ™เบšเบตเบšเบญเบฑเบ”, เบเปเบฒเบ™เบปเบ”เป„เบงเป‰เปƒเบ™เบžเบฒเบเบ•เปเปˆเป„เบ›, เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆ, เบ•เบดเบ”เบ•เบฒเบกเบ”เป‰เบงเบเบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเบ–เบฒเบ™เบ„เบงเบฒเบกเบˆเปเบฒ.

เบฅเบฐเบซเบฑเบ”เบชเบฐเบ„เบฃเบดเบš

# Make directory for NGINX cache
mkdir -p /var/cache/nginx/proxy

echo " Configuring NGINX"
cat > ${NGINX_CONF_DIR}/nginx.conf << EOM
user nginx;
worker_processes auto;
error_log  /var/log/nginx/error.log warn;
pid        /var/run/nginx.pid;
events {
    worker_connections  1024;
}
http {
    include       ${NGINX_CONF_DIR}/mime.types;
    default_type  application/octet-stream;
    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';
    access_log  /var/log/nginx/access.log  main;
    sendfile        on;
    client_max_body_size ${UPLOAD_MAX_FILESIZE};
    keepalive_timeout  65;
    # gzip settings
    include ${NGINX_CONF_DIR}/gzip_compression.conf;
    # Cache settings
    proxy_cache_path /var/cache/nginx/proxy
        levels=1:2
        keys_zone=wp_cache:10m
        max_size=10g
        inactive=60m
        use_temp_path=off;
    include ${NGINX_CONF_DIR}/conf.d/*.conf;
}
EOM

เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเบเบฒเบ™เบšเบตเบšเบญเบฑเบ” NGINX

เบเบฒเบ™เบšเบตเบšเบญเบฑเบ”เป€เบ™เบทเป‰เบญเบซเบฒเปƒเบ™เบเบฒเบ™เบšเบดเบ™เบเปˆเบญเบ™เบ—เบตเปˆเบˆเบฐเบชเบปเปˆเบ‡เปƒเบซเป‰เบฅเบนเบเบ„เป‰เบฒเป€เบ›เบฑเบ™เบงเบดเบ—เบตเบ—เบตเปˆเบ”เบตเบ—เบตเปˆเบˆเบฐเบ›เบฑเบšเบ›เบธเบ‡เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เป€เบงเบฑเบšเป„เบŠเบ—เปŒ, เปเบ•เปˆเบงเปˆเบฒเบžเบฝเบ‡เปเบ•เปˆเบ–เป‰เบฒเบเบฒเบ™เบšเบตเบšเบญเบฑเบ”เบ–เบทเบเบ•เบฑเป‰เบ‡เบ„เปˆเบฒเบขเปˆเบฒเบ‡เบ–เบทเบเบ•เป‰เบญเบ‡. เบžเบฒเบเบชเปˆเบงเบ™เบ‚เบญเบ‡เบชเบฐเบ„เบฃเบดเบšเบ™เบตเป‰เปเบกเปˆเบ™เบญเบตเบ‡เปƒเบชเปˆเบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒ เบˆเบฒเบเบ™เบตเป‰.

เบฅเบฐเบซเบฑเบ”เบชเบฐเบ„เบฃเบดเบš

cat > ${NGINX_CONF_DIR}/gzip_compression.conf << 'EOM'
# Credit: https://github.com/h5bp/server-configs-nginx/
# ----------------------------------------------------------------------
# | Compression                                                        |
# ----------------------------------------------------------------------
# https://nginx.org/en/docs/http/ngx_http_gzip_module.html
# Enable gzip compression.
# Default: off
gzip on;
# Compression level (1-9).
# 5 is a perfect compromise between size and CPU usage, offering about 75%
# reduction for most ASCII files (almost identical to level 9).
# Default: 1
gzip_comp_level 6;
# Don't compress anything that's already small and unlikely to shrink much if at
# all (the default is 20 bytes, which is bad as that usually leads to larger
# files after gzipping).
# Default: 20
gzip_min_length 256;
# Compress data even for clients that are connecting to us via proxies,
# identified by the "Via" header (required for CloudFront).
# Default: off
gzip_proxied any;
# Tell proxies to cache both the gzipped and regular version of a resource
# whenever the client's Accept-Encoding capabilities header varies;
# Avoids the issue where a non-gzip capable client (which is extremely rare
# today) would display gibberish if their proxy gave them the gzipped version.
# Default: off
gzip_vary on;
# Compress all output labeled with one of the following MIME-types.
# `text/html` is always compressed by gzip module.
# Default: text/html
gzip_types
  application/atom+xml
  application/geo+json
  application/javascript
  application/x-javascript
  application/json
  application/ld+json
  application/manifest+json
  application/rdf+xml
  application/rss+xml
  application/vnd.ms-fontobject
  application/wasm
  application/x-web-app-manifest+json
  application/xhtml+xml
  application/xml
  font/eot
  font/otf
  font/ttf
  image/bmp
  image/svg+xml
  text/cache-manifest
  text/calendar
  text/css
  text/javascript
  text/markdown
  text/plain
  text/xml
  text/vcard
  text/vnd.rim.location.xloc
  text/vtt
  text/x-component
  text/x-cross-domain-policy;
EOM

เบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒ NGINX เบชเปเบฒเบฅเบฑเบš WordPress

เบ•เปเปˆเป„เบ›, script เบชเป‰เบฒเบ‡เป„เบŸเบฅเปŒเบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเบชเปเบฒเบฅเบฑเบš WordPress default.conf เปƒเบ™เบฅเบฒเบเบเบฒเบ™ conf.d. เบ™เบตเป‰โ€‹เปเบกเปˆเบ™โ€‹เบเบฒเบ™โ€‹เบ•เบฑเป‰เบ‡โ€‹เบ„เปˆเบฒโ€‹:

  • เบเบฒเบ™เป€เบ›เบตเบ”เปƒเบŠเป‰เปƒเบšเบขเบฑเป‰เบ‡เบขเบทเบ™ TLS เบ—เบตเปˆเป„เบ”เป‰เบฎเบฑเบšเบˆเบฒเบ Let's Encrypt เบœเปˆเบฒเบ™ Certbot (เบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเบกเบฑเบ™เบˆเบฐเบขเบนเปˆเปƒเบ™เบžเบฒเบเบ•เปเปˆเป„เบ›)
  • เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเบ„เบงเบฒเบกเบ›เบญเบ”เป„เบž TLS เบญเบตเบ‡เบ•เบฒเบกเบ„เปเบฒเปเบ™เบฐเบ™เปเบฒเบˆเบฒเบ Let's Encrypt
  • เป€เบ›เบตเบ”เปƒเบŠเป‰เปเบ„เบ”เบ„เบณเบฎเป‰เบญเบ‡เบ‚เปเบ‚เป‰เบฒเบกเป€เบงเบฅเบฒ 1 เบŠเบปเปˆเบงเป‚เบกเบ‡เบ•เบฒเบกเบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™
  • เบ›เบดเบ”เบเบฒเบ™เป€เบ‚เบปเป‰เบฒเปƒเบŠเป‰เบเบฒเบ™เบšเบฑเบ™เบ—เบถเบ, เป€เบŠเบฑเปˆเบ™เบ”เบฝเบงเบเบฑเบ™เบเบฑเบšเบเบฒเบ™เบšเบฑเบ™เบ—เบถเบเบ„เบงเบฒเบกเบœเบดเบ”เบžเบฒเบ”เบ–เป‰เบฒเป„เบŸเบฅเปŒเบšเปเปˆเบžเบปเบš, เบชเปเบฒเบฅเบฑเบšเบชเบญเบ‡เป„เบŸเบฅเปŒเบ—เบตเปˆเบฎเป‰เบญเบ‡เบ‚เปเบ—เบปเปˆเบงเป„เบ›: favicon.ico เปเบฅเบฐ robots.txt
  • เบ›เบฐเบ•เบดเป€เบชเบ”เบเบฒเบ™เป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡เป„เบŸเบฅเปŒเบ—เบตเปˆเป€เบŠเบทเปˆเบญเบ‡เป„เบงเป‰ เปเบฅเบฐเบšเบฒเบ‡เป„เบŸเบฅเปŒ phpเป€เบžเบทเปˆเบญเบ›เป‰เบญเบ‡เบเบฑเบ™เบเบฒเบ™เป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡เบ—เบตเปˆเบœเบดเบ”เบเบปเบ”เบซเบกเบฒเบเบซเบผเบทเบเบฒเบ™เป€เบ›เบตเบ”เบ•เบปเบงเป‚เบ”เบเบšเปเปˆเป„เบ”เป‰เบ•เบฑเป‰เบ‡เปƒเบˆ
  • เบ›เบดเบ”เบเบฒเบ™เป€เบ‚เบปเป‰เบฒเปƒเบŠเป‰เบเบฒเบ™เบšเบฑเบ™เบ—เบถเบเบชเปเบฒเบฅเบฑเบšเป„เบŸเบฅเปŒเบ„เบปเบ‡เบ—เบตเปˆ เปเบฅเบฐเบŸเบญเบ™
  • เบเบฒเบ™โ€‹เบ•เบฑเป‰เบ‡โ€‹เบ„เปˆเบฒโ€‹เบซเบปเบงโ€‹เบ‚เปเป‰โ€‹ Access-Control-Allow-Origin เบชเปเบฒเบฅเบฑเบšเป„เบŸเบฅเปŒ font
  • เป€เบžเบตเปˆเบกเป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡เบชเปเบฒเบฅเบฑเบš index.php เปเบฅเบฐ statics เบญเบทเปˆเบ™เป†.

เบฅเบฐเบซเบฑเบ”เบชเบฐเบ„เบฃเบดเบš

cat > ${NGINX_CONF_DIR}/conf.d/default.conf << EOM
upstream unit_php_upstream {
    server 127.0.0.1:8080;
    keepalive 32;
}
server {
    listen 80;
    listen [::]:80;
    # ACME-challenge used by Certbot for Let's Encrypt
    location ^~ /.well-known/acme-challenge/ {
      root /var/www/certbot;
    }
    location / {
      return 301 https://${TLS_HOSTNAME}$request_uri;
    }
}
server {
    listen      443 ssl http2;
    listen [::]:443 ssl http2;
    server_name ${TLS_HOSTNAME};
    root        /var/www/wordpress/;
    # Let's Encrypt configuration
    ssl_certificate         ${CERT_DIR}/fullchain.pem;
    ssl_certificate_key     ${CERT_DIR}/privkey.pem;
    ssl_trusted_certificate ${CERT_DIR}/chain.pem;
    include ${NGINX_CONF_DIR}/options-ssl-nginx.conf;
    ssl_dhparam ${NGINX_CONF_DIR}/ssl-dhparams.pem;
    # OCSP stapling
    ssl_stapling on;
    ssl_stapling_verify on;
    # Proxy caching
    proxy_cache wp_cache;
    proxy_cache_valid 200 302 1h;
    proxy_cache_valid 404 1m;
    proxy_cache_revalidate on;
    proxy_cache_background_update on;
    proxy_cache_lock on;
    proxy_cache_use_stale error timeout http_500 http_502 http_503 http_504;
    location = /favicon.ico {
        log_not_found off;
        access_log off;
    }
    location = /robots.txt {
        allow all;
        log_not_found off;
        access_log off;
    }

    # Deny all attempts to access hidden files such as .htaccess, .htpasswd,
    # .DS_Store (Mac)
    # Keep logging the requests to parse later (or to pass to firewall utilities
    # such as fail2ban)
    location ~ /. {
        deny all;
    }
    # Deny access to any files with a .php extension in the uploads directory;
    # works in subdirectory installs and also in multi-site network.
    # Keep logging the requests to parse later (or to pass to firewall utilities
    # such as fail2ban).
    location ~* /(?:uploads|files)/.*.php$ {
        deny all;
    }
    # WordPress: deny access to wp-content, wp-includes PHP files
    location ~* ^/(?:wp-content|wp-includes)/.*.php$ {
        deny all;
    }
    # Deny public access to wp-config.php
    location ~* wp-config.php {
        deny all;
    }
    # Do not log access for static assets, media
    location ~* .(?:css(.map)?|js(.map)?|jpe?g|png|gif|ico|cur|heic|webp|tiff?|mp3|m4a|aac|ogg|midi?|wav|mp4|mov|webm|mpe?g|avi|ogv|flv|wmv)$ {
        access_log off;
    }
    location ~* .(?:svgz?|ttf|ttc|otf|eot|woff2?)$ {
        add_header Access-Control-Allow-Origin "*";
        access_log off;
    }
    location / {
        try_files $uri @index_php;
    }
    location @index_php {
        proxy_socket_keepalive on;
        proxy_http_version 1.1;
        proxy_set_header Connection "";
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_set_header Host $host;
        proxy_pass       http://unit_php_upstream;
    }
    location ~* .php$ {
        proxy_socket_keepalive on;
        proxy_http_version 1.1;
        proxy_set_header Connection "";
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_set_header Host $host;
        try_files        $uri =404;
        proxy_pass       http://unit_php_upstream;
    }
}
EOM

เบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒ Certbot เบชเปเบฒเบฅเบฑเบš Let's Encrypt เปƒเบšเบขเบฑเป‰เบ‡เบขเบทเบ™เปเบฅเบฐเบเบฒเบ™เบ•เปเปˆเบญเบฒเบเบธเบญเบฑเบ”เบ•เบฐเป‚เบ™เบกเบฑเบ”

เปƒเบšเบขเบฑเป‰เบ‡เบขเบทเบ™ เป€เบ›เบฑเบ™เป€เบ„เบทเปˆเบญเบ‡เบกเบทเบŸเบฃเบตเบˆเบฒเบเบกเบนเบ™เบ™เบดเบ—เบด Electronic Frontier (EFF) เบ—เบตเปˆเบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰เบ—เปˆเบฒเบ™เป„เบ”เป‰เบฎเบฑเบš เปเบฅเบฐเบ•เปเปˆเบญเบฒเบเบธเปƒเบšเบขเบฑเป‰เบ‡เบขเบทเบ™ TLS เป‚เบ”เบเบญเบฑเบ”เบ•เบฐเป‚เบ™เบกเบฑเบ”เบˆเบฒเบ Let's Encrypt. เบชเบฐเบ„เบฃเบดเบšเบ›เบฐเบ•เบดเบšเบฑเบ”เบ‚เบฑเป‰เบ™เบ•เบญเบ™เบ•เปเปˆเป„เบ›เบ™เบตเป‰เป€เบžเบทเปˆเบญเบ•เบฑเป‰เบ‡เบ„เปˆเบฒ Certbot เป€เบžเบทเปˆเบญเบ›เบฐเบกเบงเบ™เบœเบปเบ™เปƒเบšเบขเบฑเป‰เบ‡เบขเบทเบ™เบˆเบฒเบ Let's Encrypt เปƒเบ™ NGINX:

  • เบขเบธเบ” NGINX
  • เบ”เบฒเบงเป‚เบซเบฅเบ”เบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒ TLS เปเบ™เบฐเบ™เปเบฒ
  • เปเบฅเปˆเบ™ Certbot เป€เบžเบทเปˆเบญเปƒเบซเป‰เป„เบ”เป‰เบฎเบฑเบšเปƒเบšเบขเบฑเป‰เบ‡เบขเบทเบ™เบชเปเบฒเบฅเบฑเบšเป€เบงเบฑเบšเป„เบŠเบ—เปŒ
  • เบฃเบตเบชเบฐเบ•เบฒเบ” NGINX เป€เบžเบทเปˆเบญเปƒเบŠเป‰เปƒเบšเบฎเบฑเบšเบฎเบญเบ‡
  • เบ•เบฑเป‰เบ‡เบ„เปˆเบฒ Certbot เป€เบฎเบฑเบ”เบงเบฝเบเบ›เบฐเบˆเปเบฒเบงเบฑเบ™เปƒเบ™เป€เบงเบฅเบฒ 3:24 เป‚เบกเบ‡เป€เบŠเบปเป‰เบฒเป€เบžเบทเปˆเบญเบเบงเบ”เป€เบšเบดเปˆเบ‡เบเบฒเบ™เบ•เปเปˆเบญเบฒเบเบธเปƒเบšเบขเบฑเป‰เบ‡เบขเบทเบ™เปเบฅเบฐ, เบ–เป‰เบฒเบˆเปเบฒเป€เบ›เบฑเบ™, เบ”เบฒเบงเป‚เบซเบฅเบ”เปƒเบšเบขเบฑเป‰เบ‡เบขเบทเบ™เปƒเบซเบกเปˆเปเบฅเบฐเบ›เบดเบ” NGINX เบ„เบทเบ™เปƒเปเปˆ.

เบฅเบฐเบซเบฑเบ”เบชเบฐเบ„เบฃเบดเบš

echo " Stopping NGINX in order to set up Let's Encrypt"
service nginx stop

mkdir -p /var/www/certbot
chown www-data:www-data /var/www/certbot
chmod g+s /var/www/certbot

if [ ! -f ${NGINX_CONF_DIR}/options-ssl-nginx.conf ]; then
  echo " Downloading recommended TLS parameters"
  curl --retry 6 -Ls -z "Tue, 14 Apr 2020 16:36:07 GMT" 
    -o "${NGINX_CONF_DIR}/options-ssl-nginx.conf" 
    "https://raw.githubusercontent.com/certbot/certbot/master/certbot-nginx/certbot_nginx/_internal/tls_configs/options-ssl-nginx.conf" 
    || echo "Couldn't download latest options-ssl-nginx.conf"
fi

if [ ! -f ${NGINX_CONF_DIR}/ssl-dhparams.pem ]; then
  echo " Downloading recommended TLS DH parameters"
  curl --retry 6 -Ls -z "Tue, 14 Apr 2020 16:49:18 GMT" 
    -o "${NGINX_CONF_DIR}/ssl-dhparams.pem" 
    "https://raw.githubusercontent.com/certbot/certbot/master/certbot/certbot/ssl-dhparams.pem" 
    || echo "Couldn't download latest ssl-dhparams.pem"
fi

# If tls_certs_init.sh hasn't been run before, remove the self-signed certs
if [ ! -d "/etc/letsencrypt/accounts" ]; then
  echo " Removing self-signed certificates"
  rm -rf "${CERT_DIR}"
fi

if [ "" = "${LETS_ENCRYPT_STAGING:-}" ] || [ "0" = "${LETS_ENCRYPT_STAGING}" ]; then
  CERTBOT_STAGING_FLAG=""
else
  CERTBOT_STAGING_FLAG="--staging"
fi

if [ ! -f "${CERT_DIR}/fullchain.pem" ]; then
  echo " Generating certificates with Let's Encrypt"
  certbot certonly --standalone 
         -m "${WORDPRESS_ADMIN_EMAIL}" 
         ${CERTBOT_STAGING_FLAG} 
         --agree-tos --force-renewal --non-interactive 
         -d "${TLS_HOSTNAME}"
fi

echo " Starting NGINX in order to use new configuration"
service nginx start

# Write crontab for periodic Let's Encrypt cert renewal
if [ "$(crontab -l | grep -m1 'certbot renew')" == "" ]; then
  echo " Adding certbot to crontab for automatic Let's Encrypt renewal"
  (crontab -l 2>/dev/null; echo "24 3 * * * certbot renew --nginx --post-hook 'service nginx reload'") | crontab -
fi

เบเบฒเบ™เบ›เบฑเบšเปเบ•เปˆเบ‡เป€เบžเบตเปˆเบกเป€เบ•เบตเบกเบ‚เบญเบ‡เป€เบงเบฑเบšเป„เบŠเบ‚เบญเบ‡เบ—เปˆเบฒเบ™

เบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เป€เบงเบปเป‰เบฒเบ‚เป‰เบฒเบ‡เป€เบ—เบดเบ‡เบเปˆเบฝเบงเบเบฑเบšเบงเบดเบ—เบตเบเบฒเบ™เบชเบฐเบ„เบฃเบดเบšเบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเบเปเบฒเบ™เบปเบ” NGINX เปเบฅเบฐ NGINX Unit เป€เบžเบทเปˆเบญเปƒเบซเป‰เบšเปเบฅเบดเบเบฒเบ™เป€เบงเบฑเบšเป„เบŠเบ—เปŒเบ—เบตเปˆเบเบฝเบกเบžเป‰เบญเบกเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบœเบฐเบฅเบดเบ”เป‚เบ”เบเป€เบ›เบตเบ”เปƒเบŠเป‰ TLSSSL. เบ—เปˆเบฒเบ™เบญเบฒเบ”เบˆเบฐ, เบ‚เบถเป‰เบ™เบเบฑเบšเบ„เบงเบฒเบกเบ•เป‰เบญเบ‡เบเบฒเบ™เบ‚เบญเบ‡เบ—เปˆเบฒเบ™, เป€เบžเบตเปˆเบกเปƒเบ™เบญเบฐเบ™เบฒเบ„เบปเบ”:

  • เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™ Brotli, เบ›เบฑเบšเบ›เบธเบ‡เบเบฒเบ™เบšเบตเบšเบญเบฑเบ”เปƒเบ™เป€เบงเบฅเบฒเบšเบดเบ™เบœเปˆเบฒเบ™ HTTPS
  • เบ„เบงเบฒเบกเบ›เบญเบ”เป„เบž Mod ั เบเบปเบ”เบฅเบฐเบšเบฝเบšเบชเปเบฒเบฅเบฑเบš WordPressเป€เบžเบทเปˆเบญเบ›เป‰เบญเบ‡เบเบฑเบ™เบเบฒเบ™เป‚เบˆเบกเบ•เบตเบญเบฑเบ”เบ•เบฐเป‚เบ™เบกเบฑเบ”เบขเบนเปˆเปƒเบ™เป€เบงเบฑเบšเป„เบŠเบ‚เบญเบ‡เบ—เปˆเบฒเบ™
  • เบชเบณ เบฎเบญเบ‡ เบชเปเบฒเบฅเบฑเบš WordPress, เป€เบซเบกเบฒเบฐเบชเปเบฒเบฅเบฑเบšเบ—เปˆเบฒเบ™
  • เบเบฒเบ™เบ›เบปเบเบ›เป‰เบญเบ‡ เป‚เบ”เบเบเบฒเบ™เบŠเปˆเบงเบเป€เบซเบผเบทเบญ AppArmor (เปƒเบ™ Ubuntu)
  • Postfix เบซเบผเบท msmtp เป€เบžเบทเปˆเบญเปƒเบซเป‰ WordPress เบชเบฒเบกเบฒเบ”เบชเบปเปˆเบ‡เบญเบตเป€เบกเบงเป„เบ”เป‰
  • เบเบงเบ”เป€เบšเบดเปˆเบ‡เป€เบงเบฑเบšเป„เบŠเบ‚เบญเบ‡เป€เบˆเบปเป‰เบฒเป€เบžเบทเปˆเบญเปƒเบซเป‰เป€เบˆเบปเป‰เบฒเป€เบ‚เบปเป‰เบฒเปƒเบˆเบงเปˆเบฒเบกเบฑเบ™เบชเบฒเบกเบฒเบ”เบˆเบฑเบ”เบเบฒเบ™เบเบฑเบšเบเบฒเบ™เบˆเบฐเบฅเบฒเบˆเบญเบ™เป„เบ”เป‰เบซเบผเบฒเบเบ›เบฒเบ™เปƒเบ”

เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เป€เบงเบฑเบšเป„เบŠเบ—เปŒเบ—เบตเปˆเบ”เบตเบเบงเปˆเบฒ, เบžเบงเบเป€เบฎเบปเบฒเปเบ™เบฐเบ™เปเบฒเปƒเบซเป‰เบญเบฑเบšเป€เบเบฃเบ”เป€เบ›เบฑเบ™ NGINX Plus, เบœเบฐเบฅเบดเบ”เบ•เบฐเบžเบฑเบ™เบเบฒเบ™เบ„เป‰เบฒเบฅเบฐเบ”เบฑเบšเบงเบดเบชเบฒเบซเบฐเบเบดเบ”เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเป‚เบ”เบเบญเบตเบ‡เปƒเบชเปˆเปเบซเบผเปˆเบ‡เป€เบ›เบตเบ” NGINX. เบœเบนเป‰เบˆเบญเบ‡เบ‚เบญเบ‡เบกเบฑเบ™เบˆเบฐเป„เบ”เป‰เบฎเบฑเบšเป‚เบกเบ”เบนเบ™ Brotli เบ—เบตเปˆเบกเบตเบเบฒเบ™เป‚เบซเบผเบ”เปเบšเบšเป€เบ„เบทเปˆเบญเบ™เป„เบซเบง, เป€เบŠเบฑเปˆเบ™เบ”เบฝเบงเบเบฑเบ™เบเบฑเบš (เบชเปเบฒเบฅเบฑเบšเบ„เปˆเบฒเบ—เปเบฒเบ™เบฝเบกเป€เบžเบตเปˆเบกเป€เบ•เบตเบก) NGINX ModSecurity WAF. เบžเบงเบเป€เบฎเบปเบฒเบเบฑเบ‡เบชเบฐเป€เบซเบ™เบต NGINX App Protect, เป‚เบกเบ”เบนเบ™ WAF เบชเปเบฒเบฅเบฑเบš NGINX Plus เป‚เบ”เบเบญเบตเบ‡เปƒเบชเปˆเป€เบ•เบฑเบเป‚เบ™เป‚เบฅเบŠเบตเบ„เบงเบฒเบกเบ›เบญเบ”เป„เบžเบŠเบฑเป‰เบ™เบ™เปเบฒเบ‚เบญเบ‡เบญเบธเบ”เบชเบฒเบซเบฐเบเปเบฒเบˆเบฒเบ F5.

NB เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เป€เบงเบฑเบšเป„เบŠเบ—เปŒเบ—เบตเปˆเบกเบตเบเบฒเบ™เป‚เบซเบผเบ”เบชเบนเบ‡, เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบ•เบดเบ”เบ•เปเปˆเบœเบนเป‰เบŠเปˆเบฝเบงเบŠเบฒเบ™ เบžเบฒเบเปƒเบ•เป‰. เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเบฎเบฑเบšเบ›เบฐเบเบฑเบ™เบเบฒเบ™เบ”เปเบฒเป€เบ™เบตเบ™เบ‡เบฒเบ™เป„เบงเปเบฅเบฐเป€เบŠเบทเปˆเบญเบ–เบทเป„เบ”เป‰เบ‚เบญเบ‡เป€เบงเบฑเบšเป„เบŠเบ—เปŒเบซเบผเบทเบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™เบ‚เบญเบ‡เบ—เปˆเบฒเบ™เบžเบฒเบเปƒเบ•เป‰เบเบฒเบ™เป‚เบซเบผเบ”เปƒเบ”เป†.

เปเบซเบผเปˆเบ‡เบ‚เปเป‰เบกเบนเบ™: www.habr.com