Discourse là một phần mềm miễn phí để tạo diễn đàn trực tuyến và quản lý danh sách gửi thư. Bài viết này sẽ hướng dẫn bạn cài đặt Discourse trên CentOS 7.
Cài đặt Discourse trên CentOS 7 – Discourse là một phần mềm miễn phí để tạo diễn đàn trực tuyến và quản lý danh sách gửi thư. Nó đượ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 văn đã được nhiều tổ chức sử dụng, bao gồm Codeacademy, Udacity, Twitter Developers, Docker Community Forum, v.v.
Trong bài này HOSTVN Chúng tôi sẽ hướng dẫn bạn cài đặt Discourse, định cấu hình Nginx làm proxy ngược cho Discourse và bảo mật Discourse bằng SSL Let’s Encrypt.
Cài đặt Discourse trên CentOS 7
1. Điều kiện tiên quyết
- VPS có ít nhất 1GB RAM.
- CentOS 7
- Tài khoản SMTP – ví dụ: Gmail
2. Cài đặt Discourse trên CentOS 7
2.1. Bước 1: Tạo hoán đổi
Nếu VPS của bạn có nhiều hơn 1GB RAM, bạn có thể bỏ qua bước này. Với VPS chỉ có 1GB RAM, bạn nên tạo thêm 2GB Swap. Để tạo Swap cho CentOS, hãy xem hướng dẫn tạo Swap trên CentOS 7.
2.2. Bước 2: Cài đặt Docker
Docker là một công nghệ container hóa cho phép bạn nhanh chóng xây dựng, kiểm tra và triển khai các ứng dụng dưới dạng các container di động, tự cung cấp năng lượng có thể chạy hầu như ở mọi nơi. Docker đã trở thành tiêu chuẩn thực tế để triển khai vùng chứa và nó là một công cụ cần thiết cho các kỹ sư DevOps.
Để cài đặt Docker trên CentOS 7, hãy làm theo các bước bên dưới
Đầu tiên bạn cần cập nhật hệ thống và cài đặt một số gói cần thiết:
yum -y update yum -y install epel-release yum -y install yum-utils device-mapper-persistent-data lvm2
Tiếp theo, chạy lệnh sau sẽ thêm kho lưu trữ Docker vào hệ thống của bạn:
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
Sau khi thêm kho lưu trữ Docker, hãy sử dụng lệnh dưới đây để cài đặt Docker
yum -y install docker-ce
Khi Docker được cài đặt, hãy chạy các lệnh sau để khởi động Docker:
systemctl start docker systemctl enable docker
Để kiểm tra xem Docker có hoạt động hay không, hãy sử dụng lệnh sau:
systemctl status docker
- Cài đặt Docker Compose
Để cài đặt Docker Compose, bạn sử dụng các lệnh sau
curl -L "https://github.com/docker/compose/releases/download/1.25.5/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose chmod +x /usr/local/bin/docker-compose ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
Để kiểm tra phiên bản Docker Compose, hãy sử dụng lệnh
docker-compose --version
2.3. Bước 3: Cài đặt và cấu hình Discourse
Ở bước này, chúng ta sẽ tiến hành cài đặt và cấu hình Discourse. Đầu tiên chúng ta cần cài đặt git cho máy chủ.
yum -y install git
Bây giờ hãy tạo một thư mục mới / var / discourse và tải xuống Trình kết nối diễn văn bằng lệnh git.
mkdir -p /var/discourse git clone https://github.com/discourse/discourse_docker.git /var/discourse
Di chuyển đến thư mục / var / discourse và sao chép trình soạn thảo-docker tập tin standalone.yml đi đến thư mục / var / discourse / container / và đổi tên nó thành app.yml.
cd /var/discourse cp samples/standalone.yml containers/app.yml
Chỉnh sửa tệp app.yml với Nano
nano 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. Trong bài viết này, HOSTVN sẽ sử dụng Nginx cho mục đích này – tất cả các yêu cầu HTTP và HTTPS sẽ được máy chủ web Nginx xử lý.
Vì vậy, chúng ta cần thay đổi cấu hình Ánh xạ cổng Docker. Vùng chứa khóa luận sẽ chỉ có kết nối HTTP và máy chủ sẽ được mở cổng mới 2045 và được ánh xạ tới cảng container 80. Thêm dấu # chuyển đến dòng HTTPS và thay đổi dòng HTTP bằng cổng mới 2045.
- Định cấu hình db_shared_buffers
Bỏ ký tên # tai dong db_shared_buffers. Đặt tham số db_shared_buffers lên đến 25% dung lượng RAM. Với VPS Ram 1GB, bạn nên đặt thông số này là 128MB
Bỏ ký tên # tai dong UNICORN_WORKERS. Với thông số RAM 1GB của VPS UNICORN_WORKERS Bạn đặt là 2, với VPS RAM 2GB có thể đặt thông số này là 3 hoặc 4
Nhập tên miền của bạn vào dòng DISCOURSE_HOSTNAME.
Đừng quên trỏ miền của bạn tới VPS
Nhập địa chỉ email của bạn vào dòng DISCOURSE_DEVELOPER_EMAIL.
Cấu hình SMTP là cấu hình quan trọng nhất cho Discourse. Trong bài này HOSTVN sẽ sử dụng SMTP miễn phí của Gmail. Xóa dấu hiệu # từ những dòng DISCOURSE_SMTP_PORT và DISCOURSE_SMTP_ENABLE_START_TLS. Cấu hình của bạn sẽ giống như sau
DISCOURSE_SMTP_ADDRESS: smtp.gmail.com DISCOURSE_SMTP_PORT: 587 DISCOURSE_SMTP_USER_NAME: [email protected] DISCOURSE_SMTP_PASSWORD: Mật-Khẩu-Ứng-Dụng DISCOURSE_SMTP_ENABLE_START_TLS: true # (optional, default true)
Sau khi cấu hình xong, nhấn Điều khiển + o và hãy nhấn đi vào để lưu tệp, Điều khiển + x để thoát khỏi nano. Tiếp theo, xây dựng cơ sở hình ảnh Discourse Docker mới dựa trên cấu hình mẫu app.yml.
./launcher bootstrap app
Sau khi quá trình xây dựng hoàn tất, hãy bắt đầu vùng chứa Discourse mới bằng lệnh sau
./launcher start app
Để kiểm tra xem Các vùng chứa Docker của Discourse cho dù nó hoạt động hay không, bạn sử dụng lệnh sau
docker ps -a
Kiểm tra các cổng đang được lắng nghe netstat và đảm bảo rằng docker-proxy nghe trên cổng 2045.
netstat -plntu
2.4. Bước 4: Cài đặt SSL Let’s Encrypt
Đối với hướng dẫn này, HOSTVN sẽ chạy Discourse với máy chủ web Nginx và chỉ chấp nhận các kết nối HTTPS. Vì mục đích này, một Chứng chỉ SSL mới sẽ cần thiết cho tên miền và do đó, HOSTVN sẽ sử dụng chứng chỉ SSL miễn phí từ Letsencrypt.
yum -y install letsencrypt
Sau khi cài đặt, nếu bạn sử dụng Firewalld Bạn sẽ cần thêm các dịch vụ HTTP và HTTPS vào cấu hình Firewalld của mình.
firewall-cmd --add-service=http --permanent firewall-cmd --add-service=https --permanent firewall-cmd --reload
Tiếp theo, tạo chứng chỉ SSL mới cho Discourse bằng lệnh sau.
letsencrypt certonly
Bạn sẽ thấy hai cách xác minh từ Letsencrypt. Vui lòng nhập Đầu tiên và hãy nhấn đi vào
Tiếp theo nhập Email của bạn và nhấn đi vào
Nhập khẩu Một và hãy nhấn đi vào đồng ý với Let’s Encrypt
Bước tiếp theo nhập NHỮNG NGƯỜI PHỤ NỮ và hãy nhấn đi vào
Cuối cùng, nhập miền sử dụng Discourse của bạn
Chứng chỉ SSL mới từ letsencrypt đã được tạo trong thư mục / etc / letsencrypt / live.
- Định cấu hình SSL tự động gia hạn
Để tự động gia hạn SSL, bạn tạo Cron Job như sau
EDITOR=nano crontab -e
Dán phần sau vào đó
30 2 * * 1 /usr/bin/certbot renew >> /var/log/le-renew.log 35 2 * * 1 /bin/systemctl reload nginx
Sau đó nhấn Điều khiển + o và hãy nhấn đi vào để lưu tệp, nhấn Điều khiển + x để thoát khỏi nano.
2.5. Bước 5: Cài đặt và định cấu hình Nginx làm Reverse Proxy
Đầu tiên bạn cần thiết lập kho lưu trữ nginx để có thể cài đặt Nginx phiên bản mới nhất qua yum.
nano /etc/yum.repos.d/nginx.repo
Dán nội dung bên dưới
[nginx-stable] name=nginx stable repo baseurl=http://nginx.org/packages/centos/$releasever/$basearch/ gpgcheck=1 enabled=1 gpgkey=https://nginx.org/keys/nginx_signing.key module_hotfixes=true
Sau đó nhấn Điều khiển + o và hãy nhấn đi vào để lưu tệp, nhấn Điều khiển + x để thoát khỏi nano. Để cài đặt Nginxchạy lệnh sau:
yum install nginx -y
Khi quá trình cài đặt hoàn tất, hãy bật và bắt đầu dịch vụ Nginx với các lệnh sau:
systemctl enable nginx systemctl start nginx
Để kiểm tra trạng thái của Nginx vui lòng sử dụng lệnh sau:
systemctl status nginx
- Tạo tệp cấu hình SSL
Đầu tiên chúng ta cần tạo dhparam bằng các lệnh sau
mkdir -p /etc/nginx/ssl openssl dhparam -out /etc/nginx/ssl/dhp-4096.pem 4096
Tiếp theo, bạn tiến hành tạo tệp cấu hình SSL
nano /etc/nginx/ssl.conf
Dán phần sau vào đó
ssl_dhparam /etc/nginx/ssl/dhp-4096.pem; ssl_session_cache shared:SSL:10m; ssl_session_timeout 5m; ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3; 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; add_header Strict-Transport-Security "max-age=15768000; includeSubdomains; preload"; add_header X-Frame-Options DENY; add_header X-Content-Type-Options nosniff;
Sau đó nhấn Điều khiển + o và hãy nhấn đi vào để lưu tệp, nhấn Điều khiển + x để thoát khỏi nano.
- Tạo máy chủ ảo (vhost) cho Discourse
Cuối cùng, bạn tạo một vhost cho Discourse
nano /etc/nginx/conf.d/discourse.conf
Dán phần sau vào đó
server { listen 80; listen [::]:80; server_name discourse.hostvn.com; return 301 https://$host$request_uri; } server { listen 443 ssl http2; server_name discourse.hostvn.com; ssl_certificate /etc/letsencrypt/live/discourse.hostvn.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/discourse.hostvn.com/privkey.pem; include /etc/nginx/ssl.conf; # Reverse Proxy Configuration location / { proxy_pass http://discourse.hostvn.com: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.hostvn.com:2045/ https://discourse.hostvn.com; } }
Sau đó nhấn Điều khiển + o và hãy nhấn đi vào để lưu tệp, nhấn Điều khiển + x để thoát khỏi nano. Khởi động lại Nginx để cấu hình có hiệu lực
systemctl restart nginx
2.6. Bước 6: Cài đặt Web Discourse
Mở trình duyệt web của bạn và truy cập diễn ngôn bằng tên miền bạn đã thiết lập. Ấn nút Đăng ký để tạo tài khoản Quản trị viên
Điền thông tin và nhấp vào Đăng ký
Lưu ý: Mật khẩu của bạn phải dài ít nhất 15 ký tự.
Bạn sẽ nhận được một email yêu cầu xác thực. Kiểm tra hộp thư đến của bạn và đảm bảo rằng bạn nhận được email yêu cầu xác thực.
Để nhận được email xác minh, bạn cần đảm bảo rằng bạn đã định cấu hình chính xác Email SMTP ở bước trước.
Nhấp vào liên kết trong email để xác minh email của bạn
Tiếp theo, bạn tiến hành thiết lập theo hướng dẫn ở từng bước
Sau khi hoàn thành các bước cài đặt, bạn sẽ được chuyển đến Trang chủ
Bạn có thể truy cập Trang tổng quan dành cho quản trị viên bằng cách nhấp vào biểu tượng Trình đơn và chọn Quản trị viên
3. Kích hoạt người dùng quản trị khi không nhận được email kích hoạt
Trong trường hợp không nhận được email xác nhận, bạn có thể tiến hành xác thực tài khoản quản trị theo cách thủ công. Đầu tiên hãy chuyển đến thư mục / var / discourse
cd /var/discourse
Sau đó chạy lệnh sau
./launcher enter app
Vui lòng đợi vài giây rồi chạy lệnh sau
rails c
Tiếp theo chạy lệnh
u = User.last
Nhấn đi vào khi có một thông báo Nhấn Enter để tiếp tục
Cuối cùng, chạy lần lượt 3 lệnh sau
u.admin = true u.activate u.save
Nhấn Ctrl + D 2 lần thoát khỏi nhà tù
4. Tài liệu tham khảo
5. Kết luận
Qua bài đăng này HOSTVN Tôi đã hướng dẫn bạn cài đặt và cấu hình Discourse với Nginx trên CentOS 7 trên Nginx. Nếu có ý kiến đóng góp, bạn có thể để lại bình luận bên dưới. Ngoài ra, bạn có thể xem thêm hướng dẫn cài đặt Nextcloud trên CentOS 7.