6918: Fix server_name in example nginx config. Remove client_body_buffer_size.
[arvados.git] / doc / install / install-arv-git-httpd.html.textile.liquid
index 6f80be8fd07ccac8c90b354452cd5b28a46cd6a0..7279670b83a9bf7e2a2e79dd3d47a354fa1ea2f8 100644 (file)
@@ -72,7 +72,7 @@ On Red Hat-based systems:
 
 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 (<code>git@[...]:username/reponame.git</code>).
 
@@ -165,6 +165,13 @@ Add the following lines inside the section that begins @%RC = (@:
 </span></code></pre>
 </notextile>
 
+Inside that section, adjust the 'UMASK' setting to @022@, to ensure the API server has permission to read repositories:
+
+<notextile>
+<pre><code>    UMASK => <span class="userinput">022</span>,
+</code></pre>
+</notextile>
+
 Uncomment the 'Alias' line in the section that begins @ENABLE => [@:
 
 <notextile>
@@ -210,10 +217,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:
 
 <notextile>
-<pre><code>git_repo_ssh_base: git@git.<span class="userinput">uuid_prefix.your.domain</span>:
+<pre><code>git_repo_ssh_base: "git@git.<span class="userinput">uuid_prefix.your.domain</span>:"
 </code></pre>
 </notextile>
 
@@ -291,12 +298,25 @@ EOF</span>
 </code></pre>
 </notextile>
 
+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:
+
+<notextile>
+<pre><code>sudo -u git \
+  ARVADOS_API_HOST=<span class="userinput">uuid_prefix.your.domain</span> \
+  GITOLITE_HTTP_HOME=/var/lib/arvados/git \
+  PATH="$PATH:/var/lib/arvados/git/bin" \
+  arvados-git-httpd -address=:9001 -git-command="$(which git)" -repo-root=<span class="userinput">/var/lib/arvados/git/repositories</span> 2&gt;&1
+</code></pre>
+</notextile>
+
 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:
+
 <notextile>
 <pre><code>
 upstream arvados-git-httpd {
@@ -305,6 +325,8 @@ upstream arvados-git-httpd {
 server {
   listen                  <span class="userinput">[your public IP address]</span>:443 ssl;
   server_name             git.<span class="userinput">uuid_prefix.your.domain</span>;
+  proxy_connect_timeout   90s;
+  proxy_read_timeout      300s;
 
   ssl on;
   ssl_certificate         <span class="userinput">/YOUR/PATH/TO/cert.pem</span>;
@@ -312,15 +334,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;
   }
 }
 </code></pre>
@@ -328,7 +341,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:
 
 <notextile>
 <pre><code>git_repo_http_base: https://git.<span class="userinput">uuid_prefix.your.domain</span>/
@@ -337,9 +350,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.
 
 <notextile>
 <pre><code>gitserver:~$ <span class="userinput">sudo nginx -s reload</span>