2015-10-31 3 views
0

фон

Ubuntu 15,10Gitlab 8.0.3 с Apache2/Nginx

Apache/2.4.10 (Ubuntu)

зависимостей модуля все Enabled:

  • mod_rewrite
  • mod_proxy
  • mod_proxy_http

GitLab Community Edition 8.0.3

GitLab DOCROOT:/OPT/gitlab/встроенный/сервис/gitlab рельсы/общественные

установить GitLab таким образом: https://about.gitlab.com/downloads/#ubuntu1404

Проблема

На моем сервере у меня есть сайт, работающий с apache2 (exampleplesite.com).

У меня GitLab работает с комплектного Nginx (exemple-gitlab.com)

У меня 1 сервер, 1 IP, а также несколько FQDN.

Таким образом, все мои доменные имена указывают на GitLab.

Таким образом, пример: gitLab указывается на GitLab по желанию, но exampleplesite.com указывает на GitLab тоже, а также на все остальные FQDN.

Пути решения

Я думаю, что я должен (и я пробовал), чтобы:

  • Отключить комплектный Nginx и настроить gitlab с apache2 (трудно сделать для меня)
  • настроить в комплекте Nginx в качестве обратного прокси apache2 (трудно сделать для меня)

MAJ: в самом деле проблема Apache и Nginx в комплекте-работать на том же IP с тем же портом (80). И я не хочу запускать сайт на порту 81 или что-то еще, только порт 80.

Я предпочитаю использовать apache2 для всех моих веб-сайтов PHP, и я не против, если gitlab использует apache2 или в комплекте nginx, все, что я хотите использовать все мое полное доменное имя для каждого из моих веб-сайтов, а не все мои FQDN redirectinf для gitlab.

Понимание

Я не понимаю, как омнибус или рельсы или обратного прокси работу.

Я попытался отключить в комплекте Nginx в /etc/gitlab/gitlab.rb

nginx['enable'] = false 
# For GitLab CI, use the following: 
ci_nginx['enable'] = false 

добавить www-data в gitlab-www группу и изменить:

web_server['external_users'] = ['www-data'] 

и добавление модифицированного vhost.conf к apache2 Я беру это из https://gitlab.com/gitlab-org/gitlab-recipes/blob/master/web-server/apache/gitlab-apache24.conf

<VirtualHost *:80> 
    ServerName exemple-gitlab.com 
    ServerSignature Off 
    ProxyPreserveHost On 

    AllowEncodedSlashes NoDecode 

    <Location /> 
    Require all granted 

    #Allow forwarding to gitlab-git-http-server 
    ProxyPassReverse http://127.0.0.1:8181 
    #Allow forwarding to GitLab Rails app (Unicorn) 
    ProxyPassReverse http://127.0.0.1:8080 
    ProxyPassReverse http://exemple-gitlab.com/ 
    </Location> 

    #apache equivalent of nginx try files 
    RewriteEngine on 
    #Forward these requests to gitlab-git-http-server 
    RewriteCond %{REQUEST_URI} ^/[\w\.-]+/[\w\.-]+/repository/archive.* [OR] 
    RewriteCond %{REQUEST_URI} ^/api/v3/projects/.*/repository/archive.* [OR] 
    RewriteCond %{REQUEST_URI} ^/[\w\.-]+/[\w\.-]+/(info/refs|git-upload-pack|git-receive-pack)$ 
    RewriteRule .* http://127.0.0.1:8181%{REQUEST_URI} [P,QSA] 

    #Forward any other requests to GitLab Rails app (Unicorn) 
    RewriteCond %{DOCUMENT_ROOT}/%{REQUEST_FILENAME} !-f [OR] 
    RewriteCond %{REQUEST_URI} ^/uploads 
    RewriteRule .* http://127.0.0.1:8080%{REQUEST_URI} [P,QSA,NE] 

    # needed for downloading attachments 
    /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 503 /deploy.html 

    # /var/log/apache2. 
    LogFormat "%{X-Forwarded-For}i %l %u %t \"%r\" %>s %b" common_forwarded 
    ErrorLog /var/log/apache2/logs/gitlab.example.com_error.log 
    CustomLog /var/log/apache2/logs/gitlab.example.com_forwarded.log common_forwarded 
    CustomLog /var/log/apache2/logs/gitlab.example.com_access.log combined env=!dontlog 
    CustomLog /var/log/apache2/logs/gitlab.example.com.log combined 

    </VirtualHost> 

Но это конф ошибка мои apache2:

~# systemctl status apache2.service 
● apache2.service - LSB: Apache2 web server 
    Loaded: loaded (/etc/init.d/apache2) 
    Active: failed (Result: exit-code) since mar. 2015-11-10 15:41:08 CET; 1min 9s ago 
    Docs: man:systemd-sysv-generator(8) 
    Process: 18315 ExecStop=/etc/init.d/apache2 stop (code=exited, status=0/SUCCESS) 
    Process: 18342 ExecStart=/etc/init.d/apache2 start (code=exited, status=1/FAILURE) 

nov. 10 15:41:08 vpsxxx.ovh.net apache2[18342]: * The apache2 configtest failed. 
nov. 10 15:41:08 vpsxxx.ovh.net apache2[18342]: Output of config test was: 
nov. 10 15:41:08 vpsxxx.ovh.net apache2[18342]: (2)No such file or directory: AH02291: Cannot access di...f:10 
nov. 10 15:41:08 vpsxxx.ovh.net apache2[18342]: AH00014: Configuration check failed 
nov. 10 15:41:08 vpsxxx.ovh.net apache2[18342]: Action 'configtest' failed. 
nov. 10 15:41:08 vpsxxx.ovh.net apache2[18342]: The Apache error log may have more information. 
nov. 10 15:41:08 vpsxxx.ovh.net systemd[1]: apache2.service: Control process exited, code=exited status=1 
nov. 10 15:41:08 vpsxxx.ovh.net systemd[1]: Failed to start LSB: Apache2 web server. 
nov. 10 15:41:08 vpsxxx.ovh.net systemd[1]: apache2.service: Unit entered failed state. 
nov. 10 15:41:08 vpsxxx.ovh.net systemd[1]: apache2.service: Failed with result 'exit-code'. 
Hint: Some lines were ellipsized, use -l to show in full. 
+0

это, вероятно, лучше спросил на ServerFault .. Если вы более комфортно с апача, я бы, вероятно, сделать что-то подобное, сделать gitlab.domain.com виртуальный хост, а затем используйте прокси-сервер apache, чтобы отправить его в nginx, запущенном на другом порту. (поскольку это только 1 vhost), но то же самое можно сделать с nginx. Но запрос на serverfault может дать вам лучшие ответы) – Doon

ответ

0

К сожалению, я разместил его на ServerFault и нашел решение:

https://serverfault.com/questions/735270/gitlab-8-0-3-with-apache2-nginx/735273#735273

я обнаружил, почему apache2 разбился, комментируя каждую строку (журналы Damm были бесполезно).

Я просто должен был создать /var/log/apache2/logs

ErrorLog /var/log/apache2/logs/gitlab.example.com_error.log 
    CustomLog /var/log/apache2/logs/gitlab.example.com_forwarded.log common_forwarded 
    CustomLog /var/log/apache2/logs/gitlab.example.com_access.log combined env=!dontlog 
    CustomLog /var/log/apache2/logs/gitlab.example.com.log combined 

apache2 был сбой, потому что папка/каталог пропускал ...

Так что теперь gitlab работает на это домен и мой Друпал тоже так:

  • gitlab.com:80
  • drupal.com:80

Exactrly как я хотел :)

0

Самый простой способ будет иметь омнибус установить и настроить Nginx на адрес замыкания на себя, но затем использовать апача перед как обратный прокси-сервер.

Просто включите Nginx и добавьте следующие строки в /etc/gitlab/gitlab.rb:

nginx['listen_addresses'] = ['127.0.1.1'] 

Затем перенастроить установку gitlab.

Затем в конфигурации Apache сайта, использовать что-то похожее на это:

<VirtualHost *:80> 
    ServerName exemple-gitlab.com 
    ProxyPreserveHost On 

    ProxyPass/http://127.0.1.1/ 
    ProxyPassReverse/http://127.0.1.1/ 
</VirtualHost> 

Позволяя омнибус для управления конфигурацией Nginx, вам не придется иметь дело с изменения конфигурации веб-сервера каждый раз, когда они переместите службу от работников единорога на сервер Goit git-git-http-server. Apache без проблем запросит прокси-сервер для nginx (в loopback), который будет автоматически обновляться омнибусом во время обновлений.

Смежные вопросы