У меня есть VPS с directadmin и несколькими другими сайтами, я хочу установить gitlab, не повреждая другие сайты. в настоящее время пробовал, но он будет отображаться на всех доменах. кажется, что external_url
полностью игнорируется.
как установить gitlab на сервер directadmin
Ответы (2)
Мне потребовался день, чтобы понять, как это сделать, и я поделюсь этим с другими, надеюсь, это поможет!
если вы новичок, как я, вы должны знать эти две вещи:
1- все конфигурации находятся в /etc/gitlab/gitlab.rb
2- каждый раз, когда вы меняете gitlab.rb, вы должны запускать gitlab-ctl reconfigure
и gitlab-ctl restart
хорошо... проблема в том, что gitlab по умолчанию поставляется с nginx, и это нарушит вашу настройку apache. чтобы это исправить.
1- откройте файл конфигурации gitlab.rb: nano /etc/gitlab/gitlab.rb
2- убедитесь, что ваш external_url настроен правильно, например: gitlab.your-domain.tld
3- найти и поставить nginx['enable'] = false
, по умолчанию он закомментирован, убрать # с начала строки, чтобы раскомментировать.
4- найдите и установите web_server['external_users'] = ['admin']
это очень важно, так как directadmin не использует пользователя apache по умолчанию «www-data»
5- найти и установить gitlab_workhorse['listen_network'] = "tcp"
6- и, наконец, установить gitlab_workhorse['listen_addr'] = "127.0.0.1:8181"
НЕОБЯЗАТЕЛЬНО для установки smtp-сервера создайте учетную запись электронной почты в своем directadmin, а затем установите ее, обновив следующие конфигурации:
gitlab_rails['smtp_enable'] = true
gitlab_rails['smtp_address'] = "mail.domain.tld"
gitlab_rails['smtp_port'] = 587
gitlab_rails['smtp_user_name'] = "[email protected]"
gitlab_rails['smtp_password'] = "email_password_here"
gitlab_rails['smtp_domain'] = "domain.tld"
gitlab_rails['smtp_authentication'] = "plain"
gitlab_rails['smtp_enable_starttls_auto'] = false
теперь сохраните файл и запустите gitlab-ctl reconfigure
, затем gitlab-ctl restart
, чтобы изменения вступили в силу.
теперь вы готовы к работе с gitlab, все, что вам нужно сделать, это создать поддомен, который вы использовали, например: gitlab для своего домена. после того, как вы создали поддомен в своем directadmin, перейдите на уровень администратора> Пользовательские конфигурации HTTPD, щелкните свой домен и вставьте следующий текст в пустую текстовую область: (обратите внимание, что вы должны изменить gitlab.your-domain.tld на то, что вы установили для external_url в gitlab.rb:
ServerName gitlab.your-domain.tld
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 />
Order deny,allow
Allow from all
#Allow forwarding to gitlab-workhorse
ProxyPassReverse http://127.0.0.1:8181
ProxyPassReverse http://gitlab.your-domain.tld/
</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
это оно! теперь вы сможете использовать настройки gitlab, не нарушая работу других сайтов на вашем сервере. Надеюсь, поможет!
При использовании ответа Пежвака возможно, что все файлы CSS en JS не загружаются. Я исправил это, изменив часть конфигурации HTTPD:
#Forward all requests to gitlab-workhorse except existing files like error documents
RewriteCond %{DOCUMENT_ROOT}/%{REQUEST_FILENAME} !-f [OR]
RewriteCond %{REQUEST_URI} ^/uploads/.* [OR]
RewriteCond %{REQUEST_URI} ^/assets/.*
RewriteRule .* http://127.0.0.1:8181%{REQUEST_URI} [P,QSA,NE]