X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/2dd4e1a58e6e7b73bea5c1f352338fd74ff55fa7..bdc88877d3b4df3e9196e112b7e0bdce2f731998:/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 e5bd5c82bc..0d721fcb09 100644 --- a/doc/install/install-api-server.html.textile.liquid +++ b/doc/install/install-api-server.html.textile.liquid @@ -8,17 +8,40 @@ h2. Prerequisites: # A GNU/Linux (virtual) machine # A domain name for your api server -# Ruby >= 2.0.0 -# Bundler: @gem install bundler@ -# Curl libraries: @sudo apt-get install libcurl3 libcurl3-gnutls libcurl4-openssl-dev@ + +h2(#dependencies). Install dependencies + + +
~$ sudo apt-get install libcurl3 libcurl3-gnutls libcurl4-openssl-dev \
+    libxslt1.1 zlib1g-dev gettext bison libssl-dev libreadline-dev \
+    libpq-dev sqlite3 libsqlite3-dev build-essential wget postgresql sudo
+
+ +h2(#ruby). Install Ruby and bundler + +We recommend Ruby >= 2.1. + + +
mkdir -p ~/src
+cd ~/src
+wget http://cache.ruby-lang.org/pub/ruby/2.1/ruby-2.1.1.tar.gz
+tar xzf ruby-2.1.1.tar.gz
+cd ruby-2.1.1
+./configure
+make
+sudo make install
+
+sudo gem install bundler
+
h2. Download the source tree -
~$ git clone https://github.com/curoverse/arvados.git
+
~$ cd $HOME # (or wherever you want to install)
+~$ git clone https://github.com/curoverse/arvados.git
 
-See also: "Downloading the source code:https://arvados.org/projects/arvados/wiki/Download on the Arvados wiki. +See also: "Downloading the source code":https://arvados.org/projects/arvados/wiki/Download on the Arvados wiki. h2. Install gem dependencies @@ -29,58 +52,82 @@ h2. Install gem dependencies h2. Configure the API server -Configure the database: +Edit the main configuration: -
~/arvados/services/api$ cp -i config/database.yml.sample config/database.yml
+
~/arvados/services/api$ cp -i config/application.yml.example config/application.yml
 
-By default, the development database will use the sqlite3 driver, so no configuration is necessary. If you wish to use mysql or postgres, edit @config/database.yml@ to your liking and make sure the database and db user exist. Then initialize the database: +Choose a unique 5-character alphanumeric string to use as your @uuid_prefix@. An example is given that generates a 5-character string based on a hash of your hostname. The @uuid_prefix@ is a unique identifier for your API server. It also serves as the first part of the hostname for your API server. + +For a development site, use your own domain instead of arvadosapi.com. + +Make sure a clone of the arvados repository exists in @git_repositories_dir@: -
~/arvados/services/api$ RAILS_ENV=development bundle exec rake db:setup
+
~/arvados/services/api$ sudo mkdir -p /var/cache/git
+~/arvados/services/api$ sudo git clone --bare ../../.git /var/cache/git/arvados.git
 
-Then set up omniauth: +Generate a new secret token for signing cookies: -
~/arvados/services/api$ cp -i config/initializers/omniauth.rb.example config/initializers/omniauth.rb
+
~/arvados/services/api$ rake secret
+zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz
 
-Edit @config/initializers/omniauth.rb@. Set @APP_SECRET@ to the value of @app_secret@ from "installing the single sign on server":install-sso.html . +Put it in @config/application.yml@ in the production or common section: + + +
    secret_token: zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz
+
+
+ +Consult @application.default.yml@ for a full list of configuration options. Always put your local configuration in @application.yml@ instead of editing @application.default.yml@. -Next, edit the main configuration: +Generate a new database password. Nobody ever needs to memorize it or type it, so we'll make a strong one: -
~/arvados/services/api$ cp -i config/application.yml.example config/application.yml
+
~/arvados/services/api$ ruby -e 'puts rand(2**128).to_s(36)'
+6gqa1vu492idd7yca9tfandj3
 
-First, choose a unique 5-character alphanumeric string to use as your @uuid_prefix@. An example is given that generates a 5-character string based on a hash of your hostname. The `uuid_prefix` is a unique identifier for your API server. It also serves as the first part of the hostname for your API server. +Create a new database user with permission to create its own databases. -For a development site, use your own domain instead of arvadosapi.com. + +
~/arvados/services/api$ sudo -u postgres createuser --createdb --encrypted --pwprompt arvados
+[sudo] password for you: yourpassword
+Enter password for new role: paste-password-you-generated
+Enter it again: paste-password-again
+Shall the new role be a superuser? (y/n) n
+Shall the new role be allowed to create more new roles? (y/n) n
+
-You also need to install a secret_token for signing cookies. Generate a new secret: +Configure API server to connect to your database by creating and updating @config/database.yml@. Replace the @xxxxxxxx@ database password placeholders with the new password you generated above. -
~/arvados/services/api$ rake secret
-zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz
+
~/arvados/services/api$ cp -i config/database.yml.sample config/database.yml
+~/arvados/services/api$ edit config/database.yml
 
-Put it in @config/application.yml@ in the production or common section: +Create and initialize the database. -
    secret_token: zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz
-
-
+
~/arvados/services/api$ RAILS_ENV=development bundle exec rake db:setup
+
-You will also want to change @compute_node_nameservers@ to suit your environment. +Set up omniauth: -Consult @application.default.yml@ for a full list of configuration options. Always put your local configuration in @application.yml@ instead of editing @application.default.yml@. + +
~/arvados/services/api$ cp -i config/initializers/omniauth.rb.example config/initializers/omniauth.rb
+
+ +Edit @config/initializers/omniauth.rb@. Set @APP_SECRET@ to the value of @app_secret@ from "installing the single sign on server":install-sso.html . You can now run the development server: -
~/arvados/services/api$ rails server
+
~/arvados/services/api$ bundle exec rails server --port=3030
 
h3. Apache/Passenger (optional) @@ -94,30 +141,24 @@ To enable streaming so users can monitor crunch jobs in real time, add to your P
-h2. Add an admin user - -Point browser to the API endpoint. Log in with a google account. +h2(#admin-user). Add an admin user -In the rails console: +Point your browser to the API server's login endpoint: -
~/arvados/services/api$ rails console
-irb(main):001:0> Thread.current[:user] = User.find(1)
-irb(main):002:0> Thread.current[:user].is_admin = true
-irb(main):003:0> User.find(1).update_attributes is_admin: true, is_active: true
-irb(main):004:0> User.find(1).is_admin
-=> true
-
+
https://localhost:3030/login
+
+ -h2. Create an API token +Log in with your google account. -In rails console: +Use the rails console to give yourself admin privileges: -
~/arvados/services/api$ rails console
-irb(main):001:0> a = ApiClient.new(owner_uuid:'0')
-irb(main):002:0> a.save!
-irb(main):003:0> x = ApiClientAuthorization.new(api_client_id:a.id, user_id:1)
-irb(main):004:0> x.save
-irb(main):005:0> x.api_token
+
~/arvados/services/api$ bundle exec rails console
+irb(main):001:0> Thread.current[:user] = User.all.select(&:identity_url).last
+irb(main):002:0> Thread.current[:user].is_admin = true
+irb(main):003:0> Thread.current[:user].update_attributes is_admin: true, is_active: true
+irb(main):004:0> User.where(is_admin: true).collect &:email
+=> ["root", "your_address@example.com"]