Hướng dẫn cài Discourse + WordPress trên cùng server

Cài đặt diễn đàn Discourse và WordPress trên cùng một server giúp bạn tiết kiệm chi phí, tận dụng dược domain và subdomain…

Bài này hướng dẫn trên Server mới, sẽ chạy docker và nginx, không nên thực hiện trên server có web wordpress đang chạy. (Tham khảo từ discourse).

Bắt đầu từng bước một cài Discourse + WordPress

Bước 1: Server mới chạy linux (Ubuntu, CentOS)

Chắc chắn rồi, bạn phải sở hữu một server Ram ít nhất 1G nếu chỉ chạy Discourse, vì bình thường nó cũng ngốn 8-900MB rồi. Sử dụng chung wp nữa thì đề nghị là 4GB ram nhé.

Nếu đã có VPS đang chạy Discourse thì xem Bước 3

Bước 2: Cài Discourse

Xem bài: Hướng dẫn cài Discourse trên server

Đảm bảo Discourse hoạt động bình thường.

Bước 3: Dừng Discourse

Tạm dừng Discourse

cd /var/discourse
./launcher stop app

Sửa file app.yml trong thư mục var/discourse/containers/

Tìm đoạn sau:

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"
  - "templates/web.letsencrypt.ssl.template.yml"
## which TCP/IP ports should this container expose?
## If you want Discourse to share a port with another webserver like Apache or nginx,
## see https://meta.discourse.org/t/17247 for details
expose:
  - "80:80"   # http
  - "443:443" # https

Và sửa thành:

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"
# - "templates/web.letsencrypt.ssl.template.yml"
  - "templates/web.socketed.template.yml"  # <-- Added
## which TCP/IP ports should this container expose?
## If you want Discourse to share a port with another webserver like Apache or nginx,
## see https://meta.discourse.org/t/17247 for details
expose:
# - "80:80"   # http
# - "443:443" # https

Bước 4: Cài Wordops + WordPress

Sau khi hoàn thành bước 3, bắt đầu cài Wordops sau đó tạo một site wordpress. Xem bài viết cài đặt Wordops trên server

Đảm bảo website wordpress hoạt động bình thường sau khi cài.

Cài đặt tương tự đối với script Webinoly, xem hướng dẫn cài webinoly
Đã test thành công Discourse + WordPress – Webinoly trên cùng một vps

Bước 5: Tạo file discourse.conf

Trong thư mục /etc/nginx/sites-enabled/ tạo file discourse.conf với nội dung sau:

server {
    listen 80; listen [::]:80;
    server_name domain.com;  # <-- change this
    return 301 https://$host$request_uri;
}
server {
    listen 443 ssl http2;  listen [::]:443 ssl http2;
    server_name domain.com;  # <-- change this
    ssl on;
    ssl_certificate      /var/discourse/shared/standalone/ssl/domain.com.cer;  # <-- change this
    ssl_certificate_key  /var/discourse/shared/standalone/ssl/domain.com.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;
    }
}

Nhớ thay domain.com bằng tên miền discourse của bạn nhé.

Tạo dhparams.pem

openssl dhparam -out /var/discourse/shared/standalone/ssl/dhparams.pem 2048

Và chạy các lệnh cuối cùng:

# Make sure that Discourse isn't running
/var/discourse/launcher stop app || true
# test configuration
sudo nginx -t
# Important: If nginx -t comes back with an error, correct the config before reloading!
sudo service nginx reload
# Rebuild the container to apply changes
/var/discourse/launcher rebuild app

Bây giờ làm mới Discourse và WordPress và xem kết quả.

Logo
Register New Account
Reset Password