開源文檔服務Wizard部署


文檔服務概述

文檔主要包括三個方面:


一、Wizard文檔服務器部署

1.1 基本介紹

文檔服務器可用於公司內部之間技術分享各個服務的部署維護文檔記錄等。

采用開源項目wizard部署。

操作系統:CentOS 7

服務器配置:2C4G100G

1.2 部署

Wizard 項目提供兩種安裝方式:

  • 手動安裝
  • Docker安裝

其中手動安裝需要配置PHP 7.2 +及相關擴展composer.pharMySQL 5.7 + / MariaDB NginxGit等,由於配置依賴比較繁瑣,且后期版本升級等問題較麻煩。所以部署采用Docker方式部署

1.2.1 安裝Docker

# yum install -y yum-utils \
  device-mapper-persistent-data \
  lvm2

# yum-config-manager \
    --add-repo \
    https://download.docker.com/linux/centos/docker-ce.repo

# yum install docker-ce docker-ce-cli containerd.io

# systemctl start docker && systemctl enable docker

1.2.2 配置Docker鏡像加速

可參考: DaoCloud

# curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://f1361db2.m.daocloud.io

# systemctl restart docker

1.2.4 安裝MySQL 5.7

下載rpm包,配置數據庫yum源、安裝MySQL(最新版本5.7.28)

# wget -i -c http://dev.mysql.com/get/mysql57-community-release-el7-10.noarch.rpm

# yum -y install mysql57-community-release-el7-10.noarch.rpm

# yum -y install mysql-community-server

#  systemctl start  mysqld.service && systemctl enable mysqld.service

獲取MySQL臨時密碼、登入數據庫、修改密碼安全策略、配置root密碼

# grep "password" /var/log/mysqld.log

# mysql -u root -p

mysql> set global validate_password_policy=0;

mysql> set global validate_password_length=1;

mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'new password';

mysql> quit;

刪除倉庫源,放置yum更新時自動更新數據庫,導致數據庫版本升級問題

# yum -y remove mysql57-community-release-el7-10.noarch

1.2.3 配置Dockerfile

具體環境變量配置可參考env.example
以下Dockerfile主要配置如下:

  • 數據庫連接
  • 修改項目應用名稱
  • 配置郵件服務器
  • excel表格配置
  • 訪問地址配置
# cd /root
# touch Dockerfile

在Dockerfile中填入如下內容:

FROM mylxsw/wizard:latest

# 數據庫連接配置
# 這里可以根據需要添加其它的Env配置,可用選項參考項目的.env.example文件
# 請根據實際情況修改!請根據實際情況修改!請根據實際情況修改!
ENV DB_CONNECTION=mysql
ENV DB_HOST=192.168.17.32
ENV DB_PORT=3306
ENV DB_DATABASE=wizard_2
ENV DB_USERNAME=wizard
ENV DB_PASSWORD=wizard
# 應用名稱
ENV APP_NAME="Doc"
# 環境,正式請使用 production
ENV APP_ENV=production
#ENV APP_KEY=base64:pWMnse89AD/SRB042cMGR894FCACcdekgeq91deDQEC091=
# 郵件服務器配置,請根據實際情況修改!請根據實際情況修改!請根據實際情況修改!
ENV MAIL_DRIVER=smtp
ENV MAIL_HOST=
ENV MAIL_PORT=
ENV MAIL_USERNAME=
ENV MAIL_PASSWORD=
ENV MAIL_ENCRYPTION=
ENV MAIL_FROM_NAME=
# 表格文檔配置
ENV WIZARD_SPREEDSHEET_MAX_ROWS=1000
ENV WIZARD_SPREEDSHEET_MAX_COLS=26
# 用戶帳號是否需要郵件激活
ENV WIZARD_NEED_ACTIVATE=true
# 加密密鑰
#ENV WIZARD_JWT_SECRET=QMCEeWEARHJKPR457fqgASGRHAhr573fh452gd
# 訪問地址,只有正確配置后,導出的 markdown 文檔圖片才能正常展示
# 請根據實際情況修改!請根據實際情況修改!請根據實際情況修改!
ENV APP_URL=http://doc.wizard.com

# 文件上傳存儲目錄
VOLUME /webroot/storage/app/public

RUN php artisan config:cache

1.2.4 配置數據庫

創建數據庫用戶、用戶授權、創建數據庫

# mysql -u root -p

mysql> CREATE USER 'wizard'@'%' IDENTIFIED BY 'wizard';

mysql> GRANT ALL PRIVILEGES ON *.* TO 'wizard'@'%' IDENTIFIED BY 'wizard';

mysql> CREATE DATABASE wizard_2;

mysql> quit;

1.2.5 構建鏡像、啟動應用

進入1.2.3 配置Dockerfile步驟中,Dockerfile文件存放的目錄、構建鏡像

# cd /root

# docker build -t my-wizard .

數據庫初始化

# docker run -it --rm --name my-wizard my-wizard php artisan migrate:install

# docker run -it --rm --name my-wizard my-wizard php artisan migrate

啟動應用

# docker run -d \
  --name my-wizard  \
  --mount source=my-wizard,target=/webroot/storage/app/public \
  -p 80:80 \
  my-wizard

注意:--mount即將容器中的/webroot/storage/app/public目錄掛載於宿主機的my-wizard目錄下,my-wizard實際在宿主機的/var/lib/docker/volumes/my-wizard中。容器中的/webroot/storage/app/public目錄用於存放文檔服務器中的所有圖片及上傳的附件。

可通過如下命令查看容器掛載的volume

# docker volume ls
DRIVER              VOLUME NAME
local               my-wizard

應用已部署完畢,可通過瀏覽器訪問192.168.17.3280端口訪問。


二、Wizard文檔服務器版本升級

wizard開源項目的版本還在版本迭代中,功能尚待完善,例如后期還會支持腦圖等,因此版本的升級是非常必要的。

2.1 wizard的版本升級

停止容器、刪除容器

# docker stop my-wizard

# docker rm my-wizard

更新鏡像、啟動應用

# docker pull mylxsw/wizard:latest

# docker run -d  \
    --name wizard \
    -e DB_CONNECTION=mysql \
    -e DB_HOST=192.168.17.32 \
    -e DB_PORT=3306  \
    -e DB_DATABASE=wizard_2  \
    -e DB_USERNAME=wizard  \
    -e DB_PASSWORD=wizard  \
    -e APP_NAME="" \
    -e APP_ENV=production \
    -e MAIL_DRIVER= \
    -e MAIL_HOST= \
    -e MAIL_PORT= \
    -e MAIL_USERNAME= \
    -e MAIL_PASSWORD= \
    -e MAIL_ENCRYPTION= \
    -e MAIL_FROM_NAME= \
    -e WIZARD_SPREEDSHEET_MAX_ROWS=1000 \
    -e WIZARD_SPREEDSHEET_MAX_COLS=26 \
    -e WIZARD_NEED_ACTIVATE=true \
    -e APP_URL= \
    --mount source=my-wizard,target=/webroot/storage/app/public \
    -p 80:80 \
    mylxsw/wizard

注意:

  1. 啟動應用時必須帶上--mount參數,將原來的volumes掛載在容器的/webroot/storage/app/public目錄上。否則啟動的新的容器會在/var/lib/docker/volumes/目錄下隨機生成一個目錄,然后將該目錄掛載於容器中。此時,原來上傳的圖片及文件均無法訪問。若已出現此情況,可先停止容器,再次啟動容器時帶上--mount source=my-wizard,target=/webroot/storage/app/public參數,圖片可正常訪問,附件可正常訪問。

  2. 啟動容器時:

  • 帶上 Dockerfile 中的環境變量,否則新的鏡像無法讀取到數據庫等其他配置;
  • 用拉取到的最新的鏡像啟動,例如:更新的時候拉取的是 mylxsw/wizard:latest 的鏡像,那么啟動容器候需要帶上 mylxsw/wizard 鏡像名稱。

三、Wizard文檔服務器的遷移

服務器遷移即將數據從一台服務器遷移至另外一台服務器上,保證數據一致性服務可用性版本穩定性

提醒:遷移過程包括兩種環境:

  • 舊服務器:原始數據存放的服務器
  • 新服務器:新環境下准備導入數據的服務器。

以下文檔中以舊服務器新服務器作區分。

注意:遷移之前先將舊服務器的wizard升級至最新版本,保證新、舊服務器之間wizard的版本一致性。

3.1 新服務器環境准備

1、需安裝docker環境,參考1.2.1 安裝Docker

2、安裝MySQL5.7,參考本文1.2.4 安裝MySQL 5.7

3、配置數據庫,參考本文1.2.4 配置數據庫

3.2 舊服務器備份

數據庫備份,備份完后,/root目錄下生成backdb.sql的文件

# cd /root

# mysqldump -u root -h host -p wizard_2 > backdb.sql

圖片及上傳附件備份,在/root目錄下生成backup.tar的壓縮包備份文件

# cd /root

# docker ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                NAMES
b8856b96a8b2        my-wizard           "docker-php-entrypoi…"   3 days ago          Up 3 days           0.0.0.0:80->80/tcp   my-wizard

# docker run --rm --volumes-from my-wizard -v $(pwd):/backup my-wizard tar cvf /backup/backup.tar /webroot/storage/app/public

第二條命令即將宿主機當前目錄$(pwd)臨時掛載於my-wizard容器的/backup目錄下,並將容器中的/webroot/storage/app/public目錄下的數據打包成backup.tar文件,放置於容器的/backup目錄,即本地宿主機的$(pwd)目錄下。

3.3 服務部署

wizard服務搭建,可參考本文1.2.3 配置Dockerfile1.2.4 配置數據庫1.2.5 構建鏡像、啟動應用*

3.3 傳遞備份數據

傳遞備份數據至新服務器的/root目錄下:

# scp /root/backdb.sql root@新服務器ip:~

# scp /root/backup.tar root@新服務器ip:~

3.4 導入數據

數據庫導入,數據庫的導入有兩種方式,如下(需確保wizard數據庫已經創建):

方法一:

cd /root
# mysql -u root -p [dbname] < backup.sql

方法二:

cd /root
# mysql -u root -p

MYSQL>  USE DATABASE [dbname];

MYSQL> source backup.sql;

上傳圖片及附件數據導入(需確保wizard容器已正常運行,且服務可訪問)

# cd /root
# docker run --rm --volumes-from my-wizard -v $(pwd):/backup my-wizard bash -c "cd /webroot && tar xvf /backup/backup.tar --strip 1"

此命令將新服務器的$(pwd)當前目錄掛載於my-wizard容器的/backup目錄下,再進入容器的/webroot目錄,解壓壓縮包。

至此,恢復完成,數據遷移完畢。


參考文章

1. Use volumes

2. Wizard 開源文檔管理系統

3. CentOS7 yum方式安裝MySQL5.7


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM