注:本次使用Ubuntu18.04服务器
1.安装依赖包,运行命令
1.1 运行命令安装
sudo apt-get update
sudo apt-get install curl openssh-server ca-certificates
1.2 接下来,安装Postfix以发送通知电子邮件。如果要使用其他解决方案发送电子邮件,请跳过此步骤并 在安装GitLab后配置外部SMTP服务器。
sudo apt-get install -y postfix
执行完成后,出现邮件配置,选择Internet Site
,连续两次回车ok
2.安装gitlab-ce
添加清华大学源
首先信任 GitLab 的 GPG 公钥:
curl https://packages.gitlab.com/gpg.key 2> /dev/null | sudo apt-key add - &>/dev/null
Debian/Ubuntu 版本,文本框中内容写进 /etc/apt/sources.list.d/gitlab-ce.list
deb https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/ubuntu xenial main
接下来,安装GitLab包。
sudo apt-get install gitlab-ce
修改/etc/gitlab/gitlab.rb
中的external_url
配置访问页面,我这里是本地机子ip是192.168.8.254
sudo vim /etc/gitlab/gitlab.rb
sudo gitlab-ctl reconfigure
reconfigure 错误
在reconfigure后发现报错
================================================================================
Error executing action `run` on resource 'bash[migrate gitlab-rails database]'
================================================================================
查看一下下面提示的错误发现
ArgumentError: could not find a temporary directory
执行命令
chmod +t /tmp
具体问题可以参考https://stackoverflow.com/questions/21117878/ruby-could-not-find-a-temporary-directory
检查GitLab是否安装好并且已经正确运行,输入下面的命令(查看gitlab的状态)
sudo gitlab-ctl status
修改端口
由于本机已经安装有nginx监听了80端口,而gitlab自带启动的nginx也是80端口会冲突
1.先关闭gitlab服务
sudo gitlab-ctl stop
2.修改gitlab自带的nginx监听端口
# 修改配置
sudo vim /etc/gitlab/gitlab.rb
将nginx['listen_port'] = nil
(默认80)改为nginx['listen_port'] = 4567
修改为自己需要监听的端口,我这里是修改成4567
# 重新加载配置
sudo gitlab-ctl reconfigure
# 重新启动
sudo gitlab-ctl restart
3.浏览到主机名并登录
3.1 设置初始密码
访问你配置的gitlab链接,我这里是http://192.168.8.254:4567
,第一次访问会重定向到密码重置页面
,然后设置一下超级管理员的账号的密码,超级管理员账号用户名为root
输入两次密码后,点击Change your password
就可以
3.2 登录
登录使用root和你刚刚设置的密码
使用非gitlab的nginx
因为本来机子已经有一个nginx,不想一台机子跑两个nginx服务,
官网参考文档: https://blog.csdn.net/pujiaolin/article/details/80709299
1.修改配置文件,禁用内嵌 nginx
sudo vim /etc/gitlab/gitlab.rb
修改一下配置
# 关闭nginx服务
nginx['enable'] = false
# 修改web服务用户,我这里是www
web_server['external_users'] = ['www']
# 重新加载配置
sudo gitlab-ctl reconfigure
# 重新启动
sudo gitlab-ctl restart
可以看到没有启动nginx服务
2.可以参考官网文档修改配置nginx https://docs.gitlab.com/omnibus/settings/nginx.html#vhost-server-block
修改nginx配置
# 添加upstream指向gitlab
upstream gitlab-workhorse {
server unix:/var/opt/gitlab/gitlab-workhorse/socket fail_timeout=0;
}
# 在server中添加
server
{
......
location / {
# serve static files from defined root folder;.
# @gitlab-workhorse is a named location for the upstream fallback, see below
try_files $uri $uri/index.html $uri.html @gitlab-workhorse;
}
location @gitlab-workhorse {
# If you use https make sure you disable gzip compression
# to be safe against BREACH attack
proxy_read_timeout 300; # Some requests take more than 30 seconds.
proxy_connect_timeout 300; # Some requests take more than 30 seconds.
proxy_redirect off;
proxy_set_header X-Forwarded-Proto $scheme;
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-Frame-Options SAMEORIGIN;
proxy_pass http://gitlab-workhorse;
}
location ~ ^/(assets)/ {
root /opt/gitlab/embedded/service/gitlab-rails/public;
# gzip_static on; # to serve pre-gzipped version
expires max;
add_header Cache-Control public;
}
.....
}
重启后就可以访问nginx配置可以顺利进入
配置gitlab邮箱
1.开启QQ邮箱的smtp服务
设置–》账户–》smtp–》密保验证–》验证成功返回一串字符串,形状如(ausdixersybgcgid)
2.修改gitlab配置
vim /etc/gitlab/gitlab.rb
# 按 / 后输入smtp_enable,找到下面这一串文本,进行修改
gitlab_rails['smtp_enable'] = true
gitlab_rails['smtp_address'] = "smtp.qq.com"//qq smtp 邮箱
gitlab_rails['smtp_port'] = 465
gitlab_rails['smtp_user_name'] = "xxxxx@qq.com" //自己的邮箱
gitlab_rails['smtp_password'] = "开通smtp时返回的字符"//如 (mcgzkoruwuxvbggj)
gitlab_rails['smtp_domain'] = "qq.com"
gitlab_rails['smtp_authentication'] = "login"
gitlab_rails['smtp_enable_starttls_auto'] = true
gitlab_rails['smtp_tls'] = true
/git_user_email找到
user['git_user_email'] = "xxx@qq.com" //自己的邮箱
/gitlab_email_from 找到
gitlab_rails['gitlab_email_from']-'自己的邮箱'
按esc退出到命令行模式
之后:wq 保存并退出
gitlab-ctl reconfigure//重新启动配置
测试邮件服务是否正常
gitlab-rails console
Notify.test_email('接收方邮件地址','邮件标题','邮件内容').deliver_now
按回车,测试发送。
## 使用frp将本地gitlab代理到外网
由于gitlab使用机器配置需要比较大,所以打算将gitlab搭建在本地机子上,使用frp做内网穿透,然后通过外网代理到本地机子的gitlab上
这样的好处是:
- 1.线上的服务器可以配置低一点都可以
- 2.gitlab搭建在本地,在内网时候可以通过本地网络,速度飞快
- 3.本地机子随便弄点高配置也很便宜
- 4.本地仓库好管理
1.部署服务端
1.服务端部署frp server
下载frp到服务器上,并解压
wget https://github.com/fatedier/frp/releases/download/v0.29.0/frp_0.29.0_linux_amd64.tar.gz
tar -zxvf frp_0.29.0_linux_amd64.tar.gz
# 编辑配置文件
cd frp_0.29.0_linux_amd64/
vim frps.ini
编辑配置
[common]
bind_port = 7000 # frp server和客户端通信端口
token = hihozhou # frp server和客户端通信验证token,安全
vhost_http_port = 8000 # 外部访问端口,http服务,可以设置nginx代理到这个端口
启动frp server端服务
nohup ./frps -c ./frps.ini &
2.配置服务端nginx转发到frp server
server {
......
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-Ssl on;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_pass http://127.0.0.1:8000;#刚刚frp设置的http端口
}
......
}
访问一下配置的域名
可以看到nginx成功代理到frp了,这里会提示错误,因为我们还没配置frp客户端
2.部署本地
同样要想下载解压frp
wget https://github.com/fatedier/frp/releases/download/v0.29.0/frp_0.29.0_linux_amd64.tar.gz
tar -zxvf frp_0.29.0_linux_amd64.tar.gz
不过这次是需要配置frp客户端
cd frp_0.29.0_linux_amd64
vim frpc.ini
[common]
server_addr = xxx.xxxx.xxx.xxx # frp server端ip
server_port = 7000 # 配置通信的端口
token = hihozhou # 服务端设置的token
[gitlab]
type = http # 协议
local_port = 80 #转发给本地的端口
custom_domains = gitlab.xxxx.com #域名
启动frp 客户端端服务
nohup ./frpc -c ./frpc.ini &
大功告成
—End—
迭代
- 2019年01月25日 19:58 初稿
参考
- 《Ubuntu下安装gitlab(亲测有效)》
- 《GitLab Installation》
- 《Ruby: Could not find a temporary directory》
- 《What permissions does nginx need for the Gitlab-workhorse socket?》
- 《GitLab 的邮箱配置》