Cách cài đặt Discourse Forum trên Ubuntu 18.04 LTS

theanh

Administrator
Nhân viên
Discourse là một ứng dụng diễn đàn thảo luận mã nguồn mở và miễn phí có thể được sử dụng như một danh sách gửi thư và phòng trò chuyện. Đây là một nền tảng rất mạnh mẽ và linh hoạt cho phép người dùng đăng nhập bằng Single Sign-On. Nó có thể được tích hợp với WordPress, Google Analytics, Zendesk, Patreon, Slack và nhiều nền tảng khác. Nó hỗ trợ thông báo qua email, trả lời qua email và nhiều phương thức xác thực khác nhau như mạng xã hội và single sign-on. Nó đơn giản, dễ sử dụng, phẳng và đi kèm với bố cục di động tích hợp.

Trong hướng dẫn này, chúng ta sẽ tìm hiểu cách cài đặt và cấu hình diễn đàn Discourse trên máy chủ Ubuntu 18.04.

Yêu cầu​

  • Máy chủ chạy Ubuntu 18.04.
  • Địa chỉ IP tĩnh 192.168.0.101 được thiết lập trên máy chủ của bạn.
  • Mật khẩu gốc được thiết lập cho máy chủ của bạn.

Bắt đầu​

Trước tiên, bạn sẽ cần cập nhật máy chủ của mình lên phiên bản mới nhất. Bạn có thể thực hiện bằng lệnh sau:
Mã:
apt-get update -y
apt-get upgrade -y
Sau khi máy chủ của bạn được cập nhật, hãy khởi động lại hệ thống để áp dụng tất cả các thay đổi

Tiếp theo, bạn sẽ cần thiết lập FQDN trên máy chủ của mình. Bạn có thể thực hiện bằng lệnh sau:
Mã:
hostnamectl set-hostname test.example.com
Tiếp theo, mở tệp /etc/hosts và thêm dòng sau:
Mã:
nano /etc/hosts
Thêm dòng sau:
Mã:
192.168.0.101 test.example.com test
Lưu và đóng tệp khi bạn hoàn tất. Sau đó, chạy lệnh sau để áp dụng tất cả các thay đổi:
Mã:
hostname -f
Tiếp theo, bạn sẽ cần cài đặt một số gói cần thiết vào hệ thống của mình. Bạn có thể cài đặt chúng bằng lệnh sau:
Mã:
apt-get install nginx curl git wget unzip nano -y
Sau khi hoàn tất, bạn có thể tiến hành bước tiếp theo.

Cài đặt và cấu hình PostgreSQL​

Trước tiên, bạn sẽ cần cài đặt PostgreSQL vào hệ thống của mình. Bạn có thể cài đặt bằng cách chạy lệnh sau:
Mã:
apt-get install postgresql -y
Sau khi cài đặt PostgreSQL, hãy đăng nhập vào bảng điều khiển PostgreSQL bằng lệnh sau:
Mã:
sudo -u postgres psql
Tiếp theo, tạo cơ sở dữ liệu và người dùng cho Discourse bằng lệnh sau:
Mã:
postgres=#CREATE DATABASE discoursedb;
postgres=#CREATE USER discourseuser;
postgres=#ALTER USER discourseuser WITH ENCRYPTED PASSWORD 'password';
postgres=#ALTER DATABASE discoursedb OWNER TO discourseuser;
Tiếp theo, kết nối với discoursedb và tạo phần mở rộng hstore và pg_trgm bằng lệnh sau:
Mã:
postgres=#\c discoursedb;
postgres=#CREATE PHẦN MỞ RỘNG hstore;
postgres=#CREATE EXTENSION pg_trgm;
Cuối cùng, thoát khỏi PostgreSQL bằng lệnh sau:
Mã:
postgres=#\q

Cài đặt Ruby​

Tiếp theo, bạn sẽ cần cài đặt phiên bản Ruby mới nhất vào hệ thống của mình. Bạn có thể cài đặt Ruby bằng RVM.

Trước tiên, cài đặt GNU privacy guard bằng lệnh sau:
Mã:
apt-get install gnupg2 -y
Tiếp theo, nhập public của trình quản lý phiên bản Ruby bằng lệnh sau:
Mã:
gpg2 --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 7D2BAF1CF37B13E2069D6956105BD0E739499BDB
Bạn sẽ thấy đầu ra sau:
Mã:
gpg: keybox '/root/.gnupg/pubring.kbx' createdgpg: key 105BD0E739499BDB: 6 signatures not checked due to missing keysgpg: /root/.gnupg/trustdb.gpg: trustdb đã tạogpg: khóa 105BD0E739499BDB: khóa công khai "Piotr Kuczynski " đã nhậpgpg: khóa 3804BB82D39DC0E3: 103 chữ ký không được kiểm tra do thiếu khóagpg: khóa 3804BB82D39DC0E3: khóa công khai "Michal Papis (ký RVM) " đã nhậpgpg: không tìm thấy khóa đáng tin cậy cuối cùnggpg: Tổng số đã xử lý: 2gpg: đã nhập: 2
Tiếp theo, cài đặt RVM với Ruby và Rails mặc định bằng lệnh sau:
Mã:
curl -sSL https://get.rvm.io | bash -s stable --rails
Sau khi cài đặt Ruby và Rails, bạn sẽ cần source RVM scripts. Bạn có thể thực hiện bằng lệnh sau:
Mã:
source /usr/local/rvm/scripts/rvm
Bây giờ bạn có thể xem các phiên bản Ruby bằng lệnh sau:
Mã:
rvm list
Bạn sẽ thấy đầu ra sau:
Mã:
=* ruby-2.6.3 [ x86_64 ]# => - current# =* - current && default# * - default

Cài đặt và cấu hình Discourse​

Trước tiên, bạn sẽ cần tải xuống phiên bản mới nhất của Discourse từ kho lưu trữ Git. Bạn có thể tải xuống bằng lệnh sau:
Mã:
cd /var/www/
git clone https://github.com/discourse/discourse.git
Đầu ra:
Mã:
Đang sao chép vào 'discourse'...remote: Đang liệt kê các đối tượng: 57, xong.remote: Đang đếm các đối tượng: 100% (57/57), xong.remote: Đang nén các đối tượng: 100% (37/37), xong.remote: Tổng cộng 403387 (delta 26), đã sử dụng lại 34 (delta 20), đã sử dụng lại gói 403330Đang nhận các đối tượng: 100% (403387/403387), 267,39 MiB | 235,00 KiB/giây, xong.Đang giải quyết các delta: 100% (252384/252384), xong.Đang kiểm tra tệp: 100% (27055/27055), hoàn tất.
Tiếp theo, hãy kiểm tra bản phát hành ổn định mới nhất của Discourse bằng lệnh sau:
Mã:
cd discourse
git checkout v2.2.4
Tiếp theo, hãy cài đặt trình quản lý phụ thuộc Ruby bằng lệnh sau:
Mã:
/usr/local/rvm/src/ruby-2.6.3/bin/gem install bundler -v '1.17.3'
Bạn sẽ thấy đầu ra sau:
Mã:
Đang tải bundler-1.17.3.gemĐã cài đặt bundler-1.17.3 thành côngĐang phân tích tài liệu cho bundler-1.17.3Đang cài đặt tài liệu ri cho bundler-1.17.3Đã cài đặt xong tài liệu cho bundler sau 15 giâyĐã cài đặt 1 gem
Tiếp theo, bạn sẽ cần cài đặt thêm một số các gói để biên dịch mã nguồn. Bạn có thể cài đặt tất cả chúng bằng lệnh sau:
Mã:
apt-get install gcc ruby-dev libxslt-dev libxml2-dev zlib1g-dev libpq-dev imagemagick redis-server optipng pngquant jhead jpegoptim gifsicle -y
Tiếp theo, cài đặt tất cả các phụ thuộc mà Discourse yêu cầu bằng lệnh sau:
Mã:
RAILS_ENV=production bundle install --path vendor/bundle/
Tiếp theo, đổi tên tệp cấu hình mặc định của Discourse bằng lệnh sau:
Mã:
mv config/discourse_defaults.conf config/discourse.conf
Tiếp theo, mở tệp discourse.conf và xác định cài đặt cơ sở dữ liệu của bạn:
Mã:
nano config/discourse.conf
Thay đổi các dòng sau:
Mã:
db_host = localhostdb_port = 5432db_name = discoursedbdb_username = discourseuserdb_password = passwordhostname = "test.example.com"
Lưu và đóng tệp. Sau đó, chỉnh sửa tệp cấu hình môi trường sản xuất bằng lệnh sau:
Mã:
nano /var/www/discourse/config/environments/production.rb
Thêm dòng sau làm dòng thứ ba
Mã:
require 'uglifier'
Sau đó, tìm dòng sau:
Mã:
config.assets.js_compressor = :uglifier
Và thay thế bằng dòng sau:
Mã:
config.assets.js_compressor = Uglifier.new(harmony: true)
Lưu và đóng tệp khi bạn hoàn tất. Sau đó, chuẩn bị Discourse để sản xuất bằng lệnh sau:
Mã:
RAILS_ENV=production bundle exec rake db:migrate
RAILS_ENV=production bundle exec rake assets:precompile
Tiếp theo, mở tệp puma.rb bằng lệnh sau:
Mã:
nano /var/www/discourse/config/puma.rb
Tìm dòng sau:
Mã:
APP_ROOT = '/home/discourse/discourse'
Thay thế bằng dòng sau:
Mã:
APP_ROOT = '/var/www/discourse'
Lưu và đóng tệp khi bạn hoàn tất. Sau đó, tạo thư mục socket và ID tiến trình bằng lệnh sau:
Mã:
mkdir /var/www/discourse/tmp/sockets/
mkdir /var/www/discourse/tmp/pids/
Cuối cùng, khởi động Discourse bằng cách chạy lệnh sau:
Mã:
RAILS_ENV=production bundle exec puma -C /var/www/discourse/config/puma.rb
Bạn sẽ thấy đầu ra sau:
Mã:
[29834] Puma đang khởi động ở chế độ cụm...[29834] * Phiên bản 3.11.4 (ruby 2.6.3-p62), tên mã: Love Song[29834] * Số luồng tối thiểu: 8, số luồng tối đa: 32[29834] * Môi trường: phát triển[29834] * Công nhân xử lý: 4[29834] * Đang tải trước ứng dụng[29834] * Đang lắng nghe trên unix:///var/www/discourse/tmp/sockets/puma.sock[29834] ! CẢNH BÁO: Đã phát hiện 3 Luồng bắt đầu khi khởi động ứng dụng:[29834] ! # - /var/www/html/discourse/vendor/bundle/ruby/2.6.0/gems/hiredis-0.6.1/lib/hiredis/ext/connection.rb:19:in `read'[29834] ! # - /var/www/html/discourse/vendor/bundle/ruby/2.6.0/gems/message_bus-2.2.0.pre.1/lib/message_bus/timer_thread.rb:123:trong `sleep'[29834] ! # - /var/www/discourse/lib/discourse.rb:587:in `sleep'[29834] * Daemonizing...
Tiếp theo, tạo một tài khoản quản trị để truy cập giao diện web Discourse bằng lệnh sau:
Mã:
cd /var/www/discourse
RAILS_ENV=production bundle exec rake admin:create
Cung cấp email và mật khẩu của bạn như hiển thị bên dưới:
Mã:
Email: [emailprotected]Mật khẩu:Nhập lại mật khẩu:Đảm bảo tài khoản đang hoạt động!Tài khoản đã được tạo thành công với ví dụ tên người dùngBạn có muốn cấp quyền Quản trị viên cho tài khoản này không? (Y/n) YTài khoản của bạn hiện có quyền Quản trị viên!
Tiếp theo, khởi động lại dịch vụ Discourse bằng lệnh sau:
Mã:
RAILS_ENV=production bundle exec pumactl -P /var/www/discourse/tmp/pids/puma.pid restart

Cấu hình Nginx cho Discourse​

Tiếp theo, bạn sẽ cần cấu hình Nginx làm proxy ngược để truy cập giao diện web Discourse trên cổng 80.

Đầu tiên, sao chép tệp cấu hình máy chủ ảo Nginx mẫu bằng lệnh sau:
Mã:
cp /var/www/discourse/config/nginx.sample.conf /etc/nginx/conf.d/discourse.conf
Tiếp theo, mở tệp discourse.conf bằng lệnh sau:
Mã:
nano /etc/nginx/conf.d/discourse.conf
Thực hiện các thay đổi sau:
Mã:
#upstream discourse {# server unix:/var/www/discourse/tmp/sockets/thin.0.sock;# server unix:/var/www/discourse/tmp/sockets/thin.1.sock;# server unix:/var/www/discourse/tmp/sockets/thin.2.sock;# server unix:/var/www/discourse/tmp/sockets/thin.3.sock;#}upstream discourse { server unix:/var/www/discourse/tmp/sockets/puma.sock; }server_name test.example.com;
Lưu và đóng tệp khi bạn hoàn tất. Sau đó, tạo thư mục bộ nhớ đệm bằng lệnh sau:
Mã:
mkdir -p /var/nginx/cache/
Tiếp theo, kiểm tra Nginx xem có lỗi cú pháp nào không bằng lệnh sau:
Mã:
nginx -t
Đầu ra:
Mã:
nginx: cú pháp tệp cấu hình /etc/nginx/nginx.conf là oknginx: tệp cấu hình /etc/nginx/nginx.conf đã kiểm tra thành công
Tiếp theo, khởi động lại Nginx để áp dụng tất cả các thay đổi:
Mã:
systemctl restart nginx
Bạn cũng có thể kiểm tra trạng thái của Nginx bằng lệnh sau:
Mã:
systemctl status nginx
Đầu ra:
Mã:
? nginx.service - Máy chủ web hiệu suất cao và máy chủ proxy ngược Đã tải: đã tải (/lib/systemd/system/nginx.service; đã bật; cài đặt trước của nhà cung cấp: đã bật) Đang hoạt động: đang hoạt động (đang chạy) kể từ CN 2019-05-26 04:19:12 UTC; 29 phút trước Tài liệu: man:nginx(8) Tiến trình: 1052 ExecStart=/usr/sbin/nginx -g daemon on; master_process on; (code=exited, status=0/SUCCESS) Tiến trình: 848 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process on; (code=exited, status=0/SUCCESS) PID chính: 1065 (nginx) Nhiệm vụ: 3 (giới hạn: 1114) CGroup: /system.slice/nginx.service ??1065 nginx: tiến trình chính /usr/sbin/nginx -g daemon on; master_process on; ??1066 nginx: tiến trình công nhân ??1067 nginx: tiến trình quản lý bộ nhớ đệm26 tháng 5 04:19:04 ubuntu1804 systemd[1]: Đang khởi động Một máy chủ web hiệu suất cao và một máy chủ proxy ngược...26 tháng 5 04:19:12 ubuntu1804 systemd[1]: nginx.service: Không phân tích được PID từ tệp /run/nginx.pid: Đối số không hợp lệ26 tháng 5 04:19:12 ubuntu1804 systemd[1]: Đã khởi động Một máy chủ web hiệu suất cao và một máy chủ proxy ngược.
Bạn cũng cần sao chép tệp JS sau nếu gặp bất kỳ lỗi nào khi truy cập vào giao diện web Discourse:
Mã:
cp /var/www/discourse/public/assets/_vendor-3eae3eec8fba033cb1b5af6c103a5b8781caa69cf97fe7773ba89ba68980b263.js /var/www/discourse/public/assets/vendor-3eae3eec8fba033cb1b5af6c103a5b8781caa69cf97fe7773ba89ba68980b263.js

Truy cập Giao diện web Discourse​

Discourse hiện đã được cài đặt và cấu hình, đã đến lúc truy cập giao diện web Discourse.

Mở trình duyệt web của bạn và nhập URL http://test.example.com. Bạn sẽ được chuyển hướng đến trang sau:



Bây giờ, hãy nhấp vào nút Đăng nhập Vào. Bạn sẽ thấy trang sau:



Bây giờ, hãy cung cấp tên người dùng và mật khẩu của bạn. Sau đó, hãy nhấp vào nút Đăng nhập Vào. Bạn sẽ thấy trang sau:



Bây giờ, bạn có thể khởi động Trình hướng dẫn thiết lập bằng URL http://test.example.com/wizard trên trình duyệt web của mình. Bạn sẽ thấy màn hình Chào mừng ở trang sau:



Bây giờ, hãy chọn ngôn ngữ của bạn và nhấp vào nút Tiếp theo. Bạn sẽ thấy trang sau:



Tại đây, hãy nhập chủ đề của bạn và nhấp vào nút Tiếp theo. Bạn sẽ thấy trang sau:



Tại đây, hãy chọn Công khai và nhấp vào nút Tiếp theo. Bạn sẽ thấy trang sau:



Tại đây, cung cấp email và trang liên hệ của bạn. Sau đó, nhấp vào nút Tiếp theo. Bạn sẽ thấy trang sau:



Tại đây, cung cấp tên công ty và địa chỉ của bạn. Sau đó, nhấp vào nút Tiếp theo. Bạn sẽ thấy trang sau:



Bây giờ, hãy chọn chủ đề của bạn và nhấp vào nút Tiếp theo. Bạn sẽ thấy trang sau:



Bây giờ, hãy tải logo của bạn lên và nhấp vào nút Tiếp theo. Bạn sẽ thấy trang sau:



Bây giờ, hãy chọn Biểu tượng và nhấp vào nút Tiếp theo. Bạn sẽ thấy trang sau:



Bây giờ, hãy chọn trang chủ của bạn và nhấp vào nút Tiếp theo. Bạn sẽ thấy trang sau:



Bây giờ, hãy chọn Biểu tượng cảm xúc theo ý muốn và nhấp vào nút Tiếp theo. Bạn sẽ thấy trang sau:



Bây giờ, hãy mời nhân viên của bạn tham gia diễn đàn này và nhấp vào nút Tiếp theo. Sau khi quá trình cài đặt hoàn tất, bạn sẽ thấy trang sau:



Bây giờ, hãy nhấp vào nút Xong. Bạn sẽ được chuyển hướng đến bảng điều khiển Discourse được hiển thị ở trang sau:



Xin chúc mừng! bạn đã cài đặt và cấu hình thành công diễn đàn Discourse trên máy chủ Ubuntu 18.04.
 
Back
Bên trên