对于企业级的私有 git 仓库,gitlab 是个不错的选择。
今天就来说说 gitlab
的安装、配置。
系统配置建议:最低双核 4G 内存。
1. 说明
根据官方的安装教程,选取 ubuntu 环境下的社区版进行安装:https://about.gitlab.com/install/#ubuntu?version=ce。
如果需要其他的环境(如 CentOS
、docker
等)或者企业版,参考这里:https://about.gitlab.com/install/。
注:社区版是免费的,企业版是收费的。
2. 安装、配置所需依赖
代码语言:javascript复制sudo apt-get install -y curl openssh-server ca-certificates
代码语言:javascript复制sudo apt-get install -y postfix
3. 添加安装包地址,并安装
代码语言:javascript复制curl -sS https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.deb.sh | sudo bash
代码语言:javascript复制sudo EXTERNAL_URL="http://gitlab.example.com" apt-get install gitlab-ce
这里需要把 http://gitlab.example.com
改成你自己的真正对外服务的 gitlab
url 地址(也可以安装后在配置文件里面更改)。
到这里为止,gitlab
就算安装好了。
4. 安装之后
gitlab
默认建议安装在一个单独的主机上,默认使用内置的 nginx
服务器,并使用 80
和 8080
两个端口。
如果你是按照 gitlab
的默认建议,使用的是单独的主机,直接访问 ip 地址 http://ip
,或者把域名解析到这台机器上后直接访问域名 http://gitlab.your.com
,然后按照步骤在 web
页面上初始化 gitlab
就可以了。
然而,很多情况下,gitlab
并不会部署到一台单独的服务器上,而是像其他很多服务一样(如 jenkins
),部署到同一台服务器上,然后使用 nginx
反向代理。
5. nginx 反向代理配置
添加 nginx
配置:
upstream gitlab-workhorse {
server unix:/var/opt/gitlab/gitlab-workhorse/socket;
}
server {
listen 0.0.0.0:80;
listen [::]:80;
server_name gitlab.your.com;
server_tokens off;
root /opt/gitlab/embedded/service/gitlab-rails/public;
access_log /var/log/nginx/gitlab_access.log;
error_log /var/log/nginx/gitlab_error.log;
location / {
client_max_body_size 0;
gzip off;
proxy_read_timeout 300;
proxy_connect_timeout 300;
proxy_redirect off;
proxy_http_version 1.1;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_pass http://gitlab-workhorse;
}
}
如果想要了解更详细的配置,可以参考:NGINX settings | GitLab。
重新加载 nginx
配置:
service nginx reload
# or
service nginx restart
修改 gitlab
配置:
vi /etc/gitlab/gitlab.rb
external_url 'http://gitlab.your.com' # 此处修为你自己的 gitlab url
web_server['external_users'] = ['www-data'] # 设置外部 webserver 用户
nginx['enable'] = false # 不使用内置的 nginx
代码语言:javascript复制sudo usermod -aG gitlab-www www-data # 把 www-data 用户添加到 gitlab-www 组
gitlab
服务默认使用的是 8080
端口,如果 8080
端口已经被其他程序(如 tomcat
)占用,需要改成其他端口:
unicorn['port'] = 8081 # 改成你自己觉得好的端口
更新 gitlab
配置,重启服务:
gitlab-ctl reconfigure
gitlab-ctl restart
现在你就可以访问 http://gitlab.your.com
,然后按照步骤在 web
页面上初始化 gitlab
就可以了。
6. 常用命令
代码语言:javascript复制gitlab-ctl start # 启动 gitlab
gitlab-ctl stop # 停止 gitlab
gitlab-ctl restart # 重启 gitlab
gitlab-ctl status # 查看服务状态
vi /etc/gitlab/gitlab.rb # 修改配置文件
gitlab-ctl reconfigure # 重新编译 gitlab 配置
gitlab-rake gitlab:check SANITIZE=true --trace # 检查 gitlab
gitlab-ctl tail # 查看日志
gitlab-ctl tail nginx/gitlab_access.log
7. 常用目录
代码语言:javascript复制/var/log/gitlab/ # 日志地址
/var/opt/gitlab/ # 服务地址
8. 查看版本
代码语言:javascript复制cat /opt/gitlab/embedded/service/gitlab-rails/VERSION
9. 可能遇到的一些问题
9.1 File to import not found or unreadable
解决:需要 npm
安装一下
cd /opt/gitlab/embedded/service/gitlab-rails
npm install
gitlab-ctl restart