నేను ఇటీవల వర్చువల్ సర్వర్ని మార్చాను మరియు ప్రతిదీ మళ్లీ కాన్ఫిగర్ చేయాల్సి వచ్చింది. సైట్ని 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
- సుడో లేకుండా డాకర్ను అమలు చేయడానికి డాకర్ సమూహానికి వినియోగదారుని జోడించండి
$ usermod -aG docker user
తదుపరి దశ డాకర్-కంపోజ్ని ఇన్స్టాల్ చేయడం. యుటిలిటీని అనేక విధాలుగా ఇన్స్టాల్ చేయవచ్చు, కాని అనవసరమైన ప్యాకేజీలతో సిస్టమ్ను అస్తవ్యస్తం చేయకుండా ఉండటానికి నేను పిప్ మేనేజర్ మరియు వర్చువలెన్వ్ ద్వారా ఇన్స్టాల్ చేయడానికి ఇష్టపడతాను.
- పిప్ను ఇన్స్టాల్ చేయండి
$ 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
తదుపరి మీరు డాకర్-కంపోజ్ని కాన్ఫిగర్ చేయాలి, ప్రాక్సీ ప్రాక్సీ ఫోల్డర్లో ఉంటుంది, టెస్ట్ సైట్ టెస్ట్ ఫోల్డర్లో ఉంటుంది. ఉదాహరణకు, నేను డొమైన్ పేరు 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 లెట్సెన్క్రిప్ట్ కంటైనర్కు ప్రాక్సీ కంటైనర్ను చూడడం అవసరం. /etc/nginx/certs /etc/nginx/vhost.d మరియు /usr/share/nginx/html ఫోల్డర్లు తప్పనిసరిగా రెండు కంటైనర్ల ద్వారా భాగస్వామ్యం చేయబడాలి. లెట్సెన్క్రిప్ట్ కంటైనర్ సరిగ్గా పని చేయడానికి, అప్లికేషన్ తప్పనిసరిగా పోర్ట్ 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