Nano Hash - криптовалюты, майнинг, программирование

GitLab 7.2.1 с сервером Apache вместо Nginx

Я установил GitLab 7.2.1 с пакетом .deb с GitLab.org для Debian 7 на виртуальный сервер, к которому у меня есть root-доступ. На этом виртуальном сервере я уже установил Apache версии 2.2.22 и не хочу использовать Ngnix для GitLab.

Теперь я понятия не имею, где находятся общедоступные папки GitLab, что я должен делать и на что я должен обратить внимание.

Итак, мой вопрос: как мне настроить свой виртуальный хост для apache или что мне нужно сделать, чтобы я мог использовать поддомен, такой как «gitlab.example.com», на моем веб-сервере apache?

11.09.2014

Ответы:


1

Имея в виду две вещи:

  1. Unicorn прослушивает 8080 (вы можете проверить это с помощью sudo netstat -pant | grep unicorn)
  2. Ваш корень документа /opt/gitlab/embedded/service/gitlab-rails/public

Вы можете создать новый виртуальный хост для gitlab в apache со следующей конфигурацией:

<VirtualHost *:80>
  ServerName gitlab.example.com
  ServerSignature Off

  ProxyPreserveHost On

  <Location />
    Order deny,allow
    Allow from all

    ProxyPassReverse http://127.0.0.1:8080
    ProxyPassReverse http://gitlab.example.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

</VirtualHost>
12.09.2014
  • Вам также может понадобиться sudo a2enmod proxy_http 08.04.2015
  • Если вы получаете ошибки разрешения, такие как У вас нет разрешения на доступ к /assets/logo-white-0b53cd4ea06811d79b3acd486384e047.png на этом сервере. то вам нужно Требовать все предоставленные в ‹Местоположение› 08.04.2015
  • мое имя процесса единорога — config.ru, поэтому я предлагаю использовать netstat -pant | группа 8080 12.08.2015
  • @themadmax, вы можете использовать netstat -pant и grep для 8080, если unicorn работает на этом конкретном порту. 14.08.2015
  • Как заставить gitlab-ce не запускать nginx? Я обновил gitlab, и он захватил 80-й порт с помощью nginx, что предотвратило запуск моего существующего экземпляра Apache. gitlab на самом деле не хочет делить сервер с существующими сервисами. 10.02.2016
  • @arclight это действительно зависит от вашей ОС. Это может быть так же просто, как отключить запуск nginx при запуске или остановить его вручную: service nginx stop 13.02.2016
  • Ты не понимаешь. При установке gitlab по умолчанию устанавливается и настраивается nginx на порту 80, что мешает существующему экземпляру Apache на порту 80. Я знаю, как отключить nginx; Я просто не хочу, чтобы nginx устанавливался или настраивался вообще как часть установки gitlab. В документах нет предупреждения о том, что установка gitlab полностью несовместима с традиционными установками с одним веб-сервером и несколькими приложениями и что предполагается, что она будет владеть всей коробкой. Поведение неожиданное и грубое. 09.03.2016
  • @arclight, если вы устанавливаете из исходного кода, вы можете выбрать предпочитаемый веб-сервер, но я думаю, что вы можете сделать это, даже если вы решили использовать комплексный пакет. Может быть, вы могли бы просто удалить nginx и создать новый виртуальный хост в apache :) 14.03.2016
  • вам может понадобиться sudo a2enmod rewrite 21.08.2016
  • Я изменил /etc/apache2/sites-available/default-ssl.conf и добавил псевдоним /gitlab /var/www/gitlab с директивой каталога. Когда я пытаюсь получить к нему доступ через example.com/gitlab, он не работает / не загружает домашнюю страницу, но example.com/gitlab/deploy.html работает хорошо. Как получить доступ к первой странице Gitlab? 09.12.2016
  • Для apache24 Order deny,allow и Allow from all необходимо заменить на Require all granted 11.03.2017
  • @arclight Я знаю, что это произошло задним числом, но я застрял на одном и том же на день. Вы должны отключить его в настройках gitlab, gitlab.rb Я сделал пару попыток, но найдите строку nginx['enable'] и установите для нее значение false и удалите начальный хэштег. 08.05.2017
  • @mark-carpenter-jr Это хорошо, но вот все шаги из руководства: docs.gitlab.com/omnibus/settings/ (для omnibus-gitlab). Однако даже после этого мне понадобилось gitlab-ctl restart И перезапустить апач, после чего юникорн начал активничать на порту 8080 и апач сделал прокси, как написал @bogdan-t для виртуального хоста. Однако я думаю, что лучше иметь gitlab на отдельном сервере, рекомендуется иметь 2 ЦП и 4 ГБ ОЗУ - docs.gitlab.com/ee/install/requirements.html 15.08.2019
  • @ frank_108 эти документы сейчас намного полнее, чем более 2 лет назад. Хотя хорошо выглядишь. В настоящее время я нахожусь в процессе миграции gitlab на докер. Гораздо проще и проще прокси. 15.08.2019

  • 2

    Я следил за этой статьей http://eserdeniz.fr/articles/view/4/installer-gitlab-sous-debian-7-avec-nginx-et-mysql, и это сработало, но мне нужен был apache вместо nginx.

    После больших проблем с настройкой apache2 с помощью gitlab-ce 7.9.0.rc3 я просмотрел документацию apache относительно директив ProxyPass и ProxyPassReverse.

    Я решил свои проблемы с этим vhost:

        <VirtualHost *:80>
                ServerName gitlab.me
    
                # those options below are recommanded by apache, dealing with the simple Proxy we need for gitlab
                ProxyRequests Off
                ProxyPreserveHost On
                AllowEncodedSlashes NoDecode
    
                # here we don't want to proxify the requests for the existing assets in gitlab's public directory
                ProxyPassMatch ^(/[^/]+\.(html|png|ico|css|txt))$ !
                ProxyPass /assets !
    
                # here we "redirect" the requests for http://gitlab.me/ to http://127.0.0.1:8080/
                ProxyPass / http://127.0.0.1:8080/
    
                # here we "rewrite" the redirections form unicorn for http://127.0.0.1:8080/ into http://gitlab.me/
                ProxyPassReverse / http://127.0.0.1:8080/
    
                # And of course the DocumentRoot to handle the assets requests
                DocumentRoot /home/git/gitlab/public/
    
                # In the last versions of apache, there is a deny,allow default order so we put those two sections to prevent 'client denied by server configuration' 403 error
    
                <Directory /home/git/gitlab/public/>
                        # apache 2.2
                        Order allow,deny
                        Allow from all
    
                        # apache 2.4
                        Require all granted
                </Directory>
    
                <Location />
                        # apache 2.2
                        Order allow,deny
                        Allow from all
    
                        # apache 2.4
                        Require all granted
                </Location>
        </VirtualHost>
    

    Теперь это пылает быстро !!

    Надеюсь, это поможет!

    21.03.2015

    3

    В Debian GNU/Linux 8.4 (jessie) с версией Omnibus 8.5.0 (apt-get):

    Конфигурация GitLab

    # cat /etc/gitlab/gitlab.rb | grep -v '^$\|^\s*\#'
    external_url 'http://gitlab.example.fr'
    gitlab_workhorse['enable'] = true
    gitlab_workhorse['listen_network'] = "tcp"
    gitlab_workhorse['listen_addr'] = "127.0.0.1:8181"
    web_server['external_users'] = ['www-data']
    nginx['enable'] = false
    

    Конфигурация Apache2

    # cat /etc/apache2/sites-enabled/gitlab.conf  | grep -v '^$\|^\s*\#'
    <VirtualHost *:80>
      ServerName gitlab.example.fr
      ServerSignature Off
      ProxyPreserveHost On
      AllowEncodedSlashes NoDecode
      <Location />
        Require all granted
        ProxyPassReverse http://127.0.0.1:8181
        ProxyPassReverse http://gitlab.example.fr/
      </Location>
      RewriteEngine on
      RewriteCond %{REQUEST_URI} ^/api/v3/.*
      RewriteRule .* http://127.0.0.1:8181%{REQUEST_URI} [P,QSA,NE]
      RewriteCond %{DOCUMENT_ROOT}/%{REQUEST_FILENAME} !-f [OR]
      RewriteCond %{REQUEST_URI} ^/uploads/.*
      RewriteRule .* http://127.0.0.1:8181%{REQUEST_URI} [P,QSA]
      DocumentRoot /opt/gitlab/embedded/service/gitlab-rails/public
      ErrorDocument 404 /404.html
      ErrorDocument 422 /422.html
      ErrorDocument 500 /500.html
      ErrorDocument 503 /deploy.html
      LogFormat "%{X-Forwarded-For}i %l %u %t \"%r\" %>s %b" common_forwarded
      ErrorLog  /var/log/apache2/gitlab_error.log
      CustomLog /var/log/apache2/gitlab_forwarded.log common_forwarded
      CustomLog /var/log/apache2/gitlab_access.log combined env=!dontlog
      CustomLog /var/log/apache2/gitlab.log combined
    </VirtualHost>
    

    Выход Netstat

    # netstat -pant
    Active Internet connections (servers and established)
    Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
    tcp        0      0 127.0.0.1:5432          0.0.0.0:*               LISTEN      11849/postgres
    tcp        0      0 127.0.0.1:8080          0.0.0.0:*               LISTEN      23736/config.ru
    tcp        0      0 127.0.0.1:8181          0.0.0.0:*               LISTEN      26061/gitlab-workho
    

    Источник

    https://gitlab.com/gitlab-org/gitlab-recipes/blob/master/веб-сервер/apache/gitlab-omnibus-apache24.conf

    http://doc.gitlab.com/omnibus/settings/nginx.html#using-a-non-bundled-web-server

    06.04.2016

    4

    Если у вас есть проблема с доступом к HTTP git, посмотрите эту конфигурацию:

    # cat /etc/gitlab/gitlab.rb | grep -v '^$\|^\s*\#'
    external_url 'http://gitlab.example.fr'
    web_server['external_users'] = ['www-data']
    nginx['enable'] = false
    ci_nginx['enable'] = false
    gitlab_git_http_server['listen_network'] = "tcp"
    gitlab_git_http_server['listen_addr'] = "localhost:8282"
    

    и конфигурация apache2:

    # cat /etc/apache2/sites-enabled/gitlab
    <VirtualHost *:80>
            ServerName gitlab.example.fr
            ProxyRequests Off
            ServerSignature Off
            ProxyPreserveHost On
            AllowEncodedSlashes NoDecode
            ProxyPassMatch ^(/[^/]+\.(html|png|ico|css|txt))$ !
            ProxyPass /assets !
            ProxyPass / http://127.0.0.1:8080/
            ProxyPassReverse / http://127.0.0.1:8080/
            RewriteEngine on
            RewriteCond %{DOCUMENT_ROOT}/%{REQUEST_FILENAME} !-f
            RewriteRule /[-\/\w\.]+\.git\/ http://127.0.0.1:8282%{REQUEST_URI} [P,QSA,L]
            DocumentRoot /opt/gitlab/embedded/service/gitlab-rails/public
                <Directory /opt/gitlab/embedded/service/gitlab-rails/public/>
                        Order allow,deny
                        Allow from all
                </Directory>
                <Location />
                        Order allow,deny
                        Allow from all
                </Location>
    </VirtualHost>
    

    Применить изменения:

    # gitlab-ctl reconfigure
    # service apache2 reload
    

    Из https://gitlab.com/gitlab-org/gitlab-ce/issues/2669#note_2176671

    30.09.2015

    5

    Для недавних путешественников с GitLab 10.X.X посмотрите этот репозиторий. Там вы можете найти файлы конфигурации Apache2, а также инструкции по запуску GitLab исключительно с отключенными Apache2 и NGINX.

    07.11.2017

    6

    Установка из исходников. гитлаб 7.4.5

    Unicorn слушает 9095. Apache 2.2.9, и я не использую https.

    System information
    System:         CentOS 6.7
    Current User:   git
    Using RVM:      no
    Ruby Version:   2.1.2p95
    Gem Version:    2.2.2
    Bundler Version:1.11.2
    Rake Version:   10.3.2
    Sidekiq Version:2.17.0
    
    GitLab information
    Version:        7.4.5
    Revision:       19d572e
    Directory:      /home/git/gitlab
    DB Adapter:     mysql2
    URL:            http://gitlab.example.com
    HTTP Clone URL: http://gitlab.example.com/some-project.git
    SSH Clone URL:  [email protected]:some-project.git
    Using LDAP:     no
    Using Omniauth: no
    
    GitLab Shell
    Version:        2.0.1
    Repositories:   /home/git/repositories/
    Hooks:          /home/git/gitlab-shell/hooks/
    Git:            /usr/bin/git
    

    Измените конфигурационный файл apache 2.2 у меня работает.

    Еще один старый файл конфигурации для gitlab 6.0 — здесь, который также работает для меня.

    #This configuration has been tested on GitLab 8.0.0
    #Note this config assumes unicorn is listening on default port 8080 and gitlab-git-http-server is listening on port 8181.
    #To allow gitlab-git-http-server to listen on port 8181, edit or create /etc/default/gitlab and change or add the following:
    #gitlab_git_http_server_options="-listenUmask 0 -listenNetwork tcp -listenAddr localhost:8181 -authBackend http://127.0.0.1:8080"
    
    #Module dependencies
    #  mod_rewrite
    #  mod_proxy
    #  mod_proxy_http
    # HTTP Configuration
    <VirtualHost *:80>
      ServerName gitlab.example.com
      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
    
        # 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 />
            #Require all granted
            Order deny,allow
            Allow from all
    
            #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:9095
            ProxyPassReverse http://gitlab.example.com/
        </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 these requests to gitlab-git-http-server
      #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:9095%{REQUEST_URI} [P,QSA,NE]
    
      # needed for downloading attachments
      DocumentRoot /home/git/gitlab/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
    
      LogFormat "%{X-Forwarded-For}i %l %u %t \"%r\" %>s %b" common_forwarded
      ErrorLog  logs/gitlab.example.com_error.log
      CustomLog logs/gitlab.example.com_forwarded.log common_forwarded
      CustomLog logs/gitlab.example.com_access.log combined env=!dontlog
      CustomLog logs/gitlab.example.com.log combined
    
    </VirtualHost>
    

    Надежда полезна для тех, кто устанавливает из исходного кода старую версию gitlab.

    08.03.2016
  • Спасибо за самые полезные ссылки. Это помогло мне переписать правила Apache для правильного проксирования как для единорога, так и для рабочей лошадки. 15.11.2018

  • 7

    Я просто трачу полдня на то, чтобы понять, почему gitlab выдает мне ошибку 422 и жалуется на токены CSRF в логах gitlab-rails production.log.

    Оказывается, мне пришлось добавить это в конфигурацию apache:

    RequestHeader set X-Forwarded-Ssl on
    

    В моем случае gitlab был установлен из пакета deb, а Apache работает на HTTPS.

    19.09.2018

    8

    Используя ответ @pincoded, я смог запустить GitLab, но при внесении изменений я всегда получал ошибку 500.

    Затем я использовал официальную конфигурацию для apache, предоставленную GitLab в ответе @themadmax. Проблема здесь в том, что сервер никогда не был доступен и через некоторое время выдавал ошибку 502.

    Мое решение: использование официальное решение от GitLab (будьте осторожны, не забудьте выбрать конфигурацию SSL в этой ссылке, если вы запускаете только GitLab SSL), НО после эта запись на форуме Мне пришлось снова включить nginx.

    В итоге мой конфиг выглядел так:

    vhost:

    <VirtualHost *:80>
      ServerName YOUR_SERVER_FQDN
      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 http://YOUR_SERVER_FQDN/
      </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
    
    </VirtualHost>
    

    gitlab.ru:

    # nginx['enable'] = false # this defaults to true
    gitlab_workhorse['enable'] = true
    gitlab_workhorse['listen_network'] = "tcp"
    gitlab_workhorse['listen_addr'] = "127.0.0.1:8181"
    
    16.07.2017
    Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..