Men yaqinda virtual serverni o'zgartirdim va hamma narsani qayta sozlashim kerak edi. Men saytga https orqali kirishni va letsencrypt sertifikatlarini avtomatik ravishda olish va yangilashni afzal ko'raman. Bunga nginx-proxy va nginx-proxy-companion ikkita docker tasviridan foydalanish orqali erishish mumkin.
Bu SSL sertifikatlarini avtomatik ravishda qabul qiluvchi proksi-server bilan Docker-da veb-saytni qanday o'rnatish bo'yicha qo'llanma. CentOS 7 virtual serveridan foydalaniladi.
Menimcha, server allaqachon sotib olingan, sozlangan, kalit yordamida tizimga kirgan, fail2ban o'rnatilgan va hokazo.
Avval siz docker-ni o'rnatishingiz kerak.
- Avval siz bog'liqliklarni o'rnatishingiz kerak
$ sudo yum install -y yum-utils device-mapper-persistent-data lvm2
- Repozitoriyni ulash
$ sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
- Keyin docker hamjamiyat nashrini o'rnating
$ sudo yum install docker-ce docker-ce-cli containerd.io
- Ishga tushirish va ishga tushirish uchun docker qo'shing
$ sudo systemctl enable docker $ sudo systemctl start docker
- Docker-ni sudosiz ishga tushirish uchun foydalanuvchini docker guruhiga qo'shing
$ usermod -aG docker user
Keyingi qadam docker-compose dasturini o'rnatishdir. Yordamchi dastur bir necha usul bilan o'rnatilishi mumkin, lekin tizimni keraksiz paketlar bilan to'ldirmaslik uchun men pip menejeri va virtualenv orqali o'rnatishni afzal ko'raman.
- Pipni o'rnating
$ sudo yum install python-pip
- virtualenv ni o'rnating
$ pip install virtualenv
- Keyin loyiha bilan papka yaratishingiz va uni ishga tushirishingiz kerak. Paketlarni boshqarish uchun kerak bo'lgan barcha narsalar joylashgan papka ve.
$ mkdir docker $ cd docker $ virtualenv ve
- Virtual muhitdan foydalanishni boshlash uchun loyiha papkasida quyidagi buyruqni bajarish kerak.
$ source ve/bin/activate
- Siz docker-compose ni o'rnatishingiz mumkin.
pip install docker-compose
Konteynerlar bir-birini ko'rishi uchun biz tarmoq yaratamiz. Odatiy bo'lib, ko'prik drayveri ishlatiladi.
$ docker network create network
Keyinchalik siz docker-compose-ni sozlashingiz kerak, proksi-server proksi-server papkasida, test sayti test papkasida bo'ladi. Misol uchun, men example.com domen nomidan foydalanmoqdaman
$ mkdir proxy $ mkdir test $ touch proxy/docker-compose.yml $ touch test/docker-compose.yml
Tarkib 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:
Atrof-muhit o'zgaruvchanligi NGINX_PROXY_CONTAINER letsencrypt konteyneri proksi-konteynerni ko'rishi uchun zarur. /etc/nginx/certs /etc/nginx/vhost.d va /usr/share/nginx/html papkalari ikkala konteyner tomonidan birgalikda bo'lishi kerak. Letsencrypt konteynerining to'g'ri ishlashi uchun ilova 80 va 443 portlarida mavjud bo'lishi kerak.
Tarkib 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]
Bu erda proksi-server serverga so'rovni to'g'ri qayta ishlashi va to'g'ri domen nomi uchun sertifikat so'rashi uchun muhit o'zgaruvchilari kerak.
Faqat docker-compose-ni ishga tushirish qoladi
$ cd proxy $ docker-compose up -d $ cd ../test $ docker-compose up -d
Manba: www.habr.com