Discourse là một nền tảng thảo luận cộng đồng mã nguồn mở được xây dựng bằng ngôn ngữ Ruby. Nó được thiết kế để hoạt động như một diễn đàn, phần mềm trò chuyện hoặc danh sách gửi thư. Nó tích hợp dễ dàng với các nền tảng khác và có thể được mở rộng thông qua các plugin.
Trong hướng dẫn này, bạn sẽ tìm hiểu cách cài đặt Discourse Forum với máy chủ Nginx trên máy chủ chạy Rocky Linux 9.
[*]
Một số gói mà hệ thống của bạn cần.
Một số gói này có thể đã được cài đặt trên hệ thống của bạn.
Tường lửa hoạt động với nhiều vùng khác nhau và vùng công cộng là vùng mặc định mà chúng ta sẽ sử dụng. Liệt kê tất cả các dịch vụ và cổng đang hoạt động trên tường lửa.
Kết quả đầu ra sẽ như sau.
Discourse cần có cổng HTTP và HTTPS để hoạt động. Mở chúng ra.
Thêm masquerade, vì ứng dụng sẽ liên hệ với các phiên bản khác.
Tải lại tường lửa để áp dụng các thay đổi.
Liệt kê lại tất cả các dịch vụ.
Bạn sẽ nhận được thông báo sau đầu ra.
Xác nhận cài đặt.
Chạy các lệnh sau để cấu hình cài đặt Git.
Cài đặt phiên bản Docker mới nhất.
Bạn có thể gặp lỗi sau khi cố gắng cài đặt Docker.
Sử dụng lệnh sau nếu bạn gặp lỗi trên.
Bật và chạy Docker daemon.
Xác minh rằng nó đang chạy.
Theo mặc định, Docker yêu cầu quyền root. Nếu bạn muốn tránh sử dụng
Bạn sẽ cần phải đăng xuất khỏi máy chủ và đăng nhập lại với cùng một người dùng để kích hoạt thay đổi này hoặc sử dụng lệnh sau lệnh.
Xác nhận rằng người dùng của bạn đã được thêm vào nhóm Docker.
Chuyển sang Discourse thư mục.
Xóa quyền ghi và quyền thực thi khỏi
Mở
Cấu hình ID email cho Quản trị viên
Đặt email cho tài khoản quản trị viên và nhà phát triển của bạn bằng cách sử dụng biến . Bước này là bắt buộc, nếu không, diễn đàn của bạn sẽ không được khởi động.
Biến
Lưu tệp bằng cách nhấn Ctrl + X và nhập Y khi được nhắc.
Khởi động ứng dụng Discourse.
Mở cổng để kiểm tra Discourse ứng dụng.
Bây giờ bạn có thể truy cập diễn đàn bằng cách truy cập URL
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22236%22%3E%3C/svg%3E
Tạo và mở tệp
Dán mã sau vào nó.
Lưu tệp bằng cách nhấn Ctrl + X và nhập Y khi được nhắc.
Cài đặt máy chủ Nginx.
Xác minh cài đặt.
Kích hoạt và khởi động máy chủ Nginx.
Kiểm tra trạng thái của server.
Chúng ta sẽ sử dụng trình cài đặt gói Snapd cho việc đó. Vì Rocky Linux không đi kèm với nó, hãy cài đặt trình cài đặt Snapd. Yêu cầu kho lưu trữ EPEL để hoạt động.
Cài đặt Snapd.
Bật và khởi động Snap dịch vụ.
Cài đặt gói lõi Snap và đảm bảo phiên bản Snapd của bạn được cập nhật.
Tạo các liên kết cần thiết để Snapd làm việc.
Phát hành lệnh sau để cài đặt Certbot.
Sử dụng lệnh sau để đảm bảo rằng lệnh Certbot có thể chạy được bằng cách tạo liên kết tượng trưng đến
Xác minh cài đặt.
Tạo chứng chỉ SSL.
Lệnh trên sẽ tải xuống chứng chỉ vào
Tạo chứng chỉ nhóm Diffie-Hellman.
Để kiểm tra xem việc gia hạn SSL có hoạt động tốt không, hãy chạy thử quá trình.
Nếu bạn không thấy lỗi nào, bạn đã hoàn tất. Chứng chỉ của bạn sẽ tự động gia hạn.
Dán mã sau vào đó.
Lưu tệp bằng cách nhấn Ctrl + X và nhập Y khi được nhắc sau khi hoàn tất.
Mở tệp
Thêm dòng sau vào trước dòng
Lưu tệp bằng cách nhấn Ctrl + X và nhập Y khi được nhắc.
Xác minh tệp cấu hình Nginx cú pháp.
Khởi động lại dịch vụ Nginx để kích hoạt cấu hình mới.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22236%22%3E%3C/svg%3E
Nhấp vào nút Đăng ký để tiếp tục. ID email được thiết lập trong tệp
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22462%22%20height=%22520%22%3E%3C/svg%3E
Nhấp vào nút Đăng ký để đăng ký tài khoản quản trị viên. Bạn sẽ chuyển đến màn hình xác nhận email.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22230%22%3E%3C/svg%3E
Nếu cài đặt SMTP của bạn chính xác, bạn sẽ nhận được email kích hoạt tài khoản. Nhấp vào liên kết từ email của bạn để hoàn tất việc thiết lập tài khoản.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22663%22%20height=%22345%22%3E%3C/svg%3E
Nhấp vào nút Kích hoạt để hoàn tất quá trình cài đặt.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22173%22%3E%3C/svg%3E
Bạn sẽ đến Màn hình Trình hướng dẫn thiết lập của Discourse. Điền tên diễn đàn của bạn và mô tả, rồi chọn ngôn ngữ. Nhấp vào nút Tiếp theo để tiếp tục.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22532%22%20height=%22750%22%3E%3C/svg%3E
Tiếp theo, bạn sẽ được đưa đến trang Trải nghiệm thành viên. Chọn các tùy chọn theo yêu cầu của bạn và nhấp vào nút Tiếp theo để tiếp tục.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22525%22%20height=%22750%22%3E%3C/svg%3E
Tiếp theo, bạn sẽ được đưa đến trang hoàn tất thiết lập. Bạn có thể chọn cấu hình thêm hoặc chỉ cần Nhảy vào và bắt đầu sử dụng diễn đàn. Những thiết lập này vẫn có thể được cấu hình bằng cách sử dụng thiết lập của quản trị viên.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22528%22%20height=%22750%22%3E%3C/svg%3E
Chúng ta sẽ chọn Cấu hình thêm cho phần hướng dẫn của mình. Bạn sẽ được đưa đến trang và được yêu cầu thiết lập logo và biểu ngữ cho diễn đàn của mình. Nhấp vào nút Tiếp theo để tiếp tục.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22466%22%20height=%22750%22%3E%3C/svg%3E
Tiếp theo, bạn sẽ được yêu cầu thiết lập các tùy chọn kiểu dáng cơ bản cho giao diện diễn đàn. Nhấp vào nút Tiếp theo để tiếp tục.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22649%22%3E%3C/svg%3E
Tiếp theo, bạn sẽ được đưa đến trang Cấu hình tổ chức. Điền thông tin thích hợp.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22417%22%20height=%22750%22%3E%3C/svg%3E
Nhấp vào nút Jump in! để tiếp tục. Bạn sẽ được đưa đến trang chủ diễn đàn. Diễn đàn Discourse của bạn đã sẵn sàng để sử dụng.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22420%22%3E%3C/svg%3E
Chuyển sang Discourse thư mục.
Vào shell chứa Discourse.
Nhập lệnh
Bạn sẽ thấy thông tin sau nhắc nhở.
Nhập lệnh để xác định vị trí tài khoản quản trị viên.
Gõ
Bạn có thể định cấu hình cài đặt sao lưu bằng cách truy cập phần Quản trị >> Cài đặt >> Sao lưu. Discourse cung cấp cho bạn tùy chọn lưu trữ bản sao lưu cục bộ hoặc lưu trữ trên đám mây theo kiểu Amazon S3.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22731%22%3E%3C/svg%3E
Bạn có thể tải xuống bản sao lưu từ trang Quản trị >> Bản sao lưu. Khôi phục bị tắt theo mặc định. Nếu bạn muốn khôi phục cơ sở dữ liệu, bạn cần bật tùy chọn cho phép khôi phục từ phần Cài đặt >> Quản trị > Bản sao lưu.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22181%22%3E%3C/svg%3E
Chuyển sang thư mục Discourse.
Cập nhật cài đặt Discourse bằng cách lấy các tệp mới nhất từ GitHub.
Xây dựng lại Discourse.
Bạn cần xây dựng lại Discourse mỗi khi thực hiện bất kỳ thay đổi nào trong tệp
Bạn cũng có thể xem các phòng thí nghiệm chi tiết bằng cách truy cập URL
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22437%22%3E%3C/svg%3E
Các mục nhập gần đây nhất nằm trong tệp
Phần còn lại có thể được tìm thấy trong
Trong hướng dẫn này, bạn sẽ tìm hiểu cách cài đặt Discourse Forum với máy chủ Nginx trên máy chủ chạy Rocky Linux 9.
Điều kiện tiên quyết
-
Máy chủ chạy Rocky Linux 9 với tối thiểu 1GB RAM và 1 Core CPU. Thiết lập Discourse sẽ tự động tạo phân vùng hoán đổi trên các hệ thống có RAM 1GB trở xuống. Do đó, nên cài đặt trên hệ thống có ít nhất 2GB RAM.
-
Người dùng không phải root có quyềnsudo
.
-
Tên miền (discourse.example.com
) trỏ đến máy chủ.
-
Mọi thứ đều đã cập nhật.
Mã:
$ sudo dnf update
Một số gói mà hệ thống của bạn cần.
Mã:
$ sudo dnf install wget curl nano unzip yum-utils -y
Bước 1 - Cấu hình Tường lửa
Bước đầu tiên là cấu hình tường lửa. Rocky Linux sử dụng Tường lửa Firewalld. Kiểm tra trạng thái của tường lửa.
Mã:
$ sudo firewall-cmd --state
running
Mã:
$ sudo firewall-cmd --permanent --list-services
Mã:
cockpit dhcpv6-client ssh
Mã:
$ sudo firewall-cmd --permanent --add-service=http
$ sudo firewall-cmd --permanent --add-service=https
Mã:
$ sudo firewall-cmd --permanent --add-masquerade
Mã:
$ sudo firewall-cmd --reload
Mã:
$ sudo firewall-cmd --permanent --list-services
Mã:
cockpit dhcpv6-client http https ssh
Cấu hình SELinux
Discourse sẽ không thể truy cập được ngay cả khi bạn mở các cổng do chính sách truy cập của SELinux. Cấu hình SELinux để cho phép kết nối mạng.
Mã:
$ sudo setsebool -P httpd_can_network_connect 1
Bước 2 - Cài đặt Git
Cài đặt Git.
Mã:
$ sudo dnf install git
Mã:
$ git --version
git version 2.31.1
Mã:
$ git config --global user.name "Your Name"
$ git config --global user.email "[emailprotected]"
Bước 3 - Cài đặt Docker
Rocky Linux được tích hợp sẵn phiên bản Docker cũ hơn. Để cài đặt phiên bản mới nhất, trước tiên, hãy cài đặt kho lưu trữ Docker chính thức.
Mã:
$ sudo yum-config-manager \ --add-repo \ https://download.docker.com/linux/centos/docker-ce.repo
Mã:
$ sudo dnf install docker-ce docker-ce-cli containerd.io
Mã:
ror: Problem: problem with installed package buildah-1:1.26.2-1.el9_0.x86_64 - package buildah-1:1.26.2-1.el9_0.x86_64 requires runc >= 1.0.0-26, but none of the providers can be installed - package containerd.io-1.6.9-3.1.el9.x86_64 conflicts with runc provided by runc-4:1.1.3-2.el9_0.x86_64 - package containerd.io-1.6.9-3.1.el9.x86_64 obsoletes runc provided by runc-4:1.1.3-2.el9_0.x86_64 - cannot install the best candidate for the job
Mã:
$ sudo dnf install docker-ce docker-ce-cli containerd.io --allowerasing
Mã:
$ sudo systemctl enable docker --now
Mã:
? docker.service - Docker Application Container Engine Loaded: loaded (/usr/lib/systemd/system/docker.service; enabled; vendor preset: disabled) Active: active (running) since Sat 2023-01-20 06:49:44 UTC; 6s ago
TriggeredBy: ? docker.socket Docs: https://docs.docker.com Main PID: 99263 (dockerd) Tasks: 8 Memory: 28.1M CPU: 210ms CGroup: /system.slice/docker.service ??99263 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
sudo
mỗi khi bạn chạy lệnh docker
, hãy thêm tên người dùng của bạn vào docker
nhóm.
Mã:
$ sudo usermod -aG docker $(whoami)
Mã:
$ su - ${USER}
Mã:
$ groups
navjot wheel docker
Bước 4 - Tải xuống Discourse
Sao chép kho lưu trữ GitHub chính thức của Discourse Docker vào/var/discourse
thư mục.
Mã:
$ sudo git clone https://github.com/discourse/discourse_docker.git /var/discourse
Mã:
$ cd /var/discourse
containers
thư mục.
Mã:
$ sudo chmod 700 containers
Bước 5 - Cấu hình Discourse
Tạo tệp cấu hìnhapp.yml
bằng cách sao chép mẫu standalone.yml
tệp.
Mã:
$ sudo cp samples/standalone.yml containers/app.yml
app.yml
để chỉnh sửa.
Mã:
$ sudo nano containers/app.yml
Đặt tên miền
Đặt biếnDISCOURSE_HOSTNAME
vào tên miền bạn đã chọn cho diễn đàn của mình. Nếu bạn không có tên miền, bạn có thể sử dụng địa chỉ IP tại đây.
Mã:
DISCOURSE_HOSTNAME: 'discourse.example.com'
Cấu hình các cổng Exposed
Thay đổi dòng"80:80
thành . Thao tác này sẽ thay đổi cổng HTTP bên ngoài cho Discourse thành 8080 vì chúng ta sẽ sử dụng Nginx ở cổng 80. Bình luận dòng "443:443"
vì chúng ta sẽ cài đặt SSL bên ngoài.
Mã:
expose: - "8080:80" # http #- "443:443" # https
Đặt email cho tài khoản quản trị viên và nhà phát triển của bạn bằng cách sử dụng biến . Bước này là bắt buộc, nếu không, diễn đàn của bạn sẽ không được khởi động.
Mã:
DISCOURSE_DEVELOPER_EMAILS: '[emailprotected],[emailprotected]'
Cấu hình Cài đặt SMTP
Điền các biến sau tùy thuộc vào dịch vụ email giao dịch bạn đang sử dụng.
Mã:
DISCOURSE_SMTP_ADDRESS: smtp.example.com
DISCOURSE_SMTP_PORT: 587
DISCOURSE_SMTP_USER_NAME: [emailprotected]
DISCOURSE_SMTP_PASSWORD: your_smtp_password
#DISCOURSE_SMTP_ENABLE_START_TLS: true # (optional, default true)
DISCOURSE_SMTP_DOMAIN: discourse.example.com # (required by some providers)
DISCOURSE_NOTIFICATION_EMAIL: [emailprotected] # (address to send notifications from)
Cài đặt bộ nhớ (Tùy chọn)
Nếu máy chủ của bạn có RAM thấp, bạn có thể định cấu hình các biến sau cho phù hợp để giảm dung lượng bộ nhớ của Discourse.
Mã:
db_shared_buffers: '128MB'
UNICORN_WORKERS: 2
db_shared_buffers
thường được đặt thành 25% bộ nhớ khả dụng.Cài đặt GeoLite2 (Tùy chọn)
Nếu bạn muốn tính năng tra cứu IP trên Discourse, hãy đăng ký tài khoản Maxmind Geolite2 miễn phí và nhận khóa cấp phép. Dán khóa cấp phép đó làm giá trị cho biến sau.
Mã:
DISCOURSE_MAXMIND_LICENSE_KEY: your_maxmind_license_key
Bước 6 - Cài đặt Discourse
Chạy lệnh sau để khởi động Discourse của bạn container.
Mã:
$ sudo ./launcher bootstrap app
Mã:
$ sudo ./launcher start app
Mã:
$ sudo firewall-cmd --permanent --add-port=8080/tcp
http://yourserver_IP:8080
hoặc http://discourse.example.com:8080
trong trình duyệt của bạn. Bạn sẽ nhận được màn hình sau.data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22236%22%3E%3C/svg%3E
Bước 7 - Cài đặt Nginx
Rocky Linux 9 đi kèm với phiên bản Nginx cũ hơn. Bạn cần tải xuống kho lưu trữ Nginx chính thức để cài đặt phiên bản mới nhất.Tạo và mở tệp
/etc/yum.repos.d/nginx.repo
để tạo kho lưu trữ Nginx chính thức.
Mã:
$ sudo nano /etc/yum.repos.d/nginx.repo
Mã:
[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
[nginx-mainline]
name=nginx mainline repo
baseurl=http://nginx.org/packages/mainline/centos/$releasever/$basearch/
gpgcheck=1
enabled=0
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true
Cài đặt máy chủ Nginx.
Mã:
$ sudo dnf install nginx
Mã:
$ nginx -v
nginx version: nginx/1.22.1
Mã:
$ sudo systemctl enable nginx --now
Mã:
$ sudo systemctl status nginx
? nginx.service - nginx - high performance web server Loaded: loaded (/usr/lib/systemd/system/nginx.service; enabled; vendor preset: disabled) Active: active (running) since Sun 2023-01-20 07:49:55 UTC; 1s ago Docs: http://nginx.org/en/docs/ Process: 230797 ExecStart=/usr/sbin/nginx -c /etc/nginx/nginx.conf (code=exited, status=0/SUCCESS) Main PID: 230798 (nginx) Tasks: 3 (limit: 12355) Memory: 2.8M CPU: 13ms CGroup: /system.slice/nginx.service ??230798 "nginx: master process /usr/sbin/nginx -c /etc/nginx/nginx.conf" ??230799 "nginx: worker process" ??230800 "nginx: worker process"
Bước 8 - Cài đặt SSL
Để cài đặt chứng chỉ SSL bằng Let's Encrypt, chúng ta cần cài đặt công cụ Certbot.Chúng ta sẽ sử dụng trình cài đặt gói Snapd cho việc đó. Vì Rocky Linux không đi kèm với nó, hãy cài đặt trình cài đặt Snapd. Yêu cầu kho lưu trữ EPEL để hoạt động.
Mã:
$ sudo dnf install epel-release
Mã:
$ sudo dnf install snapd
Mã:
$ sudo systemctl enable snapd --now
Mã:
$ sudo snap install core && sudo snap refresh core
Mã:
$ sudo ln -s /var/lib/snapd/snap /snap
$ echo 'export PATH=$PATH:/var/lib/snapd/snap/bin' | sudo tee -a /etc/profile.d/snapd.sh
Mã:
$ sudo snap install --classic certbot
/usr/bin
thư mục.
Mã:
$ sudo ln -s /snap/bin/certbot /usr/bin/certbot
Mã:
$ certbot --version
certbot 1.32.2
Mã:
$ sudo certbot certonly --nginx --agree-tos --no-eff-email --staple-ocsp --preferred-challenges http -m [emailprotected] -d discourse.example.com
/etc/letsencrypt/live/discourse.example.com
thư mục trên máy chủ của bạn.Tạo chứng chỉ nhóm Diffie-Hellman.
Mã:
$ sudo openssl dhparam -dsaparam -out /etc/ssl/certs/dhparam.pem 4096
Mã:
$ sudo certbot renew --dry-run
Bước 9 - Cấu hình Nginx
Tạo và mở tệp/etc/nginx/conf.d/discourse.conf
để chỉnh sửa.
Mã:
$ sudo nano /etc/nginx/conf.d/discourse.conf
Mã:
# enforce HTTPS
server { listen 80; listen [::]:80; server_name discourse.example.com; location / { return 301 https://$host$request_uri; }
}
server { listen 443 ssl http2; listen [::]:443 ssl http2; server_name discourse.example.com; access_log /var/log/nginx/discourse.access.log; error_log /var/log/nginx/discourse.error.log; # SSL ssl_certificate /etc/letsencrypt/live/discourse.example.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/discourse.example.com/privkey.pem; ssl_trusted_certificate /etc/letsencrypt/live/discourse.example.com/chain.pem; ssl_session_timeout 5m; ssl_session_cache shared:SSL:10m; ssl_session_tickets off; ssl_protocols TLSv1.2 TLSv1.3; ssl_prefer_server_ciphers on; ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384; ssl_ecdh_curve X25519:prime256v1:secp384r1:secp521r1; ssl_stapling on; ssl_stapling_verify on; ssl_dhparam /etc/ssl/certs/dhparam.pem; resolver 8.8.8.8; http2_push_preload on; # Enable HTTP/2 Server Push # Enable TLSv1.3's 0-RTT. Use $ssl_early_data when reverse proxying to # prevent replay attacks. # # @see: https://nginx.org/en/docs/http/ngx_http_ssl_module.html#ssl_early_data ssl_early_data on; # Security / XSS Mitigation Headers # NOTE: X-Frame-Options may cause issues with the webOS app add_header X-Frame-Options "SAMEORIGIN"; add_header X-XSS-Protection "1; mode=block"; add_header X-Content-Type-Options "nosniff"; add_header X-Early-Data $tls1_3_early_data; client_max_body_size 100m; location / { proxy_pass http://discourse.example.com:8080/; 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_set_header X-Real-IP $remote_addr; }
}
# This block is useful for debugging TLS v1.3. Please feel free to remove this
# and use the `$ssl_early_data` variable exposed by NGINX directly should you
# wish to do so.
map $ssl_early_data $tls1_3_early_data { "~." $ssl_early_data; default "";
}
Mở tệp
/etc/nginx/nginx.conf
để chỉnh sửa.
Mã:
$ sudo nano /etc/nginx/nginx.conf
include /etc/nginx/conf.d/*.conf;
.
Mã:
server_names_hash_bucket_size 64;
Xác minh tệp cấu hình Nginx cú pháp.
Mã:
$ sudo nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
Mã:
$ sudo systemctl restart nginx
Bước 10 - Truy cập và hoàn tất cài đặt Discourse
Bạn có thể truy cập diễn đàn bằng cách truy cập URLhttps://discourse.example.com
trong trình duyệt của bạn. Bạn sẽ nhận được màn hình sau.data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22236%22%3E%3C/svg%3E
Nhấp vào nút Đăng ký để tiếp tục. ID email được thiết lập trong tệp
app.yml
sẽ được điền sẵn cho bạn.data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22462%22%20height=%22520%22%3E%3C/svg%3E
Nhấp vào nút Đăng ký để đăng ký tài khoản quản trị viên. Bạn sẽ chuyển đến màn hình xác nhận email.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22230%22%3E%3C/svg%3E
Nếu cài đặt SMTP của bạn chính xác, bạn sẽ nhận được email kích hoạt tài khoản. Nhấp vào liên kết từ email của bạn để hoàn tất việc thiết lập tài khoản.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22663%22%20height=%22345%22%3E%3C/svg%3E
Nhấp vào nút Kích hoạt để hoàn tất quá trình cài đặt.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22173%22%3E%3C/svg%3E
Bạn sẽ đến Màn hình Trình hướng dẫn thiết lập của Discourse. Điền tên diễn đàn của bạn và mô tả, rồi chọn ngôn ngữ. Nhấp vào nút Tiếp theo để tiếp tục.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22532%22%20height=%22750%22%3E%3C/svg%3E
Tiếp theo, bạn sẽ được đưa đến trang Trải nghiệm thành viên. Chọn các tùy chọn theo yêu cầu của bạn và nhấp vào nút Tiếp theo để tiếp tục.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22525%22%20height=%22750%22%3E%3C/svg%3E
Tiếp theo, bạn sẽ được đưa đến trang hoàn tất thiết lập. Bạn có thể chọn cấu hình thêm hoặc chỉ cần Nhảy vào và bắt đầu sử dụng diễn đàn. Những thiết lập này vẫn có thể được cấu hình bằng cách sử dụng thiết lập của quản trị viên.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22528%22%20height=%22750%22%3E%3C/svg%3E
Chúng ta sẽ chọn Cấu hình thêm cho phần hướng dẫn của mình. Bạn sẽ được đưa đến trang và được yêu cầu thiết lập logo và biểu ngữ cho diễn đàn của mình. Nhấp vào nút Tiếp theo để tiếp tục.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22466%22%20height=%22750%22%3E%3C/svg%3E
Tiếp theo, bạn sẽ được yêu cầu thiết lập các tùy chọn kiểu dáng cơ bản cho giao diện diễn đàn. Nhấp vào nút Tiếp theo để tiếp tục.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22649%22%3E%3C/svg%3E
Tiếp theo, bạn sẽ được đưa đến trang Cấu hình tổ chức. Điền thông tin thích hợp.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22417%22%20height=%22750%22%3E%3C/svg%3E
Nhấp vào nút Jump in! để tiếp tục. Bạn sẽ được đưa đến trang chủ diễn đàn. Diễn đàn Discourse của bạn đã sẵn sàng để sử dụng.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22420%22%3E%3C/svg%3E
Bước 11 - Lệnh Discourse
Kích hoạt Discourse Administrator từ dòng lệnh
Nếu bạn không nhận được email kích hoạt, bạn có thể kích hoạt tài khoản quản trị viên từ dòng lệnh.Chuyển sang Discourse thư mục.
Mã:
$ cd /var/discourse
Mã:
$ sudo ./launcher enter app
rails c
để truy cập dấu nhắc lệnh Rails.
Mã:
root@discourse-app:/var/www/discourse# rails c
Mã:
[1] pry(main)>
Mã:
[1] pry(main)> User.find_by_email("[emailprotected]")
=> # user.approved = true
[3] pry(main)> user.save
[4] pry(main)> EmailToken.confirm(user.email_tokens.first.token)
exit
hai lần để quay lại shell. Tài khoản quản trị viên của bạn đã được kích hoạt và sẵn sàng sử dụng.Sao lưu Discourse
Theo mặc định, Discourse sao lưu cơ sở dữ liệu 7 ngày một lần. Bạn có thể tìm thấy các tệp sao lưu tại thư mục`/var/discourse/shared/standalone/backups/default
.
Mã:
$ ls /var/discourse/shared/standalone/backups/default -al
total 1480
drwxr-xr-x. 2 navjot tape 4096 Jan 21 03:34 .
drwxr-xr-x. 3 navjot tape 4096 Jan 20 12:01 ..
-rw-r--r--. 1 navjot tape 1503748 Jan 21 03:34 howtoforge-forums-2023-01-21-033439-v20230119094939.tar.gz
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22731%22%3E%3C/svg%3E
Bạn có thể tải xuống bản sao lưu từ trang Quản trị >> Bản sao lưu. Khôi phục bị tắt theo mặc định. Nếu bạn muốn khôi phục cơ sở dữ liệu, bạn cần bật tùy chọn cho phép khôi phục từ phần Cài đặt >> Quản trị > Bản sao lưu.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22181%22%3E%3C/svg%3E
Nâng cấp Discourse
Để nâng cấp diễn đàn, bạn có thể sử dụng một trong hai cách. Cách đầu tiên là nâng cấp thông qua bảng điều khiển quản trị viên. Phương pháp thứ hai là sử dụng dòng lệnh.Chuyển sang thư mục Discourse.
Mã:
$ cd /var/discourse
Mã:
$ git pull
Mã:
$ sudo ./launcher rebuild app
app.yml
. Sau khi thực hiện các thay đổi, hãy chạy lệnh trên. Nó phá hủy container cũ, khởi động một container mới và khởi động nó.Dừng Discourse
Mã:
$ sudo ./launcher stop app
Xem Nhật ký Discourse
Mã:
$ sudo ./launcher logs app
https://discourse.example.com/logs/
trong trình duyệt của bạn. Bạn sẽ thấy một màn hình tương tự.data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22437%22%3E%3C/svg%3E
Rails / Unicorn Logs
Ruby on Rails chứa một bản ghi rất dài dòng được ghi vào đĩa. Ngoài ra, máy chủ web unicorn cũng ghi nhật ký vào đĩa. Bạn có thể xem chúng tại thư mụcvar/discourse/shared/standalone/log/rails
.
Mã:
$ ls /var/discourse/shared/standalone/log/rails -al
total 552
drwxr-xr-x. 2 navjot tape 4096 Jan 20 07:09 .
drwxr-xr-x. 4 root root 4096 Jan 20 07:09 ..
-rw-r--r--. 1 navjot tape 0 Jan 20 07:09 production_errors.log
-rw-r--r--. 1 navjot tape 361031 Jan 21 11:46 production.log
-rw-r--r--. 1 navjot tape 0 Jan 20 07:09 sidekiq.log
-rw-r--r--. 1 navjot tape 60919 Jan 20 08:42 unicorn.stderr.log
-rw-r--r--. 1 navjot tape 119403 Jan 21 03:34 unicorn.stdout.log
Nhật ký Nginx
Discourse chạy máy chủ Nginx bên trong vùng chứa docker. Bạn có thể xem nhật ký tại vị trí sau.
Mã:
$ ls /var/discourse/shared/standalone/log/var-log/nginx -al
total 1852
drwxr-xr-x. 2 33 tape 4096 Jan 20 07:39 .
drwxrwxr-x. 5 root adm 4096 Jan 21 08:04 ..
-rw-r--r--. 1 33 tape 1878744 Jan 21 12:18 access.log
-rw-r--r--. 1 33 tape 1017 Jan 20 07:45 error.log
Nhật ký Redis
Bạn có thể lấy nhật ký cho máy chủ cơ sở dữ liệu Redis tại vị trí sau. Các mục nhật ký gần đây nhất sẽ nằm trong tệpcurrent
.
Mã:
$ ls /var/discourse/shared/standalone/log/var-log/redis -al
total 140
drwxr-xr-x. 2 root root 4096 Jan 20 07:39 .
drwxrwxr-x. 5 root adm 4096 Jan 21 08:04 ..
-rw-r--r--. 1 root root 127002 Jan 21 12:17 current
-rw-------. 1 root root 0 Jan 20 07:39 lock
Nhật ký PostgreSQL
Bạn có thể xem nhật ký cơ sở dữ liệu PostgreSQL tại vị trí.
Mã:
ls /var/discourse/shared/standalone/log/var-log/postgres -al
total 20
drwxr-xr-x. 2 root root 4096 Jan 20 07:39 .
drwxrwxr-x. 5 root adm 4096 Jan 21 08:04 ..
-rw-r--r--. 1 root root 11400 Jan 21 03:34 current
-rw-------. 1 root root 0 Jan 20 07:39 lock
current
trong thư mục đó.Phần còn lại có thể được tìm thấy trong
/var/discourse/shared/standalone/log/var-log
chính nó.
Mã:
ls /var/discourse/shared/standalone/log/var-log -al
total 100
drwxrwxr-x. 5 root adm 4096 Jan 21 08:04 .
drwxr-xr-x. 4 root root 4096 Jan 20 07:09 ..
-rw-r--r--. 1 root adm 40943 Jan 21 12:17 auth.log
-rw-r--r--. 1 root adm 0 Jan 20 08:41 kern.log
-rw-r-----. 1 root adm 750 Jan 21 08:04 messages
drwxr-xr-x. 2 33 tape 4096 Jan 20 07:39 nginx
drwxr-xr-x. 2 root root 4096 Jan 20 07:39 postgres
drwxr-xr-x. 2 root root 4096 Jan 20 07:39 redis
-rw-r--r--. 1 root adm 23041 Jan 21 12:17 syslog
-rw-r-----. 1 root adm 70 Jan 21 08:04 user.log