āĻāĻ āĻ¨āĻŋāĻŦāĻ¨ā§āĻ§ā§, āĻāĻŽāĻŋ āĻāĻĒāĻ¨āĻžāĻ° āĻ¸āĻžāĻĨā§ āĻĄāĻāĻžāĻ°ā§ āĻāĻ˛āĻŽāĻžāĻ¨ āĻāĻĒāĻ¨āĻžāĻ° āĻāĻ¯āĻŧā§āĻŦ āĻ ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻā§āĻļāĻ¨ā§āĻ° āĻāĻ¨ā§āĻ¯ āĻāĻāĻāĻŋ SSL āĻļāĻāĻ¸āĻžāĻĒāĻ¤ā§āĻ° āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻžāĻ° āĻāĻāĻāĻŋ āĻĒāĻĻā§āĻ§āĻ¤āĻŋ āĻāĻžāĻ āĻāĻ°āĻ¤ā§ āĻāĻžāĻ, āĻāĻžāĻ°āĻŖ... āĻāĻŽāĻŋ āĻāĻ¨ā§āĻāĻžāĻ°āĻ¨ā§āĻā§āĻ° āĻ°āĻžāĻļāĻŋāĻ¯āĻŧāĻžāĻ¨ āĻāĻžāĻˇāĻžāĻ° āĻ āĻāĻļā§ āĻāĻŽāĻ¨ āĻāĻāĻāĻŋ āĻ¸āĻŽāĻžāĻ§āĻžāĻ¨ āĻā§āĻāĻā§ āĻĒāĻžāĻāĻ¨āĻŋāĨ¤
āĻāĻžāĻāĻž āĻ
āĻ§ā§āĻ¨ā§ āĻāĻ°ā§ āĻŦāĻŋāĻ¸ā§āĻ¤āĻžāĻ°āĻŋāĻ¤.
āĻāĻŽāĻžāĻĻā§āĻ° āĻāĻžāĻā§ āĻĄāĻāĻžāĻ° v.17.05, āĻĄāĻāĻžāĻ°-āĻāĻŽā§āĻĒā§āĻ v.1.21, āĻāĻŦā§āĻ¨ā§āĻā§ āĻ¸āĻžāĻ°ā§āĻāĻžāĻ° 18 āĻāĻŦāĻ āĻŦāĻŋāĻļā§āĻĻā§āĻ§ Let'sEncrypt āĻāĻ° āĻāĻāĻāĻŋ āĻĒāĻŋāĻ¨ā§āĻ āĻāĻŋāĻ˛āĨ¤ āĻāĻāĻŋ āĻāĻŽāĻ¨ āĻ¨āĻ¯āĻŧ āĻ¯ā§ āĻĄāĻāĻžāĻ°ā§ āĻāĻ¤ā§āĻĒāĻžāĻĻāĻ¨ āĻ¸ā§āĻĨāĻžāĻĒāĻ¨ āĻāĻ°āĻž āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨āĨ¤ āĻāĻŋāĻ¨ā§āĻ¤ā§ āĻāĻāĻŦāĻžāĻ° āĻāĻĒāĻ¨āĻŋ āĻĄāĻāĻžāĻ° āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻž āĻļā§āĻ°ā§ āĻāĻ°āĻ˛ā§, āĻāĻāĻŋ āĻŦāĻ¨ā§āĻ§ āĻāĻ°āĻž āĻāĻ āĻŋāĻ¨ āĻšāĻ¯āĻŧā§ āĻĒāĻĄāĻŧā§āĨ¤
āĻ¸ā§āĻ¤āĻ°āĻžāĻ, āĻļā§āĻ°ā§ āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯, āĻāĻŽāĻŋ āĻ¸ā§āĻā§āĻ¯āĻžāĻ¨ā§āĻĄāĻžāĻ°ā§āĻĄ āĻ¸ā§āĻāĻŋāĻāĻ¸ āĻĻā§āĻŦ - āĻ¯āĻž āĻāĻŽāĻžāĻĻā§āĻ° āĻĄā§āĻ āĻĒāĻ°ā§āĻ¯āĻžāĻ¯āĻŧā§ āĻāĻŋāĻ˛, āĻ āĻ°ā§āĻĨāĻžā§ āĻĒā§āĻ°ā§āĻ 443 āĻāĻŦāĻ āĻ¸āĻžāĻ§āĻžāĻ°āĻŖāĻāĻžāĻŦā§ SSL āĻāĻžāĻĄāĻŧāĻž:
Docker-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;
}
āĻĒāĻ°āĻŦāĻ°ā§āĻ¤ā§, āĻāĻŽāĻžāĻĻā§āĻ° āĻāĻ¸āĻ˛ā§ SSL āĻŦāĻžāĻ¸ā§āĻ¤āĻŦāĻžāĻ¯āĻŧāĻ¨ āĻāĻ°āĻ¤ā§ āĻšāĻŦā§āĨ¤ āĻ¸āĻ¤ā§āĻ¯āĻŋ āĻŦāĻ˛āĻ¤ā§, āĻāĻŽāĻŋ āĻāĻŽ āĻā§āĻ¨ āĻ āĻ§ā§āĻ¯āĻ¯āĻŧāĻ¨ āĻāĻ°āĻ¤ā§ āĻĒā§āĻ°āĻžāĻ¯āĻŧ 2 āĻāĻ¨ā§āĻāĻž āĻŦā§āĻ¯āĻ¯āĻŧ āĻāĻ°ā§āĻāĻŋāĨ¤ āĻ¸ā§āĻāĻžāĻ¨ā§ āĻĻā§āĻāĻ¯āĻŧāĻž āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻŦāĻŋāĻāĻ˛ā§āĻĒ āĻāĻāĻ°ā§āĻˇāĻŖā§āĻ¯āĻŧāĨ¤ āĻāĻŋāĻ¨ā§āĻ¤ā§ āĻĒā§āĻ°āĻāĻ˛ā§āĻĒā§āĻ° āĻŦāĻ°ā§āĻ¤āĻŽāĻžāĻ¨ āĻĒāĻ°ā§āĻ¯āĻžāĻ¯āĻŧā§, āĻāĻŽāĻžāĻĻā§āĻ° (āĻŦā§āĻ¯āĻŦāĻ¸āĻžāĻ¯āĻŧā§āĻ°) āĻĻā§āĻ°ā§āĻ¤ āĻāĻŦāĻ āĻ¨āĻŋāĻ°ā§āĻāĻ°āĻ¯ā§āĻā§āĻ¯āĻāĻžāĻŦā§ āĻ¸ā§āĻā§āĻ°ā§ āĻāĻ°āĻž āĻĻāĻ°āĻāĻžāĻ° SSL āĻāĻ¸ā§āĻ¨ āĻāĻ¨āĻāĻžāĻāĻĒā§āĻ āĻāĻ°āĻŋ Đē nginx āĻ§āĻžāĻ°āĻ āĻāĻŦāĻ āĻāĻ° āĻāĻŋāĻā§āĻ āĻ¨āĻžāĨ¤
āĻĒā§āĻ°āĻĨāĻŽāĻ¤, āĻāĻŽāĻ°āĻž āĻāĻāĻŋ āĻ¸āĻžāĻ°ā§āĻāĻžāĻ°ā§ āĻāĻ¨āĻ¸ā§āĻāĻ˛ āĻāĻ°ā§āĻāĻŋ certbot
sudo apt-get install certbot
āĻāĻ°āĻĒāĻ°ā§, āĻāĻŽāĻ°āĻž āĻāĻŽāĻžāĻĻā§āĻ° āĻĄā§āĻŽā§āĻ¨ā§āĻ° āĻāĻ¨ā§āĻ¯ āĻāĻ¯āĻŧāĻžāĻāĻ˛ā§āĻĄāĻāĻžāĻ°ā§āĻĄ āĻļāĻāĻ¸āĻžāĻĒāĻ¤ā§āĻ° āĻ¤ā§āĻ°āĻŋ āĻāĻ°ā§āĻāĻŋ
sudo certbot certonly -d stomup.ru -d *.stomup.ru --manual --preferred-challenges dns
āĻāĻžāĻ°ā§āĻ¯āĻāĻ° āĻāĻ°āĻžāĻ° āĻĒāĻ°ā§, āĻ¸āĻžāĻ°ā§āĻāĻŦāĻ āĻāĻŽāĻžāĻĻā§āĻ° 2 āĻāĻŋ āĻāĻŋāĻāĻā§āĻ¸āĻāĻŋ āĻ°ā§āĻāĻ°ā§āĻĄ āĻ¸āĻ°āĻŦāĻ°āĻžāĻš āĻāĻ°āĻŦā§ āĻ¯āĻž DNS āĻ¸ā§āĻāĻŋāĻāĻ¸ā§ āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻ āĻāĻ°āĻž āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨āĨ¤
_acme-challenge.stomup.ru TXT {ŅĐžŅĐĐģŅŅĐĐžŅĐžŅŅĐšĐĐ°ĐŧĐŅĐ´Đ°ĐģCertBot}
āĻāĻŦāĻ āĻāĻ¨ā§āĻāĻžāĻ° āĻāĻžāĻĒā§āĻ¨āĨ¤
āĻāĻ° āĻĒāĻ°ā§, āĻ¸āĻžāĻ°ā§āĻāĻŦāĻ āĻĄāĻŋāĻāĻ¨āĻāĻ¸-āĻ āĻāĻ āĻ°ā§āĻāĻ°ā§āĻĄāĻā§āĻ˛āĻŋāĻ° āĻāĻĒāĻ¸ā§āĻĨāĻŋāĻ¤āĻŋ āĻĒāĻ°ā§āĻā§āĻˇāĻž āĻāĻ°āĻŦā§ āĻāĻŦāĻ āĻāĻĒāĻ¨āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻļāĻāĻ¸āĻžāĻĒāĻ¤ā§āĻ° āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻŦā§āĨ¤
āĻ¯āĻĻāĻŋ āĻāĻĒāĻ¨āĻŋ āĻāĻāĻāĻŋ āĻļāĻāĻ¸āĻžāĻĒāĻ¤ā§āĻ° āĻ¯ā§āĻ āĻāĻ°ā§āĻā§āĻ¨ āĻāĻŋāĻ¨ā§āĻ¤ā§ certbot āĻāĻāĻŋ āĻā§āĻāĻā§ āĻĒāĻžāĻāĻ¯āĻŧāĻž āĻ¯āĻžāĻ¯āĻŧāĻ¨āĻŋ - 5-10 āĻŽāĻŋāĻ¨āĻŋāĻā§āĻ° āĻĒāĻ°ā§ āĻāĻŽāĻžāĻ¨ā§āĻĄāĻāĻŋ āĻĒā§āĻ¨āĻ°āĻžāĻ¯āĻŧ āĻāĻžāĻ˛ā§ āĻāĻ°āĻžāĻ° āĻā§āĻˇā§āĻāĻž āĻāĻ°ā§āĻ¨.
āĻ āĻŋāĻ āĻāĻā§, āĻāĻāĻžāĻ¨ā§ āĻāĻŽāĻ°āĻž 90 āĻĻāĻŋāĻ¨ā§āĻ° āĻāĻ¨ā§āĻ¯ āĻāĻāĻāĻŋ Let'sEncrypt āĻļāĻāĻ¸āĻžāĻĒāĻ¤ā§āĻ°ā§āĻ° āĻāĻ°ā§āĻŦāĻŋāĻ¤ āĻŽāĻžāĻ˛āĻŋāĻ, āĻāĻŋāĻ¨ā§āĻ¤ā§ āĻāĻāĻ¨ āĻāĻŽāĻžāĻĻā§āĻ° āĻāĻāĻŋ āĻĄāĻāĻžāĻ°ā§ āĻāĻĒāĻ˛ā§āĻĄ āĻāĻ°āĻ¤ā§ āĻšāĻŦā§āĨ¤
āĻāĻāĻŋ āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯, āĻ¸āĻŦāĻā§āĻ¯āĻŧā§ āĻ¤ā§āĻā§āĻ āĻāĻĒāĻžāĻ¯āĻŧā§, 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;
}
}
āĻāĻ¸āĻ˛ā§, āĻāĻ āĻŽā§āĻ¯āĻžāĻ¨āĻŋāĻĒā§āĻ˛ā§āĻļāĻ¨ā§āĻ° āĻĒāĻ°ā§, āĻāĻŽāĻ°āĻž āĻĄāĻāĻžāĻ°-āĻāĻŽā§āĻĒā§āĻ āĻ¸āĻš āĻĄāĻŋāĻ°ā§āĻā§āĻāĻ°āĻŋāĻ¤ā§ āĻ¯āĻžāĻ, āĻĄāĻāĻžāĻ°-āĻāĻŽā§āĻĒā§āĻ āĻāĻĒ -āĻĄāĻŋ āĻ˛āĻŋāĻāĻŋāĨ¤ āĻāĻŦāĻ āĻāĻŽāĻ°āĻž SSL āĻāĻ° āĻāĻžāĻ°ā§āĻ¯āĻāĻžāĻ°āĻŋāĻ¤āĻž āĻĒāĻ°ā§āĻā§āĻˇāĻž āĻāĻ°āĻŋāĨ¤ āĻ¸āĻŦāĻāĻŋāĻā§ āĻŦāĻ¨ā§āĻ§ āĻāĻ°āĻž āĻāĻāĻŋāĻ¤.
āĻĒā§āĻ°āĻ§āĻžāĻ¨ āĻāĻŋāĻ¨āĻŋāĻ¸āĻāĻŋ āĻā§āĻ˛ā§ āĻ¯āĻžāĻāĻ¯āĻŧāĻž āĻāĻāĻŋāĻ¤ āĻ¨āĻ¯āĻŧ āĻ¯ā§ Let'sEnctypt āĻļāĻāĻ¸āĻžāĻĒāĻ¤ā§āĻ°āĻāĻŋ 90 āĻĻāĻŋāĻ¨ā§āĻ° āĻāĻ¨ā§āĻ¯ āĻāĻžāĻ°āĻŋ āĻāĻ°āĻž āĻšāĻ¯āĻŧ āĻāĻŦāĻ āĻāĻĒāĻ¨āĻžāĻā§ āĻāĻŽāĻžāĻ¨ā§āĻĄā§āĻ° āĻŽāĻžāĻ§ā§āĻ¯āĻŽā§ āĻāĻāĻŋ āĻĒā§āĻ¨āĻ°ā§āĻ¨āĻŦā§āĻāĻ°āĻŖ āĻāĻ°āĻ¤ā§ āĻšāĻŦā§ sudo certbot renew
, āĻāĻŦāĻ āĻ¤āĻžāĻ°āĻĒāĻ° āĻāĻŽāĻžāĻ¨ā§āĻĄ āĻĻāĻŋāĻ¯āĻŧā§ āĻĒā§āĻ°āĻāĻ˛ā§āĻĒāĻāĻŋ āĻĒā§āĻ¨āĻ°āĻžāĻ¯āĻŧ āĻāĻžāĻ˛ā§ āĻāĻ°ā§āĻ¨ docker-compose restart
āĻāĻ°ā§āĻāĻāĻŋ āĻŦāĻŋāĻāĻ˛ā§āĻĒ āĻšāĻ˛ āĻāĻ āĻā§āĻ°āĻŽāĻāĻŋ āĻā§āĻ°āĻ¨āĻā§āĻ¯āĻžāĻŦā§ āĻ¯ā§āĻ āĻāĻ°āĻžāĨ¤
āĻāĻŽāĻžāĻ° āĻŽāĻ¤ā§ āĻāĻāĻŋ āĻĄāĻāĻžāĻ° āĻāĻ¯āĻŧā§āĻŦ-āĻ ā§āĻ¯āĻžāĻĒā§āĻ° āĻ¸āĻžāĻĨā§ SSL āĻ¸āĻāĻ¯ā§āĻ āĻāĻ°āĻžāĻ° āĻ¸āĻŦāĻā§āĻ¯āĻŧā§ āĻ¸āĻšāĻ āĻāĻĒāĻžāĻ¯āĻŧāĨ¤
PS āĻ
āĻ¨ā§āĻā§āĻ°āĻš āĻāĻ°ā§ āĻŦāĻŋāĻŦā§āĻāĻ¨āĻž āĻāĻ°ā§āĻ¨ āĻ¯ā§ āĻĒāĻžāĻ ā§āĻ¯āĻāĻŋāĻ¤ā§ āĻāĻĒāĻ¸ā§āĻĨāĻžāĻĒāĻŋāĻ¤ āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻ¸ā§āĻā§āĻ°āĻŋāĻĒā§āĻ āĻā§āĻĄāĻŧāĻžāĻ¨ā§āĻ¤ āĻ¨āĻ¯āĻŧ, āĻĒā§āĻ°āĻāĻ˛ā§āĻĒāĻāĻŋ āĻāĻāĻ¨ āĻāĻā§āĻ° āĻĻā§āĻŦ āĻĒāĻ°ā§āĻ¯āĻžāĻ¯āĻŧā§ āĻ°āĻ¯āĻŧā§āĻā§, āĻ¤āĻžāĻ āĻāĻŽāĻŋ āĻāĻĒāĻ¨āĻžāĻā§ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°āĻā§āĻ˛āĻŋāĻ° āĻ¸āĻŽāĻžāĻ˛ā§āĻāĻ¨āĻž āĻ¨āĻž āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻŦāĻ˛āĻ¤ā§ āĻāĻžāĻ - āĻ¸ā§āĻā§āĻ˛āĻŋ āĻ
āĻ¨ā§āĻāĻŦāĻžāĻ° āĻ¸āĻāĻļā§āĻ§āĻ¨ āĻāĻ°āĻž āĻšāĻŦā§āĨ¤
āĻāĻ¤ā§āĻ¸: www.habr.com