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