zoukankan      html  css  js  c++  java
  • gogs迁移

    windows->linux

    之前gogs放在windows server2016中,需要迁移至linux docker中。

    首先拉取gogs镜像

    docker pull gogs/gogs

    然后挂载卷,运行docker容器。

    docker run -p 3000:3000 --name gogs -v /mnt/gogs/data/:/data/gogs/data -v /mnt/gogs/cert/:/app/gogs/cert -v /mnt/gogs/public/:/app/gogs/public -v /mnt/gogs/scripts/:/app/gogs/scripts -v /mnt/gogs-repositories:/app/gogs/repositories -v /mnt/gogs/custom/conf/:/data/gogs/conf -d gogs/gogs

     其中/mnt/gogs目录是原windows server中放置gogs的磁盘目录,换为linux后挂载到了/mnt下。可替换为自己的gogs目录所在路径

    挂载进docker 的目录只需要data public scripts custom/conf 和 仓库所在目录repositories,如果有ssl证书也需要挂载进去。

    启动完毕后进入docker容器中修改配置文件

    docker exec -it gogs /bin/bash
    vi /data/gogs/conf/app.ini

    批量替换所有仓库的配置路径

    定位到仓库所在根目录。

    find 查找update pre-receive和post-receive文件, sed替换掉gogs可执行程序和配置文件路径,替换格式为s#old#new#g,   old 和new是原字符串和新字符串,有特殊符号需要加\进行取消转义

    替换gogs所在路径

    find . -type f \( -name "update" -o -name "pre-receive" -o -name "post-receive" \) -exec sed -i s#D:\/gogs\/gogs\/gogs.exe#\/app\/gogs\/gogs#g {} \;

    替换配置文件所在路径

    find . -type f \( -name "update" -o -name "pre-receive" -o -name "post-receive" \) -exec sed -i s#D:\/gogs\/gogs\/custom\/conf\/app.ini#\\/data\/gogs\/conf\/app.ini#g {} \;

    其中 D:\/gogs\/gogs\/gogs.exe 是gogs可执行程序在源本windows中的路径,/都加了\来取消转义。 即D:/gogs/gogs/gogs.exe

    \/app\/gogs\/gogs 是gogs在docker目录中的路径,即 /app/gogs/gogs

    修改完毕后执行./gogs web启动即可,然后就可以关掉终端接着访问gogs了。无缝迁移,完美。

    PS: 从一台windows服务器迁移到另一台windows服务器也大同小异,

    1. 备份gogs目录和仓库目录,备份还原gogs数据库
    2. 修改配置文件中的各种目录路径
    3. 修改每个仓库中hooks目录下的update pre-receive和post-receive文件中关于gogs路径和配置文件路径
    4. 重启gogs服务
  • 相关阅读:
    遭遇:“传入的表格格式数据流(TDS)远程过程调用(RPC)协议流不正确” 错误
    JS控制form表单action去向
    easyui form 提交问题,纠结了很久,有点诡异
    easyui的tab加载页面中的form重复提交
    AJAX POST请求中参数以form data和request payload形式在servlet中的获取方式
    $.AJAX参数提交及后台获取方式
    多条件判断语句case
    条件判断语句if
    条件测试和捕获信号
    向脚本传递参数
  • 原文地址:https://www.cnblogs.com/turingguo/p/10373793.html
Copyright © 2011-2022 走看看