如何在 directadmin 服务器上安装 gitlab

how to install gitlab on a directadmin server

我有一个 VPS,上面有 directadmin 和其他几个网站,我想安装 gitlab 而不会损坏其他网站。目前已尝试,但它会出现在所有域中。 external_url 似乎被完全忽略了。

我花了一天的时间弄清楚如何去做,我将与其他人分享,希望对您有所帮助!

如果你像我一样是初学者,你应该知道这两件事:

1-所有配置都在/etc/gitlab/gitlab.rb

2- 每次你改变 gitlab.rb 你必须 运行 gitlab-ctl reconfiguregitlab-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'] = "gitlab@domain.tld"
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 中创建子域后,转到 Admin Level > Custom HTTPD Configurations 单击您的域并将以下文本粘贴到空白文本区域:(请注意,您应该将 gitlab.your-domain.tld 更改为您设置的任何内容对于 gitlab.rb 中的 external_url:

  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
  # 
  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 设置,而不会破坏您服务器上的其他站点。希望对您有所帮助!

使用 Pezhvak 的回答时,可能所有 CSS en JS 文件都没有加载。我通过更改 HTTPD conf 部分修复了该问题:

 #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]