Nhảy đến nội dung

[Thủ Thuật Linux] Hướng dẫn cài đặt Wiki.js trên Centos 7/ RHEL 7

Nội Dung Bài Viết

Wikijs là gì

Wiki.js là một ứng dụng mã nguồn mở, hiện đại và mạnh mẽ dựa trên Node.js, Git và Markdown, Wiki.js vô cùng nhanh và được tối ưu để tiết kiệm tài nguyên CPU của server. Một số tính năng quan trọng của Wiki.js là: 

  • Chỉnh sửa Markdown và được hỗ trợ bởi Git 
  • Nhẹ nhưng cực kỳ mạnh mẽ, tiết kiệm tài nguyên
  • Được thiết kế giao diện đẹp mắt và hiện đại 
  • Kiểm soát, phân quyền truy cập được tích hợp 
  • Quản lý dễ dàng

Bắt đầu cài đặt thôi

Bước 1: Cài đặt Nodejs và NPM trên  Centos 7/ RHEL 7

1.1. Thêm NodeSource yum repository

curl -sL https://rpm.nodesource.com/setup_16.x | sudo bash -

1.2. Cài đặt Node.js và npm 

sudo yum install -y nodejs

1.3. Kiểm tra version nodejs và npm

node --version

npm --version

Bước 2: Cài đặt Nginx và MariaDB trên  Centos 7/ RHEL 7

Để biết cách cài đặt Nginx và MariaDB bạn xem Hướng dẫn cài đặt LEMP trên Centos 7.

Image
LEMP stack là gì  Hướng Dẫn Cài đặt LEMP trên CentOS 7

Bước 3: Download Wiki.js trên CentOS 7 / RHEL 7

3.1. Download phiên bản mới nhất của Wiki.js

wget https://github.com/Requarks/wiki/releases/latest/download/wiki-js.tar.gz

3.2. Giải nén và tạo folder chứa Source code Wiki.js

# Tạo folder
mkdir wiki

#giải nén
tar xzf wiki-js.tar.gz -C ./wiki

cd ./wiki

Bước 4: Config Wiki.js trên CentOS 7 / RHEL 7

4.1. Tạo file config wiki.js

Copy file config

cp config.sample.yml config.yml

Edit file config như sau

sudo vim /var/www/wikijs/config.yml

# chỉnh sửa nội dung như sau
db:
  type: mariadb

  # PostgreSQL / MySQL / MariaDB / MS SQL Server only:
  host: localhost
  port: 3306
  user: wikijs
  pass: wikijsrocks
  db: wiki
  ssl: false

 Nếu bạn sử dụng Database khác có thể xem doc tại đây: Config wiki.js

4.2. Kiểm tra wiki.js của bạn

node server

Bạn sẽ thấy kết quả như sau

Loading configuration from /var/www/wikijs/config.yml... OK
2022-06-20T20:18:34.916Z [MASTER] info: =======================================
2022-06-20T20:18:34.919Z [MASTER] info: = Wiki.js 2.5.284 =====================
2022-06-20T20:18:34.919Z [MASTER] info: =======================================
2022-06-20T20:18:34.919Z [MASTER] info: Initializing...
2022-06-20T20:18:36.073Z [MASTER] info: Using database driver mysql2 for mariadb [ OK ]
2022-06-20T20:18:36.078Z [MASTER] info: Connecting to database...
2022-06-20T20:18:36.128Z [MASTER] info: Database Connection Successful [ OK ]
2022-06-20T20:18:38.691Z [MASTER] warn: DB Configuration is empty or incomplete. Switching to Setup mode...
2022-06-20T20:18:38.692Z [MASTER] info: Starting setup wizard...
2022-06-20T20:18:39.033Z [MASTER] info: Starting HTTP server on port 3000...
2022-06-20T20:18:39.033Z [MASTER] info: HTTP Server on port: [ 3000 ]
2022-06-20T20:18:39.039Z [MASTER] info: HTTP Server: [ RUNNING ]
2022-06-20T20:18:39.040Z [MASTER] info: 🔻🔻🔻🔻🔻🔻🔻🔻🔻🔻🔻🔻🔻🔻🔻🔻🔻🔻🔻🔻🔻🔻🔻🔻🔻🔻🔻🔻🔻
2022-06-20T20:18:39.040Z [MASTER] info:
2022-06-20T20:18:39.040Z [MASTER] info: Browse to http://YOUR-SERVER-IP:3000/ to complete setup!
2022-06-20T20:18:39.040Z [MASTER] info:
2022-06-20T20:18:39.040Z [MASTER] info: 🔺🔺🔺🔺🔺🔺🔺🔺🔺🔺🔺🔺🔺🔺🔺🔺🔺🔺🔺🔺🔺🔺🔺🔺🔺🔺🔺🔺🔺

Bây giờ bạn có thể tắt nó và tiếp tục config service và Nginx Proxy

Bước 5: Tạo wiki.service 

5.1. Tạo file wiki.service

sudo vi /etc/systemd/system/wiki.service
[Unit]
Description=Wiki.js
After=network.target

[Service]
Type=simple
ExecStart=/usr/bin/node server
Restart=always
# Consider creating a dedicated user for Wiki.js here:
User=nobody
Environment=NODE_ENV=production
WorkingDirectory=/var/wiki

[Install]
WantedBy=multi-user.target

Chú ý thư mục cần chỉnh theo path của bạn WorkingDirectory=/var/wiki

Lưu file : CTRL+X, và tiếp tục Y

5.2. Reload systemd

systemctl daemon-reload

5.3. Khởi động wiki service 

# Khởi động
systemctl start wiki

#tự khởi động khi reboot
systemctl enable wiki

#check status
systemctl status wiki

# check log 
journalctl -u wiki

Bước 6: Config Wiki.js Nginx Proxy

6.1. Tạo file Reverse Proxy

sudo vi /etc/nginx/conf.d/wikijs.conf

6.2. Chỉnh file Nginx Reverse Proxy config

server {
    listen      80;
    server_name wiki.example.com;

    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;
    }
}

6.3. Config dành cho HTTPS

# Redirect http to https
server {
    listen      80;
    server_name wiki.example.com;
    return      301 https://$server_name$request_uri;
}

# Serve https traffic

server {
    listen 443 ssl http2;
    server_name  wiki.example.com;

    ssl_session_cache shared:SSL:50m;
    ssl_session_tickets off;

    ssl on;
    ssl_certificate /etc/letsencrypt/live/wiki.example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/wiki.example.com/privkey.pem;
    ssl_session_timeout 5m;
    ssl_ciphers "EECDH+ECDSA+AESGCM EECDH+aRSA+AESGCM EECDH+ECDSA+SHA384 EECDH+ECDSA+SHA256 EECDH+aRSA+SHA384 EECDH+aRSA+SHA256 EECDH EDH+aRSA !RC4 !aNULL !eNULL !LOW !3DES !MD5 !EXP !PSK !SRP !DSS";
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_prefer_server_ciphers on;

    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;
    }
}

6.4. Config cho Apache - Reverse Proxy 

server {
    listen 80;
    server_name wiki.example.com

    location / {
        proxy_pass http://your_server_ip:8080;
        proxy_set_header Host $host;
        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;
    }
}

6.5. Khởi động lại nginx

sudo systemctl restart nginx

Bước 7. Tạo folder cache và uploads

7.1. Tạo folder cache và upload

sudo mkdir  /var/www/wiki/data/uploads
sudo mkdir  /var/www/wiki/data/cache

7.2. Tạo user và cấp quyền

sudo groupadd --system wikijs
sudo useradd -s /sbin/nologin --system -g wikijs wikijs

Thêm quyền cho folder

sudo chown -R wikijs:nginx /var/www/wiki

Bạn có thể truy cập vào đường dẫn : wiki.example.com để thấy thành quả