尝试在 CentOS 7 上的 Apache 上安装 GitLab

尝试在 CentOS 7 上的 Apache 上安装 GitLab

大家好,SuperUser 社区,我是这个论坛的新手,所以我想简短地介绍一下。我是一名业余 CentOS 系统管理员。我边学边自学,但最近遇到了一个障碍。我正在尝试安装 GitLab,但我想将它安装在我的 VPS 上的 Apache Web 服务器上。

我知道 GitLab 是为 nginx 构建的,但老实说我不想使用它。我想知道如何设置以便

  • mysite.com 将检索 /var/www/html 中的文件(如 index.html、包含更多文件的文件夹等)
  • lab.mysite.com 将检索 GitLab。

我听说你应该使用虚拟主机,但请记住,对于这种东西,我充其量还是个业余爱好者,所以如果这里有人愿意提供一个简短的分步指南来做到这一点,我将不胜感激。

注意:在我使用之前本指南安装 GitLab,但是这是针对 Nginx 的,所以我想知道我是否应该使用本指南然后添加内容,或者我是否完全错误地完成了这项工作。

我刚刚清理了我的 VPS,这样我就可以重新开始了。我知道如何安装 LAMP、Git 和所有这些,所以请告诉我我应该按照这个“分步”指南的哪个步骤来安装。

非常感谢,迈尔斯。

答案1

我以前运行过 Gitlabs,但从未使用过 Apache,但是快速谷歌搜索发现信息匮乏。一般来说,您需要安装 Gitlabs 和 Apache,编辑 Gitlabs 配置,将 Apache 用户添加到 Gitlabs 组,创建一个 VirtualHosts 文件,以便 Apache 托管 Gitlabs 而不是 nginx,启用新的 VirtualHosts 文件,必要时修改 Apache,并在必要时重新启动 Apache 和 Gitlabs。这些链接[1] [2] [3] [4] [5]更加详细地讲解并应该对你有所帮助。

答案2

我最近回答了这个问题,其中包括一些说明:

https://stackoverflow.com/a/41168476/1856589

不确定这是否被视为重新发布,但这里再次重申这些说明:



默认情况下,GitLab 将安装 nginx,但通常不会将 nginx 添加到系统的服务管理器(service 或 systemctl)中。这使得在尝试启用 Apache 时感到困惑(由于 nginx 使用默认端口 80,Apache 无法启动)。

假设你已经按照默认安装说明安装了 Gitlab,那么 Nginx 服务现在将由gitlab-ctl服务管理器(安装 Gitlab 时安装)。

要停止 Nginx,请以 root 身份从命令行运行以下命令:

gitlab-ctl stop nginx

现在端口 80 可用,您可以启动 Apache(如果尚未安装 Apache,请不要忘记安装 / 说明适用于 RHEL 系统 - 请针对 Ubuntu 等进行相应修改)。假设您是 root 用户:

yum install -y httpd;
systemctl start httpd;
systemctl enable httpd;

让我们编辑 Gitlab 配置文件来禁用 nginx 并告诉 gitlab 使用 apache:

vi /etc/gitlab/gitlab.rb

将您的域名或 IP 添加到以下内容:

external_url 'http://git.yourdomain.com/'

寻找:

# web_server['external_users'] = []

更改为(不要忘记删除前导“#”):

web_server['external_users'] = ['apache']

寻找:

# nginx['enable'] = true

改成:

nginx['enable'] = false

最后我们必须运行“重新编译”:

gitlab-ctl reconfigure

gitlab-ctl restart

现在是 Apache 配置。当我们安装 Gitlab 时,它添加了一个名为 gitlab-www 的用户组。我们需要允许 apache 用户访问该组。以下假设您已经安装了 apache 并且用户 apache (48) 存在:

要检查 gitlab 安装到哪个组下,你可以运行:

getent group

现在让我们修改 apache 的用户并将其添加到 gitlab-www 组:

usermod apache --append --groups gitlab-www

现在我们需要一个 Apache 虚拟主机来指向 gitlab 安装。

将虚拟主机添加到 Apache 的 conf.d 目录(这将创建一个新文件):

vi /etc/httpd/conf.d/gitlab.conf

添加以下内容(根据您的需要进行调整):

<VirtualHost *:80>
    ServerName git.yourdomain.com
    ServerSignature Off

    ProxyPreserveHost On

    <Location />
      Order deny,allow
      Allow from all

      ProxyPassReverse http://127.0.0.1:8080
      ProxyPassReverse http://git.yourdomain.com/
    </Location>

    RewriteEngine on
    RewriteCond %{DOCUMENT_ROOT}/%{REQUEST_FILENAME} !-f
    RewriteRule .* http://127.0.0.1:8080%{REQUEST_URI} [P,QSA]

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

    ErrorLog /var/log/httpd/error_log
    CustomLog /var/log/httpd/access_log combined env=!dontlog
</VirtualHost>

...现在重新启动 Apache:

systemctl start httpd

您可能会遇到类似 selinux 的问题 - 您可以将其设置为允许以进行调试。

setenforce 0

我希望这可以帮助别人!

相关内容