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

7

我正在尝试安装GitLab,但是我想在我的VPS上的Apache Web服务器上安装它。

我知道GitLab是为nginx构建的,但是实话说,我不想使用它。我想知道如何设置这样一个环境,以便: mysite.com可以检索/var/www/html中的文件(例如index.html、包含更多文件的文件夹等等)。 lab.mysite.com可以检索GitLab。 我听说你需要使用虚拟主机,但是请记住,我对这种东西最多只是个业余爱好者,如果这里有人能够制作一个简短的逐步指南来做到这一点,我会非常感激。

注意:之前我一直在使用这个指南来安装GitLab,但是这是针对Nginx的,所以我想知道如果我按照这个指南进行安装,但是再添加一些内容,或者我是否完全走错了路。


2
根据您目前的专业水平,我建议您严格按照安装指南操作,并在使用时选择nginx。当您经验更加丰富后,可以偏离安装指南,因为那时您已经知道自己在做什么了。 - Thorbjørn Ravn Andersen
@ThorbjørnRavnAndersen 好的,那么新问题。我已经有一系列的网页文件了...如何在同一个VPS上将我的文件托管在mydomain.com,并将GitLab文件托管在lab.mydomain.com上?(我仍然想在这里使用CentOS 7,只是对Nginx非常非常陌生。我已经能够在mydomain.com上设置GitLab,但我需要添加一个索引页面等等。) - Miles Jefferson
我不知道。我认为你在同时处理太多你不熟悉的事情,你应该考虑简化它以获得更多经验,这样你才知道自己在做什么。由于你没有实际的编程问题,而是需要设置程序方面的帮助,你最好在superuser或unix网站上提问。 - Thorbjørn Ravn Andersen
@ThorbjørnRavnAndersen 好的,谢谢。我会做的。 - Miles Jefferson
1个回答

11
默认情况下,GitLab会安装nginx,但通常不会将nginx添加到系统的服务管理器(service或systemctl)。这使得在尝试启用Apache时变得困惑(由于默认端口80被nginx使用,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

Change to:

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

希望这能对某人有所帮助!


1
我使用了你的解决方案,对我来说还不错。但是我没有域名,所以使用端口转发并且必须更改你的虚拟主机文件。 - daryooosh
1
运行得很好!谢谢。 - Sid

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接