Differences

This shows you the differences between two versions of the page.

Link to this comparison view

sterretje-cluster:appcluster-hosting_ruby-on-rails [2020/03/06 07:53] (current)
Line 1: Line 1:
 +==== Aanleveren van een Ruby-on-Rails applicatie ====
 +Applicaties kunt u zelf plaatsen door ze op de upload-server in de
 +juiste web-app directory neer te zetten. Het is ook mogelijk dit door
 +NPO Hosting en Streaming te laten doen. Wij gaan er dan vanuit dat er 1
 +complete tar file aangeleverd wordt (bv dmv een url waarvan wij de
 +tar file kunnen downloaden). Vervolgens zullen wij de tar file
 +plaatsen. Wij verwachten dat naast de tar file installatie
 +instructies aangeleverd worden.
 +
 +Het configureren van de passenger/​apache-server wordt altijd door
 +NPO Hosting en Streaming gedaan. Idem voor frontproxy en databases.
 +
 +Het configureren van de applicatie zal meestal in samenspraak tussen
 +NPO Hosting en Streaming en de sitebouwer gebeuren. Zaken waar NPO Hosting en Streaming zich
 +mee bemoeit zijn:
 +
 +  * Database parameters ''​config/​database.yml'';​
 +de database wordt door NPO Hosting en Streaming aangemaakt. login namen en database
 +passwords zijn daar eventueel op te vragen)
 +U kunt deze file eenvoudig gebruiken door een symlink te maken, voor applicatie X
 +<​code>​ln -sfn /​e/​ap/​X/​config/​database.yml /​e/​ap/​X/​rails/​config/​database.yml</​code>​
 +
 +  * Applicatie logfiles;
 +Een railsapplicatie X logt onder
 +''/​e/​ap/​X/​log''​ de bestanden hierin worden boven de 10MB getrunceerd,​ gelieve
 +hier dus met beleid naar toe te loggen, gebruik liever de apache error-log.
 +
 +Met een symbolic link vanuit de root van de railsapplicatie is dit te
 +realiseren. In rails-2 zelf kunt u dit doen in bijv. ''​environment.rb'':​
 +
 +<​code>​
 +DEPLOY_PATH = '/​e/​ap/​X'​
 +config.log_path = "#​{DEPLOY_PATH}/​log/#​{`id -un`.chomp}-#​{RAILS_ENV}.log"​
 +</​code>​
 +
 +in rails-3
 +<​code>​
 +DEPLOY_PATH = '/​e/​ap/​X'​
 +config.logger = Logger.new("#​{DEPLOY_PATH}/​log/#​{`id -un`.chomp}-#​{Rails.env}.log"​)
 +config.logger.level = Logger::​WARN
 +</​code>​
 +
 +of, als alternatief via de apache error-log
 +
 +<​code>​
 +config.logger = Logger.new(STDERR)
 +config.logger.level = Logger::​WARN
 +</​code>​
 +
 +  * tmpdir;
 +De rails tmpdir van een applicatie X wordt geacht te zijn 
 +''/​e/​ap/​X/​tmp''​ ook hier kan een symbolic link diensten bewijzen.
 +In rails zelf kunt u dit doen voor bijv. sessions in ''​environment.rb'':​
 +
 +<​code>​
 +ActionController::​Base.session_options[:​tmpdir] = "#​{DEPLOY_PATH}/​tmp/​sessions/"​
 +</​code>​
 +
 +
 +  * gems;
 +Binaire (gecompileerde) gems willen wij graag compileren om makkelijk
 +software en OS upgrades uit te kunnen voeren. Overige gems worden geacht
 +in de applicatie '​gefreezed'​ of als '​gem'​ geinstalleerd te worden. ​
 +
 +
 +
 +Bij initiële oplevering plaatst NPO Hosting en Streaming een lege rails applicatie
 +van een willekeurige versie om een werkende set-up te kunnen tonen.
 +Deze kunt u uiteraard naar believen overschrijven of verwijderen. ​
 +
 +Per applicatie wordt een bijbehorende ruby '​binary'​ opgeleverd
 +Voor een applicatie X is dat
 +<​code>​
 +/​e/​ap/​X/​bin/​ruby
 +</​code>​
 +deze sourced z'n environment variablen uit:
 +<​code>​
 +/​e/​ap/​X/​bin/​env
 +</​code>​
 +
 +Voor elke applicatie wordt een plekje gereserveerd om door u zelf geïnstalleerde gems in op te slaan
 +<​code>​
 +/​e/​ap/​X/​rails/​lib
 +</​code>​
 +
 +Zo maak je je eigen gem repository:
 +<​code>​
 +source /​e/​ap/​X/​rails/​bin/​env
 +gem install --no-rdoc --no-ri -E mygem-0.0.gem
 +gem list
 +</​code>​
 +
 +Het herstarten van passenger kunt u zelf veroorzaken door een ''​touch''​ van
 +''/​e/​ap/​X/​rails/​current/​config/​restart.txt''​ uit te voeren.
 +
 +Passenger instanties draaien in principe in '​production'​ mode.
 +
 +Een potentieel deploy-script inclusief bundler:
 +
 +<​code>​
 +after '​deploy:​finalize_update',​ '​deploy:​bundle'​
 +
 +namespace :deploy do
 +  desc "NPO Bundler magic"
 +    task :bundle, :roles => :app do
 +        run "cd #​{release_path} && bundle --quiet --without development test"
 +  end
 +end
 +</​code>​
 +
 +Voor bundler is het ook -erg- belangrijk om bestaande .bundle/​config files weg
 +te halen.
  
  • sterretje-cluster/appcluster-hosting_ruby-on-rails.txt
  • Last modified: 2020/03/06 07:53
  • (external edit)