Cách cài đặt Discourse Forum với Nginx trên Rocky Linux 9

theanh

Administrator
Nhân viên
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.

Đ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ền sudo.

  • 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
Một số gói này có thể đã được cài đặt trên hệ thống của bạn.

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
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.
Mã:
$ sudo firewall-cmd --permanent --list-services
Kết quả đầu ra sẽ như sau.
Mã:
cockpit dhcpv6-client ssh
Discourse cần có cổng HTTP và HTTPS để hoạt động. Mở chúng ra.
Mã:
$ sudo firewall-cmd --permanent --add-service=http
$ sudo firewall-cmd --permanent --add-service=https
Thêm masquerade, vì ứng dụng sẽ liên hệ với các phiên bản khác.
Mã:
$ sudo firewall-cmd --permanent --add-masquerade
Tải lại tường lửa để áp dụng các thay đổi.
Mã:
$ sudo firewall-cmd --reload
Liệt kê lại tất cả các dịch vụ.
Mã:
$ sudo firewall-cmd --permanent --list-services
Bạn sẽ nhận được thông báo sau đầu ra.
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
Xác nhận cài đặt.
Mã:
$ git --version
git version 2.31.1
Chạy các lệnh sau để cấu hình cài đặt Git.
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
Cài đặt phiên bản Docker mới nhất.
Mã:
$ sudo dnf install docker-ce docker-ce-cli containerd.io
Bạn có thể gặp lỗi sau khi cố gắng cài đặt Docker.
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
Sử dụng lệnh sau nếu bạn gặp lỗi trên.
Mã:
$ sudo dnf install docker-ce docker-ce-cli containerd.io --allowerasing
Bật và chạy Docker daemon.
Mã:
$ sudo systemctl enable docker --now
Xác minh rằng nó đang chạy.
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
Theo mặc định, Docker yêu cầu quyền root. Nếu bạn muốn tránh sử dụng 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)
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.
Mã:
$ su - ${USER}
Xác nhận rằng người dùng của bạn đã được thêm vào nhóm Docker.
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
Chuyển sang Discourse thư mục.
Mã:
$ cd /var/discourse
Xóa quyền ghi và quyền thực thi khỏi containers thư mục.
Mã:
$ sudo chmod 700 containers

Bước 5 - Cấu hình Discourse​

Tạo tệp cấu hình app.yml bằng cách sao chép mẫu standalone.yml tệp.
Mã:
$ sudo cp samples/standalone.yml containers/app.yml
Mở app.yml để chỉnh sửa.
Mã:
$ sudo nano containers/app.yml

Đặt tên miền​

Đặt biến DISCOURSE_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
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.
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
Biến 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
Lưu tệp bằng cách nhấn Ctrl + X và nhập Y khi được nhắc.

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
Khởi động ứng dụng Discourse.
Mã:
$ sudo ./launcher start app
Mở cổng để kiểm tra Discourse ứng dụng.
Mã:
$ sudo firewall-cmd --permanent --add-port=8080/tcp
Bây giờ bạn có thể truy cập diễn đàn bằng cách truy cập URL 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
Dán mã sau vào nó.
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
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.
Mã:
$ sudo dnf install nginx
Xác minh cài đặt.
Mã:
$ nginx -v
nginx version: nginx/1.22.1
Kích hoạt và khởi động máy chủ Nginx.
Mã:
$ sudo systemctl enable nginx --now
Kiểm tra trạng thái của server.
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
Cài đặt Snapd.
Mã:
$ sudo dnf install snapd
Bật và khởi động Snap dịch vụ.
Mã:
$ sudo systemctl enable snapd --now
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.
Mã:
$ sudo snap install core && sudo snap refresh core
Tạo các liên kết cần thiết để Snapd làm việc.
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
Phát hành lệnh sau để cài đặt Certbot.
Mã:
$ sudo snap install --classic 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 /usr/bin thư mục.
Mã:
$ sudo ln -s /snap/bin/certbot /usr/bin/certbot
Xác minh cài đặt.
Mã:
$ certbot --version
certbot 1.32.2
Tạo chứng chỉ SSL.
Mã:
$ sudo certbot certonly --nginx --agree-tos --no-eff-email --staple-ocsp --preferred-challenges http -m [emailprotected] -d discourse.example.com
Lệnh trên sẽ tải xuống chứng chỉ vào /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
Để 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.
Mã:
$ sudo certbot renew --dry-run
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.

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
Dán mã sau vào đó.
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 "";
}
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 /etc/nginx/nginx.conf để chỉnh sửa.
Mã:
$ sudo nano /etc/nginx/nginx.conf
Thêm dòng sau vào trước dòng include /etc/nginx/conf.d/*.conf;.
Mã:
server_names_hash_bucket_size 64;
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.
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
Khởi động lại dịch vụ Nginx để kích hoạt cấu hình mới.
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 URL https://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
Vào shell chứa Discourse.
Mã:
$ sudo ./launcher enter app
Nhập lệnh rails c để truy cập dấu nhắc lệnh Rails.
Mã:
root@discourse-app:/var/www/discourse# rails c
Bạn sẽ thấy thông tin sau nhắc nhở.
Mã:
[1] pry(main)>
Nhập lệnh để xác định vị trí tài khoản quản trị viên.
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
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

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
Cập nhật cài đặt Discourse bằng cách lấy các tệp mới nhất từ GitHub.
Mã:
$ git pull
Xây dựng lại Discourse.
Mã:
$ sudo ./launcher rebuild app
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 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
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 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ục var/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ệp current.
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
Các mục nhập gần đây nhất nằm trong tệp 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

Kết luận​

Bài hướng dẫn này kết thúc. Bạn đã cài đặt diễn đàn Discourse bằng Docker đằng sau máy chủ web proxy Nginx trên máy chủ Rocky Linux 9. Nếu bạn có bất kỳ câu hỏi nào, hãy đăng chúng trong phần bình luận bên dưới.
 
Back
Bên trên