Wiki.jsเป็นแอพ wiki แบบโอเพนซอร์สและฟรีที่สร้างขึ้นบน Node.js, MongoDB, Git และ Markdown รหัสที่มา Wiki.js เป็นเจ้าภาพสาธารณะบนGithub คู่มือนี้จะแสดงวิธีการติดตั้ง Wiki.js บนอินสแตนซ์ FreeBSD 11 Vultr ใหม่โดยใช้ Node.js, MongoDB, PM2, Nginx, Git และ Acme.sh
ความต้องการ
ข้อกำหนดในการเรียกใช้ Wiki.js มีดังนี้:
- Node.js เวอร์ชั่น 6.11.1 หรือใหม่กว่า
- MongoDB เวอร์ชั่น 3.2 ขึ้นไป
- Git เวอร์ชั่น 2.7.4 หรือใหม่กว่า
- เว็บเซิร์ฟเวอร์เช่น Nginx, Apache, IIS, Caddy หรือ H2O คำแนะนำนี้จะใช้ Nginx
- พื้นที่เก็บข้อมูลที่สอดคล้องกับ Git (สาธารณะหรือส่วนตัว) นี่เป็นทางเลือก
- RAM ขั้นต่ำ 512MB ขอแนะนำให้ใช้เครื่องที่มี RAM อย่างน้อย 1GB
- ชื่อโดเมนที่มี
A
/ AAAA
บันทึกการตั้งค่า ในคู่มือนี้เราจะใช้wiki.example.com
เป็นโดเมนตัวอย่าง
ก่อนที่จะเริ่ม
ตรวจสอบเวอร์ชั่น FreeBSD
uname -ro
# FreeBSD 11.2-RELEASE
ตรวจสอบให้แน่ใจว่าระบบ FreeBSD ของคุณทันสมัย
freebsd-update fetch install
pkg update && pkg upgrade -y
ติดตั้งsudo
, vim
, unzip
, wget
, git
, bash
และsocat
แพคเกจที่ว่าพวกเขาจะไม่ได้อยู่ในระบบของคุณ
pkg install -y sudo vim unzip wget git bash socat
สร้างบัญชีผู้ใช้ใหม่ด้วยชื่อผู้ใช้ที่คุณต้องการ (เราจะใช้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
กลุ่มเรียกใช้งานคำสั่งใด ๆ
# Uncomment by removing the hash (#) sign
%wheel ALL=(ALL) ALL
ตอนนี้เปลี่ยนเป็นผู้ใช้ที่คุณสร้างขึ้นใหม่
su - johndoe
หมายเหตุ: แทนที่johndoe
ด้วยชื่อผู้ใช้ของคุณ
ตั้งค่าเขตเวลา
sudo tzsetup
ติดตั้ง Node.js
Wiki.js ต้องการ Node.js 6.11.1 หรือใหม่กว่าดังนั้นเราจะต้องติดตั้ง Node.js รุ่นที่เหมาะสมก่อน
ติดตั้ง Node.js และ NPM
sudo pkg install -y node8 npm-node8
ตรวจสอบเวอร์ชั่น
node -v && npm -v
# v8.12.0
# 6.4.1
ติดตั้ง MongoDB
Wiki.js ใช้ MongoDB เป็นเอ็นจิ้นฐานข้อมูล
ติดตั้ง MongoDB
sudo pkg install -y mongodb36
ตรวจสอบเวอร์ชั่น
mongo --version | head -n 1 && mongod --version | head -n 1
# MongoDB shell version v3.6.6
# db version v3.6.6
เปิดใช้งานและเริ่ม MongoDB
sudo sysrc mongod_enable=yes
sudo service mongod start
ติดตั้ง Acme.sh และรับใบรับรอง Let's Encrypt ( ตัวเลือก )
การรักษาความปลอดภัย wiki ของคุณด้วย HTTPS นั้นไม่จำเป็น แต่เป็นวิธีปฏิบัติที่ดีในการรักษาความปลอดภัยของการรับส่งข้อมูลในเว็บไซต์ของคุณ ในการรับใบรับรอง SSL จาก Let's Encrypt เราจะใช้ไคลเอ็นต์ Acme.sh Acme.sh เป็นซอฟต์แวร์เชลล์ unix บริสุทธิ์สำหรับการรับใบรับรอง SSL จาก Let's Encrypt โดยไม่ต้องพึ่งพาศูนย์ ซึ่งทำให้มีน้ำหนักเบามากเมื่อเปรียบเทียบกับไคลเอนต์โปรโตคอล Acme อื่น ๆ ที่ต้องการการพึ่งพาจำนวนมากเพื่อให้ทำงานได้สำเร็จ
ดาวน์โหลดและติดตั้ง 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 ~
ตรวจสอบacme.sh
เวอร์ชั่น
/etc/letsencrypt/acme.sh --version
# v2.8.0
ได้รับอาร์เอสและ ECDSA wiki.example.com
ใบรับรองสำหรับ
# RSA 2048
sudo /etc/letsencrypt/acme.sh --issue --standalone --home /etc/letsencrypt -d wiki.example.com --ocsp-must-staple --keylength 2048
# ECDSA/ECC P-256
sudo /etc/letsencrypt/acme.sh --issue --standalone --home /etc/letsencrypt -d wiki.example.com --ocsp-must-staple --keylength ec-256
หลังจากเรียกใช้คำสั่งด้านบนใบรับรองและคีย์ของคุณจะอยู่ในไดเรกทอรีต่อไปนี้:
- อาร์เอส:
/etc/letsencrypt/wiki.example.com
- ECC / ECDSA:
/etc/letsencrypt/wiki.example.com_ecc
หมายเหตุ: อย่าลืมแทนที่wiki.example.com
ด้วยชื่อโดเมนของคุณ
หลังจากได้รับใบรับรองจาก Let's Encrypt เราต้องกำหนดค่า Nginx เพื่อใช้ประโยชน์จากพวกเขา
Wiki.js สามารถทำงานได้โดยไม่มีเว็บเซิร์ฟเวอร์จริง ๆ อย่างไรก็ตามเราขอแนะนำอย่างยิ่งให้วางเว็บเซิร์ฟเวอร์มาตรฐานไว้ข้างหน้าเว็บ สิ่งนี้ทำให้มั่นใจได้ว่าคุณสามารถใช้คุณสมบัติเช่น SSL, เว็บไซต์หลายแห่ง, แคชและอื่น ๆ เราจะใช้ Nginx ในบทช่วยสอนนี้ แต่เซิร์ฟเวอร์อื่น ๆ จะทำคุณเพียงแค่ต้องกำหนดค่าให้ถูกต้อง
ติดตั้ง Nginx
sudo pkg install -y nginx
ตรวจสอบเวอร์ชั่น
nginx -v
# nginx version: nginx/1.14.0
เปิดใช้งานและเริ่ม Nginx
sudo sysrc nginx_enable=yes
sudo service nginx start
กำหนดค่า Nginx เป็น HTTPS (ถ้าคุณใช้ SSL) reverse proxy สำหรับแอปพลิเคชัน Wiki.js
รันsudo vim /usr/local/etc/nginx/wiki.js.conf
และเติมด้วยการกำหนดค่าพร็อกซีย้อนกลับพื้นฐานด้านล่าง
server {
listen [::]:443 ssl http2;
listen 443 ssl http2;
listen [::]:80;
listen 80;
server_name wiki.example.com;
charset utf-8;
client_max_body_size 50M;
# RSA
ssl_certificate /etc/letsencrypt/wiki.example.com/fullchain.cer;
ssl_certificate_key /etc/letsencrypt/wiki.example.com/wiki.example.com.key;
# ECDSA
ssl_certificate /etc/letsencrypt/wiki.example.com_ecc/fullchain.cer;
ssl_certificate_key /etc/letsencrypt/wiki.example.com_ecc/wiki.example.com.key;
location / {
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_pass http://127.0.0.1:3000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_next_upstream error timeout http_502 http_503 http_504;
}
}
สิ่งเดียวที่คุณจำเป็นต้องมีการเปลี่ยนแปลงในการตั้งค่าดังกล่าวข้างต้นเป็นserver_name
คำสั่งและที่อาจproxy_pass
สั่งถ้าคุณตัดสินใจที่จะกำหนดค่าพอร์ตอื่น ๆ 3000
กว่าบาง Wiki.js ใช้พอร์ต3000
ตามค่าเริ่มต้น บันทึกไฟล์และออกด้วย:+ W+Q
ตอนนี้เราต้องรวมwiki.js.conf
ไฟล์ไว้ในnginx.conf
ไฟล์หลัก
เรียกใช้sudo vim /usr/local/etc/nginx/nginx.conf
และเพิ่มบรรทัดต่อไปนี้ในhttp {}
บล็อก
include wiki.js.conf;
ตรวจสอบการกำหนดค่า
sudo nginx -t
โหลดซ้ำ Nginx
sudo service nginx reload
ติดตั้ง Wiki.js
สร้างโฟลเดอร์รากเอกสารเปล่าที่จะทำการติดตั้ง Wiki.js
sudo mkdir -p /usr/local/www/wiki.example.com
นำทางไปยังโฟลเดอร์รูทเอกสาร
cd /usr/local/www/wiki.example.com
เปลี่ยนความเป็นเจ้าของของโฟลเดอร์ให้กับผู้ใช้/usr/local/www/wiki.example.com
johndoe
sudo chown -R johndoe:johndoe /usr/local/www/wiki.example.com
จาก/usr/local/www/wiki.example.com
โฟลเดอร์ให้เรียกใช้คำสั่งต่อไปนี้เพื่อดาวน์โหลดและติดตั้ง Wiki.js
curl -sSo- https://wiki.js.org/install.sh | bash
VERSION=$(curl -L -s -S https://beta.requarks.io/api/version/stable)
curl -L -s -S https://github.com/Requarks/wiki/releases/download/v$VERSION/wiki-js.tar.gz | tar -f - -xz -C .
curl -L -s -S https://github.com/Requarks/wiki/releases/download/v$VERSION/node_modules.tar.gz | tar -f - -xz -C .
cp -n config.sample.yml config.yml
คุณสามารถเรียกใช้คำสั่งต่อไปนี้เพื่อดู Wiki.jpg รุ่นที่ติดตั้งอยู่ในปัจจุบัน
node wiki --version
# 1.0.102
เมื่อการติดตั้งเสร็จสิ้นคุณจะได้รับแจ้งให้เรียกใช้ตัวช่วยสร้างการกำหนดค่า
เริ่มตัวช่วยสร้างการกำหนดค่าโดยการเรียกใช้
node wiki configure
นี่จะแจ้งให้คุณนำทางไปยังhttp://localhost:3000
การกำหนดค่า Wiki.js หากคุณมี Nginx อยู่หน้า Wiki.js หมายความว่าคุณสามารถเปิดชื่อโดเมนของคุณ (เช่นhttp://wiki.example.com
) แทนที่จะไปที่ localhost
ใช้เว็บเบราว์เซอร์นำทางhttp://wiki.example.com
และทำตามคำแนะนำบนหน้าจอ การตั้งค่าทั้งหมดที่ป้อนระหว่างตัวช่วยสร้างการกำหนดค่าจะถูกบันทึกไว้ในconfig.yml
ไฟล์ วิซาร์ดการตั้งค่าจะเริ่มต้น Wiki.js ให้คุณโดยอัตโนมัติ
ติดตั้งและตั้งค่าตัวจัดการกระบวนการ PM2
ตามค่าเริ่มต้น Wiki.js จะไม่เริ่มทำงานโดยอัตโนมัติหลังจากรีบูตระบบ เพื่อให้มันเริ่มการบู๊ตเราจำเป็นต้องติดตั้งและตั้งค่าตัวจัดการกระบวนการ PM2
ติดตั้ง PM2 npm
ทั่วโลกผ่านทาง
sudo npm install -g pm2
ตรวจสอบเวอร์ชั่น
pm2 -v
# 3.2.2
นำทางไปยังโฟลเดอร์รูทเอกสารของคุณหากคุณไม่ได้อยู่ที่นั่นและหยุด Wiki.js
cd /usr/local/www/wiki.example.com
node wiki stop
เริ่ม Wiki.js ผ่าน PM2
pm2 start server/index.js --name "Wiki.js"
รายการกระบวนการจัดการโดย PM2
pm2 list
บอก PM2 เพื่อกำหนดค่าตัวเองเป็นบริการเริ่มต้นด้วยการเรียกใช้:
pm2 startup
สุดท้ายให้บันทึกการกำหนดค่า PM2 ปัจจุบันโดยการรันคำสั่ง:
pm2 save
อินสแตนซ์ Wiki.js ของคุณทำงานเป็นกระบวนการพื้นหลังโดยใช้ PM2 เป็นผู้จัดการกระบวนการ