Bu yaxınlarda virtual serveri dəyişdim və hər şeyi yenidən qurmalı oldum. Mən saytın https üzərindən əlçatan olmasına və letsencrypt sertifikatlarının avtomatik əldə edilməsinə və yenilənməsinə üstünlük verirəm. Buna nginx-proxy və nginx-proxy-companion iki docker təsvirindən istifadə etməklə nail olmaq olar.
Bu, Docker-də avtomatik olaraq qəbul edən bir proxy ilə veb saytın necə qurulacağına dair bir təlimatdır SSL sertifikatlarıVirtual server istifadə olunur. CentOS 7.
Güman edirəm ki, server artıq alınıb, konfiqurasiya edilib, ona giriş açarla həyata keçirilir, fail2ban quraşdırılıb və s.
Əvvəlcə docker quraşdırmalısınız.
- Əvvəlcə asılılıqları quraşdırmalısınız
$ sudo yum install -y yum-utils device-mapper-persistent-data lvm2 - Repozitoriyaya qoşulun
$ sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo - Sonra docker icma nəşrini quraşdırın
$ sudo yum install docker-ce docker-ce-cli containerd.io - Başlanğıc və işə docker əlavə edin
$ sudo systemctl enable docker $ sudo systemctl start docker - Docker-i sudo olmadan işlədə bilmək üçün docker qrupuna bir istifadəçi əlavə edin
$ usermod -aG docker user
Növbəti addım docker-compose quraşdırmaqdır. Kommunal bir neçə yolla quraşdırıla bilər, lakin sistemi lazımsız paketlərlə bağlamamaq üçün pip meneceri və virtualenv vasitəsilə quraşdırmağı üstün tuturam.
- Pip quraşdırın
$ sudo yum install python-pip - virtualenv quraşdırın
$ pip install virtualenv - Sonra, layihə ilə bir qovluq yaratmalı və onu işə salmalısınız. Paketin idarə edilməsi üçün lazım olan hər şeyin olduğu qovluq ve.
$ mkdir docker $ cd docker $ virtualenv ve - Virtual mühitdən istifadə etməyə başlamaq üçün layihə qovluğunda aşağıdakı əmri yerinə yetirməlisiniz.
$ source ve/bin/activate - Siz docker-compose quraşdıra bilərsiniz.
pip install docker-composeKonteynerlərin bir-birini görməsi üçün bir şəbəkə yaradaq. Körpü sürücüsü standart olaraq istifadə olunur.
$ docker network create networkSonra, docker-compose konfiqurasiya etməlisiniz, proxy proxy qovluğunda, test saytı test qovluğunda olacaq. Məsələn, example.com domen adından istifadə edirəm
$ mkdir proxy $ mkdir test $ touch proxy/docker-compose.yml $ touch test/docker-compose.ymlMəzmun 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:mühit dəyişəni NGINX_PROXY_CONTAINER letsencrypt konteyneri üçün proxy konteynerini görmək lazımdır. /etc/nginx/certs /etc/nginx/vhost.d və /usr/share/nginx/html qovluqları hər iki konteyner tərəfindən paylaşılmalıdır. Letsencrypt konteynerinin düzgün işləməsi üçün proqram həm 80, həm də 443 portlarında mövcud olmalıdır.
Məzmun 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 - LETSENCRYPT_EMAIL=admin@example.comBurada mühit dəyişənləri lazımdır ki, proksi serverə sorğunu düzgün emal etsin və düzgün domen adı üçün sertifikat tələb etsin.
Yalnız docker-compose işləmək qalır
$ cd proxy $ docker-compose up -d $ cd ../test $ docker-compose up -d
Mənbə: www.habr.com
