Si të instaloni Forumin e Diskursit me Nginx në CentOS 7


Discourse është një softuer pa pagesë dhe me burim të hapur për krijimin e komunitetit të forumit në Internet dhe listës së postimeve. Është krijuar në vitin 2013 dhe është shkruar duke përdorur gjuhë programimi Ruby dhe Javascript. Softueri i forumit të diskursit është përdorur nga shumë organizata, duke përfshirë Codeacademy, Udacity, Twitter Developers, Docker Community Forum etj.

Në këtë tutorial, ne do t'ju tregojmë hap pas hapi se si të instaloni dhe konfiguroni Forumin e Diskursit me serverin Ueb Nginx nën serverin CentOS 7. Në mënyrë të veçantë, ne do t'ju tregojmë se si të instaloni Softuerin e Forumit të Diskursit, të konfiguroni Nginx si përfaqësuesin e kundërt për aplikacionin Discourse dhe të siguroni softuerin e forumit të diskursit duke përdorur SSL falas nga Letsencrypt.

Çfarë do të bëjmë

  1. Instaloni Docker në CentOS 7
  2. Instaloni dhe konfiguroni softuerin e Forumit të Diskutimit
  3. Gjeneroni SSL Letsencrypt në CentOS 7
  4. Instaloni dhe konfiguroni Nginx si një përfaqësues i kundërt për diskursin
  5. Instaluesi i Uebit të Diskursit
  6. Konfigurimi shtesë i diskursit

Kushtet paraprake

  • CentOS 7
  • Privilegjet e rrënjës
  • Llogaria SMTP - p.sh. nga Mailgun, SendGrid ose Mailjet

Hapi 1 - Instaloni Docker në CentOS 7

Forumi i diskursit do të instalohet nën kontejnerin Docker. Pra, hapi i parë që duhet të bëjmë është të instalojmë Docker në serverin tonë CentOS 7.

Instaloni Docker në CentOS 7 duke përdorur komandën e mëposhtme.

wget -qO- https://get.docker.com/ | sh

Nëse nuk e keni komandën wget, instaloni atë nga depoja.

yum -y install wget

Nëse instalimi ka përfunduar, filloni shërbimin Docker dhe aktivizoni atë të nisë në kohën e nisjes duke përdorur komandat e mëposhtme systemctl.

systemctl start docker
systemctl enable docker

Motori Docker është instaluar dhe funksionon në serverin CentOS 7. Kontrolloni statusin e shërbimit duke përdorur komandën e mëposhtme.

systemctl status docker

Shërbimi Docker është aktiv dhe funksionon.

Hapi 2 - Instaloni dhe konfiguroni Softuerin e Forumit të Diskursit

Në këtë hap, ne do të instalojmë dhe konfigurojmë softuerin Discourse. Ne do të shkarkojmë skriptin docker-compose të diskursit, do ta konfigurojmë sipas nevojës dhe më pas do të krijojmë një kontejner të ri Docker për softuerin e forumit të diskursit.

Përpara se të shkarkojmë diskursin, duhet të instalojmë komandën git në server.

yum -y install git

Tani krijoni një direktori të re /var/discourse dhe shkarkoni/klononi skriptin docker të diskursit duke përdorur komandën git.

mkdir -p /var/discourse
git clone https://github.com/discourse/discourse_docker.git /var/discourse

Shkoni te drejtoria e diskursit dhe kopjoni një mostër të skriptit docker-compose standalone.yml në drejtorinë /var/discourse/containers/ me emrin app.yml.

cd /var/discourse
cp samples/standalone.yml containers/app.yml

Tani modifikoni skedarin app.yml duke përdorur vim.

vim containers/app.yml

- Harta e portit docker

Si parazgjedhje, të gjitha kërkesat HTTP dhe HTTPS do të trajtohen nga përfaqësuesi Docker. Dhe për këtë udhëzues, ne do të përdorim Nginx për këtë qëllim - të gjitha HTTP dhe HTTPS do të trajtohen nga serveri i uebit Nginx.

Pra, ne duhet të ndryshojmë konfigurimin e hartës së portit docker. Kontejneri Discourse do të ketë vetëm lidhjen HTTP dhe hosti do të hapë portin e ri 2045 dhe do të hartojë në portin e kontejnerit 80.

Çkomentoni linjën HTTPS dhe ndryshoni linjën HTTP me portin e ri 2045, siç tregohet më poshtë.

expose:
  - "2045:80"   # http
#  - "443:443" # https

- Konfigurimi i emrit të domenit të diskutimit

Shkruani emrin tuaj të domenit për diskursin e instaluar në linjën DISCOURSE_HOSTNAME si më poshtë.

DISCOURSE_HOSTNAME: 'discourse.hakase-labs.co'

Dhe shkruani adresën tuaj të emailit në linjën DISCOURSE_DEVELOPER_EMAIL.

DISCOURSE_DEVELOPER_EMAILS: ''

- Konfigurimi SMTP

Konfigurimi SMTP është konfigurimi më i rëndësishëm për Software Discourse. Sigurohuni që keni llogarinë SMTP për instalimin e Discourse - mund të blini ose provoni një llogari SMTP të nivelit të lirë nga Mailgun, Mailjet ose SendGrid.

Për këtë tutorial, ne do të përdorim llogarinë SMTP të nivelit të lirë nga Mailgun. Regjistrohuni me Mailgun dhe konfiguroni emrin e domenit tuaj dhe sigurohuni që të merrni detajet e llogarisë tuaj SMTP.

Pastaj hiqni komentin e konfigurimit SMTP dhe shkruani detajet e llogarisë tuaj si më poshtë.

  DISCOURSE_SMTP_ADDRESS: smtp.mailgun.org
  DISCOURSE_SMTP_PORT: 587
  DISCOURSE_SMTP_USER_NAME:
  DISCOURSE_SMTP_PASSWORD: mypassword

Kjo eshte. Ruani ndryshimet dhe dilni nga redaktori.

Më pas, ndërtoni imazh të ri të Discourse Docker bazuar në konfigurimin e shabllonit të app.yml.

sudo ./launcher bootstrap app

Nëse gjithçka është e plotë, filloni/inicializoni kontejnerin e ri të Diskursit duke përdorur komandën e mëposhtme.

sudo ./launcher start app

Dhe kontejneri Discourse Docker është gati dhe funksionon - kontrollojeni duke përdorur komandën docker ps.

docker ps -a

Kontrolloni portën e hapur të hostit duke përdorur netstat dhe sigurohuni që shërbimi i ri docker-proxy me portin 2045 është në listë.

netstat -plntu

Softueri i Forumit të Diskursit është instaluar nën kontejnerin docker në hostin CentOS 7.

Hapi 3 - Gjeneroni SSL Letsencrypt në CentOS 7

Për këtë tutorial, ne do të ekzekutojmë forumin e Diskursit nën serverin e internetit Nginx dhe do të pranojmë vetëm lidhjen HTTPS. Për këtë qëllim, ne kemi nevojë për Certifikata të reja SSL për emrin e domain, dhe kështu, ne do të përdorim certifikatën SSL falas nga Letsencrypt.

Instaloni mjetin e linjës së komandës Letsencrypt duke përdorur komandën yum në mënyrën e mëposhtme.

yum -y install letsencrypt

Pas instalimit, shtoni shërbimin e ri HTTP dhe HTTPS në konfigurimin e Firewalld.

firewall-cmd --add-service=http --permanent
firewall-cmd --add-service=https --permanent
firewall-cmd --reload

Tani gjeneroni certifikata të reja SSL për forumin e Diskursit duke përdorur komandën letsencrypt më poshtë.

letsencrypt certonly

Do të shihni dy verifikime nga Letsencrypt. Shkruani numrin 1 për të rrotulluar një server të përkohshëm në internet për vërtetim.

Si pjesë e kësaj, shkruani adresën tuaj të emailit për rinovimin e njoftimit, shkruani A për të rënë dakord mbi letsencrypt TOS (Kushtet e Shërbimit).

Tani shkruani emrin e domenit të diskursit discourse.hakase-labs.co.

Dhe kur procesi të përfundojë, do të merrni rezultatin si më poshtë.

Certifikata e re SSL nga letsencrypt është krijuar në drejtorinë /etc/letsencrypt/live.

Hapi 4 - Instaloni dhe konfiguroni Nginx si një përfaqësues i kundërt për diskursin

Në këtë tutorial, ne do të përdorim serverin në internet Nginx si një përfaqësues të kundërt për Discourse që funksionon nën kontejnerin Docker. Ueb serveri Nginx do të funksionojë nën portin HTTP dhe HTTPS dhe të gjitha kërkesat e klientit do të trajtohen nga Nginx.

Përpara se të instalojmë serverin në internet Nginx, duhet të instalojmë depon e EPEL në sistem.

yum -y install epel-release

Tani instaloni nginx nga depoja EPEL duke përdorur komandën e mëposhtme yum.

yum -y install nginx

Pasi të ketë përfunduar i gjithë instalimi, shkoni te drejtoria e konfigurimit të nginx /etc/nginx.

cd /etc/nginx/

Dhe krijoni një konfigurim të ri shtesë SSL ssl.conf duke përdorur vim.

vim ssl.conf

Ngjitni konfigurimin e mëposhtëm SSL atje.

ssl_session_timeout 1d;
ssl_session_cache shared:SSL:50m;
ssl_session_tickets off;

ssl_protocols TLSv1.2;
ssl_ciphers EECDH+AESGCM:EECDH+AES;
ssl_ecdh_curve secp384r1;
ssl_prefer_server_ciphers on;

ssl_stapling on;
ssl_stapling_verify on;

add_header Strict-Transport-Security "max-age=15768000; includeSubdomains; preload";
add_header X-Frame-Options DENY;
add_header X-Content-Type-Options nosniff;

Ruani ndryshimet dhe dilni nga redaktori.

Më pas, krijoni një skedar të ri host virtual nginx discourse.conf për Discourse.

vim conf.d/discourse.conf

Ngjitni konfigurimin e mëposhtëm atje.

server {
    listen 80; listen [::]:80;
    server_name discourse.hakase-labs.co;
 
    # Automatic Redirect HTTP to HTTPS Nginx
    return 301 https://$host$request_uri;
}
 
server {
    listen 443 ssl http2; 
    server_name discourse.hakase-labs.co;

    # SSL Configuration
    ssl_certificate /etc/letsencrypt/live/discourse.hakase-labs.co/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/discourse.hakase-labs.co/privkey.pem;
    include /etc/nginx/ssl.conf;
 
    # Reverse Proxy Configuration
    location / {
        proxy_pass http://discourse.hakase-labs.co:2045/;
        proxy_set_header Host $http_host;
        proxy_http_version 1.1;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_redirect http://discourse.hakase-labs.co:2045/ https://discourse.hakase-labs.co;
    }
}

Ruaje dhe dil.

Tani provoni konfigurimin e nginx dhe sigurohuni që nuk ka ndonjë gabim. Pastaj rinisni shërbimin Nginx.

nginx -t
systemctl restart nginx

Instalimi dhe konfigurimi i Nginx si një përfaqësues i kundërt për kontejnerin e Discourse ka përfunduar.

Hapi 5 - Instaluesi i Uebit të Diskursit

Hapni shfletuesin tuaj të internetit dhe vizitoni URL-në tuaj të diskursit, e imja është:

http://discourse.hakase-labs.co

Dhe do të ridrejtoheni te lidhja HTTPS.

Klikoni butonin Regjistrohu.

Tani duhet të krijojmë një llogari të re Administratori.

Shkruani emrin e përdoruesit dhe fjalëkalimin e administratorit, më pas kliko Regjistrohu.

Dhe do të merrni faqen për konfirmim me email. Kontrolloni kutinë tuaj të postës elektronike dhe sigurohuni që të merrni konfigurimin e emailit nga forumi i Diskursit si më poshtë.

Klikoni në Lidhje.

Dhe ju do të merrni faqen e mirëseardhjes së Diskursit.

Klikoni në butonin kliko këtu për të aktivizuar llogarinë tuaj. Dhe tani duhet të shkoni në faqen e mëposhtme.

Klikoni butonin Ndoshta më vonë.

Forumi i Diskursit është instaluar dhe ne marrim faqen kryesore të paracaktuar siç tregohet më poshtë.

Mund të shkoni te Paneli i Administratorit dhe do të merrni Panelin e Administratorit të Diskursit.

Softueri i Forumit të Diskursit është instaluar me Nginx si një përfaqësues i kundërt në serverin CentOS 7.

Hapi 6 - Konfigurimi shtesë i diskursit

Gjatë instalimit të Discourse, disa njerëz thonë se nuk marrin konfirmimin e emailit për aktivizimin e përdoruesit të administratorit.

Për këtë çështje, sigurohuni që të keni llogarinë e duhur SMTP në app.yml të konfigurimit. Ose mund ta aktivizoni llogarinë e administratorit manualisht nga serveri juaj.

Për të aktivizuar manualisht llogarinë tuaj të administratorit, shkoni te drejtoria /var/discourse.

cd /var/discourse

Tani hyni në kontejnerin e diskursit me komandën e mëposhtme.

./launcher enter app

Dhe aktivizoni përdoruesin e parë të administratorit duke përdorur komandën rails siç tregohet më poshtë.

rails c
u = User.last
u.admin = true
u.activate
u.save

Tani mund të hyni në forumin e Diskursit me emrin e përdoruesit dhe fjalëkalimin tuaj.

Referenca

  • https://meta.discourse.org/