导语:我们需要搭建一个gitlab的服务器,搭建gitlab服务器相对来说比较简单,但由于gitlab对服务器的硬件配置要求比较高,因此我们准备了4核12G的服务器来搭建。
安装前准备工作
新建一个清华大学的安装源
vi /etc/yum.repos.d/tsinghua.repo [gitlab-ce] name=Gitlab CE Repository baseurl=https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el$releasever/ gpgcheck=0 enabled=1
安装依赖
查看一下相关的依赖是否已经安装,curl policycoreutils-python openssh-server。
rpm -qa |grep ssh openssh-server-7.4p1-11.el7.x86_64 openssh-7.4p1-11.el7.x86_64 libssh2-1.4.3-10.el7_2.1.x86_64 openssh-clients-7.4p1-11.el7.x86_64
rpm -qa |grep curl libcurl-7.29.0-42.el7.x86_64 libcurl-devel-7.29.0-42.el7.x86_64 curl-7.29.0-42.el7.x86_64 python-pycurl-7.19.0-19.el7.x86_64
rpm -qa |grep policycoreutils policycoreutils-python-2.5-17.1.el7.x86_64 policycoreutils-2.5-17.1.el7.x86_64
上面如果没有查找到,就使用下面的命令安装相关依赖。
yum install curl policycoreutils-python openssh-server
或者分开安装
yum install curl yum install policycoreutils-python yum install openssh-server
如果是新安装的ssh,那么安装完成后需要启用。
systemctl enable sshd systemctl start sshd
在防火墙开放8080端口
firewall-cmd --permanent --zone=public --add-port=8080/tcp
或者直接修改
vi /etc/firewalld/zones/public.xml
重启防火墙
firewall-cmd --reload
安装gitlab-ce
yum install gitlab-ce Loaded plugins: fastestmirror, langpacks base | 3.6 kB 00:00:00 extras | 3.4 kB 00:00:00 gitlab-ce | 2.9 kB 00:00:00 updates | 3.4 kB 00:00:00 (1/5): base/7/x86_64/group_gz | 166 kB 00:00:00 (2/5): extras/7/x86_64/primary_db | 215 kB 00:00:00 (3/5): updates/7/x86_64/primary_db | 7.4 MB 00:00:00 (4/5): base/7/x86_64/primary_db | 6.0 MB 00:00:00 (5/5): gitlab-ce/7/primary_db | 3.1 MB 00:00:02 Determining fastest mirrors * base: mirrors.aliyun.com * extras: mirrors.aliyun.com * updates: mirrors.aliyun.com ========================================================================================= N/S matched: ssh ========================================================================================== fence-agents-ilo-ssh.x86_64 : Fence agent for HP iLO devices via SSH ksshaskpass.x86_64 : A KDE version of ssh-askpass with KWallet support libssh.x86_64 : A library implementing the SSH protocol libssh-devel.x86_64 : Development files for libssh libssh2.x86_64 : A library implementing the SSH2 protocol libssh2.i686 : A library implementing the SSH2 protocol libssh2-devel.i686 : Development files for libssh2 libssh2-devel.x86_64 : Development files for libssh2 libssh2-docs.noarch : Documentation for libssh2 openssh.x86_64 : An open source implementation of SSH protocol versions 1 and 2 openssh-askpass.x86_64 : A passphrase dialog for OpenSSH and X openssh-clients.x86_64 : An open source SSH client applications openssh-keycat.x86_64 : A mls keycat backend for openssh openssh-ldap.x86_64 : A LDAP support for open source SSH server daemon openssh-server.x86_64 : An open source SSH server daemon openssh-server-sysvinit.x86_64 : The SysV initscript to manage the OpenSSH server. pam_ssh_agent_auth.i686 : PAM module for authentication with ssh-agent pam_ssh_agent_auth.x86_64 : PAM module for authentication with ssh-agent sshpass.x86_64 : Non-interactive SSH authentication utility ansible.noarch : SSH-based configuration management, deployment, and task execution system jsch.noarch : Pure Java implementation of SSH2 openssh-cavs.x86_64 : CAVS tests for FIPS validation python-paramiko.noarch : SSH2 protocol library for python python-paramiko-doc.noarch : Docs and demo for SSH2 protocol library for python Name and summary matches only, use "search all" for everything. [root@localhost zones]# rpm -qa |grep ssh openssh-server-7.4p1-11.el7.x86_64 openssh-7.4p1-11.el7.x86_64 libssh2-1.4.3-10.el7_2.1.x86_64 openssh-clients-7.4p1-11.el7.x86_64 [root@localhost zones]# rpm -qa |grep curl libcurl-7.29.0-42.el7.x86_64 libcurl-devel-7.29.0-42.el7.x86_64 curl-7.29.0-42.el7.x86_64 python-pycurl-7.19.0-19.el7.x86_64 [root@localhost zones]# rpm -qa |grep policycoreutils policycoreutils-python-2.5-17.1.el7.x86_64 policycoreutils-2.5-17.1.el7.x86_64 [root@localhost zones]# yum install gitlab-ce Loaded plugins: fastestmirror, langpacks Loading mirror speeds from cached hostfile * base: mirrors.aliyun.com * extras: mirrors.aliyun.com * updates: mirrors.aliyun.com Resolving Dependencies --> Running transaction check ---> Package gitlab-ce.x86_64 0:12.2.4-ce.0.el7 will be installed --> Finished Dependency Resolution Dependencies Resolved ===================================================================================================================================================================================================== Package Arch Version Repository Size ===================================================================================================================================================================================================== Installing: gitlab-ce x86_64 12.2.4-ce.0.el7 gitlab-ce 630 M Transaction Summary ===================================================================================================================================================================================================== Install 1 Package Total download size: 630 M Installed size: 630 M Is this ok [y/d/N]: y Downloading packages: gitlab-ce-12.2.4-ce.0.el7.x86_ FAILED 78% [========================================================== ] 455 B/s | 497 MB 85:19:04 ETA https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/gitlab-ce-12.2.4-ce.0.el7.x86_64.rpm: [Errno 12] Timeout on https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/gitlab-ce-12.2.4-ce.0.el7.x86_64.rpm: (28, 'Operation too slow. Less than 1000 bytes/sec transferred the last 30 seconds') Trying other mirror. gitlab-ce-12.2.4-ce.0.el7.x86_64.rpm | 630 MB 00:00:31 Running transaction check Running transaction test Transaction test succeeded Running transaction Installing : gitlab-ce-12.2.4-ce.0.el7.x86_64 1/1 It looks like GitLab has not been configured yet; skipping the upgrade script. *. *. *** *** ***** ***** .****** ******* ******** ******** ,,,,,,,,,***********,,,,,,,,, ,,,,,,,,,,,*********,,,,,,,,,,, .,,,,,,,,,,,*******,,,,,,,,,,,, ,,,,,,,,,*****,,,,,,,,,. ,,,,,,,****,,,,,, .,,,***,,,, ,*,. _______ __ __ __ / ____(_) /_/ / ____ _/ /_ / / __/ / __/ / / __ `/ __ \ / /_/ / / /_/ /___/ /_/ / /_/ / \____/_/\__/_____/\__,_/_.___/ Thank you for installing GitLab! GitLab was unable to detect a valid hostname for your instance. Please configure a URL for your GitLab instance by setting `external_url` configuration in /etc/gitlab/gitlab.rb file. Then, you can start your GitLab instance by running the following command: sudo gitlab-ctl reconfigure For a comprehensive list of configuration options please see the Omnibus GitLab readme https://gitlab.com/gitlab-org/omnibus-gitlab/blob/master/README.md Verifying : gitlab-ce-12.2.4-ce.0.el7.x86_64 1/1 Installed: gitlab-ce.x86_64 0:12.2.4-ce.0.el7 Complete!
目录结构
/opt/gitlab 主目录 /etc/gitlab 配置文件目录 /var/log/gitlab 日志目录
修改配置文件
/etc/gitlab/gitlab.rb
该文件中添加
external_url 'http://ip:8080' nginx['listen_port'] = 8080
默认nginx 监听的是8080 端口,如果nginx 修改端口,external_url 里面也必须带端口。如果你的80端口是可用的,那么无需修改。
启动gitlab 命令
gitlab-ctl reconfigure && gitlab-ctl start
启动完成后,会出现gitlab 包含的服务
gitlab Reconfigured! ok: run: alertmanager: (pid 3119) 3s ok: run: gitaly: (pid 3050) 6s ok: run: gitlab-monitor: (pid 3049) 6s ok: run: gitlab-workhorse: (pid 3030) 7s ok: run: grafana: (pid 3144) 2s ok: run: logrotate: (pid 2382) 126s ok: run: nginx: (pid 2354) 132s ok: run: node-exporter: (pid 3042) 6s ok: run: postgres-exporter: (pid 3134) 2s ok: run: postgresql: (pid 2015) 217s ok: run: prometheus: (pid 3085) 5s ok: run: redis: (pid 1808) 234s ok: run: redis-exporter: (pid 3073) 5s ok: run: sidekiq: (pid 2269) 144s ok: run: unicorn: (pid 2230) 150s
可以查看主件的状态
gitlab-ctl status
修改root密码
登录网址http://ip:8080 ,第一次登陆的时候,会要求修改root 的密码,gitlab 默认管理用户是root。
gitlab 相关操作命令
命令前缀gitlab-ctl。
start 启动所有服务 这个重启也会继续开启 相当systemctl enable stop 关闭所有服务 restart 重启所有服务 status 查看所有服务状态 tail 查看日志信息 service-list 列举所有启动服务 graceful-kill 平稳停止一个服务 help 帮助 reconfigure 修改配置文件之后,需要重新加载下 show-config 查看所有服务配置文件信息 uninstall 卸载这个软件 cleanse 删除gitlab数据,重新白手起家
如果修改了需要使用外部的postgresql ,redis 和nginx需要修改该文件相关参数。
gitlab 启动之后会根据配置文件 定义创建一系列用户 和 他们的家目录默认gitlab 依赖的主件安装在/var/opt/gitlab/目录下。
gitlab 的组件有nginx,postgresql,redis,unicorn,sidekiq,logrotate。
- nginx : web入口
- database(postgresql,mysql) (gitlab repository issue,merge request等,用户(权限))
- redis 缓存,负责分发任务
- sideiq:后台任务,主要负责发送电子邮件,任务需要来自redis
- unicorn: 包含gitlab 主进程
- gitlab-shell 用于ssh交互
- gitlab-workhorse:反向代理服务器,可以处理与unicorn 无关的请求,处理git pull/push请求,处理到unicorn 的连接
- gitaly 后台服务,用于处理GitLab发出的所有git调用
设置smtp邮件信息
修改配置文件的信息
vi /etc/gitlab/gitlab.rb
将下面的参数#号去掉,然后填上自己的smtp信息。
gitlab_rails['smtp_enable'] = true gitlab_rails['smtp_address'] = "smtp.server" gitlab_rails['smtp_port'] = 465 gitlab_rails['smtp_user_name'] = "smtp user" gitlab_rails['smtp_password'] = "smtp password" gitlab_rails['smtp_domain'] = "example.com" gitlab_rails['smtp_authentication'] = "login" gitlab_rails['smtp_enable_starttls_auto'] = true gitlab_rails['smtp_tls'] = true
重新配置gitlab
gitlab-ctl reconfigure
发送测试邮件
进入控制台
gitlab-rails console
输入命令
Notify.test_email('xxxxx@xxxx.cn', 'Message Subject', 'Message Body').deliver_now
如果报错Net::SMTPFatalError (553 Mail from must equal authorized user App0022),修改/etc/gitlab/gitlab.rb的配置
gitlab_rails['gitlab_email_enabled'] = true gitlab_rails['gitlab_email_from'] = xxxx@xxxxx.cn' gitlab_rails['gitlab_email_display_name'] = '' gitlab_rails['gitlab_email_reply_to'] = 'xxxx@xxxx.cn' gitlab_rails['gitlab_email_subject_suffix'] = ''
结束
安装gitlab需要注意的要点,一是依赖检查,二是服务器硬件要好一点。