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

Mil*_*son 5 linux apache git centos gitlab

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

我知道GitLab是为nginx构建的,但老实说我不想使用它.我不知道我怎么会能够有一个设置,使mysite.com将检索的文件(如index.html的,与他们更多的文件,文件夹等)的/var/www/html lab.mysite.com将检索GitLab.我听说你应该使用虚拟主机,但请记住,我仍然在最好的这些东西一个业余爱好者,因此,如果有人在这里是一种足以让一个短一步一步的指导,做这个,我很欣赏这一点.

注:我一直在使用之前,本指南安装GitLab,然而,这是Nginx的,所以我在想,如果我是用这个指南,但再加入到它,否则我会对此完全错误的.

rec*_*rse 7

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

假设您已根据默认安装说明安装了Gitlab,Nginx服务现在将由gitlab-ctl服务管理器(安装Gitlab时安装)进行管理.

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

gitlab-ctl stop nginx
Run Code Online (Sandbox Code Playgroud)

现在端口80是免费的,你可以启动Apache(不要忘记安装Apache,如果它还没有/指令用于RHEL系统 - 相应地修改Ubuntu等).假设您是root用户:

yum install -y httpd;
systemctl start httpd;
systemctl enable httpd;
Run Code Online (Sandbox Code Playgroud)

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

vi /etc/gitlab/gitlab.rb
Run Code Online (Sandbox Code Playgroud)

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

external_url 'http://git.yourdomain.com/'
Run Code Online (Sandbox Code Playgroud)

找:

# web_server['external_users'] = []
Run Code Online (Sandbox Code Playgroud)

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

web_server['external_users'] = ['apache']
Run Code Online (Sandbox Code Playgroud)

找:

# nginx['enable'] = true
Run Code Online (Sandbox Code Playgroud)

改成:

nginx['enable'] = false
Run Code Online (Sandbox Code Playgroud)

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

gitlab-ctl reconfigure

gitlab-ctl restart
Run Code Online (Sandbox Code Playgroud)

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

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

getent group
Run Code Online (Sandbox Code Playgroud)

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

usermod apache --append --groups gitlab-www
Run Code Online (Sandbox Code Playgroud)

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

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

vi /etc/httpd/conf.d/gitlab.conf
Run Code Online (Sandbox Code Playgroud)

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

<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>
Run Code Online (Sandbox Code Playgroud)

...现在重启Apache:

systemctl start httpd
Run Code Online (Sandbox Code Playgroud)

您可能遇到像selinux这样的问题 - 您可以将事情设置为允许进行调试.

setenforce 0
Run Code Online (Sandbox Code Playgroud)

我希望这可以帮助别人!