مون تازو تبديل ڪيو مجازي سرور، ۽ هر شيء کي ٻيهر ترتيب ڏيڻو هو. مان ترجيح ڏيان ٿو ته سائيٽ https جي ذريعي دستياب هجي ۽ letsencrypt سرٽيفڪيٽ حاصل ڪيا وڃن ۽ خودڪار طور تي تجديد ڪيا وڃن. اهو حاصل ڪري سگهجي ٿو ٻه ڊاکر تصويرون استعمال ڪندي nginx-proxy ۽ nginx-proxy-companion.
اهو هڪ گائيڊ آهي ته ڪيئن ٺاهيو ويب سائيٽ Docker تي، هڪ پراکسي سان جيڪا خودڪار طور تي SSL سرٽيفڪيٽ حاصل ڪري ٿي. CentOS 7 ورچوئل سرور استعمال ڪيو ويندو آهي.
مان سمجهان ٿو ته سرور اڳ ۾ ئي خريد ڪيو ويو آهي، ترتيب ڏنو ويو آهي، هڪ چيڪ استعمال ڪندي لاگ ان، fail2ban انسٽال ٿيل، وغيره.
پهرين توهان کي انسٽال ڪرڻ جي ضرورت آهي docker.
- پهرين توهان کي انحصار کي نصب ڪرڻ جي ضرورت آهي
$ 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
- هڪ صارف شامل ڪريو ڊڪر گروپ ۾ سوڊو کان سواء ڊڪر کي هلائڻ جي قابل
$ usermod -aG docker user
ايندڙ قدم docker-compose انسٽال ڪرڻ آهي. يوٽيلٽي کي ڪيترن ئي طريقن سان انسٽال ڪري سگهجي ٿو، پر مان پائپ مئنيجر ۽ ورچوئلنوي ذريعي انسٽال ڪرڻ کي ترجيح ڏيان ٿو، ته جيئن غير ضروري پيڪيجز سان سسٽم کي خراب نه ٿئي.
- انسٽال ڪريو پائپ
$ sudo yum install python-pip
- virtualenv انسٽال ڪريو
$ pip install virtualenv
- اڳيون توهان کي پروجيڪٽ سان فولڊر ٺاهڻ ۽ ان کي شروع ڪرڻ جي ضرورت آهي. فولڊر هر شي سان گڏ توهان کي پيڪيجز کي منظم ڪرڻ جي ضرورت آهي ve سڏيو ويندو.
$ mkdir docker $ cd docker $ virtualenv ve
- ورچوئل ماحول کي استعمال ڪرڻ شروع ڪرڻ لاءِ، توھان کي ھيٺ ڏنل حڪم هلائڻو پوندو پروجيڪٽ فولڊر ۾.
$ source ve/bin/activate
- توھان انسٽال ڪري سگھو ٿا docker-compose.
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/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:
ماحولياتي تبديلي NGINX_PROXY_CONTAINER اهو ضروري آهي ته letsencrypt ڪنٽينر کي پراکسي ڪنٽينر ڏسڻ لاءِ. /etc/nginx/certs /etc/nginx/vhost.d ۽ /usr/share/nginx/html فولڊر ٻنهي ڪنٽينرز طرفان حصيداري ڪرڻ گهرجن. letsencrypt ڪنٽينر لاءِ صحيح ڪم ڪرڻ لاءِ، ايپليڪيشن کي لازمي طور تي ٻنهي بندرگاهن 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