Как я могу заставить Gitlab 6.5 отображать свои значки под прокси-сервером Apache 2.4?

Я не могу исправить значки на Gitlab, проксированные Apache 2.4. Моя ошибка может быть связана с тем, что я не использую пассажира (пассажир предоставил свой собственный набор проблем, которые были намного глубже), но я предпринял все шаги, чтобы запустить его под прокси-сервером /gitlab . Я также побежал:

sudo -u git -H bundle exec rake assets:precompile RAILS_ENV=production RAILS_RELATIVE_URL_ROOT=/gitlab

Я также перезапустил Apache. Без улучшения. Значки все еще отсутствовали (или я должен сказать, что файл шрифта woff возвращает status 200 в браузер, но с размером 0). Это Гитлаб 6.5. В моем файле Apache SSL sites-enabled conf это то, что обеспечивает маршрут SSL в мире для нашего Gitlab:

<Proxy *>
      Require all granted
</Proxy>

<Location ~ /(gitlab|assets)>
    RequestHeader set X_FORWARDED_PROTO 'https'
    SetEnv RAILS_RELATIVE_URL_ROOT "/gitlab"
    Require all granted
    Options -Multiviews
    # apache equivalent of nginx try files
    # http://serverfault.com/questions/290784/what-is-apaches-equivalent-of-nginxs-try-files
    # https://stackoverflow.com/questions/10954516/apache2-proxypass-for-rails-app-gitlab
    RewriteCond %{DOCUMENT_ROOT}/%{REQUEST_FILENAME} !-f
    RewriteRule .* http://127.0.0.1:8085/%{REQUEST_URI} [P,QSA]

    # needed for downloading attachments but does not work under Location directive
    #DocumentRoot /home/git/gitlab/public
</Location>

ProxyPass               /gitlab/ http://127.0.0.1:8085/gitlab/
ProxyPassReverse        /gitlab/ http://127.0.0.1:8085/gitlab/
ProxyPass               /gitlab http://127.0.0.1:8085/gitlab
ProxyPassReverse        /gitlab http://127.0.0.1:8085/gitlab
# SOme of the CSS assets were not being generated with "/gitlab", so I proxy those too.
ProxyPass               /assets http://127.0.0.1:8085/gitlab/assets
ProxyPassReverse        /assets http://127.0.0.1:8085/gitlab/assets

Опять же, большая часть работает нормально. В браузер возвращаются только ресурсы шрифта с нулевым размером. Должен ли я обновить директиву местоположения до каталога?

Примечание: gitlab - замена значков прямоугольниками не помогла. И да, на моем сервере есть другие сайты с портом 443, поэтому я не могу просто использовать эту конфигурацию Apache на своем собственном порту/домене, если мне это не нужно. Вероятно, мне просто нужна помощь в понимании Apache 2.4. Я что-то упустил в своей конфигурации Apache?

Использованы ресурсы: https://github.com/gitlabhq/gitlab-recipes/commit/be95bd4f9bd3244641a4c7e55eb75fcc29129ffd, https://github.com/gitlabhq/gitlabhq/issues/2365 , https://github.com/gitlabhq/gitlab-recipes/commit/c6c22b4fb68bbb6efb547cce6605dea4344ba9fe

Также не удалось заменить директиву Location: попробовал это, но не так успешно:

Alias ^/(gitlab|assets) /home/git/gitlab/public
<Directory /home/git/gitlab/public>`
    RequestHeader set X_FORWARDED_PROTO 'https'
    SetEnv RAILS_RELATIVE_URL_ROOT "/gitlab"
    Require all granted
    Options -Multiviews
    # https://stackoverflow.com/questions/10954516/apache2-proxypass-for-rails-app-gitlab
    RewriteCond %{DOCUMENT_ROOT}/%{REQUEST_FILENAME} !-f
    RewriteRule .* http://127.0.0.1:8085/%{REQUEST_URI} [P,QSA]
</Directory>

person m1st0    schedule 14.02.2014    source источник


Ответы (2)


Поскольку он находится под относительным корнем, вам все равно нужно будет выполнить следующее, как указано выше, чтобы проверить правильность сопоставления ресурсов (включая значки и URL-адреса CSS):

sudo -u git -H bundle exec rake assets:precompile RAILS_ENV=production RAILS_RELATIVE_URL_ROOT=/gitlab

Для пользователей, не являющихся пользователями относительных URL-адресов, оставьте дополнительную часть относительного URL-адреса.

sudo -u git -H bundle exec rake assets:precompile RAILS_ENV=production

Вы также можете перезапустить, как отметил @LpLrich:

sudo service gitlab restart

Вместо этого для некоторых старых установок Linux используйте:

sudo /etc/init.d/gitlab restart

Затем обновите браузер.

Тем не менее, ни один из вышеперечисленных шагов не сработал в моей системе, потому что, насколько я могу судить, несовершенная настройка Apache, которую я исправил ниже, включая ее на случай, если вы обнаружите ту же проблему правильного исправления Gitlab, но обнаружите, что конечный результат не работает в браузер. Я изменился, чтобы больше не использовать относительный корень URL, но это не имеет большого значения. Это также должно помочь Apache исправить описанную выше проблему после завершения шагов gitlab. Извините, ProxyPassReverse — это главное изменение, которое вы должны заметить в настройке Apache вопроса:

<IfModule mod_ssl.c>
<VirtualHost *:443>
  Servername gitlab.my_domain.com
  ServerAdmin my_admin@my_domain.com

  SSLCertificateFile /etc/apache2/ssl.crt/gitlab_my_domain.crt
  SSLCertificateKeyFile /etc/apache2/ssl.crt/gitlab_my_domain_private.key
  SSLCACertificateFile /etc/apache2/ssl.crt/gitlab.ca-bundle

  ##### All the other Apache SSL setup skipped here for StackOverflow ####

  ProxyPreserveHost On

  <Location />
    # New authorization commands for apache 2.4 and up
    # http://httpd.apache.org/docs/2.4/upgrading.html#access
    Require all granted

    # For relative URL root "host:your_gitlab_port/relative_root"
    #ProxyPassReverse http://127.0.0.1:8080/gitlab
    #ProxyPassReverse https://gitlab.my_domain.com/gitlab

    # For non-relative URL root
    ProxyPassReverse http://127.0.0.1:8080
    ProxyPassReverse https://gitlab.my_domain.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
  RewriteCond %{DOCUMENT_ROOT}/%{REQUEST_FILENAME} !-f
  RewriteRule .* http://127.0.0.1:8080%{REQUEST_URI} [P,QSA]
  RequestHeader set X_FORWARDED_PROTO 'https'

  # 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      /var/log/apache2/gitlab-ssl_error.log
  CustomLog /var/log/apache2/gitlab-ssl_forwarded.log common_forwarded
  CustomLog /var/log/apache2/gitlab-ssl_access.log combined env=!dontlog
  CustomLog /var/log/apache2/gitlab-ssl.log combined
</VirtualHost>
</IfModule>

(из https://github.com/gitlabhq/gitlab-recipes/blob/master/web-server/apache/gitlab-ssl-apache2.4.conf)

person m1st0    schedule 13.03.2014
comment
Я сейчас на Gitlab 6.6.5 с этим исправлением. - person m1st0; 14.03.2014

Это может помочь вам,

https://github.com/gitlabhq/gitlabhq/issues/3306#issuecomment-15971720

По сути, это говорит о том, чтобы запустить rake assets:clean, а затем assets:precompile, а затем service gitlab restart.

Я предварительно скомпилировал свои активы, проверил папку public/assets и увидел, что они существуют, но некоторые значки не отображались, поэтому я очистил их, снова прекомпилировал и перезапустил, после чего они начали появляться.

Бежать

sudo -u git -H bundle exec rake assets:clean RAILS_ENV=production

Затем

sudo -u git -H bundle exec rake assets:precompile RAILS_ENV=production RAILS_RELATIVE_URL_ROOT=/gitlab

И обнови страницу, если не работает попробуй

sudo service gitlab restart

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

person LpLrich    schedule 13.03.2014
comment
Пробовал каждую из этих команд, как указано выше, и перезапускал несколько раз. Я нашел решение в ответе ниже. - person m1st0; 14.03.2014