рдбреЙрдХрд░ рд╡реЗрдм-рдРрдк рдХреЗ рд▓рд┐рдП рдПрд╕рдПрд╕рдПрд▓ рдкреНрд░рдорд╛рдгрдкрддреНрд░

рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ, рдореИрдВ рдЖрдкрдХреЗ рд╕рд╛рде рдбреЙрдХрд░ рдкрд░ рдЪрд▓ рд░рд╣реЗ рдЖрдкрдХреЗ рд╡реЗрдм рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд▓рд┐рдП рдПрд╕рдПрд╕рдПрд▓ рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдмрдирд╛рдиреЗ рдХреА рдПрдХ рд╡рд┐рдзрд┐ рд╕рд╛рдЭрд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ, рдХреНрдпреЛрдВрдХрд┐... рдореБрдЭреЗ рдЗрдВрдЯрд░рдиреЗрдЯ рдХреЗ рд░реВрд╕реА рднрд╛рд╖рд╛ рд╡рд╛рд▓реЗ рд╣рд┐рд╕реНрд╕реЗ рдореЗрдВ рдРрд╕рд╛ рдХреЛрдИ рд╕рдорд╛рдзрд╛рди рдирд╣реАрдВ рдорд┐рд▓рд╛ред

рдбреЙрдХрд░ рд╡реЗрдм-рдРрдк рдХреЗ рд▓рд┐рдП рдПрд╕рдПрд╕рдПрд▓ рдкреНрд░рдорд╛рдгрдкрддреНрд░

рдХрдЯ рдХреЗ рдЕрдВрддрд░реНрдЧрдд рдЕрдзрд┐рдХ рд╡рд┐рд╡рд░рдгред

рд╣рдорд╛рд░реЗ рдкрд╛рд╕ 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

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдЬреЛрдбрд╝реЗрдВ