Thứ ba, 19/04/2016 | 00:00 GMT+7

Cách cài đặt Discourse Behind Nginx trên Ubuntu 14.04

Discourse là một nền tảng thảo luận cộng đồng open-souce được xây dựng cho web hiện đại.

Hướng dẫn này sẽ hướng dẫn bạn các bước cấu hình Discourse, di chuyển nó sau Reverse Proxy với Nginx và cấu hình certificate SSL cho nó với Let's Encrypt . Di chuyển Discourse đằng sau một proxy dự trữ cung cấp cho bạn sự linh hoạt để chạy các trang web khác trên Server.

Yêu cầu

Trước khi ta bắt đầu, hãy đảm bảo bạn có những điều sau:

  • Ubuntu 14.04 Server (1 GB trở lên)
  • User không phải root có quyền sudo ( Cài đặt server ban đầu với Ubuntu 14.04 giải thích cách cài đặt điều này.)
  • Discourse được cài đặt bằnghướng dẫn này
  • Tên domain đã đăng ký đầy đủ. Bạn có thể mua một cái trên Namecheap hoặc nhận một cái miễn phí trên Freenom .
  • Đảm bảo rằng domain của bạn được cấu hình để trỏ đến Server. Hãy xem hướng dẫn này nếu bạn cần trợ giúp.

Tất cả các lệnh trong hướng dẫn này phải được chạy với quyền user không phải root. Nếu cần có quyền truy cập root cho lệnh, nó sẽ được đặt trước sudo .

Bước 1 - Cấu hình diễn ngôn

Đến đây bạn đã cài đặt xong Discourse, ta cần cấu hình nó để hoạt động đằng sau Nginx.

Cảnh báo : Điều này sẽ dẫn đến thời gian chết trên diễn đàn Discourse của bạn cho đến khi ta cấu hình Nginx. Đảm bảo đây là bản cài đặt mới của Discourse hoặc có server dự phòng cho đến khi cấu hình hoàn tất.

Chỉ có một cài đặt mà ta cần thay đổi thành Discourse để ta có thể chuyển nó ra sau Nginx. Thay đổi thành folder chứa file cấu hình:

  • cd /var/discourse

Sau đó, mở file cấu hình mà ta cần thay đổi:

  • sudo nano containers/app.yml

Sử dụng các phím mũi tên, cuộn xuống phần expose (nó phải ở gần trên cùng) và thay đổi số cổng đầu tiên trên dòng này:

/var/discourse/containers/app.yml
... ## which TCP/IP ports should this container expose? expose:   - "25654:80"   # fwd host port 80   to container port 80 (http) ... 

Số này có thể là ngẫu nhiên và không nên chia sẻ với người khác. Bạn thậm chí có thể chặn truy cập trái phép vào nó bằng luật firewall iptables nếu muốn.

Bây giờ hãy lưu và thoát khỏi editor .

Cho phép thay đổi cấu hình bằng lệnh:

  • sudo ./launcher rebuild app

Bước này có thể mất một lúc, vì vậy hãy kiên nhẫn.

Bạn có thể xác minh mọi thứ đang hoạt động bằng cách truy cập trang web . Tên domain của bạn cho Discourse (chẳng hạn như http:// discourse.example.com ) sẽ không tải giao diện trong trình duyệt web nữa, nhưng sẽ có thể truy cập được nếu bạn sử dụng cổng vừa được cấu hình cho Discourse chẳng hạn như http:/// discourse.example.com : 25654 (thay thế discourse.example.com bằng domain của bạn và 25654 bằng cổng bạn vừa sử dụng trong bước này).

Bước 2 - Cài đặt và cấu hình Nginx

Bây giờ Discourse đã được cài đặt và cấu hình để hoạt động sau Nginx, đã đến lúc cài đặt Nginx.

Để cài đặt Nginx trên Ubuntu, chỉ cần nhập lệnh này và quá trình cài đặt sẽ bắt đầu:

  • sudo apt-get install nginx

Duyệt đến URL khóa luận cũ của bạn tại http:// discourse.example.com sẽ hiển thị trang web Nginx mặc định:

Trang đích Nginx mặc định

Điều này là tốt. Ta sẽ thay đổi điều này thành diễn đàn của bạn ngay bây giờ. Đầu tiên, hãy dừng Nginx lại:

  • sudo service nginx stop

Sau đó, xóa cấu hình trang web mặc định này - ta sẽ không cần nó:

  • sudo rm /etc/nginx/sites-enabled/default

Tiếp theo, ta sẽ tạo một file cấu hình mới cho server Discourse của ta , ta sẽ đặt tên cho discourse .

  • sudo nano /etc/nginx/sites-enabled/discourse

Sao chép và paste vào cấu hình sau. Thay thế discourse.example.com bằng domain của bạn và 25654 bằng cổng mà bạn vừa sử dụng ở bước trước:

/ etc / nginx / sites-enable / discourse
server {         listen 80;         server_name discourse.example.com;         return 301 https://discourse.example.com$request_uri; } server {         listen 443 ssl spdy;          server_name discourse.example.com;         ssl_certificate /etc/letsencrypt/live/discourse.example.com/fullchain.pem;         ssl_certificate_key /etc/letsencrypt/live/discourse.example.com/privkey.pem;         ssl_protocols TLSv1 TLSv1.1 TLSv1.2;         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';         ssl_prefer_server_ciphers on;         location / {                 proxy_pass      http://discourse.example.com:25654/;                 proxy_read_timeout      90;                 proxy_redirect  http://discourse.example.com:25654/ https://discourse.example.com;         } } 

Đây là những gì cấu hình này làm:

  • Khối server đầu tiên đang lắng nghe trên domain discourse.example.com trên cổng 80 và nó chuyển hướng tất cả các yêu cầu đến SSL trên cổng 443. Đây là tùy chọn, nhưng nó buộc SSL trên trang web cho tất cả user .
  • Khối server thứ hai nằm trên cổng 443 và đang chuyển yêu cầu đến web server đang chạy trên cổng 25654 (trong trường hợp này là Discourse). Về cơ bản, điều này sử dụng Reverse Proxy để gửi các trang Diễn văn đến user của bạn và quay lại qua SSL.

Bạn có thể nhận thấy rằng ta đang tham khảo một số certificate tại /etc/letsencrypt . Trong bước tiếp theo, ta sẽ tạo chúng trước khi khởi động lại Nginx.

Bước 3 - Tạo certificate SSL

Để tạo certificate SSL, trước tiên ta sẽ cài đặt ứng dụng client ACME của Let's Encrypt. Phần mềm này cho phép ta tạo certificate SSL.

  • sudo git clone https://github.com/letsencrypt/letsencrypt /opt/letsencrypt

Sau đó vào folder letsencrypt :

  • cd /opt/letsencrypt/

Cài đặt các gói theo yêu cầu của Let's Encrypt lần đầu tiên:

  • ./letsencrypt-auto --help

Bây giờ ta có thể tạo certificate của bạn bằng cách chạy (thay thế bằng địa chỉ email và domain của bạn):

  • ./letsencrypt-auto certonly --standalone --email sammy@example.com --agree-tos -d discourse.example.com

Lưu ý: Let's Encrypt sẽ chỉ cấp certificate cho domain . Bạn sẽ gặp lỗi nếu cố sử dụng địa chỉ IP. Nếu bạn cần một domain , hãy xem các liên kết trong phần Yêu cầu .

Bạn sẽ nhận được phản hồi khá nhanh, tương tự như sau:

Hãy mã hóa kết quả
IMPORTANT NOTES:  - If you lose your account credentials, you can recover through    e-mails sent to sammy@example.com.  - Congratulations! Your certificate and chain have been saved at    /etc/letsencrypt/live/discourse.example.com/fullchain.pem. Your    cert will expire on 2016-04-26. To obtain a new version of the    certificate in the future, simply run Let's Encrypt again.  - Your account credentials have been saved in your Let's Encrypt    configuration directory at /etc/letsencrypt. You should make a    secure backup of this folder now. This configuration directory will    also contain certificates and private keys obtained by Let's    Encrypt so making regular backups of this folder is ideal. 

Bạn sẽ nhận thấy nó cho biết certificate của bạn đã được lưu trong /etc/letsencrypt/live/ discourse.example.com . Điều này nghĩa là cấu hình Nginx của ta hiện đã hợp lệ. Bạn cũng sẽ nhận thấy rằng ngày hết hạn không còn quá xa. Điều này là bình thường với certificate Let's Encrypt. Tất cả những gì bạn phải làm để gia hạn là chạy lại chính lệnh đó, nhưng đăng nhập cứ sau 90 ngày không phải là điều thú vị, vì vậy ta sẽ tự động hóa nó trong bước tiếp theo.

Bước 4 - Tự động hóa gia hạn certificate Let's Encrypt

Bây giờ ta đã cài đặt certificate của bạn lần đầu tiên, ta nên đảm bảo chúng sẽ tự động gia hạn. Chứng chỉ Let's Encrypt chỉ có giá trị trong 90 ngày, sau đó chúng sẽ hết hạn và hiển thị cảnh báo cho tất cả khách truy cập vào trang web trong trình duyệt. Tại thời điểm viết, tính năng tự động gia hạn không được tích hợp trong ứng dụng client , nhưng ta có thể cài đặt một tập lệnh để gia hạn chúng theo cách thủ công.

Tham khảo bước Cài đặt Tự động Gia hạn của Cách Bảo mật Nginx bằng Let's Encrypt trên Ubuntu 14.04 để biết chi tiết về cách cài đặt cron job để tự động gia hạn certificate của bạn.

Bất kỳ kết quả nào được tạo bởi lệnh này sẽ có tại /var/log/certificate-renewal.log để khắc phục sự cố.

Bước 5 - Khởi động lại Nginx

Cuối cùng, cấu hình của ta sẽ hoàn tất. Khởi động lại Nginx bằng cách chạy lệnh này:

  • sudo service nginx restart

Bây giờ, nếu bạn duyệt đến https:// discourse.example.com / trang web sẽ trực tuyến và được bảo mật bằng Let's Encrypt, được hiển thị dưới dạng ổ khóa màu xanh lục trong hầu hết các trình duyệt.

Kết luận

Đó là nó! Như vậy, bạn có một diễn đàn Discourse được cài đặt sau Nginx, được bảo mật bằng các tiêu chuẩn SSL mới nhất với Let's Encrypt.


Tags:

Các tin liên quan

Cách thiết lập Nginx với Hỗ trợ HTTP / 2 trên Ubuntu 16.04
2016-04-12
Cách thêm module gzip vào Nginx trên CentOS 7
2016-03-15
Cách thêm module gzip vào Nginx trên Ubuntu 14.04
2016-03-09
Cách thiết lập xác thực HTTP cơ bản với Nginx trên Ubuntu 14.04
2016-02-22
Cách thiết lập xác thực HTTP cơ bản với Nginx trên CentOS 7
2016-02-22
Cách bảo mật Nginx trên Ubuntu 14.04
2016-02-12
Cách bảo mật Nginx bằng Let's Encrypt trên CentOS 7
2016-01-26
Cách bảo mật Nginx bằng Let's Encrypt trên Ubuntu 14.04
2015-12-17
Cách chạy Nginx trong Docker Container trên Ubuntu 14.04
2015-10-28
Cách thêm ngx_pagespeed vào Nginx trên CentOS 7
2015-09-30