![将 Gitlab 和 Gitolite 服务器移动到另一台机器](https://linux22.com/image/598621/%E5%B0%86%20Gitlab%20%E5%92%8C%20Gitolite%20%E6%9C%8D%E5%8A%A1%E5%99%A8%E7%A7%BB%E5%8A%A8%E5%88%B0%E5%8F%A6%E4%B8%80%E5%8F%B0%E6%9C%BA%E5%99%A8.png)
现在,我的 ubuntu 服务器上运行着 gitlab 和 gitolite。但是,这个服务器太慢了,我的公司希望将服务器移到另一台机器上。有没有办法将 gitlab 和 gitolite 服务器(整个文件、用户和设置)移到另一台机器上?
重新安装和创建所有用户和存储库将是我的最后选择。提前谢谢您。
答案1
我通过每小时一次的 crontab 作业不断执行此操作以实现更快的本地部署。(它会创建原始服务器的精确副本,作为只读镜像,我个人称之为傀儡机)。
您需要做的就是:
- 备份/恢复 mysql 数据(工具:mysqldump / mysql < backup.sql.txt)
- 将所有 gitlab www 复制到新机器(scp,rsync)
- 将所有 gitolite 目录复制到新机器(rsync)
您可以随时运行以下命令来测试 Puppet 是否运行成功。
bundle exec rake gitlab:app:status RAILS_ENV=production
一些详细的程序:
我已经使用 ubuntu 12.04 gitolite apt-get install 完成了 mime 的设置,其余部分按照官方指南进行,并且我还做了一些笔记:
- 提醒时间:https://github.com/c2h2/gitlabhq_install/blob/master/aio.sh
- 自动备份脚本:https://github.com/c2h2/gitlabhq_install/blob/master/gitlab_backup.rb
自动(无密码)rsync/scp 过程需要 SSH 私钥/公钥,如果你不明白,请阅读http://troy.jdmz.net/rsync/index.html
您需要做的就是在原始机器运行后设置一些 cron 任务:这是在线的镜像也是。(您不需要重新启动任何网络服务器/机器)
镜像机上的crontab:
58 * * * * rsync -zav root@my_remote_server.com:/home/git /home
11 * * * * rsync -zav root@my_remote_server.com:/root/mysql_hourly_dump.txt /root
15 * * * * mysql -u root -p"secure password" gitlabhq_production < mysql_hourly_dump.txt
20 * * * * rsync -zav --delete my_remote_server.com:/www/ /www
服务器上的 crontab:
7 * * * * mysqldump -p"secure password" gitlabhq_production -u root > /root/mysql_hourly_dump.txt
答案2
移动 gitolite 看起来很简单:
- 您需要确保它引用的公钥仍然在
~/.ssh/authorized_keys
新家中(因此您主要需要复制该文件) - 并且您需要移动
repositories
、.gitolite
和.gitolite.rc
文件(检查最后一个中的路径)
“用户”仅在 gitolite 文件和 gitlab 数据库中声明。
应该重新安装 GitLab(因为它使用的所有 gem 可能基于第一次安装使用固定路径),并且它的数据库应该用 Ubuntu 服务器的数据库更新/替换(通过文件复制,或者通过 sql 导出/导入)。