diff --git a/README.md b/README.md index f3a09cbb4..0380f6a75 100644 --- a/README.md +++ b/README.md @@ -23,7 +23,7 @@ Installation ### Registry app -Usual Rails 4 app installation (rbenv install is under Debian build doc) +Registry based on Rails 4 installation (rbenv install is under Debian build doc) Manual demo install and database setup: @@ -32,45 +32,11 @@ Manual demo install and database setup: cd demo-registry rbenv local 2.2.0 bundle + cp config/application-example.yml config/application.yml # and edit it cp config/database-example.yml config/database.yml # and edit it - cp config/initializers/devise_secret_example.rb.txt config/initializers/devise_secret.rb # and edit + bundle exec rake db:all:setup # for production, please follow deployment howto bundle exec rake assets:precompile -Create registry database manually, example: - - create database registry_production owner registry encoding 'UTF-8' LC_COLLATE 'et_EE.utf8' LC_CTYPE 'et_EE.utf8' template template0; - rake db:schema:load - rake db:seeds - -Or create all databases: - - rake db:all:setup # will create all databases, loads all schemas and seeds - # other similar tasks if needed later: - # rake db:all:create # creates all databases only - # rake db:all:schema:load # loads all schemas - # rake db:all:schema:dump # dumps all schemas - -Production install (database schema should be loaded and seeds should be present) - - # at your local machine - git clone git@github.com:internetee/registry.git - cd registry - rbenv local 2.2.0 # more info about rbenv at debian doc - gem install mina - mina pr setup # one time, only creates missing directories - ssh registry - - # at your server - cd registry - cp current/config/application-example.yml shared/config/application.yml # and edit it - cp current/config/database-example.yml shared/config/database.yml # and edit it - - vi /etc/apache2/sites-enabled/registry.conf # add conf and all needed serts - vi /etc/apache2/sites-enabled/epp.conf # add epp conf, restart apache - exit - # at your local machine - mina pr deploy # this is command you use in every application code update - ### Apache with patched mod_epp (Debian 7/Ubuntu 14.04 LTS) sudo apt-get install apache2 @@ -187,11 +153,22 @@ All registry demo data can be found at: Initially you can use two type of users: admin users and EPP users. + ### Certificates setup * [Certificates setup](/doc/certificates.md) +### Deployment + +* [Application build and update](/doc/application_build_doc.md) + + +### Autotesting + +* [Testing](/doc/testing.md) + + ### EPP web client Please follow EPP web client readme: @@ -206,89 +183,6 @@ Please follow WHOIS server readme: https://github.com/internetee/whois -Deployment ----------- - -* [Debian build](/doc/debian_build_doc.md) -* [Application build and update](/doc/application_build_doc.md) - -CRON ----- - -Crontab can be setup after deploy. Jobs can be viewed [here](/config/schedule.rb). - - mina pr cron:setup # to update the crontab. - mina pr cron:clear # to clear crontab. - -Autotesting ------------ - -* Before running tests for the first time: `RAILS_ENV=test rake db:seed` -* Run tests: `rake` -* Run EPP tests: `rake test:epp` -* Run all but EPP tests: `rake test:other` - -To see internal errors while testing EPP - - unicorn -E test -p 8989 - rake spec:epp - -### Apache mod_epp autotesting/debugging - -Autotesting Apache mod_epp without Registry app. - - sudo apt-get install apache2-dbg - -Includes htpasswd command to generate authentication files - - sudo apt-get install apache2-utils - -For manual debugging purposes, standalone CGI scripts can be used: -This needs a static greeting file, so you will have to make /var/www writable. - -```apache - - - Options ExecCGI - SetHandler cgi-script - - - Listen 1700 - - - EPPEngine On - EPPCommandRoot /cgi-bin/epp/command - EPPSessionRoot /cgi-bin/epp/session - EPPErrorRoot /cgi-bin/epp/error - - Alias /cgi-bin/epp/session/hello /var/www/html/epp/session-hello - - Alias /cgi-bin/epp/session/login /usr/lib/cgi-bin/epp/session-login - Alias /cgi-bin/epp/session/logout /usr/lib/cgi-bin/epp/session-logout - Alias /cgi-bin/epp/error/schema /usr/lib/cgi-bin/epp/error-schema - Alias /cgi-bin/epp/command/create /usr/lib/cgi-bin/epp/create - Alias /cgi-bin/epp/command/info /usr/lib/cgi-bin/epp/info - - EPPAuthURI /epp/auth/login - - AuthType Basic - AuthName "EPP" - AuthUserFile /etc/apache2/htpasswd - require valid-user - - - -``` - - sudo a2enmod cgi - sudo a2enmod authn_file # will be used for non implicit authentication URIs - sudo htpasswd -c /etc/apache2/htpasswd test - Type "test" when prompted - cd /usr/lib/cgi-bin - mkdir epp - -Copy the files from $mod_epp/examples/cgis to /usr/lib/cgi-bin/epp - ## Code Status Alpha release status, only model tests: diff --git a/doc/application_build_doc.md b/doc/application_build_doc.md index bd817b08b..53c93415b 100644 --- a/doc/application_build_doc.md +++ b/doc/application_build_doc.md @@ -1,7 +1,48 @@ -### Application build and update +Application build and update +---------------------------- -For application deployment we are using faster [Mina](https://github.com/mina-deploy/mina) -instead of Capistrano. +### Debian setup + +* [Debian build](/doc/debian_build_doc.md) + + +### Certificates setup + +* [Certificates setup](/doc/certificates.md) + + +### Production env setup + +For production you probably would like to create databases to your locale, example: + + create database registry_production owner registry encoding 'UTF-8' LC_COLLATE 'et_EE.utf8' LC_CTYPE 'et_EE.utf8' template template0; + +Deploy overview: (database schema should be loaded and seeds should be present) + + # at your local machine + git clone git@github.com:internetee/registry.git + cd registry + rbenv local 2.2.0 # more info about rbenv at debian doc + gem install mina + mina pr setup # one time, only creates missing directories + ssh registry + + # at your server + cd registry + cp current/config/application-example.yml shared/config/application.yml # and edit it + cp current/config/database-example.yml shared/config/database.yml # and edit it + + vi /etc/apache2/sites-enabled/registry.conf # add conf and all needed serts + vi /etc/apache2/sites-enabled/epp.conf # add epp conf, restart apache + exit + # at your local machine + mina pr deploy # this is command you use in every application code update + + + +### Deploy script setup + +We recommend [Mina](https://github.com/mina-deploy/mina) instead of Capistrano for deployment. All deploy code locates at config/deploy.rb file. @@ -68,3 +109,13 @@ General rake and mina tips: rake -T # list all rake commands rake -T db # list all database related commands mina -T # list all mina deploy commands + + +CRON +---- + +Crontab can be setup after deploy. Jobs can be viewed [here](/config/schedule.rb). + + mina pr cron:setup # to update the crontab. + mina pr cron:clear # to clear crontab. + diff --git a/doc/testing.md b/doc/testing.md new file mode 100644 index 000000000..e7b56e0cb --- /dev/null +++ b/doc/testing.md @@ -0,0 +1,114 @@ +Testing +------- + +Setup test databases: + + RAILS_ENV=test rake db:all:setup + +Run basic test (no EPP tests): + + rake + + +Testing EPP +=========== + +In order to test EPP, you have to configure apache to handle EPP request correctly. + +### Apache site config + +First you should have mod_epp installed, please follow main README for doing it. + +Apache site config for autotest, add file to /etc/apache2/sites-enabled/epp-autotest.conf + +```apache + + Listen 701 + + SSLEngine on + SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL + SSLCertificateFile /etc/apache2/ssl/apache.crt + SSLCertificateKeyFile /etc/apache2/ssl/apache.key + + SSLVerifyClient optional_no_ca + + EPPEngine On + EPPCommandRoot /proxy/command + EPPSessionRoot /proxy/session + EPPErrorRoot /proxy/error + EPPRawFrame raw_frame + + ProxyPass /proxy/ http://localhost:8989/epp/ + + EPPAuthURI implicit + EPPReturncodeHeader X-EPP-Returncode + + +``` + + + +* Run all tests with temp server running automatically on port 8989: + + rake test + + +Manual debugging +================ + +### Apache mod_epp manual debugging + +Debugging Apache mod_epp without Registry app. + + sudo apt-get install apache2-dbg + +Includes htpasswd command to generate authentication files + + sudo apt-get install apache2-utils + +For manual debugging purposes, standalone CGI scripts can be used: +This needs a static greeting file, so you will have to make /var/www writable. + +```apache + + + Options ExecCGI + SetHandler cgi-script + + + Listen 1700 + + + EPPEngine On + EPPCommandRoot /cgi-bin/epp/command + EPPSessionRoot /cgi-bin/epp/session + EPPErrorRoot /cgi-bin/epp/error + + Alias /cgi-bin/epp/session/hello /var/www/html/epp/session-hello + + Alias /cgi-bin/epp/session/login /usr/lib/cgi-bin/epp/session-login + Alias /cgi-bin/epp/session/logout /usr/lib/cgi-bin/epp/session-logout + Alias /cgi-bin/epp/error/schema /usr/lib/cgi-bin/epp/error-schema + Alias /cgi-bin/epp/command/create /usr/lib/cgi-bin/epp/create + Alias /cgi-bin/epp/command/info /usr/lib/cgi-bin/epp/info + + EPPAuthURI /epp/auth/login + + AuthType Basic + AuthName "EPP" + AuthUserFile /etc/apache2/htpasswd + require valid-user + + + +``` + + sudo a2enmod cgi + sudo a2enmod authn_file # will be used for non implicit authentication URIs + sudo htpasswd -c /etc/apache2/htpasswd test + Type "test" when prompted + cd /usr/lib/cgi-bin + mkdir epp + +Copy the files from $mod_epp/examples/cgis to /usr/lib/cgi-bin/epp +