NGINX เชฏเซเชจเชฟเชŸ เช…เชจเซ‡ เช‰เชฌเซเชจเซเชŸเซ เชธเชพเชฅเซ‡ เชตเชฐเซเชกเชชเซเชฐเซ‡เชธ เช‡เชจเซเชธเซเชŸเซ‹เชฒเซ‡เชถเชจเชจเซ‡ เชธเซเชตเชšเชพเชฒเชฟเชค เช•เชฐเชตเซเช‚

NGINX เชฏเซเชจเชฟเชŸ เช…เชจเซ‡ เช‰เชฌเซเชจเซเชŸเซ เชธเชพเชฅเซ‡ เชตเชฐเซเชกเชชเซเชฐเซ‡เชธ เช‡เชจเซเชธเซเชŸเซ‹เชฒเซ‡เชถเชจเชจเซ‡ เชธเซเชตเชšเชพเชฒเชฟเชค เช•เชฐเชตเซเช‚

เชตเชฐเซเชกเชชเซเชฐเซ‡เชธ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เช‡เชจเซเชธเซเชŸเซ‹เชฒ เช•เชฐเชตเซเช‚ เชคเซ‡เชจเชพ เชชเชฐ เช˜เชฃเชพ เชŸเซเชฏเซเชŸเซ‹เชฐเชฟเชฏเชฒเซเชธ เช›เซ‡, "WordPress install" เชฎเชพเชŸเซ‡ Google เชถเซ‹เชง เชฒเช—เชญเช— เช…เชกเชงเชพ เชฎเชฟเชฒเชฟเชฏเชจ เชชเชฐเชฟเชฃเชพเชฎเซ‹ เช†เชชเชถเซ‡. เชœเซ‹ เช•เซ‡, เชตเชพเชธเซเชคเชตเชฎเชพเช‚, เชคเซ‡เชฎเชจเซ€ เชตเชšเซเชšเซ‡ เชฌเชนเซ เช“เช›เชพ เชธเชพเชฐเชพ เชฎเชพเชฐเซเช—เชฆเชฐเซเชถเชฟเช•เชพเช“ เช›เซ‡, เชœเซ‡ เชฎเซเชœเชฌ เชคเชฎเซ‡ เชตเชฐเซเชกเชชเซเชฐเซ‡เชธ เช…เชจเซ‡ เช…เช‚เชคเชฐเซเช—เชค เช“เชชเชฐเซ‡เชŸเชฟเช‚เช— เชธเชฟเชธเซเชŸเชฎเชจเซ‡ เช‡เชจเซเชธเซเชŸเซ‹เชฒ เช…เชจเซ‡ เช—เซ‹เช เชตเซ€ เชถเช•เซ‹ เช›เซ‹ เชœเซ‡เชฅเซ€ เชคเซ‡เช“ เชฒเชพเช‚เชฌเชพ เชธเชฎเชฏ เชธเซเชงเซ€ เชธเชชเซ‹เชฐเซเชŸ เช•เชฐเชตเชพเชฎเชพเช‚ เชธเช•เซเชทเชฎ เชนเซ‹เชฏ. เช•เชฆเชพเชš เชฏเซ‹เช—เซเชฏ เชธเซ‡เชŸเชฟเช‚เช—เซเชธ เชšเซ‹เช•เซเช•เชธ เชœเชฐเซ‚เชฐเชฟเชฏเชพเชคเซ‹ เชชเชฐ เช–เซ‚เชฌ เชจเชฟเชฐเซเชญเชฐ เช›เซ‡, เช…เชฅเชตเชพ เช† เช เชนเช•เซ€เช•เชคเชจเซ‡ เช•เชพเชฐเชฃเซ‡ เช›เซ‡ เช•เซ‡ เชตเชฟเช—เชคเชตเชพเชฐ เชธเชฎเชœเซ‚เชคเซ€ เชฒเซ‡เช–เชจเซ‡ เชตเชพเช‚เชšเชตเชพ เชฎเชพเชŸเซ‡ เชฎเซเชถเซเช•เซ‡เชฒ เชฌเชจเชพเชตเซ‡ เช›เซ‡.

เช† เชฒเซ‡เช–เชฎเชพเช‚, เช…เชฎเซ‡ เช‰เชฌเซเชจเซเชŸเซ เชชเชฐ เชตเชฐเซเชกเชชเซเชฐเซ‡เชธเชจเซ‡ เช†เชชเชฎเซ‡เชณเซ‡ เช‡เชจเซเชธเซเชŸเซ‹เชฒ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เชฌเซ‡เชถ เชธเซเช•เซเชฐเชฟเชชเซเชŸ เชชเซเชฐเชฆเชพเชจ เช•เชฐเซ€เชจเซ‡, เชคเซ‡เชฎเชœ เชฆเชฐเซ‡เช• เชญเชพเช— เชถเซเช‚ เช•เชฐเซ‡ เช›เซ‡ เชคเซ‡ เชธเชฎเชœเชพเชตเซ€เชจเซ‡, เชคเซ‡เชฎเชœ เชคเซ‡เชจเซ‡ เชตเชฟเช•เชธเชพเชตเชตเชพเชฎเชพเช‚ เช…เชฎเซ‡ เชœเซ‡ เชธเชฎเชพเชงเชพเชจ เช•เชฐเซเชฏเซเช‚ เช›เซ‡ เชคเซ‡ เชธเชฎเชœเชพเชตเซ€เชจเซ‡ เช…เชฎเซ‡ เชฌเช‚เชจเซ‡ เชตเชฟเชถเซเชตเชจเชพ เชถเซเชฐเซ‡เชทเซเช เชจเซ‡ เชœเซ‹เชกเชตเชพเชจเซ‹ เชชเซเชฐเชฏเชพเชธ เช•เชฐเซ€เชถเซเช‚. . เชœเซ‹ เชคเชฎเซ‡ เช…เชฆเซเชฏเชคเชจ เชตเชชเชฐเชพเชถเช•เชฐเซเชคเชพ เช›เซ‹, เชคเซ‹ เชคเชฎเซ‡ เชฒเซ‡เช–เชจเชพ เชŸเซ‡เช•เซเชธเซเชŸเชจเซ‡ เช›เซ‹เชกเซ€ เชถเช•เซ‹ เช›เซ‹ เช…เชจเซ‡ เชซเช•เซเชค เชธเซเช•เซเชฐเชฟเชชเซเชŸ เชฒเซ‹ เชคเชฎเชพเชฐเชพ เชตเชพเชคเชพเชตเชฐเชฃเชฎเชพเช‚ เชซเซ‡เชฐเชซเชพเชฐ เช…เชจเซ‡ เช‰เชชเชฏเซ‹เช— เชฎเชพเชŸเซ‡. เชธเซเช•เซเชฐเชฟเชชเซเชŸเชจเซเช‚ เช†เช‰เชŸเชชเซเชŸ เชฒเซ‡เชŸเซเชธ เชเชจเซเช•เซเชฐเชฟเชชเซเชŸ เชธเชชเซ‹เชฐเซเชŸ เชธเชพเชฅเซ‡เชจเซเช‚ เช•เชธเซเชŸเชฎ เชตเชฐเซเชกเชชเซเชฐเซ‡เชธ เช‡เชจเซเชธเซเชŸเซ‹เชฒเซ‡เชถเชจ เช›เซ‡, เชœเซ‡ NGINX เชฏเซเชจเชฟเชŸ เชชเชฐ เชšเชพเชฒเซ‡ เช›เซ‡ เช…เชจเซ‡ เช‰เชคเซเชชเชพเชฆเชจ เช‰เชชเชฏเซ‹เช— เชฎเชพเชŸเซ‡ เชฏเซ‹เช—เซเชฏ เช›เซ‡.

NGINX เชฏเซเชจเชฟเชŸเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เชตเชฐเซเชกเชชเซเชฐเซ‡เชธ เชœเชฎเชพเชตเชตเชพ เชฎเชพเชŸเซ‡ เชตเชฟเช•เชธเชฟเชค เช†เชฐเซเช•เชฟเชŸเซ‡เช•เซเชšเชฐเชจเซเช‚ เชตเชฐเซเชฃเชจ เช†เชฎเชพเช‚ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซเชฏเซเช‚ เช›เซ‡ เชœเซ‚เชจเซ‹ เชฒเซ‡เช–, เชนเชตเซ‡ เช†เชชเชฃเซ‡ เชเชตเซ€ เชตเชธเซเชคเซเช“เชจเซ‡ เชชเชฃ เชตเชงเซ เชฐเซ‚เชชเชฐเซ‡เช–เชพเช‚เช•เชฟเชค เช•เชฐเซ€เชถเซเช‚ เชœเซ‡ เชคเซเชฏเชพเช‚ เช†เชตเชฐเซ€ เชฒเซ‡เชตเชพเชฎเชพเช‚ เช†เชตเซ€ เชจ เชนเชคเซ€ (เชœเซ‡เชฎ เช•เซ‡ เช…เชจเซเชฏ เช˜เชฃเชพ เชŸเซเชฏเซเชŸเซ‹เชฐเชฟเชฏเชฒเซเชธเชฎเชพเช‚):

  • เชตเชฐเซเชกเชชเซเชฐเซ‡เชธ CLI
  • เชšเชพเชฒเซ‹ เชเชจเซเช•เซเชฐเชฟเชชเซเชŸ เช•เชฐเซ€เช เช…เชจเซ‡ TLSSSL เชชเซเชฐเชฎเชพเชฃเชชเชคเซเชฐเซ‹
  • เชชเซเชฐเชฎเชพเชฃเชชเชคเซเชฐเซ‹เชจเซเช‚ เช†เชชเชฎเซ‡เชณเซ‡ เชจเชตเซ€เช•เชฐเชฃ
  • NGINX เช•เซ‡เชถเซ€เช‚เช—
  • NGINX เช•เชฎเซเชชเซเชฐเซ‡เชถเชจ
  • HTTPS เช…เชจเซ‡ HTTP/2 เชธเชชเซ‹เชฐเซเชŸ
  • เชชเซเชฐเช•เซเชฐเชฟเชฏเชพ เช“เชŸเซ‹เชฎเซ‡เชถเชจ

เชฒเซ‡เช– เชเช• เชธเชฐเซเชตเชฐ เชชเชฐ เช‡เชจเซเชธเซเชŸเซ‹เชฒเซ‡เชถเชจเชจเซเช‚ เชตเชฐเซเชฃเชจ เช•เชฐเชถเซ‡, เชœเซ‡ เชเช• เชธเชพเชฅเซ‡ เชธเซเชŸเซ‡เชŸเชฟเช• เชชเซเชฐเซ‹เชธเซ‡เชธเชฟเช‚เช— เชธเชฐเซเชตเชฐ, PHP เชชเซเชฐเซ‹เชธเซ‡เชธเชฟเช‚เช— เชธเชฐเซเชตเชฐ เช…เชจเซ‡ เชกเซ‡เชŸเชพเชฌเซ‡เชเชจเซ‡ เชนเซ‹เชธเซเชŸ เช•เชฐเชถเซ‡. เชเช• เช‡เชจเซเชธเซเชŸเซ‹เชฒเซ‡เชถเชจ เช•เซ‡ เชœเซ‡ เชฌเชนเซเชตเชฟเชง เชตเชฐเซเชšเซเชฏเซเช…เชฒ เชนเซ‹เชธเซเชŸ เช…เชจเซ‡ เชธเซ‡เชตเชพเช“เชจเซ‡ เชธเชชเซ‹เชฐเซเชŸ เช•เชฐเซ‡ เช›เซ‡ เชคเซ‡ เชญเชตเชฟเชทเซเชฏ เชฎเชพเชŸเซ‡ เชธเช‚เชญเชตเชฟเชค เชตเชฟเชทเชฏ เช›เซ‡. เชœเซ‹ เชคเชฎเซ‡ เช‡เชšเซเช›เซ‹ เช›เซ‹ เช•เซ‡ เช…เชฎเซ‡ เชเชตเซ€ เช•เซ‹เชˆ เชตเชธเซเชคเซ เชตเชฟเชถเซ‡ เชฒเช–เซ€เช เชœเซ‡ เช† เชฒเซ‡เช–เซ‹เชฎเชพเช‚ เชจเชฅเซ€, เชคเซ‹ เชŸเชฟเชชเซเชชเชฃเซ€เช“เชฎเชพเช‚ เชฒเช–เซ‹.

เชœเชฐเซ‚เชฐเซ€เชฏเชพเชคเซ‹

  • เช•เชจเซเชŸเซ‡เชจเชฐ เชธเชฐเซเชตเชฐ (เชเชฒเชเช•เซเชธเชธเซ€ เช…เชฅเชตเชพ เชเชฒเชเช•เซเชธเชกเซ€), เชตเชฐเซเชšเซเชฏเซเช…เชฒ เชฎเชถเซ€เชจ, เช…เชฅเชตเชพ เช“เช›เชพเชฎเชพเช‚ เช“เช›เซเช‚ 512MB RAM เช…เชจเซ‡ Ubuntu 18.04 เช…เชฅเชตเชพ เชคเซ‡เชจเชพเชฅเซ€ เชจเชตเซเช‚ เช‡เชจเซเชธเซเชŸเซ‹เชฒ เช•เชฐเซ‡เชฒเซเช‚ เชจเชฟเชฏเชฎเชฟเชค เช†เชฏเชฐเซเชจ เชธเชฐเซเชตเชฐ.
  • เชˆเชจเซเชŸเชฐเชจเซ‡เชŸ เชธเซเชฒเชญ เชชเซ‹เชฐเซเชŸ 80 เช…เชจเซ‡ 443
  • เช† เชธเชฐเซเชตเชฐเชจเชพ เชธเชพเชฐเซเชตเชœเชจเชฟเช• เช†เชˆเชชเซ€ เชเชกเซเชฐเซ‡เชธ เชธเชพเชฅเซ‡ เชธเช‚เช•เชณเชพเชฏเซ‡เชฒ เชกเซ‹เชฎเซ‡เชจ เชจเชพเชฎ
  • เชฐเซ‚เชŸ เชเช•เซเชธเซ‡เชธ (เชธเซเชกเซ‹).

เช†เชฐเซเช•เชฟเชŸเซ‡เช•เซเชšเชฐ เชเชพเช‚เช–เซ€

เช†เชฐเซเช•เชฟเชŸเซ‡เช•เซเชšเชฐ เชตเชฐเซเชฃเชตเซเชฏเชพ เชชเซเชฐเชฎเชพเชฃเซ‡ เชœ เช›เซ‡ เช…เช—เชพเช‰, เชคเซเชฐเชฃ-เชธเซเชคเชฐเชจเซ€ เชตเซ‡เชฌ เชเชชเซเชฒเชฟเช•เซ‡เชถเชจ. เชคเซ‡เชฎเชพเช‚ PHP เชธเซเช•เซเชฐเชฟเชชเซเชŸเซเชธเชจเซ‹ เชธเชฎเชพเชตเซ‡เชถ เชฅเชพเชฏ เช›เซ‡ เชœเซ‡ PHP เชเชจเซเชœเชฟเชจ เชชเชฐ เชšเชพเชฒเซ‡ เช›เซ‡ เช…เชจเซ‡ เชตเซ‡เชฌ เชธเชฐเซเชตเชฐ เชฆเซเชตเชพเชฐเชพ เชชเซเชฐเช•เซเชฐเชฟเชฏเชพ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเชคเซ€ เชธเซเชฅเชฟเชฐ เชซเชพเช‡เชฒเซ‹ เช›เซ‡.

NGINX เชฏเซเชจเชฟเชŸ เช…เชจเซ‡ เช‰เชฌเซเชจเซเชŸเซ เชธเชพเชฅเซ‡ เชตเชฐเซเชกเชชเซเชฐเซ‡เชธ เช‡เชจเซเชธเซเชŸเซ‹เชฒเซ‡เชถเชจเชจเซ‡ เชธเซเชตเชšเชพเชฒเชฟเชค เช•เชฐเชตเซเช‚

เชธเชพเชฎเชพเชจเซเชฏ เชธเชฟเชฆเซเชงเชพเช‚เชคเซ‹

  • เชธเซเช•เซเชฐเชฟเชชเซเชŸเชฎเชพเช‚ เช˜เชฃเชพ เชฐเซ‚เชชเชฐเซ‡เช–เชพเช‚เช•เชจ เช†เชฆเซ‡เชถเซ‹ เช†เชตเชฐเชฟเชค เชนเซ‹เชฏ เช›เซ‡ เชœเซ‹ เช†เช‡เชกเชฎเซเชชเซ‹เชŸเซ‡เชจเซเชธเซ€ เชฎเชพเชŸเซ‡เชจเซ€ เชถเชฐเชคเซ‹ เชนเซ‹เชฏ: เชธเซเช•เซเชฐเชฟเชชเซเชŸ เชชเชนเซ‡เชฒเชพเชฅเซ€ เชœ เชธเซเชฅเชพเชจเซ‡ เช›เซ‡ เชคเซ‡ เชธเซ‡เชŸเชฟเช‚เช—เซเชธ เชฌเชฆเชฒเชตเชพเชจเชพ เชœเซ‹เช–เชฎ เชตเชฟเชจเชพ เช˜เชฃเซ€ เชตเช–เชค เชšเชฒเชพเชตเซ€ เชถเช•เชพเชฏ เช›เซ‡.
  • เชธเซเช•เซเชฐเชฟเชชเซเชŸ เชฐเซ€เชชเซ‹เชเซ€เชŸเชฐเซ€เชเชฎเชพเช‚เชฅเซ€ เชธเซ‹เชซเซเชŸเชตเซ‡เชฐ เช‡เชจเซเชธเซเชŸเซ‹เชฒ เช•เชฐเชตเชพเชจเซ‹ เชชเซเชฐเชฏเชพเชธ เช•เชฐเซ‡ เช›เซ‡, เชœเซ‡เชฅเซ€ เชคเชฎเซ‡ เชเช• เช†เชฆเซ‡เชถเชฎเชพเช‚ เชธเชฟเชธเซเชŸเชฎ เช…เชชเชกเซ‡เชŸเซเชธ เชฒเชพเช—เซ เช•เชฐเซ€ เชถเช•เซ‹ (apt upgrade เช‰เชฌเซเชจเซเชŸเซ เชฎเชพเชŸเซ‡).
  • เช†เชฆเซ‡เชถเซ‹ เช เชถเซ‹เชงเชตเชพเชจเซ‹ เชชเซเชฐเชฏเชพเชธ เช•เชฐเซ‡ เช›เซ‡ เช•เซ‡ เชคเซ‡เช“ เช•เชจเซเชŸเซ‡เชจเชฐเชฎเชพเช‚ เชšเชพเชฒเซ€ เชฐเชนเซเชฏเชพ เช›เซ‡ เชœเซ‡เชฅเซ€ เชคเซ‡เช“ เชคเซ‡ เชฎเซเชœเชฌ เชคเซ‡เชฎเชจเซ€ เชธเซ‡เชŸเชฟเช‚เช—เซเชธ เชฌเชฆเชฒเซ€ เชถเช•เซ‡.
  • เชธเซ‡เชŸเชฟเช‚เช—เซเชธเชฎเชพเช‚ เชถเชฐเซ‚ เชฅเซเชฐเซ‡เชก เชชเซเชฐเช•เซเชฐเชฟเชฏเชพเช“เชจเซ€ เชธเช‚เช–เซเชฏเชพ เชธเซ‡เชŸ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡, เชธเซเช•เซเชฐเชฟเชชเซเชŸ เช•เชจเซเชŸเซ‡เชจเชฐ, เชตเชฐเซเชšเซเชฏเซเช…เชฒ เชฎเชถเซ€เชจเซ‹ เช…เชจเซ‡ เชนเชพเชฐเซเชกเชตเซ‡เชฐ เชธเชฐเซเชตเชฐเชฎเชพเช‚ เช•เชพเชฎ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เชธเซเชตเชšเชพเชฒเชฟเชค เชธเซ‡เชŸเชฟเช‚เช—เซเชธเชจเซ‹ เช…เชจเซเชฎเชพเชจ เชฒเช—เชพเชตเชตเชพเชจเซ‹ เชชเซเชฐเชฏเชพเชธ เช•เชฐเซ‡ เช›เซ‡.
  • เชธเซ‡เชŸเชฟเช‚เช—เซเชธเชจเซเช‚ เชตเชฐเซเชฃเชจ เช•เชฐเชคเซ€ เชตเช–เชคเซ‡, เช…เชฎเซ‡ เชนเช‚เชฎเซ‡เชถเชพ เช“เชŸเซ‹เชฎเซ‡เชถเชจ เชตเชฟเชถเซ‡ เชธเซŒ เชชเซเชฐเชฅเชฎ เชตเชฟเชšเชพเชฐเซ€เช เช›เซ€เช, เชœเซ‡, เช…เชฎเชจเซ‡ เช†เชถเชพ เช›เซ‡ เช•เซ‡, เช•เซ‹เชก เชคเชฐเซ€เช•เซ‡ เชคเชฎเชพเชฐเซเช‚ เชชเซ‹เชคเชพเชจเซเช‚ เช‡เชจเซเชซเซเชฐเชพเชธเซเชŸเซเชฐเช•เซเชšเชฐ เชฌเชจเชพเชตเชตเชพ เชฎเชพเชŸเซ‡เชจเซ‹ เช†เชงเชพเชฐ เชฌเชจเชถเซ‡.
  • เชฌเชงเชพ เช†เชฆเซ‡เชถเซ‹ เชตเชชเชฐเชพเชถเช•เชฐเซเชคเชพ เชคเชฐเซ€เช•เซ‡ เชšเชฒเชพเชตเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡ เชฐเซเชŸ, เช•เชพเชฐเชฃ เช•เซ‡ เชคเซ‡เช“ เชฎเซ‚เชณเชญเซ‚เชค เชธเชฟเชธเซเชŸเชฎ เชธเซ‡เชŸเชฟเช‚เช—เซเชธเชจเซ‡ เชฌเชฆเชฒเซ‡ เช›เซ‡, เชชเชฐเช‚เชคเซ เชธเซ€เชงเชพ เชตเชฐเซเชกเชชเซเชฐเซ‡เชธ เชจเชฟเชฏเชฎเชฟเชค เชตเชชเชฐเชพเชถเช•เชฐเซเชคเชพ เชคเชฐเซ€เช•เซ‡ เชšเชพเชฒเซ‡ เช›เซ‡.

เชชเชฐเซเชฏเชพเชตเชฐเชฃ เชšเชฒเซ‹ เชธเซเชฏเซ‹เชœเชฟเชค เช•เชฐเซ€ เชฐเชนเซเชฏเชพ เช›เซ€เช

เชธเซเช•เซเชฐเชฟเชชเซเชŸ เชšเชฒเชพเชตเชคเชพ เชชเชนเซ‡เชฒเชพ เชจเซ€เชšเซ‡เชจเชพ เชชเชฐเซเชฏเชพเชตเชฐเชฃ เชšเชฒเซ‹ เชธเซ‡เชŸ เช•เชฐเซ‹:

  • WORDPRESS_DB_PASSWORD - เชตเชฐเซเชกเชชเซเชฐเซ‡เชธ เชกเซ‡เชŸเชพเชฌเซ‡เช เชชเชพเชธเชตเชฐเซเชก
  • WORDPRESS_ADMIN_USER - เชตเชฐเซเชกเชชเซเชฐเซ‡เชธ เชเชกเชฎเชฟเชจ เชจเชพเชฎ
  • WORDPRESS_ADMIN_PASSWORD - เชตเชฐเซเชกเชชเซเชฐเซ‡เชธ เชเชกเชฎเชฟเชจ เชชเชพเชธเชตเชฐเซเชก
  • WORDPRESS_ADMIN_EMAIL - WordPress เชเชกเชฎเชฟเชจ เช‡เชฎเซ‡เช‡เชฒ
  • WORDPRESS_URL เชตเชฐเซเชกเชชเซเชฐเซ‡เชธ เชธเชพเช‡เชŸเชจเซเช‚ เชธเช‚เชชเซ‚เชฐเซเชฃ URL เช›เซ‡, เชฅเซ€ เชถเชฐเซ‚ เชฅเชพเชฏ เช›เซ‡ https://.
  • LETS_ENCRYPT_STAGING - เชกเชฟเชซเซ‰เชฒเซเชŸ เชฐเซ‚เชชเซ‡ เช–เชพเชฒเซ€, เชชเชฐเช‚เชคเซ เชฎเซ‚เชฒเซเชฏ 1 เชชเชฐ เชธเซ‡เชŸ เช•เชฐเซ€เชจเซ‡, เชคเชฎเซ‡ เชฒเซ‡เชŸเซเชธ เชเชจเซเช•เซเชฐเชฟเชชเซเชŸ เชธเซเชŸเซ‡เชœเซ€เช‚เช— เชธเชฐเซเชตเชฐเซเชธเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเชถเซ‹, เชœเซ‡ เชคเชฎเชพเชฐเซ€ เชธเซ‡เชŸเชฟเช‚เช—เซเชธเชจเซเช‚ เชชเชฐเซ€เช•เซเชทเชฃ เช•เชฐเชคเซ€ เชตเช–เชคเซ‡ เชชเซเชฐเชฎเชพเชฃเชชเชคเซเชฐเซ‹เชจเซ€ เชตเชพเชฐเช‚เชตเชพเชฐ เชตเชฟเชจเช‚เชคเซ€ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เชœเชฐเซ‚เชฐเซ€ เช›เซ‡, เช…เชจเซเชฏเชฅเชพ เชฒเซ‡เชŸเซเชธ เชเชจเซเช•เซเชฐเชฟเชชเซเชŸ เชฎเซ‹เชŸเซ€ เชธเช‚เช–เซเชฏเชพเชฎเชพเช‚ เชตเชฟเชจเช‚เชคเซ€เช“เชจเซ‡ เช•เชพเชฐเชฃเซ‡ เช…เชธเซเชฅเชพเชฏเซ€ เชฐเซ‚เชชเซ‡ เชคเชฎเชพเชฐเชพ เช†เชˆเชชเซ€ เชธเชฐเชจเชพเชฎเชพเช‚เชจเซ‡ เช…เชตเชฐเซ‹เชงเชฟเชค เช•เชฐเซ€ เชถเช•เซ‡ เช›เซ‡. .

เชธเซเช•เซเชฐเชฟเชชเซเชŸ เชšเช•เชพเชธเซ‡ เช›เซ‡ เช•เซ‡ เช† เชตเชฐเซเชกเชชเซเชฐเซ‡เชธ-เชธเช‚เชฌเช‚เชงเชฟเชค เชšเชฒเซ‹ เชธเซ‡เชŸ เช›เซ‡ เช…เชจเซ‡ เชœเซ‹ เชจ เชนเซ‹เชฏ เชคเซ‹ เชฌเชนเชพเชฐ เชจเซ€เช•เชณเซ€ เชœเชพเชฏ เช›เซ‡.
เชธเซเช•เซเชฐเชฟเชชเซเชŸ เชฒเชพเช‡เชจ 572-576 เชฎเซ‚เชฒเซเชฏ เชคเชชเชพเชธเซ‹ LETS_ENCRYPT_STAGING.

เชตเซเชฏเซเชคเซเชชเชจเซเชจ เชชเชฐเซเชฏเชพเชตเชฐเชฃ เชšเชฒเซ‹ เชธเซ‡เชŸ เช•เชฐเซ€ เชฐเชนเซเชฏเชพ เช›เซ€เช

เชฒเซ€เชŸเซ€เช“ 55-61 เชชเชฐเชจเซ€ เชธเซเช•เซเชฐเชฟเชชเซเชŸ เชจเซ€เชšเซ‡เชจเชพ เชชเชฐเซเชฏเชพเชตเชฐเชฃ เชšเชฒเซ‹เชจเซ‡ เชธเซ‡เชŸ เช•เชฐเซ‡ เช›เซ‡, เช•เชพเช‚ เชคเซ‹ เช…เชฎเซเช• เชนเชพเชฐเซเชก-เช•เซ‹เชกเซ‡เชก เชฎเซ‚เชฒเซเชฏ เช…เชฅเชตเชพ เช…เช—เชพเช‰เชจเชพ เชตเชฟเชญเชพเช—เชฎเชพเช‚ เชธเซ‡เชŸ เช•เชฐเซ‡เชฒ เชšเชฒเซ‹เชฎเชพเช‚เชฅเซ€ เชฎเซ‡เชณเชตเซ‡เชฒ เชฎเซ‚เชฒเซเชฏเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡:

  • DEBIAN_FRONTEND="noninteractive" - เชเชชเซเชฒเซ€เช•เซ‡เชถเชจเซ‹เชจเซ‡ เชœเชฃเชพเชตเซ‡ เช›เซ‡ เช•เซ‡ เชคเซ‡เช“ เชธเซเช•เซเชฐเชฟเชชเซเชŸเชฎเชพเช‚ เชšเชพเชฒเซ€ เชฐเชนเซ€ เช›เซ‡ เช…เชจเซ‡ เชตเชชเชฐเชพเชถเช•เชฐเซเชคเชพเชจเซ€ เช•เซเชฐเชฟเชฏเชพเชชเซเชฐเชคเชฟเช•เซเชฐเชฟเชฏเชพเชจเซ€ เช•เซ‹เชˆ เชถเช•เซเชฏเชคเชพ เชจเชฅเซ€.
  • WORDPRESS_CLI_VERSION="2.4.0" เชตเชฐเซเชกเชชเซเชฐเซ‡เชธ CLI เชเชชเซเชฒเชฟเช•เซ‡เชถเชจเชจเซเช‚ เชตเชฐเซเชเชจ เช›เซ‡.
  • WORDPRESS_CLI_MD5= "dedd5a662b80cda66e9e25d44c23b25c" โ€” เชตเชฐเซเชกเชชเซเชฐเซ‡เชธ CLI 2.4.0 เชเช•เซเชเชฟเช•เซเชฏเซเชŸเซ‡เชฌเชฒ เชซเชพเช‡เชฒเชจเซเช‚ เชšเซ‡เช•เชธเชฎ (เช†เชตเซƒเชคเซเชคเชฟ เชšเชฒเชฎเชพเช‚ เช‰เชฒเซเชฒเซ‡เช–เชฟเชค เช›เซ‡ WORDPRESS_CLI_VERSION). เชฒเชพเช‡เชจ 162 เชชเชฐเชจเซ€ เชธเซเช•เซเชฐเชฟเชชเซเชŸ เชธเชพเชšเซ€ WordPress CLI เชซเชพเช‡เชฒ เชกเชพเช‰เชจเชฒเซ‹เชก เชฅเชˆ เช›เซ‡ เช•เซ‡ เชจเชนเซ€เช‚ เชคเซ‡ เชคเชชเชพเชธเชตเชพ เชฎเชพเชŸเซ‡ เช† เชฎเซ‚เชฒเซเชฏเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ‡ เช›เซ‡.
  • UPLOAD_MAX_FILESIZE="16M" - เชฎเชนเชคเซเชคเชฎ เชซเชพเช‡เชฒ เช•เชฆ เชœเซ‡ เชตเชฐเซเชกเชชเซเชฐเซ‡เชธเชฎเชพเช‚ เช…เชชเชฒเซ‹เชก เช•เชฐเซ€ เชถเช•เชพเชฏ เช›เซ‡. เช† เชธเซ‡เชŸเชฟเช‚เช—เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช˜เชฃเซ€ เชœเช—เซเชฏเชพเช เชฅเชพเชฏ เช›เซ‡, เชคเซ‡เชฅเซ€ เชคเซ‡เชจเซ‡ เชเช• เชœเช—เซเชฏเชพเช เชธเซ‡เชŸ เช•เชฐเชตเซเช‚ เชตเชงเซ เชธเชฐเชณ เช›เซ‡.
  • TLS_HOSTNAME= "$(echo ${WORDPRESS_URL} | cut -d'/' -f3)" - เชธเชฟเชธเซเชŸเชฎเชจเซเช‚ เชฏเชœเชฎเชพเชจเชจเชพเชฎ, WORDPRESS_URL เชšเชฒเชฎเชพเช‚เชฅเซ€ เชชเซเชจเชƒเชชเซเชฐเชพเชชเซเชค. Let's Encrypt เชคเซ‡เชฎเชœ เช†เช‚เชคเชฐเชฟเช• WordPress เชšเช•เชพเชธเชฃเซ€เชฎเชพเช‚เชฅเซ€ เชฏเซ‹เช—เซเชฏ TLS/SSL เชชเซเชฐเชฎเชพเชฃเชชเชคเซเชฐเซ‹ เชฎเซ‡เชณเชตเชตเชพ เชฎเชพเชŸเซ‡ เชตเชชเชฐเชพเชฏ เช›เซ‡.
  • NGINX_CONF_DIR="/etc/nginx" - เชฎเซเช–เซเชฏ เชซเชพเช‡เชฒ เชธเชนเชฟเชค NGINX เชธเซ‡เชŸเชฟเช‚เช—เซเชธ เชธเชพเชฅเซ‡ เชกเชฟเชฐเซ‡เช•เซเชŸเชฐเซ€เชจเซ‹ เชชเชพเชฅ nginx.conf.
  • CERT_DIR="/etc/letsencrypt/live/${TLS_HOSTNAME}" โ€” เชตเชฐเซเชกเชชเซเชฐเซ‡เชธ เชธเชพเช‡เชŸ เชฎเชพเชŸเซ‡ เชฒเซ‡เชŸเซเชธ เชเชจเซเช•เซเชฐเชฟเชชเซเชŸ เชชเซเชฐเชฎเชพเชฃเชชเชคเซเชฐเซ‹เชจเซ‹ เชฎเชพเชฐเซเช—, เชšเชฒเชฎเชพเช‚เชฅเซ€ เชฎเซ‡เชณเชตเซ‡เชฒ TLS_HOSTNAME.

เชตเชฐเซเชกเชชเซเชฐเซ‡เชธ เชธเชฐเซเชตเชฐเชจเซ‡ เชนเซ‹เชธเซเชŸเชจเชพเชฎ เชธเซ‹เช‚เชชเชตเซเช‚

เชธเซเช•เซเชฐเชฟเชชเซเชŸ เชธเชพเช‡เชŸเชจเชพ เชกเซ‹เชฎเซ‡เชจ เชจเชพเชฎ เชธเชพเชฅเซ‡ เชฎเซ‡เชš เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เชธเชฐเซเชตเชฐเชจเซเช‚ เชนเซ‹เชธเซเชŸเชจเชพเชฎ เชธเซ‡เชŸ เช•เชฐเซ‡ เช›เซ‡. เช† เชœเชฐเซ‚เชฐเซ€ เชจเชฅเซ€, เชชเชฐเช‚เชคเซ เชธเซเช•เซเชฐเชฟเชชเซเชŸ เชฆเซเชตเชพเชฐเชพ เชฐเซ‚เชชเชฐเซ‡เช–เชพเช‚เช•เชฟเชค เช•เชฐเซเชฏเชพ เชฎเซเชœเชฌ, เชธเชฟเช‚เช—เชฒ เชธเชฐเซเชตเชฐ เชธเซ‡เชŸเช…เชช เช•เชฐเชคเซ€ เชตเช–เชคเซ‡ 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-เช•เซเชฐเซ‹เชจ เชธเชพเชฎเชฏเชฟเช• เช•เชพเชฐเซเชฏเซ‹ เชšเชฒเชพเชตเชตเชพ เชฎเชพเชŸเซ‡ เชตเชชเชฐเชพเชฏ เช›เซ‡, เชตเชฐเซเชกเชชเซเชฐเซ‡เชธเชจเซ‡ HTTP เชฆเซเชตเชพเชฐเชพ เชชเซ‹เชคเชพเชจเซ‡ เชเช•เซเชธเซ‡เชธ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เชธเช•เซเชทเชฎ เชนเซ‹เชตเซเช‚ เชœเชฐเซ‚เชฐเซ€ เช›เซ‡. WP-Cron เชฌเชงเชพ เชตเชพเชคเชพเชตเชฐเชฃ เชชเชฐ เชฏเซ‹เช—เซเชฏ เชฐเซ€เชคเซ‡ เช•เชพเชฎ เช•เชฐเซ‡ เช›เซ‡ เชคเซ‡เชจเซ€ เช–เชพเชคเชฐเซ€ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡, เชธเซเช•เซเชฐเชฟเชชเซเชŸ เชซเชพเช‡เชฒเชฎเชพเช‚ เชเช• เชฒเซ€เชŸเซ€ เช‰เชฎเซ‡เชฐเซ‡ เช›เซ‡ / Etc / hostsเชœเซ‡เชฅเซ€ เชตเชฐเซเชกเชชเซเชฐเซ‡เชธ เชฒเซ‚เชชเชฌเซ‡เช• เชˆเชจเซเชŸเชฐเชซเซ‡เชธ เชฆเซเชตเชพเชฐเชพ เชชเซ‹เชคเชพเชจเซ‡ เชเช•เซเชธเซ‡เชธ เช•เชฐเซ€ เชถเช•เซ‡:

เชธเซเช•เซเชฐเชฟเชชเซเชŸ เช•เซ‹เชก

# 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

เช†เช—เชณเชจเชพ เชชเช—เชฒเชพเช“ เชฎเชพเชŸเซ‡ เชœเชฐเซ‚เชฐเซ€ เชธเชพเชงเชจเซ‹ เช‡เชจเซเชธเซเชŸเซ‹เชฒ เช•เชฐเซ€ เชฐเชนเซเชฏเชพ เช›เซ€เช

เชฌเชพเช•เซ€เชจเซ€ เชธเซเช•เซเชฐเชฟเชชเซเชŸเชจเซ‡ เช•เซ‡เชŸเชฒเชพเช• เชชเซเชฐเซ‹เช—เซเชฐเชพเชฎเซเชธเชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡ เช…เชจเซ‡ เชงเชพเชฐเซ‡ เช›เซ‡ เช•เซ‡ เชฐเซ€เชชเซ‹เชเซ€เชŸเชฐเซ€เช เช…เชฆเซเชฏเชคเชจ เช›เซ‡. เช…เชฎเซ‡ เชฐเซ€เชชเซ‹เชเซ€เชŸเชฐเซ€เชเชจเซ€ เชธเซ‚เชšเชฟเชจเซ‡ เช…เชชเชกเซ‡เชŸ เช•เชฐเซ€เช เช›เซ€เช, เชคเซ‡ เชชเช›เซ€ เช…เชฎเซ‡ เชœเชฐเซ‚เชฐเซ€ เชธเชพเชงเชจเซ‹ เช‡เชจเซเชธเซเชŸเซ‹เชฒ เช•เชฐเซ€เช เช›เซ€เช:

เชธเซเช•เซเชฐเชฟเชชเซเชŸ เช•เซ‹เชก

# 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 เชฏเซเชจเชฟเชŸ เช…เชจเซ‡ NGINX เชฐเชฟเชชเซ‹เชเซ€เชŸเชฐเซ€เช เช‰เชฎเซ‡เชฐเซ€ เชฐเชนเซเชฏเชพ เช›เซ€เช

เชจเชตเซ€เชจเชคเชฎ เชธเชฟเช•เซเชฏเซ‹เชฐเชฟเชŸเซ€ เชชเซ‡เชš เช…เชจเซ‡ เชฌเช— เชซเชฟเช•เซเชธเซ‡เชธเชตเชพเชณเชพ เชตเชฐเซเชเชจเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซเชฏเซ‹ เช›เซ‡ เชคเซ‡เชจเซ€ เช–เชพเชคเชฐเซ€ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เชธเซเช•เซเชฐเชฟเชชเซเชŸ เชธเชคเซเชคเชพเชตเชพเชฐ NGINX เชฐเชฟเชชเซ‹เชเซ€เชŸเชฐเซ€เชเชฎเชพเช‚เชฅเซ€ NGINX เชฏเซเชจเชฟเชŸ เช…เชจเซ‡ เช“เชชเชจ เชธเซ‹เชฐเซเชธ NGINX เช‡เชจเซเชธเซเชŸเซ‹เชฒ เช•เชฐเซ‡ เช›เซ‡.

เชธเซเช•เซเชฐเชฟเชชเซเชŸ NGINX เชฏเซเชจเชฟเชŸ เชฐเซ€เชชเซ‹เชเซ€เชŸเชฐเซ€ เช…เชจเซ‡ เชชเช›เซ€ NGINX เชฐเซ€เชชเซ‹เชเซ€เชŸเชฐเซ€ เช‰เชฎเซ‡เชฐเซ‡ เช›เซ‡, เชฐเซ€เชชเซ‹เชเซ€เชŸเชฐเซ€เช เช•เซ€ เช…เชจเซ‡ เชฐเซ‚เชชเชฐเซ‡เช–เชพเช‚เช•เชจ เชซเชพเชˆเชฒเซ‹ เช‰เชฎเซ‡เชฐเซ€เชจเซ‡ apt, เชˆเชจเซเชŸเชฐเชจเซ‡เชŸ เชฆเซเชตเชพเชฐเชพ เชฐเซ€เชชเซ‹เชเซ€เชŸเชฐเซ€เชเชจเซ€ เชเช•เซเชธเซ‡เชธเชจเซ‡ เชตเซเชฏเชพเช–เซเชฏเชพเชฏเชฟเชค เช•เชฐเซ‡ เช›เซ‡.

NGINX เชฏเซเชจเชฟเชŸ เช…เชจเซ‡ NGINX เชจเซเช‚ เชตเชพเชธเซเชคเชตเชฟเช• เชธเซเชฅเชพเชชเชจ เช†เช—เชณเชจเชพ เชตเชฟเชญเชพเช—เชฎเชพเช‚ เชฅเชพเชฏ เช›เซ‡. เช…เชฎเซ‡ เชฐเซ€เชชเซ‹เชเซ€เชŸเชฐเซ€เช เชชเชนเซ‡เชฒเชพเชฅเซ€ เช‰เชฎเซ‡เชฐเซ€เช เช›เซ€เช เชœเซ‡เชฅเซ€ เช…เชฎเชพเชฐเซ‡ เชฎเซ‡เชŸเชพเชกเซ‡เชŸเชพเชจเซ‡ เช˜เชฃเซ€ เชตเช–เชค เช…เชชเชกเซ‡เชŸ เช•เชฐเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เชจเชฅเซ€, เชœเซ‡ เช‡เชจเซเชธเซเชŸเซ‹เชฒเซ‡เชถเชจเชจเซ‡ เชเชกเชชเซ€ เชฌเชจเชพเชตเซ‡ เช›เซ‡.

เชธเซเช•เซเชฐเชฟเชชเซเชŸ เช•เซ‹เชก

# 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

เชเชจเชœเซ€เช†เชˆเชเชจเชเช•เซเชธ, เชเชจเชœเซ€เช†เชˆเชเชจเชเช•เซเชธ เชฏเซเชจเชฟเชŸ, เชชเซ€เชเชšเชชเซ€ เชฎเชพเชฐเชฟเชฏเชพเชกเซ€เชฌเซ€, เชธเชฐเซเชŸเชฌเซ‹เชŸ (เชšเชพเชฒเซ‹ เชเชจเซเช•เซเชฐเชฟเชชเซเชŸ เช•เชฐเซ€เช) เช…เชจเซ‡ เชคเซ‡เชฎเชจเซ€ เช…เชตเชฒเช‚เชฌเชจ เชธเซเชฅเชพเชชเชฟเชค เช•เชฐเชตเซ€

เชเช•เชตเชพเชฐ เชฌเชงเซ€ เชฐเซ€เชชเซ‹เชเซ€เชŸเชฐเซ€เช เช‰เชฎเซ‡เชฐเชพเชˆ เชœเชพเชฏ, เชฎเซ‡เชŸเชพเชกเซ‡เชŸเชพ เช…เชชเชกเซ‡เชŸ เช•เชฐเซ‹ เช…เชจเซ‡ เชเชชเซเชฒเชฟเช•เซ‡เชถเชจเซเชธ เช‡เชจเซเชธเซเชŸเซ‹เชฒ เช•เชฐเซ‹. เชธเซเช•เซเชฐเชฟเชชเซเชŸ เชฆเซเชตเชพเชฐเชพ เช‡เชจเซเชธเซเชŸเซ‹เชฒ เช•เชฐเซ‡เชฒเชพ เชชเซ‡เช•เซ‡เชœเซ‹เชฎเชพเช‚ WordPress.org เชšเชฒเชพเชตเชคเซ€ เชตเช–เชคเซ‡ เชญเชฒเชพเชฎเชฃ เช•เชฐเชพเชฏเซ‡เชฒ PHP เชเช•เซเชธเซเชŸเซ‡เช‚เชถเชจเชจเซ‹ เชชเชฃ เชธเชฎเชพเชตเซ‡เชถ เชฅเชพเชฏ เช›เซ‡

เชธเซเช•เซเชฐเชฟเชชเซเชŸ เช•เซ‹เชก

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

NGINX เชฏเซเชจเชฟเชŸ เช…เชจเซ‡ เชตเชฐเซเชกเชชเซเชฐเซ‡เชธ เชธเชพเชฅเซ‡ เช‰เชชเชฏเซ‹เช— เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ PHP เชธเซ‡เชŸ เช•เชฐเชตเซเช‚

เชธเซเช•เซเชฐเชฟเชชเซเชŸ เชกเชฟเชฐเซ‡เช•เซเชŸเชฐเซ€เชฎเชพเช‚ เชธเซ‡เชŸเชฟเช‚เช—เซเชธ เชซเชพเช‡เชฒ เชฌเชจเชพเชตเซ‡ เช›เซ‡ 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

เชตเชฐเซเชกเชชเซเชฐเซ‡เชธ เชฎเชพเชŸเซ‡ เชฎเชพเชฐเชฟเชฏเชพเชกเซ€เชฌเซ€ เชกเซ‡เชŸเชพเชฌเซ‡เช เชธเซ‡เชŸเชฟเช‚เช—เซเชธเชจเซ‹ เช‰เชฒเซเชฒเซ‡เช– เช•เชฐเชตเซ‹

เช…เชฎเซ‡ เชฎเชพเชฏเชเชธเช•เซเชฏเซเชเชฒ เชชเชฐ เชฎเชพเชฐเชฟเชฏเชพเชกเซ€เชฌเซ€ เชชเชธเช‚เชฆ เช•เชฐเซเชฏเซเช‚ เช›เซ‡ เช•เชพเชฐเชฃ เช•เซ‡ เชคเซ‡เชฎเชพเช‚ เชตเชงเซ เชธเชพเชฎเซเชฆเชพเชฏเชฟเช• เชชเซเชฐเชตเซƒเชคเซเชคเชฟ เช›เซ‡ เช…เชจเซ‡ เชคเซ‡เชตเซ€ เชถเช•เซเชฏเชคเชพ เชชเชฃ เช›เซ‡ เชฎเซ‚เชณเชญเซ‚เชค เชฐเซ€เชคเซ‡ เชตเชงเซ เชธเชพเชฐเซเช‚ เชชเซเชฐเชฆเชฐเซเชถเชจ เชชเซเชฐเชฆเชพเชจ เช•เชฐเซ‡ เช›เซ‡ (เช•เชฆเชพเชš, เช…เชนเซ€เช‚ เชฌเชงเซเช‚ เชธเชฐเชณ เช›เซ‡: MySQL เช‡เชจเซเชธเซเชŸเซ‹เชฒ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡, เชคเชฎเชพเชฐเซ‡ เชฌเซ€เชœเซ€ เชฐเซ€เชชเซ‹เชเซ€เชŸเชฐเซ€ เช‰เชฎเซ‡เชฐเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡, เช†เชถเชฐเซ‡. เช…เชจเซเชตเชพเชฆเช•).

เชธเซเช•เซเชฐเชฟเชชเซเชŸ เชเช• เชจเชตเซ‹ เชกเซ‡เชŸเชพเชฌเซ‡เช เชฌเชจเชพเชตเซ‡ เช›เซ‡ เช…เชจเซ‡ เชฒเซ‚เชชเชฌเซ‡เช• เช‡เชจเซเชŸเชฐเชซเซ‡เชธ เชฆเซเชตเชพเชฐเชพ เชตเชฐเซเชกเชชเซเชฐเซ‡เชธเชจเซ‡ เชเช•เซเชธเซ‡เชธ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เช“เชณเช–เชชเชคเซเชฐเซ‹ เชฌเชจเชพเชตเซ‡ เช›เซ‡:

เชธเซเช•เซเชฐเชฟเชชเซเชŸ เช•เซ‹เชก

# 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;"

เชตเชฐเซเชกเชชเซเชฐเซ‡เชธ CLI เชชเซเชฐเซ‹เช—เซเชฐเชพเชฎ เช‡เชจเซเชธเซเชŸเซ‹เชฒ เช•เชฐเซ€ เชฐเชนเซเชฏเซเช‚ เช›เซ‡

เช† เชชเช—เชฒเชพ เชชเชฐ, เชธเซเช•เซเชฐเชฟเชชเซเชŸ เชชเซเชฐเซ‹เช—เซเชฐเชพเชฎ เช‡เชจเซเชธเซเชŸเซ‹เชฒ เช•เชฐเซ‡ เช›เซ‡ WP-CLI. เชคเซ‡เชจเซ€ เชธเชพเชฅเซ‡, เชคเชฎเซ‡ เชซเชพเช‡เชฒเซ‹เชจเซ‡ เชฎเซ‡เชจเซเชฏเซเช…เชฒเซ€ เชเชกเชฟเชŸ เช•เชฐเซเชฏเชพ เชตเชฟเชจเชพ, เชกเซ‡เชŸเชพเชฌเซ‡เชเชจเซ‡ เช…เชชเชกเซ‡เชŸ เช•เชฐเซเชฏเชพ เชตเชฟเชจเชพ เช…เชฅเชตเชพ เช•เช‚เชŸเซเชฐเซ‹เชฒ เชชเซ‡เชจเชฒ เชฆเชพเช–เชฒ เช•เชฐเซเชฏเชพ เชตเชฟเชจเชพ WordPress เชธเซ‡เชŸเชฟเช‚เช—เซเชธเชจเซ‡ เช‡เชจเซเชธเซเชŸเซ‹เชฒ เช…เชจเซ‡ เชฎเซ‡เชจเซ‡เชœ เช•เชฐเซ€ เชถเช•เซ‹ เช›เซ‹. เชคเซ‡เชจเซ‹ เช‰เชชเชฏเซ‹เช— เชฅเซ€เชฎเซเชธ เช…เชจเซ‡ เชเชก-เช“เชจ เช‡เชจเซเชธเซเชŸเซ‹เชฒ เช•เชฐเชตเชพ เช…เชจเซ‡ 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

เชตเชฐเซเชกเชชเซเชฐเซ‡เชธ เช‡เชจเซเชธเซเชŸเซ‹เชฒ เช…เชจเซ‡ เช—เซ‹เช เชตเซ€ เชฐเชนเซเชฏเซเช‚ เช›เซ‡

เชธเซเช•เซเชฐเชฟเชชเซเชŸ เชตเชฐเซเชกเชชเซเชฐเซ‡เชธเชจเชพ เชจเชตเซ€เชจเชคเชฎ เชธเช‚เชธเซเช•เชฐเชฃเชจเซ‡ เชกเชฟเชฐเซ‡เช•เซเชŸเชฐเซ€เชฎเชพเช‚ เช‡เชจเซเชธเซเชŸเซ‹เชฒ เช•เชฐเซ‡ เช›เซ‡ /var/www/wordpressเช…เชจเซ‡ เชธเซ‡เชŸเชฟเช‚เช—เซเชธเชฎเชพเช‚ เชชเชฃ เชซเซ‡เชฐเชซเชพเชฐ เช•เชฐเซ‡ เช›เซ‡:

  • เชกเซ‡เชŸเชพเชฌเซ‡เช เช•เชจเซ‡เช•เซเชถเชจ TCP เชŸเซเชฐเชพเชซเชฟเช•เชจเซ‡ เช˜เชŸเชพเชกเชตเชพ เชฎเชพเชŸเซ‡ เชฒเซ‚เชชเชฌเซ‡เช• เชชเชฐ TCP เชจเซ‡ เชฌเชฆเชฒเซ‡ เชฏเซเชจเชฟเช•เซเชธ เชกเซ‹เชฎเซ‡เชจ เชธเซ‹เช•เซ‡เชŸ เชชเชฐ เช•เชพเชฎ เช•เชฐเซ‡ เช›เซ‡.
  • เชตเชฐเซเชกเชชเซเชฐเซ‡เชธ เชเช• เช‰เชชเชธเชฐเซเช— เช‰เชฎเซ‡เชฐเซ‡ เช›เซ‡ https:// เชœเซ‹ เช•เซเชฒเชพเชฏเชจเซเชŸ HTTPS เชชเชฐ NGINX เชธเชพเชฅเซ‡ เชœเซ‹เชกเชพเชฏ เช›เซ‡, เช…เชจเซ‡ PHP เชจเซ‡ เชฐเชฟเชฎเซ‹เชŸ เชนเซ‹เชธเซเชŸเชจเชพเชฎ (เชเชจเชœเซ€เช†เชˆเชเชจเชเช•เซเชธ เชฆเซเชตเชพเชฐเชพ เชชเซเชฐเชฆเชพเชจ เช•เชฐเซ‡เชฒเซเช‚) เชชเชฃ เชฎเซ‹เช•เชฒเซ‡ เช›เซ‡. เช…เชฎเซ‡ เช†เชจเซ‡ เชธเซ‡เชŸ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เช•เซ‹เชกเชจเชพ เชŸเซเช•เชกเชพเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เช เช›เซ€เช.
  • เชตเชฐเซเชกเชชเซเชฐเซ‡เชธเชจเซ‡ เชฒเซ‹เช—เชฟเชจ เชฎเชพเชŸเซ‡ HTTPS เชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡
  • เชกเชฟเชซเซ‰เชฒเซเชŸ URL เชฎเชพเชณเช–เซเช‚ เชธเช‚เชธเชพเชงเชจเซ‹ เชชเชฐ เช†เชงเชพเชฐเชฟเชค เช›เซ‡
  • เชตเชฐเซเชกเชชเซเชฐเซ‡เชธ เชกเชฟเชฐเซ‡เช•เซเชŸเชฐเซ€ เชฎเชพเชŸเซ‡ เชซเชพเช‡เชฒ เชธเชฟเชธเซเชŸเชฎ เชชเชฐ เชฏเซ‹เช—เซเชฏ เชชเชฐเชตเชพเชจเช—เซ€เช“ เชธเซ‡เชŸ เช•เชฐเซ‡ เช›เซ‡.

เชธเซเช•เซเชฐเชฟเชชเซเชŸ เช•เซ‹เชก

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 เชฏเซเชจเชฟเชŸ เชธเซ‡เชŸ เช•เชฐเซ€ เชฐเชนเซเชฏเซเช‚ เช›เซ‡

เชธเซเช•เซเชฐเชฟเชชเซเชŸ PHP เชšเชฒเชพเชตเชตเชพ เช…เชจเซ‡ เชตเชฐเซเชกเชชเซเชฐเซ‡เชธ เชชเชพเชฅเชจเซ€ เชชเซเชฐเช•เซเชฐเชฟเชฏเชพ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ NGINX เชฏเซเชจเชฟเชŸเชจเซ‡ เช—เซ‹เช เชตเซ‡ เช›เซ‡, PHP เชชเซเชฐเช•เซเชฐเชฟเชฏเชพ เชจเซ‡เชฎเชธเซเชชเซ‡เชธเชจเซ‡ เช…เชฒเช— เช•เชฐเซ‡ เช›เซ‡ เช…เชจเซ‡ เชชเซเชฐเชฆเชฐเซเชถเชจ เชธเซ‡เชŸเชฟเช‚เช—เซเชธเชจเซ‡ เช‘เชชเซเชŸเชฟเชฎเชพเช‡เช เช•เชฐเซ‡ เช›เซ‡. เช…เชนเซ€เช‚ เชœเซ‹เชตเชพ เชฎเชพเชŸเซ‡ เชคเซเชฐเชฃ เชธเซเชตเชฟเชงเชพเช“ เช›เซ‡:

  • เชธเซเช•เซเชฐเชฟเชชเซเชŸ เช•เชจเซเชŸเซ‡เชจเชฐเชฎเชพเช‚ เชšเชพเชฒเซ€ เชฐเชนเซ€ เช›เซ‡ เช•เซ‡ เชจเชนเซ€เช‚ เชคเซ‡เชจเซ€ เชšเช•เชพเชธเชฃเซ€เชจเชพ เช†เชงเชพเชฐเซ‡ เชจเซ‡เชฎเชธเซเชชเซ‡เชธ เชฎเชพเชŸเซ‡เชจเซ‹ เช†เชงเชพเชฐ เชถเชฐเชค เชฆเซเชตเชพเชฐเชพ เชจเช•เซเช•เซ€ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡. เช† เชœเชฐเซ‚เชฐเซ€ เช›เซ‡ เช•เชพเชฐเชฃ เช•เซ‡ เชฎเซ‹เชŸเชพเชญเชพเช—เชจเชพ เช•เชจเซเชŸเซ‡เชจเชฐ เชธเซ‡เชŸเช…เชช เช•เชจเซเชŸเซ‡เชจเชฐเชจเชพ เชจเซ‡เชธเซเชŸเซ‡เชก เชฒเซ‹เช‚เชšเชจเซ‡ เชธเชชเซ‹เชฐเซเชŸ เช•เชฐเชคเชพ เชจเชฅเซ€.
  • เชœเซ‹ เชจเซ‡เชฎเชธเซเชชเซ‡เชธ เชฎเชพเชŸเซ‡ เชธเชชเซ‹เชฐเซเชŸ เชนเซ‹เชฏ, เชคเซ‹ เชจเซ‡เชฎเชธเซเชชเซ‡เชธเชจเซ‡ เช…เช•เซเชทเชฎ เช•เชฐเซ‹ เชจเซ‡เชŸเชตเชฐเซเช•. เช† เชตเชฐเซเชกเชชเซเชฐเซ‡เชธเชจเซ‡ เชฌเช‚เชจเซ‡ เชเชจเซเชกเชชเซ‹เช‡เชจเซเชŸเซเชธ เชธเชพเชฅเซ‡ เช•เชจเซ‡เช•เซเชŸ เชฅเชตเชพเชจเซ€ เช…เชจเซ‡ เชคเซ‡ เชœ เชธเชฎเชฏเซ‡ เชตเซ‡เชฌ เชชเชฐ เช‰เชชเชฒเชฌเซเชง เชฐเชนเซ‡เชตเชพเชจเซ€ เชฎเช‚เชœเซ‚เชฐเซ€ เช†เชชเชตเชพ เชฎเชพเชŸเซ‡ เช›เซ‡.
  • เชชเซเชฐเช•เซเชฐเชฟเชฏเชพเช“เชจเซ€ เชฎเชนเชคเซเชคเชฎ เชธเช‚เช–เซเชฏเชพ เชจเซ€เชšเซ‡ เชชเซเชฐเชฎเชพเชฃเซ‡ เชตเซเชฏเชพเช–เซเชฏเชพเชฏเชฟเชค เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ€ เช›เซ‡: (MariaDB เช…เชจเซ‡ NGINX Uniy เชšเชฒเชพเชตเชตเชพ เชฎเชพเชŸเซ‡ เช‰เชชเชฒเชฌเซเชง เชฎเซ‡เชฎเชฐเซ€)/(PHP + 5 เชฎเชพเช‚ RAM เชฎเชฐเซเชฏเชพเชฆเชพ)
    เช† เชฎเซ‚เชฒเซเชฏ NGINX เชฏเซเชจเชฟเชŸ เชธเซ‡เชŸเชฟเช‚เช—เซเชธเชฎเชพเช‚ เชธเซ‡เชŸ เช•เชฐเซ‡เชฒ เช›เซ‡.

เช† เชฎเซ‚เชฒเซเชฏ เช เชชเชฃ เชธเซ‚เชšเชฟเชค เช•เชฐเซ‡ เช›เซ‡ เช•เซ‡ เชคเซเชฏเชพเช‚ เชนเช‚เชฎเซ‡เชถเชพ เช“เช›เชพเชฎเชพเช‚ เช“เช›เซ€ เชฌเซ‡ PHP เชชเซเชฐเช•เซเชฐเชฟเชฏเชพเช“ เชšเชพเชฒเซ€ เชฐเชนเซ€ เช›เซ‡, เชœเซ‡ เชฎเชนเชคเซเชตเชชเซ‚เชฐเซเชฃ เช›เซ‡ เช•เชพเชฐเชฃ เช•เซ‡ เชตเชฐเซเชกเชชเซเชฐเซ‡เชธ เชชเซ‹เชคเชพเชจเซ‡ เชฎเชพเชŸเซ‡ เช˜เชฃเซ€ เช…เชธเซเชฎเซ‡เชณ เชตเชฟเชจเช‚เชคเซ€เช“ เช•เชฐเซ‡ เช›เซ‡, เช…เชจเซ‡ เชตเชงเชพเชฐเชพเชจเซ€ เชชเซเชฐเช•เซเชฐเชฟเชฏเชพเช“ เชตเชฟเชจเชพ, เชœเซ‡เชฎ เช•เซ‡ 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 เชธเซ‡เชŸเชฟเช‚เช—เซเชธเชจเซ‡ เช—เซ‹เช เชตเซ€ เชฐเชนเซเชฏเซเช‚ เช›เซ‡

เชธเซเช•เซเชฐเชฟเชชเซเชŸ NGINX เช•เซ‡เชถ เชฎเชพเชŸเซ‡ เชกเชฟเชฐเซ‡เช•เซเชŸเชฐเซ€ เชฌเชจเชพเชตเซ‡ เช›เซ‡ เช…เชจเซ‡ เชชเช›เซ€ เชฎเซเช–เซเชฏ เชฐเซ‚เชชเชฐเซ‡เช–เชพเช‚เช•เชจ เชซเชพเช‡เชฒ เชฌเชจเชพเชตเซ‡ เช›เซ‡ nginx.conf. เชนเซ‡เชจเซเชกเชฒเชฐ เชชเซเชฐเช•เซเชฐเชฟเชฏเชพเช“เชจเซ€ เชธเช‚เช–เซเชฏเชพ เช…เชจเซ‡ เช…เชชเชฒเซ‹เชก เชฎเชพเชŸเซ‡ เชฎเชนเชคเซเชคเชฎ เชซเชพเช‡เชฒ เช•เชฆเชจเชพ เชธเซ‡เชŸเชฟเช‚เช— เชชเชฐ เชงเซเชฏเชพเชจ เช†เชชเซ‹. เชคเซเชฏเชพเช‚ เชเช• เชฒเชพเช‡เชจ เชชเชฃ เช›เซ‡ เชœเซ‡เชฎเชพเช‚ เช†เช—เชณเชจเชพ เชตเชฟเชญเชพเช—เชฎเชพเช‚ เชตเซเชฏเชพเช–เซเชฏเชพเชฏเชฟเชค เช•เชฎเซเชชเซเชฐเซ‡เชถเชจ เชธเซ‡เชŸเชฟเช‚เช—เซเชธ เชซเชพเช‡เชฒเชจเซ‹ เชธเชฎเชพเชตเซ‡เชถ เชฅเชพเชฏ เช›เซ‡, เช•เซ‡เชถเชฟเช‚เช— เชธเซ‡เชŸเชฟเช‚เช—เซเชธ เชฆเซเชตเชพเชฐเชพ เช…เชจเซเชธเชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡.

เชธเซเช•เซเชฐเชฟเชชเซเชŸ เช•เซ‹เชก

# 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 เชธเซ‡เชŸ เช•เชฐเซ€ เชฐเชนเซเชฏเซเช‚ เช›เซ‡

เช†เช—เชณ, เชธเซเช•เซเชฐเชฟเชชเซเชŸ เชตเชฐเซเชกเชชเซเชฐเซ‡เชธ เชฎเชพเชŸเซ‡ เชฐเซ‚เชชเชฐเซ‡เช–เชพเช‚เช•เชจ เชซเชพเช‡เชฒ เชฌเชจเชพเชตเซ‡ เช›เซ‡ default.conf เชธเซ‚เชšเชฟเชฎเชพเช‚ conf.d. เชคเซ‡ เช…เชนเซ€เช‚ เช—เซ‹เช เชตเซ‡เชฒ เช›เซ‡:

  • Let's Encrypt เชฆเซเชตเชพเชฐเชพ Certbot เชฆเซเชตเชพเชฐเชพ เชชเซเชฐเชพเชชเซเชค TLS เชชเซเชฐเชฎเชพเชฃเชชเชคเซเชฐเซ‹เชจเซ‡ เชธเช•เซเชฐเชฟเชฏ เช•เชฐเชตเซเช‚ (เชคเซ‡เชจเซเช‚ เชธเซ‡เชŸเช…เชช เช†เช—เชพเชฎเซ€ เชตเชฟเชญเชพเช—เชฎเชพเช‚ เชฅเชถเซ‡)
  • Let's Encrypt เชจเซ€ เชญเชฒเชพเชฎเชฃเซ‹เชจเชพ เช†เชงเชพเชฐเซ‡ TLS เชธเซเชฐเช•เซเชทเชพ เชธเซ‡เชŸเชฟเช‚เช—เซเชธเชจเซ‡ เช—เซ‹เช เชตเซ€ เชฐเชนเซเชฏเชพเช‚ เช›เซ€เช
  • เชกเชฟเชซเซ‰เชฒเซเชŸ เชฐเซ‚เชชเซ‡ 1 เช•เชฒเชพเช• เชฎเชพเชŸเซ‡ เช•เซ‡เชถเซ€เช‚เช— เชธเซเช•เซ€เชช เชตเชฟเชจเช‚เชคเซ€เช“เชจเซ‡ เชธเช•เซเชทเชฎ เช•เชฐเซ‹
  • เชฌเซ‡ เชธเชพเชฎเชพเชจเซเชฏ เชตเชฟเชจเช‚เชคเซ€ เช•เชฐเซ‡เชฒเซ€ เชซเชพเช‡เชฒเซ‹ เชฎเชพเชŸเซ‡ เชเช•เซเชธเซ‡เชธ เชฒเซ‹เช—เซ€เช‚เช—, เชคเซ‡เชฎเชœ เชœเซ‹ เชซเชพเช‡เชฒ เชจ เชฎเชณเซ‡ เชคเซ‹ เชญเซ‚เชฒ เชฒเซ‹เช—เซ€เช‚เช—เชจเซ‡ เช…เช•เซเชทเชฎ เช•เชฐเซ‹: favicon.ico เช…เชจเซ‡ robots.txt
  • เช›เซเชชเชพเชฏเซ‡เชฒ เชซเชพเช‡เชฒเซ‹ เช…เชจเซ‡ เช•เซ‡เชŸเชฒเซ€เช• เชซเชพเช‡เชฒเซ‹เชจเซ€ เชเช•เซเชธเซ‡เชธเชจเซ‡ เช…เชŸเช•เชพเชตเซ‹ .PHPเช—เซ‡เชฐเช•เชพเชฏเชฆเซ‡เชธเชฐ เชชเซเชฐเชตเซ‡เชถ เช…เชฅเชตเชพ เช…เชจเชฟเชšเซเช›เชจเซ€เชฏ เชถเชฐเซ‚เช†เชคเชจเซ‡ เชฐเซ‹เช•เชตเชพ เชฎเชพเชŸเซ‡
  • เชธเซเชฅเชฟเชฐ เช…เชจเซ‡ เชซเซ‹เชจเซเชŸ เชซเชพเช‡เชฒเซ‹ เชฎเชพเชŸเซ‡ เชเช•เซเชธเซ‡เชธ เชฒเซ‹เช—เชฟเช‚เช—เชจเซ‡ เช…เช•เซเชทเชฎ เช•เชฐเซ‹
  • เชนเซ‡เชกเชฐ เชธเซ‡เชŸเชฟเช‚เช— เชเช•เซเชธเซ‡เชธ-เชจเชฟเชฏเช‚เชคเซเชฐเชฃ-เชฎเช‚เชœเซ‚เชฐเซ€-เชฎเซ‚เชณ เชซเซ‹เชจเซเชŸ เชซเชพเช‡เชฒเซ‹ เชฎเชพเชŸเซ‡
  • index.php เช…เชจเซ‡ เช…เชจเซเชฏ เชธเซเชŸเซ‡เชŸเชฟเช•เซเชธ เชฎเชพเชŸเซ‡ เชฐเซ‚เชŸเซ€เช‚เช— เช‰เชฎเซ‡เชฐเชตเชพเชจเซเช‚.

เชธเซเช•เซเชฐเชฟเชชเซเชŸ เช•เซ‹เชก

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

Let's Encrypt เชฎเชพเช‚เชฅเซ€ เชชเซเชฐเชฎเชพเชฃเชชเชคเซเชฐเซ‹ เชฎเชพเชŸเซ‡ Certbot เชธเซ‡เชŸ เช•เชฐเชตเซเช‚ เช…เชจเซ‡ เชคเซ‡เชฎเชจเซ‡ เชธเซเชตเชคเชƒ เชจเชตเซ€เช•เชฐเชฃ เช•เชฐเชตเซเช‚

เชธเชฐเซเชŸเชฌเซ‹เชŸ เช‡เชฒเซ‡เช•เซเชŸเซเชฐเซ‹เชจเชฟเช• เชซเซเชฐเชจเซเชŸเชฟเชฏเชฐ เชซเชพเช‰เชจเซเชกเซ‡เชถเชจ (EFF) เชคเชฐเชซเชฅเซ€ เชเช• เชฎเชซเชค เชธเชพเชงเชจ เช›เซ‡ เชœเซ‡ เชคเชฎเชจเซ‡ Let's Encrypt เชฎเชพเช‚เชฅเซ€ TLS เชชเซเชฐเชฎเชพเชฃเชชเชคเซเชฐเซ‹ เชฎเซ‡เชณเชตเชตเชพ เช…เชจเซ‡ เช†เชชเชฎเซ‡เชณเซ‡ เชฐเชฟเชจเซเชฏเซ‚ เช•เชฐเชตเชพเชจเซ€ เชฎเช‚เชœเซ‚เชฐเซ€ เช†เชชเซ‡ เช›เซ‡. NGINX เชฎเชพเช‚ Let's Encrypt เชจเชพ เชชเซเชฐเชฎเชพเชฃเชชเชคเซเชฐเซ‹ เชชเชฐ เชชเซเชฐเช•เซเชฐเชฟเชฏเชพ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ Certbot เชจเซ‡ เช—เซ‹เช เชตเชตเชพ เชฎเชพเชŸเซ‡ เชธเซเช•เซเชฐเชฟเชชเซเชŸ เชจเซ€เชšเซ‡ เชฎเซเชœเชฌ เช•เชฐเซ‡ เช›เซ‡:

  • NGINX เชฐเซ‹เช•เซ‡ เช›เซ‡
  • เชกเชพเช‰เชจเชฒเซ‹เชกเซเชธ เชญเชฒเชพเชฎเชฃ เช•เชฐเซ‡เชฒ TLS เชธเซ‡เชŸเชฟเช‚เช—เซเชธ
  • เชธเชพเช‡เชŸ เชฎเชพเชŸเซ‡ เชชเซเชฐเชฎเชพเชฃเชชเชคเซเชฐเซ‹ เชฎเซ‡เชณเชตเชตเชพ เชฎเชพเชŸเซ‡ Certbot เชšเชฒเชพเชตเซ‡ เช›เซ‡
  • เชชเซเชฐเชฎเชพเชฃเชชเชคเซเชฐเซ‹เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ NGINX เชชเซเชจเชƒเชชเซเชฐเชพเชฐเช‚เชญ เช•เชฐเซ‡ เช›เซ‡
  • เชชเซเชฐเชฎเชพเชฃเชชเชคเซเชฐเซ‹เชจเซ‡ เชจเชตเซ€เช•เชฐเชฃ เช•เชฐเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡ เช•เซ‡ เช•เซ‡เชฎ เชคเซ‡ เชคเชชเชพเชธเชตเชพ เชฎเชพเชŸเซ‡ เชฆเชฐเชฐเซ‹เชœ เชธเชตเชพเชฐเซ‡ 3:24 เชตเชพเช—เซเชฏเซ‡ เชšเชฒเชพเชตเชตเชพ เชฎเชพเชŸเซ‡ Certbot เชจเซ‡ เช—เซ‹เช เชตเซ‡ เช›เซ‡ เช…เชจเซ‡ เชœเซ‹ เชœเชฐเซ‚เชฐเซ€ เชนเซ‹เชฏ เชคเซ‹, เชจเชตเชพ เชชเซเชฐเชฎเชพเชฃเชชเชคเซเชฐเซ‹ เชกเชพเช‰เชจเชฒเซ‹เชก เช•เชฐเซ‹ เช…เชจเซ‡ 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 เชฏเซเชจเชฟเชŸเชจเซ‡ TLSSSL เชธเช•เซเชทเชฎ เชธเชพเชฅเซ‡ เช‰เชคเซเชชเชพเชฆเชจ-เชคเซˆเชฏเชพเชฐ เชธเชพเช‡เชŸเชจเซ‡ เชธเซ‡เชตเชพ เช†เชชเชตเชพ เชฎเชพเชŸเซ‡ เช—เซ‹เช เชตเซ‡ เช›เซ‡. เชคเชฎเซ‡ เชคเชฎเชพเชฐเซ€ เชœเชฐเซ‚เชฐเชฟเชฏเชพเชคเซ‹เชจเซ‡ เช†เชงเชพเชฐเซ‡, เชญเชตเชฟเชทเซเชฏเชฎเชพเช‚ เชชเชฃ เช‰เชฎเซ‡เชฐเซ€ เชถเช•เซ‹ เช›เซ‹:

  • เช†เชงเชพเชฐ เชฌเซเชฐเซ‹เชŸเชฒเซ€, HTTPS เชชเชฐ เช‘เชจ-เชง-เชซเซเชฒเชพเชฏ เช•เชฎเซเชชเซเชฐเซ‡เชถเชจเชฎเชพเช‚ เชธเซเชงเชพเชฐเซ‹
  • เชฎเซ‹เชก เชธเชฟเช•เซเชฏเซ‹เชฐเชฟเชŸเซ€ ั เชตเชฐเซเชกเชชเซเชฐเซ‡เชธ เชฎเชพเชŸเซ‡ เชจเชฟเชฏเชฎเซ‹เชคเชฎเชพเชฐเซ€ เชธเชพเช‡เชŸ เชชเชฐ เชธเซเชตเชšเชพเชฒเชฟเชค เชนเซเชฎเชฒเชพเช“เชจเซ‡ เชฐเซ‹เช•เชตเชพ เชฎเชพเชŸเซ‡
  • เชฌเซ‡เช•เช…เชช เชคเชฎเชจเซ‡ เช…เชจเซเช•เซ‚เชณ เชตเชฐเซเชกเชชเซเชฐเซ‡เชธ เชฎเชพเชŸเซ‡
  • เชฐเช•เซเชทเชฃ เชจเซ€ เชฎเชฆเชฆ เชธเชพเชฅเซ‡ เชเชชเช…เชฐเซเชฎเชฐ (เช‰เชฌเซเชจเซเชŸเซ เชชเชฐ)
  • เชชเซ‹เชธเซเชŸเชซเชฟเช•เซเชธ เช…เชฅเชตเชพ เชเชฎเชเชธเชเชฎเชŸเซ€เชชเซ€ เชœเซ‡เชฅเซ€ เชตเชฐเซเชกเชชเซเชฐเซ‡เชธ เชฎเซ‡เช‡เชฒ เชฎเซ‹เช•เชฒเซ€ เชถเช•เซ‡
  • เชคเชฎเชพเชฐเซ€ เชธเชพเช‡เชŸเชจเซ‡ เชคเชชเชพเชธเซ€ เชฐเชนเซเชฏเชพเช‚ เช›เซ€เช เชœเซ‡เชฅเซ€ เชคเชฎเซ‡ เชธเชฎเชœเซ€ เชถเช•เซ‹ เช•เซ‡ เชคเซ‡ เช•เซ‡เชŸเชฒเชพ เชŸเซเชฐเชพเชซเชฟเช•เชจเซ‡ เชนเซ‡เชจเซเชกเชฒ เช•เชฐเซ€ เชถเช•เซ‡ เช›เซ‡

เชตเชงเซ เชธเชพเชฐเซ€ เชธเชพเช‡เชŸ เชชเซเชฐเชฆเชฐเซเชถเชจ เชฎเชพเชŸเซ‡, เช…เชฎเซ‡ เชคเซ‡เชฎเชพเช‚ เช…เชชเช—เซเชฐเซ‡เชก เช•เชฐเชตเชพเชจเซ€ เชญเชฒเชพเชฎเชฃ เช•เชฐเซ€เช เช›เซ€เช NGINX เชชเซเชฒเชธ, เช“เชชเชจ เชธเซ‹เชฐเซเชธ NGINX เชชเชฐ เช†เชงเชพเชฐเชฟเชค เช…เชฎเชพเชฐเซ€ เช•เซ‹เชฎเชฐเซเชถเชฟเชฏเชฒ, เชเชจเซเชŸเชฐเชชเซเชฐเชพเช‡เช-เช—เซเชฐเซ‡เชก เชชเซเชฐเซ‹เชกเช•เซเชŸ. เชคเซ‡เชจเชพ เชธเชฌเซเชธเซเช•เซเชฐเชพเช‡เชฌเชฐเซเชธเชจเซ‡ เช—เชคเชฟเชถเซ€เชฒ เชฐเซ€เชคเซ‡ เชฒเซ‹เชก เชฅเชฏเซ‡เชฒ เชฌเซเชฐเซ‹เชŸเชฒเซ€ เชฎเซ‹เชกเซเชฏเซเชฒ เชชเซเชฐเชพเชชเซเชค เชฅเชถเซ‡, เชคเซ‡เชฎเชœ (เชตเชงเชพเชฐเชพเชจเซ€ เชซเซ€ เชฎเชพเชŸเซ‡) NGINX ModSecurity WAF. เช…เชฎเซ‡ เชชเชฃ เช“เชซเชฐ เช•เชฐเซ€เช เช›เซ€เช NGINX เชเชช เชชเซเชฐเซ‹เชŸเซ‡เช•เซเชŸ, NGINX Plus เชฎเชพเชŸเซ‡ WAF เชฎเซ‹เชกเซเชฏเซเชฒ F5 เชฅเซ€ เช‰เชฆเซเชฏเซ‹เช—-เช…เช—เซเชฐเชฃเซ€ เชธเซเชฐเช•เซเชทเชพ เชคเช•เชจเซ€เช• เชชเชฐ เช†เชงเชพเชฐเชฟเชค เช›เซ‡.

เชจเซ‹ เช…เชคเซเชฏเช‚เชค เชฒเซ‹เชก เช•เชฐเซ‡เชฒเซ€ เชธเชพเช‡เชŸเชจเชพ เชธเชฎเชฐเซเชฅเชจ เชฎเชพเชŸเซ‡, เชคเชฎเซ‡ เชจเชฟเชทเซเชฃเชพเชคเซ‹เชจเซ‹ เชธเช‚เชชเชฐเซเช• เช•เชฐเซ€ เชถเช•เซ‹ เช›เซ‹ เชธเชพเช‰เชฅเชฌเซเชฐเซ€เชœ. เช…เชฎเซ‡ เช•เซ‹เชˆเชชเชฃ เชญเชพเชฐ เชนเซ‡เช เชณ เชคเชฎเชพเชฐเซ€ เชตเซ‡เชฌเชธเชพเช‡เชŸ เช…เชฅเชตเชพ เชธเซ‡เชตเชพเชจเซ€ เชเชกเชชเซ€ เช…เชจเซ‡ เชตเชฟเชถเซเชตเชธเชจเซ€เชฏ เช•เชพเชฎเช—เซ€เชฐเซ€เชจเซ€ เช–เชพเชคเชฐเซ€ เช•เชฐเซ€เชถเซเช‚.

เชธเซ‹เชฐเซเชธ: www.habr.com