虚拟机搭建 Gitlab 服务器

1.部署过程

1.1方案

Gitlab是一款基于Ruby on Rails的开源的代码仓库管理程序,依赖的服务较多(如Nginx,Redis,PostgreSQL等),安装和配置非常麻烦。因此采用Bitnami提供的虚拟机镜像文件安装,该镜像文件包含了一个最小化的操作系统和完整配置好的全部程序,通过VMware或者VirtualBox运行即可。以下是简单的架构图,以及镜像安装方式的详细步骤。

virtualbox-gitlab.png

1.2 下载安装VirtualBox

下载地址:https://www.virtualbox.org/wiki/Downloads
选择相应操作系统的安装包。公司内网服务器是Windows Server 2016,下载Windows hosts版本的安装包。安装过程很简单,不详述。

1.3 下载Bitnami镜像文件

下载地址:https://bitnami.com/stack/gitlab/virtual-machine
该镜像包当前的版本是Gitlab Community Edition 9.4.4-0(64-bit),大约718M,.ova格式,支持VirtualBox和VMware等虚拟机软件。Bitnami的镜像文件更新较快,这点值得称赞。

1.4 导入镜像虚拟机

启动VirtualBox,点击菜单“管理”->“导入虚拟电脑”,选择刚刚下载的镜像文件。可以看到一个新虚拟机的配置,建议修改虚拟硬盘文件的路径,放到空间较大的盘(默认放在C盘)。启动这个虚拟机,就成功了!但这只是开始,请继续往下看。

1.5 账号

虚拟机的操作系统是Debian 8,默认的登录账号和密码都是bitnami(强烈建议修改默认密码),系统的root权限使用sudo获得。
部署好的Gitlab的访问地址是虚拟机的IP地址。启动虚拟机会看到提示说明,或者登录虚拟机后,通过命令ip addr查看IP地址。通过浏览器打开这个IP地址,即可使用Gitlab。管理员账号为root,默认密码为bitnami1。请务必修改该密码,确保安全。

1.6 配置邮件服务

Gitlab添加新账号、找回密码需要发送邮件。按如下配置好,才能正常使用。
修改配置文件 /etc/gitlab/gitlab.rb,将USERNAME和PASSWORD修改为能发送邮件的账号,修改相应的 SMTP 配置,下面以Gmail账号为例:

### Email Settings
gitlab_rails['gitlab_email_enabled'] = true
gitlab_rails['gitlab_email_from'] = 'USERNAME@gamil.com'
gitlab_rails['gitlab_email_display_name'] = 'admin' 

gitlab_rails['smtp_enable'] = true
gitlab_rails['smtp_address'] = "smtp.gmail.com"
gitlab_rails['smtp_port'] = 587
gitlab_rails['smtp_user_name'] = "USERNAME@gmail.com"
gitlab_rails['smtp_password'] = "PASSWORD"
gitlab_rails['smtp_domain'] = "smtp.gmail.com"
gitlab_rails['smtp_authentication'] = "login"
gitlab_rails['smtp_enable_starttls_auto'] = true
gitlab_rails['smtp_tls'] = false
gitlab_rails['smtp_openssl_verify_mode'] = 'peer' 

运行以下命令使修改生效:

sudo gitlab-ctl reconfigure

测试邮件服务是否生效(将下面红色部分的邮箱账号改为能收到邮件的账号):

gitlab-rails console
irb(main):003:0> Notify.test_email('test@qq.com', 'Message Subject', 'Message Body').deliver_now

1.7 开启SSH

Bitnami虚拟机的SSH默认未开启,而Git的SSH方式依赖于它。开启命令如下:
sudo rm -f /etc/ssh/sshd_not_to_be_run
sudo systemctl enable ssh
sudo systemctl start ssh

1.8 修改Gitlab的访问地址为域名

Gitlab默认的访问地址为虚拟机的IP地址,要改为域名访问,请运行如下命令,其中NAME是将要使用的域名,如code.xin3wei.com:
sudo /opt/bitnami/apps/gitlab/bnconfig --machine_hostname NAME
修改大约需要一分钟。
注意:修改成功后,务必重命名或者删除 /opt/bitnami/apps/gitlab/bnconfig 文件。避免重启虚拟机,导致修改失效。

2.注意事项

2.1 虚拟机的IP地址可能会变

当虚拟机或者宿主重启时,可能会分配到新的IP地址。当无法访问Gitlab时,可能是这个原因。可以在路由上配置固定的IP。

2.2 数据的安全

确保虚拟机硬盘文件(.vmdk格式)的安全,所有Gitlab的应用程序文件都存储在这个文件中,避免被误删。在VirtualBox的设置中,查看“存储”选项,可以看到该文件的在宿主机上的位置,注意保护好它。

2.3 Gitlab所依赖的服务

使用如下命令可以查看到Gitlab所依赖的全部服务

sudo /opt/bitnami/ctlscript.sh help

Logrotate - 日志截断工具
Nginx - Web服务器
PostgreSQL - 数据库
Redis - 缓存服务
Sidekiq - 基于Ruby的后台任务处理程序
Unicorn - Ruby Http Server

3.常见问题

3.1 如何从虚拟机界面呼出鼠标?

当点击虚拟机的窗口,鼠标将进入虚拟机系统,无法移动出来。使用键盘上右边的Ctrl键可以将鼠标呼出。

3.2 如何启动和停止虚拟机上的服务?

通过Bitnami的控制脚本来启动和停止相关服务:
/opt/bitnami/ctlscript.sh
不加任何服务名是启动所有的服务:
sudo /opt/bitnami/ctlscript.sh start
通过传递服务名来重启单个服务:
sudo /opt/bitnami/ctlscript.sh restart nginx

3.3 如何排错?

主要通过日志文件排查错误。当Gitlab使用过程中出现异常时,查看以下相关日志文件。
Gitlab日志:
/opt/gitlab/embedded/service/gitlab-rails/log/production.log
Sidekiq日志:
/var/log/gitlab/gitlab-rails/sidekiq.log
Gitlab-shell日志:
/var/log/gitlab/gitlab-shell/gitlab-shell.log
Nginx日志:
/var/log/gitlab/nginx/gitlab_error.log

4.参考资料

Bitnami Gitlab文档(英):https://docs.bitnami.com/virtual-machine/apps/gitlab/
Bitnami虚拟机常见问题(英):https://docs.bitnami.com/virtual-machine/faq/
如何升级Gitlab(英):https://docs.gitlab.com/omnibus/update/README.html

标签: gitlab

添加新评论