将 Gitlab 和 Gitolite 服务器移动到另一台机器

将 Gitlab 和 Gitolite 服务器移动到另一台机器

现在,我的 ubuntu 服务器上运行着 gitlab 和 gitolite。但是,这个服务器太慢了,我的公司希望将服务器移到另一台机器上。有没有办法将 gitlab 和 gitolite 服务器(整个文件、用户和设置)移到另一台机器上?

重新安装和创建所有用户和存储库将是我的最后选择。提前谢谢您。

答案1

我通过每小时一次的 crontab 作业不断执行此操作以实现更快的本地部署。(它会创建原始服务器的精确副本,作为只读镜像,我个人称之为傀儡机)。

您需要做的就是:

  1. 备份/恢复 mysql 数据(工具:mysqldump / mysql < backup.sql.txt)
  2. 将所有 gitlab www 复制到新机器(scp,rsync)
  3. 将所有 gitolite 目录复制到新机器(rsync)

您可以随时运行以下命令来测试 Puppet 是否运行成功。

bundle exec rake gitlab:app:status RAILS_ENV=production

一些详细的程序:

我已经使用 ubuntu 12.04 gitolite apt-get install 完成了 mime 的设置,其余部分按照官方指南进行,并且我还做了一些笔记:

自动(无密码)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 导出/导入)。

相关内容