Mən yaxınlarda virtual serverimi dəyişdim və hər şeyi yenidən qurmalı oldum. Saytın HTTPS vasitəsilə əlçatan olmasını istəyirəm və letsencrypt sertifikatlarının avtomatik şəkildə alınmasını və uzadılmasını təmin etmək istəyirəm. Bu, nginx-proxy və nginx-proxy-companion adlı iki docker imicini istifadə etməklə mümkündür.
Bu, docker-a sayt qurmağı öyrədən bir təlimatdır, avtomatik olaraq əldə edilən proxy ilə SSL sertifikatları. CentOS 7 virtual serveri istifadə olunur.
Mənim fikrimcə, server artıq alınıb, konfiqurasiya edilib, ona daxil olma açar vasitəsilə həyata keçirilir, fail2ban quraşdırılıb və s.
Əvvəlcə docker quraşdırılmalıdır.
- İlk öncə asılılıqları quraşdırmaq lazımdır
$ sudo yum install -y yum-utils device-mapper-persistent-data lvm2 - Depozitu qoşun
$ sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo - Sonra docker community edition-i quraşdırın
$ sudo yum install docker-ce docker-ce-cli containerd.io - Docker-i avtomatik yükləməyə əlavə edin və başladın
$ sudo systemctl enable docker $ sudo systemctl start docker - Docker qrupuna istifadəçini əlavə edin ki, docker-i sudo olmadan işə sala biləsiniz
$ usermod -aG docker user
Sonrakı addım - docker-compose-i quraşdırmaqdır. Bu vasitə bir neçə yolla quraşdırıla bilər, amma mən sistemin lazımsız paketlərlə dolmaması üçün pip menecerindən və virtualenv-dən istifadə etməyi üstün tuturam.
- Pip-i quraşdırın
$ sudo yum install python-pip - Virtualenv-i quraşdırın
$ pip install virtualenv - Sonra layihə üçün bir qovluq yaratmaq və onu başlatmaq lazımdır. Paketləri idarə etmək üçün lazım olan hər şeyin yerləşdiyi qovluq ve adlanacaq.
$ mkdir docker $ cd docker $ virtualenv ve - Virtual mühitdən istifadə etməyə başlamaq üçün layihə qovluğunda aşağıdakı əmri yerinə yetirəcəyik.
$ source ve/bin/activate - Docker-compose-i quraşdıra bilərsiniz.
pip install docker-composeKonteynerlərin bir-birini görməsi üçün şəbəkə yaradacağıq. Default olaraq bridge sürücüsü istifadə olunur.
$ docker network create networkSonra docker-compose-i konfiqurasiya etməliyik, proxy proxy qovluğunda yerləşəcək, test saytı test qovluğunda olacaq. Nümunə olaraq 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
versiya: '3' şəbəkələr: default: xarici: ad: şəbəkə xidmətlər: nginx-proxy: konteyner_adı: nginx-proxy şəkil: jwilder/nginx-proxy portlar: - 80:80 - 443:443 həcmlər: - sertifikatlar:/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: konteyner_adı: nginx-proxy-letsencrypt şəkil: jrcs/letsencrypt-nginx-proxy-companion həcmlər: - sertifikatlar:/etc/nginx/certs - vhost.d:/etc/nginx/vhost.d - html:/usr/share/nginx/html - /var/run/docker.sock:/var/run/docker.sock:ro mühit: - NGINX_PROXY_CONTAINER=nginx-proxy həcmlər: sertifikatlar: vhost.d: html:Ətraf mühit dəyişəni NGINX_PROXY_CONTAINER letsencrypt konteynerinin proxy konteynerini görməsi üçün lazımdır. /etc/nginx/certs, /etc/nginx/vhost.d və /usr/share/nginx/html qovluqları hər iki konteyner tərəfindən birgə istifadə edilməlidir. letsencrypt konteynerinin düzgün işləməsi üçün tətbiq 80 və 443 portlarında əlçatan olmalıdır.
Məzmun test/docker-compose.yml
versiya: '3' şəbəkələr: default: xarici: ad: şəbəkə xidmətlər: nginx: konteyner_adı: nginx şəkil: nginx:latest mühit: - VIRTUAL_HOST=example.com - LETSENCRYPT_HOST=example.com - LETSENCRYPT_EMAIL=admin@example.comBurada ətraf mühit dəyişənləri serverə sorğu prosesi düzgün başa çatdırılması və düzgün domen adı üçün sertifikat istəməsi üçün lazımdır.
Yalnız docker-compose-u işə salmaq qalıb
$ cd proxy $ docker-compose up -d $ cd ../test $ docker-compose up -d
Mənbə: habr.com
