Ман ба наздикӣ сервери виртуалиро иваз кардам ва маҷбур шудам, ки ҳама чизро аз нав танзим кунам. Ман бартарӣ медиҳам, ки сайт тавассути https дастрас бошад ва сертификатҳои letsencrypt ба таври худкор гирифта ва нав карда шаванд. Инро бо истифода аз ду тасвири докер nginx-proxy ва nginx-proxy-companion ба даст овардан мумкин аст.
Ин дастур оид ба чӣ гуна сохтани вебсайт дар Docker бо прокси, ки ба таври худкор сертификатҳои SSL мегирад, мебошад. Сервери виртуалии CentOS 7 истифода мешавад.
Ман гумон мекунам, ки сервер аллакай харида шудааст, танзим шудааст, бо истифода аз калид ворид шудааст, fail2ban насб шудааст ва ғайра.
Аввал шумо бояд docker насб кунед.
- Аввал шумо бояд вобастагиҳоро насб кунед
$ 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
- Сипас нашри ҷомеаи docker насб кунед
$ sudo yum install docker-ce docker-ce-cli containerd.io
- Барои оғозёбӣ ва иҷро кардани docker илова кунед
$ 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
Манбаъ: will.com