เช เชฒเซเชเชฎเชพเช, เชนเซเช เชคเชฎเชพเชฐเซ เชธเชพเชฅเซ เชกเซเชเชฐ เชชเชฐ เชเชพเชฒเชคเซ เชคเชฎเชพเชฐเซ เชตเซเชฌ เชเชชเซเชฒเชฟเชเซเชถเชจ เชฎเชพเชเซ SSL เชชเซเชฐเชฎเชพเชฃเชชเชคเซเชฐ เชฌเชจเชพเชตเชตเชพ เชฎเชพเชเซเชจเซ เชชเชฆเซเชงเชคเชฟ เชถเซเชฐ เชเชฐเชตเชพ เชฎเชพเชเชเซ เชเซเช, เชเชพเชฐเชฃ เชเซ... เชฎเชจเซ เชเชจเซเชเชฐเชจเซเชเชจเชพ เชฐเชถเชฟเชฏเชจ-เชญเชพเชทเชพเชจเชพ เชญเชพเชเชฎเชพเช เชเชตเซ เชเชเซเชฒ เชฎเชณเซเชฏเซ เชจเชฅเซ.
เชเช เชนเซเช เชณ เชตเชงเซ เชตเชฟเชเชคเซ.
เช
เชฎเชพเชฐเซ เชชเชพเชธเซ docker v.17.05, docker-compose v.1.21, Ubuntu Server 18 เช
เชจเซ เชถเซเชฆเซเชง Let'sEncrypt เชจเซ เชชเชฟเชจเซเช เชนเชคเซ. เชเชตเซเช เชจเชฅเซ เชเซ เชกเซเชเชฐ เชชเชฐ เชเชคเซเชชเชพเชฆเชจ เชเชฎเชพเชตเชตเซเช เชเชฐเซเชฐเซ เชเซ. เชชเชฐเชเชคเซ เชเชเชตเชพเชฐ เชคเชฎเซ เชกเซเชเชฐ เชฌเชจเชพเชตเชตเชพเชจเซเช เชถเชฐเซ เชเชฐเซ, เชคเซเชจเซ เชฐเซเชเชตเซเช เชฎเซเชถเซเชเซเชฒ เชฌเชจเซ เชเชพเชฏ เชเซ.
เชคเซเชฅเซ, เชถเชฐเซ เชเชฐเชตเชพ เชฎเชพเชเซ, เชนเซเช เชชเซเชฐเชฎเชพเชฃเชญเซเชค เชธเซเชเชฟเชเชเซเชธ เชเชชเซเชถ - เชเซ เช เชฎเชพเชฐเซ เชชเชพเชธเซ เชกเซเชต เชธเซเชเซเช เชชเชฐ เชนเชคเซ, เชเชเชฒเซ เชเซ. เชธเชพเชฎเชพเชจเซเชฏ เชฐเซเชคเซ เชชเซเชฐเซเช 443 เช เชจเซ SSL เชตเชเชฐ:
เชกเซเชเชฐ-เชเชเชชเซเช.เชเชฎเชเชฎเชเชฒ
version: '2'
services:
php:
build: ./php-fpm
volumes:
- ./StomUp:/var/www/StomUp
- ./php-fpm/php.ini:/usr/local/etc/php/php.ini
depends_on:
- mysql
container_name: "StomPHP"
web:
image: nginx:latest
ports:
- "80:80"
- "443:443"
volumes:
- ./StomUp:/var/www/StomUp
- ./nginx/main.conf:/etc/nginx/conf.d/default.conf
depends_on:
- php
mysql:
image: mysql:5.7
command: mysqld --sql_mode=""
environment:
MYSQL_ROOT_PASSWORD: xxx
ports:
- "3333:3306"
nginx/main.conf
server {
listen 80;
server_name *.stomup.ru stomup.ru;
root /var/www/StomUp/public;
client_max_body_size 5M;
location / {
# try to serve file directly, fallback to index.php
try_files $uri /index.php$is_args$args;
}
location ~ ^/index.php(/|$) {
#fastcgi_pass unix:/var/run/php7.2-fpm.sock;
fastcgi_pass php:9000;
fastcgi_split_path_info ^(.+.php)(/.*)$;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
fastcgi_param DOCUMENT_ROOT $realpath_root;
fastcgi_buffer_size 128k;
fastcgi_buffers 4 256k;
fastcgi_busy_buffers_size 256k;
internal;
}
location ~ .php$ {
return 404;
}
error_log /var/log/nginx/project_error.log;
access_log /var/log/nginx/project_access.log;
}
เชเชเชณ, เชเชชเชฃเซ เชเชฐเซเชเชฐ SSL เชจเซ เช เชฎเชฒเชฎเชพเช เชฎเซเชเชตเชพเชจเซ เชเชฐเซเชฐ เชเซ. เชธเชพเชเซเช เชเชนเซเช เชคเซ, เชฎเซเช เชเซเชฎ เชเซเชจเชจเซ เช เชญเซเชฏเชพเชธ เชเชฐเชตเชพเชฎเชพเช เชฒเชเชญเช 2 เชเชฒเชพเช เชเชพเชณเซเชฏเชพ. เชคเซเชฏเชพเช เชเชซเชฐ เชเชฐเซเชฒเชพ เชฌเชงเชพ เชตเชฟเชเชฒเซเชชเซ เชฐเชธเชชเซเชฐเชฆ เชเซ. เชชเชฐเชเชคเซ เชชเซเชฐเซเชเซเชเซเชเชจเชพ เชตเชฐเซเชคเชฎเชพเชจ เชคเชฌเชเซเชเซ, เช เชฎเชจเซ (เชตเซเชฏเชตเชธเชพเชฏเชจเซ) เชเชกเชชเชฅเซ เช เชจเซ เชตเชฟเชถเซเชตเชธเชจเซเชฏ เชฐเซเชคเซ เชธเซเชเซเชฐเซ เชเชฐเชตเชพเชจเซ เชเชฐเซเชฐ เชนเชคเซ SSL เชเชพเชฒเซ Enctypt เชเชฐเซเช ะบ nginx เชเชจเซเชเซเชจเชฐ เช เชจเซ เชตเชงเซ เชเชเช เชจเชนเซเช.
เชธเซ เชชเซเชฐเชฅเชฎ, เช
เชฎเซ เชคเซเชจเซ เชธเชฐเซเชตเชฐ เชชเชฐ เชเชจเซเชธเซเชเซเชฒ เชเชฐเซเชฏเซเช เชชเซเชฐเชฎเชพเชฃเชชเชคเซเชฐ
sudo apt-get install certbot
เชเชเชณ, เช เชฎเซ เช เชฎเชพเชฐเชพ เชกเซเชฎเซเชจ เชฎเชพเชเซ เชตเชพเชเชฒเซเชกเชเชพเชฐเซเชก เชชเซเชฐเชฎเชพเชฃเชชเชคเซเชฐเซ เชเชจเชฐเซเช เชเชฐเซเชฏเชพ
sudo certbot certonly -d stomup.ru -d *.stomup.ru --manual --preferred-challenges dns
เชเชเซเชเซเชเซเชฏเซเชถเชจ เชชเชเซ, certbot เช
เชฎเชจเซ 2 TXT เชฐเซเชเซเชฐเซเชกเซเชธ เชชเซเชฐเชฆเชพเชจ เชเชฐเชถเซ เชเซเชจเซ DNS เชธเซเชเชฟเชเชเซเชธเชฎเชพเช เชเชฒเซเชฒเซเชเชฟเชค เชเชฐเชตเชพเชจเซ เชเชฐเซเชฐ เชเซ.
_acme-challenge.stomup.ru TXT {ัะพัะะปััะะพัะพััะนะะฐะผะัะดะฐะปCertBot}
เช
เชจเซ เชเชจเซเชเชฐ เชฆเชฌเชพเชตเซ.
เช เชชเชเซ, certbot DNS เชฎเชพเช เช เชฐเซเชเซเชฐเซเชกเซเชธเชจเซ เชนเชพเชเชฐเซ เชฎเชพเชเซ เชคเชชเชพเชธ เชเชฐเชถเซ เช
เชจเซ เชคเชฎเชพเชฐเชพ เชฎเชพเชเซ เชชเซเชฐเชฎเชพเชฃเชชเชคเซเชฐเซ เชฌเชจเชพเชตเชถเซ.
เชเซ เชคเชฎเซ เชชเซเชฐเชฎเชพเชฃเชชเชคเซเชฐ เชเชฎเซเชฐเซเชฏเซเช เชนเซเชฏ เชชเชฐเชเชคเซ เชชเซเชฐเชฎเชพเชฃเชชเชคเซเชฐ เชคเซ เชฎเชณเซเชฏเซเช เชจเชฅเซ - 5-10 เชฎเชฟเชจเชฟเช เชชเชเซ เชเชฆเซเชถเชจเซ เชซเชฐเซเชฅเซ เชชเซเชฐเชพเชฐเชเชญ เชเชฐเชตเชพเชจเซ เชชเซเชฐเชฏเชพเชธ เชเชฐเซ.
เช เซเช เชเซ, เช เชนเซเช เช เชฎเซ 90 เชฆเชฟเชตเชธ เชฎเชพเชเซ Let'sEncrypt เชชเซเชฐเชฎเชพเชฃเชชเชคเซเชฐเชจเชพ เชเซเชฐเชตเชชเซเชฐเซเชฃ เชฎเชพเชฒเชฟเช เชเซเช, เชชเชฐเชเชคเซ เชนเชตเซ เช เชฎเชพเชฐเซ เชคเซเชจเซ Docker เชชเชฐ เช เชชเชฒเซเชก เชเชฐเชตเชพเชจเซ เชเชฐเซเชฐ เชเซ.
เช เชเชฐเชตเชพ เชฎเชพเชเซ, เชธเซเชฅเซ เชคเซเชเซเช เชฐเซเชคเซ, docker-compose.yml เชฎเชพเช, nginx เชตเชฟเชญเชพเชเชฎเชพเช, เช เชฎเซ เชกเชฟเชฐเซเชเซเชเชฐเซเช เชฒเชฟเชเช เชเชฐเซเช เชเซเช.
SSL เชธเชพเชฅเซ docker-compose.ymlเชจเซเช เชเชฆเชพเชนเชฐเชฃ
version: '2'
services:
php:
build: ./php-fpm
volumes:
- ./StomUp:/var/www/StomUp
- /etc/letsencrypt/live/stomup.ru/:/etc/letsencrypt/live/stomup.ru/
- ./php-fpm/php.ini:/usr/local/etc/php/php.ini
depends_on:
- mysql
container_name: "StomPHP"
web:
image: nginx:latest
ports:
- "80:80"
- "443:443"
volumes:
- ./StomUp:/var/www/StomUp
- /etc/letsencrypt/:/etc/letsencrypt/
- ./nginx/main.conf:/etc/nginx/conf.d/default.conf
depends_on:
- php
mysql:
image: mysql:5.7
command: mysqld --sql_mode=""
environment:
MYSQL_ROOT_PASSWORD: xxx
ports:
- "3333:3306"
เชฒเชฟเชเช เชเชฐเซเชฒ เชเซ? เชธเชฐเชธ - เชเชพเชฒเซ เชเชพเชฒเซ เชฐเชพเชเซเช:
เชนเชตเซ เชเชชเชฃเซ เชฐเซเชชเชฐเซเชเชพ เชฌเชฆเชฒเชตเชพเชจเซ เชเชฐเซเชฐ เชเซ nginx เชธเชพเชฅเซ เชเชพเชฎ เชเชฐเชตเชพ เชฎเชพเชเซ 443 เชฌเชเชฆเชฐ เช เชจเซ SSL เชธเชพเชฎเชพเชจเซเชฏ เชฐเซเชคเซ:
SSL เชธเชพเชฅเซ main.conf เชฐเซเชชเชฐเซเชเชพเชจเซเช เชเชฆเชพเชนเชฐเชฃ
#
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name *.stomup.ru stomup.ru;
set $base /var/www/StomUp;
root $base/public;
# SSL
ssl_certificate /etc/letsencrypt/live/stomup.ru/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/stomup.ru/privkey.pem;
ssl_trusted_certificate /etc/letsencrypt/live/stomup.ru/chain.pem;
client_max_body_size 5M;
location / {
# try to serve file directly, fallback to index.php
try_files $uri /index.php$is_args$args;
}
location ~ ^/index.php(/|$) {
#fastcgi_pass unix:/var/run/php7.2-fpm.sock;
fastcgi_pass php:9000;
fastcgi_split_path_info ^(.+.php)(/.*)$;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
fastcgi_param DOCUMENT_ROOT $realpath_root;
fastcgi_buffer_size 128k;
fastcgi_buffers 4 256k;
fastcgi_busy_buffers_size 256k;
internal;
}
location ~ .php$ {
return 404;
}
error_log /var/log/nginx/project_error.log;
access_log /var/log/nginx/project_access.log;
}
# HTTP redirect
server {
listen 80;
listen [::]:80;
server_name *.stomup.ru stomup.ru;
location / {
return 301 https://stomup.ru$request_uri;
}
}
เชเชฐเซเชเชฐ, เช เชฎเซเชจเซเชชเซเชฏเซเชฒเซเชถเชจเซเชธ เชชเชเซ, เชเชชเชฃเซ เชกเซเชเชฐ-เชเชเชชเซเช เชธเชพเชฅเซ เชกเชฟเชฐเซเชเซเชเชฐเซ เชชเชฐ เชเชเช เชเซเช, เชกเซเชเชฐ-เชเชเชชเซเช เช เชช -d เชฒเชเซเช เชเซเช. เช เชจเซ เช เชฎเซ SSL เชจเซ เชเชพเชฐเซเชฏเชเซเชทเชฎเชคเชพ เชคเชชเชพเชธเซเช เชเซเช. เชฌเชงเซเช เชเชชเชกเชตเซเช เชเซเชเช.
เชฎเซเชเซเชฏ เชตเชธเซเชคเซ เช เชญเซเชฒเชตเชพเชจเซ เชจเชฅเซ เชเซ Let'sEnctypt เชชเซเชฐเชฎเชพเชฃเชชเชคเซเชฐ 90 เชฆเชฟเชตเชธ เชฎเชพเชเซ เชเชพเชฐเซ เชเชฐเชตเชพเชฎเชพเช เชเชตเซ เชเซ เช
เชจเซ เชคเชฎเชพเชฐเซ เชคเซเชจเซ เชเชฆเซเชถ เชฆเซเชตเชพเชฐเชพ เชจเชตเซเชเชฐเชฃ เชเชฐเชตเชพเชจเซ เชเชฐเซเชฐ เชชเชกเชถเซ. sudo certbot renew
, เช
เชจเซ เชชเชเซ เชเชฆเซเชถ เชธเชพเชฅเซ เชชเซเชฐเซเชเซเชเซเช เชชเซเชจเชเชชเซเชฐเชพเชฐเชเชญ เชเชฐเซ docker-compose restart
เชฌเซเชเซ เชตเชฟเชเชฒเซเชช เชเซเชฐเซเชจเซเชเชพเชฌเชฎเชพเช เช เชเซเชฐเชฎ เชเชฎเซเชฐเชตเชพเชจเซ เชเซ.
เชฎเชพเชฐเชพ เชฎเชคเซ SSL เชจเซ เชกเซเชเชฐ เชตเซเชฌ-เชเชช เชธเชพเชฅเซ เชเซเชกเชตเชพเชจเซ เช เชธเซเชฅเซ เชธเชนเซเชฒเซ เชฐเชธเซเชคเซ เชเซ.
เชชเซเชเชธ เชฎเชนเซเชฐเชฌเชพเชจเซ เชเชฐเซเชจเซ เชงเซเชฏเชพเชจเชฎเชพเช เชฒเซ เชเซ เชเซเชเซเชธเซเชเชฎเชพเช เชชเซเชฐเชธเซเชคเซเชค เชฌเชงเซ เชธเซเชเซเชฐเชฟเชชเซเชเซ เช
เชเชคเชฟเชฎ เชจเชฅเซ, เชชเซเชฐเซเชเซเชเซเช เชนเชตเซ เชตเชฟเชเชพเชธเชจเชพ เชเชเชกเชพ เชคเชฌเชเซเชเชพเชฎเชพเช เชเซ, เชคเซเชฅเซ เชนเซเช เชคเชฎเชจเซ เชฐเซเชชเชฐเซเชเชพเชเชจเซ เชเซเชเชพ เชจ เชเชฐเชตเชพ เชเชนเซเชตเชพ เชฎเชพเชเชเซ เชเซเช - เชคเซเชฎเชพเช เชเชฃเซ เชตเชเชค เชซเซเชฐเชซเชพเชฐ เชเชฐเชตเชพเชฎเชพเช เชเชตเชถเซ.
เชธเซเชฐเซเชธ: www.habr.com