Мен жакында виртуалдык серверди өзгөртүп, баарын кайра конфигурациялоого туура келди. Мен сайттын https жана letsencrypt сертификаттары аркылуу жеткиликтүү болушун жана автоматтык түрдө жаңыланышын каалайм. Буга nginx-proxy жана nginx-proxy-companion эки докер сүрөтүн колдонуу менен жетишүүгө болот.
Бул SSL сертификаттарын автоматтык түрдө алган прокси менен Dockerде веб-сайтты кантип орнотуу боюнча колдонмо. CentOS 7 виртуалдык сервери колдонулат.
Мен сервер мурунтан эле сатылып алынган, конфигурацияланган, ачкыч менен кирген, fail2ban орнотулган ж.б.
Алгач сиз докерди орнотушуңуз керек.
- Алгач көз карандылыкты орнотуу керек
$ sudo yum install -y yum-utils device-mapper-persistent-data lvm2
- Репозиторийди туташтыруу
$ sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
- Андан кийин докер коомчулугунун чыгарылышын орнотуңуз
$ sudo yum install docker-ce docker-ce-cli containerd.io
- Ишке киргизүү жана иштетүү үчүн докерди кошуңуз
$ sudo systemctl enable docker $ sudo systemctl start docker
- Sudo жок докерди иштетүү үчүн колдонуучуну докер тобуна кошуңуз
$ usermod -aG docker user
Кийинки кадам docker-compose орнотуу болуп саналат. Утилитаны бир нече жол менен орнотсо болот, бирок мен системаны керексиз пакеттер менен чаташтырбоо үчүн pip менеджери жана virtualenv аркылуу орнотууну туура көрөм.
- Пипти орнотуу
$ sudo yum install python-pip
- Virtualenv орнотуу
$ pip install virtualenv
- Андан кийин сиз долбоор менен папканы түзүп, аны инициализациялашыңыз керек. Пакеттерди башкаруу үчүн керектүү нерселердин баары камтылган папка ve деп аталат.
$ mkdir docker $ cd docker $ virtualenv ve
- Виртуалдык чөйрөнү колдонууну баштоо үчүн, долбоордун папкасында төмөнкү буйрукту иштетүү керек.
$ source ve/bin/activate
- Сиз docker-compose орното аласыз.
pip install docker-compose
Контейнерлер бири-бирин көрүшү үчүн, биз тармак түзөбүз. Демейки боюнча, көпүрө драйвери колдонулат.
$ docker network create network
Андан кийин сиз docker-compose конфигурациялооңуз керек, прокси прокси папкада болот, тест сайты сыноо папкасында болот. Мисалы, мен 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]
Бул жерде прокси серверге суроо-талапты туура иштетип, туура домендик ат үчүн сертификатты сураш үчүн айлана-чөйрөнүн өзгөрмөлөрү керек.
Болгону docker-compose иштетүү гана калды
$ cd proxy $ docker-compose up -d $ cd ../test $ docker-compose up -d
Source: www.habr.com