WordPress-แƒ˜แƒก แƒ˜แƒœแƒกแƒขแƒแƒšแƒแƒชแƒ˜แƒ˜แƒก แƒแƒ•แƒขแƒแƒ›แƒแƒขแƒ˜แƒ–แƒแƒชแƒ˜แƒ NGINX Unit-แƒ˜แƒ— แƒ“แƒ Ubuntu-แƒ˜แƒ—

WordPress-แƒ˜แƒก แƒ˜แƒœแƒกแƒขแƒแƒšแƒแƒชแƒ˜แƒ˜แƒก แƒแƒ•แƒขแƒแƒ›แƒแƒขแƒ˜แƒ–แƒแƒชแƒ˜แƒ NGINX Unit-แƒ˜แƒ— แƒ“แƒ Ubuntu-แƒ˜แƒ—

แƒแƒ แƒกแƒ”แƒ‘แƒแƒ‘แƒก แƒ›แƒ แƒแƒ•แƒแƒšแƒ˜ แƒ’แƒแƒ™แƒ•แƒ”แƒ—แƒ˜แƒšแƒ˜, แƒ—แƒฃ แƒ แƒแƒ’แƒแƒ  แƒฃแƒœแƒ“แƒ แƒ“แƒแƒแƒ˜แƒœแƒกแƒขแƒแƒšแƒ˜แƒ แƒแƒ— WordPress, Google-แƒ˜แƒก แƒซแƒ˜แƒ”แƒ‘แƒ โ€žWordPress installโ€œ-แƒ–แƒ” แƒ“แƒแƒแƒฎแƒšแƒแƒ”แƒ‘แƒ˜แƒ— แƒœแƒแƒฎแƒ”แƒ•แƒแƒ  แƒ›แƒ˜แƒšแƒ˜แƒแƒœ แƒจแƒ”แƒ“แƒ”แƒ’แƒก แƒ’แƒแƒ›แƒแƒ˜แƒฆแƒ”แƒ‘แƒก. แƒ—แƒฃแƒ›แƒชแƒ, แƒคแƒแƒฅแƒขแƒแƒ‘แƒ แƒ˜แƒ•แƒแƒ“, แƒ›แƒแƒ— แƒจแƒแƒ แƒ˜แƒก แƒซแƒแƒšแƒ˜แƒแƒœ แƒชแƒแƒขแƒแƒ แƒ™แƒแƒ แƒ’แƒ˜ แƒกแƒแƒฎแƒ”แƒšแƒ›แƒซแƒฆแƒ•แƒแƒœแƒ”แƒšแƒ, แƒ แƒแƒ›แƒšแƒ˜แƒก แƒ›แƒ˜แƒฎแƒ”แƒ“แƒ•แƒ˜แƒ—แƒแƒช แƒจแƒ”แƒ’แƒ˜แƒซแƒšแƒ˜แƒแƒ— แƒ“แƒแƒแƒ˜แƒœแƒกแƒขแƒแƒšแƒ˜แƒ แƒแƒ— แƒ“แƒ แƒ“แƒแƒแƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒ˜แƒ แƒแƒ— WordPress แƒ“แƒ แƒซแƒ˜แƒ แƒ˜แƒ—แƒแƒ“แƒ˜ แƒแƒžแƒ”แƒ แƒแƒชแƒ˜แƒฃแƒšแƒ˜ แƒกแƒ˜แƒกแƒขแƒ”แƒ›แƒ แƒ˜แƒกแƒ”, แƒ แƒแƒ› แƒ›แƒแƒ— แƒจแƒ”แƒ”แƒซแƒšแƒแƒ— แƒ“แƒ˜แƒ“แƒ˜ แƒฎแƒœแƒ˜แƒก แƒ’แƒแƒœแƒ›แƒแƒ•แƒšแƒแƒ‘แƒแƒจแƒ˜ แƒ›แƒฎแƒแƒ แƒ“แƒแƒญแƒ”แƒ แƒ. แƒจแƒ”แƒกแƒแƒซแƒšแƒแƒ, แƒกแƒฌแƒแƒ แƒ˜ แƒžแƒแƒ แƒแƒ›แƒ”แƒขแƒ แƒ”แƒ‘แƒ˜ แƒ“แƒ˜แƒ“แƒแƒ“ แƒแƒ แƒ˜แƒก แƒ“แƒแƒ›แƒแƒ™แƒ˜แƒ“แƒ”แƒ‘แƒฃแƒšแƒ˜ แƒ™แƒแƒœแƒ™แƒ แƒ”แƒขแƒฃแƒš แƒกแƒแƒญแƒ˜แƒ แƒแƒ”แƒ‘แƒ”แƒ‘แƒ–แƒ”, แƒแƒœ แƒ”แƒก แƒ’แƒแƒ›แƒแƒฌแƒ•แƒ”แƒฃแƒšแƒ˜แƒ แƒ˜แƒ›แƒ˜แƒ—, แƒ แƒแƒ› แƒ“แƒ”แƒขแƒแƒšแƒฃแƒ แƒ˜ แƒแƒฎแƒกแƒœแƒ แƒแƒ แƒ—แƒฃแƒšแƒ”แƒ‘แƒก แƒกแƒขแƒแƒขแƒ˜แƒ˜แƒก แƒฌแƒแƒ™แƒ˜แƒ—แƒฎแƒ•แƒแƒก.

แƒแƒ› แƒกแƒขแƒแƒขแƒ˜แƒแƒจแƒ˜ แƒฉแƒ•แƒ”แƒœ แƒจแƒ”แƒ•แƒ”แƒชแƒ“แƒ”แƒ‘แƒ˜แƒ— แƒ’แƒแƒ•แƒแƒ”แƒ แƒ—แƒ˜แƒแƒœแƒแƒ— แƒแƒ แƒ˜แƒ•แƒ” แƒกแƒแƒ›แƒงแƒแƒ แƒแƒก แƒกแƒแƒฃแƒ™แƒ”แƒ—แƒ”แƒกแƒ แƒกแƒ™แƒ แƒ˜แƒžแƒขแƒ˜ Bash-แƒ˜แƒก แƒกแƒ™แƒ แƒ˜แƒžแƒขแƒ˜แƒก แƒ›แƒ˜แƒฌแƒแƒ“แƒ”แƒ‘แƒ˜แƒ— WordPress-แƒ˜แƒก แƒแƒ•แƒขแƒแƒ›แƒแƒขแƒฃแƒ แƒแƒ“ แƒ“แƒแƒกแƒแƒงแƒ”แƒœแƒ”แƒ‘แƒšแƒแƒ“ Ubuntu-แƒ–แƒ”, แƒแƒกแƒ”แƒ•แƒ” แƒ•แƒ˜แƒแƒ แƒแƒ— แƒ›แƒแƒกแƒจแƒ˜, แƒแƒ•แƒฃแƒฎแƒกแƒœแƒแƒ—, แƒ—แƒฃ แƒ แƒแƒก แƒแƒ™แƒ”แƒ—แƒ”แƒ‘แƒก แƒ—แƒ˜แƒ—แƒแƒ”แƒฃแƒšแƒ˜ แƒœแƒแƒฌแƒ˜แƒšแƒ˜, แƒ˜แƒกแƒ”แƒ•แƒ” แƒ แƒแƒ’แƒแƒ แƒช แƒ™แƒแƒ›แƒžแƒ แƒแƒ›แƒ˜แƒกแƒ”แƒ‘แƒ˜, แƒ แƒแƒ›แƒšแƒ”แƒ‘แƒ˜แƒช แƒ›แƒ˜แƒ•แƒ˜แƒฆแƒ”แƒ— แƒ›แƒ˜แƒก แƒจแƒ”แƒ›แƒฃแƒจแƒแƒ•แƒ”แƒ‘แƒ˜แƒกแƒแƒก. . แƒ—แƒฃ แƒ›แƒแƒฌแƒ˜แƒœแƒแƒ•แƒ” แƒ›แƒแƒ›แƒฎแƒ›แƒแƒ แƒ”แƒ‘แƒ”แƒšแƒ˜ แƒฎแƒแƒ แƒ—, แƒจแƒ”แƒ’แƒ˜แƒซแƒšแƒ˜แƒแƒ— แƒ’แƒแƒ›แƒแƒขแƒแƒ•แƒแƒ— แƒกแƒขแƒแƒขแƒ˜แƒ˜แƒก แƒขแƒ”แƒฅแƒกแƒขแƒ˜ แƒ“แƒ แƒฃแƒ‘แƒ แƒแƒšแƒแƒ“ แƒแƒ˜แƒฆแƒ” แƒกแƒชแƒ”แƒœแƒแƒ แƒ˜ แƒ—แƒฅแƒ•แƒ”แƒœแƒก แƒ’แƒแƒ แƒ”แƒ›แƒแƒจแƒ˜ แƒ›แƒแƒ“แƒ˜แƒคแƒ˜แƒ™แƒแƒชแƒ˜แƒ˜แƒกแƒ แƒ“แƒ แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก. แƒกแƒ™แƒ แƒ˜แƒžแƒขแƒ˜แƒก แƒ’แƒแƒ›แƒแƒ›แƒแƒ•แƒแƒšแƒ˜ แƒแƒ แƒ˜แƒก WordPress-แƒ˜แƒก แƒ›แƒแƒ แƒ’แƒ”แƒ‘แƒฃแƒšแƒ˜ แƒ˜แƒœแƒกแƒขแƒแƒšแƒแƒชแƒ˜แƒ Lets Encrypt แƒ›แƒฎแƒแƒ แƒ“แƒแƒญแƒ”แƒ แƒ˜แƒ—, แƒ›แƒฃแƒจแƒแƒแƒ‘แƒก NGINX แƒ”แƒ แƒ—แƒ”แƒฃแƒšแƒ–แƒ” แƒ“แƒ แƒจแƒ”แƒกแƒแƒคแƒ”แƒ แƒ˜แƒกแƒ˜แƒ แƒกแƒแƒฌแƒแƒ แƒ›แƒแƒ แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก.

WordPress-แƒ˜แƒก NGINX แƒ”แƒ แƒ—แƒ”แƒฃแƒšแƒ˜แƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒ— แƒ’แƒแƒœแƒšแƒแƒ’แƒ”แƒ‘แƒ˜แƒก แƒจแƒ”แƒ›แƒฃแƒจแƒแƒ•แƒ”แƒ‘แƒฃแƒšแƒ˜ แƒแƒ แƒฅแƒ˜แƒขแƒ”แƒฅแƒขแƒฃแƒ แƒ แƒแƒฆแƒฌแƒ”แƒ แƒ˜แƒšแƒ˜แƒ แƒแƒฅ แƒซแƒ•แƒ”แƒšแƒ˜ แƒกแƒขแƒแƒขแƒ˜แƒ, แƒแƒฎแƒšแƒ แƒฉแƒ•แƒ”แƒœ แƒแƒกแƒ”แƒ•แƒ” แƒ“แƒแƒ•แƒแƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒ˜แƒ แƒ”แƒ‘แƒ— แƒกแƒแƒ’แƒœแƒ”แƒ‘แƒก, แƒ แƒแƒ›แƒšแƒ”แƒ‘แƒ˜แƒช แƒแƒ  แƒ˜แƒงแƒ แƒ“แƒแƒคแƒแƒ แƒฃแƒšแƒ˜ (แƒ แƒแƒ’แƒแƒ แƒช แƒ‘แƒ”แƒ•แƒ  แƒกแƒฎแƒ•แƒ แƒกแƒแƒฎแƒ”แƒšแƒ›แƒซแƒฆแƒ•แƒแƒœแƒ”แƒšแƒแƒจแƒ˜):

  • WordPress CLI
  • แƒ›แƒแƒ“แƒ˜แƒ— แƒ“แƒแƒ•แƒจแƒ˜แƒคแƒ แƒแƒ— แƒ“แƒ TLSSSL แƒกแƒ”แƒ แƒ—แƒ˜แƒคแƒ˜แƒ™แƒแƒขแƒ”แƒ‘แƒ˜
  • แƒกแƒ”แƒ แƒ—แƒ˜แƒคแƒ˜แƒ™แƒแƒขแƒ”แƒ‘แƒ˜แƒก แƒแƒ•แƒขแƒแƒ›แƒแƒขแƒฃแƒ แƒ˜ แƒ’แƒแƒœแƒแƒฎแƒšแƒ”แƒ‘แƒ
  • NGINX แƒฅแƒ”แƒจแƒ˜แƒ แƒ”แƒ‘แƒ
  • NGINX แƒจแƒ”แƒ™แƒฃแƒ›แƒจแƒ•แƒ
  • HTTPS แƒ“แƒ HTTP/2 แƒ›แƒฎแƒแƒ แƒ“แƒแƒญแƒ”แƒ แƒ
  • แƒžแƒ แƒแƒชแƒ”แƒกแƒ˜แƒก แƒแƒ•แƒขแƒแƒ›แƒแƒขแƒ˜แƒ–แƒแƒชแƒ˜แƒ

แƒกแƒขแƒแƒขแƒ˜แƒแƒจแƒ˜ แƒแƒฆแƒฌแƒ”แƒ แƒ˜แƒšแƒ˜ แƒ˜แƒฅแƒœแƒ”แƒ‘แƒ แƒ˜แƒœแƒกแƒขแƒแƒšแƒแƒชแƒ˜แƒ แƒ”แƒ แƒ— แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ–แƒ”, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒ”แƒ แƒ—แƒ“แƒ แƒแƒฃแƒšแƒแƒ“ แƒฃแƒ›แƒแƒกแƒžแƒ˜แƒœแƒซแƒšแƒ”แƒ‘แƒก แƒกแƒขแƒแƒขแƒ˜แƒ™แƒฃแƒ แƒ˜ แƒ“แƒแƒ›แƒฃแƒจแƒแƒ•แƒ”แƒ‘แƒ˜แƒก แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒก, PHP แƒ“แƒแƒ›แƒฃแƒจแƒแƒ•แƒ”แƒ‘แƒ˜แƒก แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒก แƒ“แƒ แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ‘แƒแƒ–แƒแƒก. แƒ˜แƒœแƒกแƒขแƒแƒšแƒแƒชแƒ˜แƒ, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒ›แƒฎแƒแƒ แƒก แƒฃแƒญแƒ”แƒ แƒก แƒ›แƒ แƒแƒ•แƒแƒš แƒ•แƒ˜แƒ แƒขแƒฃแƒแƒšแƒฃแƒ  แƒฐแƒแƒกแƒขแƒก แƒ“แƒ แƒกแƒ”แƒ แƒ•แƒ˜แƒกแƒก, แƒ›แƒแƒ›แƒแƒ•แƒšแƒ˜แƒก แƒžแƒแƒขแƒ”แƒœแƒชแƒ˜แƒฃแƒ แƒ˜ แƒ—แƒ”แƒ›แƒแƒ. แƒ—แƒฃ แƒ’แƒ˜แƒœแƒ“แƒแƒ— แƒ“แƒแƒ•แƒฌแƒ”แƒ แƒแƒ— แƒ แƒแƒ˜แƒ›แƒ”แƒ–แƒ”, แƒ แƒแƒช แƒแƒ› แƒกแƒขแƒแƒขแƒ˜แƒ”แƒ‘แƒจแƒ˜ แƒแƒ  แƒแƒ แƒ˜แƒก, แƒ“แƒแƒฌแƒ”แƒ แƒ”แƒ— แƒ™แƒแƒ›แƒ”แƒœแƒขแƒแƒ แƒ”แƒ‘แƒจแƒ˜.

แƒ›แƒแƒ—แƒฎแƒแƒ•แƒœแƒ”แƒ‘แƒ˜

  • แƒ™แƒแƒœแƒขแƒ”แƒ˜แƒœแƒ”แƒ แƒ˜แƒก แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ˜ (LXC แƒแƒœ LXD), แƒ•แƒ˜แƒ แƒขแƒฃแƒแƒšแƒฃแƒ แƒ˜ แƒ›แƒแƒœแƒฅแƒแƒœแƒ, แƒแƒœ แƒฉแƒ•แƒ”แƒฃแƒšแƒ”แƒ‘แƒ แƒ˜แƒ•แƒ˜ แƒ แƒ™แƒ˜แƒœแƒ˜แƒก แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ˜ แƒ›แƒ˜แƒœแƒ˜แƒ›แƒฃแƒ› 512 แƒ›แƒ‘ แƒแƒžแƒ”แƒ แƒแƒขแƒ˜แƒฃแƒšแƒ˜ แƒ›แƒ”แƒฎแƒกแƒ˜แƒ”แƒ แƒ”แƒ‘แƒ˜แƒ— แƒ“แƒ แƒ“แƒแƒ˜แƒœแƒกแƒขแƒแƒšแƒ˜แƒ แƒ”แƒ‘แƒฃแƒšแƒ˜ Ubuntu 18.04 แƒแƒœ แƒฃแƒคแƒ แƒ แƒแƒฎแƒแƒšแƒ˜.
  • แƒ˜แƒœแƒขแƒ”แƒ แƒœแƒ”แƒขแƒ˜แƒ— แƒฎแƒ”แƒšแƒ›แƒ˜แƒกแƒแƒฌแƒ•แƒ“แƒแƒ›แƒ˜ แƒžแƒแƒ แƒขแƒ”แƒ‘แƒ˜ 80 แƒ“แƒ 443
  • แƒ“แƒแƒ›แƒ”แƒœแƒ˜แƒก แƒกแƒแƒฎแƒ”แƒšแƒ˜ แƒ“แƒแƒ™แƒแƒ•แƒจแƒ˜แƒ แƒ”แƒ‘แƒฃแƒšแƒ˜แƒ แƒแƒ› แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ˜แƒก แƒกแƒแƒฏแƒแƒ แƒ ip แƒ›แƒ˜แƒกแƒแƒ›แƒแƒ แƒ—แƒ—แƒแƒœ
  • Root แƒฌแƒ•แƒ“แƒแƒ›แƒ (sudo).

แƒแƒ แƒฅแƒ˜แƒขแƒ”แƒฅแƒขแƒฃแƒ แƒ˜แƒก แƒ›แƒ˜แƒ›แƒแƒฎแƒ˜แƒšแƒ•แƒ

แƒแƒ แƒฅแƒ˜แƒขแƒ”แƒฅแƒขแƒฃแƒ แƒ แƒ˜แƒ’แƒ˜แƒ•แƒ”แƒ, แƒ แƒแƒช แƒแƒฆแƒฌแƒ”แƒ แƒ˜แƒšแƒ˜แƒ แƒแƒ“แƒ แƒ”, แƒกแƒแƒ›แƒกแƒแƒคแƒ”แƒฎแƒฃแƒ แƒ˜แƒแƒœแƒ˜ แƒ•แƒ”แƒ‘ แƒแƒžแƒšแƒ˜แƒ™แƒแƒชแƒ˜แƒ. แƒ˜แƒ’แƒ˜ แƒจแƒ”แƒ“แƒ’แƒ”แƒ‘แƒ PHP แƒกแƒ™แƒ แƒ˜แƒžแƒขแƒ”แƒ‘แƒ˜แƒกแƒแƒ’แƒแƒœ, แƒ แƒแƒ›แƒšแƒ”แƒ‘แƒ˜แƒช แƒ›แƒฃแƒจแƒแƒแƒ‘แƒก PHP แƒซแƒ แƒแƒ•แƒ–แƒ” แƒ“แƒ แƒกแƒขแƒแƒขแƒ˜แƒ™แƒฃแƒ แƒ˜ แƒคแƒแƒ˜แƒšแƒ”แƒ‘แƒ˜แƒกแƒ’แƒแƒœ, แƒ แƒแƒ›แƒšแƒ”แƒ‘แƒ˜แƒช แƒ›แƒฃแƒจแƒแƒ•แƒ“แƒ”แƒ‘แƒ แƒ•แƒ”แƒ‘ แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ˜แƒก แƒ›แƒ˜แƒ”แƒ .

WordPress-แƒ˜แƒก แƒ˜แƒœแƒกแƒขแƒแƒšแƒแƒชแƒ˜แƒ˜แƒก แƒแƒ•แƒขแƒแƒ›แƒแƒขแƒ˜แƒ–แƒแƒชแƒ˜แƒ NGINX Unit-แƒ˜แƒ— แƒ“แƒ Ubuntu-แƒ˜แƒ—

แƒ–แƒแƒ’แƒแƒ“แƒ˜ แƒžแƒ แƒ˜แƒœแƒชแƒ˜แƒžแƒ”แƒ‘แƒ˜

  • แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒ˜แƒก แƒ›แƒ แƒแƒ•แƒแƒšแƒ˜ แƒ‘แƒ แƒซแƒแƒœแƒ”แƒ‘แƒ แƒกแƒ™แƒ แƒ˜แƒžแƒขแƒจแƒ˜ แƒจแƒ”แƒคแƒฃแƒ—แƒฃแƒšแƒ˜แƒ แƒ˜แƒ› แƒจแƒ”แƒ›แƒ—แƒฎแƒ•แƒ”แƒ•แƒแƒจแƒ˜, แƒ—แƒฃ แƒžแƒ˜แƒ แƒแƒ‘แƒ”แƒ‘แƒ˜ แƒฃแƒซแƒšแƒฃแƒ แƒ˜แƒ: แƒกแƒ™แƒ แƒ˜แƒžแƒขแƒ˜แƒก แƒ’แƒแƒจแƒ•แƒ”แƒ‘แƒ แƒจแƒ”แƒ˜แƒซแƒšแƒ”แƒ‘แƒ แƒ แƒแƒ›แƒ“แƒ”แƒœแƒฏแƒ”แƒ แƒ›แƒ”, แƒฃแƒ™แƒ•แƒ” แƒแƒ แƒกแƒ”แƒ‘แƒฃแƒšแƒ˜ แƒžแƒแƒ แƒแƒ›แƒ”แƒขแƒ แƒ”แƒ‘แƒ˜แƒก แƒจแƒ”แƒชแƒ•แƒšแƒ˜แƒก แƒ แƒ˜แƒกแƒ™แƒ˜แƒก แƒ’แƒแƒ แƒ”แƒจแƒ”.
  • แƒกแƒ™แƒ แƒ˜แƒžแƒขแƒ˜ แƒชแƒ“แƒ˜แƒšแƒแƒ‘แƒก แƒ“แƒแƒแƒ˜แƒœแƒกแƒขแƒแƒšแƒ˜แƒ แƒแƒก แƒžแƒ แƒแƒ’แƒ แƒแƒ›แƒฃแƒšแƒ˜ แƒฃแƒ–แƒ แƒฃแƒœแƒ•แƒ”แƒšแƒงแƒแƒคแƒ แƒกแƒแƒชแƒแƒ•แƒ”แƒ‘แƒ˜แƒ“แƒแƒœ, แƒแƒกแƒ” แƒ แƒแƒ› แƒ—แƒฅแƒ•แƒ”แƒœ แƒจแƒ”แƒ’แƒ˜แƒซแƒšแƒ˜แƒแƒ— แƒ’แƒแƒ›แƒแƒ˜แƒงแƒ”แƒœแƒแƒ— แƒกแƒ˜แƒกแƒขแƒ”แƒ›แƒ˜แƒก แƒ’แƒแƒœแƒแƒฎแƒšแƒ”แƒ‘แƒ”แƒ‘แƒ˜ แƒ”แƒ แƒ—แƒ˜ แƒ‘แƒ แƒซแƒแƒœแƒ”แƒ‘แƒ˜แƒ— (apt upgrade Ubuntu-แƒกแƒ—แƒ•แƒ˜แƒก).
  • แƒ‘แƒ แƒซแƒแƒœแƒ”แƒ‘แƒ”แƒ‘แƒ˜ แƒชแƒ“แƒ˜แƒšแƒแƒ‘แƒ”แƒœ แƒ“แƒแƒแƒ“แƒ’แƒ˜แƒœแƒแƒœ, แƒ แƒแƒ› แƒ˜แƒกแƒ˜แƒœแƒ˜ แƒ›แƒฃแƒจแƒแƒแƒ‘แƒ”แƒœ แƒ™แƒแƒœแƒขแƒ”แƒ˜แƒœแƒ”แƒ แƒจแƒ˜, แƒ แƒแƒ—แƒ แƒ›แƒแƒ— แƒจแƒ”แƒกแƒแƒ‘แƒแƒ›แƒ˜แƒกแƒแƒ“ แƒจแƒ”แƒชแƒ•แƒแƒšแƒแƒœ แƒžแƒแƒ แƒแƒ›แƒ”แƒขแƒ แƒ”แƒ‘แƒ˜.
  • แƒžแƒแƒ แƒแƒ›แƒ”แƒขแƒ แƒ”แƒ‘แƒจแƒ˜ แƒ“แƒแƒกแƒแƒฌแƒงแƒ”แƒ‘แƒแƒ“ แƒซแƒแƒคแƒ”แƒ‘แƒ˜แƒก แƒžแƒ แƒแƒชแƒ”แƒกแƒ”แƒ‘แƒ˜แƒก แƒ แƒแƒแƒ“แƒ”แƒœแƒแƒ‘แƒ˜แƒก แƒ“แƒแƒกแƒแƒงแƒ”แƒœแƒ”แƒ‘แƒšแƒแƒ“, แƒกแƒ™แƒ แƒ˜แƒžแƒขแƒ˜ แƒชแƒ“แƒ˜แƒšแƒแƒ‘แƒก แƒ’แƒแƒ›แƒแƒ˜แƒชแƒœแƒแƒก แƒ™แƒแƒœแƒขแƒ”แƒ˜แƒœแƒ”แƒ แƒ”แƒ‘แƒจแƒ˜, แƒ•แƒ˜แƒ แƒขแƒฃแƒแƒšแƒฃแƒ  แƒ›แƒแƒœแƒฅแƒแƒœแƒ”แƒ‘แƒกแƒ แƒ“แƒ แƒแƒžแƒแƒ แƒแƒขแƒฃแƒ แƒฃแƒš แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ”แƒ‘แƒจแƒ˜ แƒ›แƒฃแƒจแƒแƒแƒ‘แƒ˜แƒก แƒแƒ•แƒขแƒแƒ›แƒแƒขแƒฃแƒ แƒ˜ แƒžแƒแƒ แƒแƒ›แƒ”แƒขแƒ แƒ”แƒ‘แƒ˜.
  • แƒžแƒแƒ แƒแƒ›แƒ”แƒขแƒ แƒ”แƒ‘แƒ˜แƒก แƒแƒฆแƒฌแƒ”แƒ แƒ˜แƒกแƒแƒก, แƒฉแƒ•แƒ”แƒœ แƒงแƒแƒ•แƒ”แƒšแƒ—แƒ•แƒ˜แƒก แƒžแƒ˜แƒ แƒ•แƒ”แƒš แƒ แƒ˜แƒ’แƒจแƒ˜ แƒ•แƒคแƒ˜แƒฅแƒ แƒแƒ‘แƒ— แƒแƒ•แƒขแƒแƒ›แƒแƒขแƒ˜แƒ–แƒแƒชแƒ˜แƒแƒ–แƒ”, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช, แƒ•แƒ˜แƒ›แƒ”แƒ“แƒแƒ•แƒœแƒ”แƒ‘แƒ—, แƒ’แƒแƒฎแƒ“แƒ”แƒ‘แƒ แƒ—แƒฅแƒ•แƒ”แƒœแƒ˜ แƒกแƒแƒ™แƒฃแƒ—แƒแƒ แƒ˜ แƒ˜แƒœแƒคแƒ แƒแƒกแƒขแƒ แƒฃแƒฅแƒขแƒฃแƒ แƒ˜แƒก แƒ™แƒแƒ“แƒ˜แƒก แƒจแƒ”แƒฅแƒ›แƒœแƒ˜แƒก แƒกแƒแƒคแƒฃแƒซแƒ•แƒ”แƒšแƒ˜.
  • แƒงแƒ•แƒ”แƒšแƒ แƒ‘แƒ แƒซแƒแƒœแƒ”แƒ‘แƒ แƒ›แƒฃแƒจแƒแƒแƒ‘แƒก แƒ›แƒแƒ›แƒฎแƒ›แƒแƒ แƒ”แƒ‘แƒšแƒ˜แƒก แƒกแƒแƒฎแƒ˜แƒ— root, แƒ แƒแƒ“แƒ’แƒแƒœ แƒ˜แƒกแƒ˜แƒœแƒ˜ แƒชแƒ•แƒšแƒ˜แƒแƒœ แƒกแƒ˜แƒกแƒขแƒ”แƒ›แƒ˜แƒก แƒซแƒ˜แƒ แƒ˜แƒ—แƒแƒ“ แƒžแƒแƒ แƒแƒ›แƒ”แƒขแƒ แƒ”แƒ‘แƒก, แƒ›แƒแƒ’แƒ แƒแƒ› แƒžแƒ˜แƒ แƒ“แƒแƒžแƒ˜แƒ  WordPress แƒ›แƒฃแƒจแƒแƒแƒ‘แƒก แƒ แƒแƒ’แƒแƒ แƒช แƒฉแƒ•แƒ”แƒฃแƒšแƒ”แƒ‘แƒ แƒ˜แƒ•แƒ˜ แƒ›แƒแƒ›แƒฎแƒ›แƒแƒ แƒ”แƒ‘แƒ”แƒšแƒ˜.

แƒ’แƒแƒ แƒ”แƒ›แƒแƒก แƒชแƒ•แƒšแƒแƒ“แƒ”แƒ‘แƒ˜แƒก แƒ“แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ

แƒ“แƒแƒแƒงแƒ”แƒœแƒ”แƒ— แƒจแƒ”แƒ›แƒ“แƒ”แƒ’แƒ˜ แƒ’แƒแƒ แƒ”แƒ›แƒแƒก แƒชแƒ•แƒšแƒแƒ“แƒ”แƒ‘แƒ˜ แƒกแƒ™แƒ แƒ˜แƒžแƒขแƒ˜แƒก แƒ’แƒแƒจแƒ•แƒ”แƒ‘แƒแƒ›แƒ“แƒ”:

  • WORDPRESS_DB_PASSWORD - WordPress แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ‘แƒแƒ–แƒ˜แƒก แƒžแƒแƒ แƒแƒšแƒ˜
  • WORDPRESS_ADMIN_USER - WordPress-แƒ˜แƒก แƒแƒ“แƒ›แƒ˜แƒœแƒ˜แƒกแƒขแƒ แƒแƒขแƒแƒ แƒ˜แƒก แƒกแƒแƒฎแƒ”แƒšแƒ˜
  • WORDPRESS_ADMIN_PASSWORD - WordPress-แƒ˜แƒก แƒแƒ“แƒ›แƒ˜แƒœแƒ˜แƒกแƒขแƒ แƒแƒขแƒแƒ แƒ˜แƒก แƒžแƒแƒ แƒแƒšแƒ˜
  • WORDPRESS_ADMIN_EMAIL - WordPress-แƒ˜แƒก แƒแƒ“แƒ›แƒ˜แƒœแƒ˜แƒกแƒขแƒ แƒแƒขแƒแƒ แƒ˜แƒก แƒ”แƒšแƒคแƒแƒกแƒขแƒ
  • WORDPRESS_URL แƒแƒ แƒ˜แƒก WordPress แƒกแƒแƒ˜แƒขแƒ˜แƒก แƒกแƒ แƒฃแƒšแƒ˜ URL, แƒ“แƒแƒฌแƒงแƒ”แƒ‘แƒฃแƒšแƒ˜ https://.
  • LETS_ENCRYPT_STAGING - แƒœแƒแƒ’แƒฃแƒšแƒ˜แƒกแƒฎแƒ›แƒ”แƒ•แƒแƒ“ แƒชแƒแƒ แƒ˜แƒ”แƒšแƒ˜แƒ, แƒ›แƒแƒ’แƒ แƒแƒ› แƒ›แƒœแƒ˜แƒจแƒ•แƒœแƒ”แƒšแƒแƒ‘แƒ˜แƒก 1-แƒ–แƒ” แƒ“แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒ—, แƒ—แƒฅแƒ•แƒ”แƒœ แƒ’แƒแƒ›แƒแƒ˜แƒงแƒ”แƒœแƒ”แƒ‘แƒ— Let's Encrypt แƒ“แƒแƒ“แƒ’แƒ›แƒ˜แƒก แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ”แƒ‘แƒก, แƒ แƒแƒ›แƒšแƒ”แƒ‘แƒ˜แƒช แƒแƒฃแƒชแƒ˜แƒšแƒ”แƒ‘แƒ”แƒšแƒ˜แƒ แƒ—แƒฅแƒ•แƒ”แƒœแƒ˜ แƒžแƒแƒ แƒแƒ›แƒ”แƒขแƒ แƒ”แƒ‘แƒ˜แƒก แƒขแƒ”แƒกแƒขแƒ˜แƒ แƒ”แƒ‘แƒ˜แƒกแƒแƒก แƒกแƒ”แƒ แƒ—แƒ˜แƒคแƒ˜แƒ™แƒแƒขแƒ”แƒ‘แƒ˜แƒก แƒฎแƒจแƒ˜แƒ แƒแƒ“ แƒ›แƒแƒ—แƒฎแƒแƒ•แƒœแƒ˜แƒกแƒ—แƒ•แƒ˜แƒก, แƒฌแƒ˜แƒœแƒแƒแƒฆแƒ›แƒ“แƒ”แƒ’ แƒจแƒ”แƒ›แƒ—แƒฎแƒ•แƒ”แƒ•แƒแƒจแƒ˜ Let's Encrypt แƒจแƒ”แƒ˜แƒซแƒšแƒ”แƒ‘แƒ แƒ“แƒ แƒแƒ”แƒ‘แƒ˜แƒ— แƒ“แƒแƒ‘แƒšแƒแƒ™แƒแƒก แƒ—แƒฅแƒ•แƒ”แƒœแƒ˜ ip แƒ›แƒ˜แƒกแƒแƒ›แƒแƒ แƒ—แƒ˜ แƒ›แƒแƒ—แƒฎแƒแƒ•แƒœแƒ˜แƒก แƒ“แƒ˜แƒ“แƒ˜ แƒ แƒแƒแƒ“แƒ”แƒœแƒแƒ‘แƒ˜แƒก แƒ’แƒแƒ›แƒ. .

แƒกแƒ™แƒ แƒ˜แƒžแƒขแƒ˜ แƒแƒ›แƒแƒฌแƒ›แƒ”แƒ‘แƒก, แƒ แƒแƒ› WordPress-แƒ—แƒแƒœ แƒ“แƒแƒ™แƒแƒ•แƒจแƒ˜แƒ แƒ”แƒ‘แƒฃแƒšแƒ˜ แƒ”แƒก แƒชแƒ•แƒšแƒแƒ“แƒ”แƒ‘แƒ˜ แƒ“แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒฃแƒšแƒ˜แƒ แƒ“แƒ แƒ’แƒแƒ“แƒ˜แƒก แƒ—แƒฃ แƒแƒ แƒ.
แƒกแƒ™แƒ แƒ˜แƒžแƒขแƒ˜แƒก แƒฎแƒแƒ–แƒ”แƒ‘แƒ˜ 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). แƒกแƒ™แƒ แƒ˜แƒžแƒขแƒ˜ แƒกแƒขแƒ แƒ˜แƒฅแƒแƒœแƒ–แƒ” 162 แƒ˜แƒงแƒ”แƒœแƒ”แƒ‘แƒก แƒแƒ› แƒ›แƒœแƒ˜แƒจแƒ•แƒœแƒ”แƒšแƒแƒ‘แƒแƒก, แƒ แƒแƒ—แƒ แƒจแƒ”แƒแƒ›แƒแƒฌแƒ›แƒแƒก, แƒ แƒแƒ› แƒกแƒฌแƒแƒ แƒ˜ WordPress CLI แƒคแƒแƒ˜แƒšแƒ˜ แƒฉแƒแƒ›แƒแƒขแƒ•แƒ˜แƒ แƒ—แƒฃแƒšแƒ˜แƒ.
  • UPLOAD_MAX_FILESIZE="16M" - แƒคแƒแƒ˜แƒšแƒ˜แƒก แƒ›แƒแƒฅแƒกแƒ˜แƒ›แƒแƒšแƒฃแƒ แƒ˜ แƒ–แƒแƒ›แƒ, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒจแƒ”แƒ˜แƒซแƒšแƒ”แƒ‘แƒ แƒแƒ˜แƒขแƒ•แƒ˜แƒ แƒ—แƒแƒก WordPress-แƒจแƒ˜. แƒ”แƒก แƒžแƒแƒ แƒแƒ›แƒ”แƒขแƒ แƒ˜ แƒ’แƒแƒ›แƒแƒ˜แƒงแƒ”แƒœแƒ”แƒ‘แƒ แƒ แƒแƒ›แƒ“แƒ”แƒœแƒ˜แƒ›แƒ” แƒแƒ“แƒ’แƒ˜แƒšแƒแƒก, แƒแƒ›แƒ˜แƒขแƒแƒ› แƒฃแƒคแƒ แƒ แƒแƒ“แƒ•แƒ˜แƒšแƒ˜แƒ แƒ›แƒ˜แƒกแƒ˜ แƒ“แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ แƒ”แƒ แƒ— แƒแƒ“แƒ’แƒ˜แƒšแƒแƒก.
  • TLS_HOSTNAME= "$(echo ${WORDPRESS_URL} | cut -d'/' -f3)" - แƒกแƒ˜แƒกแƒขแƒ”แƒ›แƒ˜แƒก แƒฐแƒแƒกแƒขแƒ˜แƒก แƒกแƒแƒฎแƒ”แƒšแƒ˜, แƒ›แƒแƒžแƒแƒ•แƒ”แƒ‘แƒฃแƒšแƒ˜ WORDPRESS_URL แƒชแƒ•แƒšแƒแƒ“แƒ˜แƒ“แƒแƒœ. แƒ’แƒแƒ›แƒแƒ˜แƒงแƒ”แƒœแƒ”แƒ‘แƒ Let's Encrypt-แƒ˜แƒกแƒ’แƒแƒœ แƒจแƒ”แƒกแƒแƒ‘แƒแƒ›แƒ˜แƒกแƒ˜ TLS/SSL แƒกแƒ”แƒ แƒ—แƒ˜แƒคแƒ˜แƒ™แƒแƒขแƒ”แƒ‘แƒ˜แƒก แƒ›แƒ˜แƒกแƒแƒฆแƒ”แƒ‘แƒแƒ“, แƒแƒกแƒ”แƒ•แƒ” WordPress-แƒ˜แƒก แƒจแƒ˜แƒ“แƒ แƒ’แƒแƒ“แƒแƒ›แƒแƒฌแƒ›แƒ”แƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก.
  • NGINX_CONF_DIR="/etc/nginx" - แƒ’แƒ–แƒ แƒ“แƒ˜แƒ แƒ”แƒฅแƒขแƒแƒ แƒ˜แƒแƒจแƒ˜ NGINX แƒžแƒแƒ แƒแƒ›แƒ”แƒขแƒ แƒ”แƒ‘แƒ˜แƒ—, แƒซแƒ˜แƒ แƒ˜แƒ—แƒแƒ“แƒ˜ แƒคแƒแƒ˜แƒšแƒ˜แƒก แƒฉแƒแƒ—แƒ•แƒšแƒ˜แƒ— nginx.conf.
  • CERT_DIR="/etc/letsencrypt/live/${TLS_HOSTNAME}" โ€” แƒชแƒ•แƒšแƒแƒ“แƒ˜แƒกแƒ’แƒแƒœ แƒ›แƒ˜แƒฆแƒ”แƒ‘แƒฃแƒšแƒ˜ Let's Encrypt แƒกแƒ”แƒ แƒ—แƒ˜แƒคแƒ˜แƒ™แƒแƒขแƒ”แƒ‘แƒ˜แƒก แƒ’แƒ–แƒ WordPress แƒกแƒแƒ˜แƒขแƒ˜แƒกแƒ—แƒ•แƒ˜แƒก TLS_HOSTNAME.

แƒฐแƒแƒกแƒขแƒ˜แƒก แƒกแƒแƒฎแƒ”แƒšแƒ˜แƒก แƒ›แƒ˜แƒœแƒ˜แƒญแƒ”แƒ‘แƒ WordPress แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ–แƒ”

แƒกแƒ™แƒ แƒ˜แƒžแƒขแƒ˜ แƒแƒ“แƒ’แƒ”แƒœแƒก แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ˜แƒก แƒฐแƒแƒกแƒขแƒ˜แƒก แƒกแƒแƒฎแƒ”แƒšแƒก, แƒ แƒแƒ—แƒ แƒจแƒ”แƒ”แƒกแƒแƒ‘แƒแƒ›แƒ”แƒ‘แƒแƒ“แƒ”แƒก แƒกแƒแƒ˜แƒขแƒ˜แƒก แƒ“แƒแƒ›แƒ”แƒœแƒ˜แƒก แƒกแƒแƒฎแƒ”แƒšแƒก. แƒ”แƒก แƒแƒ  แƒแƒ แƒ˜แƒก แƒกแƒแƒญแƒ˜แƒ แƒ, แƒ›แƒแƒ’แƒ แƒแƒ› แƒฃแƒคแƒ แƒ แƒ›แƒแƒกแƒแƒฎแƒ”แƒ แƒฎแƒ”แƒ‘แƒ”แƒšแƒ˜แƒ แƒ’แƒแƒ›แƒแƒ•แƒแƒšแƒ˜ แƒคแƒแƒกแƒขแƒ˜แƒก แƒ’แƒแƒ’แƒ–แƒแƒ•แƒœแƒ SMTP-แƒ˜แƒ— แƒ”แƒ แƒ—แƒ˜ แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ˜แƒก แƒ“แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒกแƒแƒก, แƒ แƒแƒ’แƒแƒ แƒช แƒ”แƒก แƒแƒ แƒ˜แƒก แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒ˜แƒ แƒ”แƒ‘แƒฃแƒšแƒ˜ แƒกแƒ™แƒ แƒ˜แƒžแƒขแƒ˜แƒ—.

แƒกแƒ™แƒ แƒ˜แƒžแƒขแƒ˜แƒก แƒ™แƒแƒ“แƒ˜

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

แƒฐแƒแƒกแƒขแƒ˜แƒก แƒกแƒแƒฎแƒ”แƒšแƒ˜แƒก แƒ“แƒแƒ›แƒแƒขแƒ”แƒ‘แƒ /etc/hosts-แƒจแƒ˜

แƒ’แƒแƒ แƒ“แƒ แƒแƒ›แƒ˜แƒกแƒ WP-Cron แƒ’แƒแƒ›แƒแƒ˜แƒงแƒ”แƒœแƒ”แƒ‘แƒ แƒžแƒ”แƒ แƒ˜แƒแƒ“แƒฃแƒšแƒ˜ แƒแƒ›แƒแƒชแƒแƒœแƒ”แƒ‘แƒ˜แƒก แƒจแƒ”แƒกแƒแƒกแƒ แƒฃแƒšแƒ”แƒ‘แƒšแƒแƒ“, แƒ›แƒแƒ˜แƒ—แƒฎแƒแƒ•แƒก WordPress-แƒก, แƒ แƒแƒ› แƒจแƒ”แƒซแƒšแƒแƒก แƒฌแƒ•แƒ“แƒแƒ›แƒ แƒ—แƒแƒ•แƒแƒ“ HTTP-แƒ˜แƒก แƒกแƒแƒจแƒฃแƒแƒšแƒ”แƒ‘แƒ˜แƒ—. แƒ˜แƒ›แƒ˜แƒกแƒแƒ—แƒ•แƒ˜แƒก, แƒ แƒแƒ› แƒ“แƒแƒ แƒฌแƒ›แƒฃแƒœแƒ“แƒ”แƒ—, แƒ แƒแƒ› WP-Cron แƒกแƒฌแƒแƒ แƒแƒ“ แƒ›แƒฃแƒจแƒแƒแƒ‘แƒก แƒงแƒ•แƒ”แƒšแƒ แƒ’แƒแƒ แƒ”แƒ›แƒแƒจแƒ˜, แƒกแƒ™แƒ แƒ˜แƒžแƒขแƒ˜ แƒแƒ›แƒแƒขแƒ”แƒ‘แƒก แƒฎแƒแƒ–แƒก แƒคแƒแƒ˜แƒšแƒก / Etc / hostsแƒ แƒแƒ—แƒ WordPress-แƒ›แƒ แƒจแƒ”แƒซแƒšแƒแƒก แƒฌแƒ•แƒ“แƒแƒ›แƒ แƒกแƒแƒ™แƒฃแƒ—แƒแƒ  แƒ—แƒแƒ•แƒ–แƒ” loopback แƒ˜แƒœแƒขแƒ”แƒ แƒคแƒ”แƒ˜แƒกแƒ˜แƒก แƒ›แƒ”แƒจแƒ•แƒ”แƒแƒ‘แƒ˜แƒ—:

แƒกแƒ™แƒ แƒ˜แƒžแƒขแƒ˜แƒก แƒ™แƒแƒ“แƒ˜

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

แƒจแƒ”แƒ›แƒ“แƒ”แƒ’แƒ˜ แƒœแƒแƒ‘แƒ˜แƒฏแƒ”แƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก แƒกแƒแƒญแƒ˜แƒ แƒ แƒฎแƒ”แƒšแƒกแƒแƒฌแƒงแƒแƒ”แƒ‘แƒ˜แƒก แƒ“แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ

แƒกแƒ™แƒ แƒ˜แƒžแƒขแƒ˜แƒก แƒ“แƒแƒœแƒแƒ แƒฉแƒ”แƒœ แƒœแƒแƒฌแƒ˜แƒšแƒก แƒ’แƒแƒ แƒ™แƒ•แƒ”แƒฃแƒšแƒ˜ แƒžแƒ แƒแƒ’แƒ แƒแƒ›แƒ”แƒ‘แƒ˜ แƒกแƒญแƒ˜แƒ แƒ“แƒ”แƒ‘แƒ แƒ“แƒ แƒ•แƒแƒ แƒแƒฃแƒ“แƒแƒ‘แƒก, แƒ แƒแƒ› แƒกแƒแƒชแƒแƒ•แƒ˜ แƒ’แƒแƒœแƒแƒฎแƒšแƒ”แƒ‘แƒฃแƒšแƒ˜แƒ. แƒฉแƒ•แƒ”แƒœ แƒ•แƒแƒแƒฎแƒšแƒ”แƒ‘แƒ— แƒกแƒแƒชแƒแƒ•แƒ”แƒ‘แƒ˜แƒก แƒฉแƒแƒ›แƒแƒœแƒแƒ—แƒ•แƒแƒšแƒก, แƒ แƒ˜แƒก แƒจแƒ”แƒ›แƒ“แƒ”แƒ’แƒแƒช แƒ•แƒแƒ˜แƒœแƒกแƒขแƒแƒšแƒ˜แƒ แƒ”แƒ‘แƒ— แƒกแƒแƒญแƒ˜แƒ แƒ แƒ˜แƒœแƒกแƒขแƒ แƒฃแƒ›แƒ”แƒœแƒขแƒ”แƒ‘แƒก:

แƒกแƒ™แƒ แƒ˜แƒžแƒขแƒ˜แƒก แƒ™แƒแƒ“แƒ˜

# 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 Unit-แƒก แƒ“แƒ แƒฆแƒ˜แƒ แƒ™แƒแƒ“แƒ˜แƒก NGINX-แƒก แƒแƒคแƒ˜แƒชแƒ˜แƒแƒšแƒฃแƒ แƒ˜ NGINX แƒกแƒแƒชแƒแƒ•แƒ”แƒ‘แƒ˜แƒ“แƒแƒœ, แƒ แƒแƒ—แƒ แƒ“แƒแƒ แƒฌแƒ›แƒฃแƒœแƒ“แƒ”แƒก, แƒ แƒแƒ› แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒฃแƒšแƒ˜แƒ แƒ•แƒ”แƒ แƒกแƒ˜แƒ”แƒ‘แƒ˜ แƒฃแƒกแƒแƒคแƒ แƒ—แƒฎแƒแƒ”แƒ‘แƒ˜แƒก แƒฃแƒแƒฎแƒšแƒ”แƒกแƒ˜ แƒžแƒแƒขแƒฉแƒ”แƒ‘แƒ˜แƒ— แƒ“แƒ แƒจแƒ”แƒชแƒ“แƒแƒ›แƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒ›แƒแƒกแƒฌแƒแƒ แƒ”แƒ‘แƒ˜แƒ—.

แƒกแƒ™แƒ แƒ˜แƒžแƒขแƒ˜ แƒแƒ›แƒแƒขแƒ”แƒ‘แƒก NGINX Unit แƒกแƒแƒชแƒแƒ•แƒก แƒ“แƒ แƒจแƒ”แƒ›แƒ“แƒ”แƒ’ 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 Unit, 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

PHP-แƒ˜แƒก แƒ“แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ NGINX Unit-แƒ—แƒแƒœ แƒ“แƒ WordPress-แƒ—แƒแƒœ แƒ’แƒแƒ›แƒแƒกแƒแƒงแƒ”แƒœแƒ”แƒ‘แƒšแƒแƒ“

แƒกแƒ™แƒ แƒ˜แƒžแƒขแƒ˜ แƒฅแƒ›แƒœแƒ˜แƒก แƒžแƒแƒ แƒแƒ›แƒ”แƒขแƒ แƒ”แƒ‘แƒ˜แƒก แƒคแƒแƒ˜แƒšแƒก แƒ“แƒ˜แƒ แƒ”แƒฅแƒขแƒแƒ แƒ˜แƒแƒจแƒ˜ แƒ™แƒแƒœแƒค. แƒ“. แƒ”แƒก แƒแƒ“แƒ’แƒ”แƒœแƒก แƒคแƒแƒ˜แƒšแƒ˜แƒก แƒ›แƒแƒฅแƒกแƒ˜แƒ›แƒแƒšแƒฃแƒ  แƒ–แƒแƒ›แƒแƒก 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 แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ‘แƒแƒ–แƒ˜แƒก แƒžแƒแƒ แƒแƒ›แƒ”แƒขแƒ แƒ”แƒ‘แƒ˜แƒก แƒ›แƒ˜แƒ—แƒ˜แƒ—แƒ”แƒ‘แƒ

แƒฉแƒ•แƒ”แƒœ แƒแƒ•แƒ˜แƒ แƒฉแƒ˜แƒ”แƒ— MariaDB MySQL-แƒ˜แƒก แƒœแƒแƒชแƒ•แƒšแƒแƒ“, แƒ แƒแƒ“แƒ’แƒแƒœ แƒ›แƒแƒก แƒแƒฅแƒ•แƒก แƒ›แƒ”แƒขแƒ˜ แƒกแƒแƒ—แƒ”แƒ›แƒ แƒแƒฅแƒขแƒ˜แƒ•แƒแƒ‘แƒ แƒ“แƒ แƒแƒกแƒ”แƒ•แƒ” แƒกแƒแƒ•แƒแƒ แƒแƒฃแƒ“แƒแƒ แƒกแƒขแƒแƒœแƒ“แƒแƒ แƒขแƒฃแƒšแƒแƒ“ แƒฃแƒ–แƒ แƒฃแƒœแƒ•แƒ”แƒšแƒงแƒแƒคแƒก แƒฃแƒ™แƒ”แƒ—แƒ”แƒก แƒจแƒ”แƒกแƒ แƒฃแƒšแƒ”แƒ‘แƒแƒก (แƒแƒšแƒ‘แƒแƒ—, แƒแƒฅ แƒงแƒ•แƒ”แƒšแƒแƒคแƒ”แƒ แƒ˜ แƒฃแƒคแƒ แƒ แƒ›แƒแƒ แƒขแƒ˜แƒ•แƒ˜แƒ: MySQL-แƒ˜แƒก แƒ˜แƒœแƒกแƒขแƒแƒšแƒแƒชแƒ˜แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก แƒกแƒแƒญแƒ˜แƒ แƒแƒ แƒกแƒฎแƒ•แƒ แƒกแƒแƒชแƒแƒ•แƒ˜ แƒ“แƒแƒแƒ›แƒแƒขแƒแƒ—, แƒ“แƒแƒแƒฎแƒš. แƒ›แƒ—แƒแƒ แƒ’แƒ›แƒœแƒ”แƒšแƒ˜).

แƒกแƒ™แƒ แƒ˜แƒžแƒขแƒ˜ แƒฅแƒ›แƒœแƒ˜แƒก แƒแƒฎแƒแƒš แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ‘แƒแƒ–แƒแƒก แƒ“แƒ แƒฅแƒ›แƒœแƒ˜แƒก แƒกแƒ”แƒ แƒ—แƒ˜แƒคแƒ˜แƒ™แƒแƒขแƒ”แƒ‘แƒก WordPress-แƒ–แƒ” แƒฌแƒ•แƒ“แƒแƒ›แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก loopback แƒ˜แƒœแƒขแƒ”แƒ แƒคแƒ”แƒ˜แƒกแƒ˜แƒก แƒ›แƒ”แƒจแƒ•แƒ”แƒแƒ‘แƒ˜แƒ—:

แƒกแƒ™แƒ แƒ˜แƒžแƒขแƒ˜แƒก แƒ™แƒแƒ“แƒ˜

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

WordPress CLI แƒžแƒ แƒแƒ’แƒ แƒแƒ›แƒ˜แƒก แƒ˜แƒœแƒกแƒขแƒแƒšแƒแƒชแƒ˜แƒ

แƒแƒ› แƒ”แƒขแƒแƒžแƒ–แƒ” แƒกแƒ™แƒ แƒ˜แƒžแƒขแƒ˜ แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒก แƒžแƒ แƒแƒ’แƒ แƒแƒ›แƒแƒก 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

WordPress-แƒ˜แƒก แƒ˜แƒœแƒกแƒขแƒแƒšแƒแƒชแƒ˜แƒ แƒ“แƒ แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒ

แƒกแƒ™แƒ แƒ˜แƒžแƒขแƒ˜ แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒก WordPress-แƒ˜แƒก แƒฃแƒแƒฎแƒšแƒ”แƒก แƒ•แƒ”แƒ แƒกแƒ˜แƒแƒก แƒ“แƒ˜แƒ แƒ”แƒฅแƒขแƒแƒ แƒ˜แƒแƒจแƒ˜ /var/www/wordpressแƒ“แƒ แƒแƒกแƒ”แƒ•แƒ” แƒชแƒ•แƒšแƒ˜แƒก แƒžแƒแƒ แƒแƒ›แƒ”แƒขแƒ แƒ”แƒ‘แƒก:

  • แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ‘แƒแƒ–แƒ˜แƒก แƒ™แƒแƒ•แƒจแƒ˜แƒ แƒ˜ แƒ›แƒฃแƒจแƒแƒแƒ‘แƒก unix แƒ“แƒแƒ›แƒ”แƒœแƒ˜แƒก แƒกแƒแƒ™แƒ”แƒขแƒ–แƒ” TCP-แƒ˜แƒก แƒœแƒแƒชแƒ•แƒšแƒแƒ“ loopback-แƒ–แƒ”, แƒ แƒแƒ—แƒ แƒจแƒ”แƒแƒ›แƒชแƒ˜แƒ แƒแƒก TCP แƒขแƒ แƒแƒคแƒ˜แƒ™แƒ˜.
  • WordPress แƒแƒ›แƒแƒขแƒ”แƒ‘แƒก แƒžแƒ แƒ”แƒคแƒ˜แƒฅแƒกแƒก https:// URL-แƒ–แƒ”, แƒ—แƒฃ แƒ™แƒšแƒ˜แƒ”แƒœแƒขแƒ”แƒ‘แƒ˜ แƒฃแƒ™แƒแƒ•แƒจแƒ˜แƒ แƒ“แƒ”แƒ‘แƒ˜แƒแƒœ NGINX-แƒก HTTPS-แƒ˜แƒ— แƒ“แƒ แƒแƒกแƒ”แƒ•แƒ” แƒแƒ’แƒ–แƒแƒ•แƒœแƒ˜แƒก แƒ“แƒ˜แƒกแƒขแƒแƒœแƒชแƒ˜แƒฃแƒ แƒ˜ แƒฐแƒแƒกแƒขแƒ˜แƒก แƒกแƒแƒฎแƒ”แƒšแƒก (แƒ แƒแƒ’แƒแƒ แƒช แƒ›แƒแƒฌแƒแƒ“แƒ”แƒ‘แƒฃแƒšแƒ˜แƒ NGINX) PHP-แƒ–แƒ”. แƒฉแƒ•แƒ”แƒœ แƒ•แƒ˜แƒงแƒ”แƒœแƒ”แƒ‘แƒ— แƒ™แƒแƒ“แƒ˜แƒก แƒœแƒแƒฌแƒ˜แƒšแƒก แƒแƒ›แƒ˜แƒก แƒ“แƒแƒกแƒแƒงแƒ”แƒœแƒ”แƒ‘แƒšแƒแƒ“.
  • WordPress-แƒก แƒกแƒญแƒ˜แƒ แƒ“แƒ”แƒ‘แƒ HTTPS แƒจแƒ”แƒกแƒ•แƒšแƒ˜แƒกแƒ—แƒ•แƒ˜แƒก
  • URL-แƒ˜แƒก แƒœแƒแƒ’แƒฃแƒšแƒ˜แƒกแƒฎแƒ›แƒ”แƒ•แƒ˜ แƒกแƒขแƒ แƒฃแƒฅแƒขแƒฃแƒ แƒ แƒ“แƒแƒคแƒฃแƒซแƒœแƒ”แƒ‘แƒฃแƒšแƒ˜แƒ แƒ แƒ”แƒกแƒฃแƒ แƒกแƒ”แƒ‘แƒ–แƒ”
  • แƒแƒ“แƒ’แƒ”แƒœแƒก แƒกแƒฌแƒแƒ  แƒœแƒ”แƒ‘แƒแƒ แƒ—แƒ•แƒ”แƒ‘แƒก แƒคแƒแƒ˜แƒšแƒฃแƒ  แƒกแƒ˜แƒกแƒขแƒ”แƒ›แƒแƒ–แƒ” WordPress แƒ“แƒ˜แƒ แƒ”แƒฅแƒขแƒแƒ แƒ˜แƒแƒจแƒ˜.

แƒกแƒ™แƒ แƒ˜แƒžแƒขแƒ˜แƒก แƒ™แƒแƒ“แƒ˜

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

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

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

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

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

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

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

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

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

NGINX แƒ’แƒแƒœแƒงแƒแƒคแƒ˜แƒšแƒ”แƒ‘แƒ˜แƒก แƒ“แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ

แƒกแƒ™แƒ แƒ˜แƒžแƒขแƒ˜ แƒแƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒ˜แƒ แƒ”แƒ‘แƒก NGINX แƒ”แƒ แƒ—แƒ”แƒฃแƒšแƒก PHP-แƒ˜แƒก แƒ’แƒแƒกแƒแƒจแƒ•แƒ”แƒ‘แƒแƒ“ แƒ“แƒ WordPress แƒ‘แƒ˜แƒšแƒ˜แƒ™แƒ”แƒ‘แƒ˜แƒก แƒ“แƒแƒกแƒแƒ›แƒฃแƒจแƒแƒ•แƒ”แƒ‘แƒšแƒแƒ“, PHP แƒžแƒ แƒแƒชแƒ”แƒกแƒ˜แƒก แƒกแƒแƒฎแƒ”แƒšแƒ”แƒ‘แƒ˜แƒก แƒกแƒ˜แƒ•แƒ แƒชแƒ˜แƒก แƒ˜แƒ–แƒแƒšแƒ˜แƒ แƒ”แƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก แƒ“แƒ แƒจแƒ”แƒกแƒ แƒฃแƒšแƒ”แƒ‘แƒ˜แƒก แƒžแƒแƒ แƒแƒ›แƒ”แƒขแƒ แƒ”แƒ‘แƒ˜แƒก แƒแƒžแƒขแƒ˜แƒ›แƒ˜แƒ–แƒแƒชแƒ˜แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก. แƒแƒฅ แƒแƒ แƒ˜แƒก แƒกแƒแƒ›แƒ˜ แƒ›แƒแƒฎแƒแƒกแƒ˜แƒแƒ—แƒ”แƒ‘แƒ”แƒšแƒ˜, แƒ แƒแƒ›แƒ”แƒšแƒกแƒแƒช แƒงแƒฃแƒ แƒแƒ“แƒฆแƒ”แƒ‘แƒ แƒฃแƒœแƒ“แƒ แƒ›แƒ˜แƒแƒฅแƒชแƒ˜แƒแƒ—:

  • แƒกแƒแƒฎแƒ”แƒšแƒ—แƒ แƒกแƒ˜แƒ•แƒ แƒชแƒ˜แƒก แƒ›แƒฎแƒแƒ แƒ“แƒแƒญแƒ”แƒ แƒ แƒ’แƒแƒœแƒ˜แƒกแƒแƒ–แƒฆแƒ•แƒ แƒ”แƒ‘แƒ แƒžแƒ˜แƒ แƒแƒ‘แƒ˜แƒ—, แƒ˜แƒ›แƒ˜แƒก แƒจแƒ”แƒ›แƒแƒฌแƒ›แƒ”แƒ‘แƒ˜แƒก แƒกแƒแƒคแƒฃแƒซแƒ•แƒ”แƒšแƒ–แƒ”, แƒ แƒแƒ› แƒกแƒ™แƒ แƒ˜แƒžแƒขแƒ˜ แƒ›แƒฃแƒจแƒแƒแƒ‘แƒก แƒ™แƒแƒœแƒขแƒ”แƒ˜แƒœแƒ”แƒ แƒจแƒ˜. แƒ”แƒก แƒแƒฃแƒชแƒ˜แƒšแƒ”แƒ‘แƒ”แƒšแƒ˜แƒ, แƒ แƒแƒ“แƒ’แƒแƒœ แƒ™แƒแƒœแƒขแƒ”แƒ˜แƒœแƒ”แƒ แƒ”แƒ‘แƒ˜แƒก แƒฃแƒ›แƒ”แƒขแƒ”แƒกแƒแƒ‘แƒ แƒแƒ  แƒฃแƒญแƒ”แƒ แƒก แƒ›แƒฎแƒแƒ แƒก แƒ™แƒแƒœแƒขแƒ”แƒ˜แƒœแƒ”แƒ แƒ”แƒ‘แƒ˜แƒก แƒฌแƒงแƒแƒ‘แƒ˜แƒš แƒ’แƒแƒจแƒ•แƒ”แƒ‘แƒแƒก.
  • แƒ—แƒฃ แƒแƒ แƒกแƒ”แƒ‘แƒแƒ‘แƒก แƒกแƒแƒฎแƒ”แƒšแƒ—แƒ แƒกแƒ˜แƒ•แƒ แƒชแƒ˜แƒก แƒ›แƒฎแƒแƒ แƒ“แƒแƒญแƒ”แƒ แƒ, แƒ’แƒแƒ›แƒแƒ แƒ—แƒ”แƒ— แƒกแƒแƒฎแƒ”แƒšแƒ—แƒ แƒกแƒ˜แƒ•แƒ แƒชแƒ” แƒฅแƒกแƒ”แƒšแƒ˜แƒก. แƒ”แƒก แƒแƒ แƒ˜แƒก แƒกแƒแƒจแƒฃแƒแƒšแƒ”แƒ‘แƒแƒก WordPress-แƒก แƒ“แƒแƒฃแƒ™แƒแƒ•แƒจแƒ˜แƒ แƒ“แƒ”แƒก แƒแƒ แƒ˜แƒ•แƒ” แƒ‘แƒแƒšแƒ แƒฌแƒ”แƒ แƒขแƒ˜แƒšแƒก แƒ“แƒ แƒ˜แƒงแƒแƒก แƒฎแƒ”แƒšแƒ›แƒ˜แƒกแƒแƒฌแƒ•แƒ“แƒแƒ›แƒ˜ แƒ˜แƒœแƒขแƒ”แƒ แƒœแƒ”แƒขแƒจแƒ˜ แƒ”แƒ แƒ—แƒ“แƒ แƒแƒฃแƒšแƒแƒ“.
  • แƒžแƒ แƒแƒชแƒ”แƒกแƒ”แƒ‘แƒ˜แƒก แƒ›แƒแƒฅแƒกแƒ˜แƒ›แƒแƒšแƒฃแƒ แƒ˜ แƒ แƒแƒแƒ“แƒ”แƒœแƒแƒ‘แƒ แƒ’แƒแƒœแƒ˜แƒกแƒแƒ–แƒฆแƒ•แƒ แƒ”แƒ‘แƒ แƒจแƒ”แƒ›แƒ“แƒ”แƒ’แƒœแƒแƒ˜แƒ แƒแƒ“: (แƒฎแƒ”แƒšแƒ›แƒ˜แƒกแƒแƒฌแƒ•แƒ“แƒแƒ›แƒ˜แƒ แƒ›แƒ”แƒฎแƒกแƒ˜แƒ”แƒ แƒ”แƒ‘แƒ MariaDB-แƒ˜แƒกแƒ แƒ“แƒ NGINX Uniy-แƒ˜แƒก แƒ’แƒแƒกแƒแƒจแƒ•แƒ”แƒ‘แƒแƒ“)/(RAM แƒšแƒ˜แƒ›แƒ˜แƒขแƒ˜ PHP-แƒจแƒ˜ + 5)
    แƒ”แƒก แƒ›แƒœแƒ˜แƒจแƒ•แƒœแƒ”แƒšแƒแƒ‘แƒ แƒ“แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒฃแƒšแƒ˜แƒ NGINX แƒ”แƒ แƒ—แƒ”แƒฃแƒšแƒ˜แƒก แƒžแƒแƒ แƒแƒ›แƒ”แƒขแƒ แƒ”แƒ‘แƒจแƒ˜.

แƒ”แƒก แƒ›แƒœแƒ˜แƒจแƒ•แƒœแƒ”แƒšแƒแƒ‘แƒ แƒแƒกแƒ”แƒ•แƒ” แƒ’แƒฃแƒšแƒ˜แƒกแƒฎแƒ›แƒแƒ‘แƒก, แƒ แƒแƒ› แƒงแƒแƒ•แƒ”แƒšแƒ—แƒ•แƒ˜แƒก แƒแƒ แƒ˜แƒก แƒ›แƒ˜แƒœแƒ˜แƒ›แƒฃแƒ› แƒแƒ แƒ˜ PHP แƒžแƒ แƒแƒชแƒ”แƒกแƒ˜ แƒ’แƒแƒจแƒ•แƒ”แƒ‘แƒฃแƒšแƒ˜, แƒ แƒแƒช แƒ›แƒœแƒ˜แƒจแƒ•แƒœแƒ”แƒšแƒแƒ•แƒแƒœแƒ˜แƒ, แƒ แƒแƒ“แƒ’แƒแƒœ WordPress แƒฃแƒ’แƒ–แƒแƒ•แƒœแƒ˜แƒก แƒฃแƒแƒ›แƒ แƒแƒ• แƒแƒกแƒ˜แƒœแƒฅแƒ แƒแƒœแƒฃแƒš แƒ›แƒแƒ—แƒฎแƒแƒ•แƒœแƒแƒก แƒกแƒแƒ™แƒฃแƒ—แƒแƒ  แƒ—แƒแƒ•แƒก แƒ“แƒ แƒ“แƒแƒ›แƒแƒขแƒ”แƒ‘แƒ˜แƒ—แƒ˜ แƒžแƒ แƒแƒชแƒ”แƒกแƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒ แƒ”แƒจแƒ”, แƒ’แƒแƒจแƒ•แƒ”แƒ‘แƒฃแƒšแƒ˜, แƒ›แƒแƒ’แƒแƒšแƒ˜แƒ—แƒแƒ“, 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-แƒ˜แƒก แƒ“แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ

แƒจแƒ”แƒ›แƒ“แƒ”แƒ’แƒ˜, แƒกแƒ™แƒ แƒ˜แƒžแƒขแƒ˜ แƒฅแƒ›แƒœแƒ˜แƒก แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒ˜แƒก แƒคแƒแƒ˜แƒšแƒก WordPress-แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก แƒœแƒแƒ’แƒฃแƒšแƒ˜แƒกแƒฎแƒ›แƒ”แƒ•แƒ˜.conf แƒ™แƒแƒขแƒแƒšแƒแƒ’แƒจแƒ˜ แƒ™แƒแƒœแƒค. แƒ“. แƒ˜แƒก แƒแƒฅ แƒแƒ แƒ˜แƒก แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒ˜แƒ แƒ”แƒ‘แƒฃแƒšแƒ˜:

  • Let's Encrypt-แƒ˜แƒกแƒ’แƒแƒœ แƒ›แƒ˜แƒฆแƒ”แƒ‘แƒฃแƒšแƒ˜ TLS แƒกแƒ”แƒ แƒ—แƒ˜แƒคแƒ˜แƒ™แƒแƒขแƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒแƒฅแƒขแƒ˜แƒฃแƒ แƒ”แƒ‘แƒ Certbot-แƒ˜แƒก แƒ›แƒ”แƒจแƒ•แƒ”แƒแƒ‘แƒ˜แƒ— (แƒ›แƒ˜แƒกแƒ˜ แƒ“แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ แƒ˜แƒฅแƒœแƒ”แƒ‘แƒ แƒจแƒ”แƒ›แƒ“แƒ”แƒ’ แƒ’แƒแƒœแƒงแƒแƒคแƒ˜แƒšแƒ”แƒ‘แƒแƒจแƒ˜)
  • TLS แƒฃแƒกแƒแƒคแƒ แƒ—แƒฎแƒแƒ”แƒ‘แƒ˜แƒก แƒžแƒแƒ แƒแƒ›แƒ”แƒขแƒ แƒ”แƒ‘แƒ˜แƒก แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒ Let's Encrypt-แƒ˜แƒก แƒ แƒ”แƒ™แƒแƒ›แƒ”แƒœแƒ“แƒแƒชแƒ˜แƒ”แƒ‘แƒ–แƒ” แƒ“แƒแƒงแƒ แƒ“แƒœแƒแƒ‘แƒ˜แƒ—
  • แƒœแƒแƒ’แƒฃแƒšแƒ˜แƒกแƒฎแƒ›แƒ”แƒ•แƒแƒ“ แƒฉแƒแƒ แƒ—แƒ”แƒ— แƒฅแƒ”แƒจแƒ˜แƒ แƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒ›แƒแƒขแƒแƒ•แƒ”แƒ‘แƒ˜แƒก แƒ›แƒแƒ—แƒฎแƒแƒ•แƒœแƒ”แƒ‘แƒ˜ 1 แƒกแƒแƒแƒ—แƒ˜แƒก แƒ’แƒแƒœแƒ›แƒแƒ•แƒšแƒแƒ‘แƒแƒจแƒ˜
  • แƒ’แƒแƒ›แƒแƒ แƒ—แƒ”แƒ— แƒฌแƒ•แƒ“แƒแƒ›แƒ˜แƒก แƒแƒฆแƒ แƒ˜แƒชแƒฎแƒ•แƒ, แƒแƒกแƒ”แƒ•แƒ” แƒจแƒ”แƒชแƒ“แƒแƒ›แƒ˜แƒก แƒแƒฆแƒ แƒ˜แƒชแƒฎแƒ•แƒ, แƒ—แƒฃ แƒคแƒแƒ˜แƒšแƒ˜ แƒ•แƒ”แƒ  แƒ›แƒแƒ˜แƒซแƒ”แƒ‘แƒœแƒ, แƒแƒ แƒ˜ แƒกแƒแƒ”แƒ แƒ—แƒ แƒ›แƒแƒ—แƒฎแƒแƒ•แƒœแƒ˜แƒšแƒ˜ แƒคแƒแƒ˜แƒšแƒ˜แƒกแƒ—แƒ•แƒ˜แƒก: favicon.ico แƒ“แƒ robots.txt
  • แƒคแƒแƒ แƒฃแƒš แƒคแƒแƒ˜แƒšแƒ”แƒ‘แƒ–แƒ” แƒ“แƒ แƒ–แƒแƒ’แƒ˜แƒ”แƒ แƒ— แƒคแƒแƒ˜แƒšแƒ–แƒ” แƒฌแƒ•แƒ“แƒแƒ›แƒ˜แƒก แƒแƒฆแƒ™แƒ•แƒ”แƒ—แƒ .phpแƒฃแƒ™แƒแƒœแƒแƒœแƒ แƒฌแƒ•แƒ“แƒแƒ›แƒ˜แƒก แƒแƒœ แƒ’แƒแƒฃแƒ—แƒ•แƒแƒšแƒ˜แƒกแƒฌแƒ˜แƒœแƒ”แƒ‘แƒ”แƒšแƒ˜ แƒ“แƒแƒฌแƒงแƒ”แƒ‘แƒ˜แƒก แƒ—แƒแƒ•แƒ˜แƒ“แƒแƒœ แƒแƒกแƒแƒชแƒ˜แƒšแƒ”แƒ‘แƒšแƒแƒ“
  • แƒ’แƒแƒ›แƒแƒ แƒ—แƒ”แƒ— แƒฌแƒ•แƒ“แƒแƒ›แƒ˜แƒก แƒแƒฆแƒ แƒ˜แƒชแƒฎแƒ•แƒ แƒกแƒขแƒแƒขแƒ˜แƒ™แƒฃแƒ แƒ˜ แƒ“แƒ แƒจแƒ แƒ˜แƒคแƒขแƒ˜แƒก แƒคแƒแƒ˜แƒšแƒ”แƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก
  • แƒกแƒแƒ—แƒแƒฃแƒ แƒ˜แƒก แƒžแƒแƒ แƒแƒ›แƒ”แƒขแƒ แƒ˜ Access-Control-Allow-Origin แƒจแƒ แƒ˜แƒคแƒขแƒ˜แƒก แƒคแƒแƒ˜แƒšแƒ”แƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก
  • 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-แƒ˜แƒก แƒ“แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ Let's Encrypt-แƒ˜แƒก แƒกแƒ”แƒ แƒ—แƒ˜แƒคแƒ˜แƒ™แƒแƒขแƒ”แƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก แƒ“แƒ แƒ›แƒแƒ—แƒ˜ แƒแƒ•แƒขแƒแƒ›แƒแƒขแƒฃแƒ แƒ˜ แƒ’แƒแƒœแƒแƒฎแƒšแƒ”แƒ‘แƒ

แƒกแƒ”แƒ แƒขแƒ‘แƒแƒขแƒ˜ แƒแƒ แƒ˜แƒก แƒฃแƒคแƒแƒกแƒ แƒ˜แƒœแƒกแƒขแƒ แƒฃแƒ›แƒ”แƒœแƒขแƒ˜ Electronic Frontier Foundation (EFF), แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒกแƒแƒจแƒฃแƒแƒšแƒ”แƒ‘แƒแƒก แƒ’แƒแƒซแƒšแƒ”แƒ•แƒ— แƒ›แƒ˜แƒ˜แƒฆแƒแƒ— แƒ“แƒ แƒแƒ•แƒขแƒแƒ›แƒแƒขแƒฃแƒ แƒแƒ“ แƒ’แƒแƒœแƒแƒแƒฎแƒšแƒแƒ— TLS แƒกแƒ”แƒ แƒ—แƒ˜แƒคแƒ˜แƒ™แƒแƒขแƒ”แƒ‘แƒ˜ Let's Encrypt-แƒ˜แƒกแƒ’แƒแƒœ. แƒกแƒ™แƒ แƒ˜แƒžแƒขแƒ˜ แƒแƒ™แƒ”แƒ—แƒ”แƒ‘แƒก แƒจแƒ”แƒ›แƒ“แƒ”แƒ’แƒก Certbot-แƒ˜แƒก แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก, แƒ แƒแƒ—แƒ แƒ“แƒแƒแƒ›แƒฃแƒจแƒแƒ•แƒแƒก แƒกแƒ”แƒ แƒ—แƒ˜แƒคแƒ˜แƒ™แƒแƒขแƒ”แƒ‘แƒ˜ Let's Encrypt-แƒ˜แƒ“แƒแƒœ NGINX-แƒจแƒ˜:

  • แƒแƒฉแƒ”แƒ แƒ”แƒ‘แƒก NGINX-แƒก
  • แƒฉแƒแƒ›แƒแƒขแƒ•แƒ˜แƒ แƒ—แƒแƒ•แƒก แƒ แƒ”แƒ™แƒแƒ›แƒ”แƒœแƒ“แƒ”แƒ‘แƒฃแƒšแƒ˜ TLS แƒžแƒแƒ แƒแƒ›แƒ”แƒขแƒ แƒ”แƒ‘แƒ˜
  • แƒแƒฌแƒแƒ แƒ›แƒแƒ”แƒ‘แƒก Certbot-แƒก แƒกแƒแƒ˜แƒขแƒ˜แƒกแƒ—แƒ•แƒ˜แƒก แƒกแƒ”แƒ แƒ—แƒ˜แƒคแƒ˜แƒ™แƒแƒขแƒ”แƒ‘แƒ˜แƒก แƒ›แƒ˜แƒกแƒแƒฆแƒ”แƒ‘แƒแƒ“
  • แƒ’แƒแƒ“แƒแƒขแƒ•แƒ˜แƒ แƒ—แƒแƒ•แƒก NGINX-แƒก แƒกแƒ”แƒ แƒ—แƒ˜แƒคแƒ˜แƒ™แƒแƒขแƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒ›แƒแƒกแƒแƒงแƒ”แƒœแƒ”แƒ‘แƒšแƒแƒ“
  • แƒแƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒ˜แƒ แƒ”แƒ‘แƒก Certbot-แƒก แƒงแƒแƒ•แƒ”แƒšแƒ“แƒฆแƒ˜แƒฃแƒ แƒแƒ“ แƒ“แƒ˜แƒšแƒ˜แƒก 3:24 แƒกแƒแƒแƒ—แƒ–แƒ”, แƒ แƒแƒ—แƒ แƒจแƒ”แƒแƒ›แƒแƒฌแƒ›แƒแƒก, แƒกแƒแƒญแƒ˜แƒ แƒแƒ แƒ—แƒฃ แƒแƒ แƒ แƒกแƒ”แƒ แƒ—แƒ˜แƒคแƒ˜แƒ™แƒแƒขแƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒœแƒแƒฎแƒšแƒ”แƒ‘แƒ แƒ“แƒ แƒกแƒแƒญแƒ˜แƒ แƒแƒ”แƒ‘แƒ˜แƒก แƒจแƒ”แƒ›แƒ—แƒฎแƒ•แƒ”แƒ•แƒแƒจแƒ˜, แƒฉแƒแƒ›แƒแƒขแƒ•แƒ˜แƒ แƒ—แƒ”แƒ— แƒแƒฎแƒแƒšแƒ˜ แƒกแƒ”แƒ แƒ—แƒ˜แƒคแƒ˜แƒ™แƒแƒขแƒ”แƒ‘แƒ˜ แƒ“แƒ แƒ’แƒแƒ“แƒแƒขแƒ•แƒ˜แƒ แƒ—แƒ”แƒ— NGINX.

แƒกแƒ™แƒ แƒ˜แƒžแƒขแƒ˜แƒก แƒ™แƒแƒ“แƒ˜

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

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

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

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

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

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

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

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

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

แƒ—แƒฅแƒ•แƒ”แƒœแƒ˜ แƒกแƒแƒ˜แƒขแƒ˜แƒก แƒ“แƒแƒ›แƒแƒขแƒ”แƒ‘แƒ˜แƒ—แƒ˜ แƒžแƒ”แƒ แƒกแƒแƒœแƒแƒšแƒ˜แƒ–แƒแƒชแƒ˜แƒ

แƒฉแƒ•แƒ”แƒœ แƒ–แƒ”แƒ›แƒแƒ— แƒ•แƒ˜แƒกแƒแƒฃแƒ‘แƒ แƒ”แƒ— แƒ˜แƒ›แƒแƒ–แƒ”, แƒ—แƒฃ แƒ แƒแƒ’แƒแƒ  แƒแƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒ˜แƒ แƒ”แƒ‘แƒก แƒฉแƒ•แƒ”แƒœแƒ˜ แƒกแƒ™แƒ แƒ˜แƒžแƒขแƒ˜ NGINX แƒ“แƒ NGINX แƒ”แƒ แƒ—แƒ”แƒฃแƒšแƒ˜, แƒ แƒแƒ—แƒ แƒ›แƒแƒ”แƒ›แƒกแƒแƒฎแƒฃแƒ แƒแƒก แƒฌแƒแƒ แƒ›แƒแƒ”แƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก แƒ›แƒ–แƒ แƒกแƒแƒ˜แƒขแƒก แƒฉแƒแƒ แƒ—แƒฃแƒšแƒ˜ TLSSSL-แƒ˜แƒ—. แƒ—แƒฅแƒ•แƒ”แƒœ แƒแƒกแƒ”แƒ•แƒ” แƒจแƒ”แƒ’แƒ˜แƒซแƒšแƒ˜แƒแƒ—, แƒ—แƒฅแƒ•แƒ”แƒœแƒ˜ แƒกแƒแƒญแƒ˜แƒ แƒแƒ”แƒ‘แƒ˜แƒ“แƒแƒœ แƒ’แƒแƒ›แƒแƒ›แƒ“แƒ˜แƒœแƒแƒ แƒ”, แƒ›แƒแƒ›แƒแƒ•แƒแƒšแƒจแƒ˜ แƒ“แƒแƒแƒ›แƒแƒขแƒแƒ—:

  • แƒ›แƒฎแƒแƒ แƒ“แƒแƒญแƒ”แƒ แƒ แƒ‘แƒ แƒแƒšแƒ˜, แƒ’แƒแƒฃแƒ›แƒฏแƒแƒ‘แƒ”แƒกแƒ“แƒ แƒจแƒ”แƒ™แƒฃแƒ›แƒจแƒ•แƒ แƒคแƒ แƒ”แƒœแƒ˜แƒก แƒ“แƒ แƒแƒก HTTPS-แƒ–แƒ”
  • Mod Security ั แƒฌแƒ”แƒกแƒ”แƒ‘แƒ˜ wordpress-แƒ˜แƒกแƒ—แƒ•แƒ˜แƒกแƒ—แƒฅแƒ•แƒ”แƒœแƒก แƒกแƒแƒ˜แƒขแƒ–แƒ” แƒแƒ•แƒขแƒแƒ›แƒแƒขแƒฃแƒ แƒ˜ แƒจแƒ”แƒขแƒ”แƒ•แƒ”แƒ‘แƒ˜แƒก แƒ—แƒแƒ•แƒ˜แƒ“แƒแƒœ แƒแƒกแƒแƒชแƒ˜แƒšแƒ”แƒ‘แƒšแƒแƒ“
  • Backup WordPress-แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒ—แƒฅแƒ•แƒ”แƒœแƒ—แƒ•แƒ˜แƒก แƒจแƒ”แƒกแƒแƒคแƒ”แƒ แƒ˜แƒกแƒ˜แƒ
  • แƒ“แƒแƒชแƒ•แƒ via AppArmor (Ubuntu-แƒ–แƒ”)
  • Postfix แƒแƒœ msmtp, แƒ แƒแƒ—แƒ WordPress-แƒ›แƒ แƒจแƒ”แƒซแƒšแƒแƒก แƒคแƒแƒกแƒขแƒ˜แƒก แƒ’แƒแƒ’แƒ–แƒแƒ•แƒœแƒ
  • แƒจแƒ”แƒแƒ›แƒแƒฌแƒ›แƒ”แƒ— แƒ—แƒฅแƒ•แƒ”แƒœแƒ˜ แƒกแƒแƒ˜แƒขแƒ˜, แƒ แƒแƒ—แƒ แƒ’แƒแƒ˜แƒ’แƒแƒ—, แƒ แƒแƒ›แƒ“แƒ”แƒœ แƒขแƒ แƒแƒคแƒ˜แƒ™แƒก แƒจแƒ”แƒฃแƒซแƒšแƒ˜แƒ แƒ›แƒแƒก แƒ’แƒแƒฃแƒ›แƒ™แƒšแƒแƒ•แƒ“แƒ”แƒก

แƒกแƒแƒ˜แƒขแƒ˜แƒก แƒ™แƒ˜แƒ“แƒ”แƒ• แƒฃแƒคแƒ แƒ แƒฃแƒ™แƒ”แƒ—แƒ”แƒกแƒ˜ แƒ›แƒฃแƒจแƒแƒแƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก, แƒฉแƒ•แƒ”แƒœ แƒ’แƒ˜แƒ แƒฉแƒ”แƒ•แƒ— แƒ’แƒแƒœแƒแƒฎแƒšแƒ”แƒ‘แƒแƒก NGINX Plus, แƒฉแƒ•แƒ”แƒœแƒ˜ แƒ™แƒแƒ›แƒ”แƒ แƒชแƒ˜แƒฃแƒšแƒ˜, แƒกแƒแƒฌแƒแƒ แƒ›แƒแƒก แƒฎแƒแƒ แƒ˜แƒกแƒฎแƒ˜แƒก แƒžแƒ แƒแƒ“แƒฃแƒฅแƒขแƒ˜, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒ“แƒแƒคแƒฃแƒซแƒœแƒ”แƒ‘แƒฃแƒšแƒ˜แƒ แƒฆแƒ˜แƒ แƒ™แƒแƒ“แƒ˜แƒก NGINX-แƒ–แƒ”. แƒ›แƒ˜แƒกแƒ˜ แƒแƒ‘แƒแƒœแƒ”แƒœแƒขแƒ”แƒ‘แƒ˜ แƒ›แƒ˜แƒ˜แƒฆแƒ”แƒ‘แƒ”แƒœ แƒ“แƒ˜แƒœแƒแƒ›แƒ˜แƒฃแƒ แƒแƒ“ แƒ“แƒแƒขแƒ•แƒ˜แƒ แƒ—แƒฃแƒš Brotli แƒ›แƒแƒ“แƒฃแƒšแƒก, แƒแƒกแƒ”แƒ•แƒ” (แƒ“แƒแƒ›แƒแƒขแƒ”แƒ‘แƒ˜แƒ—แƒ˜ แƒกแƒแƒคแƒแƒกแƒฃแƒ แƒ˜แƒ—) NGINX ModSecurity WAF. แƒฉแƒ•แƒ”แƒœ แƒแƒกแƒ”แƒ•แƒ” แƒ’แƒ—แƒแƒ•แƒแƒ–แƒแƒ‘แƒ— NGINX App Protect, WAF แƒ›แƒแƒ“แƒฃแƒšแƒ˜ NGINX Plus-แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒ“แƒแƒคแƒฃแƒซแƒœแƒ”แƒ‘แƒฃแƒšแƒ˜แƒ แƒ˜แƒœแƒ“แƒฃแƒกแƒขแƒ แƒ˜แƒ˜แƒก แƒฌแƒแƒ›แƒงแƒ•แƒแƒœ แƒฃแƒกแƒแƒคแƒ แƒ—แƒฎแƒแƒ”แƒ‘แƒ˜แƒก แƒขแƒ”แƒฅแƒœแƒแƒšแƒแƒ’แƒ˜แƒแƒ–แƒ” F5-แƒ“แƒแƒœ.

NB แƒซแƒแƒšแƒ˜แƒแƒœ แƒ“แƒแƒขแƒ•แƒ˜แƒ แƒ—แƒฃแƒšแƒ˜ แƒกแƒแƒ˜แƒขแƒ˜แƒก แƒ›แƒฎแƒแƒ แƒ“แƒแƒญแƒ”แƒ แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก แƒจแƒ”แƒ’แƒ˜แƒซแƒšแƒ˜แƒแƒ— แƒ“แƒแƒฃแƒ™แƒแƒ•แƒจแƒ˜แƒ แƒ“แƒ”แƒ— แƒ”แƒฅแƒกแƒžแƒ”แƒ แƒขแƒ”แƒ‘แƒก Southbridge. แƒฉแƒ•แƒ”แƒœ แƒฃแƒ–แƒ แƒฃแƒœแƒ•แƒ”แƒšแƒ•แƒงแƒแƒคแƒ— แƒ—แƒฅแƒ•แƒ”แƒœแƒ˜ แƒ•แƒ”แƒ‘แƒกแƒแƒ˜แƒขแƒ˜แƒก แƒแƒœ แƒกแƒ”แƒ แƒ•แƒ˜แƒกแƒ˜แƒก แƒกแƒฌแƒ แƒแƒค แƒ“แƒ แƒกแƒแƒ˜แƒ›แƒ”แƒ“แƒ แƒ›แƒฃแƒจแƒแƒแƒ‘แƒแƒก แƒœแƒ”แƒ‘แƒ˜แƒกแƒ›แƒ˜แƒ”แƒ แƒ˜ แƒ“แƒแƒขแƒ•แƒ˜แƒ แƒ—แƒ•แƒ˜แƒก แƒžแƒ˜แƒ แƒแƒ‘แƒ”แƒ‘แƒจแƒ˜.

แƒฌแƒงแƒแƒ แƒ: www.habr.com