在centos下如何用apache运行gitlab

2022-02-20  本文已影响0人  玩物励志老乐

公司的代码管理需要从svn转为git。之所以放弃svn,我们主要考虑git具有更灵活的代码冲突管理、分支及版本管理、工作流及友好的UI界面等。为了更好的推行git落实并增加代码保密性,我选择从安装自管理的gitlab(极狐)开始。

一、部署环境

二、gitlab的常规安装记录

1. 安装依赖(在系统防火墙中打开 HTTP、HTTPS 和 SSH 访问,如不需要可跳过)

sudo yum install -y curl policycoreutils-python openssh-server perl
sudo systemctl enable sshd
sudo systemctl start sshd
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
sudo systemctl reload firewalld
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
sudo systemctl reload firewalld

2. 下载中文版极狐安装包

wget https://omnibus.gitlab.cn/el/7/gitlab-jh-14.7.2-jh.0.el7.x86_64.rpm

3. 设定dns

gitlab的安装需要指定一个环境变量EXTERNAL_URL,这个url必须是可以被公网dns解析的,否则安装会报错。
url经过dns解析之后,可以使用如下命令导入

export EXTERNAL_URL=http://gitlab.example.com

4. 安装gitlab

执行以下命令

sudo rpm -Uvh gitlab-jh-14.7.2-jh.0.el7.x86_64.rpm

注意,安装了gitlab之后,命令行会输出默认的root密码,用于以管理员的身份登录gitlab,做一些配置管理工作。这个密码的有效期是24小时,或执行一次重新配置就会失效。

5.gitlab的配置方式

如果是按照上文的命令,安装的gitlab是omnibus版的极狐,里面捆绑有nginx。所以,要想让gitlab运行起来,下列三种配置方式任选其一:

三、gitlab在apache下运行

gitlab在apache下运行,需要不少额外的配置,大致有三步:

第一步,建立vhost.conf文件

1.下载配置文件

apache的vhost文件,可以去这个地址下载模板,我们只需要修改服务器url和监听端口即可。web-server/apache · master · GitLab.org / GitLab recipes · GitLab
这个页面有两类配置,分别为基于apache2.2版的http和https版,基于apache2.4及以上的http和https版。请根据需要下载适合自己的配置文件。

2.修改配置

配置文件的内容及解释如下:

# This configuration has been tested on GitLab 13.6
# Note this config assumes unicorn/puma is listening on default port 8080 and
# gitlab-workhorse is listening on port 8181.  
# 这份配置假设unicorn和puma运行在8080端口,gitlab-workhorse运行在8181端口。
# To make puma listen on port 8080 edit gitlab/config/puma.rb and add the following: 
# 为了让puma监听8080端口,需要修改gitlab/config/puma.rb,增加下面这行代码。
# bind 'tcp://127.0.0.1:8080'
# 
# To allow gitlab-workhorse to listen on port 8181, edit or create 
# /etc/default/gitlab and change or add the following:
# 为了让gitlab-workhorse监听8181端口,需要修改或新增/etc/default/gitlab 这个文件,增加下面这行:
# gitlab_workhorse_options="-listenUmask 0 -listenNetwork tcp -listenAddr 127.0.0.1:8181 -authBackend http://127.0.0.1:8080"
#
#Module dependencies
# mod_rewrite
# mod_proxy
# mod_proxy_http
<VirtualHost *:80>
  ServerName 修改成你自己的ip或url
  ServerSignature Off

  ProxyPreserveHost On

  # Ensure that encoded slashes are not decoded but left in their encoded state.
  # http://doc.gitlab.com/ce/api/projects.html#get-single-project
  AllowEncodedSlashes NoDecode

  <Location />
    # New authorization commands for apache 2.4 and up
    # http://httpd.apache.org/docs/2.4/upgrading.html#access
    Require all granted

    #Allow forwarding to gitlab-workhorse
    ProxyPassReverse http://127.0.0.1:8181
    ProxyPassReverse 修改成你自己的ip或url
  </Location>

  # Apache equivalent of nginx try files
  # http://serverfault.com/questions/290784/what-is-apaches-equivalent-of-nginxs-try-files
  # http://stackoverflow.com/questions/10954516/apache2-proxypass-for-rails-app-gitlab
  RewriteEngine on

  #Forward all requests to gitlab-workhorse except existing files like error documents
  RewriteCond %{DOCUMENT_ROOT}/%{REQUEST_FILENAME} !-f [OR]
  RewriteCond %{REQUEST_URI} ^/uploads/.*
  RewriteRule .* http://127.0.0.1:8181%{REQUEST_URI} [P,QSA,NE]

  # needed for downloading attachments
  DocumentRoot /opt/gitlab/embedded/service/gitlab-rails/public

  #Set up apache error documents, if back end goes down (i.e. 503 error) then a maintenance/deploy page is thrown up.
  ErrorDocument 404 /404.html
  ErrorDocument 422 /422.html
  ErrorDocument 500 /500.html
  ErrorDocument 502 /502.html
  ErrorDocument 503 /503.html

  # It is assumed that the log directory is in /var/log/httpd.
  # For Debian distributions you might want to change this to
  # /var/log/apache2.
  LogFormat "%{X-Forwarded-For}i %l %u %t \"%r\" %>s %b" common_forwarded
  ErrorLog /var/log/httpd/logs/自定义错误文件名_error.log
  CustomLog /var/log/httpd/logs/自定义错误文件名_forwarded.log common_forwarded
  CustomLog /var/log/httpd/logs/自定义错误文件名_access.log combined env=!dontlog
  CustomLog /var/log/httpd/logs/自定义错误文件名.log combined
</VirtualHost>

当你按照上面的内容配置apache时,请一定要把最上面的中文翻译部分删掉,并把下面代码里的中文替换成你自己的信息。

第二步,修改gitlab配置

sudo vim /etc/gitlab/gitlab.rb

第三步,重新启动

1. gitlab

sudo gitlab-ctl reconfigure

2. apache

首先确保apache开启了vhost。
将gitlab.conf放入/etc/httpd/conf.d/或/etc/httpd/site-available/下并建立软连接到/etc/httpd/site-enable。

service httpd restart

四、以管理员身份登录gitlab

如果以上都顺利,可以按照之前自定义的url(如gitlab.example.com)进行访问了。
如果看到登录画面,祝贺你,一切都很顺利。
如果看到错误画面,别灰心,去看看错误日志。我遇到的问题基本都和gitlab-workhorse有关。再打开gitlab.rb,仔细按照上面的gitlab配置逐一检查。

1.root登录gitlab

因为我从安装gitlab到真正能访问gitlab花的时间超出了24小时,所以我的root密码没办法登录。此时需要重置root密码才行。

sudo gitlab-rake "gitlab:password:reset[root]"

之后就能得到一个新的密码。
如果以后需要重置其他用户的密码,也可以用这个方法。
更多详情,请访问这里:重置用户的密码 | GitLab

2.后续操作

安装和配置的部分已经写完了。后面的部分,就是配置管理工作了。详见:使用极狐GitLab | GitLab

上一篇下一篇

猜你喜欢

热点阅读