Docker - Создание хоста
Войти

Docker - Создание хоста

Docker - Создание хоста

1. Создание папку проекта

  1. Переходим в папку www c помозью команды:
    1
    go www
  2. Создание папку под проект
    1
    mkdir <site.ru>
  3. Переходим в проект
    1
    cd <site.ru>
  4. Создаем заглушку
    1
    echo "<h1><site.ru></h1>" > index.php
    1
    echo "<? phpinfo();?>" > info.php

2. Создание Nginx конфигурации

  1. По пути ningx/conf.d создаем файл конфигурации site.ru.conf для настройки SSL
    1
    ningx/conf.d/<site.ru>.conf
    со следующим содержимым
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    server {
      server_name <site.ru>; 
      charset UTF-8; 
      root /var/www/<site.ru>;
      index index.php index.html index.htm;
      location / { 
        try_files $uri $uri/ /index.php?$args; 
      } 
    
      location ~ \.php$ {
        fastcgi_pass php:9000;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME /var/www/<site.ru>$fastcgi_script_name;
        set $root_path /var/www/<site.ru>;
        include fastcgi_params;
        fastcgi_send_timeout 300;
        fastcgi_read_timeout 300;
        fastcgi_param DOCUMENT_ROOT /var/www/<site.ru>;
      } 
    }

3. Docker composer

  1. Добавление в контейнер Nginx
    1
    - ../../www/<stie.ru>:/var/www/<site.ru>:ro
  2. Добавление в контейнер Сertbot
    1
    - ../../www/<site.ru>:/var/www/<site.ru>:rw
  3. Добавление контейнер PHP
    1
    - ../../www/<site.ru>:/var/www/<site.ru>:rw

4. Проверка работы

  1. Перезапустим контейнеры
    1
    dcu -d
  2. Проверим запустился ли сайт
    1
    curl <site.ru>

5. Установка ssl

  1. Получаем ssl сертификат
    1
    docker compose run --rm  certbot certonly --webroot --webroot-path /var/www/<site.ru>/ -d <site.ru>
  2. Обновляем конфигурацию Nginx
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    server {
      listen 80;
      listen [::]:80;
      
      server_name <site.ru> www.<site.ru>;
      server_tokens off;
    
      location /.well-known/acme-challenge/ {
        root /var/www/<site.ru>;
      }
    
      location / {
        return 301 https://$host$request_uri;
      }
    }
    
    server {
      listen 443 ssl;
      server_name <site.ru> www.<site.ru>; 
      
      ssl_certificate /etc/nginx/ssl/live/<site.ru>/fullchain.pem;
      ssl_certificate_key /etc/nginx/ssl/live/<site.ru>/privkey.pem;
    
      include /etc/nginx/ssl/options-ssl-nginx.conf;
      ssl_dhparam /etc/nginx/ssl/ssl-dhparams.pem;
    
    
      charset UTF-8; 
      client_max_body_size 20m; 
      client_body_buffer_size 128k; 
    
      root /var/www/<site.ru>; 
      index index.php index.html index.htm;
      error_log  /var/log/nginx/<site.ru>/error.log;
      access_log /var/log/nginx/<site.ru>/access.log;
     
      location / { 
        try_files $uri $uri/ /index.php?$args; 
      } 
    
      location ~ \.php$ {
        fastcgi_pass php:9000;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME /var/www/<site.ru>$fastcgi_script_name;
        set $root_path /var/www/<site.ru>;
        include fastcgi_params;
        fastcgi_send_timeout 300;
        fastcgi_read_timeout 300;
        fastcgi_param DOCUMENT_ROOT /var/www/<site.ru>;
      } 
    }
  3. Создадим папку для логов
    1
    mkdir /var/proj/all/logs/nginx/update.go.ams74.ru
  4. Перезапустим контейнеры
    1
    dcu -d
Теги:
php