U kunt het Plesk control panel gebruiken om uw databases en e-mail accounts te beheren. U benadert dit control panel via de volgende URL:
https://<uw-domeinnaam>:8443/
Let op: De logingegevens voor het Plesk panel zijn niet de gegevens die u voor FTP of SSH gebruikt!
Een Passenger applicatie kunt u herstarten door in de rails/tmp directory een bestand aan te maken met de naam restart.txt. Bij het volgende request zal de applicatie herstart worden.
Via SSH kunt u dit bestand aanmaken met het volgende commando:
touch ~/rails/tmp/restart.txt
Of, als u Capistrano gebruikt:
touch ~/rails/current/tmp/restart.txt
De bestanden van de complete Ruby on Rails applicatie moeten in de map "rails" worden geplaatst. De webserver heeft als http root de map ~/rails/public. Bij een Capistrano configuratie is dit ~/rails/current/public.
Om Capistrano te gebruiken is het van belang dat uw account hiervoor ingericht is. Indien uw account nog niet ingericht is voor Capistrano kunt u hiervoor een verzoek bij ons indienen.
Op onze recente servers en VPSsen wordt een system-brede RVM installatie gebruikt voor de Ruby omgeving. Hieronder vindt u een voorbeeld deploy.rb die u kunt gebruiken op onze servers, die gebruik maakt van RVM en Capistrano:
$:.unshift(File.expand_path('./lib', ENV['rvm_path'])) # Add RVM's lib directory to the load path.
require 'bundler/capistrano'
# Indien u geen RVM gebruikt op uw system kunt u het onderstaande bestand
# downloaden op: https://github.com/wayneeseguin/rvm/blob/master/lib/rvm/capistrano.rb
# Plaats dit in uw applicatie en pas de onderstaande require regel aan.
require 'rvm/capistrano'
# De naam van uw applicatie
set :application, "applicatie"
# Gegevens van de Bluerail server
set :host, "server.bluerail.nl"
set :user, "gebruikersnaam"
# Versiebeheer instellingen
set :scm, :git # Of 'subversion', 'mercurial' , etc.
set :repository, "git@repository:applicatie"
# De te gebruiken RVM versie, default is 1.8.7. Indien u een Thin installatie
# met Ruby 1.9.2 heeft dan kunt u '1.9.2' als versie opgeven.
set :rvm_ruby_string, 'default'
# De onderstaande instellingen zijn specifiek voor de Bluerail servers, u
# hoeft hier zelf geen wijzigingen in aan te brengen.
set :deploy_to, "~/rails"
set :rvm_type, :system
set :rvm_bin_path, '/usr/local/rvm/bin'
set :use_sudo, false
set :keep_releases, 3
role :web, host
role :app, host
role :db, host, :primary => true
# Taak voor het herstarten van de Passenger applicatie en symlinken van de database.yml
namespace :deploy do
task :start do ; end
task :stop do ; end
task :restart, :roles => :app, :except => { :no_release => true } do
run "#{try_sudo} touch #{File.join(current_path,'tmp','restart.txt')}"
end
after "deploy:update_code", :link_production_db
end
desc "Link database.yml from shared path"
task :link_production_db do
run "ln -nfs #{deploy_to}/shared/config/database.yml #{release_path}/config/database.yml"
end
Met Capistrano hoeft u nooit zelf een verbinding te maken met de Bluerail servers om uw applicatie te updaten. U voert alle commando's uit vanuit de lokale kopie van uw Rails applicatie. Hieronder vindt u een kort overzicht van de belangrijkste commando's:
Meer informatie vindt u op de Capistrano wiki op Github.
De Asset Pipeline in Rails 3.1 is een raamwerk om Javascript en CSS bestanden samen te voegen en te comprimeren. Wanneer u een Rails applicatie in productie start gaat deze er vanuit dat de assets van tevoren gecompileerd zijn. U kunt dit vanaf de commandline doen door middel van:
bundle exec rake assets:precompile
Indien u Capistrano gebruikt kunt u de volgende regel toevoegen aan uw Capfile:
load 'deploy/assets'
U dient tevens een JavaScript engine toe te voegen aan uw Gemfile. Op onze servers is therubyracer probleemloos te gebruiken. Deze voegt u als volgt toe aan uw Gemfile:
gem 'therubyracer'
gem 'execjs'
Het compilen van de assets kan lang duren: voor een lege Rails 3.1 app duurt dit in sommige gevallen al een minuut. Het kan dus zijn dat uw cap deploy langer duurt dan u gewend bent.
Wanneer u voor het eerst een applicatie probeert te deployen vanuit een Git repository kunt u de bovenstaande foutmelding tegenkomen. Deze foutmelding treedt op op het moment dat Capistrano vanaf de Bluerail server een verbinding probeert te leggen met uw Git repository.
U kunt deze fout meestal verhelpen door via SSH een verbinding te leggen met de Bluerail server en vanaf daar een SSH verbinding te openen met uw Git repository. Mocht dit niet werken, dan kunt u handmatig een git clone van uw repository uitvoeren op onze server (bijvoorbeeld in de ~/private map). Nadat deze clone geslaagd is zou Capistrano ook moeten werken. U kunt de gemaakte clone dan weer verwijderen.
Standaard verwacht Ruby on Rails toegang te krijgen met de database door gebruik te maken van de gebruikersnaam 'root'. Bij het aanmaken van de database in Plesk kunt u een gebruikersnaam en wachtwoord opgeven.
Gebruik de gegevens van de aangemaakte database om de instellingen van de Rails applicatie te wijzigen in config/database.yml. Let hierbij op dat de gegevens worden ingevuld bij de juiste omgeving (development of production).
production:
adapter: mysql2
encoding: utf8
database: <database>
username: <gebruikersnaam>
password: <wachtwoord>
host: localhost
Deze foutmelding kan voorkomen indien u de bundle van uw ontwikkelmachine of een andere server overkopieert naar onze server, waardoor de native extensions niet geladen kunnen worden.
Dit probleem kan opgelost worden door de vendor/bundle map te legen en het bundle install commando opnieuw uit te voeren op de server.
Het correcte pad naar het MySQL socket op onze CentOS servers is /var/lib/mysql/mysql.sock. U kunt dit als volgt in uw database.yml opnemen:
production:
socket: /var/lib/mysql/mysql.sock
De Application error (Rails) of, in nieuwere versies, something went wrong van Ruby on Rails is de tegenhanger van de gedetailleerde foutmeldingen. Deze foutmelding wordt standaard weergegeven als de applicatie in de productieomgeving staat.
De exacte fout is terug te vinden in de logbestanden (log/production.log). De inhoud van een logbestand kan via een SSH-verbinding eenvoudig worden weergegeven. Gebruiker hiervoor onderstaande code na het inloggen:
tail -f rails/log/production.log
Bezoek nu de pagina waarop de fout optreedt nogmaals. De gedetailleerde melding is dan te zien in het SSH-venster.
Het openen van de website faalt met de fout Routing Error: Recognition failed for "/". Deze fout geeft geeft twee dingen aan:
Definieer de standaard te openen pagina in config/routes.rb met behulp van onderstaande code. Vul hierbij de controller en de actie met de gewenste combinatie.
root :to => "controller#actie"
U betaalt het pakket per drie maanden vooruit. De facturering verloopt standaard per e-mail. Indien u wilt opzeggen dient u dit schriftelijk te doen, minimaal een maand voor het einde van de betaalde termijn.
Op alle diensten zijn de algemene voorwaarden van LICO Innovations van toepassing.
Indien u met uw hosting pakket over de datalimiet gaat krijgt u een automatische melding van het control panel, mits u een correct e-mailadres hebt opgegeven in de instellingen.
Uw account wordt niet direct afgesloten bij het overschrijden van de datalimiet, wij proberen bij grote overschrijdingen altijd in overleg te doen. Indien u een (tijdelijke) verhoging van uw datatraffic verwacht verzoeken wij u dit van tevoren te melden. Extra dataverkeer dat niet van tevoren is opgegeven wordt in rekening gebracht tegen € 1 per gigabyte.
Onze servers draaien op het FreeBSD of CentOS besturingssysteem met het Plesk control panel. Als webserver wordt Apache gebruikt, met onder andere PHP 5, mod_perl en mod_python. U kunt gebruik maken van Ruby 1.8.7 of 1.9.2 voor uw Rails applicatie.
Alle recente Rails versies zijn op de server beschikbaar. Verder zijn populaire gems als rmagick, gd2 en pdf-writer standaard aanwezig. Om gems te installeren kunt u gebruik maken van Bundler. Bundler is de standaard methode voor het bundelen van gems in Rails 3, die ook in oudere Rails applicaties of in Sinatra applicaties kan worden opgenomen.
U heeft via SSH de beschikking over Subversion, Git en Capistrano en verschillende veelgebruikte Unix tools als GNU Nano en Vim.
Bundler is op dit moment de aanbevolen manier om als Bluerail klant gems te installeren. Het geeft u volledige vrijheid en voorkomt versieconflicten tussen gems. Rails 3 applicaties maken standaard gebruik van Bundler en Rails 2.3 applicaties zijn gemakkelijk om te zetten.
Het Bluerail platform werkt zonder wijzigingen met Bundler. Voor een foutloze operatie is het wel van belang om de --deployment optie aan het bundle install commando mee te geven, als volgt:
bundle install --deployment
Op deze manier vraagt bundler niet om een sudo wachtwoord en worden de gems in de vendor/bundle map van uw applicatie geïnstalleerd.
Bundler bevat een module om te integreren met Capistrano. U kunt deze gebruiken door require 'bundler/capistrano' aan uw deploy toe te voegen. Zie ook onze uitleg over het gebruik van Capistrano.
U vindt meer informatie over Bundler op de officiële Bundler website.
Zowel Radiant en Refinery zijn gebaseerd op Rails waardoor u deze applicaties zonder problemen kunt uitrollen op het Bluerail platform. Net als met Rails applicaties adviseren wij om Capistrano te gebruiken voor het uitrollen.
Standaard verbindt Rails 3 en later voor het verzenden van e-mail met SMTP naar localhost, met gebruik van SSL. Hierbij treedt echter een certificaatfout op waardoor het verzenden mislukt met de volgende melding:
OpenSSL::SSL::SSLError (hostname was not match with the server certificate)
Om dit te voorkomen kunt u kiezen om mail te verzenden via sendmail of met SMTP, maar dan zonder SSL. Het ontbreken van SSL is geen bezwaar omdat het een lokale verbinding betreft. U kunt een van de volgende configuraties in uw config/environments/production.rb opnemen:
config.action_mailer.delivery_method = :sendmail
config.action_mailer.delivery_method = :smtp
config.action_mailer.smtp_settings = {
address: 'localhost',
enable_starttls_auto: false,
openssl_verify_mode: 'none'
}
Meer informatie over de configuratie opties van ActionMailer vindt u in De ActionMailer documentatie.
U kunt via het Plesk control panel zelf mail accounts aanmaken voor uw hosting account. Hieronder vindt u de instellingen voor uw mailprogramma. Indien gewenst kunt u gebruik maken van een beveiligde verbinding (SSL/TLS). Dan is het wel wraadzaam om inplaats van uw domeinnaam de naam van de Bluerail server te gebruiken (b.v. barney.bluerail.nl). Op die manier voorkomt u waarschuwingen met betrekking tot het certificaat dat de server meestuurt.
* Niet alle providers laten uitgaande verbindingen naar poort 25 toe. In dat geval kunt u poort 465 gebruiken.
U kunt ook de uitgaande mailserver van uw internet(toegangs)provider gebruiken om mail te sturen vanaf het domein van uw Bluerail account.
Indien u via Bundler de sqlite3 gem probeert te installeren kunt u de volgende foutmelding krijgen:
Installing sqlite3 (1.3.3) with native extensions … ERROR: Failed to build gem native extension
De reden hiervoor is dat de sqlite3 versie die bij het besturingssysteem van onze servers wordt geleverd (CentOS Linux) niet geschikt is voor de nieuwste sqlite3 gem. Er zijn twee oplossingen mogelijk:
Wij bevelen overigens altijd het gebruik van MySQL en PostgreSQL aan in productieomgevingen. Over het algemeen zal uw Rails applicatie zonder problemen op een van deze databases werken, ook als u sqlite3 gebruikt tijdens de ontwikkeling.
Onze favoriete on-line naslagwerken op een rijtje:
Op de Bluerail servers kunt u gebruik maken van de lokale SMTP server of sendmail binary voor het testen van de e-mail functionaliteit van uw applicatie. Tijdens de ontwikkeling is het testen van mail soms lastiger, zeker als u op verschillende locaties werkt.
Als oplossing voor dit probleem ontwikkelden wij de PostOffice gem. PostOffice bestaat uit een eenvoudige SMTP en POP3 server. U kunt vanuit uw Rails applicatie mail aanbieden bij de SMTP server die u vervolgens met uw favoriete mailclient op kunt halen om het resultaat te bereiken. Doordat alles zich lokaal op uw computer bevindt werkt dit razendsnel.
Bekijk de PostOffice gem op Github. Pull requests voor bugfixes en nieuwe features zijn welkom!