Cách cài đặt Discourse Forum với Nginx trên Ubuntu 16.04

theanh

Administrator
Nhân viên
Discourse là phần mềm mã nguồn mở và miễn phí để tạo cộng đồng diễn đàn Internet và danh sách gửi thư. Phần mềm này được tạo ra vào năm 2013 và được viết bằng ngôn ngữ lập trình Ruby và Javascript. Phần mềm diễn đàn Discourse đã được nhiều tổ chức sử dụng, bao gồm Codeacademy, Udacity, Twitter Developers và Docker Community Forum.

Trong hướng dẫn này, chúng tôi sẽ chỉ cho bạn từng bước cách cài đặt và cấu hình Discourse Forum với máy chủ web Nginx trên Ubuntu 16.04. Cụ thể, chúng tôi sẽ hướng dẫn bạn cách cài đặt Phần mềm Diễn đàn Discourse, cấu hình Nginx làm proxy ngược cho ứng dụng Discourse và bảo mật phần mềm diễn đàn Discourse bằng SSL miễn phí từ Letsencrypt.

Những việc chúng tôi sẽ làm​

  1. Cài đặt Docker trên Ubuntu 16.04
  2. Cài đặt và cấu hình phần mềm Diễn đàn Discourse
  3. Tạo SSLLetsencrypt trên Ubuntu 16.04
  4. Cài đặt và cấu hình Nginx làm proxy ngược cho Discourse
  5. Trình cài đặt Web Discourse
  6. Cấu hình bổ sung Discourse

Điều kiện tiên quyết​

  • Ubuntu 16.04
  • Quyền root
  • Tài khoản SMTP - Mailgun, SendGrid, Mailjet, v.v.

Bước 1 - Cài đặt Docker trên Ubuntu 16.04​

Phần mềm Discourse được viết bằng Ruby và Javascript, sử dụng PostgreSQL làm cơ sở dữ liệu chính và Redis làm bộ đệm và cho dữ liệu tạm thời. Chúng tôi sẽ cài đặt Discourse trong vùng chứa Docker.


Quá trình cài đặt sẽ được thực hiện trên Ubuntu 16.04. Vì vậy, để bắt đầu, hãy cài đặt Docker bằng lệnh bên dưới.
Mã:
wget -qO- https://get.docker.com/ | sh


Sau khi cài đặt hoàn tất, hãy kiểm tra dịch vụ docker và đảm bảo rằng nó đã chạy trên hệ thống.
Mã:
systemctl status docker
Và cũng đảm bảo rằng Docker đang ở trên ứng dụng khởi động.
Mã:
systemctl is-enabled docker

Bước 2 - Cài đặt và cấu hình diễn đàn discourse​

Ở bước này, chúng ta sẽ cài đặt và cấu hình phần mềm Discourse. Chúng tôi sẽ tải xuống tập lệnh docker-compose của discourse, cấu hình theo yêu cầu của chúng tôi và sau đó tạo vùng chứa Docker mới cho phần mềm diễn đàn discourse.

Tạo thư mục '/var/discourse' mới và sao chép tập lệnh cài đặt.
Mã:
mkdir -p /var/discourse
git clone https://github.com/discourse/discourse_docker.git /var/discourse
Bây giờ hãy đến thư mục 'discourse' và sao chép mẫu của tệp docker-compose.
Mã:
cd /var/discourse
cp samples/standalone.yml containers/app.yml
Chỉnh sửa tệp 'app.yml' bằng trình soạn thảo vim.
Mã:
vim containers/app.yml

Cấu hình ánh xạ cổng Docker​

Theo mặc định, tất cả các yêu cầu HTTP và HTTPS sẽ được xử lý bởi proxy Docker. Và trong hướng dẫn này, chúng ta sẽ sử dụng Nginx cho mục đích này - mọi HTTP và HTTPS sẽ được xử lý bởi máy chủ web Nginx.

Vì vậy, chúng ta cần thay đổi cấu hình ánh xạ cổng docker. Container Discourse sẽ chỉ có kết nối HTTP và máy chủ sẽ mở cổng mới '2045' và ánh xạ tới cổng container 80.

Bỏ chú thích dòng HTTPS và thay đổi dòng HTTP bằng cổng mới '2045'.
Mã:
expose:
 - "2045:80" # http
# - "443:443" # https

Cấu hình tên miền Discourse​

Nhập tên miền của riêng bạn cho discourse được cài đặt trên dòng 'DISCOURSE_HOSTNAME' như bên dưới.
Mã:
DISCOURSE_HOSTNAME: 'discourse.hakase-labs.me'
Và nhập địa chỉ email của bạn vào dòng 'DISCOURSE_DEVELOPER_EMAIL'.
Mã:
DISCOURSE_DEVELOPER_EMAILS: '[emailprotected]'

Cấu hình SMTP​

Đây là cấu hình quan trọng nhất đối với Discourse Software. Đảm bảo bạn có tài khoản SMTP để cài đặt Discourse - bạn có thể mua hoặc dùng thử tài khoản SMTP miễn phí từ Mailgun, Mailjet hoặc SendGrid.

Trong hướng dẫn này, chúng ta sẽ sử dụng tài khoản SMTP miễn phí từ Mailgun. Bỏ chú thích cấu hình SMTP và nhập tài khoản của bạn như bên dưới.
Mã:
ĐỊA CHỈ_SMTP_DISCOURSE: smtp.mailgun.org
 CỔNG_SMTP_DISCOURSE: 587
 TÊN_NGƯỜI_DÙNG_DISCOURSE: [emailprotected]
 MẬT_PHẦN_DISCOURSE: mypassword
Lưu và thoát.

Tiếp theo, xây dựng hình ảnh Docker Discourse mới dựa trên cấu hình mẫu app.yml.
Mã:
sudo ./launcher bootstrap app


Sau đó, bắt đầu/khởi tạo vùng chứa Discourse mới bằng lệnh bên dưới.
Mã:
sudo ./launcher start app


Bộ chứa Discourse phải được thiết lập và chạy - hãy kiểm tra bằng lệnh docker.
Mã:
docker ps -a
Kiểm tra cổng mở của máy chủ bằng netstat và đảm bảo cổng docker-proxy mới 2045 có trong danh sách.
Mã:
netstat -plntu


Phần mềm Diễn đàn Discourse đã được cài đặt dưới bộ chứa docker trên máy chủ Ubuntu 16.04.

Bước 3 - Tạo SSL Letsencrypt trên Ubuntu 16.04​

Diễn đàn Discourse sẽ chạy dưới kết nối bảo mật HTTP và sẽ được xử lý bởi máy chủ Web Nginx. Chúng tôi sẽ sử dụng SSL miễn phí từ Letsencrypt cho hướng dẫn này và chúng tôi cần cài đặt máy khách letsencrypt trên máy chủ.

Cài đặt letsencrypt bằng lệnh apt bên dưới.
Mã:
sudo apt install letsencrypt -y
Bây giờ hãy tạo chứng chỉ SSL mới bằng lệnh letsencrypt.
Mã:
letsencrypt certonly
Nhập địa chỉ email của bạn để nhận thông báo gia hạn và chọn 'OK'.



Đối với TOS (Điều khoản dịch vụ) của Letsencrypt, hãy chọn 'Đồng ý'.



Bây giờ hãy nhập tên miền discourse của bạn là 'discourse.hakase-labs.me'.



Và khi hoàn tất, bạn sẽ nhận được kết quả như bên dưới



Các chứng chỉ SSL mới từ letsencrypt đã được được tạo trong thư mục '/etc/letsencrypt/live'.

Bước 4 - Cài đặt và cấu hình Nginx làm proxy ngược cho container Discourse​

Trong bước này, chúng ta sẽ cài đặt máy chủ web Nginx và cấu hình nó làm proxy ngược cho container Discourse đang chạy trên cổng 2045.

Cài đặt Nginx bằng lệnh apt bên dưới.
Mã:
sudo apt install nginx -y
Bây giờ hãy khởi động Nginx và cho phép nó khởi chạy khi khởi động bằng lệnh systemctl.
Mã:
systemctl start nginx
systemctl enable nginx


Nginx đã được cài đặt và đang chạy trên cổng HTTP 80. Bạn có thể kiểm tra điều này bằng netstat.
Mã:
netstat -plntu
Máy chủ web Nginx đã được cài đặt vào máy chủ Ubuntu 16.04.



Tiếp theo, chúng ta cần tạo một tệp máy chủ ảo mới cho vùng chứa Discourse. Đi đến thư mục cấu hình nginx và tạo tệp 'discourse' mới bằng trình soạn thảo vim.
Mã:
cd /etc/nginx/
vim sites-available/discourse
Bây giờ, hãy dán cấu hình máy chủ ảo nginx Discourse sau.
Mã:
server {
 listen 80; listen [::]:80;
 server_name discourse.hakase-labs.me;

 return 301 https://$host$request_uri;
}

server {
 listen 443 ssl http2; 
 server_name discourse.hakase-labs.me;

 ssl_certificate /etc/letsencrypt/live/discourse.hakase-labs.me/fullchain.pem;
 ssl_certificate_key /etc/letsencrypt/live/discourse.hakase-labs.me/privkey.pem;
 include /etc/nginx/snippets/ssl.conf;

 location / {
 proxy_pass http://discourse.hakase-labs.me:2045/;
 proxy_set_header Máy chủ $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.me:2045/ https://discourse.hakase-labs.me;
 }
}
Lưu và thoát.

Lưu ý:
  • Tất cả các yêu cầu HTTP sẽ được tự động chuyển hướng đến kết nối HTTPS.
  • Thay đổi cấu hình SSL bằng thư mục đường dẫn của riêng bạn.
  • Có một cấu hình SSL bổ sung.
Bây giờ hãy tạo tệp cấu hình ssl bổ sung mới 'ssl.conf'.
Mã:
vim snippets/ssl.conf
Dán cấu hình sau vào tệp.
Mã:
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 đang bật;

ssl_stapling đang bật;
ssl_stapling_verify đang bật;

add_header Strict-Transport-Security "max-age=15768000; includeSubdomains; preload";
add_header X-Frame-Options DENY;
add_header X-Content-Type-Options nosniff;
Lưu và thoát.

Bây giờ hãy kích hoạt máy chủ ảo discourse bằng lệnh 'ln -s', như được hiển thị bên dưới.
Mã:
ln -s /etc/nginx/sites-available/discourse /etc/nginx/sites-enabled/
Kiểm tra cấu hình và đảm bảo không có lỗi, sau đó khởi động lại dịch vụ.
Mã:
nginx -t
systemctl restart nginx
Cài đặt và cấu hình Nginx làm proxy ngược cho vùng chứa Discourse đã hoàn tất.


Bước 5 - Trình cài đặt Discourse Web​

Mở trình duyệt web của bạn và truy cập URL diễn đàn.


Và bạn sẽ được chuyển hướng đến kết nối bảo mật HTTP. Nhấp vào nút 'Đăng ký' để tạo người dùng quản trị mới.



Bây giờ hãy nhập tên người dùng quản trị và mật khẩu của bạn, sau đó nhấp vào 'Đăng ký'.



Và bạn sẽ nhận được email xác nhận mới về việc kích hoạt người dùng quản trị của bạn.



Dưới đây là một email mẫu để xác nhận tài khoản Discourse. Nhấp vào liên kết để xác nhận và kích hoạt tài khoản quản trị.



Và bạn sẽ nhận được trang diễn đàn như hiển thị bên dưới. Nhấp vào nút 'Nhấp vào đây để kích hoạt tài khoản của bạn'.



Bây giờ bạn có thể cấu hình diễn đàn Discourse của riêng mình. Nhấp vào nút 'Tiếp theo' và bạn cần cấu hình Diễn đàn Discourse với 13 bước. Hoặc bạn có thể cấu hình sau bằng cách nhấp vào 'Có thể sau'.



Dưới đây là Discourse Forum được cài đặt trên máy chủ web Nginx và HTTPS trên Ubuntu 16.04.



Sau đây là Bảng điều khiển quản trị Discourse của tôi.



Discourse Forum đã được cài đặt với Nginx làm proxy ngược trên máy chủ Ubuntu 16.04.

Bước 6 - Cấu hình bổ sung Discourse​

Trong khi cài đặt Discourse, bạn có thể gặp phải sự cố không nhận được email xác nhận kích hoạt người dùng quản trị.

Để giải quyết sự cố, hãy đảm bảo bạn có đúng tài khoản SMTP trên configuration app.yml. Hoặc bạn có thể kích hoạt tài khoản quản trị viên theo cách thủ công từ máy chủ của mình.

Để kích hoạt tài khoản quản trị viên theo cách thủ công, hãy vào thư mục '/var/discourse'.
Mã:
cd /var/discourse
Bây giờ hãy truy cập vào vùng chứa discourse bằng lệnh bên dưới.
Mã:
./launcher enter app
Và kích hoạt người dùng quản trị viên đầu tiên bằng lệnh rails như bên dưới.

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

Và bây giờ bạn có thể đăng nhập vào diễn đàn Discourse bằng tên người dùng và mật khẩu của mình.

Tài liệu tham khảo​

 
Back
Bên trên