لقد غيرت خادمًا افتراضيًا مؤخرًا ، واضطررت إلى إعداد كل شيء مرة أخرى. أفضل أن يكون الموقع متاحًا عبر https وأن يتم الحصول على الشهادات وتجديدها تلقائيًا. يمكن تحقيق ذلك باستخدام صورتي عامل إرساء nginx-proxy و nginx-proxy-companion.
هذا دليل حول كيفية إعداد موقع على عامل الإرساء ، باستخدام وكيل يتلقى شهادات SSL تلقائيًا. يتم استخدام الخادم الافتراضي CentOS 7.
أفترض أنه تم بالفعل شراء الخادم وتكوينه والوصول إليه يتم عن طريق المفتاح وتثبيت fail2ban وما إلى ذلك.
تحتاج أولاً إلى تثبيت عامل ميناء.
- تحتاج أولاً إلى تثبيت التبعيات
$ 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
- ثم قم بتثبيت إصدار مجتمع عامل الميناء
$ sudo yum install docker-ce docker-ce-cli containerd.io
- إضافة عامل ميناء لبدء التشغيل والتشغيل
$ 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
- يمكنك تثبيت عامل تركيب.
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 / عامل ميناء 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 بواسطة كلتا الحاويات. لكي تعمل حاوية LetsCrypt بشكل صحيح ، يجب أن يكون التطبيق متاحًا على كلا المنفذين 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]
هنا ، هناك حاجة إلى متغيرات البيئة حتى يقوم الوكيل بمعالجة الطلب بشكل صحيح إلى الخادم ويطلب شهادة لاسم المجال الصحيح.
يبقى فقط لتشغيل عامل الميناء
$ cd proxy $ docker-compose up -d $ cd ../test $ docker-compose up -d
المصدر: www.habr.com