แแ แกแแแแแก แแ แแแแแ แแแแแแแแแ, แแฃ แ แแแแ แฃแแแ แแแแแแกแขแแแแ แแ WordPress, Google-แแก แซแแแแ โWordPress installโ-แแ แแแแฎแแแแแแ แแแฎแแแแ แแแแแแ แจแแแแแก แแแแแแฆแแแก. แแฃแแชแ, แคแแฅแขแแแ แแแแ, แแแ แจแแ แแก แซแแแแแ แชแแขแแ แแแ แแ แกแแฎแแแแซแฆแแแแแแ, แ แแแแแก แแแฎแแแแแแแช แจแแแแซแแแแ แแแแแแกแขแแแแ แแ แแ แแแแแแแคแแแฃแ แแ แแ WordPress แแ แซแแ แแแแแ แแแแ แแชแแฃแแ แกแแกแขแแแ แแกแ, แ แแ แแแ แจแแแซแแแ แแแแ แฎแแแก แแแแแแแแแแแจแ แแฎแแ แแแญแแ แ. แจแแกแแซแแแ, แกแฌแแ แ แแแ แแแแขแ แแแ แแแแแ แแ แแก แแแแแแแแแแฃแแ แแแแแ แแขแฃแ แกแแญแแ แแแแแแแ, แแ แแก แแแแแฌแแแฃแแแ แแแแ, แ แแ แแแขแแแฃแ แ แแฎแกแแ แแ แแฃแแแแก แกแขแแขแแแก แฌแแแแแฎแแแก.
แแ แกแขแแขแแแจแ แฉแแแ แจแแแแชแแแแแ แแแแแแ แแแแแแ แแ แแแ แกแแแงแแ แแก แกแแฃแแแแแกแ แกแแ แแแขแ Bash-แแก แกแแ แแแขแแก แแแฌแแแแแแ WordPress-แแก แแแขแแแแขแฃแ แแ แแแกแแงแแแแแแแ Ubuntu-แแ, แแกแแแ แแแแ แแ แแแกแจแ, แแแฃแฎแกแแแ, แแฃ แ แแก แแแแแแแก แแแแแแฃแแ แแแฌแแแ, แแกแแแ แ แแแแ แช แแแแแ แแแแกแแแ, แ แแแแแแแช แแแแแฆแแ แแแก แจแแแฃแจแแแแแแกแแก. . แแฃ แแแฌแแแแแ แแแแฎแแแ แแแแแ แฎแแ แ, แจแแแแซแแแแ แแแแแขแแแแ แกแขแแขแแแก แขแแฅแกแขแ แแ แฃแแ แแแแ
WordPress-แแก NGINX แแ แแแฃแแแก แแแแแงแแแแแแ แแแแแแแแแแก แจแแแฃแจแแแแแฃแแ แแ แฅแแขแแฅแขแฃแ แ แแฆแฌแแ แแแแ แแฅ
- WordPress CLI
- แแแแแ แแแแจแแคแ แแ แแ TLSSSL แกแแ แแแคแแแแขแแแ
- แกแแ แแแคแแแแขแแแแก แแแขแแแแขแฃแ แ แแแแแฎแแแแ
- NGINX แฅแแจแแ แแแ
- NGINX แจแแแฃแแจแแ
- HTTPS แแ HTTP/2 แแฎแแ แแแญแแ แ
- แแ แแชแแกแแก แแแขแแแแขแแแแชแแ
แกแขแแขแแแจแ แแฆแฌแแ แแแ แแฅแแแแ แแแกแขแแแแชแแ แแ แ แกแแ แแแ แแ, แ แแแแแแช แแ แแแ แแฃแแแ แฃแแแกแแแแซแแแแก แกแขแแขแแแฃแ แ แแแแฃแจแแแแแแก แกแแ แแแ แก, PHP แแแแฃแจแแแแแแก แกแแ แแแ แก แแ แแแแแชแแแแ แแแแแก. แแแกแขแแแแชแแ, แ แแแแแแช แแฎแแ แก แฃแญแแ แก แแ แแแแ แแแ แขแฃแแแฃแ แฐแแกแขแก แแ แกแแ แแแกแก, แแแแแแแแก แแแขแแแชแแฃแ แ แแแแแ. แแฃ แแแแแแ แแแแฌแแ แแ แ แแแแแแ, แ แแช แแ แกแขแแขแแแแจแ แแ แแ แแก, แแแฌแแ แแ แแแแแแขแแ แแแจแ.
แแแแฎแแแแแแ
- แแแแขแแแแแ แแก แกแแ แแแ แ (
LXC แแLXD ), แแแ แขแฃแแแฃแ แ แแแแฅแแแ, แแ แฉแแแฃแแแแ แแแ แ แแแแแก แกแแ แแแ แ แแแแแแฃแ 512 แแ แแแแ แแขแแฃแแ แแแฎแกแแแ แแแแ แแ แแแแแกแขแแแแ แแแฃแแ Ubuntu 18.04 แแ แฃแคแ แ แแฎแแแ. - แแแขแแ แแแขแแ แฎแแแแแกแแฌแแแแแ แแแ แขแแแ 80 แแ 443
- แแแแแแแก แกแแฎแแแ แแแแแแจแแ แแแฃแแแ แแ แกแแ แแแ แแก แกแแฏแแ แ ip แแแกแแแแ แแแแ
- Root แฌแแแแแ (sudo).
แแ แฅแแขแแฅแขแฃแ แแก แแแแแฎแแแแ
แแ แฅแแขแแฅแขแฃแ แ แแแแแแ, แ แแช แแฆแฌแแ แแแแ
แแแแแแ แแ แแแชแแแแแ
- แแแแคแแแฃแ แแชแแแก แแ แแแแแ แแ แซแแแแแ แกแแ แแแขแจแ แจแแคแฃแแฃแแแ แแ แจแแแแฎแแแแแจแ, แแฃ แแแ แแแแแ แฃแซแแฃแ แแ: แกแแ แแแขแแก แแแจแแแแ แจแแแซแแแแ แ แแแแแแฏแแ แแ, แฃแแแ แแ แกแแแฃแแ แแแ แแแแขแ แแแแก แจแแชแแแแก แ แแกแแแก แแแ แแจแ.
- แกแแ แแแขแ แชแแแแแแก แแแแแแกแขแแแแ แแก แแ แแแ แแแฃแแ แฃแแ แฃแแแแแงแแคแ แกแแชแแแแแแแแ, แแกแ แ แแ แแฅแแแ แจแแแแซแแแแ แแแแแแงแแแแ แกแแกแขแแแแก แแแแแฎแแแแแแ แแ แแ แแ แซแแแแแแ (
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-แจแ
แแแ แแ แแแแกแ
แกแแ แแแขแแก แแแแ
# 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-แแก แแแชแแแแ, แ แแแแแ แแแก แแฅแแก แแแขแ แกแแแแแ แแฅแขแแแแแ แแ แแกแแแ แกแแแแ แแฃแแแ
แกแแ แแแขแ แฅแแแแก แแฎแแ แแแแแชแแแแ แแแแแก แแ แฅแแแแก แกแแ แแแคแแแแขแแแก 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 แแ แแแ แแแแก แแแกแขแแแแชแแ
แแ แแขแแแแ แกแแ แแแขแ แแงแแแแแก แแ แแแ แแแแก
แกแแ แแแขแแก แแแแ
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-แแก แกแแ แแแคแแแแขแแแแกแแแแก แแ แแแแ แแแขแแแแขแฃแ แ แแแแแฎแแแแ
- แแฉแแ แแแก 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-แแกแแแแก, แ แแแแแแช แแฅแแแแแแแก แจแแกแแคแแ แแกแแแแแชแแ viaAppArmor (Ubuntu-แแ)- Postfix แแ msmtp, แ แแแ WordPress-แแ แจแแซแแแก แคแแกแขแแก แแแแแแแแ
- แจแแแแแฌแแแ แแฅแแแแ แกแแแขแ, แ แแแ แแแแแแ, แ แแแแแ แขแ แแคแแแก แจแแฃแซแแแ แแแก แแแฃแแแแแแแแก
แกแแแขแแก แแแแแ แฃแคแ แ แฃแแแแแกแ แแฃแจแแแแแกแแแแก, แฉแแแ แแแ แฉแแแ แแแแแฎแแแแแก
NB แซแแแแแ แแแขแแแ แแฃแแ แกแแแขแแก แแฎแแ แแแญแแ แแกแแแแก แจแแแแซแแแแ แแแฃแแแแจแแ แแแ แแฅแกแแแ แขแแแก
Southbridge . แฉแแแ แฃแแ แฃแแแแแแงแแคแ แแฅแแแแ แแแแกแแแขแแก แแ แกแแ แแแกแแก แกแฌแ แแค แแ แกแแแแแแ แแฃแจแแแแแก แแแแแกแแแแ แ แแแขแแแ แแแแก แแแ แแแแแจแ.
แฌแงแแ แ: www.habr.com