X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/30d1623c0fe687acdef334c037c24752c0c61620..f8fdd0cbdf1de1464bc1fc7cc5e7660205edf56b:/doc/install/install-arv-git-httpd.html.textile.liquid diff --git a/doc/install/install-arv-git-httpd.html.textile.liquid b/doc/install/install-arv-git-httpd.html.textile.liquid index 9db92e57c7..1c31dc4d6e 100644 --- a/doc/install/install-arv-git-httpd.html.textile.liquid +++ b/doc/install/install-arv-git-httpd.html.textile.liquid @@ -34,20 +34,22 @@ DNS and network configuration should be set up so port 443 reaches your HTTPS pr h2. Generate an API token -On the API server, if you are using RVM: +Use the following command to generate an API token, changing *@webserver-user@* to the user of the web server process. This is typically *@www-data@* on Debian systems by default, other systems may use different defaults such the name of the web server software (for example, *@nginx@*). + +Using RVM:
gitserver:~$ cd /var/www/arvados-api/current
-gitserver:/var/www/arvados-api/current$ sudo -u www-data RAILS_ENV=production `which rvm-exec` default bundle exec ./script/create_superuser_token.rb
+gitserver:/var/www/arvados-api/current$ sudo -u webserver-user RAILS_ENV=production `which rvm-exec` default bundle exec ./script/create_superuser_token.rb
 zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz
 
-If you are not using RVM: +Not using RVM:
gitserver:~$ cd /var/www/arvados-api/current
-gitserver:/var/www/arvados-api/current$ sudo -u www-data RAILS_ENV=production bundle exec ./script/create_superuser_token.rb
+gitserver:/var/www/arvados-api/current$ sudo -u webserver-user RAILS_ENV=production bundle exec ./script/create_superuser_token.rb
 zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz
 
@@ -70,9 +72,11 @@ On Red Hat-based systems: +{% include 'install_git' %} + h2. Create a "git" user and a storage directory -Gitolite and some additional scripts will be installed in @/var/lib/arvados/git@, which means hosted repository data will be stored in @/var/lib/arvados/git/repositories@. If you choose to install gitolite in a different location, make sure to update the @git_repositories_dir@ entry in your API server's @config/application.yml@ file accordingly: for example, if you install gitolite at @/data/gitolite@ then your @git_repositories_dir@ will be @/data/gitolite/repositories@. +Gitolite and some additional scripts will be installed in @/var/lib/arvados/git@, which means hosted repository data will be stored in @/var/lib/arvados/git/repositories@. If you choose to install gitolite in a different location, make sure to update the @git_repositories_dir@ entry in your API server's @application.yml@ file accordingly: for example, if you install gitolite at @/data/gitolite@ then your @git_repositories_dir@ will be @/data/gitolite/repositories@. A new UNIX account called "git" will own the files. This makes git URLs look familiar to users (git@[...]:username/reponame.git). @@ -100,7 +104,7 @@ git@gitserver:~$ rm .ssh/authorized_keys h2. Install gitolite -Check "https://github.com/sitaramc/gitolite/tags":https://github.com/sitaramc/gitolite/tags for the latest stable version (_e.g.,_ @v3.6.3@). +Check "https://github.com/sitaramc/gitolite/tags":https://github.com/sitaramc/gitolite/tags for the latest stable version. This guide was tested with @v3.6.3@. _Versions below 3.0 are missing some features needed by Arvados, and should not be used._ Download and install the version you selected. @@ -121,6 +125,8 @@ WARNING: /var/lib/arvados/git/.ssh/authorized_keys missing; creating a new one +_If this didn't go well, more detail about installing gitolite, and information about how it works, can be found on the "gitolite home page":http://gitolite.com/._ + Clone the gitolite-admin repository. The arvados-git-sync.rb script works by editing the files in this working directory and pushing them to gitolite. Here we make sure "git push" won't produce any errors or warnings. @@ -163,6 +169,13 @@ Add the following lines inside the section that begins @%RC = (@: +Inside that section, adjust the 'UMASK' setting to @022@, to ensure the API server has permission to read repositories: + + +
    UMASK => 022,
+
+
+ Uncomment the 'Alias' line in the section that begins @ENABLE => [@: @@ -208,10 +221,10 @@ Otherwise, create @/etc/cron.d/arvados-git-sync@ with the following content: h3. Configure the API server to advertise the correct SSH URLs -In your API server's @config/application.yml@ file, add the following entry: +In your API server's @application.yml@ file, add the following entry: -
git_repo_ssh_base: git@git.uuid_prefix.your.domain:
+
git_repo_ssh_base: "git@git.uuid_prefix.your.domain:"
 
@@ -282,19 +295,34 @@ EOF #!/bin/sh export ARVADOS_API_HOST=uuid_prefix.your.domain export GITOLITE_HTTP_HOME=/var/lib/arvados/git +export GL_BYPASS_ACCESS_CHECKS=1 export PATH="$PATH:/var/lib/arvados/git/bin" -exec chpst -u git:git arvados-git-httpd -address=:9001 -git-command="$(which git)" -repo-root=/var/lib/arvados/git/repositories 2>&1 +exec chpst -u git:git arvados-git-httpd -address=:9001 -git-command=/var/lib/arvados/git/gitolite/src/gitolite-shell -repo-root=/var/lib/arvados/git/repositories 2>&1 EOF /etc/sv/arvados-git-httpd$ sudo chmod +x run log/run
+If you are using a different daemon supervisor, or if you want to test the daemon in a terminal window, an equivalent shell command to run arvados-git-httpd is: + + +
sudo -u git \
+  ARVADOS_API_HOST=uuid_prefix.your.domain \
+  GITOLITE_HTTP_HOME=/var/lib/arvados/git \
+  GL_BYPASS_ACCESS_CHECKS=1 \
+  PATH="$PATH:/var/lib/arvados/git/bin" \
+  arvados-git-httpd -address=:9001 -git-command=/var/lib/arvados/git/gitolite/src/gitolite-shell -repo-root=/var/lib/arvados/git/repositories 2>&1
+
+
+ h3. Set up a reverse proxy to provide SSL service The arvados-git-httpd service will be accessible from anywhere on the internet, so we recommend using SSL. This is best achieved by putting a reverse proxy with SSL support in front of arvados-git-httpd, running on port 443 and passing requests to @arvados-git-httpd@ on port 9001 (or whichever port you used in your run script). +Add the following configuration to the @http@ section of your Nginx configuration: +

 upstream arvados-git-httpd {
@@ -303,6 +331,8 @@ upstream arvados-git-httpd {
 server {
   listen                  [your public IP address]:443 ssl;
   server_name             git.uuid_prefix.your.domain;
+  proxy_connect_timeout   90s;
+  proxy_read_timeout      300s;
 
   ssl on;
   ssl_certificate         /YOUR/PATH/TO/cert.pem;
@@ -310,15 +340,6 @@ server {
 
   location  / {
     proxy_pass            http://arvados-git-httpd;
-    proxy_redirect        off;
-    proxy_connect_timeout 90s;
-    proxy_read_timeout    300s;
-
-    proxy_set_header      X-Forwarded-Proto https;
-    proxy_set_header      Host $http_host;
-    proxy_set_header      X-External-Client $external_client;
-    proxy_set_header      X-Real-IP $remote_addr;
-    proxy_set_header      X-Forwarded-For $proxy_add_x_forwarded_for;
   }
 }
 
@@ -326,7 +347,7 @@ server { h3. Configure the API server to advertise the correct HTTPS URLs -In your API server's @config/application.yml@ file, add the following entry: +In your API server's @application.yml@ file, add the following entry:
git_repo_http_base: https://git.uuid_prefix.your.domain/
@@ -335,9 +356,9 @@ In your API server's @config/application.yml@ file, add the following entry:
 
 Make sure to include the trailing slash.
 
-h2. Restart nginx
+h2. Restart Nginx
 
-Restart nginx to make the nginx and API server configuration changes take effect.
+Restart Nginx to make the Nginx and API server configuration changes take effect.
 
 
 
gitserver:~$ sudo nginx -s reload