NGINX เดฏเต‚เดฃเดฟเดฑเตเดฑเตเด‚ เด‰เดฌเตเดฃเตเดŸเตเดตเตเด‚ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เดตเต‡เตผเดกเตเดชเตเดฐเดธเตเดธเต เด‡เตปเดธเตเดฑเตเดฑเดพเดณเต‡เดทเตป เด“เดŸเตเดŸเต‹เดฎเต‡เดฑเตเดฑเต เดšเต†เดฏเตเดฏเตเดจเตเดจเต

NGINX เดฏเต‚เดฃเดฟเดฑเตเดฑเตเด‚ เด‰เดฌเตเดฃเตเดŸเตเดตเตเด‚ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เดตเต‡เตผเดกเตเดชเตเดฐเดธเตเดธเต เด‡เตปเดธเตเดฑเตเดฑเดพเดณเต‡เดทเตป เด“เดŸเตเดŸเต‹เดฎเต‡เดฑเตเดฑเต เดšเต†เดฏเตเดฏเตเดจเตเดจเต

เดตเต‡เตผเดกเตเดชเตเดฐเดธเตเดธเต เดŽเด™เตเด™เดจเต† เด‡เตปเดธเตเดฑเตเดฑเดพเตพ เดšเต†เดฏเตเดฏเดพเด‚ เดŽเดจเตเดจเดคเดฟเดจเต†เด•เตเด•เตเดฑเดฟเดšเตเดšเต เดจเดฟเดฐเดตเดงเดฟ เดŸเตเดฏเต‚เดŸเตเดŸเต‹เดฑเดฟเดฏเดฒเตเด•เตพ เด‰เดฃเตเดŸเต, "เดตเต‡เตผเดกเตเดชเตเดฐเดธเตเดธเต เด‡เตปเดธเตเดฑเตเดฑเดพเตพ" เดŽเดจเตเดจเดคเดฟเดจเดพเดฏเดฟ เด—เต‚เด—เดฟเตพ เดธเต†เตผเดšเตเดšเต เดšเต†เดฏเตเดคเดพเตฝ เดเด•เดฆเต‡เดถเด‚ เด…เดฐ เดฆเดถเดฒเด•เตเดทเด‚ เดซเดฒเด™เตเด™เตพ เดฒเดญเดฟเด•เตเด•เตเด‚. เดŽเดจเตเดจเดฟเดฐเตเดจเตเดจเดพเดฒเตเด‚, เดตเดพเดธเตเดคเดตเดคเตเดคเดฟเตฝ, เด…เดตเดฏเดฟเตฝ เดตเดณเดฐเต† เด•เตเดฑเดšเตเดšเต เดจเดฒเตเดฒ เด—เตˆเดกเตเด•เตพ เดฎเดพเดคเตเดฐเดฎเต‡เดฏเตเดณเตเดณเต‚, เด…เดคเดจเตเดธเดฐเดฟเดšเตเดšเต เดจเดฟเด™เตเด™เตพเด•เตเด•เต เดตเต‡เตผเดกเตเดชเตเดฐเดธเตเดธเตเด‚ เด…เดŸเดฟเดธเตเดฅเดพเดจ เด“เดชเตเดชเดฑเต‡เดฑเตเดฑเดฟเด‚เด—เต เดธเดฟเดธเตเดฑเตเดฑเดตเตเด‚ เด‡เตปเดธเตเดฑเตเดฑเดพเตพ เดšเต†เดฏเตเดฏเดพเดจเตเด‚ เด•เต‹เตบเดซเดฟเด—เตผ เดšเต†เดฏเตเดฏเดพเดจเตเด‚ เด•เดดเดฟเดฏเตเด‚, เด…เด™เตเด™เดจเต† เด…เดต เดฆเต€เตผเด˜เด•เดพเดฒเดคเตเดคเต‡เด•เตเด•เต เดชเดฟเดจเตเดคเตเดฃเดฏเตเด•เตเด•เดพเตป เดชเตเดฐเดพเดชเตเดคเดฎเดพเดฃเต. เด’เดฐเตเดชเด•เตเดทเต‡ เดถเดฐเดฟเดฏเดพเดฏ เด•เตเดฐเดฎเต€เด•เดฐเดฃเด™เตเด™เตพ เดจเดฟเตผเดฆเตเดฆเดฟเดทเตเดŸ เด†เดตเดถเตเดฏเด™เตเด™เดณเต† เดตเดณเดฐเต†เดฏเดงเดฟเด•เด‚ เด†เดถเตเดฐเดฏเดฟเดšเตเดšเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเต, เด…เดฒเตเดฒเต†เด™เตเด•เดฟเตฝ เดตเดฟเดถเดฆเดฎเดพเดฏ เดตเดฟเดถเดฆเต€เด•เดฐเดฃเด‚ เดฒเต‡เด–เดจเด‚ เดตเดพเดฏเดฟเด•เตเด•เดพเตป เดชเตเดฐเดฏเดพเดธเด•เดฐเดฎเดพเด•เตเด•เตเดจเตเดจเต เดŽเดจเตเดจเดคเดพเดฃเต เด‡เดคเดฟเดจเต เด•เดพเดฐเดฃเด‚.

เดˆ เดฒเต‡เด–เดจเดคเตเดคเดฟเตฝ, เด‰เดฌเตเดฃเตเดŸเตเดตเดฟเตฝ เดตเต‡เตผเดกเตเดชเตเดฐเดธเตเดธเต เดธเตเดตเดชเตเดฐเต‡เดฐเดฟเดคเดฎเดพเดฏเดฟ เด‡เตปเดธเตเดฑเตเดฑเดพเตพ เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเดพเดฏเดฟ เด’เดฐเต เดฌเดพเดทเต เดธเตเด•เตเดฐเดฟเดชเตเดฑเตเดฑเต เดจเตฝเด•เดฟ, เด…เดคเดฟเดฒเต‚เดŸเต† เดจเดŸเด•เตเด•เตเด•, เด“เดฐเต‹ เดญเดพเด—เดตเตเด‚ เดŽเดจเตเดคเตเดšเต†เดฏเตเดฏเตเดจเตเดจเตเดตเต†เดจเตเดจเตเด‚ เด…เดคเต เดตเดฟเด•เดธเดฟเดชเตเดชเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเตฝ เดžเด™เตเด™เตพ เดตเดฐเตเดคเตเดคเดฟเดฏ เดตเดฟเดŸเตเดŸเตเดตเต€เดดเตเดšเด•เดณเตเด‚ เดตเดฟเดตเดฐเดฟเดšเตเดšเตเด•เตŠเดฃเตเดŸเต เดžเด™เตเด™เตพ เดฐเดฃเตเดŸเต เดฒเต‹เด•เด™เตเด™เดณเดฟเดฒเตเด‚ เดฎเดฟเด•เดšเตเดšเดคเต เดธเด‚เดฏเต‹เดœเดฟเดชเตเดชเดฟเด•เตเด•เดพเตป เดถเตเดฐเดฎเดฟเด•เตเด•เตเด‚. . เดจเดฟเด™เตเด™เตพ เด’เดฐเต เดตเดฟเดชเตเดฒเดฎเดพเดฏ เด‰เดชเดฏเต‹เด•เตเดคเดพเดตเดพเดฃเต†เด™เตเด•เดฟเตฝ, เดจเดฟเด™เตเด™เตพเด•เตเด•เต เดฒเต‡เด–เดจเดคเตเดคเดฟเดจเตเดฑเต† เดตเดพเดšเด•เด‚ เด’เดดเดฟเดตเดพเด•เตเด•เดพเด‚ เดธเตเด•เตเดฐเดฟเดชเตเดฑเตเดฑเต เดŽเดŸเตเด•เตเด•เตเด• เดจเดฟเด™เตเด™เดณเตเดŸเต† เดชเดฐเดฟเดคเดธเตเดฅเดฟเดคเดฟเดฏเดฟเตฝ เดฎเดพเดฑเตเดฑเด‚ เดตเดฐเตเดคเตเดคเตเดจเตเดจเดคเดฟเดจเตเด‚ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเตเด‚. เดŽเตปโ€Œเดœเดฟโ€ŒเดŽเตปโ€ŒเดŽเด•เตเดธเต เดฏเต‚เดฃเดฟเดฑเตเดฑเดฟเตฝ เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดจเตเดจเดคเตเด‚ เด‰เตฝโ€Œเดชเดพเดฆเดจ เด‰เดชเดฏเต‹เด—เดคเตเดคเดฟเดจเต เด…เดจเตเดฏเต‹เดœเตเดฏเดตเตเดฎเดพเดฏ เดฒเต†เดฑเตเดฑเตเดธเต เดŽเตปโ€Œเด•เตเดฐเดฟเดชเตเดฑเตเดฑเต เดชเดฟเดจเตเดคเตเดฃเดฏเตเดณเตเดณ เด’เดฐเต เด‡เดทเตโ€ŒเดŸเดพเดจเตเดธเตƒเดค เดตเต‡เตผเดกเตเดชเตเดฐเดธเตเดธเต เด‡เตปเดธเตเดฑเตเดฑเดพเดณเต‡เดทเดจเดพเดฃเต เดธเตโ€Œเด•เตเดฐเดฟเดชเตเดฑเตเดฑเดฟเดจเตเดฑเต† เด”เดŸเตเดŸเตโ€ŒเดชเตเดŸเตเดŸเต.

NGINX เดฏเต‚เดฃเดฟเดฑเตเดฑเต เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เดตเต‡เตผเดกเตเดชเตเดฐเดธเตเดธเต เดตเดฟเดจเตเดฏเดธเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เดตเดฟเด•เดธเดฟเดชเตเดชเดฟเดšเตเดš เด†เตผเด•เตเด•เดฟเดŸเต†เด•เตเดšเตผ เดตเดฟเดตเดฐเดฟเดšเตเดšเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเต เดชเดดเดฏ เดฒเต‡เด–เดจเด‚, เด‡เดชเตเดชเต‹เตพ เดžเด™เตเด™เตพ เด…เดตเดฟเดŸเต† เด‰เตพเดชเตเดชเต†เดŸเตเดคเตเดคเดพเดคเตเดค เด•เดพเดฐเตเดฏเด™เตเด™เดณเตเด‚ เด•เต‚เดŸเตเดคเตฝ เด•เต‹เตบเดซเดฟเด—เตผ เดšเต†เดฏเตเดฏเตเด‚ (เดฎเดฑเตเดฑเต เดชเดฒ เดŸเตเดฏเต‚เดŸเตเดŸเต‹เดฑเดฟเดฏเดฒเตเด•เดณเดฟเดฒเตเด‚ เด‰เดณเตเดณเดคเตเดชเต‹เดฒเต†):

  • WordPress CLI
  • เดจเดฎเตเด•เตเด•เต เดŽเตปเด•เตเดฐเดฟเดชเตเดฑเตเดฑเต เดšเต†เดฏเตเดคเต TLSSSL เดธเตผเดŸเตเดŸเดฟเดซเดฟเด•เตเด•เดฑเตเดฑเตเด•เตพ เดšเต†เดฏเตเดฏเดพเด‚
  • เดธเตผเดŸเตเดŸเดฟเดซเดฟเด•เตเด•เดฑเตเดฑเตเด•เดณเตเดŸเต† เดฏเดพเดจเตเดคเตเดฐเดฟเด• เดชเตเดคเตเด•เตเด•เตฝ
  • NGINX เด•เดพเดทเดฟเด‚เด—เต
  • NGINX เด•เด‚เดชเตเดฐเดทเตป
  • HTTPS, HTTP/2 เดชเดฟเดจเตเดคเตเดฃ
  • เดชเตเดฐเต‹เดธเดธเต เด“เดŸเตเดŸเต‹เดฎเต‡เดทเตป

เด’เดฐเต เดธเต†เตผเดตเดฑเดฟเดฒเต† เด‡เตปเดธเตเดฑเตเดฑเดพเดณเต‡เดทเดจเต† เดฒเต‡เด–เดจเด‚ เดตเดฟเดตเดฐเดฟเด•เตเด•เตเด‚, เด…เดคเต เด’เดฐเต‡เดธเดฎเดฏเด‚ เด’เดฐเต เดธเตเดฑเตเดฑเดพเดฑเตเดฑเดฟเด•เต เดชเตเดฐเต‹เดธเดธเตเดธเดฟเด‚เด—เต เดธเต†เตผเดตเตผ, เด’เดฐเต PHP เดชเตเดฐเต‹เดธเดธเตเดธเดฟเด‚เด—เต เดธเต†เตผเดตเตผ, เด’เดฐเต เดกเดพเดฑเตเดฑเดพเดฌเต‡เดธเต เดŽเดจเตเดจเดฟเดต เดนเต‹เดธเตเดฑเตเดฑเต เดšเต†เดฏเตเดฏเตเด‚. เด’เดจเตเดจเดฟเดฒเดงเดฟเด•เด‚ เดตเต†เตผเดšเตเดตเตฝ เดนเต‹เดธเตเดฑเตเดฑเตเด•เดณเต†เดฏเตเด‚ เดธเต‡เดตเดจเด™เตเด™เดณเต†เดฏเตเด‚ เดชเดฟเดจเตเดคเตเดฃเดฏเตเด•เตเด•เตเดจเตเดจ เด’เดฐเต เด‡เตปเดธเตเดฑเตเดฑเดพเดณเต‡เดทเตป เดญเดพเดตเดฟเดฏเดฟเดฒเต‡เด•เตเด•เตเดณเตเดณ เด’เดฐเต เดธเดพเดงเตเดฏเดคเดฏเตเดณเตเดณ เดตเดฟเดทเดฏเดฎเดพเดฃเต. เดˆ เดฒเต‡เด–เดจเด™เตเด™เดณเดฟเตฝ เด‡เดฒเตเดฒเดพเดคเตเดค เด•เดพเดฐเตเดฏเด™เตเด™เดณเต†เด•เตเด•เตเดฑเดฟเดšเตเดšเต เดžเด™เตเด™เตพ เดŽเดดเตเดคเดฃเดฎเต†เดจเตเดจเต เดจเดฟเด™เตเด™เตพ เด†เด—เตเดฐเดนเดฟเด•เตเด•เตเดจเตเดจเตเดตเต†เด™เตเด•เดฟเตฝ, เด…เดญเดฟเดชเตเดฐเดพเดฏเด™เตเด™เดณเดฟเตฝ เดŽเดดเตเดคเตเด•.

เด†เดตเดถเตเดฏเด•เดคเด•เตพ

  • เด•เดฃเตเดŸเต†เดฏเตเดจเตผ เดธเต†เตผเดตเตผ (LXC เด…เดฅเดตเดพ เดŽเตฝเดŽเด•เตเดธเตเดกเดฟ), เด’เดฐเต เดตเต†เตผเดšเตเดตเตฝ เดฎเต†เดทเต€เตป, เด…เดฒเตเดฒเต†เด™เตเด•เดฟเตฝ เด•เตเดฑเดžเตเดžเดคเต 512MB เดฑเดพเดฎเตเด‚ เด‰เดฌเตเดฃเตเดŸเต 18.04 เด…เดฒเตเดฒเต†เด™เตเด•เดฟเตฝ เดชเตเดคเดฟเดฏเดคเตเด‚ เด‡เตปเดธเตเดฑเตเดฑเดพเตพ เดšเต†เดฏเตเดคเดฟเดŸเตเดŸเตเดณเตเดณ เด’เดฐเต เดธเดพเดงเดพเดฐเดฃ เด‡เดฐเตเดฎเตเดชเต เดธเต†เตผเดตเตผ.
  • เด‡เดจเตเดฑเตผเดจเต†เดฑเตเดฑเต เด†เด•เตเดธเดธเต เดšเต†เดฏเตเดฏเดพเดตเตเดจเตเดจ เดชเต‹เตผเดŸเตเดŸเตเด•เตพ 80, 443
  • เดˆ เดธเต†เตผเดตเดฑเดฟเดจเตเดฑเต† เดชเตŠเดคเต เดเดชเดฟ เดตเดฟเดฒเดพเดธเดตเตเดฎเดพเดฏเดฟ เดฌเดจเตเดงเดชเตเดชเต†เดŸเตเดŸ เดกเตŠเดฎเต†เดฏเตเตป เดจเดพเดฎเด‚
  • เดฑเต‚เดŸเตเดŸเต เด†เด•เตเดธเดธเต (เดธเตเดกเต‹).

เดตเดพเดธเตเดคเตเดตเดฟเดฆเตเดฏเดฏเตเดŸเต† เด…เดตเดฒเต‹เด•เดจเด‚

เดตเดพเดธเตเดคเตเดตเดฟเดฆเตเดฏ เดตเดฟเดตเดฐเดฟเดšเตเดšเดคเตเดชเต‹เดฒเต† เดคเดจเตเดจเต† เดจเต‡เดฐเดคเตเดคเต†, เด’เดฐเต เดคเตเดฐเดฟเดคเดฒ เดตเต†เดฌเต เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเตป. PHP เดŽเดžเตเดšเดฟเดจเดฟเตฝ เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดจเตเดจ PHP เดธเตเด•เตเดฐเดฟเดชเตเดฑเตเดฑเตเด•เดณเตเด‚ เดตเต†เดฌเต เดธเต†เตผเดตเตผ เดชเตเดฐเต‹เดธเดธเตเดธเต เดšเต†เดฏเตเดฏเตเดจเตเดจ เดธเตเดฑเตเดฑเดพเดฑเตเดฑเดฟเด•เต เดซเดฏเดฒเตเด•เดณเตเด‚ เด‡เดคเดฟเตฝ เด…เดŸเด™เตเด™เดฟเดฏเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเต.

NGINX เดฏเต‚เดฃเดฟเดฑเตเดฑเตเด‚ เด‰เดฌเตเดฃเตเดŸเตเดตเตเด‚ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เดตเต‡เตผเดกเตเดชเตเดฐเดธเตเดธเต เด‡เตปเดธเตเดฑเตเดฑเดพเดณเต‡เดทเตป เด“เดŸเตเดŸเต‹เดฎเต‡เดฑเตเดฑเต เดšเต†เดฏเตเดฏเตเดจเตเดจเต

เดชเตŠเดคเตเดตเดพเดฏ เดคเดคเตเดตเด™เตเด™เตพ

  • เด’เดฐเต เดธเตโ€Œเด•เตเดฐเดฟเดชเตโ€Œเดฑเตเดฑเดฟเดฒเต† เดชเดฒ เด•เต‹เตบเดซเดฟเด—เดฑเต‡เดทเตป เด•เดฎเดพเตปเดกเตเด•เดณเตเด‚ เดเดกเดฎเตเดชเดฑเตเดฑเตปเดธเดฟเดฏเตเดŸเต† เดตเตเดฏเดตเดธเตเดฅเด•เดณเดพเดฃเต†เด™เตเด•เดฟเตฝ เดชเตŠเดคเดฟเดžเตเดžเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเต: เด‡เดคเดฟเดจเด•เด‚ เดจเดฟเดฒเดตเดฟเดฒเตเดณเตเดณ เด•เตเดฐเดฎเต€เด•เดฐเดฃเด™เตเด™เตพ เดฎเดพเดฑเตเดฑเดพเดจเตเดณเตเดณ เดธเดพเดงเตเดฏเดคเดฏเดฟเดฒเตเดฒเดพเดคเต† เดธเตโ€Œเด•เตเดฐเดฟเดชเตเดฑเตเดฑเต เด’เดจเตเดจเดฟเดฒเดงเดฟเด•เด‚ เดคเดตเดฃ เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเด•เตเด•เดพเตป เด•เดดเดฟเดฏเตเด‚.
  • เดฑเดฟเดชเตเดชเต‹เดธเดฟเดฑเตเดฑเดฑเดฟเด•เดณเดฟเตฝ เดจเดฟเดจเตเดจเต เดธเต‹เดซเตเดฑเตเดฑเตโ€Œเดตเต†เดฏเตผ เด‡เตปเดธเตเดฑเตเดฑเดพเตพ เดšเต†เดฏเตเดฏเดพเตป เดธเตโ€Œเด•เตเดฐเดฟเดชเตเดฑเตเดฑเต เดถเตเดฐเดฎเดฟเด•เตเด•เตเดจเตเดจเต, เด…เดคเดฟเดจเดพเตฝ เดจเดฟเด™เตเด™เตพเด•เตเด•เต เด’เดฐเต เด•เดฎเดพเตปเดกเดฟเตฝ เดธเดฟเดธเตเดฑเตเดฑเด‚ เด…เดชเตโ€Œเดกเต‡เดฑเตเดฑเตเด•เตพ เดชเตเดฐเดฏเต‹เด—เดฟเด•เตเด•เดพเตป เด•เดดเดฟเดฏเตเด‚ (apt upgrade เด‰เดฌเตเดฃเตเดŸเตเดตเดฟเดจเดพเดฏเดฟ).
  • เด•เดฎเดพเตปเดกเตเด•เตพ เด’เดฐเต เด•เดฃเตเดŸเต†เดฏเตโ€Œเดจเดฑเดฟเตฝ เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดจเตเดจเตเดฃเตเดŸเต†เดจเตเดจเต เด•เดฃเตเดŸเต†เดคเตเดคเดพเตป เดถเตเดฐเดฎเดฟเด•เตเด•เตเดจเตเดจเต, เด…เดคเดฟเดฒเต‚เดŸเต† เด…เดตเตผเด•เตเด•เต เด…เดตเดฏเตเดŸเต† เด•เตเดฐเดฎเต€เด•เดฐเดฃเด™เตเด™เตพ เดฎเดพเดฑเตเดฑเดพเดจเดพเด•เตเด‚.
  • เด•เตเดฐเดฎเต€เด•เดฐเดฃเด™เตเด™เดณเดฟเตฝ เด†เดฐเด‚เดญเดฟเด•เตเด•เต‡เดฃเตเดŸ เดคเตเดฐเต†เดกเต เดชเตเดฐเด•เตเดฐเดฟเดฏเด•เดณเตเดŸเต† เดŽเดฃเตเดฃเด‚ เดธเดœเตเดœเต€เด•เดฐเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเต, เด•เดฃเตเดŸเต†เดฏเตโ€Œเดจเดฑเตเด•เตพ, เดตเต†เตผเดšเตเดตเตฝ เดฎเต†เดทเต€เดจเตเด•เตพ, เดนเดพเตผเดกเตโ€Œเดตเต†เดฏเตผ เดธเต†เตผเดตเดฑเตเด•เตพ เดŽเดจเตเดจเดฟเดตเดฏเดฟเตฝ เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เด“เดŸเตเดŸเต‹เดฎเดพเดฑเตเดฑเดฟเด•เต เด•เตเดฐเดฎเต€เด•เดฐเดฃเด™เตเด™เตพ เดŠเดนเดฟเด•เตเด•เดพเตป เดธเตโ€Œเด•เตเดฐเดฟเดชเตเดฑเตเดฑเต เดถเตเดฐเดฎเดฟเด•เตเด•เตเดจเตเดจเต.
  • เด•เตเดฐเดฎเต€เด•เดฐเดฃเด™เตเด™เตพ เดตเดฟเดตเดฐเดฟเด•เตเด•เตเดฎเตเดชเต‹เตพ, เดžเด™เตเด™เตพ เดŽเดฒเตเดฒเดพเดฏเตเดชเตเดชเต‹เดดเตเด‚ เด“เดŸเตเดŸเต‹เดฎเต‡เดทเดจเต†เด•เตเด•เตเดฑเดฟเดšเตเดšเดพเดฃเต เด†เดฆเตเดฏเด‚ เดšเดฟเดจเตเดคเดฟเด•เตเด•เตเดจเตเดจเดคเต, เด…เดคเต เดจเดฟเด™เตเด™เดณเตเดŸเต† เดธเตเดตเดจเตเดคเด‚ เด‡เตปเดซเตเดฐเดพเดธเตเดŸเตเดฐเด•เตเดšเตผ เด•เต‹เดกเดพเดฏเดฟ เดธเตƒเดทเตเดŸเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เด…เดŸเดฟเดธเตเดฅเดพเดจเดฎเดพเดฏเดฟ เดฎเดพเดฑเตเดฎเต†เดจเตเดจเต เดžเด™เตเด™เตพ เดชเตเดฐเดคเต€เด•เตเดทเดฟเด•เตเด•เตเดจเตเดจเต.
  • เดŽเดฒเตเดฒเดพ เด•เดฎเดพเตปเดกเตเด•เดณเตเด‚ เด‰เดชเดฏเต‹เด•เตเดคเดพเดตเดพเดฏเดฟ เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดจเตเดจเต เดตเต‡เดฐเต, เด•เดพเดฐเดฃเด‚ เด…เดตเตผ เด…เดŸเดฟเดธเตเดฅเดพเดจ เดธเดฟเดธเตเดฑเตเดฑเด‚ เด•เตเดฐเดฎเต€เด•เดฐเดฃเด™เตเด™เตพ เดฎเดพเดฑเตเดฑเตเดจเตเดจเต, เดชเด•เตเดทเต‡ เดจเต‡เดฐเดฟเดŸเตเดŸเต WordPress เด’เดฐเต เดธเดพเดงเดพเดฐเดฃ เด‰เดชเดฏเต‹เด•เตเดคเดพเดตเดพเดฏเดฟ เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดจเตเดจเต.

เดชเดฐเดฟเดธเตเดฅเดฟเดคเดฟ เดตเต‡เดฐเดฟเดฏเดฌเดฟเดณเตเด•เตพ เด•เตเดฐเดฎเต€เด•เดฐเดฟเด•เตเด•เตเดจเตเดจเต

เดธเตเด•เตเดฐเดฟเดชเตเดฑเตเดฑเต เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเต เดฎเตเดฎเตเดชเต เด‡เดจเดฟเดชเตเดชเดฑเดฏเตเดจเตเดจ เดชเดฐเดฟเดธเตเดฅเดฟเดคเดฟ เดตเต‡เดฐเดฟเดฏเดฌเดฟเดณเตเด•เตพ เดธเดœเตเดœเดฎเดพเด•เตเด•เตเด•:

  • WORDPRESS_DB_PASSWORD - เดตเต‡เตผเดกเตเดชเตเดฐเดธเตเดธเต เดกเดพเดฑเตเดฑเดพเดฌเต‡เดธเต เดชเดพเดธเตเดตเต‡เดกเต
  • WORDPRESS_ADMIN_USER - เดตเต‡เตผเดกเตเดชเตเดฐเดธเตเดธเต เด…เดกเตเดฎเดฟเตป เดจเดพเดฎเด‚
  • WORDPRESS_ADMIN_PASSWORD - เดตเต‡เตผเดกเตเดชเตเดฐเดธเตเดธเต เด…เดกเตเดฎเดฟเตป เดชเดพเดธเตเดตเต‡เดกเต
  • WORDPRESS_ADMIN_EMAIL - เดตเต‡เตผเดกเตเดชเตเดฐเดธเตเดธเต เด…เดกเตเดฎเดฟเตป เด‡เดฎเต†เดฏเดฟเตฝ
  • WORDPRESS_URL เดตเต‡เตผเดกเตเดชเตเดฐเดธเตเดธเต เดธเตˆเดฑเตเดฑเดฟเดจเตเดฑเต† เดฎเตเดดเตเดตเตป URL เด†เดฃเต, เด†เดฐเด‚เดญเดฟเด•เตเด•เตเดจเตเดจเดคเต https://.
  • LETS_ENCRYPT_STAGING - เดกเดฟเดซเต‹เตพเดŸเตเดŸเดพเดฏเดฟ เดถเต‚เดจเตเดฏเดฎเดพเดฃเต, เดŽเดจเตเดจเดพเตฝ เดฎเต‚เดฒเตเดฏเด‚ 1 เด†เดฏเดฟ เดธเดœเตเดœเต€เด•เดฐเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดฒเต‚เดŸเต†, เดจเดฟเด™เตเด™เตพ เดฒเต†เดฑเตเดฑเตเดธเต เดŽเตปเด•เตเดฐเดฟเดชเตเดฑเตเดฑเต เดธเตเดฑเตเดฑเต‡เดœเดฟเด‚เด—เต เดธเต†เตผเดตเดฑเตเด•เตพ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเด‚, เดจเดฟเด™เตเด™เดณเตเดŸเต† เด•เตเดฐเดฎเต€เด•เดฐเดฃเด™เตเด™เตพ เดชเดฐเดฟเดถเต‹เดงเดฟเด•เตเด•เตเดฎเตเดชเต‹เตพ เดชเดคเดฟเดตเดพเดฏเดฟ เดธเตผเดŸเตเดŸเดฟเดซเดฟเด•เตเด•เดฑเตเดฑเตเด•เตพ เด…เดญเตเดฏเตผเดคเตเดฅเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเต เด…เดต เด†เดตเดถเตเดฏเดฎเดพเดฃเต, เด…เดฒเตเดฒเดพเดคเตเดคเดชเด•เตเดทเด‚ เดงเดพเดฐเดพเดณเด‚ เด…เดญเตเดฏเตผเดคเตเดฅเดจเด•เตพ เด•เดพเดฐเดฃเด‚ เดŽเตปเด•เตเดฐเดฟเดชเตเดฑเตเดฑเต เดจเดฟเด™เตเด™เดณเตเดŸเต† เดเดชเดฟ เดตเดฟเดฒเดพเดธเด‚ เดคเดพเตฝเด•เตเด•เดพเดฒเดฟเด•เดฎเดพเดฏเดฟ เดคเดŸเดžเตเดžเต‡เด•เตเด•เดพเด‚. .

เดˆ เดตเต‡เตผเดกเตเดชเตเดฐเดธเตเดธเตเดฎเดพเดฏเดฟ เดฌเดจเตเดงเดชเตเดชเต†เดŸเตเดŸ เดตเต‡เดฐเดฟเดฏเดฌเดฟเดณเตเด•เตพ เดธเดœเตเดœเต€เด•เดฐเดฟเดšเตเดšเดฟเดŸเตเดŸเตเดฃเตเดŸเต‹เดฏเต†เดจเตเดจเต เดธเตเด•เตเดฐเดฟเดชเตเดฑเตเดฑเต เดชเดฐเดฟเดถเต‹เดงเดฟเด•เตเด•เตเดจเตเดจเต, เด‡เดฒเตเดฒเต†เด™เตเด•เดฟเตฝ เดชเตเดฑเดคเตเดคเตเด•เดŸเด•เตเด•เตเดจเตเดจเต.
เดธเตเด•เตเดฐเดฟเดชเตเดฑเตเดฑเต เดฒเตˆเดจเตเด•เตพ 572-576 เดฎเต‚เดฒเตเดฏเด‚ เดชเดฐเดฟเดถเต‹เดงเดฟเด•เตเด•เตเด• LETS_ENCRYPT_STAGING.

เด‰เดฐเตเดคเตเดคเดฟเดฐเดฟเดžเตเดž เดชเดฐเดฟเดธเตเดฅเดฟเดคเดฟ เดตเต‡เดฐเดฟเดฏเดฌเดฟเดณเตเด•เตพ เดธเดœเตเดœเต€เด•เดฐเดฟเด•เตเด•เตเดจเตเดจเต

55-61 เดตเดฐเดฟเด•เดณเดฟเดฒเต† เดธเตโ€Œเด•เตเดฐเดฟเดชเตเดฑเตเดฑเต เด‡เดจเดฟเดชเตเดชเดฑเดฏเตเดจเตเดจ เดŽเตปเดตเดฏเต‹เตบเดฎเต†เดจเตเดฑเต เดตเต‡เดฐเดฟเดฏเดฌเดฟเดณเตเด•เตพ เดธเดœเตเดœเดฎเดพเด•เตเด•เตเดจเตเดจเต, เด’เดจเตเดจเตเด•เดฟเตฝ เดšเดฟเดฒ เดนเดพเตผเดกเต-เด•เต‹เดกเตเดšเต†เดฏเตโ€Œเดค เดฎเต‚เดฒเตเดฏเดคเตเดคเดฟเดฒเต‡เด•เตเด•เต เด…เดฒเตเดฒเต†เด™เตเด•เดฟเตฝ เดฎเตเดฎเตเดชเดคเตเดคเต† เดตเดฟเดญเดพเด—เดคเตเดคเดฟเตฝ เดธเดœเตเดœเดฎเดพเด•เตเด•เดฟเดฏ เดตเต‡เดฐเดฟเดฏเดฌเดฟเดณเตเด•เดณเดฟเตฝ เดจเดฟเดจเตเดจเต เดฒเดญเดฟเดšเตเดš เด’เดฐเต เดฎเต‚เดฒเตเดฏเด‚ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเต:

  • DEBIAN_FRONTEND="noninteractive" - เด…เดต เด’เดฐเต เดธเตโ€Œเด•เตเดฐเดฟเดชเตโ€Œเดฑเตเดฑเดฟเดฒเดพเดฃเต เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดจเตเดจเดคเต†เดจเตเดจเตเด‚ เด‰เดชเดฏเต‹เด•เตเดคเตƒ เด‡เดŸเดชเต†เดŸเดฒเดฟเดจเต เดธเดพเดงเตเดฏเดคเดฏเดฟเดฒเตเดฒเต†เดจเตเดจเตเด‚ เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเดจเตเด•เดณเต‹เดŸเต เดชเดฑเดฏเตเดจเตเดจเต.
  • WORDPRESS_CLI_VERSION="2.4.0" WordPress CLI เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเดจเตเดฑเต† เดชเดคเดฟเดชเตเดชเดพเดฃเต.
  • WORDPRESS_CLI_MD5= "dedd5a662b80cda66e9e25d44c23b25c" โ€” WordPress CLI 2.4.0 เดŽเด•เตเดธเดฟเด•เตเดฏเต‚เดŸเตเดŸเดฌเดฟเตพ เดซเดฏเดฒเดฟเดจเตเดฑเต† เดšเต†เด•เตเด•เตเดธเด‚ (เดชเดคเดฟเดชเตเดชเต เดตเต‡เดฐเดฟเดฏเดฌเดฟเดณเดฟเตฝ เดตเตเดฏเด•เตเดคเดฎเดพเด•เตเด•เดฟเดฏเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเต WORDPRESS_CLI_VERSION). เดถเดฐเดฟเดฏเดพเดฏ WordPress CLI เดซเดฏเตฝ เดกเต—เตบเดฒเต‹เดกเต เดšเต†เดฏเตโ€ŒเดคเดฟเดŸเตเดŸเตเดฃเตเดŸเต‹เดฏเต†เดจเตเดจเต เดชเดฐเดฟเดถเต‹เดงเดฟเด•เตเด•เดพเตป เดตเดฐเดฟ 162-เดฒเต† เดธเตโ€Œเด•เตเดฐเดฟเดชเตเดฑเตเดฑเต เดˆ เดฎเต‚เดฒเตเดฏเด‚ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเต.
  • UPLOAD_MAX_FILESIZE="16M" - WordPress-เตฝ เด…เดชเตโ€Œเดฒเต‹เดกเต เดšเต†เดฏเตเดฏเดพเตป เด•เดดเดฟเดฏเตเดจเตเดจ เดชเดฐเดฎเดพเดตเดงเดฟ เดซเดฏเตฝ เดตเดฒเตเดชเตเดชเด‚. เดˆ เด•เตเดฐเดฎเต€เด•เดฐเดฃเด‚ เดจเดฟเดฐเดตเดงเดฟ เดธเตเดฅเดฒเด™เตเด™เดณเดฟเตฝ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเต, เด…เดคเดฟเดจเดพเตฝ เด‡เดคเต เด’เดฐเดฟเดŸเดคเตเดคเต เดธเดœเตเดœเต€เด•เดฐเดฟเด•เตเด•เตเดจเตเดจเดคเต เดŽเดณเตเดชเตเดชเดฎเดพเดฃเต.
  • TLS_HOSTNAME= "$(echo ${WORDPRESS_URL} | cut -d'/' -f3)" - เดธเดฟเดธเตเดฑเตเดฑเดคเตเดคเดฟเดจเตเดฑเต† เดนเต‹เดธเตเดฑเตเดฑเตเดจเดพเดฎเด‚, WORDPRESS_URL เดตเต‡เดฐเดฟเดฏเดฌเดฟเดณเดฟเตฝ เดจเดฟเดจเตเดจเต เดตเต€เดฃเตเดŸเต†เดŸเตเดคเตเดคเต. เดฒเต†เดฑเตเดฑเตเดธเต เดŽเตปเด•เตเดฐเดฟเดชเตเดฑเตเดฑเต, เด‡เดจเตเดฑเต‡เดฃเตฝ เดตเต‡เตผเดกเตเดชเตเดฐเดธเตเดธเต เดชเดฐเดฟเดถเต‹เดงเดจ เดŽเดจเตเดจเดฟเดตเดฏเดฟเตฝ เดจเดฟเดจเตเดจเต เด‰เดšเดฟเดคเดฎเดพเดฏ 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

NGINX, NGINX เดฏเต‚เดฃเดฟเดฑเตเดฑเต, PHP MariaDB, Certbot (เดจเดฎเตเด•เตเด•เต เดŽเตปเด•เตเดฐเดฟเดชเตเดฑเตเดฑเต เดšเต†เดฏเตเดฏเดพเด‚) เดŽเดจเตเดจเดฟเดตเดฏเตเด‚ เด…เดตเดฏเตเดŸเต† เดกเดฟเดชเตปเดกเตปเดธเดฟเด•เดณเตเด‚ เด‡เตปเดธเตเดฑเตเดฑเดพเตพ เดšเต†เดฏเตเดฏเตเดจเตเดจเต

เดŽเดฒเตเดฒเดพ เดฑเดฟเดชเตเดชเต‹เดธเดฟเดฑเตเดฑเดฑเดฟเด•เดณเตเด‚ เดšเต‡เตผเดคเตเดคเตเด•เดดเดฟเดžเตเดžเดพเตฝ, เดฎเต†เดฑเตเดฑเดพเดกเดพเดฑเตเดฑ เด…เดชเตเดกเต‡เดฑเตเดฑเต เดšเต†เดฏเตเดคเต เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเดจเตเด•เตพ เด‡เตปเดธเตเดฑเตเดฑเดพเตพ เดšเต†เดฏเตเดฏเตเด•. เดธเตเด•เตเดฐเดฟเดชเตเดฑเตเดฑเต เด‡เตปเดธเตเดฑเตเดฑเดพเตพ เดšเต†เดฏเตเดค เดชเดพเด•เตเด•เต‡เดœเตเด•เดณเดฟเตฝ 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 เดฏเต‚เดฃเดฟเดฑเตเดฑเต, WordPress เดŽเดจเตเดจเดฟเดตเดฏเตโ€Œเด•เตเด•เตŠเดชเตเดชเด‚ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเต 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

WordPress-เดจเตเดณเตเดณ MariaDB เดกเดพเดฑเตเดฑเดพเดฌเต‡เดธเต เด•เตเดฐเดฎเต€เด•เดฐเดฃเด™เตเด™เตพ เดตเตเดฏเด•เตเดคเดฎเดพเด•เตเด•เตเดจเตเดจเต

MySQL-เดจเต‡เด•เตเด•เดพเตพ เด•เต‚เดŸเตเดคเตฝ เด•เดฎเตเดฎเตเดฏเต‚เดฃเดฟเดฑเตเดฑเดฟ เดชเตเดฐเดตเตผเดคเตเดคเดจเด‚ เด‰เดณเตเดณเดคเดฟเดจเดพเดฒเตเด‚ เด…เดคเดฟเดจเต เดธเดพเดงเตเดฏเดคเดฏเตเดณเตเดณเดคเดฟเดจเดพเดฒเตเด‚ เดžเด™เตเด™เตพ MariaDB เดคเดฟเดฐเดžเตเดžเต†เดŸเตเดคเตเดคเต เดธเตเดฅเดฟเดฐเดธเตเดฅเดฟเดคเดฟเดฏเดพเดฏเดฟ เดฎเดฟเด•เดšเตเดš เดชเตเดฐเด•เดŸเดจเด‚ เดจเตฝเด•เตเดจเตเดจเต (เด’เดฐเตเดชเด•เตเดทเต‡, เดŽเดฒเตเดฒเดพเด‚ เด‡เดตเดฟเดŸเต† เดฒเดณเดฟเดคเดฎเดพเดฃเต: 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;"

WordPress CLI เดชเตเดฐเต‹เด—เตเดฐเดพเด‚ เด‡เตปเดธเตเดฑเตเดฑเดพเตพ เดšเต†เดฏเตเดฏเตเดจเตเดจเต

เดˆ เด˜เดŸเตเดŸเดคเตเดคเดฟเตฝ, เดธเตเด•เตเดฐเดฟเดชเตเดฑเตเดฑเต เดชเตเดฐเต‹เด—เตเดฐเดพเด‚ เด‡เตปเดธเตเดฑเตเดฑเดพเตพ เดšเต†เดฏเตเดฏเตเดจเตเดจเต : WP-เดฏเตเด. เด‡เดคเต เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต, เดซเดฏเดฒเตเด•เตพ เดธเตเดตเดฎเต‡เดงเดฏเดพ เดŽเดกเดฟเดฑเตเดฑเต เดšเต†เดฏเตเดฏเดพเดคเต†เดฏเตเด‚ เดกเดพเดฑเตเดฑเดพเดฌเต‡เดธเต เด…เดชเตเดกเต‡เดฑเตเดฑเต เดšเต†เดฏเตเดฏเดพเดคเต†เดฏเตเด‚ เด…เดฒเตเดฒเต†เด™เตเด•เดฟเตฝ เดจเดฟเดฏเดจเตเดคเตเดฐเดฃ เดชเดพเดจเตฝ เดจเตฝเด•เดพเดคเต†เดฏเตเด‚ เดจเดฟเด™เตเด™เตพเด•เตเด•เต เดตเต‡เตผเดกเตเดชเตเดฐเดธเตเดธเต เด•เตเดฐเดฎเต€เด•เดฐเดฃเด™เตเด™เตพ เด‡เตปเดธเตเดฑเตเดฑเดพเตพ เดšเต†เดฏเตเดฏเดพเดจเตเด‚ เดจเดฟเดฏเดจเตเดคเตเดฐเดฟเด•เตเด•เดพเดจเตเด‚ เด•เดดเดฟเดฏเตเด‚. เดคเต€เดฎเตเด•เดณเตเด‚ เด†เดกเต-เด“เดฃเตเด•เดณเตเด‚ เด‡เตปเดธเตเดฑเตเดฑเดพเตพ เดšเต†เดฏเตเดฏเดพเดจเตเด‚ เดตเต‡เตผเดกเตเดชเตเดฐเดธเตเดธเต เด…เดชเตเดกเต‡เดฑเตเดฑเต เดšเต†เดฏเตเดฏเดพเดจเตเด‚ เด‡เดคเต เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เดพเด‚.

เดธเตเด•เตเดฐเดฟเดชเตเดฑเตเดฑเต เด•เต‹เดกเต

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-เดจเตเดฑเต† เดเดฑเตเดฑเดตเตเด‚ เดชเตเดคเดฟเดฏ เดชเดคเดฟเดชเตเดชเต เด‡เตปเดธเตเดฑเตเดฑเดพเตพ เดšเต†เดฏเตเดฏเตเดจเตเดจเต /var/www/wordpressเด•เต‚เดŸเดพเดคเต† เด•เตเดฐเดฎเต€เด•เดฐเดฃเด™เตเด™เดณเตเด‚ เดฎเดพเดฑเตเดฑเตเดจเตเดจเต:

  • เดŸเดฟเดธเดฟเดชเดฟ เดŸเตเดฐเดพเดซเดฟเด•เต เด•เตเดฑเดฏเตเด•เตเด•เตเดจเตเดจเดคเดฟเดจเต เดฒเต‚เดชเตเดชเตเดฌเดพเด•เตเด•เดฟเดฒเต† เดŸเดฟเดธเดฟเดชเดฟเด•เตเด•เต เดชเด•เดฐเด‚ เดฏเตเดฃเดฟเด•เตเดธเต เดกเตŠเดฎเต†เดฏเตเตป เดธเต‹เด•เตเด•เดฑเตเดฑเดฟเตฝ เดกเดพเดฑเตเดฑเดพเดฌเต‡เดธเต เด•เดฃเด•เตเดทเตป เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดจเตเดจเต.
  • WordPress เด’เดฐเต เดชเตเดฐเดฟเดซเดฟเด•เตเดธเต เดšเต‡เตผเด•เตเด•เตเดจเตเดจเต https:// เด•เตเดฒเดฏเดจเตเดฑเตเด•เตพ เดŽเดšเตเดšเตเดŸเดฟเดŸเดฟเดชเดฟเดŽเดธเดฟเดฒเต‚เดŸเต† NGINX-เดฒเต‡เด•เตเด•เต เด•เดฃเด•เตโ€Œเดฑเตเดฑเตเดšเต†เดฏเตโ€Œเดคเดพเตฝ URL-เดฒเต‡เด•เตเด•เต, เด•เต‚เดŸเดพเดคเต† เดฑเดฟเดฎเต‹เดŸเตเดŸเต เดนเต‹เดธเตเดฑเตเดฑเตเดจเดพเดฎเดตเตเด‚ (NGINX เดจเตฝเด•เดฟเดฏเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเดคเต เดชเต‹เดฒเต†) PHP-เดฒเต‡เด•เตเด•เต เด…เดฏเดฏเตเด•เตเด•เตเดจเตเดจเต. เด‡เดคเต เดธเดœเตเดœเต€เด•เดฐเดฟเด•เตเด•เดพเตป เดžเด™เตเด™เตพ เด’เดฐเต เด•เต‹เดกเต เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเต.
  • เดฒเต‹เด—เดฟเตป เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเต WordPress-เดจเต 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 เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเตเด‚ เดตเต‡เตผเดกเตเดชเตเดฐเดธเตเดธเต เดชเดพเดคเตเดคเตเด•เตพ เดชเตเดฐเต‹เดธเดธเตเดธเต เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเตเด‚ PHP เดชเตเดฐเต‹เดธเดธเตเดธเต เดจเต†เดฏเดฟเด‚เดธเตเดชเต‡เดธเต เดตเต‡เตผเดคเดฟเดฐเดฟเดšเตเดšเต†เดŸเตเด•เตเด•เตเดจเตเดจเดคเดฟเดจเตเด‚ เดชเตเดฐเด•เดŸเดจ เด•เตเดฐเดฎเต€เด•เดฐเดฃเด™เตเด™เตพ เด’เดชเตเดฑเตเดฑเดฟเดฎเตˆเดธเต เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเตเด‚ เดธเตเด•เตเดฐเดฟเดชเตเดฑเตเดฑเต NGINX เดฏเต‚เดฃเดฟเดฑเตเดฑเต เด•เต‹เตบเดซเดฟเด—เตผ เดšเต†เดฏเตเดฏเตเดจเตเดจเต. เด‡เดตเดฟเดŸเต† เดถเตเดฐเดฆเตเดงเดฟเด•เตเด•เต‡เดฃเตเดŸ เดฎเต‚เดจเตเดจเต เดธเดตเดฟเดถเต‡เดทเดคเด•เตพ เด‰เดฃเตเดŸเต:

  • เด’เดฐเต เด•เดฃเตเดŸเต†เดฏเตโ€Œเดจเดฑเดฟเตฝ เดธเตโ€Œเด•เตเดฐเดฟเดชเตเดฑเตเดฑเต เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดจเตเดจเตเดฃเตเดŸเต‹ เดŽเดจเตเดจเต เดชเดฐเดฟเดถเต‹เดงเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเต† เด…เดŸเดฟเดธเตเดฅเดพเดจเดฎเดพเด•เตเด•เดฟ, เดจเต†เดฏเดฟเด‚เดธเตโ€Œเดชเต†เดฏเตโ€Œเดธเตเด•เตพเด•เตเด•เตเดณเตเดณ เดชเดฟเดจเตเดคเตเดฃ เดตเตเดฏเดตเดธเตเดฅ เด…เดจเตเดธเดฐเดฟเดšเตเดšเดพเดฃเต เดจเดฟเตผเดฃเตเดฃเดฏเดฟเด•เตเด•เตเดจเตเดจเดคเต. เดฎเดฟเด•เตเด• เด•เดฃเตเดŸเต†เดฏเตโ€Œเดจเตผ เดธเดœเตเดœเต€เด•เดฐเดฃเด™เตเด™เดณเตเด‚ เด•เดฃเตเดŸเต†เดฏเตโ€Œเดจเดฑเตเด•เดณเตเดŸเต† เดจเต†เดธเตเดฑเตเดฑเดกเต เดฒเต‹เดžเตเดšเดฟเดจเต† เดชเดฟเดจเตเดคเตเดฃเดฏเตโ€Œเด•เตเด•เดพเดคเตเดคเดคเดฟเดจเดพเตฝ เด‡เดคเต เด†เดตเดถเตเดฏเดฎเดพเดฃเต.
  • เดจเต†เดฏเดฟเด‚เดธเตโ€Œเดชเต†เดฏเตโ€Œเดธเดฟเดจเต เดชเดฟเดจเตเดคเตเดฃเดฏเตเดฃเตเดŸเต†เด™เตเด•เดฟเตฝ, เดจเต†เดฏเดฟเด‚เดธเตโ€Œเดชเต†เดฏเตโ€Œเดธเต เดชเตเดฐเดตเตผเดคเตเดคเดจเดฐเดนเดฟเดคเดฎเดพเด•เตเด•เตเด• เดจเต†เดฑเตเดฑเตเดตเตผเด•เตเด•เต. เดฐเดฃเตเดŸเต เดŽเตปเดกเต เดชเต‹เดฏเดฟเดจเตเดฑเตเด•เดณเดฟเดฒเต‡เด•เตเด•เตเด‚ เด’เดฐเต‡ เดธเดฎเดฏเด‚ เดตเต†เดฌเดฟเตฝ เดฒเดญเตเดฏเดฎเดพเด•เตเดจเตเดจเดคเดฟเดจเต เดตเต‡เตผเดกเตเดชเตเดฐเดธเดฟเดจเต† เด…เดจเตเดตเดฆเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเดพเดฃเต เด‡เดคเต.
  • เดชเตเดฐเด•เตเดฐเดฟเดฏเด•เดณเตเดŸเต† เดชเดฐเดฎเดพเดตเดงเดฟ เดŽเดฃเตเดฃเด‚ เด‡เดจเดฟเดชเตเดชเดฑเดฏเตเดจเตเดจ เดฐเต€เดคเดฟเดฏเดฟเตฝ เดจเดฟเตผเดตเดšเดฟเดšเตเดšเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเต: (MiaDB, NGINX Uniy เดŽเดจเตเดจเดฟเดต เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเต เดฎเต†เดฎเตเดฎเดฑเดฟ เดฒเดญเตเดฏเดฎเดพเดฃเต)/(PHP + 5-เตฝ เดฑเดพเด‚ เดชเดฐเดฟเดงเดฟ)
    เดˆ เดฎเต‚เดฒเตเดฏเด‚ NGINX เดฏเต‚เดฃเดฟเดฑเตเดฑเต เด•เตเดฐเดฎเต€เด•เดฐเดฃเด™เตเด™เดณเดฟเตฝ เดธเดœเตเดœเต€เด•เดฐเดฟเดšเตเดšเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเต.

เดŽเดฒเตเดฒเดพเดฏเตโ€Œเดชเตเดชเต‹เดดเตเด‚ เด•เตเดฑเดžเตเดžเดคเต เดฐเดฃเตเดŸเต เดชเดฟโ€ŒเดŽเดšเตเดšเตโ€Œเดชเดฟ เดชเตเดฐเต‹เดธเดธเตเด•เดณเต†เด™เตเด•เดฟเดฒเตเด‚ เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดจเตเดจเตเดฃเตเดŸเต†เดจเตเดจเตเด‚ เดˆ เดฎเต‚เดฒเตเดฏเด‚ เดธเต‚เดšเดฟเดชเตเดชเดฟเด•เตเด•เตเดจเตเดจเต, เด‡เดคเต เดชเตเดฐเดงเดพเดจเดฎเดพเดฃเต, เด•เดพเดฐเดฃเด‚ เดตเต‡เตผเดกเตเดชเตเดฐเดธเตเดธเต เดธเตเดตเดฏเด‚ เดงเดพเดฐเดพเดณเด‚ เด…เดธเดฟเตปเด•เตเดฐเดฃเดธเต เด…เดญเตเดฏเตผเดคเตเดฅเดจเด•เตพ เดจเดŸเดคเตเดคเตเดจเตเดจเต, เด•เต‚เดŸเดพเดคเต† เด…เดงเดฟเด• เดชเตเดฐเด•เตเดฐเดฟเดฏเด•เดณเดฟเดฒเตเดฒเดพเดคเต† เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดจเตเดจเต, เด‰เดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเดจเต, 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

WordPress-เดจเดพเดฏเดฟ NGINX เดธเดœเตเดœเต€เด•เดฐเดฟเด•เตเด•เตเดจเตเดจเต

เด…เดŸเตเดคเตเดคเดคเดพเดฏเดฟ, เดธเตเด•เตเดฐเดฟเดชเตเดฑเตเดฑเต เดตเต‡เตผเดกเตเดชเตเดฐเดธเตเดธเดฟเดจเดพเดฏเดฟ เด’เดฐเต เด•เต‹เตบเดซเดฟเด—เดฑเต‡เดทเตป เดซเดฏเตฝ เดธเตƒเดทเตเดŸเดฟเด•เตเด•เตเดจเตเดจเต default.conf เด•เดพเดฑเตเดฑเดฒเต‹เด—เดฟเตฝ conf.d.. เด‡เดคเต เด‡เดตเดฟเดŸเต† เด•เตเดฐเดฎเต€เด•เดฐเดฟเดšเตเดšเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเต:

  • Certbot เดตเดดเดฟ เดฒเต†เดฑเตเดฑเตเดธเต เดŽเตปเด•เตเดฐเดฟเดชเตเดฑเตเดฑเต เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเดฟเตฝ เดจเดฟเดจเตเดจเต เดฒเดญเดฟเดšเตเดš TLS เดธเตผเดŸเตเดŸเดฟเดซเดฟเด•เตเด•เดฑเตเดฑเตเด•เตพ เดธเดœเต€เดตเดฎเดพเด•เตเด•เตเดจเตเดจเต (เด…เดคเต เดธเดœเตเดœเต€เด•เดฐเดฟเด•เตเด•เตเดจเตเดจเดคเต เด…เดŸเตเดคเตเดค เดตเดฟเดญเดพเด—เดคเตเดคเดฟเดฒเดพเดฏเดฟเดฐเดฟเด•เตเด•เตเด‚)
  • เดฒเต†เดฑเตเดฑเตเดธเต เดŽเตปเด•เตเดฐเดฟเดชเตเดฑเตเดฑเต เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเดฟเตฝ เดจเดฟเดจเตเดจเตเดณเตเดณ เดถเตเดชเดพเตผเดถเด•เดณเต† เด…เดŸเดฟเดธเตเดฅเดพเดจเดฎเดพเด•เตเด•เดฟ TLS เดธเตเดฐเด•เตเดทเดพ เด•เตเดฐเดฎเต€เด•เดฐเดฃเด™เตเด™เตพ เด•เต‹เตบเดซเดฟเด—เตผ เดšเต†เดฏเตเดฏเตเดจเตเดจเต
  • เดกเดฟเดซเต‹เตพเดŸเตเดŸเดพเดฏเดฟ 1 เดฎเดฃเดฟเด•เตเด•เต‚เตผ เด•เดพเดทเดฟเด‚เด—เต เด’เดดเดฟเดตเดพเด•เตเด•เตฝ เด…เดญเตเดฏเตผเดคเตเดฅเดจเด•เตพ เดชเตเดฐเดตเตผเดคเตเดคเดจเด•เตเดทเดฎเดฎเดพเด•เตเด•เตเด•
  • เดธเดพเดงเดพเดฐเดฃเดฏเดพเดฏเดฟ เด…เดญเตเดฏเตผเดคเตเดฅเดฟเดšเตเดš เดฐเดฃเตเดŸเต เดซเดฏเดฒเตเด•เตพเด•เตเด•เดพเดฏเดฟ เด†เด•เตเดธเดธเต เดฒเต‹เด—เดฟเด‚เด—เตเด‚ เดซเดฏเตฝ เด•เดฃเตเดŸเต†เดคเตเดคเดฟเดฏเดฟเดฒเตเดฒเต†เด™เตเด•เดฟเตฝ เดชเดฟเดถเด•เต เดฒเต‹เด—เดฟเด‚เด—เตเด‚ เดชเตเดฐเดตเตผเดคเตเดคเดจเดฐเดนเดฟเดคเดฎเดพเด•เตเด•เตเด•: favicon.ico, robots.txt
  • เดฎเดฑเดžเตเดžเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจ เดซเดฏเดฒเตเด•เดณเดฟเดฒเต‡เด•เตเด•เตเด‚ เดšเดฟเดฒ เดซเดฏเดฒเตเด•เดณเดฟเดฒเต‡เด•เตเด•เตเด‚ เดชเตเดฐเดตเต‡เดถเดจเด‚ เดคเดŸเดฏเตเด• .เดซเตเดชเตเดจเดฟเดฏเดฎเดตเดฟเดฐเตเดฆเตเดงเดฎเดพเดฏ เดชเตเดฐเดตเต‡เดถเดจเด‚ เด…เดฒเตเดฒเต†เด™เตเด•เดฟเตฝ เด†เดธเต‚เดคเตเดฐเดฟเดคเดฎเดฒเตเดฒเดพเดคเตเดค เด†เดฐเด‚เดญเด‚ เดคเดŸเดฏเตเดจเตเดจเดคเดฟเดจเต
  • เดธเตเดฑเตเดฑเดพเดฑเตเดฑเดฟเด•เต, เดซเต‹เดฃเตเดŸเต เดซเดฏเดฒเตเด•เตพเด•เตเด•เตเดณเตเดณ เด†เด•เตเดธเดธเต เดฒเต‹เด—เดฟเด‚เด—เต เดชเตเดฐเดตเตผเดคเตเดคเดจเดฐเดนเดฟเดคเดฎเดพเด•เตเด•เตเด•
  • เดคเดฒเด•เตเด•เต†เดŸเตเดŸเต เด•เตเดฐเดฎเต€เด•เดฐเดฃเด‚ เด†เด•เตเดธเดธเต-เด•เตบเดŸเตเดฐเต‹เตพ-เด…เดจเตเดตเดฆเดฟเด•เตเด•เตเด•-เด‰เดคเตเดญเดตเด‚ เดซเต‹เดฃเตเดŸเต เดซเดฏเดฒเตเด•เตพเด•เตเด•เดพเดฏเดฟ
  • 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

เดฒเต†เดฑเตเดฑเตเดธเต เดŽเตปเด•เตเดฐเดฟเดชเตเดฑเตเดฑเต เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเดฟเตฝ เดจเดฟเดจเตเดจเตเดณเตเดณ เดธเตผเดŸเตเดŸเดฟเดซเดฟเด•เตเด•เดฑเตเดฑเตเด•เตพเด•เตเด•เดพเดฏเดฟ Certbot เดธเดœเตเดœเต€เด•เดฐเดฟเด•เตเด•เตเด•เดฏเตเด‚ เด…เดต เดธเตเดตเดฏเดฎเต‡เดต เดชเตเดคเตเด•เตเด•เตเด•เดฏเตเด‚ เดšเต†เดฏเตเดฏเตเดจเตเดจเต

เดธเตผเดŸเตเดŸเดฟเดซเดฟเด•เตเด•เดฑเตเดฑเต เด‡เดฒเด•เตโ€ŒเดŸเตเดฐเต‹เดฃเดฟเด•เต เดซเตเดฐเต‹เดฃเตเดŸเดฟเดฏเตผ เดซเต—เดฃเตเดŸเต‡เดทเดจเตเดฑเต† (เด‡เดŽเดซเตโ€ŒเดŽเดซเต) เดธเต—เดœเดจเตเดฏ เดŸเต‚เดณเดพเดฃเต, เดฒเต†เดฑเตเดฑเตโ€Œเดธเต เดŽเตปเด•เตเดฐเดฟเดชเตโ€Œเดฑเตเดฑเดฟเตฝ เดจเดฟเดจเตเดจเต เดŸเดฟเดŽเตฝเดŽเดธเต เดธเตผเดŸเตเดŸเดฟเดซเดฟเด•เตเด•เดฑเตเดฑเตเด•เตพ เดจเต‡เดŸเดพเดจเตเด‚ เดธเตเดตเดฏเดฎเต‡เดต เดชเตเดคเตเด•เตเด•เดพเดจเตเด‚ เดจเดฟเด™เตเด™เดณเต† เด…เดจเตเดตเดฆเดฟเด•เตเด•เตเดจเตเดจเต. เดŽเตปโ€Œเดœเดฟโ€ŒเดŽเตปโ€ŒเดŽเด•เตโ€Œเดธเดฟเตฝ เดŽเตปโ€Œเด•เตเดฐเดฟเดชเตเดฑเตเดฑเต เดšเต†เดฏเตเดฏเดพเด‚ เดŽเดจเตเดจเดคเดฟเตฝ เดจเดฟเดจเตเดจเตเดณเตเดณ เดธเตผเดŸเตเดŸเดฟเดซเดฟเด•เตเด•เดฑเตเดฑเตเด•เตพ เดชเตเดฐเต‹เดธเดธเตเดธเต เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเต Certbot เด•เต‹เตบเดซเดฟเด—เตผ เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเต เดธเตโ€Œเด•เตเดฐเดฟเดชเตเดฑเตเดฑเต เด‡เดจเดฟเดชเตเดชเดฑเดฏเตเดจเตเดจเดต เดšเต†เดฏเตเดฏเตเดจเตเดจเต:

  • NGINX เดจเดฟเตผเดคเตเดคเตเดจเตเดจเต
  • เดกเต—เตบเดฒเต‹เดกเตเด•เตพ เดถเตเดชเดพเตผเดถ เดšเต†เดฏเตเดฏเตเดจเตเดจ TLS เด•เตเดฐเดฎเต€เด•เดฐเดฃเด™เตเด™เตพ
  • เดธเตˆเดฑเตเดฑเดฟเดจเดพเดฏเดฟ เดธเตผเดŸเตเดŸเดฟเดซเดฟเด•เตเด•เดฑเตเดฑเตเด•เตพ เดฒเดญเดฟเด•เตเด•เดพเตป Certbot เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเด•เตเด•เตเดจเตเดจเต
  • เดธเตผเดŸเตเดŸเดฟเดซเดฟเด•เตเด•เดฑเตเดฑเตเด•เตพ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเต NGINX เดชเตเดจเดฐเดพเดฐเด‚เดญเดฟเด•เตเด•เตเดจเตเดจเต
  • เดธเตผเดŸเตเดŸเดฟเดซเดฟเด•เตเด•เดฑเตเดฑเตเด•เตพ เดชเตเดคเตเด•เตเด•เต‡เดฃเตเดŸเดคเตเดฃเตเดŸเต‹เดฏเต†เดจเตเดจเต เดชเดฐเดฟเดถเต‹เดงเดฟเด•เตเด•เดพเตป เดฆเดฟเดตเดธเดตเตเด‚ 3:24 AM-เดจเต เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เดพเตป 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

เดจเดฟเด™เตเด™เดณเตเดŸเต† เดธเตˆเดฑเตเดฑเดฟเดจเตเดฑเต† เด…เดงเดฟเด• เด‡เดทเตโ€ŒเดŸเดพเดจเตเดธเตƒเดคเดฎเดพเด•เตเด•เตฝ

TLSSSL เดชเตเดฐเดตเตผเดคเตเดคเดจเด•เตเดทเดฎเดฎเดพเด•เตเด•เดฟเดฏ เด’เดฐเต เดชเตเดฐเตŠเดกเด•เตเดทเตป-เดฑเต†เดกเดฟ เดธเตˆเดฑเตเดฑเต เดจเตฝเด•เตเดจเตเดจเดคเดฟเดจเต เดžเด™เตเด™เดณเตเดŸเต† เดธเตเด•เตเดฐเดฟเดชเตเดฑเตเดฑเต NGINX, NGINX เดฏเต‚เดฃเดฟเดฑเตเดฑเต เดŽเด™เตเด™เดจเต† เด•เต‹เตบเดซเดฟเด—เตผ เดšเต†เดฏเตเดฏเตเดจเตเดจเต เดŽเดจเตเดจเดคเดฟเดจเต†เด•เตเด•เตเดฑเดฟเดšเตเดšเต เดžเด™เตเด™เตพ เดฎเตเด•เดณเดฟเตฝ เดธเด‚เดธเดพเดฐเดฟเดšเตเดšเต. เดจเดฟเด™เตเด™เดณเตเดŸเต† เด†เดตเดถเตเดฏเด™เตเด™เตพเด•เตเด•เดจเตเดธเดฐเดฟเดšเตเดšเต เดจเดฟเด™เตเด™เตพเด•เตเด•เต เดญเดพเดตเดฟเดฏเดฟเตฝ เดšเต‡เตผเด•เตเด•เดพเดจเตเด‚ เด•เดดเดฟเดฏเตเด‚:

  • เดชเดฟเดจเตเดคเตเดฃ เดฌเตเดฐเต‹เดŸเตเดŸเตเดฒเดฟ, HTTPS-เดฒเต‚เดŸเต† เดฎเต†เดšเตเดšเดชเตเดชเต†เดŸเตเดŸ เด“เตบ-เดฆเดฟ-เดซเตเดฒเตˆ เด•เด‚เดชเตเดฐเดทเตป
  • เดฎเต‹เดกเตเดธเต†เด•เตเดฏเต‚เดฐเดฟเดฑเตเดฑเดฟ ั เดตเต‡เตผเดกเตเดชเตเดฐเดธเตเดธเดฟเดจเตเดณเตเดณ เดจเดฟเดฏเดฎเด™เตเด™เตพเดจเดฟเด™เตเด™เดณเตเดŸเต† เดธเตˆเดฑเตเดฑเดฟเตฝ เด“เดŸเตเดŸเต‹เดฎเต‡เดฑเตเดฑเดกเต เด†เด•เตเดฐเดฎเดฃเด™เตเด™เตพ เดคเดŸเดฏเดพเตป
  • เดฌเดพเด•เตเด•เดชเตเดชเต เดจเดฟเด™เตเด™เตพเด•เตเด•เต เด…เดจเตเดฏเต‹เดœเตเดฏเดฎเดพเดฏ เดตเต‡เตผเดกเตเดชเตเดฐเดธเตเดธเดฟเดจเดพเดฏเดฟ
  • เดธเด‚เดฐเด•เตเดทเดฃเด‚ เดธเดนเดพเดฏเดคเตเดคเต‹เดŸเต† AppArmor (เด‰เดฌเตเดฃเตเดŸเตเดตเดฟเตฝ)
  • Postfix เด…เดฒเตเดฒเต†เด™เตเด•เดฟเตฝ msmtp เด†เดฏเดคเดฟเดจเดพเตฝ WordPress-เดจเต เดฎเต†เดฏเดฟเตฝ เด…เดฏเด•เตเด•เดพเตป เด•เดดเดฟเดฏเตเด‚
  • เดจเดฟเด™เตเด™เดณเตเดŸเต† เดธเตˆเดฑเตเดฑเต เดชเดฐเดฟเดถเต‹เดงเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดฒเต‚เดŸเต† เด…เดคเดฟเดจเต เดŽเดคเตเดฐเดคเตเดคเต‹เดณเด‚ เดŸเตเดฐเดพเดซเดฟเด•เต เด•เตˆเด•เดพเดฐเตเดฏเด‚ เดšเต†เดฏเตเดฏเดพเดจเดพเด•เตเดฎเต†เดจเตเดจเต เดจเดฟเด™เตเด™เตพ เดฎเดจเดธเตเดธเดฟเดฒเดพเด•เตเด•เตเดจเตเดจเต

เด‡เดคเดฟเดฒเตเด‚ เดฎเดฟเด•เดšเตเดš เดธเตˆเดฑเตเดฑเต เดชเตเดฐเด•เดŸเดจเดคเตเดคเดฟเดจเต, เด…เดชเตเด—เตเดฐเต‡เดกเต เดšเต†เดฏเตเดฏเดพเตป เดžเด™เตเด™เตพ เดถเตเดชเดพเตผเดถ เดšเต†เดฏเตเดฏเตเดจเตเดจเต NGINX เดชเตเดฒเดธเต, เด“เดชเตเดชเตบ เดธเต‹เดดเตโ€Œเดธเต NGINX เด…เดŸเดฟเดธเตเดฅเดพเดจเดฎเดพเด•เตเด•เดฟเดฏเตเดณเตเดณ เดžเด™เตเด™เดณเตเดŸเต† เดตเดพเดฃเดฟเดœเตเดฏ, เดŽเดจเตเดฑเตผเดชเตเดฐเตˆเดธเต-เด—เตเดฐเต‡เดกเต เด‰เตฝเดชเตเดชเดจเตเดจเด‚. เด…เดคเดฟเดจเตเดฑเต† เดตเดฐเดฟเด•เตเด•เดพเตผเด•เตเด•เต เดšเดฒเดจเดพเดคเตเดฎเด•เดฎเดพเดฏเดฟ เดฒเต‹เดกเตเดšเต†เดฏเตโ€Œเดค เดฌเตเดฐเต‹เดŸเตโ€Œเดฒเดฟ เดฎเตŠเดกเตเดฏเต‚เดณเตเด‚ (เด…เดงเดฟเด• เดซเต€เดธเดพเดฏเดฟ) เดฒเดญเดฟเด•เตเด•เตเด‚. NGINX ModSecurity WAF. เดžเด™เตเด™เดณเตเด‚ เดตเดพเด—เตเดฆเดพเดจเด‚ เดšเต†เดฏเตเดฏเตเดจเตเดจเต NGINX เด†เดชเตเดชเต เดชเดฐเดฟเดฐเด•เตเดทเดฃเด‚, F5-เตฝ เดจเดฟเดจเตเดจเตเดณเตเดณ เดตเตเดฏเดตเดธเดพเดฏ เดชเตเดฐเดฎเตเด– เดธเตเดฐเด•เตเดทเดพ เดธเดพเด™เตเด•เต‡เดคเดฟเด•เดตเดฟเดฆเตเดฏเดฏเต† เด…เดŸเดฟเดธเตเดฅเดพเดจเดฎเดพเด•เตเด•เดฟ NGINX เดชเตเดฒเดธเดฟเดจเดพเดฏเตเดณเตเดณ WAF เดฎเตŠเดกเตเดฏเต‚เตพ.

NB เดตเดณเดฐเต†เดฏเดงเดฟเด•เด‚ เดฒเต‹เดกเต เดšเต†เดฏเตเดค เดธเตˆเดฑเตเดฑเดฟเดจเตเดฑเต† เดชเดฟเดจเตเดคเตเดฃเดฏเตโ€Œเด•เตเด•เดพเดฏเดฟ, เดจเดฟเด™เตเด™เตพเด•เตเด•เต เดธเตเดชเต†เดทเตเดฏเดฒเดฟเดธเตเดฑเตเดฑเตเด•เดณเต† เดฌเดจเตเดงเดชเตเดชเต†เดŸเดพเด‚ เดธเต—เดคเตเดคเตเดฌเตเดฐเดฟเดกเตเดœเต. เดเดคเต เดฒเต‹เดกเดฟเดฒเตเด‚ เดจเดฟเด™เตเด™เดณเตเดŸเต† เดตเต†เดฌเตโ€Œเดธเตˆเดฑเตเดฑเดฟเดจเตเดฑเต†เดฏเต‹ เดธเต‡เดตเดจเดคเตเดคเดฟเดจเตเดฑเต†เดฏเต‹ เดตเต‡เด—เดคเดฏเต‡เดฑเดฟเดฏเดคเตเด‚ เดตเดฟเดถเตเดตเดธเดจเต€เดฏเดตเตเดฎเดพเดฏ เดชเตเดฐเดตเตผเดคเตเดคเดจเด‚ เดžเด™เตเด™เตพ เด‰เดฑเดชเตเดชเดพเด•เตเด•เตเด‚.

เด…เดตเดฒเด‚เดฌเด‚: www.habr.com