Hướng dẫn cài đặt NodeBB trên hệ điều hành Debian 9

NodeBB là một  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 các ổ cắm web để tương tác tức thì và thông báo theo thời gian thực. NodeBB có nhiều tính năng hiện đại vượt trội như tích hợp mạng xã hội và thảo luận 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 thông qua quy trình cài đặt NodeBBB trên hệ điều hành Debian 9 sử dụng Nginx làm proxy reverse, MongoDB làm cơ sở dữ liệu và acme.sh và Let 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ặc  Redis phiên bản 2.8.9 trở lên
  • Nginx phiên bản 1.3.13 trở lên
  • Git

LƯU Ý : Cài đặt các phụ thuộc của NodeBB có thể cần nhiều hơn 512 megabyte bộ nhớ hệ thống. Bạn nên bật phân vùng trao đổi để bù nếu hệ thống Linux của bạn không đủ bộ nhớ.

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

  • Một hệ thống Debian 9 đang chạy với ít nhất 1GB RAM.
  • Tên miền với hồ sơ được thiết lập.
  • Một người dùng không root với đặc quyền sudo.

Các bước ban đầu

Kiểm tra phiên bản Debian của bạn:

lsb_release -ds

Thiết lập múi giờ:

sudo dpkg-reconfigure tzdata

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 mới nhất và các bản sửa lỗi bảo mật cho các gói phần mềm mặc định của hệ điều hành của bạn:

sudo apt update && sudo apt upgrade -y

Cài đặt một số gói thiết yếu cần thiết cho quản trị cơ bản của hệ điều hành Debian:

sudo apt install -y curl wget vim git unzip sudo socat bash-completion apt-transport-https

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

NodeBB được xây dựng trên  Node.js.  Chúng tôi sẽ cài đặt  các  khuyến cáo  phiên bản dành cho NodeBB đó là phiên bản 8  tại thời điểm viết bài này. Trên Linux, bạn có một vài tùy chọn cài đặt Node.js: Linux Binaries (x86 / x64), Mã nguồn hoặc thông qua Trình quản lý gói. Chúng tôi sẽ sử dụng tùy chọn Quản lý gói giúp cài đặt và cập nhật Node.js dễ dàng.

Tải xuống và cài đặt bản phát hành  Node.js hỗ trợ dài hạn ( LTS ) mới nhất từ kho NodeSource:

curl -sL https://deb.nodesource.com/setup_10.x | sudo -E bash -
sudo apt install -y 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:

sudo apt install -y build-essential

LƯU Ý : npm được phân phối với Node.js – có nghĩa là khi bạn tải xuống Node.js, bạn sẽ tự động cài đặt npm trên hệ thống của mình.

Kiểm tra phiên bản Node.js và  npm :

node -v && npm -v
# v10.15.1
# 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), có thể bạn 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 của bạn, nhập cái này vào thiết bị đầu cuối của bạn:

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 với:

npm -v
# 6.7.0

Và nó 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ữ vòng / phút MongoDB chính thức:

Để cài đặt phiên bản ổn định của gói MongoDB  từ kho lưu trữ MongoDB chính thức , hãy dùng lệnh sau:

sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 9DA31620334BD75D9DCB49F368818C72E52529D4
echo "deb https://repo.mongodb.org/apt/debian stretch/mongodb-org/4.0 main" | sudo tee /etc/apt/sources.list.d/mongodb-org-4.0.list
sudo apt update
sudo apt install -y mongodb-org

Kiểm tra phiên bản MongoDB:

mongo --version | head -n 1 && mongod --version | head -n 1

Bắt đầu và bật  ( đặt nó để bắt đầu khởi động lại )  Dịch vụ MongoDB:

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:

sudo systemctl status mongod.service
# active (running)

Tiếp theo, tạo cơ sở dữ liệu và người dùng MongoDB cho NodeBB.

Kết nối với máy chủ MongoDB trước.

mongo

Chuyển sang admincơ sở dữ liệu tích hợp.

> use admin

Tạo người dùng quản trị.

> db.createUser( { user: "admin", pwd: "<Enter a secure password>", roles: [ { role: "readWriteAnyDatabase", db: "admin" }, { role: "userAdminAnyDatabase", db: "admin" } ] } )

LƯU Ý: Thay thế trình giữ chỗ <Enter a secure password>bằng mật khẩu đã chọn của riêng bạn.

Thêm một cơ sở dữ liệu mới được gọi là nodebb.

> use nodebb

Cơ sở dữ liệu sẽ được tạo và bối cảnh chuyển sang nodebb. Tiếp theo, tạo nodebbngười dùng với các đặc quyền thích hợp.

> db.createUser( { user: "nodebb", pwd: "<Enter a secure password>", roles: [ { role: "readWrite", db: "nodebb" }, { role: "clusterMonitor", db: "admin" } ] } )

LƯU Ý: Một lần nữa, thay thế trình giữ chỗ <Enter a secure password>bằng mật khẩu đã chọn của riêng bạn.

Thoát khỏi vỏ Mongo.

> quit()

Khởi động lại MongoDB và xác minh rằng người dùng quản trị được tạo trước đó có thể kết nối.

sudo systemctl restart mongodb.service
mongo -u admin -p your_password --authenticationDatabase=admin

Nếu mọi việc suôn sẻ, MongoDB của bạn sẽ được cài đặt và chuẩn bị cho NodeBB. Trong bước tiếp theo, chúng tôi sẽ xử lý cài đặt và cấu hình máy chủ web.

Bước 3 – Cài đặt ứng dụng khách acme.sh và lấy chứng chỉ Lets Encrypt

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

Tải xuống và cài đặt acme.sh:

sudo su - root
git clone https://github.com/Neilpang/acme.sh.git
cd acme.sh 
./acme.sh --install --accountemail your_email@example.com
source ~/.bashrc
cd ~

Kiểm tra phiên bản acme.sh:

acme.sh --version
# v2.8.0

Nhận chứng chỉ RSA và ECC / ECDSA cho tên miền / tên máy chủ của bạn:

# 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 chứng chỉ giả để kiểm tra, bạn có thể thêm –staging cờ vào các lệnh trên.

Sau khi chạy các lệnh trên,  chứng chỉ  và  khóa của  bạn sẽ ở trong:

  • Đối với RSA : /home/username/example.comthư mục.
  • Đối với thư mục ECC / ECDSA : /home/username/example.com_ecc.

Để liệt kê các certs đã ban hành của bạn, bạn có thể chạy:

acme.sh --list

Tạo một thư mục để lưu trữ certs của bạn. Chúng tôi sẽ sử dụng  /etc/letsencrypt thư mục.

mkdir -p /etc/letsecnrypt/example.com
sudo mkdir -p /etc/letsencrypt/example.com_ecc

Cài đặt / sao chép chứng chỉ vào / etc / allowencrypt  thư mục .

# 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 nhận được thoát certs từ người dùng root và trở lại người dùng sudo bình thường:

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:

sudo apt 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:

nginx -v

Bắt đầu và bật ( đặt nó để bắt đầu khởi động lại ) Dịch vụ Nginx:

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:

sudo systemctl status nginx.service
# active (running)

NodeBB theo mặc định chạy trên cổng 4567. Để tránh gõ http://example.com:4567, chúng tôi sẽ định 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 80hoặc 443( nếu SSL được sử dụng ) sẽ được chuyển tiếp đến cổng 4567.

Chạy sudo vim /etc/nginx/conf.d/nodebb.conf và định cấu hình Nginx làm proxy ngược HTTPS.

server {
  listen [::]:443 ssl http2;
  listen 443 ssl http2;
  listen [::]:80;
  listen 80;
  
  server_name example.com;
  
  client_max_body_size 50M;

  # RSA
  ssl_certificate /etc/letsencrypt/example.com/fullchain.pem;
  ssl_certificate_key /etc/letsencrypt/example.com/private.key;
  # ECDSA
  ssl_certificate /etc/letsencrypt/example.com_ecc/fullchain.pem;
  ssl_certificate_key /etc/letsencrypt/example.com_ecc/private.key;

  location / {
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto $scheme;
    proxy_set_header Host $http_host;
    proxy_set_header X-NginX-Proxy true;
    proxy_pass http://127.0.0.1:4567;
    proxy_redirect off;
    # Socket.IO Support
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "upgrade"; 
  }

}

Kiểm tra cấu hình Nginx:

sudo nginx -t

Cuối cùng, để các thay đổi có hiệu lực, chúng tôi cần tải lại Nginx:

sudo systemctl reload nginx.service

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

Tạo một thư mục gốc tài liệu trong đó NodeBB sẽ nằm trong:

sudo mkdir -p /var/www/nodebb

Điều hướng đến thư mục gốc của tài liệu:

cd /var/www/nodebb

Thay đổi quyền sở hữu /var/www/nodebb thư mục thành  your_user .

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 nên tạo như một điều kiện tiên quyết cho hướng dẫn này .

Sao chép kho lưu trữ  NodeBB mới nhất  vào thư mục gốc của tài liệu:

git clone -b v1.11.x https://github.com/NodeBB/NodeBB.git .

Bắt đầu tập lệnh thiết lập bằng cách chạy ứng dụng với setupcờ. Trả lời từng câu hỏi:

./nodebb setup

Sau khi hoàn tất thiết lập NodeBB, hãy chạy ./nodebb startđể tự khởi động máy chủ NodeBB của bạn:

./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 trong trình duyệt web của mình:

 

Bước 6: Chạy NodeBB như một dịch vụ hệ thống

Khi bắt đầu 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, dừng NodeBB:

./nodebb stop

Tạo nodebbngười dùng mới :

sudo useradd nodebb

Thay đổi quyền sở hữu của /var/www/nodebbthư mục thành nodebbngười dùng:

sudo chown -R nodebb:nodebb /var/www/nodebb

Tạo một nodebb.servicetập tin cấu hình đơn vị systemd. Tệp đơn vị này sẽ xử lý việc khởi động trình nền NodeBB. Chạy sudo vim /etc/systemd/system/nodebb.servicevà thêm nội dung dưới đây:

[Unit]
Description=NodeBB
Documentation=https://docs.nodebb.org
After=system.slice multi-user.target mongod.service

[Service]
Type=forking
User=nodebb

StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=nodebb

Environment=NODE_ENV=production
WorkingDirectory=/var/www/nodebb
PIDFile=/var/www/nodebb/pidfile
ExecStart=/usr/bin/env node loader.js
Restart=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.

Kích hoạt nodebb.servicekhi khởi động lại và bắt đầu ngay lập tứcnodebb.service:

sudo systemctl enable nodebb.service
sudo systemctl start nodebb.service

Kiểm tra nodebb.servicetrạng thái:

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 thảo luận NodeBB trên hệ thống Debian 9. Bạn sẽ có thể truy cập diễn đàn của bạn trên miền của bạn và tương tác với diễn đàn của bạn.

Facebook Comments

Trả lời

Thư điện tử của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *