Hướng dẫn cài đặt Wiki.js trên Debian 9

0

Wiki.js là một ứng dụng wiki mã nguồn mở, hiện đại và mạnh mẽ dựa trên Node.js, Git và Markdown. Wiki.js chạy trên công cụ Node.js cực kỳ nhanh và được tối ưu hóa để bảo tồn tài nguyên CPU. Một số tính năng Wiki.js đáng được đề cập là:

  • Chỉnh sửa Markdown, được hỗ trợ bởi Git
  • Nhẹ, nhưng vô cùng mạnh mẽ
  • Thiết kế đẹp cho web hiện đại
  • Kiểm soát truy cập tích hợp
  • Quản lý tài sản trực quan
  • Công cụ tìm kiếm tích hợp

Trong hướng dẫn này, chúng tôi sẽ hướng dẫn bạn qua quy trình cài đặt Wiki.js phiên bản 1 trên hệ điều hành Debian 9  bằng cách sử dụng  NGINX làm reverse proxy, MongoDB làm máy chủ cơ sở dữ liệu, PM2 làm trình quản lý quy trình và tùy chọn bạn có thể bảo mật lớp vận chuyển bằng cách sử dụng máy khách và cơ quan cấp chứng chỉ Let Encrypt để thêm hỗ trợ SSL. acme.sh

Yêu cầu

Yêu cầu để chạy Wiki.js như sau:

  • Node.js đến là bắt buộc. 6.11.1  10.x
  • Phiên bản MongoDB trở lên. 3.2
  • Phiên bản Git trở lên. 2.7.4
  • Phần mềm máy chủ Web như NGINX, Apache, Caddy, H2O …
  • Một kho Git trống (tùy chọn).
  •  RAM tối thiểu 512MB.  Khuyến nghị 1GB RAM .
  • Khoảng  300 MB  dung lượng đĩa.
  • Tên miền với bản ghi  DNS   A / AAAA được thiết lập.

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

  • Một hệ điều hành Debian 9.
  • Một người dùng không root với các đặc quyền. sudo

Các bước ban đầu

Kiểm tra phiên bản hệ thống Debian của bạn:

lsb_release -ds
# Debian GNU/Linux 9.8 (stretch)

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

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:

apt update && 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:

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

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

Wiki.js  được xây dựng trên  Node.js.  Chúng tôi sẽ cài đặt  phiên bản được  đề xuất  mới nhất  cho Wiki.js, phiên bản 10 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 về và cài đặt phiên bản khuyến cáo mới nhất  của  Node.js từ kho NodeSource:

curl -sL https://deb.nodesource.com/setup_10.x | sudo -E bash -
sudo apt install -y nodejs

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.8.0

Và nó sẽ trả về số phiên bản mới nhất.

Bước 2 – Cài đặt cơ sở dữ liệu MongoDB

Wiki.js  cần một cơ sở dữ liệu để lưu trữ dữ liệu của nó và phiên bản ổn định hiện tại của Wiki.js chỉ hỗ trợ công cụ cơ sở dữ liệu MongoDB. Theo đó, chúng ta sẽ cần cài đặt cơ sở dữ liệu MongoDB.

Tải xuống và cài đặt cơ sở dữ liệu MongoDB:

sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 9DA31620334BD75D9DCB49F368818C72E52529D4
echo "deb http://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-get update
sudo apt-get 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 nếu chưa được khởi động và kích hoạt:

sudo systemctl start mongod.service
sudo systemctl enable mongod.service

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

Bảo mật trang web 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ỉ SSL từ Let Encrypt, chúng tôi sẽ sử dụng máy khách. là một phần mềm shell UNIX thuần để lấy chứng chỉ SSL từ Let Encrypt với độ phụ thuộc bằng không.  acme.sh  Acme.sh

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.1

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   cờ vào các lệnh trên.–staging

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

acme.sh --list

Tạo các thư mục để lưu trữ certs của bạn. Chúng tôi sẽ sử dụng  /etc/letsencrypt nhưng nó có thể là bất cứ thứ gì bạn thích để lưu trữ SSL SSL.

mkdir -p /etc/letsencrypt/example.com
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"

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 thư mục RSA :  / etc / letencrypt . /example.com
  • Đối với thư mục ECC / ECDSA :  / etc / letencrypt . /example.com_ecc

Tất cả các chứng chỉ sẽ được tự động gia hạn sau mỗi 60 ngày.

Sau khi có được certs, thoát khỏi người dùng root và quay 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

Wiki.js (hoặc bất kỳ ứng dụng HTTP Node.js nào) có thể chạy mà không cần bất kỳ máy chủ web thực tế nào (như NGINX hoặc Apache). Tuy nhiên, rất khuyến khích đặt máy chủ web chuẩn trước Wiki.js. Điều này đảm bảo bạn có thể sử dụng các tính năng như SSL, nhiều trang web, bộ nhớ đệm, v.v. Chúng tôi sẽ sử dụng NGINX trong hướng dẫn này, nhưng bất kỳ máy chủ nào khác cũng sẽ làm được, bạn chỉ cần định cấu hình đúng.

Tải xuống và cài đặt NGINX từ repo NGINX chính thức bằng cách ban hành các lệnh sau:

wget https://nginx.org/keys/nginx_signing.key
sudo apt-key add nginx_signing.key
rm nginx_signing.key
sudo -s
printf "deb https://nginx.org/packages/mainline/debian/ $(lsb_release -sc) nginx\ndeb-src https://nginx.org/packages/mainline/debian/ $(lsb_release -sc) nginx\n" >> /etc/apt/sources.list.d/nginx_mainline.list
exit
sudo apt update
sudo apt install -y nginx

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

sudo nginx -v
# nginx version: nginx/1.15.8

Kích hoạt và bắt đầu dịch vụ NGINX:

sudo systemctl enable nginx.service
sudo systemctl start nginx.service

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

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

    charset utf-8;
    client_max_body_size 50M;

    ssl_certificate /etc/letsencrypt/example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/example.com/private.key;
    ssl_certificate /etc/letsencrypt/example.com_ecc/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/example.com_ecc/private.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;
    }
    
}

Điều duy nhất bạn cần thay đổi trong cấu hình trên là chỉ thị và có khả năng chỉ thị nếu bạn quyết định định cấu hình một số khác ngoài cổng. Wiki.js sử dụng cổng theo mặc định. server_name  proxy_pass  3000  3000

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 Wiki.js

Tạo một thư mục gốc tài liệu nơi Wiki.js sẽ nằm trong:

sudo mkdir -p /var/www/wiki.js

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

cd /var/www/wiki.js

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

sudo chown -R [your_user]:[your_user] /var/www/wiki.js

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 .

Từ  thư mục , hãy chạy lệnh sau để tìm nạp và cài đặt ứng dụng Wiki.js mới nhất: /var/www/wiki.js

curl -sSo- https://wiki.js.org/install.sh | bash

Sau khi cài đặt hoàn tất, bạn có thể chạy lệnh sau để xem phiên bản hiện tại của Wiki.js:

node wiki --version
# 1.0.117

Sau khi cài đặt hoàn tất, bạn sẽ được nhắc khởi chạy trình hướng dẫn cấu hình.

Vì vậy, hãy khởi động trình hướng dẫn cấu hình bằng cách chạy:

node wiki configure

Sử dụng trình duyệt web của bạn, điều hướng đến và làm theo các hướng dẫn trên màn hình. Tất cả các cài đặt được nhập trong trình hướng dẫn cấu hình được lưu trong tệp. Trình hướng dẫn cấu hình sẽ tự động khởi động Wiki.js cho bạn. http://example.com  config.yml

Đầu tiên, bạn sẽ thấy một thông điệp chào mừng. Nhấp vào nút ” Bắt đầu “:

Trang “Kiểm tra hệ thống” tiếp theo sẽ xuất hiện. Nếu tất cả các yêu cầu được đáp ứng, nhấp vào nút ” Tiếp tục “.

Nhập thông tin chung về wiki của bạn và nhấp vào nút ” Tiếp tục “:

Đọc thông báo “Cân nhắc quan trọng” và nhấp vào ” Tiếp tục ” cho bước tiếp theo:

Tiếp theo, kết nối với cơ sở dữ liệu và tiếp tục:

Bạn sẽ thấy một thông báo rằng Wiki.js đã được  kết nối thành công  với cơ sở dữ liệu. Nhấp vào nút ” Tiếp tục”. Đặt đường dẫn và tiếp tục:

Thiết lập repo Git từ xa nếu bạn muốn hoặc bỏ qua bước này. Bước này là tùy chọn nhưng rất khuyến khích:

Tiếp theo, nhấp vào nút “Tiếp tục”:Tạo tài khoản quản trị viên và nhấp vào nút ” Tiếp tục “:

Và cuối cùng, bắt đầu Wiki.js:

Đợi khoảng 30 giây và bạn sẽ được chuyển hướng đến trang chủ Wiki.js:

Việc cài đặt đã hoàn tất. Bạn nên trang chào mừng wiki:

Bước 6 – Thiết lập Trình quản lý quy trình PM2

Theo mặc định, Wiki.js sẽ không tự động khởi động sau khi khởi động lại hệ thống. Để khởi động nó khi khởi động, chúng ta cần thiết lập trình quản lý quy trình PM2. PM2 đi kèm với Wiki.js như một mô-đun npm cục bộ, vì vậy chúng tôi không cần phải cài đặt PM2 trên toàn cầu.

Yêu cầu PM2 tự cấu hình như một dịch vụ khởi động bằng cách chạy:

/var/www/wiki.js/node_modules/pm2/bin/pm2 startup

Cuối cùng, lưu cấu hình PM2 hiện tại bằng cách chạy lệnh:

/var/www/wiki.js/node_modules/pm2/bin/pm2 save

Wiki.js của bạn hiện chạy như một quy trình nền, sử dụng PM2 làm trình quản lý quy trình.

Leave a Reply

Your email address will not be published. Required fields are marked *