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, Docker Community Forum, v.v.
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 máy chủ CentOS 7. 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
Cài đặt Docker trên CentOS 7 bằng lệnh sau.
Nếu bạn không có lệnh wget, hãy cài đặt lệnh này từ kho lưu trữ.
Nếu quá trình cài đặt hoàn tất, hãy khởi động dịch vụ Docker và cho phép dịch vụ này khởi chạy khi khởi động bằng các lệnh systemctl sau.
Công cụ Docker đã được cài đặt và đang chạy trên máy chủ CentOS 7. Kiểm tra trạng thái dịch vụ bằng lệnh sau.
Dịch vụ Docker đang hoạt động và đang chạy.
Trước khi tải xuống discourse, chúng ta cần cài đặt lệnh git vào máy chủ.
Bây giờ hãy tạo một thư mục mới '/var/discourse' và tải xuống/sao chép tập lệnh docker của discourse bằng lệnh git.
Đi tới thư mục discourse và sao chép một mẫu tập lệnh docker-compose 'standalone.yml' vào thư mục '/var/discourse/containers/' có tên là 'app.yml'.
Bây giờ hãy chỉnh sửa tệp 'app.yml' bằng vim.
- Docker Port Mapping
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à đối với hướng dẫn này, chúng ta sẽ sử dụng Nginx cho mục đích này - tất cả các 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', như hiển thị bên dưới.
- 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.
Và nhập địa chỉ email của bạn vào dòng 'DISCOURSE_DEVELOPER_EMAIL'.
- Cấu hình SMTP
Cấu hình SMTP là cấu hình quan trọng nhất đối với Phần mềm Discourse. Đả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.
Đối với hướng dẫn này, chúng ta sẽ sử dụng tài khoản SMTP miễn phí từ Mailgun. Đăng ký với Mailgun và cấu hình tên miền của bạn, và đảm bảo bạn nhận được thông tin chi tiết về tài khoản SMTP của mình.
Sau đó bỏ ghi chú cấu hình SMTP và nhập thông tin chi tiết về tài khoản của bạn như bên dưới.
Vậy là xong. Lưu các thay đổi và thoát khỏi trình chỉnh sửa.
Tiếp theo, xây dựng hình ảnh Discourse Docker mới dựa trên cấu hình mẫu app.yml.
Nếu mọi thứ đã hoàn tất, hãy bắt đầu/khởi tạo vùng chứa Discourse mới bằng lệnh sau.
Và vùng chứa Discourse Docker đã hoạt động - hãy kiểm tra bằng lệnh 'docker ps'.
Kiểm tra cổng mở của máy chủ bằng netstat và đảm bảo rằng dịch vụ mới docker-proxy có cổng 2045 có trong danh sách.
Phần mềm Diễn đàn Discourse đã được cài đặt trong vùng chứa docker trên máy chủ CentOS 7.
Cài đặt công cụ dòng lệnh Letsencrypt bằng lệnh yum theo cách sau.
Sau khi cài đặt, hãy thêm dịch vụ HTTP và HTTPS mới vào cấu hình Firewalld.
Bây giờ hãy tạo chứng chỉ SSL mới cho diễn đàn Discourse bằng lệnh letsencrypt bên dưới.
Bạn sẽ thấy hai xác minh từ Letsencrypt. Nhập số '1' để khởi tạo máy chủ web tạm thời để xác thực.
Trong phần này, hãy nhập địa chỉ email của bạn để gia hạn thông báo, nhập 'A' để đồng ý với TOS (Điều khoản dịch vụ) của letsencrypt.
Bây giờ hãy nhập tên miền discourse là 'discourse.hakase-labs.co'.
Và khi quá trình hoàn tất, bạn sẽ nhận được kết quả như bên dưới.
Chứng chỉ SSL mới từ letsencrypt đã được tạo trong thư mục '/etc/letsencrypt/live'.
Trước khi cài đặt máy chủ web Nginx, chúng ta cần cài đặt kho lưu trữ EPEL trên hệ thống.
Bây giờ hãy cài đặt nginx từ kho lưu trữ EPEL bằng lệnh yum sau.
Sau khi cài đặt hoàn tất, hãy vào thư mục cấu hình nginx '/etc/nginx'.
Và tạo một cấu hình SSL bổ sung mới 'ssl.conf' bằng vim.
Dán cấu hình SSL sau vào đó.
Lưu các thay đổi và thoát khỏi trình soạn thảo.
Tiếp theo, tạo tệp máy chủ ảo nginx mới 'discourse.conf' cho Discourse.
Dán cấu hình sau vào đó.
Lưu và thoát.
Bây giờ hãy kiểm tra cấu hình nginx và đảm bảo không có lỗi. Sau đó khởi động lại dịch vụ Nginx.
Quá trình cài đặt và cấu hình Nginx như một proxy ngược cho vùng chứa Discourse đã hoàn tất.
Và bạn sẽ được chuyển hướng đến kết nối HTTPS.
Nhấp vào nút 'Đăng ký'.
Bây giờ chúng ta cần tạo một tài khoản 'Quản trị viên' mới.
Nhập tên người dùng và mật khẩu quản trị viên của bạn, sau đó nhấp vào 'Đăng ký'.
Và bạn sẽ nhận được trang xác nhận email. Kiểm tra hộp thư đến email của bạn và đảm bảo bạn nhận được cấu hình email từ diễn đàn Discourse như bên dưới.
Nhấp vào 'Liên kết'.
Và bạn sẽ nhận được trang 'Discourse Welcome'.
Nhấp vào nút 'nhấp vào đây để kích hoạt tài khoản của bạn'. Và bây giờ bạn sẽ đến trang sau.
Nhấp vào nút 'Có thể sau'.
Diễn đàn Discourse đã được cài đặt và chúng ta sẽ có trang chủ mặc định như hiển thị bên dưới.
Bạn có thể vào 'Bảng điều khiển quản trị' và sẽ thấy Bảng điều khiển quản trị Discourse.
Phần mềm Diễn đàn Discourse đã được cài đặt với Nginx làm proxy ngược trên máy chủ CentOS 7.
Đối với sự cố này, hãy đảm bảo rằng 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'.
Bây giờ hãy truy cập vào vùng chứa discourse bằng lệnh sau.
Và kích hoạt người dùng quản trị viên đầu tiên bằng lệnh rails như hiển thị bên dưới.
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.
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 máy chủ CentOS 7. 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
- Cài đặt Docker trên CentOS 7
- Cài đặt và cấu hình Phần mềm Diễn đàn Discourse
- Tạo SSL Letsencrypt trên CentOS 7
- Cài đặt và cấu hình Nginx làm Proxy ngược cho Discourse
- Trình cài đặt web Discourse
- Cấu hình bổ sung Discourse
- CentOS 7
- Quyền root
- Tài khoản SMTP - ví dụ: từ Mailgun, SendGrid hoặc Mailjet
Bước 1 - Cài đặt Docker trên CentOS 7
Diễn đàn Discourse sẽ được cài đặt trong vùng chứa Docker. Vì vậy, bước đầu tiên chúng ta phải làm là cài đặt Docker trên máy chủ CentOS 7 của mình.Cài đặt Docker trên CentOS 7 bằng lệnh sau.
Mã:
wget -qO- https://get.docker.com/ | sh
Mã:
yum -y install wget
Mã:
systemctl start docker
systemctl enable docker
Mã:
systemctl status docker
Bước 2 - Cài đặt và cấu hình Phần mềm Diễn đàn Discourse
Trong bước này, chúng ta sẽ cài đặt và cấu hình phần mềm Discourse. Chúng ta sẽ tải xuống tập lệnh docker-compose của discourse, cấu hình theo nhu cầu và sau đó tạo một vùng chứa Docker mới cho phần mềm diễn đàn discourse.Trước khi tải xuống discourse, chúng ta cần cài đặt lệnh git vào máy chủ.
Mã:
yum -y install git
Mã:
mkdir -p /var/discourse
git clone https://github.com/discourse/discourse_docker.git /var/discourse
Mã:
cd /var/discourse
cp samples/standalone.yml containers/app.yml
Bây giờ hãy chỉnh sửa tệp 'app.yml' bằng vim.
Mã:
vim containers/app.yml
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à đối với hướng dẫn này, chúng ta sẽ sử dụng Nginx cho mục đích này - tất cả các 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', như hiển thị bên dưới.
Mã:
expose:
- "2045:80" # http
# - "443:443" # https
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.co'
Mã:
DISCOURSE_DEVELOPER_EMAILS: '[emailprotected]'
Cấu hình SMTP là cấu hình quan trọng nhất đối với Phần mềm Discourse. Đả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.
Đối với hướng dẫn này, chúng ta sẽ sử dụng tài khoản SMTP miễn phí từ Mailgun. Đăng ký với Mailgun và cấu hình tên miền của bạn, và đảm bảo bạn nhận được thông tin chi tiết về tài khoản SMTP của mình.
Sau đó bỏ ghi chú cấu hình SMTP và nhập thông tin chi tiết về tài khoản của bạn như bên dưới.
Mã:
DISCOURSE_SMTP_ADDRESS: smtp.mailgun.org
DISCOURSE_SMTP_PORT: 587
DISCOURSE_SMTP_USER_NAME: [emailprotected]
DISCOURSE_SMTP_PASSWORD: mypassword
Tiếp theo, xây dựng hình ảnh Discourse Docker mới dựa trên cấu hình mẫu app.yml.
Mã:
sudo ./launcher bootstrap app
Nếu mọi thứ đã hoàn tất, hãy bắt đầu/khởi tạo vùng chứa Discourse mới bằng lệnh sau.
Mã:
sudo ./launcher start app
Và vùng chứa Discourse Docker đã hoạt động - hãy kiểm tra bằng lệnh 'docker ps'.
Mã:
docker ps -a
Mã:
netstat -plntu
Phần mềm Diễn đàn Discourse đã được cài đặt trong vùng chứa docker trên máy chủ CentOS 7.
Bước 3 - Tạo SSL Letsencrypt trên CentOS 7
Đối với hướng dẫn này, chúng tôi sẽ chạy diễn đàn Discourse trên máy chủ web Nginx và chỉ chấp nhận kết nối HTTPS. Với mục đích này, chúng ta cần Chứng chỉ SSL mới cho tên miền, vì vậy, chúng ta sẽ sử dụng chứng chỉ SSL miễn phí từ Letsencrypt.Cài đặt công cụ dòng lệnh Letsencrypt bằng lệnh yum theo cách sau.
Mã:
yum -y install letsencrypt
Mã:
firewall-cmd --add-service=http --permanent
firewall-cmd --add-service=https --permanent
firewall-cmd --reload
Bây giờ hãy tạo chứng chỉ SSL mới cho diễn đàn Discourse bằng lệnh letsencrypt bên dưới.
Mã:
letsencrypt certonly
Trong phần này, hãy nhập địa chỉ email của bạn để gia hạn thông báo, nhập 'A' để đồng ý với TOS (Điều khoản dịch vụ) của letsencrypt.
Bây giờ hãy nhập tên miền discourse là 'discourse.hakase-labs.co'.
Và khi quá trình hoàn tất, bạn sẽ nhận được kết quả như bên dưới.
Chứng chỉ SSL mới từ letsencrypt đã đượ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 Discourse
Trong hướng dẫn này, chúng ta sẽ sử dụng máy chủ web Nginx làm proxy ngược cho Discourse đang chạy dưới vùng chứa Docker. Máy chủ web Nginx sẽ chạy dưới cổng HTTP và HTTPS, và tất cả các yêu cầu của máy khách sẽ được Nginx xử lý.Trước khi cài đặt máy chủ web Nginx, chúng ta cần cài đặt kho lưu trữ EPEL trên hệ thống.
Mã:
yum -y install epel-release
Mã:
yum -y install nginx
Mã:
cd /etc/nginx/
Mã:
vim ssl.conf
Mã:
ssl_session_timeout 1d;
ssl_session_cache đã chia sẻ: SSL: 50 phút;
ssl_session_tickets tắt;
ssl_protocols TLSv1.2;
ssl_ciphers EECDH+AESGCM: EECDH+AES;
ssl_ecdh_curve secp384r1;
ssl_prefer_server_ciphers bật;
ssl_stapling bật;
ssl_stapling_verify 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;
Tiếp theo, tạo tệp máy chủ ảo nginx mới 'discourse.conf' cho Discourse.
Mã:
vim conf.d/discourse.conf
Mã:
máy chủ {
lắng nghe 80; lắng nghe [::]:80;
tên máy chủ discourse.hakase-labs.co;
# Tự động chuyển hướng HTTP sang HTTPS Nginx
trả về 301 https://$host$request_uri;
}
máy chủ {
lắng nghe 443 ssl http2;
server_name discourse.hakase-labs.co;
# Cấu hình SSL
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;
# Cấu hình Proxy ngược
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;
}
}
Bây giờ hãy kiểm tra cấu hình nginx và đảm bảo không có lỗi. Sau đó khởi động lại dịch vụ Nginx.
Mã:
nginx -t
systemctl restart nginx
Quá trình cài đặt và cấu hình Nginx như một proxy ngược cho vùng chứa Discourse đã hoàn tất.
Bước 5 - Trình cài đặt web Discourse
Mở trình duyệt web của bạn và truy cập URL discourse, URL của tôi là:Và bạn sẽ được chuyển hướng đến kết nối HTTPS.
Nhấp vào nút 'Đăng ký'.
Bây giờ chúng ta cần tạo một tài khoản 'Quản trị viên' mới.
Nhập tên người dùng và mật khẩu quản trị viên của bạn, sau đó nhấp vào 'Đăng ký'.
Và bạn sẽ nhận được trang xác nhận email. Kiểm tra hộp thư đến email của bạn và đảm bảo bạn nhận được cấu hình email từ diễn đàn Discourse như bên dưới.
Nhấp vào 'Liên kết'.
Và bạn sẽ nhận được trang 'Discourse Welcome'.
Nhấp vào nút 'nhấp vào đây để kích hoạt tài khoản của bạn'. Và bây giờ bạn sẽ đến trang sau.
Nhấp vào nút 'Có thể sau'.
Diễn đàn Discourse đã được cài đặt và chúng ta sẽ có trang chủ mặc định như hiển thị bên dưới.
Bạn có thể vào 'Bảng điều khiển quản trị' và sẽ thấy Bảng điều khiển quản trị Discourse.
Phần mềm Diễn đàn Discourse đã được cài đặt với Nginx làm proxy ngược trên máy chủ CentOS 7.
Bước 6 - Cấu hình bổ sung Discourse
Trong quá trình cài đặt Discourse, một số người nói rằng họ không nhận được email xác nhận để kích hoạt người dùng quản trị.Đối với sự cố này, hãy đảm bảo rằng 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
Mã:
./launcher enter app
Mã:
rails c
u = User.last
u.admin = true
u.activate
u.save