缘起
一直希望有一个类似与Spring那样管理文档工具,Halo搭建过程中看见Halo的文档工具不错,进一步了解到是wiki.js开源项目,所以顺手就搭建了一个
期望
- docker搭建
- mysql管理
问题
在搭建wiki.js过程中所有教程介绍的都是wiki.js 依赖 PostgreSQL,脚本也都是 PostgreSQL 所以改造docker搭建脚本话了一些时间
wiki 安装
- 创建目录
mkdir ~/wikijs/ && cd ~/wikijs
- 创建 docker-compose 脚本 (docker-compose安装 安装教程参考另一篇文章)
vim docker-compose.yml
- 脚本编写
services:
db:
image: mysql:8
environment:
MYSQL_ROOT_PASSWORD: mysql
MYSQL_DATABASE: wiki
MYSQL_USER: wikijs
MYSQL_PASSWORD: wikijsrocks
command:
--max_connections=1000
--character-set-server=utf8mb4
--collation-server=utf8mb4_general_ci
--default-authentication-plugin=mysql_native_password
restart: unless-stopped
volumes:
- db-data:/var/lib/mysql
wiki:
image: requarks/wiki:2
depends_on:
- db
environment:
DB_TYPE: mysql
DB_HOST: db
DB_PORT: 3306
DB_USER: wikijs
DB_PASS: wikijsrocks
DB_NAME: wiki
restart: unless-stopped
ports:
- "8888:3000"
volumes:
db-data:
- 安装运行
docker-compose up -d
- nginx 配置 (这里给出多个域名配置不同应用的配置)
upstream halo {
server 10.0.8.7:8090;
}
upstream wiki {
server 10.0.8.7:8888;
}
server {
listen 443 ssl;
access_log /var/log/nginx/host.access.log main;
server_name www.ycdr.fun;
#证书文件名称
ssl_certificate /etc/nginx/conf.d/https/ycdr.fun.cer;
#私钥文件名称
ssl_certificate_key /etc/nginx/conf.d/https/ycdr.fun.key;
ssl_session_timeout 5m;
#请按照以下协议配置
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
#请按照以下套件配置,配置加密套件,写法遵循 openssl 标准。
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
ssl_prefer_server_ciphers on;
client_max_body_size 1024m;
location / {
proxy_pass http://halo;
proxy_set_header HOST $host;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
server {
listen 443 ssl;
access_log /var/log/nginx/host.access.log main;
server_name wiki.ycdr.fun;
#证书文件名称
ssl_certificate /etc/nginx/conf.d/https/ycdr.fun.cer;
#私钥文件名称
ssl_certificate_key /etc/nginx/conf.d/https/ycdr.fun.key;
ssl_session_timeout 5m;
#请按照以下协议配置
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
#请按照以下套件配置,配置加密套件,写法遵循 openssl 标准。
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
ssl_prefer_server_ciphers on;
client_max_body_size 1024m;
location / {
proxy_pass http://wiki;
proxy_set_header HOST $host;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
server {
listen 80;
#填写绑定证书的域名
server_name ycdr.fun www.ycdr.fun wiki.ycdr.fun;
#把http的域名请求转成https
return 301 https://$host$request_uri;
}