wiki-js搭建

wiki-js搭建

左岸 276 2021-09-08

缘起

一直希望有一个类似与Spring那样管理文档工具,Halo搭建过程中看见Halo的文档工具不错,进一步了解到是wiki.js开源项目,所以顺手就搭建了一个

期望

  1. docker搭建
  2. mysql管理

问题

在搭建wiki.js过程中所有教程介绍的都是wiki.js 依赖 PostgreSQL,脚本也都是 PostgreSQL 所以改造docker搭建脚本话了一些时间

wiki 安装

  1. 创建目录
mkdir ~/wikijs/ && cd ~/wikijs
  1. 创建 docker-compose 脚本 (docker-compose安装 安装教程参考另一篇文章)
vim docker-compose.yml 
  1. 脚本编写
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:
  1. 安装运行
docker-compose up -d 
  1. 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;
}