Gitlab自定义域名+SSL

很多代码不适合放在公网上,于是自己搭建了一个Gitlab。

为gitlab设置域名和ssl

这块有两个思路:

  • 用gitlab自带的nginx实现
  • 自带的nginx关掉,用公用的nginx转发

因为我还要用到ssl,所以和现有的nginx放在一起会比较好。

但是如果只用公用的nginx转发,会导致无法 git push,这块坑还蛮多的,搞了一天。

用宝塔安装gitlab

因为本身就用的是宝塔,而宝塔有gitlab这个插件,我就不用自己造轮子了。

反向代理gitlab

直接使用反向代理,代理本地的8099端口
1556161781.png

修改gitlab的域名

1
vim /etc/gitlab/gitlab.rb

修改

1
external_url 'http://iii.run'

重载 nginx, 重启gitlab

1
2
3
/etc/init.d/nginx reload
gitlab-ctl reconfigure
gitlab-ctl restart

如果第二个命令报错,手动到宝塔重载一下nginx

1556161803.png

第三个命令依然可能出错,大概样子为

1556161812.png

如果用 gitlab-ctl tail 看一下报错,一般来说,报错是这个样子的

1556161818.png

两个可能的错误

file does not exist

网上查了查,似乎是宝塔的问题, 原因应该是为了防止nginx冲突, 把gitlab的nginx启动文件名改成了gitlab-web, 但有个配置文件没改造成的

修改nginx启动文件

1
vi /opt/gitlab/sv/nginx/run


1
exec chpst -P /opt/gitlab/embedded/sbin/nginx -p /var/opt/gitlab/nginx

改为
1
exec chpst -P /opt/gitlab/embedded/sbin/gitlab-web -p /var/opt/gitlab/nginx

这个错误会不停的出现,提醒你……

权限配置

访问会报502。原本是 nginx 用户无法访问gitlab用户的 socket 文件,用户权限配置,因人而异。粗暴地:

1
sudo chmod -R o+x /var/opt/gitlab/gitlab-rails

忘记默认密码

也可能是第一次忘了设置

  • 查询用户
    1
    irb(main):001:0>  user = User.where(id: '1').first
    返回信息,基本所有的信息都在这里
    1
    => #<User id: 1, email: "admin@example.com", encrypted_password: "$2a$10$lWfDMVCR9ThDtMFwEx.ql.mtbRJebHmBIvZLu5Nsd3n...", reset_password_token: nil, reset_password_sent_at: nil, remember_created_at: nil, sign_in_count: 1, current_sign_in_at: "2018-12-02 03:03:38", last_sign_in_at: "2018-12-02 03:03:38", current_sign_in_ip: "58.247.170.236", last_sign_in_ip: "58.247.170.236", created_at: "2018-12-02 02:42:10", updated_at: "2018-12-02 03:03:38", name: "Administrator", admin: true, projects_limit: 10, skype: "", linkedin: "", twitter: "", authentication_token: "ddbPkmGdyjtAeKHs-wx9", theme_id: 2, bio: nil, failed_attempts: 0, locked_at: nil, username: "root", can_create_group: true, can_create_team: false, state: "active", color_scheme_id: 1, notification_level: 1, password_expires_at: nil, created_by_id: nil, last_credential_check_at: nil, avatar: nil, confirmation_token: nil, confirmed_at: "2018-12-02 02:42:10", confirmation_sent_at: nil, unconfirmed_email: nil, hide_no_ssh_key: false, website_url: "", notification_email: "admin@example.com", hide_no_password: false, password_automatically_set: false, location: nil, encrypted_otp_secret: nil, encrypted_otp_secret_iv: nil, encrypted_otp_secret_salt: nil, otp_required_for_login: false, otp_backup_codes: nil, public_email: "", dashboard: 0, project_view: 0, consumed_timestep: nil, layout: 0, hide_project_limit: false, unlock_token: nil, otp_grace_period_started_at: nil, ldap_email: false, external: false>
  • 修改密码
    1
    irb(main):003:0> user.password = 'testtest'

=> "testtest"

  • 保存
1
irb(main):004:0> user.save!

保存设置,可以猜出此时会触发一个邮件发送的JOB,告知所做变更,

1
2
Enqueued ActionMailer::DeliveryJob (Job ID: cb066b9e-0fa6-4a4a-b1e6-79d9070f18c8) to Sidekiq(mailers) with arguments: "DeviseMailer", "confirmation_instructions", "deliver_now", gid://gitlab/User/1, "U1oahRzazQw4JS5gPcq-", {:to=>"test@test.com"}
=> true

在这里貌似只能修改密码,不能修改邮箱,其次注意密码两边的是单引号

参考

https://www.liaohuqiu.net/cn/posts/non-bundled-web-server-for-gitlab/

作者

mmmwhy

发布于

2018-12-02

更新于

2022-10-08

许可协议

评论