Nemrég változtattam a virtuális szerveren, és mindent újra kellett konfigurálnom. Előnyben részesítem, hogy a weboldal HTTPS-en legyen elérhető, és a Let's Encrypt tanúsítványok automatikusan meg legyenek szerezve és megújítva. Ezt két Docker-képet, az nginx-proxy-t és az nginx-proxy-companion-t használva érhetjük el.
Ez a útmutató bemutatja, hogyan lehet weboldalt beállítani Docker alatt, proxy-val, amely automatikusan megszerzi SSL tanúsítványok. CentOS 7 virtuális szerver használatával.
Feltételezem, hogy a szerver már meg lett vásárolva, be van állítva, és a belépés hozzá kulccsal történik, a fail2ban is telepítve van, stb.
Először telepítenünk kell a Dockert.
- Először szükséges a függőségek telepítése
$ sudo yum install -y yum-utils device-mapper-persistent-data lvm2 - Kapcsoljuk be a tárolót
$ sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo - Ezután telepítsük a Docker Community Edition-t
$ sudo yum install docker-ce docker-ce-cli containerd.io - Adja hozzá a Dockert az automatikus indításhoz és indítsa el
$ sudo systemctl enable docker $ sudo systemctl start docker - Adja hozzá a felhasználót a docker csoporthoz, hogy a docker-t sudo nélkül futtathassa
$ usermod -aG docker user
A következő lépés az, hogy telepítjük a docker-compose-t. Ezt többféleképpen telepíthetjük, de én a pip menedzser és a virtualenv használatát részesítem előnyben, hogy ne zsúfoljuk tele a rendszert felesleges csomagokkal.
- Telepítse a pip-et
$ sudo yum install python-pip - Telepítse a virtualenv-et
$ pip install virtualenv - Ezután létre kell hoznunk egy projektmappát és inicializálnunk kell azt. A csomagkezeléshez szükséges mappa neve ve lesz.
$ mkdir docker $ cd docker $ virtualenv ve - A virtuális környezet használatához a következő parancsot kell végrehajtani a projektmappában.
$ source ve/bin/activate - Most már telepíthetjük a docker-compose-t.
pip install docker-composeAnnak érdekében, hogy a konténerek láthassák egymást, létre kell hoznunk egy hálózatot. Alapértelmezés szerint a bridge drivert használja.
$ docker network create networkEzután szükség van a docker-compose konfigurálására, a proxy a proxy mappában lesz, a tesztoldal pedig a test mappában. Példaként az example.com domaint használom.
$ mkdir proxy $ mkdir test $ touch proxy/docker-compose.yml $ touch test/docker-compose.ymlTartalom proxy/docker-compose.yml
verzió: '3' hálózatok: alapértelmezett: külső: név: hálózat szolgáltatások: nginx-proxy: konténer_név: nginx-proxy kép: jwilder/nginx-proxy portok: - 80:80 - 443:443 kötetek: - 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: konténer_név: nginx-proxy-letsencrypt kép: jrcs/letsencrypt-nginx-proxy-companion kötetek: - certs:/etc/nginx/certs - vhost.d:/etc/nginx/vhost.d - html:/usr/share/nginx/html - /var/run/docker.sock:/var/run/docker.sock:ro környezet: - NGINX_PROXY_CONTAINER=nginx-proxy kötetek: certs: vhost.d: html:Környezeti változó NGINX_PROXY_CONTAINER szükséges, hogy a letsencrypt konténer lássa a proxy konténert. A mappákat /etc/nginx/certs, /etc/nginx/vhost.d és /usr/share/nginx/html közösen kell használniuk mindkét konténernek. A letsencrypt konténer megfelelő működéséhez az alkalmazásnak elérhetőnek kell lennie a 80-as és a 443-as porton is.
Tartalom teszt/docker-compose.yml
verzió: '3' hálózatok: alapértelmezett: külső: név: hálózat szolgáltatások: nginx: konténer_név: nginx kép: nginx:latest környezet: - VIRTUAL_HOST=example.com - LETSENCRYPT_HOST=example.com - LETSENCRYPT_EMAIL=admin@example.comItt a környezeti változók szükségesek, hogy a proxy helyesen kezelje a kéréseket a szerverhez, és kérjen tanúsítványt a megfelelő domain névre.
Csak annyit kell tenni, hogy elindítjuk a docker-compose-t
$ cd proxy $ docker-compose up -d $ cd ../teszt $ docker-compose up -d
Forrás: habr.com
