Toggle navigation


GitLab镜像手册

Version CE10.1.0

Websoft9将Gitlab程序及其所依赖的中间件、数据库等编译成一个预装环境,打包成虚拟机镜像,任何云用户均可一键获取、快速安装。

Gitlab(gitlab.com)是一个开源的Git代码仓库系统,可以实现自托管的Github项目,即用于构建私有的代码托管平台和项目管理系统。系统基于Ruby on Rails开发,速度快、安全稳定。它拥有与Github类似的功能,能够浏览源代码,管理缺陷和注释。可以管理团队对仓库的访问,它非常易于浏览提交过的版本并提供一个文件历史库。团队成员可以利用内置的简单聊天程序(Wall)进行交流。它还提供一个代码片段收集功能可以轻松实现代码复用,便于日后有需要的时候进行查找。


本文档适用于通过主流云市场购买和部署了Websoft9镜像的用户,文档内容重点指导用户进行安装配置、系统基本操作和常见运维问题处理。

文档适用性说明:

  • 适用的主流云平台包括:阿里云、腾讯云、百度云、华为云、Azure、青云
  • 适用的操作系统包括:Linux
  • 适用的阅读者包括:初学者、学生、站长、运维人员、产品经理、开发者、UI

本Gitlab镜像采用Omnibus包的安装方式,以最新版本为例,组件包括:Ruby,Gitlab-Rails,Gitlab-CI,Nginx,Postgresql等(通过/opt/gitlab/version-manifest.txt查看所有组件的版本)。

GitLab的安装位置、组件目录和设置参考如下(通过/etc/gitlab/gitlab.rb完成大部分设置)

Default location Permissions Ownership Purpose
/var/opt/gitlab/git-data 0700 git:root Holds repositories directory
/var/opt/gitlab/git-data/repositories 2770 git:git Holds git repositories
/var/opt/gitlab/gitlab-rails/shared 0751 git:gitlab-www Holds large object directories
/var/opt/gitlab/gitlab-rails/shared/artifacts 0700 git:root Holds CI artifacts
/var/opt/gitlab/gitlab-rails/shared/lfs-objects 0700 git:root Holds LFS objects
/var/opt/gitlab/gitlab-rails/uploads 0700 git:root Holds user attachments
/var/opt/gitlab/gitlab-rails/shared/pages 0750 git:gitlab-www Holds user pages
/var/opt/gitlab/gitlab-ci/builds 0700 git:root Holds CI build logs
/var/opt/gitlab/.ssh 0700 git:git Holds authorized keys

 

安装方式说明

本镜像采用Gitlab官方推荐的Omnibus包安装方式。Omnibus是有Gitlab官方提供的集成了Gitlab程序、运行环境、服务组件、升级和维护工具的包集合,Omnibus一方面可以保证100%安装正确,另一方面简化https的配置、后续的升级维护工作。

服务器配置要求

官方建议最低使用4G内存(We also strongly recommend at least 4GB of free memory to run GitLab.),另外本镜像已经增加了2G的交换分区以应对内存突发增长的情况下不至于由于内存不足导致无法访问。

关于中文版

GitLab中文版是基于Omnibus GitLab+汉化补丁制作而成,汉化来源:https://gitlab.com/xhang/gitlab

  1. 镜像需要与服务器配套使用,获取Websoft9的镜像有两种方式:
    方式一:若没有可用的云服务器,登录主流云厂商的云市场,找到由Websoft9提供的“Gitlab”相关免费镜像,点击“购买”(同时会配套购买云服务器,若只打算试用请选择“按量”方式购买,实现按小时使用,接近免费)
    方式二:若有可用的云服务器,登录到云厂商的控制面板,找到可用的云服务器,通过关机->更换系统盘(重装镜像),在更换过程中选取云市场镜像,获取本镜像
  2. 待镜像购买或更换完成后,镜像会自动安装到云服务器上,待实例处于“运行中”后,访问网址:http://服务器公网IP/,正常会出现Gitlab前台界面
  3. 如果浏览器访问以上网址没有任何反应,请检查您的安全组设置,确保80端口是开放的。

镜像验证通过后,即可通过浏览器访问:http://服务器公网ip/完成剩余的应用安装过程。


具体安装向导如下:

  1. http://公网ip/进入安装设置界面,根据系统提示创建一个登陆密码(默认登陆账号为root),然后点击“Change your password”
  2. 开始登陆系统(用户名是root,密码是上一步自行设置的)
  3. 进入Gitlab后台,开始使用系统

说明:Gitlab对内存要求非常高(最少4G),内存不足,系统会有502错误提示

应用程序安装、使用和维护中需要用到三种账户:

1、Gitlab账号和密码:默认账号是root,密码初始化访问时由自己设置的


2、服务器操作系统账号和密码

Linux服务器账号和密码说明:

  • 账号:root
  • 密码:是安装镜像的时候客户自行设置的,若不记得此密码,请登录云服务器后台,修改服务器密码,重启后生效
  • 登录:下载一个putty工具,通过root账号登录,参考(服务器通用文档-Linux远程管理与FTP

网站的定期备份和重要操作之前的备份工作(如系统升级或重要修改)无比重要,可以做到防范于未然,让发生了意外而能够进行复原,这是网站运维工作的重中之重。

Gitlab的备份有基于服务器快照自动备份、手动本地备份两种方式,两种凡是各有利弊,建议结合起来使用

服务快照自动备份

云服务器厂商都会提供一个叫“快照”的功能,快照是针对于服务器的磁盘来说的。快照工具可以记录指定时间点硬盘的数据,全部备份起来,并可以实现一键恢复。

如果您对磁盘进行了自动的快照设定,如下场景您便可以比较从容的面对:
1、工作了几天的成果,被误删了
2、黑客把把网站网站弄的面目全非
3、现在的内容已经乱七八糟了,我要回到一个正常的服务器状态

做了快照备份,一键恢复到备份时间点的状态。也就是现场还原,很好的功能。

不同的云厂商快照设置稍有差别,具体参考:

手工本地备份

手工本地备份主要是通过下载应用程序文件和备份导出数据库文件,建议备份周期每月一次,备份文件保存6个月左右。下面就具体的备份操作进行说明:

  1. 备份整个GitLab配置文件目录(/etc/gitlab)
  2. 备份项目文件夹/var/opt/gitlab/backups
  3. 备份数据数据库,参考:backup-and-restore-a-non-packaged-postgresql-database

对于使用了Omnibus GitLab安装方式的镜像来说,系统的更新(包括GitLab的更新、依赖组件的更新、操作系统的更新)只需通过一条命令即可完成。注意:升级之前请使用快照镜像完整备份,以保证备份出现差错或反悔之后能够复原。

如果计划升级,请使用Putty工具登录到系统,根据操作系统的类型选择运行对应的命令:

# Debian/Ubuntu
sudo apt-get update
sudo apt-get install gitlab-ce

# Centos/RHEL
sudo yum install gitlab-ce

详细升级说明和更多的升级方式请参考官方手册GitLab升级文档

远程连接之前,请确认您服务器使用的操作系统,Linux操作系统(CentOS、Ubuntu、Debian、SUSE Linux、OpenSUSE、AliyunLinux)与Windows操作系统的登录方式是完全不一样的。

Linux系统(CentOS,Ubuntu,AliyunLinux)

管理Linux系统,只需要用到两个工具即可满足大部分使用场景

  • WinSCP,可视化界面的SFTP工具,90%的Linux操作均可通过它来实现(下载WinSCP
  • Putty,远程登录&命令操作软件,需要用到命令操作的时候使用(下载Putty

具体参考:

Windows系统

Windows服务器的操作主要分为两个部分:

  • 远程桌面连接:通过PC自带的远程桌面工具远程连接到服务器,完全控制服务器的操作
  • FTP文件管理:通过FTP客户端和Windows服务器上的FTP服务端进行通讯,实现文件管理的操作的目的

具体参考:

一旦使用Omnibus包安装之后,实际上等于集成了命令控制台。常见命令包括:

# Start all GitLab components
sudo gitlab-ctl start

# Stop all GitLab components
sudo gitlab-ctl stop

# Restart all GitLab components
sudo gitlab-ctl restart

# Restart Nginx
sudo gitlab-ctl restart nginx

Note that on a single-core server it may take up to a minute to restart Unicorn and Sidekiq. Your GitLab instance will give a 502 error until Unicorn is up again.

It is also possible to start, stop or restart individual components.

sudo gitlab-ctl restart sidekiq

Unicorn supports zero-downtime reloads. These can be triggered as follows:

sudo gitlab-ctl hup unicorn

Note that you cannot use a Unicorn reload to update the Ruby runtime.

更多命令:https://docs.gitlab.com/omnibus/maintenance/README.html#starting-and-stopping

域名设置分为两个步骤

步骤一、域名解析

如果您的域名备案(大陆之外无需备案),可以通过云厂商的域名控制台进行域名解析,操作如下:

  1. 登录域名控制台->域名解析,进入解析设置界面(以阿里云为例)
  2. 增加一条A记录,主机记录那里填写二级域名的前缀(如www,shop,test等)或通配符@,记录值填写您的服务器公网ip地址,保存
  3. 域名解析成功,等待解析生效(不同的厂商解析生效时间不一样,1分钟-24小时不等)

注意:解析生效之后,本地访问可能由于缓存问题导致仍然没有生效,请清空浏览器缓存,然后通过CMD命令行刷新本地DNS操作

步骤二、修改Gitlab配置文件

修改配置文件/etc/gitlab/gitlab.rb 中的参数即可。特别注意的是,请输入完整的URL地址(即包含http或https),否则系统出错。假设域名为gitlab.example.com,配置如下:

  • 配置文件中增加一条:external_url “http://gitlab.example.com”
  • 然后通过Putty运行重新配置命令 “sudo gitlab-ctl reconfigure”

Omnibus包内置Nginx,https设置主要参考:https://docs.gitlab.com/omnibus/settings/nginx.html#enable-https

本镜像建议使用第三方的SMTP镜像邮件发送,具体步骤如下:

  1. 以QQ邮箱为例,将如下参考拷贝到GitLab配置文件,需要注意的是密码中不能包含单引号,否则出错
    gitlab_rails['smtp_enable'] = true
    gitlab_rails['smtp_address'] = "smtp.exmail.qq.com"
    gitlab_rails['smtp_port'] = 465
    gitlab_rails['smtp_user_name'] = "xxxx@xx.com"
    gitlab_rails['smtp_password'] = "password"
    gitlab_rails['smtp_authentication'] = "login"
    gitlab_rails['smtp_enable_starttls_auto'] = true
    gitlab_rails['smtp_tls'] = true
    gitlab_rails['gitlab_email_from'] = 'xxxx@xx.com'
  2. 重启配置文件服务
    [root@iZbp1i4rjdsy216yq7lgucZ ~]# sudo gitlab-ctl reconfigure

下面列出Gitlab使用中比较常见的问题以及对应的处理方案

如何解决502错误提示?

镜像安装后,需要2-5分钟的加载时间,如果出现502错误,请耐心等待几分钟后再试。

根据Gitlab官方说明,502错误的主要原因是内存不足,请通过Linux内存查看命令“free”查看内存状态,然后根据实际情况扩展云服务器内存或设置交换分区(虚拟内存)

如何修改镜像的端口号?

Omnibus GitLab使用Nginx做了反向代理,直接通过IP接可以访问,无需修改端口访问

GitLab历史版本镜像指10.1.0版本之前的版本,例如8.9.6。历史版本使用的Bitnami提供的GitLab安装包,配置文件路径是使用方式均有不同,请认真阅读如下不同之处。

Bitnami GitLab官方说明文档请参考:https://docs.bitnami.com/virtual-machine/apps/gitlab/

镜像组成

软件版本:Git 2.7.4、Gitlab8.9.6
环境软件:Apache 2.4.23、PostgreSQL 9.5.3、Ruby 2.1.9、Rails 4.2.5.1、RubyGems 1.8.12、ImageMagick 6.7.5
集成软件目录:/data/gitlab-8.9.6
Apache 默认配置目录:/data/gitlab-8.9.6/apache2/conf/
Gitlab目录:/data/gitlab-8.9.6/apps/gitlab

默认账号

GitLab8.9.6版本默认管理员/密码:websoft9/admin123

重启服务命令

Putty到服务器,执行红色命令,重启需要1分钟左右,请耐心等待:
[root@iZ94bojtvkpZ plone-5.0.2]# cd /data/gitlab-8.9.6
[root@iZ94bojtvkpZ plone-5.0.2]# ./ctlscript.sh restart

修改IP路由

找到gitlab-shell下的config.yml文件,将其中的gitlab_url修改一为您当前服务器的公网IP

域名配置

域名配置:远程登录到后台服务器,打开/data/gitlab-8.9.6/apps/gitlab/htdocs/config/gitlab.yml文件,搜索test.websoft9.cn替换成您的域名(修改前建议先备份),有两处位置:
… …
gitlab:
## Web server settings (note: host is the FQDN, do not include http://)
host: test.websoft9.cn
port: 80 # Set to 443 if using HTTPS, see installation.md#using-https for additional HTTPS configuration details
https: false # Set to true if using HTTPS, see installation.md#using-https for additional HTTPS configuration details
… …
gitlab:
host: test.websoft9.cn
port: 80
… …

本文档由长沙网久软件有限公司原创,为了保证文档的严肃性和可用性,任何人不得盗用或修改后二次分发。需要转载请标注来源,否则我们保留给予法律追究的权利。

我们会定期更新文档,请访问在线文档以获取最新版本

本文档在线地址:http://www.websoft9.com/xdocs/gitlab-image-guide
合作或技术支持:http://www.websoft9.com