เชตเชฐเซเชกเชชเซเชฐเซเชธ เชเซเชตเซ เชฐเซเชคเซ เชเชจเซเชธเซเชเซเชฒ เชเชฐเชตเซเช เชคเซเชจเชพ เชชเชฐ เชเชฃเชพ เชเซเชฏเซเชเซเชฐเชฟเชฏเชฒเซเชธ เชเซ, "WordPress install" เชฎเชพเชเซ Google เชถเซเชง เชฒเชเชญเช เช เชกเชงเชพ เชฎเชฟเชฒเชฟเชฏเชจ เชชเชฐเชฟเชฃเชพเชฎเซ เชเชชเชถเซ. เชเซ เชเซ, เชตเชพเชธเซเชคเชตเชฎเชพเช, เชคเซเชฎเชจเซ เชตเชเซเชเซ เชฌเชนเซ เชเชเชพ เชธเชพเชฐเชพ เชฎเชพเชฐเซเชเชฆเชฐเซเชถเชฟเชเชพเช เชเซ, เชเซ เชฎเซเชเชฌ เชคเชฎเซ เชตเชฐเซเชกเชชเซเชฐเซเชธ เช เชจเซ เช เชเชคเชฐเซเชเชค เชเชชเชฐเซเชเชฟเชเช เชธเชฟเชธเซเชเชฎเชจเซ เชเชจเซเชธเซเชเซเชฒ เช เชจเซ เชเซเช เชตเซ เชถเชเซ เชเซ เชเซเชฅเซ เชคเซเช เชฒเชพเชเชฌเชพ เชธเชฎเชฏ เชธเซเชงเซ เชธเชชเซเชฐเซเช เชเชฐเชตเชพเชฎเชพเช เชธเชเซเชทเชฎ เชนเซเชฏ. เชเชฆเชพเช เชฏเซเชเซเชฏ เชธเซเชเชฟเชเชเซเชธ เชเซเชเซเชเชธ เชเชฐเซเชฐเชฟเชฏเชพเชคเซ เชชเชฐ เชเซเชฌ เชจเชฟเชฐเซเชญเชฐ เชเซ, เช เชฅเชตเชพ เช เช เชนเชเซเชเชคเชจเซ เชเชพเชฐเชฃเซ เชเซ เชเซ เชตเชฟเชเชคเชตเชพเชฐ เชธเชฎเชเซเชคเซ เชฒเซเชเชจเซ เชตเชพเชเชเชตเชพ เชฎเชพเชเซ เชฎเซเชถเซเชเซเชฒ เชฌเชจเชพเชตเซ เชเซ.
เช เชฒเซเชเชฎเชพเช, เช
เชฎเซ เชเชฌเซเชจเซเชเซ เชชเชฐ เชตเชฐเซเชกเชชเซเชฐเซเชธเชจเซ เชเชชเชฎเซเชณเซ เชเชจเซเชธเซเชเซเชฒ เชเชฐเชตเชพ เชฎเชพเชเซ เชฌเซเชถ เชธเซเชเซเชฐเชฟเชชเซเช เชชเซเชฐเชฆเชพเชจ เชเชฐเซเชจเซ, เชคเซเชฎเช เชฆเชฐเซเช เชญเชพเช เชถเซเช เชเชฐเซ เชเซ เชคเซ เชธเชฎเชเชพเชตเซเชจเซ, เชคเซเชฎเช เชคเซเชจเซ เชตเชฟเชเชธเชพเชตเชตเชพเชฎเชพเช เช
เชฎเซ เชเซ เชธเชฎเชพเชงเชพเชจ เชเชฐเซเชฏเซเช เชเซ เชคเซ เชธเชฎเชเชพเชตเซเชจเซ เช
เชฎเซ เชฌเชเชจเซ เชตเชฟเชถเซเชตเชจเชพ เชถเซเชฐเซเชทเซเช เชจเซ เชเซเชกเชตเชพเชจเซ เชชเซเชฐเชฏเชพเชธ เชเชฐเซเชถเซเช. . เชเซ เชคเชฎเซ เช
เชฆเซเชฏเชคเชจ เชตเชชเชฐเชพเชถเชเชฐเซเชคเชพ เชเซ, เชคเซ เชคเชฎเซ เชฒเซเชเชจเชพ เชเซเชเซเชธเซเชเชจเซ เชเซเชกเซ เชถเชเซ เชเซ เช
เชจเซ เชซเชเซเชค
NGINX เชฏเซเชจเชฟเชเชจเซ เชเชชเชฏเซเช เชเชฐเซเชจเซ เชตเชฐเซเชกเชชเซเชฐเซเชธ เชเชฎเชพเชตเชตเชพ เชฎเชพเชเซ เชตเชฟเชเชธเชฟเชค เชเชฐเซเชเชฟเชเซเชเซเชเชฐเชจเซเช เชตเชฐเซเชฃเชจ เชเชฎเชพเช เชเชฐเชตเชพเชฎเชพเช เชเชตเซเชฏเซเช เชเซ
- เชตเชฐเซเชกเชชเซเชฐเซเชธ CLI
- เชเชพเชฒเซ เชเชจเซเชเซเชฐเชฟเชชเซเช เชเชฐเซเช เช เชจเซ TLSSSL เชชเซเชฐเชฎเชพเชฃเชชเชคเซเชฐเซ
- เชชเซเชฐเชฎเชพเชฃเชชเชคเซเชฐเซเชจเซเช เชเชชเชฎเซเชณเซ เชจเชตเซเชเชฐเชฃ
- NGINX เชเซเชถเซเชเช
- NGINX เชเชฎเซเชชเซเชฐเซเชถเชจ
- HTTPS เช เชจเซ HTTP/2 เชธเชชเซเชฐเซเช
- เชชเซเชฐเชเซเชฐเชฟเชฏเชพ เชเชเซเชฎเซเชถเชจ
เชฒเซเช เชเช เชธเชฐเซเชตเชฐ เชชเชฐ เชเชจเซเชธเซเชเซเชฒเซเชถเชจเชจเซเช เชตเชฐเซเชฃเชจ เชเชฐเชถเซ, เชเซ เชเช เชธเชพเชฅเซ เชธเซเชเซเชเชฟเช เชชเซเชฐเซเชธเซเชธเชฟเชเช เชธเชฐเซเชตเชฐ, PHP เชชเซเชฐเซเชธเซเชธเชฟเชเช เชธเชฐเซเชตเชฐ เช เชจเซ เชกเซเชเชพเชฌเซเชเชจเซ เชนเซเชธเซเช เชเชฐเชถเซ. เชเช เชเชจเซเชธเซเชเซเชฒเซเชถเชจ เชเซ เชเซ เชฌเชนเซเชตเชฟเชง เชตเชฐเซเชเซเชฏเซเช เชฒ เชนเซเชธเซเช เช เชจเซ เชธเซเชตเชพเชเชจเซ เชธเชชเซเชฐเซเช เชเชฐเซ เชเซ เชคเซ เชญเชตเชฟเชทเซเชฏ เชฎเชพเชเซ เชธเชเชญเชตเชฟเชค เชตเชฟเชทเชฏ เชเซ. เชเซ เชคเชฎเซ เชเชเซเชเซ เชเซ เชเซ เช เชฎเซ เชเชตเซ เชเซเช เชตเชธเซเชคเซ เชตเชฟเชถเซ เชฒเชเซเช เชเซ เช เชฒเซเชเซเชฎเชพเช เชจเชฅเซ, เชคเซ เชเชฟเชชเซเชชเชฃเซเชเชฎเชพเช เชฒเชเซ.
เชเชฐเซเชฐเซเชฏเชพเชคเซ
- เชเชจเซเชเซเชจเชฐ เชธเชฐเซเชตเชฐ (
เชเชฒเชเชเซเชธเชธเซ เช เชฅเชตเชพเชเชฒเชเชเซเชธเชกเซ ), เชตเชฐเซเชเซเชฏเซเช เชฒ เชฎเชถเซเชจ, เช เชฅเชตเชพ เชเชเชพเชฎเชพเช เชเชเซเช 512MB RAM เช เชจเซ Ubuntu 18.04 เช เชฅเชตเชพ เชคเซเชจเชพเชฅเซ เชจเชตเซเช เชเชจเซเชธเซเชเซเชฒ เชเชฐเซเชฒเซเช เชจเชฟเชฏเชฎเชฟเชค เชเชฏเชฐเซเชจ เชธเชฐเซเชตเชฐ. - เชเชจเซเชเชฐเชจเซเช เชธเซเชฒเชญ เชชเซเชฐเซเช 80 เช เชจเซ 443
- เช เชธเชฐเซเชตเชฐเชจเชพ เชธเชพเชฐเซเชตเชเชจเชฟเช เชเชเชชเซ เชเชกเซเชฐเซเชธ เชธเชพเชฅเซ เชธเชเชเชณเชพเชฏเซเชฒ เชกเซเชฎเซเชจ เชจเชพเชฎ
- เชฐเซเช เชเชเซเชธเซเชธ (เชธเซเชกเซ).
เชเชฐเซเชเชฟเชเซเชเซเชเชฐ เชเชพเชเชเซ
เชเชฐเซเชเชฟเชเซเชเซเชเชฐ เชตเชฐเซเชฃเชตเซเชฏเชพ เชชเซเชฐเชฎเชพเชฃเซ เช เชเซ
เชธเชพเชฎเชพเชจเซเชฏ เชธเชฟเชฆเซเชงเชพเชเชคเซ
- เชธเซเชเซเชฐเชฟเชชเซเชเชฎเชพเช เชเชฃเชพ เชฐเซเชชเชฐเซเชเชพเชเชเชจ เชเชฆเซเชถเซ เชเชตเชฐเชฟเชค เชนเซเชฏ เชเซ เชเซ เชเชเชกเชฎเซเชชเซเชเซเชจเซเชธเซ เชฎเชพเชเซเชจเซ เชถเชฐเชคเซ เชนเซเชฏ: เชธเซเชเซเชฐเชฟเชชเซเช เชชเชนเซเชฒเชพเชฅเซ เช เชธเซเชฅเชพเชจเซ เชเซ เชคเซ เชธเซเชเชฟเชเชเซเชธ เชฌเชฆเชฒเชตเชพเชจเชพ เชเซเชเชฎ เชตเชฟเชจเชพ เชเชฃเซ เชตเชเชค เชเชฒเชพเชตเซ เชถเชเชพเชฏ เชเซ.
- เชธเซเชเซเชฐเชฟเชชเซเช เชฐเซเชชเซเชเซเชเชฐเซเชเชฎเชพเชเชฅเซ เชธเซเชซเซเชเชตเซเชฐ เชเชจเซเชธเซเชเซเชฒ เชเชฐเชตเชพเชจเซ เชชเซเชฐเชฏเชพเชธ เชเชฐเซ เชเซ, เชเซเชฅเซ เชคเชฎเซ เชเช เชเชฆเซเชถเชฎเชพเช เชธเชฟเชธเซเชเชฎ เช
เชชเชกเซเชเซเชธ เชฒเชพเชเซ เชเชฐเซ เชถเชเซ (
apt upgrade
เชเชฌเซเชจเซเชเซ เชฎเชพเชเซ). - เชเชฆเซเชถเซ เช เชถเซเชงเชตเชพเชจเซ เชชเซเชฐเชฏเชพเชธ เชเชฐเซ เชเซ เชเซ เชคเซเช เชเชจเซเชเซเชจเชฐเชฎเชพเช เชเชพเชฒเซ เชฐเชนเซเชฏเชพ เชเซ เชเซเชฅเซ เชคเซเช เชคเซ เชฎเซเชเชฌ เชคเซเชฎเชจเซ เชธเซเชเชฟเชเชเซเชธ เชฌเชฆเชฒเซ เชถเชเซ.
- เชธเซเชเชฟเชเชเซเชธเชฎเชพเช เชถเชฐเซ เชฅเซเชฐเซเชก เชชเซเชฐเชเซเชฐเชฟเชฏเชพเชเชจเซ เชธเชเชเซเชฏเชพ เชธเซเช เชเชฐเชตเชพ เชฎเชพเชเซ, เชธเซเชเซเชฐเชฟเชชเซเช เชเชจเซเชเซเชจเชฐ, เชตเชฐเซเชเซเชฏเซเช เชฒ เชฎเชถเซเชจเซ เช เชจเซ เชนเชพเชฐเซเชกเชตเซเชฐ เชธเชฐเซเชตเชฐเชฎเชพเช เชเชพเชฎ เชเชฐเชตเชพ เชฎเชพเชเซ เชธเซเชตเชเชพเชฒเชฟเชค เชธเซเชเชฟเชเชเซเชธเชจเซ เช เชจเซเชฎเชพเชจ เชฒเชเชพเชตเชตเชพเชจเซ เชชเซเชฐเชฏเชพเชธ เชเชฐเซ เชเซ.
- เชธเซเชเชฟเชเชเซเชธเชจเซเช เชตเชฐเซเชฃเชจ เชเชฐเชคเซ เชตเชเชคเซ, เช เชฎเซ เชนเชเชฎเซเชถเชพ เชเชเซเชฎเซเชถเชจ เชตเชฟเชถเซ เชธเซ เชชเซเชฐเชฅเชฎ เชตเชฟเชเชพเชฐเซเช เชเซเช, เชเซ, เช เชฎเชจเซ เชเชถเชพ เชเซ เชเซ, เชเซเชก เชคเชฐเซเชเซ เชคเชฎเชพเชฐเซเช เชชเซเชคเชพเชจเซเช เชเชจเซเชซเซเชฐเชพเชธเซเชเซเชฐเชเซเชเชฐ เชฌเชจเชพเชตเชตเชพ เชฎเชพเชเซเชจเซ เชเชงเชพเชฐ เชฌเชจเชถเซ.
- เชฌเชงเชพ เชเชฆเซเชถเซ เชตเชชเชฐเชพเชถเชเชฐเซเชคเชพ เชคเชฐเซเชเซ เชเชฒเชพเชตเชตเชพเชฎเชพเช เชเชตเซ เชเซ เชฐเซเช, เชเชพเชฐเชฃ เชเซ เชคเซเช เชฎเซเชณเชญเซเชค เชธเชฟเชธเซเชเชฎ เชธเซเชเชฟเชเชเซเชธเชจเซ เชฌเชฆเชฒเซ เชเซ, เชชเชฐเชเชคเซ เชธเซเชงเชพ เชตเชฐเซเชกเชชเซเชฐเซเชธ เชจเชฟเชฏเชฎเชฟเชค เชตเชชเชฐเชพเชถเชเชฐเซเชคเชพ เชคเชฐเซเชเซ เชเชพเชฒเซ เชเซ.
เชชเชฐเซเชฏเชพเชตเชฐเชฃ เชเชฒเซ เชธเซเชฏเซเชเชฟเชค เชเชฐเซ เชฐเชนเซเชฏเชพ เชเซเช
เชธเซเชเซเชฐเชฟเชชเซเช เชเชฒเชพเชตเชคเชพ เชชเชนเซเชฒเชพ เชจเซเชเซเชจเชพ เชชเชฐเซเชฏเชพเชตเชฐเชฃ เชเชฒเซ เชธเซเช เชเชฐเซ:
WORDPRESS_DB_PASSWORD
- เชตเชฐเซเชกเชชเซเชฐเซเชธ เชกเซเชเชพเชฌเซเช เชชเชพเชธเชตเชฐเซเชกWORDPRESS_ADMIN_USER
- เชตเชฐเซเชกเชชเซเชฐเซเชธ เชเชกเชฎเชฟเชจ เชจเชพเชฎWORDPRESS_ADMIN_PASSWORD
- เชตเชฐเซเชกเชชเซเชฐเซเชธ เชเชกเชฎเชฟเชจ เชชเชพเชธเชตเชฐเซเชกWORDPRESS_ADMIN_EMAIL
- WordPress เชเชกเชฎเชฟเชจ เชเชฎเซเชเชฒWORDPRESS_URL
เชตเชฐเซเชกเชชเซเชฐเซเชธ เชธเชพเชเชเชจเซเช เชธเชเชชเซเชฐเซเชฃ URL เชเซ, เชฅเซ เชถเชฐเซ เชฅเชพเชฏ เชเซhttps://
.LETS_ENCRYPT_STAGING
- เชกเชฟเชซเซเชฒเซเช เชฐเซเชชเซ เชเชพเชฒเซ, เชชเชฐเชเชคเซ เชฎเซเชฒเซเชฏ 1 เชชเชฐ เชธเซเช เชเชฐเซเชจเซ, เชคเชฎเซ เชฒเซเชเซเชธ เชเชจเซเชเซเชฐเชฟเชชเซเช เชธเซเชเซเชเซเชเช เชธเชฐเซเชตเชฐเซเชธเชจเซ เชเชชเชฏเซเช เชเชฐเชถเซ, เชเซ เชคเชฎเชพเชฐเซ เชธเซเชเชฟเชเชเซเชธเชจเซเช เชชเชฐเซเชเซเชทเชฃ เชเชฐเชคเซ เชตเชเชคเซ เชชเซเชฐเชฎเชพเชฃเชชเชคเซเชฐเซเชจเซ เชตเชพเชฐเชเชตเชพเชฐ เชตเชฟเชจเชเชคเซ เชเชฐเชตเชพ เชฎเชพเชเซ เชเชฐเซเชฐเซ เชเซ, เช เชจเซเชฏเชฅเชพ เชฒเซเชเซเชธ เชเชจเซเชเซเชฐเชฟเชชเซเช เชฎเซเชเซ เชธเชเชเซเชฏเชพเชฎเชพเช เชตเชฟเชจเชเชคเซเชเชจเซ เชเชพเชฐเชฃเซ เช เชธเซเชฅเชพเชฏเซ เชฐเซเชชเซ เชคเชฎเชพเชฐเชพ เชเชเชชเซ เชธเชฐเชจเชพเชฎเชพเชเชจเซ เช เชตเชฐเซเชงเชฟเชค เชเชฐเซ เชถเชเซ เชเซ. .
เชธเซเชเซเชฐเชฟเชชเซเช เชเชเชพเชธเซ เชเซ เชเซ เช เชตเชฐเซเชกเชชเซเชฐเซเชธ-เชธเชเชฌเชเชงเชฟเชค เชเชฒเซ เชธเซเช เชเซ เช
เชจเซ เชเซ เชจ เชนเซเชฏ เชคเซ เชฌเชนเชพเชฐ เชจเซเชเชณเซ เชเชพเชฏ เชเซ.
เชธเซเชเซเชฐเชฟเชชเซเช เชฒเชพเชเชจ 572-576 เชฎเซเชฒเซเชฏ เชคเชชเชพเชธเซ LETS_ENCRYPT_STAGING
.
เชตเซเชฏเซเชคเซเชชเชจเซเชจ เชชเชฐเซเชฏเชพเชตเชฐเชฃ เชเชฒเซ เชธเซเช เชเชฐเซ เชฐเชนเซเชฏเชพ เชเซเช
เชฒเซเชเซเช 55-61 เชชเชฐเชจเซ เชธเซเชเซเชฐเชฟเชชเซเช เชจเซเชเซเชจเชพ เชชเชฐเซเชฏเชพเชตเชฐเชฃ เชเชฒเซเชจเซ เชธเซเช เชเชฐเซ เชเซ, เชเชพเช เชคเซ เช เชฎเซเช เชนเชพเชฐเซเชก-เชเซเชกเซเชก เชฎเซเชฒเซเชฏ เช เชฅเชตเชพ เช เชเชพเชเชจเชพ เชตเชฟเชญเชพเชเชฎเชพเช เชธเซเช เชเชฐเซเชฒ เชเชฒเซเชฎเชพเชเชฅเซ เชฎเซเชณเชตเซเชฒ เชฎเซเชฒเซเชฏเชจเซ เชเชชเชฏเซเช เชเชฐเซเชจเซ:
DEBIAN_FRONTEND="noninteractive"
- เชเชชเซเชฒเซเชเซเชถเชจเซเชจเซ เชเชฃเชพเชตเซ เชเซ เชเซ เชคเซเช เชธเซเชเซเชฐเชฟเชชเซเชเชฎเชพเช เชเชพเชฒเซ เชฐเชนเซ เชเซ เช เชจเซ เชตเชชเชฐเชพเชถเชเชฐเซเชคเชพเชจเซ เชเซเชฐเชฟเชฏเชพเชชเซเชฐเชคเชฟเชเซเชฐเชฟเชฏเชพเชจเซ เชเซเช เชถเชเซเชฏเชคเชพ เชจเชฅเซ.WORDPRESS_CLI_VERSION="2.4.0"
เชตเชฐเซเชกเชชเซเชฐเซเชธ CLI เชเชชเซเชฒเชฟเชเซเชถเชจเชจเซเช เชตเชฐเซเชเชจ เชเซ.WORDPRESS_CLI_MD5= "dedd5a662b80cda66e9e25d44c23b25c"
โ เชตเชฐเซเชกเชชเซเชฐเซเชธ CLI 2.4.0 เชเชเซเชเชฟเชเซเชฏเซเชเซเชฌเชฒ เชซเชพเชเชฒเชจเซเช เชเซเชเชธเชฎ (เชเชตเซเชคเซเชคเชฟ เชเชฒเชฎเชพเช เชเชฒเซเชฒเซเชเชฟเชค เชเซWORDPRESS_CLI_VERSION
). เชฒเชพเชเชจ 162 เชชเชฐเชจเซ เชธเซเชเซเชฐเชฟเชชเซเช เชธเชพเชเซ WordPress CLI เชซเชพเชเชฒ เชกเชพเชเชจเชฒเซเชก เชฅเช เชเซ เชเซ เชจเชนเซเช เชคเซ เชคเชชเชพเชธเชตเชพ เชฎเชพเชเซ เช เชฎเซเชฒเซเชฏเชจเซ เชเชชเชฏเซเช เชเชฐเซ เชเซ.UPLOAD_MAX_FILESIZE="16M"
- เชฎเชนเชคเซเชคเชฎ เชซเชพเชเชฒ เชเชฆ เชเซ เชตเชฐเซเชกเชชเซเชฐเซเชธเชฎเชพเช เช เชชเชฒเซเชก เชเชฐเซ เชถเชเชพเชฏ เชเซ. เช เชธเซเชเชฟเชเชเชจเซ เชเชชเชฏเซเช เชเชฃเซ เชเชเซเชฏเชพเช เชฅเชพเชฏ เชเซ, เชคเซเชฅเซ เชคเซเชจเซ เชเช เชเชเซเชฏเชพเช เชธเซเช เชเชฐเชตเซเช เชตเชงเซ เชธเชฐเชณ เชเซ.TLS_HOSTNAME= "$(echo ${WORDPRESS_URL} | cut -d'/' -f3)"
- เชธเชฟเชธเซเชเชฎเชจเซเช เชฏเชเชฎเชพเชจเชจเชพเชฎ, WORDPRESS_URL เชเชฒเชฎเชพเชเชฅเซ เชชเซเชจเชเชชเซเชฐเชพเชชเซเชค. Let's Encrypt เชคเซเชฎเช เชเชเชคเชฐเชฟเช WordPress เชเชเชพเชธเชฃเซเชฎเชพเชเชฅเซ เชฏเซเชเซเชฏ TLS/SSL เชชเซเชฐเชฎเชพเชฃเชชเชคเซเชฐเซ เชฎเซเชณเชตเชตเชพ เชฎเชพเชเซ เชตเชชเชฐเชพเชฏ เชเซ.NGINX_CONF_DIR="/etc/nginx"
- เชฎเซเชเซเชฏ เชซเชพเชเชฒ เชธเชนเชฟเชค NGINX เชธเซเชเชฟเชเชเซเชธ เชธเชพเชฅเซ เชกเชฟเชฐเซเชเซเชเชฐเซเชจเซ เชชเชพเชฅnginx.conf
.CERT_DIR="/etc/letsencrypt/live/${TLS_HOSTNAME}"
โ เชตเชฐเซเชกเชชเซเชฐเซเชธ เชธเชพเชเช เชฎเชพเชเซ เชฒเซเชเซเชธ เชเชจเซเชเซเชฐเชฟเชชเซเช เชชเซเชฐเชฎเชพเชฃเชชเชคเซเชฐเซเชจเซ เชฎเชพเชฐเซเช, เชเชฒเชฎเชพเชเชฅเซ เชฎเซเชณเชตเซเชฒTLS_HOSTNAME
.
เชตเชฐเซเชกเชชเซเชฐเซเชธ เชธเชฐเซเชตเชฐเชจเซ เชนเซเชธเซเชเชจเชพเชฎ เชธเซเชเชชเชตเซเช
เชธเซเชเซเชฐเชฟเชชเซเช เชธเชพเชเชเชจเชพ เชกเซเชฎเซเชจ เชจเชพเชฎ เชธเชพเชฅเซ เชฎเซเช เชเชฐเชตเชพ เชฎเชพเชเซ เชธเชฐเซเชตเชฐเชจเซเช เชนเซเชธเซเชเชจเชพเชฎ เชธเซเช เชเชฐเซ เชเซ. เช เชเชฐเซเชฐเซ เชจเชฅเซ, เชชเชฐเชเชคเซ เชธเซเชเซเชฐเชฟเชชเซเช เชฆเซเชตเชพเชฐเชพ เชฐเซเชชเชฐเซเชเชพเชเชเชฟเชค เชเชฐเซเชฏเชพ เชฎเซเชเชฌ, เชธเชฟเชเชเชฒ เชธเชฐเซเชตเชฐ เชธเซเชเช เชช เชเชฐเชคเซ เชตเชเชคเซ SMTP เชฆเซเชตเชพเชฐเชพ เชเชเชเชเซเชเชเช เชฎเซเชเชฒ เชฎเซเชเชฒเชตเชพเชจเซเช เชตเชงเซ เช เชจเซเชเซเชณ เชเซ.
เชธเซเชเซเชฐเชฟเชชเซเช เชเซเชก
# Change the hostname to be the same as the WordPress hostname
if [ ! "$(hostname)" == "${TLS_HOSTNAME}" ]; then
echo " Changing hostname to ${TLS_HOSTNAME}"
hostnamectl set-hostname "${TLS_HOSTNAME}"
fi
/etc/hosts เชฎเชพเช เชฏเชเชฎเชพเชจเชจเชพเชฎ เชเชฎเซเชฐเซ เชฐเชนเซเชฏเชพ เชเซเช
เชเชฎเซเชฐเซ
เชธเซเชเซเชฐเชฟเชชเซเช เชเซเชก
# Add the hostname to /etc/hosts
if [ "$(grep -m1 "${TLS_HOSTNAME}" /etc/hosts)" = "" ]; then
echo " Adding hostname ${TLS_HOSTNAME} to /etc/hosts so that WordPress can ping itself"
printf "::1 %sn127.0.0.1 %sn" "${TLS_HOSTNAME}" "${TLS_HOSTNAME}" >> /etc/hosts
fi
เชเชเชณเชจเชพ เชชเชเชฒเชพเช เชฎเชพเชเซ เชเชฐเซเชฐเซ เชธเชพเชงเชจเซ เชเชจเซเชธเซเชเซเชฒ เชเชฐเซ เชฐเชนเซเชฏเชพ เชเซเช
เชฌเชพเชเซเชจเซ เชธเซเชเซเชฐเชฟเชชเซเชเชจเซ เชเซเชเชฒเชพเช เชชเซเชฐเซเชเซเชฐเชพเชฎเซเชธเชจเซ เชเชฐเซเชฐ เชเซ เช เชจเซ เชงเชพเชฐเซ เชเซ เชเซ เชฐเซเชชเซเชเซเชเชฐเซเช เช เชฆเซเชฏเชคเชจ เชเซ. เช เชฎเซ เชฐเซเชชเซเชเซเชเชฐเซเชเชจเซ เชธเซเชเชฟเชจเซ เช เชชเชกเซเช เชเชฐเซเช เชเซเช, เชคเซ เชชเชเซ เช เชฎเซ เชเชฐเซเชฐเซ เชธเชพเชงเชจเซ เชเชจเซเชธเซเชเซเชฒ เชเชฐเซเช เชเซเช:
เชธเซเชเซเชฐเชฟเชชเซเช เชเซเชก
# Make sure tools needed for install are present
echo " Installing prerequisite tools"
apt-get -qq update
apt-get -qq install -y
bc
ca-certificates
coreutils
curl
gnupg2
lsb-release
NGINX เชฏเซเชจเชฟเช เช เชจเซ NGINX เชฐเชฟเชชเซเชเซเชเชฐเซเช เชเชฎเซเชฐเซ เชฐเชนเซเชฏเชพ เชเซเช
เชจเชตเซเชจเชคเชฎ เชธเชฟเชเซเชฏเซเชฐเชฟเชเซ เชชเซเช เช เชจเซ เชฌเช เชซเชฟเชเซเชธเซเชธเชตเชพเชณเชพ เชตเชฐเซเชเชจเชจเซ เชเชชเชฏเซเช เชเชฐเชตเชพเชฎเชพเช เชเชตเซเชฏเซ เชเซ เชคเซเชจเซ เชเชพเชคเชฐเซ เชเชฐเชตเชพ เชฎเชพเชเซ เชธเซเชเซเชฐเชฟเชชเซเช เชธเชคเซเชคเชพเชตเชพเชฐ NGINX เชฐเชฟเชชเซเชเซเชเชฐเซเชเชฎเชพเชเชฅเซ NGINX เชฏเซเชจเชฟเช เช เชจเซ เชเชชเชจ เชธเซเชฐเซเชธ NGINX เชเชจเซเชธเซเชเซเชฒ เชเชฐเซ เชเซ.
เชธเซเชเซเชฐเชฟเชชเซเช NGINX เชฏเซเชจเชฟเช เชฐเซเชชเซเชเซเชเชฐเซ เช
เชจเซ เชชเชเซ NGINX เชฐเซเชชเซเชเซเชเชฐเซ เชเชฎเซเชฐเซ เชเซ, เชฐเซเชชเซเชเซเชเชฐเซเช เชเซ เช
เชจเซ เชฐเซเชชเชฐเซเชเชพเชเชเชจ เชซเชพเชเชฒเซ เชเชฎเซเชฐเซเชจเซ apt
, เชเชจเซเชเชฐเชจเซเช เชฆเซเชตเชพเชฐเชพ เชฐเซเชชเซเชเซเชเชฐเซเชเชจเซ เชเชเซเชธเซเชธเชจเซ เชตเซเชฏเชพเชเซเชฏเชพเชฏเชฟเชค เชเชฐเซ เชเซ.
NGINX เชฏเซเชจเชฟเช เช เชจเซ NGINX เชจเซเช เชตเชพเชธเซเชคเชตเชฟเช เชธเซเชฅเชพเชชเชจ เชเชเชณเชจเชพ เชตเชฟเชญเชพเชเชฎเชพเช เชฅเชพเชฏ เชเซ. เช เชฎเซ เชฐเซเชชเซเชเซเชเชฐเซเช เชชเชนเซเชฒเชพเชฅเซ เชเชฎเซเชฐเซเช เชเซเช เชเซเชฅเซ เช เชฎเชพเชฐเซ เชฎเซเชเชพเชกเซเชเชพเชจเซ เชเชฃเซ เชตเชเชค เช เชชเชกเซเช เชเชฐเชตเชพเชจเซ เชเชฐเซเชฐ เชจเชฅเซ, เชเซ เชเชจเซเชธเซเชเซเชฒเซเชถเชจเชจเซ เชเชกเชชเซ เชฌเชจเชพเชตเซ เชเซ.
เชธเซเชเซเชฐเชฟเชชเซเช เชเซเชก
# Install the NGINX Unit repository
if [ ! -f /etc/apt/sources.list.d/unit.list ]; then
echo " Installing NGINX Unit repository"
curl -fsSL https://nginx.org/keys/nginx_signing.key | apt-key add -
echo "deb https://packages.nginx.org/unit/ubuntu/ $(lsb_release -cs) unit" > /etc/apt/sources.list.d/unit.list
fi
# Install the NGINX repository
if [ ! -f /etc/apt/sources.list.d/nginx.list ]; then
echo " Installing NGINX repository"
curl -fsSL https://nginx.org/keys/nginx_signing.key | apt-key add -
echo "deb https://nginx.org/packages/mainline/ubuntu $(lsb_release -cs) nginx" > /etc/apt/sources.list.d/nginx.list
fi
เชเชจเชเซเชเชเชเชจเชเชเซเชธ, เชเชจเชเซเชเชเชเชจเชเชเซเชธ เชฏเซเชจเชฟเช, เชชเซเชเชเชชเซ เชฎเชพเชฐเชฟเชฏเชพเชกเซเชฌเซ, เชธเชฐเซเชเชฌเซเช (เชเชพเชฒเซ เชเชจเซเชเซเชฐเชฟเชชเซเช เชเชฐเซเช) เช เชจเซ เชคเซเชฎเชจเซ เช เชตเชฒเชเชฌเชจ เชธเซเชฅเชพเชชเชฟเชค เชเชฐเชตเซ
เชเชเชตเชพเชฐ เชฌเชงเซ เชฐเซเชชเซเชเซเชเชฐเซเช เชเชฎเซเชฐเชพเช เชเชพเชฏ, เชฎเซเชเชพเชกเซเชเชพ เช เชชเชกเซเช เชเชฐเซ เช เชจเซ เชเชชเซเชฒเชฟเชเซเชถเชจเซเชธ เชเชจเซเชธเซเชเซเชฒ เชเชฐเซ. เชธเซเชเซเชฐเชฟเชชเซเช เชฆเซเชตเชพเชฐเชพ เชเชจเซเชธเซเชเซเชฒ เชเชฐเซเชฒเชพ เชชเซเชเซเชเซเชฎเชพเช WordPress.org เชเชฒเชพเชตเชคเซ เชตเชเชคเซ เชญเชฒเชพเชฎเชฃ เชเชฐเชพเชฏเซเชฒ PHP เชเชเซเชธเซเชเซเชเชถเชจเชจเซ เชชเชฃ เชธเชฎเชพเชตเซเชถ เชฅเชพเชฏ เชเซ
เชธเซเชเซเชฐเชฟเชชเซเช เชเซเชก
echo " Updating repository metadata"
apt-get -qq update
# Install PHP with dependencies and NGINX Unit
echo " Installing PHP, NGINX Unit, NGINX, Certbot, and MariaDB"
apt-get -qq install -y --no-install-recommends
certbot
python3-certbot-nginx
php-cli
php-common
php-bcmath
php-curl
php-gd
php-imagick
php-mbstring
php-mysql
php-opcache
php-xml
php-zip
ghostscript
nginx
unit
unit-php
mariadb-server
NGINX เชฏเซเชจเชฟเช เช เชจเซ เชตเชฐเซเชกเชชเซเชฐเซเชธ เชธเชพเชฅเซ เชเชชเชฏเซเช เชเชฐเชตเชพ เชฎเชพเชเซ PHP เชธเซเช เชเชฐเชตเซเช
เชธเซเชเซเชฐเชฟเชชเซเช เชกเชฟเชฐเซเชเซเชเชฐเซเชฎเชพเช เชธเซเชเชฟเชเชเซเชธ เชซเชพเชเชฒ เชฌเชจเชพเชตเซ เชเซ conf.d. เช PHP เช เชชเชฒเซเชกเซเชธ เชฎเชพเชเซ เชฎเชนเชคเซเชคเชฎ เชเชฆ เชธเซเช เชเชฐเซ เชเซ, PHP เชเชฐเชฐ เชเชเชเชชเซเชเชจเซ STDERR เชชเชฐ เชเชพเชฒเซ เชเชฐเซ เชเซ เชเซเชฅเซ เชคเซ NGINX เชฏเซเชจเชฟเช เชฒเซเชเชฎเชพเช เชฒเชเชตเชพเชฎเชพเช เชเชตเซ เช เชจเซ NGINX เชฏเซเชจเชฟเชเชจเซ เชซเชฐเซเชฅเซ เชถเชฐเซ เชเชฐเซ.
เชธเซเชเซเชฐเชฟเชชเซเช เชเซเชก
# Find the major and minor PHP version so that we can write to its conf.d directory
PHP_MAJOR_MINOR_VERSION="$(php -v | head -n1 | cut -d' ' -f2 | cut -d'.' -f1,2)"
if [ ! -f "/etc/php/${PHP_MAJOR_MINOR_VERSION}/embed/conf.d/30-wordpress-overrides.ini" ]; then
echo " Configuring PHP for use with NGINX Unit and WordPress"
# Add PHP configuration overrides
cat > "/etc/php/${PHP_MAJOR_MINOR_VERSION}/embed/conf.d/30-wordpress-overrides.ini" << EOM
; Set a larger maximum upload size so that WordPress can handle
; bigger media files.
upload_max_filesize=${UPLOAD_MAX_FILESIZE}
post_max_size=${UPLOAD_MAX_FILESIZE}
; Write error log to STDERR so that error messages show up in the NGINX Unit log
error_log=/dev/stderr
EOM
fi
# Restart NGINX Unit because we have reconfigured PHP
echo " Restarting NGINX Unit"
service unit restart
เชตเชฐเซเชกเชชเซเชฐเซเชธ เชฎเชพเชเซ เชฎเชพเชฐเชฟเชฏเชพเชกเซเชฌเซ เชกเซเชเชพเชฌเซเช เชธเซเชเชฟเชเชเซเชธเชจเซ เชเชฒเซเชฒเซเช เชเชฐเชตเซ
เช
เชฎเซ เชฎเชพเชฏเชเชธเชเซเชฏเซเชเชฒ เชชเชฐ เชฎเชพเชฐเชฟเชฏเชพเชกเซเชฌเซ เชชเชธเชเชฆ เชเชฐเซเชฏเซเช เชเซ เชเชพเชฐเชฃ เชเซ เชคเซเชฎเชพเช เชตเชงเซ เชธเชพเชฎเซเชฆเชพเชฏเชฟเช เชชเซเชฐเชตเซเชคเซเชคเชฟ เชเซ เช
เชจเซ เชคเซเชตเซ เชถเชเซเชฏเชคเชพ เชชเชฃ เชเซ
เชธเซเชเซเชฐเชฟเชชเซเช เชเช เชจเชตเซ เชกเซเชเชพเชฌเซเช เชฌเชจเชพเชตเซ เชเซ เช เชจเซ เชฒเซเชชเชฌเซเช เชเชจเซเชเชฐเชซเซเชธ เชฆเซเชตเชพเชฐเชพ เชตเชฐเซเชกเชชเซเชฐเซเชธเชจเซ เชเชเซเชธเซเชธ เชเชฐเชตเชพ เชฎเชพเชเซ เชเชณเชเชชเชคเซเชฐเซ เชฌเชจเชพเชตเซ เชเซ:
เชธเซเชเซเชฐเชฟเชชเซเช เชเซเชก
# Set up the WordPress database
echo " Configuring MariaDB for WordPress"
mysqladmin create wordpress || echo "Ignoring above error because database may already exist"
mysql -e "GRANT ALL PRIVILEGES ON wordpress.* TO "wordpress"@"localhost" IDENTIFIED BY "$WORDPRESS_DB_PASSWORD"; FLUSH PRIVILEGES;"
เชตเชฐเซเชกเชชเซเชฐเซเชธ CLI เชชเซเชฐเซเชเซเชฐเชพเชฎ เชเชจเซเชธเซเชเซเชฒ เชเชฐเซ เชฐเชนเซเชฏเซเช เชเซ
เช เชชเชเชฒเชพ เชชเชฐ, เชธเซเชเซเชฐเชฟเชชเซเช เชชเซเชฐเซเชเซเชฐเชพเชฎ เชเชจเซเชธเซเชเซเชฒ เชเชฐเซ เชเซ
เชธเซเชเซเชฐเชฟเชชเซเช เชเซเชก
if [ ! -f /usr/local/bin/wp ]; then
# Install the WordPress CLI
echo " Installing the WordPress CLI tool"
curl --retry 6 -Ls "https://github.com/wp-cli/wp-cli/releases/download/v${WORDPRESS_CLI_VERSION}/wp-cli-${WORDPRESS_CLI_VERSION}.phar" > /usr/local/bin/wp
echo "$WORDPRESS_CLI_MD5 /usr/local/bin/wp" | md5sum -c -
chmod +x /usr/local/bin/wp
fi
เชตเชฐเซเชกเชชเซเชฐเซเชธ เชเชจเซเชธเซเชเซเชฒ เช เชจเซ เชเซเช เชตเซ เชฐเชนเซเชฏเซเช เชเซ
เชธเซเชเซเชฐเชฟเชชเซเช เชตเชฐเซเชกเชชเซเชฐเซเชธเชจเชพ เชจเชตเซเชจเชคเชฎ เชธเชเชธเซเชเชฐเชฃเชจเซ เชกเชฟเชฐเซเชเซเชเชฐเซเชฎเชพเช เชเชจเซเชธเซเชเซเชฒ เชเชฐเซ เชเซ /var/www/wordpress
เช
เชจเซ เชธเซเชเชฟเชเชเซเชธเชฎเชพเช เชชเชฃ เชซเซเชฐเชซเชพเชฐ เชเชฐเซ เชเซ:
- เชกเซเชเชพเชฌเซเช เชเชจเซเชเซเชถเชจ TCP เชเซเชฐเชพเชซเชฟเชเชจเซ เชเชเชพเชกเชตเชพ เชฎเชพเชเซ เชฒเซเชชเชฌเซเช เชชเชฐ TCP เชจเซ เชฌเชฆเชฒเซ เชฏเซเชจเชฟเชเซเชธ เชกเซเชฎเซเชจ เชธเซเชเซเช เชชเชฐ เชเชพเชฎ เชเชฐเซ เชเซ.
- เชตเชฐเซเชกเชชเซเชฐเซเชธ เชเช เชเชชเชธเชฐเซเช เชเชฎเซเชฐเซ เชเซ https:// เชเซ เชเซเชฒเชพเชฏเชจเซเช HTTPS เชชเชฐ NGINX เชธเชพเชฅเซ เชเซเชกเชพเชฏ เชเซ, เช เชจเซ PHP เชจเซ เชฐเชฟเชฎเซเช เชนเซเชธเซเชเชจเชพเชฎ (เชเชจเชเซเชเชเชเชจเชเชเซเชธ เชฆเซเชตเชพเชฐเชพ เชชเซเชฐเชฆเชพเชจ เชเชฐเซเชฒเซเช) เชชเชฃ เชฎเซเชเชฒเซ เชเซ. เช เชฎเซ เชเชจเซ เชธเซเช เชเชฐเชตเชพ เชฎเชพเชเซ เชเซเชกเชจเชพ เชเซเชเชกเชพเชจเซ เชเชชเชฏเซเช เชเชฐเซเช เชเซเช.
- เชตเชฐเซเชกเชชเซเชฐเซเชธเชจเซ เชฒเซเชเชฟเชจ เชฎเชพเชเซ HTTPS เชจเซ เชเชฐเซเชฐ เชเซ
- เชกเชฟเชซเซเชฒเซเช URL เชฎเชพเชณเชเซเช เชธเชเชธเชพเชงเชจเซ เชชเชฐ เชเชงเชพเชฐเชฟเชค เชเซ
- เชตเชฐเซเชกเชชเซเชฐเซเชธ เชกเชฟเชฐเซเชเซเชเชฐเซ เชฎเชพเชเซ เชซเชพเชเชฒ เชธเชฟเชธเซเชเชฎ เชชเชฐ เชฏเซเชเซเชฏ เชชเชฐเชตเชพเชจเชเซเช เชธเซเช เชเชฐเซ เชเซ.
เชธเซเชเซเชฐเชฟเชชเซเช เชเซเชก
if [ ! -d /var/www/wordpress ]; then
# Create WordPress directories
mkdir -p /var/www/wordpress
chown -R www-data:www-data /var/www
# Download WordPress using the WordPress CLI
echo " Installing WordPress"
su -s /bin/sh -c 'wp --path=/var/www/wordpress core download' www-data
WP_CONFIG_CREATE_CMD="wp --path=/var/www/wordpress config create --extra-php --dbname=wordpress --dbuser=wordpress --dbhost="localhost:/var/run/mysqld/mysqld.sock" --dbpass="${WORDPRESS_DB_PASSWORD}""
# This snippet is injected into the wp-config.php file when it is created;
# it informs WordPress that we are behind a reverse proxy and as such
# allows it to generate links using HTTPS
cat > /tmp/wp_forwarded_for.php << 'EOM'
/* Turn HTTPS 'on' if HTTP_X_FORWARDED_PROTO matches 'https' */
if (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && strpos($_SERVER['HTTP_X_FORWARDED_PROTO'], 'https') !== false) {
$_SERVER['HTTPS'] = 'on';
}
if (isset($_SERVER['HTTP_X_FORWARDED_HOST'])) {
$_SERVER['HTTP_HOST'] = $_SERVER['HTTP_X_FORWARDED_HOST'];
}
EOM
# Create WordPress configuration
su -s /bin/sh -p -c "cat /tmp/wp_forwarded_for.php | ${WP_CONFIG_CREATE_CMD}" www-data
rm /tmp/wp_forwarded_for.php
su -s /bin/sh -p -c "wp --path=/var/www/wordpress config set 'FORCE_SSL_ADMIN' 'true'" www-data
# Install WordPress
WP_SITE_INSTALL_CMD="wp --path=/var/www/wordpress core install --url="${WORDPRESS_URL}" --title="${WORDPRESS_SITE_TITLE}" --admin_user="${WORDPRESS_ADMIN_USER}" --admin_password="${WORDPRESS_ADMIN_PASSWORD}" --admin_email="${WORDPRESS_ADMIN_EMAIL}" --skip-email"
su -s /bin/sh -p -c "${WP_SITE_INSTALL_CMD}" www-data
# Set permalink structure to a sensible default that isn't in the UI
su -s /bin/sh -p -c "wp --path=/var/www/wordpress option update permalink_structure '/%year%/%monthnum%/%postname%/'" www-data
# Remove sample file because it is cruft and could be a security problem
rm /var/www/wordpress/wp-config-sample.php
# Ensure that WordPress permissions are correct
find /var/www/wordpress -type d -exec chmod g+s {} ;
chmod g+w /var/www/wordpress/wp-content
chmod -R g+w /var/www/wordpress/wp-content/themes
chmod -R g+w /var/www/wordpress/wp-content/plugins
fi
NGINX เชฏเซเชจเชฟเช เชธเซเช เชเชฐเซ เชฐเชนเซเชฏเซเช เชเซ
เชธเซเชเซเชฐเชฟเชชเซเช PHP เชเชฒเชพเชตเชตเชพ เช เชจเซ เชตเชฐเซเชกเชชเซเชฐเซเชธ เชชเชพเชฅเชจเซ เชชเซเชฐเชเซเชฐเชฟเชฏเชพ เชเชฐเชตเชพ เชฎเชพเชเซ NGINX เชฏเซเชจเชฟเชเชจเซ เชเซเช เชตเซ เชเซ, PHP เชชเซเชฐเชเซเชฐเชฟเชฏเชพ เชจเซเชฎเชธเซเชชเซเชธเชจเซ เช เชฒเช เชเชฐเซ เชเซ เช เชจเซ เชชเซเชฐเชฆเชฐเซเชถเชจ เชธเซเชเชฟเชเชเซเชธเชจเซ เชเชชเซเชเชฟเชฎเชพเชเช เชเชฐเซ เชเซ. เช เชนเซเช เชเซเชตเชพ เชฎเชพเชเซ เชคเซเชฐเชฃ เชธเซเชตเชฟเชงเชพเช เชเซ:
- เชธเซเชเซเชฐเชฟเชชเซเช เชเชจเซเชเซเชจเชฐเชฎเชพเช เชเชพเชฒเซ เชฐเชนเซ เชเซ เชเซ เชจเชนเซเช เชคเซเชจเซ เชเชเชพเชธเชฃเซเชจเชพ เชเชงเชพเชฐเซ เชจเซเชฎเชธเซเชชเซเชธ เชฎเชพเชเซเชจเซ เชเชงเชพเชฐ เชถเชฐเชค เชฆเซเชตเชพเชฐเชพ เชจเชเซเชเซ เชเชฐเชตเชพเชฎเชพเช เชเชตเซ เชเซ. เช เชเชฐเซเชฐเซ เชเซ เชเชพเชฐเชฃ เชเซ เชฎเซเชเชพเชญเชพเชเชจเชพ เชเชจเซเชเซเชจเชฐ เชธเซเชเช เชช เชเชจเซเชเซเชจเชฐเชจเชพ เชจเซเชธเซเชเซเชก เชฒเซเชเชเชจเซ เชธเชชเซเชฐเซเช เชเชฐเชคเชพ เชจเชฅเซ.
- เชเซ เชจเซเชฎเชธเซเชชเซเชธ เชฎเชพเชเซ เชธเชชเซเชฐเซเช เชนเซเชฏ, เชคเซ เชจเซเชฎเชธเซเชชเซเชธเชจเซ เช เชเซเชทเชฎ เชเชฐเซ เชจเซเชเชตเชฐเซเช. เช เชตเชฐเซเชกเชชเซเชฐเซเชธเชจเซ เชฌเชเชจเซ เชเชจเซเชกเชชเซเชเชจเซเชเซเชธ เชธเชพเชฅเซ เชเชจเซเชเซเช เชฅเชตเชพเชจเซ เช เชจเซ เชคเซ เช เชธเชฎเชฏเซ เชตเซเชฌ เชชเชฐ เชเชชเชฒเชฌเซเชง เชฐเชนเซเชตเชพเชจเซ เชฎเชเชเซเชฐเซ เชเชชเชตเชพ เชฎเชพเชเซ เชเซ.
- เชชเซเชฐเชเซเชฐเชฟเชฏเชพเชเชจเซ เชฎเชนเชคเซเชคเชฎ เชธเชเชเซเชฏเชพ เชจเซเชเซ เชชเซเชฐเชฎเชพเชฃเซ เชตเซเชฏเชพเชเซเชฏเชพเชฏเชฟเชค เชเชฐเชตเชพเชฎเชพเช เชเชตเซ เชเซ: (MariaDB เช
เชจเซ NGINX Uniy เชเชฒเชพเชตเชตเชพ เชฎเชพเชเซ เชเชชเชฒเชฌเซเชง เชฎเซเชฎเชฐเซ)/(PHP + 5 เชฎเชพเช RAM เชฎเชฐเซเชฏเชพเชฆเชพ)
เช เชฎเซเชฒเซเชฏ NGINX เชฏเซเชจเชฟเช เชธเซเชเชฟเชเชเซเชธเชฎเชพเช เชธเซเช เชเชฐเซเชฒ เชเซ.
เช เชฎเซเชฒเซเชฏ เช เชชเชฃ เชธเซเชเชฟเชค เชเชฐเซ เชเซ เชเซ เชคเซเชฏเชพเช เชนเชเชฎเซเชถเชพ เชเชเชพเชฎเชพเช เชเชเซ เชฌเซ PHP เชชเซเชฐเชเซเชฐเชฟเชฏเชพเช เชเชพเชฒเซ เชฐเชนเซ เชเซ, เชเซ เชฎเชนเชคเซเชตเชชเซเชฐเซเชฃ เชเซ เชเชพเชฐเชฃ เชเซ เชตเชฐเซเชกเชชเซเชฐเซเชธ เชชเซเชคเชพเชจเซ เชฎเชพเชเซ เชเชฃเซ เช เชธเซเชฎเซเชณ เชตเชฟเชจเชเชคเซเช เชเชฐเซ เชเซ, เช เชจเซ เชตเชงเชพเชฐเชพเชจเซ เชชเซเชฐเชเซเชฐเชฟเชฏเชพเช เชตเชฟเชจเชพ, เชเซเชฎ เชเซ WP-Cron เชคเซเชเซ เชเชถเซ. เชคเชฎเซ เชคเชฎเชพเชฐเซ เชธเซเชฅเชพเชจเชฟเช เชธเซเชเชฟเชเชเซเชธเชจเชพ เชเชงเชพเชฐเซ เช เชฎเชฐเซเชฏเชพเชฆเชพ เชตเชงเชพเชฐเชตเชพ เช เชฅเชตเชพ เชเชเชพเชกเชตเชพ เชฎเชพเชเซ เชถเชเซ เชเซ, เชเชพเชฐเชฃ เชเซ เช เชนเซเช เชฌเชจเชพเชตเซเชฒ เชธเซเชเชฟเชเชเซเชธ เชฐเซเชขเชฟเชเซเชธเซเชค เชเซ. เชฎเซเชเชพเชญเชพเชเชจเซ เชชเซเชฐเซเชกเชเซเชถเชจ เชธเชฟเชธเซเชเชฎเซเชธ เชชเชฐ, เชธเซเชเชฟเชเชเซเชธ 10 เช เชจเซ 100 เชจเซ เชตเชเซเชเซ เชนเซเชฏ เชเซ.
เชธเซเชเซเชฐเชฟเชชเซเช เชเซเชก
if [ "${container:-unknown}" != "lxc" ] && [ "$(grep -m1 -a container=lxc /proc/1/environ | tr -d '')" == "" ]; then
NAMESPACES='"namespaces": {
"cgroup": true,
"credential": true,
"mount": true,
"network": false,
"pid": true,
"uname": true
}'
else
NAMESPACES='"namespaces": {}'
fi
PHP_MEM_LIMIT="$(grep 'memory_limit' /etc/php/7.4/embed/php.ini | tr -d ' ' | cut -f2 -d= | numfmt --from=iec)"
AVAIL_MEM="$(grep MemAvailable /proc/meminfo | tr -d ' kB' | cut -f2 -d: | numfmt --from-unit=K)"
MAX_PHP_PROCESSES="$(echo "${AVAIL_MEM}/${PHP_MEM_LIMIT}+5" | bc)"
echo " Calculated the maximum number of PHP processes as ${MAX_PHP_PROCESSES}. You may want to tune this value due to variations in your configuration. It is not unusual to see values between 10-100 in production configurations."
echo " Configuring NGINX Unit to use PHP and WordPress"
cat > /tmp/wordpress.json << EOM
{
"settings": {
"http": {
"header_read_timeout": 30,
"body_read_timeout": 30,
"send_timeout": 30,
"idle_timeout": 180,
"max_body_size": $(numfmt --from=iec ${UPLOAD_MAX_FILESIZE})
}
},
"listeners": {
"127.0.0.1:8080": {
"pass": "routes/wordpress"
}
},
"routes": {
"wordpress": [
{
"match": {
"uri": [
"*.php",
"*.php/*",
"/wp-admin/"
]
},
"action": {
"pass": "applications/wordpress/direct"
}
},
{
"action": {
"share": "/var/www/wordpress",
"fallback": {
"pass": "applications/wordpress/index"
}
}
}
]
},
"applications": {
"wordpress": {
"type": "php",
"user": "www-data",
"group": "www-data",
"processes": {
"max": ${MAX_PHP_PROCESSES},
"spare": 1
},
"isolation": {
${NAMESPACES}
},
"targets": {
"direct": {
"root": "/var/www/wordpress/"
},
"index": {
"root": "/var/www/wordpress/",
"script": "index.php"
}
}
}
}
}
EOM
curl -X PUT --data-binary @/tmp/wordpress.json --unix-socket /run/control.unit.sock http://localhost/config
NGINX เชธเซเช เชเชฐเซ เชฐเชนเซเชฏเซเช เชเซ
เชฎเซเชณเชญเซเชค NGINX เชธเซเชเชฟเชเชเซเชธเชจเซ เชเซเช เชตเซ เชฐเชนเซเชฏเซเช เชเซ
เชธเซเชเซเชฐเชฟเชชเซเช NGINX เชเซเชถ เชฎเชพเชเซ เชกเชฟเชฐเซเชเซเชเชฐเซ เชฌเชจเชพเชตเซ เชเซ เช
เชจเซ เชชเชเซ เชฎเซเชเซเชฏ เชฐเซเชชเชฐเซเชเชพเชเชเชจ เชซเชพเชเชฒ เชฌเชจเชพเชตเซ เชเซ nginx.conf
. เชนเซเชจเซเชกเชฒเชฐ เชชเซเชฐเชเซเชฐเชฟเชฏเชพเชเชจเซ เชธเชเชเซเชฏเชพ เช
เชจเซ เช
เชชเชฒเซเชก เชฎเชพเชเซ เชฎเชนเชคเซเชคเชฎ เชซเชพเชเชฒ เชเชฆเชจเชพ เชธเซเชเชฟเชเช เชชเชฐ เชงเซเชฏเชพเชจ เชเชชเซ. เชคเซเชฏเชพเช เชเช เชฒเชพเชเชจ เชชเชฃ เชเซ เชเซเชฎเชพเช เชเชเชณเชจเชพ เชตเชฟเชญเชพเชเชฎเชพเช เชตเซเชฏเชพเชเซเชฏเชพเชฏเชฟเชค เชเชฎเซเชชเซเชฐเซเชถเชจ เชธเซเชเชฟเชเชเซเชธ เชซเชพเชเชฒเชจเซ เชธเชฎเชพเชตเซเชถ เชฅเชพเชฏ เชเซ, เชเซเชถเชฟเชเช เชธเซเชเชฟเชเชเซเชธ เชฆเซเชตเชพเชฐเชพ เช
เชจเซเชธเชฐเชตเชพเชฎเชพเช เชเชตเซ เชเซ.
เชธเซเชเซเชฐเชฟเชชเซเช เชเซเชก
# Make directory for NGINX cache
mkdir -p /var/cache/nginx/proxy
echo " Configuring NGINX"
cat > ${NGINX_CONF_DIR}/nginx.conf << EOM
user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log warn;
pid /var/run/nginx.pid;
events {
worker_connections 1024;
}
http {
include ${NGINX_CONF_DIR}/mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
sendfile on;
client_max_body_size ${UPLOAD_MAX_FILESIZE};
keepalive_timeout 65;
# gzip settings
include ${NGINX_CONF_DIR}/gzip_compression.conf;
# Cache settings
proxy_cache_path /var/cache/nginx/proxy
levels=1:2
keys_zone=wp_cache:10m
max_size=10g
inactive=60m
use_temp_path=off;
include ${NGINX_CONF_DIR}/conf.d/*.conf;
}
EOM
NGINX เชเชฎเซเชชเซเชฐเซเชถเชจ เชธเซเช เชเชฐเซ เชฐเชนเซเชฏเซเช เชเซ
เชเซเชฒเชพเชฏเชเชเชจเซ เชฎเซเชเชฒเชคเชพ เชชเชนเซเชฒเชพ เชธเชพเชฎเชเซเชฐเซเชจเซ เชซเซเชฒเชพเชฏ เชชเชฐ เชธเชเชเซเชเชฟเชค เชเชฐเชตเซเช เช เชธเชพเชเชเชจเชพ เชชเซเชฐเชฆเชฐเซเชถเชจเชจเซ เชธเซเชงเชพเชฐเชตเชพ เชฎเชพเชเซ เชเช เชธเชฐเชธ เชฐเซเชค เชเซ, เชชเชฐเชเชคเซ เชเซ เชเชฎเซเชชเซเชฐเซเชถเชจ เชฏเซเชเซเชฏ เชฐเซเชคเซ เชเซเช เชตเซเชฒ เชนเซเชฏ เชคเซ เช. เชธเซเชเซเชฐเชฟเชชเซเชเชจเซ เช เชตเชฟเชญเชพเช เชธเซเชเชฟเชเชเซเชธ เชชเชฐ เชเชงเชพเชฐเชฟเชค เชเซ
เชธเซเชเซเชฐเชฟเชชเซเช เชเซเชก
cat > ${NGINX_CONF_DIR}/gzip_compression.conf << 'EOM'
# Credit: https://github.com/h5bp/server-configs-nginx/
# ----------------------------------------------------------------------
# | Compression |
# ----------------------------------------------------------------------
# https://nginx.org/en/docs/http/ngx_http_gzip_module.html
# Enable gzip compression.
# Default: off
gzip on;
# Compression level (1-9).
# 5 is a perfect compromise between size and CPU usage, offering about 75%
# reduction for most ASCII files (almost identical to level 9).
# Default: 1
gzip_comp_level 6;
# Don't compress anything that's already small and unlikely to shrink much if at
# all (the default is 20 bytes, which is bad as that usually leads to larger
# files after gzipping).
# Default: 20
gzip_min_length 256;
# Compress data even for clients that are connecting to us via proxies,
# identified by the "Via" header (required for CloudFront).
# Default: off
gzip_proxied any;
# Tell proxies to cache both the gzipped and regular version of a resource
# whenever the client's Accept-Encoding capabilities header varies;
# Avoids the issue where a non-gzip capable client (which is extremely rare
# today) would display gibberish if their proxy gave them the gzipped version.
# Default: off
gzip_vary on;
# Compress all output labeled with one of the following MIME-types.
# `text/html` is always compressed by gzip module.
# Default: text/html
gzip_types
application/atom+xml
application/geo+json
application/javascript
application/x-javascript
application/json
application/ld+json
application/manifest+json
application/rdf+xml
application/rss+xml
application/vnd.ms-fontobject
application/wasm
application/x-web-app-manifest+json
application/xhtml+xml
application/xml
font/eot
font/otf
font/ttf
image/bmp
image/svg+xml
text/cache-manifest
text/calendar
text/css
text/javascript
text/markdown
text/plain
text/xml
text/vcard
text/vnd.rim.location.xloc
text/vtt
text/x-component
text/x-cross-domain-policy;
EOM
เชตเชฐเซเชกเชชเซเชฐเซเชธ เชฎเชพเชเซ NGINX เชธเซเช เชเชฐเซ เชฐเชนเซเชฏเซเช เชเซ
เชเชเชณ, เชธเซเชเซเชฐเชฟเชชเซเช เชตเชฐเซเชกเชชเซเชฐเซเชธ เชฎเชพเชเซ เชฐเซเชชเชฐเซเชเชพเชเชเชจ เชซเชพเชเชฒ เชฌเชจเชพเชตเซ เชเซ default.conf เชธเซเชเชฟเชฎเชพเช conf.d. เชคเซ เช เชนเซเช เชเซเช เชตเซเชฒ เชเซ:
- Let's Encrypt เชฆเซเชตเชพเชฐเชพ Certbot เชฆเซเชตเชพเชฐเชพ เชชเซเชฐเชพเชชเซเชค TLS เชชเซเชฐเชฎเชพเชฃเชชเชคเซเชฐเซเชจเซ เชธเชเซเชฐเชฟเชฏ เชเชฐเชตเซเช (เชคเซเชจเซเช เชธเซเชเช เชช เชเชเชพเชฎเซ เชตเชฟเชญเชพเชเชฎเชพเช เชฅเชถเซ)
- Let's Encrypt เชจเซ เชญเชฒเชพเชฎเชฃเซเชจเชพ เชเชงเชพเชฐเซ TLS เชธเซเชฐเชเซเชทเชพ เชธเซเชเชฟเชเชเซเชธเชจเซ เชเซเช เชตเซ เชฐเชนเซเชฏเชพเช เชเซเช
- เชกเชฟเชซเซเชฒเซเช เชฐเซเชชเซ 1 เชเชฒเชพเช เชฎเชพเชเซ เชเซเชถเซเชเช เชธเซเชเซเชช เชตเชฟเชจเชเชคเซเชเชจเซ เชธเชเซเชทเชฎ เชเชฐเซ
- เชฌเซ เชธเชพเชฎเชพเชจเซเชฏ เชตเชฟเชจเชเชคเซ เชเชฐเซเชฒเซ เชซเชพเชเชฒเซ เชฎเชพเชเซ เชเชเซเชธเซเชธ เชฒเซเชเซเชเช, เชคเซเชฎเช เชเซ เชซเชพเชเชฒ เชจ เชฎเชณเซ เชคเซ เชญเซเชฒ เชฒเซเชเซเชเชเชจเซ เช เชเซเชทเชฎ เชเชฐเซ: favicon.ico เช เชจเซ robots.txt
- เชเซเชชเชพเชฏเซเชฒ เชซเชพเชเชฒเซ เช เชจเซ เชเซเชเชฒเซเช เชซเชพเชเชฒเซเชจเซ เชเชเซเชธเซเชธเชจเซ เช เชเชเชพเชตเซ .PHPเชเซเชฐเชเชพเชฏเชฆเซเชธเชฐ เชชเซเชฐเชตเซเชถ เช เชฅเชตเชพ เช เชจเชฟเชเซเชเชจเซเชฏ เชถเชฐเซเชเชคเชจเซ เชฐเซเชเชตเชพ เชฎเชพเชเซ
- เชธเซเชฅเชฟเชฐ เช เชจเซ เชซเซเชจเซเช เชซเชพเชเชฒเซ เชฎเชพเชเซ เชเชเซเชธเซเชธ เชฒเซเชเชฟเชเชเชจเซ เช เชเซเชทเชฎ เชเชฐเซ
- เชนเซเชกเชฐ เชธเซเชเชฟเชเช
เชเชเซเชธเซเชธ-เชจเชฟเชฏเชเชคเซเชฐเชฃ-เชฎเชเชเซเชฐเซ-เชฎเซเชณ เชซเซเชจเซเช เชซเชพเชเชฒเซ เชฎเชพเชเซ - index.php เช เชจเซ เช เชจเซเชฏ เชธเซเชเซเชเชฟเชเซเชธ เชฎเชพเชเซ เชฐเซเชเซเชเช เชเชฎเซเชฐเชตเชพเชจเซเช.
เชธเซเชเซเชฐเชฟเชชเซเช เชเซเชก
cat > ${NGINX_CONF_DIR}/conf.d/default.conf << EOM
upstream unit_php_upstream {
server 127.0.0.1:8080;
keepalive 32;
}
server {
listen 80;
listen [::]:80;
# ACME-challenge used by Certbot for Let's Encrypt
location ^~ /.well-known/acme-challenge/ {
root /var/www/certbot;
}
location / {
return 301 https://${TLS_HOSTNAME}$request_uri;
}
}
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name ${TLS_HOSTNAME};
root /var/www/wordpress/;
# Let's Encrypt configuration
ssl_certificate ${CERT_DIR}/fullchain.pem;
ssl_certificate_key ${CERT_DIR}/privkey.pem;
ssl_trusted_certificate ${CERT_DIR}/chain.pem;
include ${NGINX_CONF_DIR}/options-ssl-nginx.conf;
ssl_dhparam ${NGINX_CONF_DIR}/ssl-dhparams.pem;
# OCSP stapling
ssl_stapling on;
ssl_stapling_verify on;
# Proxy caching
proxy_cache wp_cache;
proxy_cache_valid 200 302 1h;
proxy_cache_valid 404 1m;
proxy_cache_revalidate on;
proxy_cache_background_update on;
proxy_cache_lock on;
proxy_cache_use_stale error timeout http_500 http_502 http_503 http_504;
location = /favicon.ico {
log_not_found off;
access_log off;
}
location = /robots.txt {
allow all;
log_not_found off;
access_log off;
}
# Deny all attempts to access hidden files such as .htaccess, .htpasswd,
# .DS_Store (Mac)
# Keep logging the requests to parse later (or to pass to firewall utilities
# such as fail2ban)
location ~ /. {
deny all;
}
# Deny access to any files with a .php extension in the uploads directory;
# works in subdirectory installs and also in multi-site network.
# Keep logging the requests to parse later (or to pass to firewall utilities
# such as fail2ban).
location ~* /(?:uploads|files)/.*.php$ {
deny all;
}
# WordPress: deny access to wp-content, wp-includes PHP files
location ~* ^/(?:wp-content|wp-includes)/.*.php$ {
deny all;
}
# Deny public access to wp-config.php
location ~* wp-config.php {
deny all;
}
# Do not log access for static assets, media
location ~* .(?:css(.map)?|js(.map)?|jpe?g|png|gif|ico|cur|heic|webp|tiff?|mp3|m4a|aac|ogg|midi?|wav|mp4|mov|webm|mpe?g|avi|ogv|flv|wmv)$ {
access_log off;
}
location ~* .(?:svgz?|ttf|ttc|otf|eot|woff2?)$ {
add_header Access-Control-Allow-Origin "*";
access_log off;
}
location / {
try_files $uri @index_php;
}
location @index_php {
proxy_socket_keepalive on;
proxy_http_version 1.1;
proxy_set_header Connection "";
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header Host $host;
proxy_pass http://unit_php_upstream;
}
location ~* .php$ {
proxy_socket_keepalive on;
proxy_http_version 1.1;
proxy_set_header Connection "";
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header Host $host;
try_files $uri =404;
proxy_pass http://unit_php_upstream;
}
}
EOM
Let's Encrypt เชฎเชพเชเชฅเซ เชชเซเชฐเชฎเชพเชฃเชชเชคเซเชฐเซ เชฎเชพเชเซ Certbot เชธเซเช เชเชฐเชตเซเช เช เชจเซ เชคเซเชฎเชจเซ เชธเซเชตเชคเช เชจเชตเซเชเชฐเชฃ เชเชฐเชตเซเช
- NGINX เชฐเซเชเซ เชเซ
- เชกเชพเชเชจเชฒเซเชกเซเชธ เชญเชฒเชพเชฎเชฃ เชเชฐเซเชฒ TLS เชธเซเชเชฟเชเชเซเชธ
- เชธเชพเชเช เชฎเชพเชเซ เชชเซเชฐเชฎเชพเชฃเชชเชคเซเชฐเซ เชฎเซเชณเชตเชตเชพ เชฎเชพเชเซ Certbot เชเชฒเชพเชตเซ เชเซ
- เชชเซเชฐเชฎเชพเชฃเชชเชคเซเชฐเซเชจเซ เชเชชเชฏเซเช เชเชฐเชตเชพ เชฎเชพเชเซ NGINX เชชเซเชจเชเชชเซเชฐเชพเชฐเชเชญ เชเชฐเซ เชเซ
- เชชเซเชฐเชฎเชพเชฃเชชเชคเซเชฐเซเชจเซ เชจเชตเซเชเชฐเชฃ เชเชฐเชตเชพเชจเซ เชเชฐเซเชฐ เชเซ เชเซ เชเซเชฎ เชคเซ เชคเชชเชพเชธเชตเชพ เชฎเชพเชเซ เชฆเชฐเชฐเซเช เชธเชตเชพเชฐเซ 3:24 เชตเชพเชเซเชฏเซ เชเชฒเชพเชตเชตเชพ เชฎเชพเชเซ Certbot เชจเซ เชเซเช เชตเซ เชเซ เช เชจเซ เชเซ เชเชฐเซเชฐเซ เชนเซเชฏ เชคเซ, เชจเชตเชพ เชชเซเชฐเชฎเชพเชฃเชชเชคเซเชฐเซ เชกเชพเชเชจเชฒเซเชก เชเชฐเซ เช เชจเซ NGINX เชชเซเชจเชเชชเซเชฐเชพเชฐเชเชญ เชเชฐเซ.
เชธเซเชเซเชฐเชฟเชชเซเช เชเซเชก
echo " Stopping NGINX in order to set up Let's Encrypt"
service nginx stop
mkdir -p /var/www/certbot
chown www-data:www-data /var/www/certbot
chmod g+s /var/www/certbot
if [ ! -f ${NGINX_CONF_DIR}/options-ssl-nginx.conf ]; then
echo " Downloading recommended TLS parameters"
curl --retry 6 -Ls -z "Tue, 14 Apr 2020 16:36:07 GMT"
-o "${NGINX_CONF_DIR}/options-ssl-nginx.conf"
"https://raw.githubusercontent.com/certbot/certbot/master/certbot-nginx/certbot_nginx/_internal/tls_configs/options-ssl-nginx.conf"
|| echo "Couldn't download latest options-ssl-nginx.conf"
fi
if [ ! -f ${NGINX_CONF_DIR}/ssl-dhparams.pem ]; then
echo " Downloading recommended TLS DH parameters"
curl --retry 6 -Ls -z "Tue, 14 Apr 2020 16:49:18 GMT"
-o "${NGINX_CONF_DIR}/ssl-dhparams.pem"
"https://raw.githubusercontent.com/certbot/certbot/master/certbot/certbot/ssl-dhparams.pem"
|| echo "Couldn't download latest ssl-dhparams.pem"
fi
# If tls_certs_init.sh hasn't been run before, remove the self-signed certs
if [ ! -d "/etc/letsencrypt/accounts" ]; then
echo " Removing self-signed certificates"
rm -rf "${CERT_DIR}"
fi
if [ "" = "${LETS_ENCRYPT_STAGING:-}" ] || [ "0" = "${LETS_ENCRYPT_STAGING}" ]; then
CERTBOT_STAGING_FLAG=""
else
CERTBOT_STAGING_FLAG="--staging"
fi
if [ ! -f "${CERT_DIR}/fullchain.pem" ]; then
echo " Generating certificates with Let's Encrypt"
certbot certonly --standalone
-m "${WORDPRESS_ADMIN_EMAIL}"
${CERTBOT_STAGING_FLAG}
--agree-tos --force-renewal --non-interactive
-d "${TLS_HOSTNAME}"
fi
echo " Starting NGINX in order to use new configuration"
service nginx start
# Write crontab for periodic Let's Encrypt cert renewal
if [ "$(crontab -l | grep -m1 'certbot renew')" == "" ]; then
echo " Adding certbot to crontab for automatic Let's Encrypt renewal"
(crontab -l 2>/dev/null; echo "24 3 * * * certbot renew --nginx --post-hook 'service nginx reload'") | crontab -
fi
เชคเชฎเชพเชฐเซ เชธเชพเชเชเชจเซเช เชตเชงเชพเชฐเชพเชจเซเช เชเชธเซเชเชฎเชพเชเชเซเชถเชจ
เช เชฎเซ เชเชชเชฐ เชตเชพเชค เชเชฐเซ เชเซ เชเซ เชเซเชตเซ เชฐเซเชคเซ เช เชฎเชพเชฐเซ เชธเซเชเซเชฐเชฟเชชเซเช NGINX เช เชจเซ NGINX เชฏเซเชจเชฟเชเชจเซ TLSSSL เชธเชเซเชทเชฎ เชธเชพเชฅเซ เชเชคเซเชชเชพเชฆเชจ-เชคเซเชฏเชพเชฐ เชธเชพเชเชเชจเซ เชธเซเชตเชพ เชเชชเชตเชพ เชฎเชพเชเซ เชเซเช เชตเซ เชเซ. เชคเชฎเซ เชคเชฎเชพเชฐเซ เชเชฐเซเชฐเชฟเชฏเชพเชคเซเชจเซ เชเชงเชพเชฐเซ, เชญเชตเชฟเชทเซเชฏเชฎเชพเช เชชเชฃ เชเชฎเซเชฐเซ เชถเชเซ เชเซ:
- เชเชงเชพเชฐ
เชฌเซเชฐเซเชเชฒเซ , HTTPS เชชเชฐ เชเชจ-เชง-เชซเซเชฒเชพเชฏ เชเชฎเซเชชเซเชฐเซเชถเชจเชฎเชพเช เชธเซเชงเชพเชฐเซ เชฎเซเชก เชธเชฟเชเซเชฏเซเชฐเชฟเชเซ ัเชตเชฐเซเชกเชชเซเชฐเซเชธ เชฎเชพเชเซ เชจเชฟเชฏเชฎเซ เชคเชฎเชพเชฐเซ เชธเชพเชเช เชชเชฐ เชธเซเชตเชเชพเชฒเชฟเชค เชนเซเชฎเชฒเชพเชเชจเซ เชฐเซเชเชตเชพ เชฎเชพเชเซเชฌเซเชเช เชช เชคเชฎเชจเซ เช เชจเซเชเซเชณ เชตเชฐเซเชกเชชเซเชฐเซเชธ เชฎเชพเชเซเชฐเชเซเชทเชฃ เชจเซ เชฎเชฆเชฆ เชธเชพเชฅเซเชเชชเช เชฐเซเชฎเชฐ (เชเชฌเซเชจเซเชเซ เชชเชฐ)- เชชเซเชธเซเชเชซเชฟเชเซเชธ เช เชฅเชตเชพ เชเชฎเชเชธเชเชฎเชเซเชชเซ เชเซเชฅเซ เชตเชฐเซเชกเชชเซเชฐเซเชธ เชฎเซเชเชฒ เชฎเซเชเชฒเซ เชถเชเซ
- เชคเชฎเชพเชฐเซ เชธเชพเชเชเชจเซ เชคเชชเชพเชธเซ เชฐเชนเซเชฏเชพเช เชเซเช เชเซเชฅเซ เชคเชฎเซ เชธเชฎเชเซ เชถเชเซ เชเซ เชคเซ เชเซเชเชฒเชพ เชเซเชฐเชพเชซเชฟเชเชจเซ เชนเซเชจเซเชกเชฒ เชเชฐเซ เชถเชเซ เชเซ
เชตเชงเซ เชธเชพเชฐเซ เชธเชพเชเช เชชเซเชฐเชฆเชฐเซเชถเชจ เชฎเชพเชเซ, เช
เชฎเซ เชคเซเชฎเชพเช เช
เชชเชเซเชฐเซเชก เชเชฐเชตเชพเชจเซ เชญเชฒเชพเชฎเชฃ เชเชฐเซเช เชเซเช
เชจเซ เช เชคเซเชฏเชเชค เชฒเซเชก เชเชฐเซเชฒเซ เชธเชพเชเชเชจเชพ เชธเชฎเชฐเซเชฅเชจ เชฎเชพเชเซ, เชคเชฎเซ เชจเชฟเชทเซเชฃเชพเชคเซเชจเซ เชธเชเชชเชฐเซเช เชเชฐเซ เชถเชเซ เชเซ
เชธเชพเชเชฅเชฌเซเชฐเซเช . เช เชฎเซ เชเซเชเชชเชฃ เชญเชพเชฐ เชนเซเช เชณ เชคเชฎเชพเชฐเซ เชตเซเชฌเชธเชพเชเช เช เชฅเชตเชพ เชธเซเชตเชพเชจเซ เชเชกเชชเซ เช เชจเซ เชตเชฟเชถเซเชตเชธเชจเซเชฏ เชเชพเชฎเชเซเชฐเซเชจเซ เชเชพเชคเชฐเซ เชเชฐเซเชถเซเช.
เชธเซเชฐเซเชธ: www.habr.com