NodeBB làphần mềm diễn đàn dựa trên Node.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.Các 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 mã 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 thông qua quy trình cài đặt NodeBBB trên hệ điều hành FreeBSD 12 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.
Thiết lập múi giờ:
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:
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 FreeBSD 12.0:
Tải xuống và cài đặt Node.js:
LƯU Ý: npm được phân phối cùng với Node.js - nghĩa là khi bạn tải Node.js xuống, npm sẽ tự động được cài đặt trên hệ thống của bạn.
Kiểm tra phiên bản Node.js vànpm:
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 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:
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 sau:
Và lệnh này sẽ trả về số phiên bản mới nhất.
Để cài đặt phiên bản ổn định của gói MongoDB, hãy đưa ra lệnh sau:
Kiểm tra phiên bản MongoDB:
Startandenable(đặt để bắt đầu khi khởi động lại)Dịch vụ MongoDB:
Kiểm tra trạng thái Máy chủ cơ sở dữ liệu MongoDB bằng cách chạy:
Tiếp theo, tạo cơ sở dữ liệu MongoDB và người dùng cho NodeBB.
Kết nối với máy chủ MongoDB trước.
Chuyển sang cơ sở dữ liệu
Tạo người dùng quản trị.
LƯU Ý: Thay thế chỗ giữ chỗ
Thêm cơ sở dữ liệu mới có tên là
Cơ sở dữ liệu sẽ được tạo và ngữ cảnh sẽ được chuyển sang
LƯU Ý: Một lần nữa, hãy thay thế chỗ giữ chỗ
Thoát khỏi Mongo shell.
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.
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.
Tải xuống và cài đặt acme.sh:
Kiểm tra phiên bản acme.sh:
Lấy chứng chỉ RSA và ECC/ECDSA cho tên miền/tên máy chủ của bạn:
Nếu bạn muốn có chứng chỉ giả để thử nghiệm, bạn có thể thêm
Sau khi chạy các lệnh trên, chứng chỉvàkhóacủa bạn sẽ nằm trong:
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
Cài đặt/sao chép chứng chỉ vào/etc/letsencryptthư mục.
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à trở về người dùng sudo bình thường:
Cài đặt gói Nginx bằng cách sử dụng lệnh sau:
Sau khi cài đặt, bạn có thể xác minh phiên bản Nginx bằng cách chạy:
Startandenable (đặt để bắt đầu khi khởi động lại) Dịch vụ Nginx:
Kiểm tra trạng thái máy chủ web Nginx bằng cách chạy:
Theo mặc định, NodeBB chạy trên cổng 4567[/ICODE]. Để tránh nhập
Chạy
Chạy
Kiểm tra lỗi cú pháp trong cấu hình Nginx:
Tải lại dịch vụ Nginx:
Điều hướng đến thư mục gốc của tài liệu:
Thay đổi quyền sở hữu của thư mục
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:
Khởi chạy tập lệnh thiết lập bằng cách chạy ứng dụng với cờ
Sau khi thiết lập NodeBB hoàn tất, hãy chạy
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:
Nếu đang chạy, hãy dừng NodeBB:
Cài đặt PM2 toàn cầu:
Kiểm tra phiên bản PM2:
Điều hướng đến thư mục gốc của tài liệu NodeBB:
Khởi động NodeBB qua PM2:
Liệt kê quy trình NodeBB:
Phát hiện hệ thống khởi tạo khả dụng bằng:
Sao chép và dán vào CLI đầu ra của lệnh này để thiết lập hook khởi động.
Lưu danh sách quy trình của bạn bằng:
Vậy là xong. Phiên bản NodeBB của bạn hiện đã hoạt động.
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 FreeBSD 12.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.
Yêu cầu
NodeBB yêu cầu phải 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
Điều kiện tiên quyết
- Hệ thống FreeBSD 12 đ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 FreeBSD của bạn:
Mã:
uname -ro[B]# FreeBSD 12.0-RELEASE
Mã:
tzsetup
Mã:
freebsd-update fetch install
pkg update && pkg upgrade -y
Mã:
pkg install -y sudo vim unzip wget git bash socat gcc8 pkgconf vips
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 đặtphiên bảnđược khuyến nghị cho NodeBB là phiên bản 10[/b]tại thời điểm viết bài này.Tải xuống và cài đặt Node.js:
Mã:
sudo pkg install -y node10 npm-node10
Kiểm tra phiên bản Node.js vànpm:
Mã:
node -v && npm -v
Mã:
sudo npm install -g npm@latest
Kiểm tra lại phiên bản npm bằng lệnh sau:
Mã:
npm -v
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 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.Để cài đặt phiên bản ổn định của gói MongoDB, hãy đưa ra lệnh sau:
Mã:
sudo pkg install -y mongodb40
Mã:
mongo --version | head -n 1 && mongod --version | head -n 1
Mã:
sudo sysrc mongod_enable=yes
sudo service mongod start
Mã:
sudo service mongod status
#active (đang chạy)
Kết nối với máy chủ MongoDB trước.
Mã:
mongo
admin
tích hợp sẵn.
Mã:
> use admin
Mã:
> db.createUser( { user: "admin", pwd: "", roles: [ { role: "readWriteAnyDatabase", db: "admin" }, { role: "userAdminAnyDatabase", db: "admin" } ] } )
bằng mật khẩu bạn chọn.Thêm cơ sở dữ liệu mới có tên là
nodebb
.
Mã:
> sử dụng nodebb
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" } ] } )
bằng mật khẩu bạn đã chọn.Thoát khỏi Mongo shell.
Mã:
> quit()
Mã:
sudo systemctl restart mongodb.service
mongo -u admin -p your_password --authenticationDatabase=admin
Bước 3 - Cài đặt máy khách acme.sh và lấy chứng chỉ Lets Encrypt
Bước này là tùy chọn. Không cần 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 vệ 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 tôi 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 bất kỳ sự phụ thuộc nào.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 ~
Mã:
acme.sh --version
# v2.8.0
Mã:
# RSA 2048
acme.sh --issue--standalone -d example.com --keylength 2048
# ECDSA
acme.sh --issue --standalone -d example.com --keylength ec-256
--staging
flag vào các lệnh trên.Sau khi chạy các lệnh trên, chứng chỉvà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
.
Mã:
acme.sh --list
/etc/letsencrypt
.
Mã:
mkdir -p /etc/letsecnrypt/example.com
[ICODE]sudo mkdir -p /etc/letsencrypt/example.com_ecc
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"
Sau khi lấy được chứng chỉ, hãy thoát khỏi người dùng root và trở về 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 pkg install -y nginx
Mã:
nginx -v
Mã:
sudo sysrc nginx_enable=yes
sudo service nginx start
Mã:
sudo service nginx status
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 /usr/local/etc/nginx/nodebb.conf
và cấu hình Nginx làm proxy ngược HTTPS.
Mã:
server {
listen [::]:443 ssl;
listen 443 ssl;
listen [::]:80;
listen 80;
server_name 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";
}
}
sudo vim /usr/local/etc/nginx/nginx.conf
và thêm dòng bên dưới vào khối http {}
để includeNodeBB config.
Mã:
include nodebb.conf;
Mã:
sudo nginx -t
Mã:
sudo service nginx reload
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 /usr/local/www/nodebb
Mã:
cd /usr/local/www/nodebb
/usr/local/www/nodebb
thànhyour_user:
Mã:
sudo chown -R your_user:your_user /usr/local/www/nodebb
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 .
setup
. Trả lời từng câu hỏi sau:
Mã:
./nodebb setup
./nodebb start
để khởi động thủ công máy chủ NodeBB của bạn:
Mã:
./nodebb start
Bước 6: Chạy NodeBB liên tục qua PM2
Khi được khởi chạy 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 như một dịch vụ hệ thống.Nếu đang chạy, hãy dừng NodeBB:
Mã:
./nodebb stop
Mã:
sudo npm install pm2 -g
Mã:
pm2 -v
# 3.5.0
Mã:
cd /usr/local/www/nodebb
Mã:
pm2 start app.js
Mã:
pm2 ls
Mã:
pm2 startup
Lưu danh sách quy trình của bạn bằng:
Mã:
pm2 save
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 FreeBSD 12.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.