Drollery Medieval drollery of a knight on a horse

🏆 欢迎来到本站: https://xuchangwei.com/希望这里有你感兴趣的内容

flowery border with man falling
flowery border with man falling

Linux: MMwiki

MMwiki

准备

docker 20.10 docker-compose 1.27.4

数据库目录: /apps/work/service/mm-wiki/mysql/data

wiki数据目录:/apps/work/service/mm-wiki/wiki-data

部署

目录与配置

mkdir /apps/work/service/mm-wiki/{mysql/data,wiki-data}

cd  /apps/work/service/mm-wiki/mysql/data

# mysql配置文件
cat << EOF > my.cnf
#For advice on how to change settings please see
# http://dev.mysql.com/doc/refman/5.6/en/server-configuration-defaults.html
# *** DO NOT EDIT THIS FILE. It's a template which will be copied to the
# *** default location during install, and will be replaced if you
# *** upgrade to a newer version of MySQL.

[mysqld]
basedir=/var/lib/mysql
datadir=/var/lib/mysql
socket=/var/lib/mysql/tmp/mysql.sock
user=mysql
tmpdir=/tmp
max_connections=200
character-set-server=utf8
#sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
max_connections=100
character-set-server=utf8
lower_case_table_names=1
skip-name-resolve
max_connections=3000
## 服务端使用的字符集默认为8比特编码的latin1字符集
character-set-server=utf8mb4
## 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
#lower_case_table_name=1
max_allowed_packet=1024M
max_length_for_sort_data=838860
group_concat_max_len=1844674407370954752
query_cache_type=1
loose_max_statement_time=3000000
table_open_cache=4096
max_connect_errors=100000
sort_buffer_size=3M
join_buffer_size=3M
log_bin_trust_function_creators=1
#开启慢日志
log_output=file
slow_query_log=on
slow_query_log_file = /var/lib/mysql/mysql-slow.log
log_queries_not_using_indexes=on
long_query_time = 1
sql_mode = "ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,ALLOW_INVALID_DATES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"

# Remove leading # and set to the amount of RAM for the most important data
# cache in MySQL. Start at 70% of total RAM for dedicated server, else 10%.
# innodb_buffer_pool_size = 128M

# Remove leading # to turn on a very important data integrity option: logging
# changes to the binary log between backups.
# log_bin

# These are commonly set, remove the # and set as required.
# basedir = .....
# datadir = .....
# port = .....
# server_id = .....
# socket = .....

# Remove leading # to set options mainly useful for reporting servers.
# The server defaults are faster for transactions and fast SELECTs.
# Adjust sizes as needed, experiment to find the optimal values.
# join_buffer_size = 128M
# sort_buffer_size = 2M
# read_rnd_buffer_size = 2M

#sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
[mysqld_safe]
log-error=/var/lib/mysql/error.log
pid-file=/var/lib/mysql/mysql.pid
[mysqldump]
user=root
password=123
EOF

docker-compose文件

cd  /apps/work/service/mm-wiki

cat << EOF > docker-compose.yaml 
version: "3.9"
services:
  mm-wiki:
    image: 217heidai/mm-wiki:0.2.1
    container_name: mm-wiki
    hostname: mm-wiki
    volumes:
      - ./wiki-data:/data # mm-wiki data
    ports:
      - "8888:8080"
    deploy:
      mode: replicated
      replicas: 2
      restart_policy:
        condition: on-failure
        delay: 5s
        max_attempts: 3
        window: 120s
      resources:
        limits:
          cpus: '0.8'
          memory: 500M
        reservations:
          cpus: '0.8'
          memory: 500M
    networks:
      mm-wiki:
        aliases:
          - mm-wiki
    depends_on:
      - db
  db:
    image: mysql:5.7
    container_name: mysql
    hostname: mysql
    volumes:
      - ./mysql/data:/var/lib/mysql
      - ./mysql/my.cnf:/etc/my.cnf
    environment:
      - MYSQL_ROOT_PASSWORD=123
      - TZ=Asia/Shanghai
    deploy:
      restart_policy:
        condition: on-failure
        delay: 5s
        max_attempts: 3
        window: 120s
      resources:
        limits:
          cpus: '0.8'
          memory: 500M
        reservations:
          cpus: '0.8'
          memory: 500M
    networks:
      mm-wiki:
        aliases:
          - db
networks:
  mm-wiki:
    name: mm-wiki
    driver: bridge
#ulimits:
#  nproc: 65535
#  nofile:
#    soft: 20000
#    hard: 40000
EOF

启动MMwiki

docker-compose up -d
docker-compose ps

服务安装向导

第一次使用要完成服务安装向导 访问http://ip:8888

  • 选定文件保存目录/data

    image-20210315143506867.png
  • 数据库连接配置及管理用户密码

    host: db

    用户名:root

    密码:123

    管理用户名:admin 密码: admin

    image-20210315143524404.png
    image-20210315143544042.png
  • 重启mmwiki docker

    docker-compose restart mm-wiki
    

    访问http://ip:8888 这时可以正常使用了 image-20210315143629373.png

nginx代理

10.16.202.190

# cat mmwiki.tope365.com.conf 
server {
    listen 80;
    server_name mmwiki.tope365.com;

    proxy_next_upstream  error timeout invalid_header;
    proxy_pass_header    server;
    proxy_set_header     Host $http_host;
    proxy_redirect off;
    proxy_set_header     X-Real-IP $remote_addr;
    proxy_set_header X-Scheme $scheme;
    proxy_set_header     X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header     Upgrade $http_upgrade;

    access_log logs/mmwiki_access.log main;

    location / {
        proxy_pass http://10.16.202.190:8888;
    }
}

备份

定时任务

0 0 * * * bash  /data/ops/scripts/mwiki_down.sh &>/dev/null

脚本内容

cat <<\EOF > mmwiki_down.sh
#!/bin/bash
# backup mmwiki space

backup_dir=/data/backup/mmwiki

backup() {
local serveraddr='127.0.0.1:8888'
local space_id=$1
local space_name=$1
# 登录 并保存cookie  -c
curl 'http://'$serveraddr'/author/login' \
  -H 'Connection: keep-alive' \
  -H 'Accept: application/json, text/javascript, */*; q=0.01' \
  -H 'DNT: 1' \
  -H 'X-Requested-With: XMLHttpRequest' \
  -H 'User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.82 Safari/537.36' \
  -H 'Content-Type: application/x-www-form-urlencoded; charset=UTF-8' \
  -H 'Origin: http://'$serveraddr'' \
  -H 'Referer: http://'$serveraddr'/author/index' \
  -H 'Accept-Language: zh-CN,zh;q=0.9,en;q=0.8' \
  -H 'Cookie: mmwikissid=44ccf5d24307d32f2837242905a54c87; mmwikipassport=' \
  -d 'username=downer&password=123456' \
  -c cookie.txt \
  --compressed \
  --insecure ;

sleep 1

#带着cookie访问页面  -b
curl 'http://'$serveraddr'/system/space/download?space_id='${space_id}'' \
  -s \
  -H 'Connection: keep-alive' \
  -H 'Upgrade-Insecure-Requests: 1' \
  -H 'DNT: 1' \
  -H 'User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.82 Safari/537.36' \
  -H 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9' \
  -H 'Accept-Language: zh-CN,zh;q=0.9,en;q=0.8' \
  -H 'Cookie: mmwikissid=44ccf5d24307d32f2837242905a54c87' \
  -b cookie.txt \
  --compressed \
  --insecure > ${backup_dir}/${space_name}_$(date +'%F-%H').zip
}

main() {
    for i in 1 2; do
        backup $i
    done
}

main
EOF