X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/51a7226a1cf217fe4ea41f6d1b111b55d396485d..c0893f609643a73950957c0aa228f167579951d7:/doc/install/install-api-server.html.textile.liquid diff --git a/doc/install/install-api-server.html.textile.liquid b/doc/install/install-api-server.html.textile.liquid index 3846e3c9aa..0503609166 100644 --- a/doc/install/install-api-server.html.textile.liquid +++ b/doc/install/install-api-server.html.textile.liquid @@ -12,28 +12,25 @@ h3(#install_ruby_and_bundler). Install Ruby and Bundler {% include 'install_ruby_and_bundler' %} -h3(#install_postgres). Install Postgres +h3(#install_postgres). Install PostgreSQL {% include 'install_postgres' %} h3(#build_tools_apiserver). Build tools -* Build tools and the curl and PostgreSQL development libraries, to build gem dependencies -* Nginx - On older distributions, you may need to use a backports repository to satisfy these requirements. For example, on older Red Hat-based systems, consider using the "postgresql92":https://www.softwarecollections.org/en/scls/rhscl/postgresql92/ and "nginx16":https://www.softwarecollections.org/en/scls/rhscl/nginx16/ Software Collections. On a Debian-based system, install the following packages: -
~$ sudo apt-get install bison build-essential libpq-dev libcurl4-openssl-dev postgresql git nginx arvados-api-server
+
~$ sudo apt-get install bison build-essential libcurl4-openssl-dev git nginx arvados-api-server
 
On a Red Hat-based system, install the following packages: -
~$ sudo yum install bison make automake gcc gcc-c++ libcurl-devel postgresql-server postgresql-devel nginx git arvados-api-server
+
~$ sudo yum install bison make automake gcc gcc-c++ libcurl-devel nginx git arvados-api-server
 
@@ -158,4 +155,105 @@ This command aborts when it encounters an error. It's safe to rerun multiple ti h2. Set up Web servers -{% include 'install_nginx_apiserver' %} +For best performance, we recommend you use Nginx as your Web server front-end, with a Passenger backend for the main API server and a Puma backend for API server Websockets. To do that: + + +
    +
  1. Install Nginx via your distribution or a backports repository.
  2. + +
  3. Install Phusion Passenger for Nginx.
  4. + +
  5. Puma is already included with the API server's gems. We recommend you use a tool like runit or something similar. Here's a sample run script for that:

    + +
    #!/bin/bash
    +
    +set -e
    +exec 2>&1
    +
    +# Uncomment the line below if you're using RVM.
    +#source /etc/profile.d/rvm.sh
    +
    +envdir="`pwd`/env"
    +mkdir -p "$envdir"
    +echo ws-only > "$envdir/ARVADOS_WEBSOCKETS"
    +
    +cd /var/www/arvados-api/current
    +echo "Starting puma in `pwd`"
    +
    +# You may need to change arguments below to match your deployment, especially -u.
    +exec chpst -m 1073741824 -u www-data:www-data -e "$envdir" \
    +  bundle exec puma -t 0:512 -e production -b tcp://127.0.0.1:8100
    +
    +
  6. + +
  7. Edit the http section of your Nginx configuration to run the Passenger server, and act as a front-end for both it and Puma. You might add a block like the following, adding SSL and logging parameters to taste:

    + +
    server {
    +  listen 127.0.0.1:8000;
    +  server_name localhost-api;
    +
    +  root /var/www/arvados-api/current/public;
    +  index  index.html index.htm index.php;
    +
    +  passenger_enabled on;
    +  # If you're using RVM, uncomment the line below.
    +  #passenger_ruby /usr/local/rvm/wrappers/default/ruby;
    +}
    +
    +upstream api {
    +  server     127.0.0.1:8000  fail_timeout=10s;
    +}
    +
    +upstream websockets {
    +  # The address below must match the one specified in puma's -b option.
    +  server     127.0.0.1:8100  fail_timeout=10s;
    +}
    +
    +proxy_http_version 1.1;
    +
    +server {
    +  listen       [your public IP address]:443 ssl;
    +  server_name  uuid_prefix.your.domain;
    +
    +  ssl on;
    +
    +  index  index.html index.htm index.php;
    +
    +  location / {
    +    proxy_pass            http://api;
    +    proxy_redirect        off;
    +
    +    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;
    +  }
    +}
    +
    +server {
    +  listen       [your public IP address]:443 ssl;
    +  server_name  ws.uuid_prefix.your.domain;
    +
    +  ssl on;
    +
    +  index  index.html index.htm index.php;
    +
    +  location / {
    +    proxy_pass            http://websockets;
    +    proxy_redirect        off;
    +
    +    proxy_set_header      Upgrade $http_upgrade;
    +    proxy_set_header      Connection "upgrade";
    +    proxy_set_header      Host $host;
    +    proxy_set_header      X-Real-IP $remote_addr;
    +    proxy_set_header      X-Forwarded-For $proxy_add_x_forwarded_for;
    +  }
    +}
    +
    +
  8. + +
  9. Restart Nginx.
  10. + +
+