рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ, рдореИрдВ рдЖрдкрдХреЗ рд╕рд╛рде рдбреЙрдХрд░ рдкрд░ рдЪрд▓ рд░рд╣реЗ рдЖрдкрдХреЗ рд╡реЗрдм рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд▓рд┐рдП рдПрд╕рдПрд╕рдПрд▓ рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдмрдирд╛рдиреЗ рдХреА рдПрдХ рд╡рд┐рдзрд┐ рд╕рд╛рдЭрд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ, рдХреНрдпреЛрдВрдХрд┐... рдореБрдЭреЗ рдЗрдВрдЯрд░рдиреЗрдЯ рдХреЗ рд░реВрд╕реА рднрд╛рд╖рд╛ рд╡рд╛рд▓реЗ рд╣рд┐рд╕реНрд╕реЗ рдореЗрдВ рдРрд╕рд╛ рдХреЛрдИ рд╕рдорд╛рдзрд╛рди рдирд╣реАрдВ рдорд┐рд▓рд╛ред
рдХрдЯ рдХреЗ рдЕрдВрддрд░реНрдЧрдд рдЕрдзрд┐рдХ рд╡рд┐рд╡рд░рдгред
рд╣рдорд╛рд░реЗ рдкрд╛рд╕ docker v.17.05, docker-compose v.1.21, Ubuntu Server 18 рдФрд░ рдПрдХ рдкрд┐рдВрдЯ рд╢реБрджреНрдз Let'sEncrypt рдерд╛ред рдРрд╕рд╛ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдбреЙрдХрд░ рдкрд░ рдЙрддреНрдкрд╛рджрди рддреИрдирд╛рдд рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИред рд▓реЗрдХрд┐рди рдПрдХ рдмрд╛рд░ рдЬрдм рдЖрдк рдбреЙрдХрд░ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рд╢реБрд░реВ рдХрд░ рджреЗрддреЗ рд╣реИрдВ, рддреЛ рдЗрд╕реЗ рд░реЛрдХрдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред
рддреЛ, рдЖрд░рдВрдн рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВ рдорд╛рдирдХ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рджреВрдВрдЧрд╛ - рдЬреЛ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд╡рд┐рдХрд╛рд╕ рдЪрд░рдг рдореЗрдВ рдереА, рдпрд╛рдиреАред рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░ рдкреЛрд░реНрдЯ 443 рдФрд░ рдПрд╕рдПрд╕рдПрд▓ рдХреЗ рдмрд┐рдирд╛:
рдбреЛрдХрд░-compose.yml
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;
}
рдЕрдЧрд▓рд╛, рд╣рдореЗрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрд╕рдПрд╕рдПрд▓ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рд╕рдЪ рдХрд╣реВрдБ рддреЛ, рдореИрдВрдиреЗ рдХреЙрдо рдЬрд╝реЛрди рдХрд╛ рдЕрдзреНрдпрдпрди рдХрд░рдиреЗ рдореЗрдВ рд▓рдЧрднрдЧ 2 рдШрдВрдЯреЗ рдмрд┐рддрд╛рдПред рд╡рд╣рд╛рдВ рджрд┐рдП рдЧрдП рд╕рднреА рд╡рд┐рдХрд▓реНрдк рджрд┐рд▓рдЪрд╕реНрдк рд╣реИрдВред рд▓реЗрдХрд┐рди рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рдореМрдЬреВрджрд╛ рдЪрд░рдг рдореЗрдВ, рд╣рдореЗрдВ (рд╡реНрдпрд╡рд╕рд╛рдп рдХреЛ) рдЬрд▓реНрджреА рдФрд░ рд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рддрд░реАрдХреЗ рд╕реЗ рдХрд╛рдо рдХрд░рдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИ рдПрд╕рдПрд╕рдПрд▓ рдЖрдЗрдП рдПрдирдХреНрд░рд┐рдкреНрдЯ рдХрд░реЗрдВ ╨║ nginx рдХрдВрдЯреЗрдирд░ рдФрд░ рдХреБрдЫ рдирд╣реАрдВ.
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╣рдордиреЗ рдЗрд╕реЗ рд╕рд░реНрд╡рд░ рдкрд░ рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд┐рдпрд╛ certbot
sudo apt-get install certbot
рдЗрд╕рдХреЗ рдмрд╛рдж, рд╣рдордиреЗ рдЕрдкрдиреЗ рдбреЛрдореЗрди рдХреЗ рд▓рд┐рдП рд╡рд╛рдЗрд▓реНрдбрдХрд╛рд░реНрдб рдкреНрд░рдорд╛рдгрдкрддреНрд░ рддреИрдпрд╛рд░ рдХрд┐рдпрд╛
sudo certbot certonly -d stomup.ru -d *.stomup.ru --manual --preferred-challenges dns
рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рдмрд╛рдж, рд╕рд░реНрдЯрд┐рдмреЛрдЯ рд╣рдореЗрдВ 2 TXT рд░рд┐рдХреЙрд░реНрдб рдкреНрд░рджрд╛рди рдХрд░реЗрдЧрд╛ рдЬрд┐рдиреНрд╣реЗрдВ DNS рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
_acme-challenge.stomup.ru TXT {╤В╨╛╤В╨Ъ╨╗╤О╤З╨Ъ╨╛╤В╨╛╤А╤Л╨╣╨Т╨░╨╝╨Т╤Л╨┤╨░╨╗CertBot}
рдФрд░ рдПрдВрдЯрд░ рджрдмрд╛рдПрдВ.
рдЗрд╕рдХреЗ рдмрд╛рдж, рд╕рд░реНрдЯрд┐рдлрд┐рдХреЗрдЯ рдбреАрдПрдирдПрд╕ рдореЗрдВ рдЗрди рд░рд┐рдХреЙрд░реНрдбреНрд╕ рдХреА рдореМрдЬреВрджрдЧреА рдХреА рдЬрд╛рдВрдЪ рдХрд░реЗрдЧрд╛ рдФрд░ рдЖрдкрдХреЗ рд▓рд┐рдП рд╕рд░реНрдЯрд┐рдлрд┐рдХреЗрдЯ рдмрдирд╛рдПрдЧрд╛ред
рдпрджрд┐ рдЖрдкрдиреЗ рдХреЛрдИ рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдЬреЛрдбрд╝рд╛ рд╣реИ рд▓реЗрдХрд┐рди certbot рдпрд╣ рдирд╣реАрдВ рдорд┐рд▓рд╛ - 5-10 рдорд┐рдирдЯ рдХреЗ рдмрд╛рдж рдХрдорд╛рдВрдб рдХреЛ рдкреБрдирдГ рдЖрд░рдВрдн рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ.
рдЦреИрд░, рдпрд╣рд╛рдВ рд╣рдо 90 рджрд┐рдиреЛрдВ рдХреЗ рд▓рд┐рдП Let'sEncrypt рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдХреЗ рдЧреМрд░рд╡рд╛рдиреНрд╡рд┐рдд рдорд╛рд▓рд┐рдХ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЕрдм рд╣рдореЗрдВ рдЗрд╕реЗ рдбреЙрдХрд░ рдкрд░ рдЕрдкрд▓реЛрдб рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред
рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╕рдмрд╕реЗ рд╕рд╛рдорд╛рдиреНрдп рддрд░реАрдХреЗ рд╕реЗ, docker-compose.yml рдореЗрдВ, nginx рдЕрдиреБрднрд╛рдЧ рдореЗрдВ, рд╣рдо рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛рдУрдВ рдХреЛ рд▓рд┐рдВрдХ рдХрд░рддреЗ рд╣реИрдВред
рдПрд╕рдПрд╕рдПрд▓ рдХреЗ рд╕рд╛рде рдЙрджрд╛рд╣рд░рдг 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 рдмрдВрджрд░рдЧрд╛рд╣ рдФрд░ рдПрд╕рдПрд╕рдПрд▓ рдЖрдо рддреМрд░ рдкрд░:
рдПрд╕рдПрд╕рдПрд▓ рдХреЗ рд╕рд╛рде рдЙрджрд╛рд╣рд░рдг 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;
}
}
рджрд░рдЕрд╕рд▓, рдЗрди рдЬреЛрдбрд╝рддреЛрдбрд╝ рдХреЗ рдмрд╛рдж, рд╣рдо Docker-compose рд╡рд╛рд▓реА рдбрд╛рдпрд░реЗрдХреНрдЯрд░реА рдореЗрдВ рдЬрд╛рддреЗ рд╣реИрдВ, docker-compose up -d рд▓рд┐рдЦрддреЗ рд╣реИрдВред рдФрд░ рд╣рдо рдПрд╕рдПрд╕рдПрд▓ рдХреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреА рдЬрд╛рдВрдЪ рдХрд░рддреЗ рд╣реИрдВред рд╕рдм рдХреБрдЫ рдЙрддрд╛рд░ рджреЗрдирд╛ рдЪрд╛рд╣рд┐рдП.
рдореБрдЦреНрдп рдмрд╛рдд рдпрд╣ рдирд╣реАрдВ рднреВрд▓рдирд╛ рд╣реИ рдХрд┐ Let'sEnctypt рдкреНрд░рдорд╛рдгрдкрддреНрд░ 90 рджрд┐рдиреЛрдВ рдХреЗ рд▓рд┐рдП рдЬрд╛рд░реА рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдЖрдкрдХреЛ рдЗрд╕реЗ рдХрдорд╛рдВрдб рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдирд╡реАрдиреАрдХреГрдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛ sudo certbot renew
, рдФрд░ рдлрд┐рд░ рдХрдорд╛рдВрдб рдХреЗ рд╕рд╛рде рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЛ рдкреБрдирд░рд╛рд░рдВрдн рдХрд░реЗрдВ docker-compose restart
рджреВрд╕рд░рд╛ рд╡рд┐рдХрд▓реНрдк рдЗрд╕ рдХреНрд░рдо рдХреЛ рдХреНрд░реЛрдВрдЯреИрдм рдореЗрдВ рдЬреЛрдбрд╝рдирд╛ рд╣реИред
рдореЗрд░реА рд░рд╛рдп рдореЗрдВ рдПрд╕рдПрд╕рдПрд▓ рдХреЛ рдбреЙрдХрд░ рд╡реЗрдм-рдРрдк рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░рдиреЗ рдХрд╛ рдпрд╣ рд╕рдмрд╕реЗ рдЖрд╕рд╛рди рддрд░реАрдХрд╛ рд╣реИред
рдкреБрдирд╢реНрдЪ рдХреГрдкрдпрд╛ рдзреНрдпрд╛рди рд░рдЦреЗрдВ рдХрд┐ рдкрд╛рда рдореЗрдВ рдкреНрд░рд╕реНрддреБрдд рд╕рднреА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЕрдВрддрд┐рдо рдирд╣реАрдВ рд╣реИрдВ, рдкрд░рд┐рдпреЛрдЬрдирд╛ рдЕрдм рдЧрд╣рди рд╡рд┐рдХрд╛рд╕ рдЪрд░рдг рдореЗрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореИрдВ рдЖрдкрд╕реЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреА рдЖрд▓реЛрдЪрдирд╛ рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ - рдЙрдиреНрд╣реЗрдВ рдХрдИ рдмрд╛рд░ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
рд╕реНрд░реЛрдд: www.habr.com