Hướng dẫn Cài đặt Discouse trên server nginx
Discouse là gì? xem chi tiết tại discourse.org
Đây là cách mình cài đặt Discouse lên server nginx đang chạy với các website wordpress. Thông server như sau:
- Ubuntu 18.04
- Webinoly + Nginx
- Các website đang hoạt động
Các bước cài đặt discouse
sudo apt-get update
sudo apt-get remove docker docker-engine docker.io
sudo apt install docker.io
sudo systemctl start docker
sudo systemctl enable docker
docker --version
Cài đặt Discouse
sudo -s
git clone https://github.com/discourse/discourse_docker.git /var/discourse
cd /var/discourse
Tới đây, hãy dừng lại và thiết lập máy chủ thư email cho tên miền Discouse của bạn. Xem các liên kết bên dưới:
https://github.com/discourse/discourse/blob/master/docs/INSTALL-cloud.md #hướng dẫn cài đặt Discouse chính chủ
https://github.com/discourse/discourse/blob/master/docs/INSTALL-email.md #hướng dẫn cấu hình email.
Ok, sau khi đã có thông tin cấu hình email, ta tiếp tục cài đặt discouse.
Kiểm tra cổng
sudo netstat -tulpn
Ta thấy cổng 80 và cổng 443 đã bị sử dụng bởi nginx. vậy nên...
Dừng nginx
sudo systemctl stop nginx
Sử dụng lệnh kiểm tra cổng ở trên, nếu không thấy cổng 80 và 443 là được
Setup Discouse
./discourse-setup
Trả lời các câu hỏi sau khi được nhắc bằng thông tin của mail server:
Hostname for your Discourse? [discourse.example.com]:
Email address for admin account(s)? [me@example.com,you@example.com]:
SMTP server address? [smtp.example.com]:
SMTP port? [587]:
SMTP user name? [user@example.com]:
SMTP password? [pa$$word]:
Let's Encrypt account email? (ENTER to skip) [me@example.com]:
./launcher rebuild app
Sau khi tiến trình của dòng lệnh trên chạy xong, bạn có thể truy cập được tên miền bạn đã nhập trước đó trong trình duyệt web. Bạn hãy thiết lập tài khoản như trong hướng dẫn chính chủ.
Bây giờ website discouse của bạn đã hoạt động bình thường. Tiếp theo là bước rất quan trọng để khởi động lại nginx.
Dừng Discouse
./launcher stop app
Sửa tệp /var/discourse/containers/app.yml để trông như thế này:
templates:
- "templates/postgres.template.yml"
- "templates/redis.template.yml"
- "templates/web.template.yml"
- "templates/web.ratelimited.template.yml"
## Uncomment these two lines if you wish to add Lets Encrypt (https)
## - "templates/web.ssl.template.yml" # remove
## - "templates/web.letsencrypt.ssl.template.yml" # remove
- "templates/web.socketed.template.yml" # add
Tiếp theo, hãy nhập mã này
/etc/nginx/sites-enabled/discourse.conf
, đảm bảo thay đổi
server_name
vàssl_certificate
,ssl_certificate_key
server { listen 80; listen [::]:80; server_name forum.example.com; # <-- change this
return 301 https://$host$request_uri;}
server { listen 443 ssl http2; listen [::]:443 ssl http2; server_name forum.example.com; # <-- change this
ssl_certificate /var/discourse/shared/standalone/ssl/ssl.crt; # <-- change this ssl_certificate_key /var/discourse/shared/standalone/ssl/ssl.key; # <-- change this ssl_dhparam /var/discourse/shared/standalone/ssl/dhparams.pem; ssl_session_tickets off; ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:ECDHE-RSA-DES-CBC3-SHA:ECDHE-ECDSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA;
http2_idle_timeout 5m; # up from 3m default
location / { proxy_pass http://unix:/var/discourse/shared/standalone/nginx.http.sock:; proxy_set_header Host $http_host; proxy_http_version 1.1; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto https; proxy_set_header X-Real-IP $remote_addr; }}
Tạo khóa dhparams.pem
openssl dhparam -out /var/discourse/shared/standalone/ssl/dhparams.pem 2048
Kiểm tra lỗi nginx và khởi động lại
sudo nginx -t
sudo service nginx reload
Bây giờ chạy lại lệnh sau để áp dụng các thay đổi.
/launcher rebuild appBây giờ bạn đã có thể truy cập bình thường Discouse và các website khác của bạn.
Nhận xét