เจฒเฉ€เจจเจ•เจธ 'เจคเฉ‡ เจกเฉŒเจ•เจฐ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจฆเฉ‡ เจนเฉ‹เจ letsencrypt เจธเจฐเจŸเฉ€เจซเจฟเจ•เฉ‡เจŸเจพเจ‚ เจฆเฉ€ เจ†เจŸเฉ‹เจฎเฉˆเจŸเจฟเจ• เจฐเจธเฉ€เจฆ เจจเฉ‚เฉฐ เจธเฉˆเฉฑเจŸ เจ•เจฐเจจเจพ

เจฎเฉˆเจ‚ เจนเจพเจฒ เจนเฉ€ เจตเจฟเฉฑเจš เจตเจฐเจšเฉเจ…เจฒ เจธเจฐเจตเจฐ เจจเฉ‚เฉฐ เจฌเจฆเจฒเจฟเจ† เจนเฉˆ, เจ…เจคเฉ‡ เจธเจญ เจ•เฉเจ เจฆเฉเจฌเจพเจฐเจพ เจ•เฉŒเจ‚เจซเจฟเจ—เจฐ เจ•เจฐเจจเจพ เจชเจฟเจ† เจนเฉˆเฅค เจฎเฉˆเจ‚ เจคเจฐเจœเฉ€เจน เจฆเจฟเฉฐเจฆเจพ เจนเจพเจ‚ เจ•เจฟ เจธเจพเจˆเจŸ https เจฐเจพเจนเฉ€เจ‚ เจชเจนเฉเฉฐเจšเจฏเฉ‹เจ— เจนเฉ‹เจตเฉ‡ เจ…เจคเฉ‡ letsencrypt เจธเจฐเจŸเฉ€เจซเจฟเจ•เฉ‡เจŸ เจชเฉเจฐเจพเจชเจค เจ•เฉ€เจคเฉ‡ เจœเจพเจฃ เจ…เจคเฉ‡ เจธเจตเฉˆเจšเจฒเจฟเจค เจคเฉŒเจฐ 'เจคเฉ‡ เจจเจตเฉ€เจจเฉ€เจ•เจฐเจจ เจ•เฉ€เจคเฉ‡ เจœเจพเจฃเฅค เจ‡เจน เจฆเฉ‹ เจกเฉŒเจ•เจฐ เจšเจฟเฉฑเจคเจฐเจพเจ‚ nginx-proxy เจ…เจคเฉ‡ nginx-proxy-companion เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจ•เฉ‡ เจชเฉเจฐเจพเจชเจค เจ•เฉ€เจคเจพ เจœเจพ เจธเจ•เจฆเจพ เจนเฉˆเฅค

เจ‡เจน เจ‡เฉฑเจ• เจชเฉเจฐเฉŒเจ•เจธเฉ€ เจฆเฉ‡ เจจเจพเจฒ, เจœเฉ‹ เจ•เจฟ เจธเจตเฉˆเจšเจฒเจฟเจค เจคเฉŒเจฐ 'เจคเฉ‡ SSL เจธเจฐเจŸเฉ€เจซเจฟเจ•เฉ‡เจŸ เจชเฉเจฐเจพเจชเจค เจ•เจฐเจฆเจพ เจนเฉˆ, เจกเฉŒเจ•เจฐ 'เจคเฉ‡ เจ‡เฉฑเจ• เจตเฉˆเจฌเจธเจพเจˆเจŸ เจ•เจฟเจตเฉ‡เจ‚ เจธเจฅเจพเจชเจค เจ•เจฐเจจเฉ€ เจนเฉˆ เจ‡เจธ เจฌเจพเจฐเฉ‡ เจ‡เฉฑเจ• เจ—เจพเจˆเจก เจนเฉˆเฅค CentOS 7 เจตเจฐเจšเฉเจ…เจฒ เจธเจฐเจตเจฐ เจตเจฐเจคเจฟเจ† เจœเจพเจ‚เจฆเจพ เจนเฉˆเฅค

เจฎเฉˆเจ‚ เจ‡เจน เจฎเฉฐเจจเจฆเจพ เจนเจพเจ‚ เจ•เจฟ เจธเจฐเจตเจฐ เจชเจนเจฟเจฒเจพเจ‚ เจนเฉ€ เจ–เจฐเฉ€เจฆเจฟเจ† เจ—เจฟเจ† เจนเฉˆ, เจ•เฉŒเจ‚เจซเจฟเจ—เจฐ เจ•เฉ€เจคเจพ เจ—เจฟเจ† เจนเฉˆ, เจ•เฉเฉฐเจœเฉ€ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจ•เฉ‡ เจฒเฉŒเจ—เจ‡เจจ เจ•เฉ€เจคเจพ เจ—เจฟเจ† เจนเฉˆ, เจซเฉ‡เจฒ 2 เจฌเฉˆเจจ เจ‡เฉฐเจธเจŸเจพเจฒ เจ•เฉ€เจคเจพ เจ—เจฟเจ† เจนเฉˆ, เจ†เจฆเจฟเฅค

เจชเจนเจฟเจฒเจพเจ‚ เจคเฉเจนเจพเจจเฉ‚เฉฐ เจกเฉŒเจ•เจฐ เจธเจฅเจพเจชเจค เจ•เจฐเจจ เจฆเฉ€ เจœเจผเจฐเฉ‚เจฐเจค เจนเฉˆ.

  1. เจชเจนเจฟเจฒเจพเจ‚ เจคเฉเจนเจพเจจเฉ‚เฉฐ เจจเจฟเจฐเจญเจฐเจคเจพเจตเจพเจ‚ เจจเฉ‚เฉฐ เจธเจฅเจพเจชเจฟเจค เจ•เจฐเจจ เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉˆ
    $ sudo yum install -y yum-utils  device-mapper-persistent-data lvm2
  2. เจฐเจฟเจชเฉ‹เจœเจผเจŸเจฐเฉ€ เจ•เจจเฉˆเจ•เจŸ เจ•เจฐเฉ‹
    $ sudo yum-config-manager  --add-repo  https://download.docker.com/linux/centos/docker-ce.repo
  3. เจซเจฟเจฐ เจกเฉŒเจ•เจฐ เจ•เจฎเจฟเจŠเจจเจฟเจŸเฉ€ เจเจกเฉ€เจธเจผเจจ เจธเจฅเจพเจชเจฟเจค เจ•เจฐเฉ‹
    $ sudo yum install docker-ce docker-ce-cli containerd.io
  4. เจธเจŸเจพเจฐเจŸเจ…เจช เจ…เจคเฉ‡ เจฐเจจ เจฒเจˆ เจกเฉŒเจ•เจฐ เจธเจผเจพเจฎเจฒ เจ•เจฐเฉ‹
    $ sudo systemctl enable docker
    $ sudo systemctl start docker
  5. เจธเฉเจกเฉ‹ เจคเฉ‹เจ‚ เจฌเจฟเจจเจพเจ‚ เจกเฉŒเจ•เจฐ เจšเจฒเจพเจ‰เจฃ เจฆเฉ‡ เจฏเฉ‹เจ— เจนเฉ‹เจฃ เจฒเจˆ เจ‡เฉฑเจ• เจ‰เจชเจญเฉ‹เจ—เจคเจพ เจจเฉ‚เฉฐ เจกเฉŒเจ•เจฐ เจธเจฎเฉ‚เจน เจตเจฟเฉฑเจš เจธเจผเจพเจฎเจฒ เจ•เจฐเฉ‹
    $ usermod -aG docker user

เจ…เจ—เจฒเจพ เจ•เจฆเจฎ เจกเฉŒเจ•เจฐ-เจ•เฉฐเจชเฉ‹เจœเจผ เจจเฉ‚เฉฐ เจธเจฅเจพเจชเจฟเจค เจ•เจฐเจจเจพ เจนเฉˆเฅค เจ‰เจชเจฏเฉ‹เจ—เจคเจพ เจจเฉ‚เฉฐ เจ•เจˆ เจคเจฐเฉ€เจ•เจฟเจ†เจ‚ เจจเจพเจฒ เจธเจฅเจพเจชเจฟเจค เจ•เฉ€เจคเจพ เจœเจพ เจธเจ•เจฆเจพ เจนเฉˆ, เจชเจฐ เจฎเฉˆเจ‚ เจชเจพเจˆเจช เจฎเฉˆเจจเฉ‡เจœเจฐ เจ…เจคเฉ‡ เจตเจฐเจšเฉเจ…เจฒเฉ‡เจจเจต เจฆเฉเจ†เจฐเจพ เจ‡เฉฐเจธเจŸเจพเจฒ เจ•เจฐเจจ เจจเฉ‚เฉฐ เจคเจฐเจœเฉ€เจน เจฆเจฟเฉฐเจฆเจพ เจนเจพเจ‚, เจคเจพเจ‚ เจœเฉ‹ เจธเจฟเจธเจŸเจฎ เจจเฉ‚เฉฐ เจฌเฉ‡เจฒเฉ‹เฉœเฉ‡ เจชเฉˆเจ•เฉ‡เจœเจพเจ‚ เจจเจพเจฒ เจ—เฉœเจฌเฉœ เจจเจพ เจ•เฉ€เจคเจพ เจœเจพ เจธเจ•เฉ‡เฅค

  1. เจชเจพเจˆเจช เจ‡เฉฐเจธเจŸเจพเจฒ เจ•เจฐเฉ‹
    $ sudo yum install python-pip
  2. virtualenv เจ‡เฉฐเจธเจŸเจพเจฒ เจ•เจฐเฉ‹
    $ pip install virtualenv
  3. เจ…เฉฑเจ—เฉ‡ เจคเฉเจนเจพเจจเฉ‚เฉฐ เจชเฉเจฐเฉ‹เจœเฉˆเจ•เจŸ เจฆเฉ‡ เจจเจพเจฒ เจ‡เฉฑเจ• เจซเฉ‹เจฒเจกเจฐ เจฌเจฃเจพเจ‰เจฃ เจ…เจคเฉ‡ เจ‡เจธเจจเฉ‚เฉฐ เจธเจผเฉเจฐเฉ‚ เจ•เจฐเจจ เจฆเฉ€ เจœเจผเจฐเฉ‚เจฐเจค เจนเฉˆ. เจชเฉˆเจ•เฉ‡เจœเจพเจ‚ เจฆเจพ เจชเฉเจฐเจฌเฉฐเจงเจจ เจ•เจฐเจจ เจฒเจˆ เจคเฉเจนเจพเจจเฉ‚เฉฐ เจฒเฉ‹เฉœเฉ€เจ‚เจฆเฉ€ เจนเจฐ เจšเฉ€เจœเจผ เจตเจพเจฒเจพ เจซเฉ‹เจฒเจกเจฐ ve เจ•เจฟเจนเจพ เจœเจพเจตเฉ‡เจ—เจพเฅค
    $ mkdir docker
    $ cd docker
    $ virtualenv ve
  4. เจตเจฐเจšเฉเจ…เจฒ เจตเจพเจคเจพเจตเจฐเจจ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจธเจผเฉเจฐเฉ‚ เจ•เจฐเจจ เจฒเจˆ, เจคเฉเจนเจพเจจเฉ‚เฉฐ เจชเฉเจฐเฉ‹เจœเฉˆเจ•เจŸ เจซเฉ‹เจฒเจกเจฐ เจตเจฟเฉฑเจš เจนเฉ‡เจ  เจฒเจฟเจ–เฉ€ เจ•เจฎเจพเจ‚เจก เจšเจฒเจพเจ‰เจฃ เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉˆเฅค
    $ source ve/bin/activate
  5. เจคเฉเจธเฉ€เจ‚ เจกเฉŒเจ•เจฐ-เจ•เฉฐเจชเฉ‹เจœเจผ เจ‡เฉฐเจธเจŸเจพเจฒ เจ•เจฐ เจธเจ•เจฆเฉ‡ เจนเฉ‹เฅค
    pip install docker-compose

    เจ•เฉฐเจŸเฉ‡เจจเจฐเจพเจ‚ เจจเฉ‚เฉฐ เจ‡เฉฑเจ• เจฆเฉ‚เจœเฉ‡ เจจเฉ‚เฉฐ เจตเฉ‡เจ–เจฃ เจฒเจˆ, เจ…เจธเฉ€เจ‚ เจ‡เฉฑเจ• เจจเฉˆเจŸเจตเจฐเจ• เจฌเจฃเจพเจตเจพเจ‚เจ—เฉ‡เฅค เจฎเฉ‚เจฒ เจฐเฉ‚เจช เจตเจฟเฉฑเจš, เจฌเฉเจฐเจฟเจœ เจกเจฐเจพเจˆเจตเจฐ เจตเจฐเจคเจฟเจ† เจœเจพเจ‚เจฆเจพ เจนเฉˆเฅค

    $ docker network create network

    เจ…เฉฑเจ—เฉ‡ เจคเฉเจนเจพเจจเฉ‚เฉฐ เจกเฉŒเจ•เจฐ-เจ•เฉฐเจชเฉ‹เจœเจผ เจจเฉ‚เฉฐ เจ•เฉŒเจ‚เจซเจฟเจ—เจฐ เจ•เจฐเจจ เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉˆ, เจชเฉเจฐเฉŒเจ•เจธเฉ€ เจชเฉเจฐเฉŒเจ•เจธเฉ€ เจซเฉ‹เจฒเจกเจฐ เจตเจฟเฉฑเจš เจนเฉ‹เจตเฉ‡เจ—เฉ€, เจŸเฉˆเจธเจŸ เจธเจพเจˆเจŸ เจŸเฉˆเจธเจŸ เจซเฉ‹เจฒเจกเจฐ เจตเจฟเฉฑเจš เจนเฉ‹เจตเฉ‡เจ—เฉ€เฅค เจ‰เจฆเจพเจนเจฐเจจ เจฒเจˆ, เจฎเฉˆเจ‚ เจกเฉ‹เจฎเฉ‡เจจ เจจเจพเจฎ example.com เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐ เจฐเจฟเจนเจพ เจนเจพเจ‚

    $ mkdir proxy
    $ mkdir test
    $ touch proxy/docker-compose.yml
    $ touch test/docker-compose.yml

    เจธเจฎเฉฑเจ—เจฐเฉ€ proxy/docker-compose.yml

    version: '3'
    
    networks:
      default:
        external:
          name: network
    
    services:
      nginx-proxy:
        container_name: nginx-proxy
        image: jwilder/nginx-proxy
        ports:
          - 80:80
          - 443:443
        volumes:
          - certs:/etc/nginx/certs
          - vhost.d:/etc/nginx/vhost.d
          - html:/usr/share/nginx/html
          - /var/run/docker.sock:/tmp/docker.sock:ro
    
      nginx-proxy-letsencrypt:
        container_name: nginx-proxy-letsencrypt
        image: jrcs/letsencrypt-nginx-proxy-companion
        volumes: 
          - certs:/etc/nginx/certs
          - vhost.d:/etc/nginx/vhost.d
          - html:/usr/share/nginx/html
          - /var/run/docker.sock:/var/run/docker.sock:ro
        environment:
          - NGINX_PROXY_CONTAINER=nginx-proxy
    
    volumes:
      certs:
      vhost.d:
      html:

    เจตเจพเจคเจพเจตเจฐเจจ เจตเฉ‡เจฐเฉ€เจเจฌเจฒ NGINX_PROXY_CONTAINER เจ‡เจน letsencrypt เจ•เฉฐเจŸเฉ‡เจจเจฐ เจฒเจˆ เจชเฉเจฐเฉŒเจ•เจธเฉ€ เจ•เฉฐเจŸเฉ‡เจจเจฐ เจจเฉ‚เฉฐ เจฆเฉ‡เจ–เจฃ เจฒเจˆ เจœเจผเจฐเฉ‚เจฐเฉ€ เจนเฉˆเฅค /etc/nginx/certs /etc/nginx/vhost.d เจ…เจคเฉ‡ /usr/share/nginx/html เจซเฉ‹เจฒเจกเจฐ เจฆเฉ‹เจตเจพเจ‚ เจ•เฉฐเจŸเฉ‡เจจเจฐเจพเจ‚ เจฆเฉเจ†เจฐเจพ เจธเจพเจ‚เจเฉ‡ เจ•เฉ€เจคเฉ‡ เจœเจพเจฃเฉ‡ เจšเจพเจนเฉ€เจฆเฉ‡ เจนเจจเฅค letsencrypt เจ•เฉฐเจŸเฉ‡เจจเจฐ เจฆเฉ‡ เจธเจนเฉ€ เจขเฉฐเจ— เจจเจพเจฒ เจ•เฉฐเจฎ เจ•เจฐเจจ เจฒเจˆ, เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจชเฉ‹เจฐเจŸ 80 เจ…เจคเฉ‡ 443 เจฆเฉ‹เจตเจพเจ‚ 'เจคเฉ‡ เจชเจนเฉเฉฐเจšเจฏเฉ‹เจ— เจนเฉ‹เจฃเฉ€ เจšเจพเจนเฉ€เจฆเฉ€ เจนเฉˆเฅค

    เจธเจฎเฉฑเจ—เจฐเฉ€ test/docker-compose.yml

    version: '3'
    
    networks:
      default:
        external:
          name: network
    
    services:
    
      nginx:
        container_name: nginx
        image: nginx:latest
        environment:
          - VIRTUAL_HOST=example.com
          - LETSENCRYPT_HOST=example.com
          - [email protected]

    เจ‡เฉฑเจฅเฉ‡, เจตเจพเจคเจพเจตเจฐเจฃ เจตเฉ‡เจฐเฉ€เจเจฌเจฒ เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉเฉฐเจฆเฉ€ เจนเฉˆ เจคเจพเจ‚ เจœเฉ‹ เจชเฉเจฐเฉŒเจ•เจธเฉ€ เจธเจฐเจตเจฐ เจจเฉ‚เฉฐ เจฌเฉ‡เจจเจคเฉ€ เจฆเฉ€ เจธเจนเฉ€ เจขเฉฐเจ— เจจเจพเจฒ เจชเฉเจฐเจ•เจฟเจฐเจฟเจ† เจ•เจฐเฉ‡ เจ…เจคเฉ‡ เจธเจนเฉ€ เจกเฉ‹เจฎเฉ‡เจจ เจจเจพเจฎ เจฒเจˆ เจ‡เฉฑเจ• เจธเจฐเจŸเฉ€เจซเจฟเจ•เฉ‡เจŸ เจฆเฉ€ เจฌเฉ‡เจจเจคเฉ€ เจ•เจฐเฉ‡เฅค

    เจกเฉŒเจ•เจฐ-เจ•เฉฐเจชเฉ‹เจœเจผ เจจเฉ‚เฉฐ เจšเจฒเจพเจ‰เจฃเจพ เจฌเจพเจ•เฉ€ เจนเฉˆ

    $ cd proxy
    $ docker-compose up -d
    $ cd ../test
    $ docker-compose up -d

เจธเจฐเฉ‹เจค: www.habr.com

เจ‡เฉฑเจ• เจŸเจฟเฉฑเจชเจฃเฉ€ เจœเฉ‹เฉœเฉ‹