วิธีการติดตั้งฟอรัม NodeBB บน FreeBSD 12

NodeBBเป็นซอฟต์แวร์ฟอรัมที่ใช้ Node.js มันใช้ซ็อกเก็ตเว็บสำหรับการโต้ตอบแบบทันทีและการแจ้งเตือนแบบเรียลไทม์ รหัสที่มา NodeBB เป็นเจ้าภาพสาธารณะบนGithub คู่มือนี้จะแนะนำคุณเกี่ยวกับกระบวนการติดตั้ง NodeBB บนอินสแตนซ์ FreeBSD 12 Vultr ใหม่โดยใช้ Node.js, MongoDB เป็นฐานข้อมูล, Nginx เป็น reverse proxy และ Acme.sh สำหรับใบรับรอง SSL

ความต้องการ

NodeBB ต้องติดตั้งซอฟต์แวร์ต่อไปนี้:

  • Node.js เวอร์ชั่น 6.9.0 หรือสูงกว่า
  • MongoDB เวอร์ชัน 2.6 ขึ้นไป
  • Nginx
  • Git
  • RAM ขั้นต่ำ 1024MB
  • ชื่อโดเมนที่มีA/ AAAAบันทึกการตั้งค่า

ก่อนที่จะเริ่ม

ตรวจสอบเวอร์ชั่น FreeBSD

uname -ro
# FreeBSD 12.0-RELEASE

ตรวจสอบให้แน่ใจว่าระบบ FreeBSD ของคุณทันสมัย

freebsd-update fetch install
pkg update && pkg upgrade -y

ติดตั้งแพ็คเกจที่จำเป็นหากไม่มีอยู่ในระบบของคุณ

pkg install -y sudo vim unzip wget git bash socat gcc8 pkgconf vips

สร้างบัญชีผู้ใช้ใหม่ด้วยชื่อผู้ใช้ที่คุณต้องการ (เราจะใช้johndoe)

adduser

# Username: johndoe
# Full name: John Doe
# Uid (Leave empty for default): <Enter>
# Login group [johndoe]: <Enter>
# Login group is johndoe. Invite johndoe into other groups? []: wheel
# Login class [default]: <Enter>
# Shell (sh csh tcsh nologin) [sh]: bash
# Home directory [/home/johndoe]: <Enter>
# Home directory permissions (Leave empty for default): <Enter>
# Use password-based authentication? [yes]: <Enter>
# Use an empty password? (yes/no) [no]: <Enter>
# Use a random password? (yes/no) [no]: <Enter>
# Enter password: your_secure_password
# Enter password again: your_secure_password
# Lock out the account after creation? [no]: <Enter>
# OK? (yes/no): yes
# Add another user? (yes/no): no
# Goodbye!

รันvisudoคำสั่งและยกเลิกหมายเหตุ%wheel ALL=(ALL) ALLบรรทัดเพื่ออนุญาตให้สมาชิกของwheelกลุ่มเรียกใช้งานคำสั่งใด ๆ

visudo

# Uncomment by removing hash (#) sign
# %wheel ALL=(ALL) ALL

suตอนนี้เปลี่ยนไปใช้ที่สร้างขึ้นใหม่ของคุณด้วย

su - johndoe

หมายเหตุ: แทนที่johndoeด้วยชื่อผู้ใช้ของคุณ

ตั้งค่าเขตเวลา

sudo tzsetup

ติดตั้ง Node.js

NodeBB ขับเคลื่อนโดย Node.js ดังนั้นจึงจำเป็นต้องติดตั้ง แนะนำให้ทำการติดตั้งรุ่น LTS ปัจจุบันของ Node.js

ติดตั้ง Node.js และ npm

sudo pkg install -y node10 npm-node10

ตรวจสอบเวอร์ชั่น

node -v && npm -v
# v10.15.3
# 6.9.0

ติดตั้งและกำหนดค่า MongoDB

MongoDB เป็นฐานข้อมูลเริ่มต้นสำหรับ NodeBB

ติดตั้ง MongoDB

sudo pkg install -y mongodb40

ตรวจสอบเวอร์ชั่น

mongo --version | head -n 1 && mongod --version | head -n 1
# MongoDB shell version v4.0.6
# db version v4.0.6

เปิดใช้งานและเริ่ม MongoDB

sudo sysrc mongod_enable=yes
sudo service mongod start

สร้างฐานข้อมูลและผู้ใช้สำหรับ NodeBB

เชื่อมต่อกับ MongoDB ก่อน

mongo

สลับไปยังadminฐานข้อมูลในตัว

> use admin

สร้างผู้ใช้ที่เป็นผู้ดูแลระบบ

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

หมายเหตุ: แทนที่ตัวยึดตำแหน่ง<Enter a secure password>ด้วยรหัสผ่านที่คุณเลือก

nodebbเพิ่มฐานข้อมูลใหม่ที่เรียกว่า

> use nodebb

nodebbฐานข้อมูลจะถูกสร้างขึ้นและบริบทเปลี่ยนไป จากนั้นสร้างnodebbผู้ใช้ด้วยสิทธิ์ที่เหมาะสม

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

หมายเหตุ: อีกครั้งแทนที่ตัวยึดตำแหน่ง<Enter a secure password>ด้วยรหัสผ่านที่คุณเลือก

ออกจากเปลือก Mongo

> quit()

รีสตาร์ท MongoDB และให้แน่ใจว่าผู้ใช้ที่เป็นผู้ดูแลระบบที่สร้างขึ้นก่อนหน้านี้สามารถเชื่อมต่อได้

sudo service mongod restart
mongo -u admin -p your_password --authenticationDatabase=admin

ติดตั้งและกำหนดค่า Nginx

ติดตั้ง Nginx

sudo pkg install -y nginx

ตรวจสอบเวอร์ชั่น

nginx -v
# nginx version: nginx/1.14.2

เปิดใช้งานและเริ่ม Nginx

sudo sysrc nginx_enable=yes
sudo service nginx start

NodeBB 4567โดยค่าเริ่มต้นทำงานบนพอร์ต เพื่อหลีกเลี่ยงการพิมพ์http://example.com:4567เราจะกำหนดค่า Nginx เป็น reverse proxy สำหรับแอปพลิเคชัน NodeBB คำขอทุกพอร์ต80หรือ443ถ้า SSL 4567ที่ใช้จะถูกส่งต่อไปยังท่าเรือ

รันsudo vim /usr/local/etc/nginx/nodebb.confและเติมด้วยการกำหนดค่าพร็อกซีย้อนกลับพื้นฐานด้านล่าง

server {

  listen [::]:80;
  listen 80;

  server_name forum.example.com;

  root /usr/share/nginx/html;

  client_max_body_size 50M;

  location /.well-known/acme-challenge/ {
    allow all;
  }

  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_hide_header X-Powered-By;
    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";
  }

}

ในการกำหนดค่าข้างต้นอัปเดตserver_nameคำสั่งด้วยโดเมน / ชื่อโฮสต์ของคุณ

บันทึกไฟล์และออกด้วย:+ +WQ

ตอนนี้เราต้องรวมnodebb.confไว้ในnginx.confไฟล์หลัก

เรียกใช้sudo vim /usr/local/etc/nginx/nginx.confและเพิ่มบรรทัดต่อไปนี้ในhttp {}บล็อก

include nodebb.conf;

ตรวจสอบการกำหนดค่า

sudo nginx -t

โหลดซ้ำ Nginx

sudo service nginx reload

ติดตั้งไคลเอนต์ Acme.sh และรับใบรับรอง Let's Encrypt (ตัวเลือก)

การรักษาความปลอดภัยฟอรัมของคุณด้วย HTTPS นั้นไม่จำเป็น แต่จะช่วยรักษาความปลอดภัยของการเข้าชมเว็บไซต์ของคุณ Acme.sh เป็นซอฟต์แวร์เชลล์ unix บริสุทธิ์สำหรับการรับใบรับรอง SSL จาก Let's Encrypt โดยไม่ต้องพึ่งพาศูนย์

ดาวน์โหลดและติดตั้ง Acme.sh

sudo mkdir /etc/letsencrypt
git clone https://github.com/Neilpang/acme.sh.git
cd acme.sh
sudo ./acme.sh --install --home /etc/letsencrypt --accountemail [email protected]
cd ~

ตรวจสอบเวอร์ชั่น

/etc/letsencrypt/acme.sh --version
# v2.8.1

ได้รับอาร์เอสและ ECDSA forum.example.comใบรับรองสำหรับ

# RSA 2048
sudo /etc/letsencrypt/acme.sh --issue --home /etc/letsencrypt -d forum.example.com --webroot /usr/share/nginx/html --reloadcmd "sudo service nginx reload" --keylength 2048
# ECDSA/ECC P-256
sudo /etc/letsencrypt/acme.sh --issue --home /etc/letsencrypt -d forum.example.com --webroot /usr/share/nginx/html --reloadcmd "sudo service nginx reload"  --keylength ec-256

หลังจากเรียกใช้คำสั่งข้างต้นใบรับรองและคีย์ของคุณจะอยู่ใน:

  • /etc/letsencrypt/forum.example.comอาร์เอส:
  • ECC / /etc/letsencrypt/forum.example.com_eccECDSA:

หลังจากได้รับใบรับรองจาก Let's Encrypt เราต้องกำหนดค่า Nginx เพื่อใช้งาน

รันsudo vim /usr/local/etc/nginx/nodebb.confอีกครั้งและกำหนดค่า Nginx เป็น HTTPS reverse proxy

server {

  listen [::]:443 ssl http2;
  listen 443 ssl http2;
  listen [::]:80;
  listen 80;

  server_name forum.example.com;

  root /usr/share/nginx/html;

  client_max_body_size 50M;

  location /.well-known/acme-challenge/ {
    allow all;
  }

  # RSA
  ssl_certificate /etc/letsencrypt/forum.example.com/fullchain.cer;
  ssl_certificate_key /etc/letsencrypt/forum.example.com/forum.example.com.key;
  # ECDSA
  ssl_certificate /etc/letsencrypt/forum.example.com_ecc/fullchain.cer;
  ssl_certificate_key /etc/letsencrypt/forum.example.com_ecc/forum.example.com.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";
  }

}

ตรวจสอบการกำหนดค่า

sudo nginx -t

โหลดซ้ำ Nginx

sudo service nginx reload

ติดตั้ง NodeBB

สร้างไดเรกทอรีรากของเอกสาร

sudo mkdir -p /usr/local/www/nodebb

เปลี่ยนความเป็นเจ้าของของไดเรกทอรีไป/usr/local/www/nodebbjohndoe

sudo chown -R johndoe:johndoe /usr/local/www/nodebb

นำทางไปยังโฟลเดอร์รูทเอกสาร

cd /usr/local/www/nodebb

โคลน NodeBB ล่าสุดลงในโฟลเดอร์รูทเอกสาร

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

เรียกใช้คำสั่งการตั้งค่า NodeBB และตอบคำถามแต่ละข้อเมื่อได้รับแจ้ง

./nodebb setup

หลังจากติดตั้ง NodeBB เสร็จแล้วให้เรียกใช้./nodebb startเพื่อเริ่มเซิร์ฟเวอร์ NodeBB ของคุณด้วยตนเอง

./nodebb start

หลังจากคำสั่งนี้คุณจะสามารถเข้าถึงอินสแตนซ์ฟอรัม NodeBB ของคุณในเว็บเบราว์เซอร์

เรียกใช้ NodeBB ด้วย PM2

เมื่อเริ่มต้นผ่าน./nodebb startNodeBB จะไม่เริ่มต้นโดยอัตโนมัติอีกครั้งเมื่อระบบรีบูต เพื่อหลีกเลี่ยงปัญหานี้เราจะต้องตั้งค่า NodeBB เป็นบริการระบบ

หากทำงานให้หยุด NodeBB

./nodebb stop

ติดตั้ง PM2 ทั่วโลก

sudo npm install pm2 -g

ตรวจสอบเวอร์ชั่น

pm2 -v
# 3.5.0

นำทางไปยังรูทเอกสาร NodeBB

cd /usr/local/www/nodebb

เริ่ม NodeBB ผ่าน PM2

pm2 start app.js

แสดงรายการกระบวนการ NodeBB

pm2 ls

ตรวจสอบระบบ init ที่มีอยู่

pm2 startup

คัดลอกและวาง ouput ของคำสั่งนี้ใน CLI เพื่อตั้งค่า hook เริ่มต้นของคุณ

บันทึกรายการกระบวนการของคุณ

pm2 save

แค่นั้นแหละ. อินสแตนซ์ NodeBB ของคุณเปิดใช้งานแล้ว



Leave a Comment

ReactOS: นี่คืออนาคตของ Windows หรือไม่?

ReactOS: นี่คืออนาคตของ Windows หรือไม่?

ReactOS ซึ่งเป็นโอเพ่นซอร์สและระบบปฏิบัติการฟรีพร้อมเวอร์ชันล่าสุดแล้ว สามารถตอบสนองความต้องการของผู้ใช้ Windows ยุคใหม่และล้ม Microsoft ได้หรือไม่? มาหาข้อมูลเพิ่มเติมเกี่ยวกับรูปแบบเก่านี้ แต่เป็นประสบการณ์ OS ที่ใหม่กว่ากัน

AI สามารถต่อสู้กับการโจมตีของแรนซัมแวร์ที่เพิ่มขึ้นได้หรือไม่

AI สามารถต่อสู้กับการโจมตีของแรนซัมแวร์ที่เพิ่มขึ้นได้หรือไม่

การโจมตีของ Ransomware กำลังเพิ่มขึ้น แต่ AI สามารถช่วยจัดการกับไวรัสคอมพิวเตอร์ตัวล่าสุดได้หรือไม่? AI คือคำตอบ? อ่านที่นี่รู้ว่า AI boone หรือ bane

เชื่อมต่อผ่าน WhatsApp Desktop App 24*7

เชื่อมต่อผ่าน WhatsApp Desktop App 24*7

ในที่สุด Whatsapp ก็เปิดตัวแอพเดสก์ท็อปสำหรับผู้ใช้ Mac และ Windows ตอนนี้คุณสามารถเข้าถึง Whatsapp จาก Windows หรือ Mac ได้อย่างง่ายดาย ใช้ได้กับ Windows 8+ และ Mac OS 10.9+

AI จะนำกระบวนการอัตโนมัติไปสู่อีกระดับได้อย่างไร

AI จะนำกระบวนการอัตโนมัติไปสู่อีกระดับได้อย่างไร

อ่านข้อมูลนี้เพื่อทราบว่าปัญญาประดิษฐ์กำลังได้รับความนิยมในหมู่บริษัทขนาดเล็กอย่างไร และเพิ่มโอกาสในการทำให้พวกเขาเติบโตและทำให้คู่แข่งได้เปรียบ

การอัปเดตเสริม macOS Catalina 10.15.4 ทำให้เกิดปัญหามากกว่าการแก้ปัญหา

การอัปเดตเสริม macOS Catalina 10.15.4 ทำให้เกิดปัญหามากกว่าการแก้ปัญหา

เมื่อเร็ว ๆ นี้ Apple เปิดตัว macOS Catalina 10.15.4 การอัปเดตเสริมเพื่อแก้ไขปัญหา แต่ดูเหมือนว่าการอัปเดตทำให้เกิดปัญหามากขึ้นที่นำไปสู่การสร้างเครื่อง Mac อ่านบทความนี้เพื่อเรียนรู้เพิ่มเติม

13 เครื่องมือดึงข้อมูลเชิงพาณิชย์ของ Big Data

13 เครื่องมือดึงข้อมูลเชิงพาณิชย์ของ Big Data

13 เครื่องมือดึงข้อมูลเชิงพาณิชย์ของ Big Data

ระบบไฟล์บันทึกคืออะไรและทำงานอย่างไร

ระบบไฟล์บันทึกคืออะไรและทำงานอย่างไร

คอมพิวเตอร์ของเราจัดเก็บข้อมูลทั้งหมดในลักษณะที่เรียกว่าระบบไฟล์บันทึก เป็นวิธีการที่มีประสิทธิภาพที่ช่วยให้คอมพิวเตอร์สามารถค้นหาและแสดงไฟล์ได้ทันทีที่คุณกดค้นหาhttps://wethegeek.com/?p=94116&preview=true

ภาวะเอกฐานทางเทคโนโลยี: อนาคตอันห่างไกลของอารยธรรมมนุษย์?

ภาวะเอกฐานทางเทคโนโลยี: อนาคตอันห่างไกลของอารยธรรมมนุษย์?

ในขณะที่วิทยาศาสตร์มีวิวัฒนาการไปอย่างรวดเร็ว โดยรับช่วงต่อความพยายามของเราอย่างมาก ความเสี่ยงในการทำให้ตัวเองตกอยู่ในภาวะภาวะเอกฐานที่อธิบายไม่ได้ก็เพิ่มขึ้นเช่นกัน อ่านว่าภาวะเอกฐานอาจมีความหมายสำหรับเราอย่างไร

ข้อมูลเชิงลึกเกี่ยวกับ 26 เทคนิคการวิเคราะห์ข้อมูลขนาดใหญ่: ตอนที่ 1

ข้อมูลเชิงลึกเกี่ยวกับ 26 เทคนิคการวิเคราะห์ข้อมูลขนาดใหญ่: ตอนที่ 1

ข้อมูลเชิงลึกเกี่ยวกับ 26 เทคนิคการวิเคราะห์ข้อมูลขนาดใหญ่: ตอนที่ 1

ผลกระทบของปัญญาประดิษฐ์ในการดูแลสุขภาพ 2021

ผลกระทบของปัญญาประดิษฐ์ในการดูแลสุขภาพ 2021

AI ในการดูแลสุขภาพได้ก้าวกระโดดอย่างมากจากทศวรรษที่ผ่านมา ดังนั้นอนาคตของ AI ในการดูแลสุขภาพจึงยังคงเติบโตทุกวัน