Cách cài đặt NodeBB Forum trên Fedora 29

theanh

Administrator
Nhân viên
NodeBB là phần mềm diễn đàn dựa trênNode.js được xây dựng cho web hiện đại. Nó được xây dựng trên cơ sở dữ liệu MongoDB hoặc Redis. Nó sử dụng web socket để tương tác tức thời và thông báo theo thời gian thực. NodeBB có nhiều tính năng hiện đại ngay khi cài đặt như tích hợp mạng xã hội và thảo luận phát trực tuyến.Chức năng bổ sung được kích hoạt thông qua việc sử dụng các plugin của bên thứ ba.NodeBB là một dự án nguồn mở có thể được tìm thấy trên Github.Trong hướng dẫn này, chúng tôi sẽ hướng dẫn bạn từng bước quy trình cài đặt NodeBB trên hệ điều hành Fedora 29 bằng cách sử dụng Nginx làm proxy ngược, MongoDB làm cơ sở dữ liệu và acme.sh và Let's Encrypt cho HTTPS.

Yêu cầu​

NodeBB yêu cầu cài đặt phần mềm sau:
  • Node.js phiên bản 6 trở lên
  • MongoDB phiên bản 2.6 trở lên hoặcRedis phiên bản 2.8.9 hoặc lớn hơn
  • Phiên bản Nginx 1.3.13 trở lên
  • Git
LƯU Ý: Việc cài đặt các phần phụ thuộc của NodeBB có thể yêu cầu hơn 512 megabyte bộ nhớ hệ thống. Bạn nên bật phân vùng hoán đổi để bù đắp nếu hệ thống Linux của bạn không đủ bộ nhớ.

Điều kiện tiên quyết​

  • Hệ thống Fedora 29 đang chạy có ít nhất 1GB RAM.
  • Tên miền có bản ghi A/AAAA được thiết lập.
  • Người dùng không phải root có quyền sudo.

Ban đầu các bước​

Kiểm tra phiên bản Fedora của bạn:
Mã:
cat /etc/fedora-release[B]#Fedora release 29 (Twenty Nine)
Thiết lập múi giờ:
Mã:
timedatectl list-timezones
sudo timedatectl set-timezone 'Region/City'
Cập nhật các gói hệ điều hành (phần mềm) của bạn. Đây là bước đầu tiên quan trọng vì nó đảm bảo bạn có các bản cập nhật và bản sửa lỗi bảo mật mới nhất cho các gói phần mềm mặc định của hệ điều hành:
Mã:
sudo dnf check-upgrade || sudo dnf upgrade -y
Cài đặt một số gói thiết yếu cần thiết cho việc quản trị cơ bản hệ điều hành Fedora:
Mã:
sudo dnf install -y curl wget vimbash-completion git socat
Để đơn giản, hãy tắt SELinux và Tường lửa:
Mã:
sudo setenforce 0; sudo systemctl stop firewalld.service; sudo systemctl disable firewalld.service

Bước 1: Cài đặt Node.js và npm​

NodeBB được xây dựng trênNode.js.Chúng tôi sẽ cài đặt phiên bảnđược khuyến nghịcho NodeBB là phiên bản 8[/b]tại thời điểm viết bài này. Trên Linux, bạn có một số tùy chọn cài đặt Node.js: Linux Binaries (x86/x64), Source Code hoặc thông qua Package Managers. Chúng tôi sẽ sử dụng tùy chọn Quản lý gói giúp việc cài đặt và cập nhật Node.js trở nên dễ dàng.

Tải xuống và cài đặt bản phát hành Hỗ trợ dài hạn (LTS) mới nhất củaNode.js từ kho lưu trữ Fedora:
Mã:
sudo dnf -y install nodejs
Để biên dịch và cài đặt các tiện ích bổ sung gốc từ npm, bạn cũng có thể cần cài đặt các công cụ xây dựng:
Mã:
sudo dnf install -y gcc-c++ make
# hoặc
# sudo dnf groupinstall -y 'Công cụ phát triển'
LƯU Ý: npm được phân phối cùng với Node.js - điều đó có nghĩa là khi bạn tải xuống Node.js, npm sẽ tự động được cài đặt trên hệ thống của bạn.


Kiểm tra Node.js vànpm phiên bản:
Mã:
node -v && npm -v
# v10.15.0
# 6.4.1
Npm là một dự án riêng biệt với Node.js và có xu hướng cập nhật thường xuyên hơn. Do đó, ngay cả khi bạn vừa tải xuống Node.js (và do đó là npm), bạn có thể sẽ cần cập nhật npm của mình. May mắn thay, npm biết cách tự cập nhật! Để cập nhật npm, hãy nhập lệnh này vào terminal của bạn:

Mã:
sudo npm install -g npm@latest
Lệnh này sẽ cập nhật npm lên phiên bản ổn định mới nhất.

Kiểm tra lại phiên bản npm bằng lệnh:
Mã:
npm -v
# 6.7.0
Và lệnh này sẽ trả về số phiên bản mới nhất.

Bước 2: Cài đặt và cấu hình MongoDB​

NodeBB cần một cơ sở dữ liệu để lưu trữ dữ liệu của nó và nó hỗ trợ MongoDB và Redis. Trong hướng dẫn này, chúng tôi chọn MongoDB làm công cụ lưu trữ dữ liệu. Vì vậy, trong vài bước tiếp theo, chúng tôi sẽ tải xuống và cài đặt cơ sở dữ liệu MongoDB từ kho lưu trữ rpm MongoDB chính thức:

Để cài đặt phiên bản ổn định của gói MongoDB, hãy đưa ra lệnh sau:
Mã:
sudo dnf install -y mongodb mongodb-server
Kiểm tra phiên bản MongoDB:
Mã:
mongo --version | head -n 1 && mongod --version | head -n 1
# Phiên bản shell MongoDB v4.0.1
# Phiên bản db v4.0.1
Startandenable(đặt để bắt đầu khi khởi động lại)Dịch vụ MongoDB:
Mã:
sudo systemctl start mongod.service
sudo systemctl enable mongod.service
Kiểm tra trạng thái Máy chủ cơ sở dữ liệu MongoDB bằng cách chạy:
Mã:
sudo systemctl status mongod.service
#active (đang chạy)
Tiếp theo, tạo cơ sở dữ liệu MongoDB và người dùng cho NodeBB.

Trước tiên, hãy kết nối với máy chủ MongoDB.
Mã:
mongo
Chuyển sang cơ sở dữ liệu admin tích hợp sẵn.
Mã:
> sử dụng admin
Tạo người dùng quản trị.
Mã:
> db.createUser( { user: "admin", pwd: "", roles: [ { role: "readWriteAnyDatabase", db: "admin" }, { role: "userAdminAnyDatabase", db: "admin" } ] } )
LƯU Ý: Thay thế chỗ giữ chỗ bằng mật khẩu bạn chọn.

Thêm cơ sở dữ liệu mới có tên nodebb.
Mã:
> sử dụng nodebb
Cơ sở dữ liệu sẽ được tạo và ngữ cảnh sẽ được chuyển thành nodebb. Tiếp theo, tạo người dùng nodebb với các đặc quyền phù hợp.
Mã:
> db.createUser( { user: "nodebb", pwd: "", roles: [ { role: "readWrite", db: "nodebb" }, { role: "clusterMonitor", db: "admin" } ] } )
LƯU Ý: Một lần nữa, hãy thay thế chỗ giữ chỗ bằng mật khẩu bạn đã chọn.

Thoát khỏi Mongo shell.
Mã:
> quit()
Khởi động lại MongoDB và xác minh rằng người dùng quản trị đã tạo trước đó có thể kết nối.
Mã:
sudo systemctl restart mongod.service
mongo -u admin -p your_password --authenticationDatabase=admin
Nếu mọi việc diễn ra tốt đẹp, MongoDB của bạn sẽ được cài đặt và chuẩn bị cho NodeBB. Ở bước tiếp theo, chúng ta sẽ xử lý cài đặt và cấu hình máy chủ web.

Bước 3 - Cài đặt máy khách acme.sh và lấy chứng chỉ Let's Encrypt (tùy chọn)​

Không nhất thiết phải bảo mật Diễn đàn NodeBB của bạn bằng HTTPS, nhưng đây là một biện pháp tốt để bảo mật lưu lượng truy cập trang web của bạn. Để lấy chứng chỉ TLS từ Let's Encrypt, chúng ta sẽ sử dụng máy khách acme.sh. Acme.sh là phần mềm shell unix thuần túy để lấy chứng chỉ TLS từ Let's Encrypt mà không cần phụ thuộc.

Tải xuống và cài đặt acme.sh:
Mã:
sudo su - root
git clone https://github.com/Neilpang/acme.sh.git
cd acme.sh 
./acme.sh --install --accountemail [emailprotected]
source ~/.bashrc
cd ~
Kiểm tra phiên bản acme.sh:
Mã:
acme.sh --version
# v2.8.0
Lấy chứng chỉ RSAECC/ECDSA cho tên miền/tên máy chủ của bạn:
Mã:
# RSA 2048
acme.sh --issue--standalone -d example.com --keylength 2048
# ECDSA
acme.sh --issue --standalone -d example.com --keylength ec-256
Nếu bạn muốn có chứng chỉ giả để thử nghiệm, bạn có thể thêm --stagingflage vào các lệnh trên.

Sau khi chạy các lệnh trên, chứng chỉkhóacủa bạn sẽ nằm trong:
  • Đối với RSA: thư mục /home/username/example.com.
  • Đối với ECC/ECDSA: thư mục /home/username/example.com_ecc.
Để liệt kê các chứng chỉ đã cấp, bạn có thể chạy:
Mã:
acme.sh --list
Tạo một thư mục để lưu trữ các chứng chỉ của bạn. Chúng tôi sẽ sử dụng thư mục /etc/letsencrypt.
Mã:
mkdir -p /etc/letsecnrypt/example.com
[ICODE]sudo mkdir -p /etc/letsencrypt/example.com_ecc
Cài đặt/sao chép chứng chỉ vào/etc/letsencryptthư mục.
Mã:
# RSA
acme.sh --install-cert -d example.com --cert-file /etc/letsencrypt/example.com/cert.pem --key-file /etc/letsencrypt/example.com/private.key --fullchain-file /etc/letsencrypt/example.com/fullchain.pem --reloadcmd "sudo systemctl reload nginx.service"
# ECC/ECDSA
acme.sh --install-cert -d example.com --ecc --cert-file /etc/letsencrypt/example.com_ecc/cert.pem --key-file /etc/letsencrypt/example.com_ecc/private.key --fullchain-file /etc/letsencrypt/example.com_ecc/fullchain.pem --reloadcmd "sudo systemctl reload nginx.service"
Tất cả các chứng chỉ sẽ được tự động gia hạn sau mỗi 60 ngày.

Sau khi lấy được chứng chỉ, hãy thoát khỏi người dùng root và quay lại với người dùng sudo bình thường:
Mã:
exit

Bước 4: Cài đặt và cấu hình Nginx​

NodeBB có thể hoạt động tốt với nhiều máy chủ web. Trong hướng dẫn này, chúng tôi đã chọn Nginx.

Cài đặt gói Nginx bằng cách sử dụng lệnh sau:
Mã:
sudo dnf install -y nginx
Sau khi cài đặt, bạn có thể xác minh phiên bản Nginx bằng cách chạy:
Mã:
nginx -v
# 1.14.1
Startandenable (đặt để bắt đầu khi khởi động lại) Dịch vụ Nginx:
Mã:
sudo systemctl start nginx.service
sudo systemctl enable nginx.service
Kiểm tra trạng thái máy chủ web Nginx bằng cách chạy:
Mã:
sudo systemctl status nginx.service
#active (đang chạy)
Theo mặc định, NodeBB chạy trên cổng 4567[/ICODE]. Để tránh phải nhập http://example.com:4567, chúng tôi sẽ cấu hình Nginx làm proxy ngược cho ứng dụng NodeBB. Mọi yêu cầu trên cổng 80 hoặc 443 (nếu sử dụng SSL) sẽ được chuyển tiếp đến cổng 4567.

Chạy sudo vim /etc/nginx/conf.d/nodebb.confvà cấu hình Nginx làm proxy ngược HTTPS.
Mã:
server {
 listen [::]:443 ssl http2;
 listen 443 ssl http2;
 listen [::]:80;
 listen 80;
 
 server_name forum.example.com;
 
 client_max_body_size 50M;

 # RSA
 ssl_certificate /etc/letsencrypt/example.com/fullchain.pem;
 khóa_chứng_nhận_ssl /etc/letsencrypt/example.com/private.key;
 # ECDSA
 khóa_chứng_nhận_ssl /etc/letsencrypt/example.com_ecc/fullchain.pem;
 khóa_chứng_nhận_ssl /etc/letsencrypt/example.com_ecc/private.key;

 vị trí / {
 proxy_set_header X-IP thực $remote_addr;
 proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
 proxy_set_header X-Forwarded-Proto $scheme;
 proxy_set_header Máy chủ $http_host;
 proxy_set_header X-NginX-Proxy đúng;
 proxy_pass http://127.0.0.1:4567;
 proxy_redirect tắt;
 # Hỗ trợ Socket.IO
 proxy_http_version 1.1;
 proxy_set_header Nâng cấp $http_upgrade;
 proxy_set_header Kết nối "nâng cấp"; 
 }

}
Kiểm tra cấu hình Nginx:
Mã:
sudo nginx -t
Cuối cùng, để các thay đổi có hiệu lực, chúng ta cần tải lại Nginx:
Mã:
sudo systemctl reload nginx.service

Bước 5: Cài đặt và thiết lập NodeBB​

Tạo thư mục gốc của tài liệu nơi NodeBB sẽ lưu trú:
Mã:
sudo mkdir -p /var/www/nodebb
Điều hướng đến thư mục gốc của tài liệu:
Mã:
cd /var/www/nodebb
Thay đổi quyền sở hữu của thư mục /var/www/nodebbthànhyour_user.
Mã:
sudo chown -R [your_user]:[your_user] /var/www/nodebb
LƯU Ý:Thay thế your_user trong lệnh trên bằng người dùng không phải root mà bạn đã tạo làm điều kiện tiên quyết cho hướng dẫn này.

Sao chép kho lưu trữ NodeBBmới nhấtvào thư mục gốc của tài liệu:
Mã:
git clone -b v1.11.x https://github.com/NodeBB/NodeBB.git .
Khởi tạo tập lệnh thiết lập bằng cách chạy ứng dụng với cờ setup. Trả lời từng câu hỏi sau:
Mã:
./nodebb setup
Sau khi quá trình thiết lập NodeBB hoàn tất, hãy chạy ./nodebb start để khởi động thủ công máy chủ NodeBB của bạn:
Mã:
./nodebb start
Sau khi chạy lệnh này, bạn sẽ có thể truy cập diễn đàn hoàn toàn mới của mình trong trình duyệt web:


Bước 6: Chạy NodeBB dưới dạng Dịch vụ hệ thống​

Khi được khởi động qua ./nodebb start, NodeBB sẽ không tự động khởi động lại khi hệ thống khởi động lại. Để tránh điều đó, chúng ta sẽ cần thiết lập NodeBB dưới dạng dịch vụ hệ thống.

Nếu đang chạy, hãy dừng NodeBB:
Mã:
./nodebb stop
Tạo người dùng nodebb mới:
Mã:
sudo useradd nodebb
Thay đổi quyền sở hữu thư mục /var/www/nodebb thành người dùng nodebb:
Mã:
sudo chown -R nodebb:nodebb /var/www/nodebb
Tạo tệp cấu hình đơn vị systemd nodebb.service. Tệp đơn vị này sẽ xử lý việc khởi động deamon NodeBB. Chạy sudo vim /etc/systemd/system/nodebb.service và thêm nội dung bên dưới:
Mã:
[Unit]Description=NodeBBDocumentation=https://docs.nodebb.orgAfter=system.slice multi-user.target mongod.service[Service]Type=forkingUser=nodebbStandardOutput=syslogStandardError=syslogSyslogIdentifier=nodebbEnvironment=NODE_ENV=productionWorkingDirectory=/var/www/nodebbPIDFile=/var/www/nodebb/pidfileExecStart=/usr/bin/env node loader.jsRestart=always[Install]WantedBy=multi-user.target
LƯU Ý: Đặt tên người dùng và đường dẫn thư mục theo tên bạn đã chọn.

Bật nodebb.service khi khởi động lại và ngay lập tức khởi động nodebb.service:
Mã:
sudo systemctl enable nodebb.service
sudo systemctl start nodebb.service
Kiểm tra trạng thái nodebb.service:
Mã:
sudo systemctl status nodebb.service
sudo systemctl is-enabled nodebb.service
Xin chúc mừng! Bạn đã cài đặt và triển khai thành công nền tảng NodeBBdiscussion trên hệ thống Fedora 29.Bạn sẽ có thể truy cập diễn đàn trên tên miền của mình và tương tác với diễn đàn.

Liên kết​

 
Back
Bên trên