<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://wiki.hostsharing.net/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Srv00-wiki</id>
	<title>Hostsharing Wiki - Benutzerbeiträge [de]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.hostsharing.net/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Srv00-wiki"/>
	<link rel="alternate" type="text/html" href="https://wiki.hostsharing.net/index.php?title=Spezial:Beitr%C3%A4ge/Srv00-wiki"/>
	<updated>2026-04-28T16:17:53Z</updated>
	<subtitle>Benutzerbeiträge</subtitle>
	<generator>MediaWiki 1.43.8</generator>
	<entry>
		<id>https://wiki.hostsharing.net/index.php?title=RubyOnRails&amp;diff=3483</id>
		<title>RubyOnRails</title>
		<link rel="alternate" type="text/html" href="https://wiki.hostsharing.net/index.php?title=RubyOnRails&amp;diff=3483"/>
		<updated>2012-09-07T09:26:07Z</updated>

		<summary type="html">&lt;p&gt;Srv00-wiki: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Bestes Ruby on Rails Hosting bei Hostsharing ==&lt;br /&gt;
&lt;br /&gt;
Rubyanwendungen laufen (wie alle Anwendungen bei Hostsharing) als Prozesse des jeweiligen Benutzersaccounts. Probleme mit Dateirechten und Sicherheitsrisiken, wie sie sonst bei der Ausführung durch den Webserver auftreten, sind so von vorne herein ausgeschlossen.&lt;br /&gt;
&lt;br /&gt;
Standardmäßig erfolgt der Aufruf von Ruby Anwendungen durch den Apache Webserver über die FastCGI Schnittstelle. Dabei wird die Ruby Application Server Instanz des Users nach einem Aufruf noch für einige Zeit bereit gehalten, um sofort zur Bearbeitung von weiteren noch nicht gecacheten, oder gar nicht cachebaren, Anfragen zur Verfügung zu stehen.&lt;br /&gt;
&lt;br /&gt;
Für den Betrieb von noch anspruchsvolleren Anwendungen haben wir auch Tools wie haproxy, varnish, nginx etc. installiert. Wir können auch mod_passenger (mod_wsgi haben wir schon) oder mongrel oder Green Unicorn (gunicorn) installieren. Anwender, die damit auf unserer leistungsfähigen Infrastruktur (managed Plattform) z.B. einen Webserver Cluster mit load-balancing realisieren möchten, brauchen bei uns dafür nur eigene Daemons buchen, können dies aber auch (für größere Projekte) mit einer beliebigen Anzahl ganzer Server realisieren.&lt;br /&gt;
&lt;br /&gt;
== Einrichtung ohne zusätzliche Daemons (ein Application Server) ==&lt;br /&gt;
&lt;br /&gt;
=== Vorbereitungen ===&lt;br /&gt;
&lt;br /&gt;
Einige Einstellungen für den Paketuser.&lt;br /&gt;
&lt;br /&gt;
~/.gemrc&lt;br /&gt;
 install: --no-rdoc --no-ri&lt;br /&gt;
 update:  --no-rdoc --no-ri&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
~/.bashrc&lt;br /&gt;
 alias gem=&amp;quot;nice -n19 gem&amp;quot;&lt;br /&gt;
&lt;br /&gt;
~/.profile&lt;br /&gt;
 source &amp;quot;$HOME/.bashrc&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== Ruby ===&lt;br /&gt;
&lt;br /&gt;
==== Vorinstalliert ====&lt;br /&gt;
&lt;br /&gt;
Soll nur die zentral installierte Ruby Version 1.8 verwendet werden, ergänzt man man in ~/.profile:&lt;br /&gt;
 # enable user&#039;s own ruby installations, keeping all stuff below $HOME/.gem&lt;br /&gt;
 export PATH=&amp;quot;$HOME/bin:$HOME/.gem/ruby/1.8/bin:$PATH&amp;quot;&lt;br /&gt;
 export GEM_PATH=&amp;quot;$HOME/.gem/ruby/1.8:$( gem env gempath )&amp;quot;&lt;br /&gt;
 export GEM_HOME=&amp;quot;$HOME/.gem/ruby/1.8&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 # Disabled for now, because using system libs caused undefined method error.&lt;br /&gt;
 #export RUBYLIB=&amp;quot;$HOME/.gem/ruby/1.8/lib:/usr/local/lib/site_ruby/1.8:/usr/lib/ruby/1.8&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 # avoid to forget that extra parameter: ruby -rubygems prog_that_uses_gems&lt;br /&gt;
 export RUBYOPT=rubygems&lt;br /&gt;
 &lt;br /&gt;
 export RAILS_ENV=production&lt;br /&gt;
&lt;br /&gt;
==== Eigene Installation ====&lt;br /&gt;
&lt;br /&gt;
Um eine andere als die vorinstallierte Ruby Version zu verwenden, installiert man zunächst den Ruby Versions Manager (rvm),&lt;br /&gt;
 curl -L https://get.rvm.io | bash -s stable&lt;br /&gt;
 source ~/.rvm/scripts/rvm&lt;br /&gt;
 rvm notes&lt;br /&gt;
 rvm requirements&lt;br /&gt;
 rvm pkg install openssl&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
und lässt dann die gewünschte Ruby Version installieren.&lt;br /&gt;
 rvm install x.y.z&lt;br /&gt;
&lt;br /&gt;
RVM passt die Umgebungsvariablen automatisch an die ausgewählt Version an. Die Version wählt man global per&lt;br /&gt;
 rvm use x.y.z --default&lt;br /&gt;
oder nur für ein spezielles Verzeichnis:&lt;br /&gt;
 cd ~/verzeichnis/mit/ruby-x.y.z-Anwendung&lt;br /&gt;
 rvm use x.y.z-p??? --rvmrc&lt;br /&gt;
&lt;br /&gt;
Zur Verwaltung von gems installiert man noch rubygems.&lt;br /&gt;
 rvm rubygems current&lt;br /&gt;
&lt;br /&gt;
=== Rails ===&lt;br /&gt;
&lt;br /&gt;
Falls man die Ruby-Umgebung gerade erst eingerichtet hat, ohne sich zwischenzeitlich abzumelden, muß man zunächst die Umgebung manuell laden.&lt;br /&gt;
 source ~/.profile&lt;br /&gt;
&lt;br /&gt;
Nun kann Rails per &amp;quot;gem install rails&amp;quot; installiert werden (inklusive Abhängigkeiten).&lt;br /&gt;
Um spezielle versionen zu installieren kann man den gem Befehl mit &amp;quot;-v=x.y.z&amp;quot; ergänzen.&lt;br /&gt;
&lt;br /&gt;
Zum Testen hier ein Beispiel das eine Content und Daten Management Anwendung installiert (http://zenadmin.org) und mit einer sqlite Datenbankdatei eingerichtet:&lt;br /&gt;
 gem install rails -v=2.3.11&lt;br /&gt;
 gem install i18n sexp_processor rmagick sqlite3 zena&lt;br /&gt;
 zena new ~/doms/www.example.org/rails      # Zena Rails-Anwendung anlegen.&lt;br /&gt;
 cd ~/doms/www.example.org/rails&lt;br /&gt;
 rake db:create        # Datenbank anlegen.&lt;br /&gt;
 zena migrate          # Datenbank Tabellen einrichten.&lt;br /&gt;
 zena mksite HOST_LANG=de RAILS_ENV=production PASSWORD=geheim HOST=www.example.org # Webseite anlegen.&lt;br /&gt;
&lt;br /&gt;
=== Rails-Anwendung ===&lt;br /&gt;
&lt;br /&gt;
Seine eigene Rails-Anwendung kopiert man z.B. nach ~/doms/www.example.org/rails, oder erstellt dort eine Neue (rails ~/doms/www.example.org/rails, ...).&lt;br /&gt;
&lt;br /&gt;
=== Datenbank ===&lt;br /&gt;
&lt;br /&gt;
Mit &#039;&#039;hsadmin&#039;&#039; beispielsweise einen Postgres-User (z.B. &#039;xyz00_rails&#039;, Passwort sei &#039;geheim&#039;) sowie eine Datenbank anlegen (z.B. &#039;xyz00_rails&#039;.&lt;br /&gt;
&lt;br /&gt;
Die Datenbank in der Anwendung konfigurieren,&lt;br /&gt;
&lt;br /&gt;
 cd ~/doms/www.example.org/rails/config/&lt;br /&gt;
 nano database.yml&lt;br /&gt;
&lt;br /&gt;
mit folgendem Inhalt:&lt;br /&gt;
&lt;br /&gt;
 production:&lt;br /&gt;
    adapter: postgresql&lt;br /&gt;
    database: xyz00_rails&lt;br /&gt;
    host: localhost&lt;br /&gt;
    username: xyz00_rails&lt;br /&gt;
    password: geheim&lt;br /&gt;
&lt;br /&gt;
=== E-Mail, Dateiablage ===&lt;br /&gt;
&lt;br /&gt;
Beispielhafte Konfiguration:&lt;br /&gt;
&lt;br /&gt;
 default:&lt;br /&gt;
    email_delivery:&lt;br /&gt;
      delivery_method: :smtp&lt;br /&gt;
      smtp_settings:&lt;br /&gt;
        address: localhost&lt;br /&gt;
        port: 25&lt;br /&gt;
        domain: www.example.org&lt;br /&gt;
    attachments_storage_path: /home/doms/www.example.org/rails/attach&lt;br /&gt;
&lt;br /&gt;
=== Datenbankschema ===&lt;br /&gt;
&lt;br /&gt;
Initialisieren und migrieren der Datenbank (je nach Rails-Anwendung).&lt;br /&gt;
&lt;br /&gt;
 cd ~/doms/www.example.org/rails&lt;br /&gt;
 ...&lt;br /&gt;
 rake ...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Konfiguration von FastCGI ===&lt;br /&gt;
&lt;br /&gt;
~/doms/www.example.org/htdocs/.htaccess&lt;br /&gt;
&lt;br /&gt;
 RewriteEngine On&lt;br /&gt;
 RewriteRule ^$ index.html [QSA]&lt;br /&gt;
 RewriteRule ^([^.]+)$ $1.html [QSA]&lt;br /&gt;
 RewriteCond %{REQUEST_FILENAME} !-f [OR]&lt;br /&gt;
 RewriteCond %{REQUEST_FILENAME} dispatch.fcgi$&lt;br /&gt;
 RewriteRule ^(.*)$ /fastcgi-bin/dispatch.fcgi [QSA,L]&lt;br /&gt;
&lt;br /&gt;
Ältere Versionen von Rails, die noch nicht auf der &amp;quot;rack&amp;quot; Middleware aufbauen (wie obiges zena Beispiel), laufen mit folgender ~/doms/www.example.org/fastcgi/dispatch.fcgi&lt;br /&gt;
&lt;br /&gt;
 #!/usr/bin/env ruby&lt;br /&gt;
 require &amp;quot;/home/doms/www.example.org/rails/config/environment&amp;quot; &lt;br /&gt;
 require &#039;fcgi_handler&#039;&lt;br /&gt;
 RailsFCGIHandler.process!&lt;br /&gt;
&lt;br /&gt;
Für aktuelle Versionen von Rails, die auf &amp;quot;rack&amp;quot; aufbauen, siehe https://github.com/dre3k/rails3_fcgi, ~/doms/www.example.org/fastcgi/dispatch.fcgi&lt;br /&gt;
  #!/usr/bin/env ruby&lt;br /&gt;
 &lt;br /&gt;
 require_relative &#039;../config/environment&#039;&lt;br /&gt;
 &lt;br /&gt;
 class Rack::PathInfoRewriter&lt;br /&gt;
   def initialize(app)&lt;br /&gt;
     @app = app&lt;br /&gt;
   end&lt;br /&gt;
 &lt;br /&gt;
   def call(env)&lt;br /&gt;
     env.delete(&#039;SCRIPT_NAME&#039;)&lt;br /&gt;
     parts = env[&#039;REQUEST_URI&#039;].split(&#039;?&#039;)&lt;br /&gt;
     env[&#039;PATH_INFO&#039;] = parts[0]&lt;br /&gt;
     env[&#039;QUERY_STRING&#039;] = parts[1].to_s&lt;br /&gt;
     @app.call(env)&lt;br /&gt;
   end&lt;br /&gt;
 end&lt;br /&gt;
 &lt;br /&gt;
 Rack::Handler::FastCGI.run  Rack::PathInfoRewriter.new(HIER_APPLIKATIONSNAME_AUS_config/application.rb_EINTRAGEN::Application)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
FastCGI-Skript ausführbar machen:&lt;br /&gt;
&lt;br /&gt;
 chmod 755 ~/doms/www.example.org/fastcgi/dispatch.fcgi&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Am Anfang von ~/doms/www.example.org/rails/config/environment.rb einfügen:&lt;br /&gt;
&lt;br /&gt;
 ENV[&#039;RAILS_ENV&#039;] ||= &#039;production&#039;&lt;br /&gt;
 ENV[&#039;GEM_PATH&#039;] ||= &#039;/home/pacs/xyz00/users/meinuser/.gem/ruby/1.8:/var/lib/gems/1.8&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Die Applikation ins Webroot einbinden:&lt;br /&gt;
&lt;br /&gt;
 cd ~/doms/www.example.org&lt;br /&gt;
 # ggf. vorhandene Dateien sichern (oder nach ~/doms/www.example.org/rails/public kopieren),&lt;br /&gt;
 mv htdocs htdocs.old&lt;br /&gt;
 # und das entsprechende public/ Verzeichnis der Rails-Anwendung im Webroot verlinken.&lt;br /&gt;
 # Standardmäsig /home/doms/www.example.org/rails/public,&lt;br /&gt;
 # bei multi-site Anwendungen wie zena aber z.B. /home/doms/www.example.org/rails/site/www.example.org/public&lt;br /&gt;
 ln -s /home/doms/www.example.org/rails/public htdocs&lt;br /&gt;
&lt;br /&gt;
=== Konfiguration von SSL ===&lt;br /&gt;
&lt;br /&gt;
Die Verzeichnisse ~/doms/www.example.org/fastcgi-ssl/ und ~/doms/www.example.org/htdocs-ssl/ werden analog zu bzw. anstelle von fastcgi und htdocs gefüllt.&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:HSDoku]]&lt;br /&gt;
[[Kategorie:Installationsanleitungen]]&lt;br /&gt;
[[Kategorie:Software]]&lt;br /&gt;
[[Kategorie:Glossar]]&lt;/div&gt;</summary>
		<author><name>Srv00-wiki</name></author>
	</entry>
	<entry>
		<id>https://wiki.hostsharing.net/index.php?title=RubyOnRails&amp;diff=3482</id>
		<title>RubyOnRails</title>
		<link rel="alternate" type="text/html" href="https://wiki.hostsharing.net/index.php?title=RubyOnRails&amp;diff=3482"/>
		<updated>2012-09-05T22:03:22Z</updated>

		<summary type="html">&lt;p&gt;Srv00-wiki: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Bestes Ruby on Rails Hosting bei Hostsharing ==&lt;br /&gt;
&lt;br /&gt;
Rubyanwendungen laufen (wie alle Anwendungen bei Hostsharing) als Prozesse des jeweiligen Benutzersaccounts. Probleme mit Dateirechten und Sicherheitsrisiken, wie sie sonst bei der Ausführung durch den Webserver auftreten, sind so von vorne herein ausgeschlossen.&lt;br /&gt;
&lt;br /&gt;
Standardmäßig erfolgt der Aufruf von Ruby Anwendungen durch den Apache Webserver über die FastCGI Schnittstelle. Dabei wird die Ruby Application Server Instanz des Users nach einem Aufruf noch für einige Zeit bereit gehalten, um sofort zur Bearbeitung von weiteren noch nicht gecacheten, oder gar nicht cachebaren, Anfragen zur Verfügung zu stehen.&lt;br /&gt;
&lt;br /&gt;
Für den Betrieb von noch anspruchsvolleren Anwendungen haben wir auch Tools wie haproxy, varnish, nginx etc. installiert. Wir können auch mod_passenger (mod_wsgi haben wir schon) oder mongrel oder Green Unicorn (gunicorn) installieren. Anwender, die damit auf unserer leistungsfähigen Infrastruktur (managed Plattform) z.B. einen Webserver Cluster mit load-balancing realisieren möchten, brauchen bei uns dafür nur eigene Daemons buchen, können dies aber auch (für größere Projekte) mit einer beliebigen Anzahl ganzer Server realisieren.&lt;br /&gt;
&lt;br /&gt;
== Einrichtung ohne zusätzliche Daemons (ein Application Server) ==&lt;br /&gt;
&lt;br /&gt;
=== Vorbereitungen ===&lt;br /&gt;
&lt;br /&gt;
Einige Einstellungen für den Paketuser.&lt;br /&gt;
&lt;br /&gt;
~/.gemrc&lt;br /&gt;
 install: --no-rdoc --no-ri&lt;br /&gt;
 update:  --no-rdoc --no-ri&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
~/.bashrc&lt;br /&gt;
 alias gem=&amp;quot;nice -n19 gem&amp;quot;&lt;br /&gt;
&lt;br /&gt;
~/.profile&lt;br /&gt;
 source &amp;quot;$HOME/.bashrc&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== Ruby ===&lt;br /&gt;
&lt;br /&gt;
==== Vorinstalliert ====&lt;br /&gt;
&lt;br /&gt;
Soll nur die zentral installierte Ruby Version 1.8 verwendet werden, ergänzt man man in ~/.profile:&lt;br /&gt;
 # enable user&#039;s own ruby installations, keeping all stuff below $HOME/.gem&lt;br /&gt;
 export PATH=&amp;quot;$HOME/bin:$HOME/.gem/ruby/1.8/bin:$PATH&amp;quot;&lt;br /&gt;
 export GEM_PATH=&amp;quot;$HOME/.gem/ruby/1.8:$( gem env gempath )&amp;quot;&lt;br /&gt;
 export GEM_HOME=&amp;quot;$HOME/.gem/ruby/1.8&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 # Disabled for now, because using system libs caused undefined method error.&lt;br /&gt;
 #export RUBYLIB=&amp;quot;$HOME/.gem/ruby/1.8/lib:/usr/local/lib/site_ruby/1.8:/usr/lib/ruby/1.8&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 # avoid to forget that extra parameter: ruby -rubygems prog_that_uses_gems&lt;br /&gt;
 export RUBYOPT=rubygems&lt;br /&gt;
 &lt;br /&gt;
 export RAILS_ENV=production&lt;br /&gt;
&lt;br /&gt;
==== Eigene Installation ====&lt;br /&gt;
&lt;br /&gt;
Um eine andere als die vorinstallierte Ruby Version zu verwenden, installiert man zunächst den Ruby Versions Manager (rvm),&lt;br /&gt;
 curl -L https://get.rvm.io | bash -s stable&lt;br /&gt;
 source ~/.rvm/scripts/rvm&lt;br /&gt;
 rvm notes&lt;br /&gt;
 rvm requirements&lt;br /&gt;
 rvm pkg install openssl&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
und lässt dann die gewünschte Ruby Version installieren.&lt;br /&gt;
 rvm install x.y.z&lt;br /&gt;
&lt;br /&gt;
RVM passt die Umgebungsvariablen automatisch an die ausgewählt Version an. Die Version wählt man global per&lt;br /&gt;
 rvm use x.y.z --default&lt;br /&gt;
oder nur für ein spezielles Verzeichnis:&lt;br /&gt;
 cd ~/verzeichnis/mit/ruby-x.y.z-Anwendung&lt;br /&gt;
 rvm use x.y.z-p??? --rvmrc&lt;br /&gt;
&lt;br /&gt;
Zur Verwaltung von gems installiert man noch rubygems.&lt;br /&gt;
 rvm rubygems current&lt;br /&gt;
&lt;br /&gt;
=== Rails ===&lt;br /&gt;
&lt;br /&gt;
Falls man die Ruby-Umgebung gerade erst eingerichtet hat, ohne sich zwischenzeitlich abzumelden, muß man zunächst die Umgebung manuell laden.&lt;br /&gt;
 source ~/.profile&lt;br /&gt;
&lt;br /&gt;
Nun kann Rails per &amp;quot;gem install rails&amp;quot; installiert werden (inklusive Abhängigkeiten).&lt;br /&gt;
Um spezielle versionen zu installieren kann man den gem Befehl mit &amp;quot;-v=x.y.z&amp;quot; ergänzen.&lt;br /&gt;
&lt;br /&gt;
Zum Testen hier ein Beispiel das gleich noch eine Content und Daten Management Anwendung installiert (http://zenadmin.org) und diese mit einer sqlite Datenbankdatei einrichtet:&lt;br /&gt;
 gem install rails -v=2.3.11&lt;br /&gt;
 gem install i18n sexp_processor rmagick sqlite3 zena&lt;br /&gt;
 zena new ~/doms/www.example.org/rails      # Zena Rails-Anwendung anlegen.&lt;br /&gt;
 cd ~/doms/www.example.org/rails&lt;br /&gt;
 rake db:create        # Datenbank anlegen.&lt;br /&gt;
 zena migrate          # Datenbank Tabellen einrichten.&lt;br /&gt;
 zena mksite HOST_LANG=en RAILS_ENV=production PASSWORD=geheim HOST=www.example.org # Webseite anlegen.&lt;br /&gt;
&lt;br /&gt;
=== Rails-Anwendung ===&lt;br /&gt;
&lt;br /&gt;
Seine eigene Rails-Anwendung kopiert man z.B. nach ~/doms/www.example.org/rails, oder erstellt dort eine Neue (rails ~/doms/www.example.org/rails, ...).&lt;br /&gt;
&lt;br /&gt;
=== Datenbank ===&lt;br /&gt;
&lt;br /&gt;
Mit &#039;&#039;hsadmin&#039;&#039; beispielsweise einen Postgres-User (z.B. &#039;xyz00_rails&#039;, Passwort sei &#039;geheim&#039;) sowie eine Datenbank anlegen (z.B. &#039;xyz00_rails&#039;.&lt;br /&gt;
&lt;br /&gt;
Die Datenbank in der Anwendung konfigurieren,&lt;br /&gt;
&lt;br /&gt;
 cd ~/doms/www.example.org/rails/config/&lt;br /&gt;
 nano database.yml&lt;br /&gt;
&lt;br /&gt;
mit folgendem Inhalt:&lt;br /&gt;
&lt;br /&gt;
 production:&lt;br /&gt;
    adapter: postgresql&lt;br /&gt;
    database: xyz00_rails&lt;br /&gt;
    host: localhost&lt;br /&gt;
    username: xyz00_rails&lt;br /&gt;
    password: geheim&lt;br /&gt;
&lt;br /&gt;
=== E-Mail, Dateiablage ===&lt;br /&gt;
&lt;br /&gt;
Beispielhafte Konfiguration:&lt;br /&gt;
&lt;br /&gt;
 default:&lt;br /&gt;
    email_delivery:&lt;br /&gt;
      delivery_method: :smtp&lt;br /&gt;
      smtp_settings:&lt;br /&gt;
        address: localhost&lt;br /&gt;
        port: 25&lt;br /&gt;
        domain: www.example.org&lt;br /&gt;
    attachments_storage_path: /home/doms/www.example.org/rails/attach&lt;br /&gt;
&lt;br /&gt;
=== Datenbankschema ===&lt;br /&gt;
&lt;br /&gt;
Initialisieren und migrieren der Datenbank (je nach Rails-Anwendung).&lt;br /&gt;
&lt;br /&gt;
 cd ~/doms/www.example.org/rails&lt;br /&gt;
 ...&lt;br /&gt;
 rake ...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Konfiguration von FastCGI ===&lt;br /&gt;
&lt;br /&gt;
~/doms/www.example.org/htdocs/.htaccess&lt;br /&gt;
&lt;br /&gt;
 RewriteEngine On&lt;br /&gt;
 RewriteRule ^$ index.html [QSA]&lt;br /&gt;
 RewriteRule ^([^.]+)$ $1.html [QSA]&lt;br /&gt;
 RewriteCond %{REQUEST_FILENAME} !-f [OR]&lt;br /&gt;
 RewriteCond %{REQUEST_FILENAME} dispatch.fcgi$&lt;br /&gt;
 RewriteRule ^(.*)$ /fastcgi-bin/dispatch.fcgi [QSA,L]&lt;br /&gt;
&lt;br /&gt;
Ältere Versionen von Rails, die noch nicht auf der &amp;quot;rack&amp;quot; Middleware aufbauen (wie obiges zena Beispiel), laufen mit folgender ~/doms/www.example.org/fastcgi/dispatch.fcgi&lt;br /&gt;
&lt;br /&gt;
 #!/usr/bin/env ruby&lt;br /&gt;
 require &amp;quot;/home/doms/www.example.org/rails/config/environment&amp;quot; &lt;br /&gt;
 require &#039;fcgi_handler&#039;&lt;br /&gt;
 RailsFCGIHandler.process!&lt;br /&gt;
&lt;br /&gt;
Für aktuelle Versionen von Rails, die auf &amp;quot;rack&amp;quot; aufbauen, siehe https://github.com/dre3k/rails3_fcgi, ~/doms/www.example.org/fastcgi/dispatch.fcgi&lt;br /&gt;
  #!/usr/bin/env ruby&lt;br /&gt;
 &lt;br /&gt;
 require_relative &#039;../config/environment&#039;&lt;br /&gt;
 &lt;br /&gt;
 class Rack::PathInfoRewriter&lt;br /&gt;
   def initialize(app)&lt;br /&gt;
     @app = app&lt;br /&gt;
   end&lt;br /&gt;
 &lt;br /&gt;
   def call(env)&lt;br /&gt;
     env.delete(&#039;SCRIPT_NAME&#039;)&lt;br /&gt;
     parts = env[&#039;REQUEST_URI&#039;].split(&#039;?&#039;)&lt;br /&gt;
     env[&#039;PATH_INFO&#039;] = parts[0]&lt;br /&gt;
     env[&#039;QUERY_STRING&#039;] = parts[1].to_s&lt;br /&gt;
     @app.call(env)&lt;br /&gt;
   end&lt;br /&gt;
 end&lt;br /&gt;
 &lt;br /&gt;
 Rack::Handler::FastCGI.run  Rack::PathInfoRewriter.new(HIER_APPLIKATIONSNAME_AUS_config/application.rb_EINTRAGEN::Application)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
FastCGI-Skript ausführbar machen:&lt;br /&gt;
&lt;br /&gt;
 chmod 755 ~/doms/www.example.org/fastcgi/dispatch.fcgi&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Am Anfang von ~/doms/www.example.org/rails/config/environment.rb einfügen:&lt;br /&gt;
&lt;br /&gt;
 ENV[&#039;RAILS_ENV&#039;] ||= &#039;production&#039;&lt;br /&gt;
 ENV[&#039;GEM_PATH&#039;] ||= &#039;/home/pacs/xyz00/users/meinuser/.gem/ruby/1.8:/var/lib/gems/1.8&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Die Applikation ins Webroot einbinden:&lt;br /&gt;
&lt;br /&gt;
 cd ~/doms/www.example.org&lt;br /&gt;
 # ggf. vorhandene Dateien sichern (oder nach ~/doms/www.example.org/rails/public kopieren),&lt;br /&gt;
 mv htdocs htdocs.old&lt;br /&gt;
 # und das entsprechende public/ Verzeichnis der Rails-Anwendung im Webroot verlinken.&lt;br /&gt;
 # Standardmäsig /home/doms/www.example.org/rails/public,&lt;br /&gt;
 # bei multi-site Anwendungen wie zena aber z.B. /home/doms/www.example.org/rails/site/www.example.org/public&lt;br /&gt;
 ln -s /home/doms/www.example.org/rails/public htdocs&lt;br /&gt;
&lt;br /&gt;
=== Konfiguration von SSL ===&lt;br /&gt;
&lt;br /&gt;
Die Verzeichnisse ~/doms/www.example.org/fastcgi-ssl/ und ~/doms/www.example.org/htdocs-ssl/ werden analog zu bzw. anstelle von fastcgi und htdocs gefüllt.&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:HSDoku]]&lt;br /&gt;
[[Kategorie:Installationsanleitungen]]&lt;br /&gt;
[[Kategorie:Software]]&lt;br /&gt;
[[Kategorie:Glossar]]&lt;/div&gt;</summary>
		<author><name>Srv00-wiki</name></author>
	</entry>
	<entry>
		<id>https://wiki.hostsharing.net/index.php?title=RubyOnRails&amp;diff=3481</id>
		<title>RubyOnRails</title>
		<link rel="alternate" type="text/html" href="https://wiki.hostsharing.net/index.php?title=RubyOnRails&amp;diff=3481"/>
		<updated>2012-09-02T18:33:44Z</updated>

		<summary type="html">&lt;p&gt;Srv00-wiki: /* Konfiguration von FastCGI */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Bestes Ruby on Rails Hosting bei Hostsharing ==&lt;br /&gt;
&lt;br /&gt;
Rubyanwendungen laufen (wie alle Anwendungen bei Hostsharing) als Prozesse des jeweiligen Benutzersaccounts. Probleme mit Dateirechten und Sicherheitsrisiken, wie sie sonst bei der Ausführung durch den Webserver auftreten, sind so von vorne herein ausgeschlossen.&lt;br /&gt;
&lt;br /&gt;
Standardmäßig erfolgt der Aufruf von Ruby Anwendungen durch den Apache Webserver über die FastCGI Schnittstelle. Dabei wird die Ruby Application Server Instanz des Users nach einem Aufruf noch für einige Zeit bereit gehalten, um sofort zur Bearbeitung von weiteren noch nicht gecacheten, oder gar nicht cachebaren, Anfragen zur Verfügung zu stehen.&lt;br /&gt;
&lt;br /&gt;
Für den Betrieb von noch anspruchsvolleren Anwendungen haben wir auch Tools wie haproxy, varnish, nginx etc. installiert. Wir können auch mod_passenger (mod_wsgi haben wir schon) oder mongrel oder Green Unicorn (gunicorn) installieren. Anwender, die damit auf unserer leistungsfähigen Infrastruktur (managed Plattform) z.B. einen Webserver Cluster mit load-balancing realisieren möchten, brauchen bei uns dafür nur eigene Daemons buchen, können dies aber auch (für größere Projekte) mit einer beliebigen Anzahl ganzer Server realisieren.&lt;br /&gt;
&lt;br /&gt;
== Einrichtung ohne zusätzliche Daemons (ein Application Server) ==&lt;br /&gt;
&lt;br /&gt;
=== Vorbereitungen ===&lt;br /&gt;
&lt;br /&gt;
Einige Einstellungen für den Paketuser.&lt;br /&gt;
&lt;br /&gt;
~/.gemrc&lt;br /&gt;
 install: --no-rdoc --no-ri&lt;br /&gt;
 update:  --no-rdoc --no-ri&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
~/.bashrc&lt;br /&gt;
 alias gem=&amp;quot;nice -n19 gem&amp;quot;&lt;br /&gt;
&lt;br /&gt;
~/.profile&lt;br /&gt;
 source &amp;quot;$HOME/.bashrc&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== Ruby ===&lt;br /&gt;
&lt;br /&gt;
==== Vorinstalliert ====&lt;br /&gt;
&lt;br /&gt;
Soll nur die zentral installierte Ruby Version 1.8 verwendet werden, ergänzt man man in ~/.profile:&lt;br /&gt;
 # enable user&#039;s own ruby installations, keeping all stuff below $HOME/.gem&lt;br /&gt;
 export PATH=&amp;quot;$HOME/bin:$HOME/.gem/ruby/1.8/bin:$PATH&amp;quot;&lt;br /&gt;
 export GEM_PATH=&amp;quot;$HOME/.gem/ruby/1.8:$( gem env gempath )&amp;quot;&lt;br /&gt;
 export GEM_HOME=&amp;quot;$HOME/.gem/ruby/1.8&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 # Disabled for now, because using system libs caused undefined method error.&lt;br /&gt;
 #export RUBYLIB=&amp;quot;$HOME/.gem/ruby/1.8/lib:/usr/local/lib/site_ruby/1.8:/usr/lib/ruby/1.8&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 # avoid to forget that extra parameter: ruby -rubygems prog_that_uses_gems&lt;br /&gt;
 export RUBYOPT=rubygems&lt;br /&gt;
 &lt;br /&gt;
 export RAILS_ENV=production&lt;br /&gt;
&lt;br /&gt;
==== Eigene Installation ====&lt;br /&gt;
&lt;br /&gt;
Um eine andere als die vorinstallierte Ruby Version zu verwenden, installiert man zunächst den Ruby Versions Manager (rvm),&lt;br /&gt;
 curl -L https://get.rvm.io | bash -s stable&lt;br /&gt;
 source ~/.rvm/scripts/rvm&lt;br /&gt;
 rvm notes&lt;br /&gt;
 rvm requirements&lt;br /&gt;
 rvm pkg install openssl&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
und lässt dann die gewünschte Ruby Version installieren.&lt;br /&gt;
 rvm install x.y.z&lt;br /&gt;
&lt;br /&gt;
RVM passt die Umgebungsvariablen automatisch an die ausgewählt Version an. Die Version wählt man global per&lt;br /&gt;
 rvm use x.y.z --default&lt;br /&gt;
oder nur für ein spezielles Verzeichnis:&lt;br /&gt;
 cd ~/verzeichnis/mit/ruby-x.y.z-Anwendung&lt;br /&gt;
 rvm use x.y.z-p??? --rvmrc&lt;br /&gt;
&lt;br /&gt;
Zur Verwaltung von gems installiert man noch rubygems.&lt;br /&gt;
 rvm rubygems current&lt;br /&gt;
&lt;br /&gt;
=== Rails ===&lt;br /&gt;
&lt;br /&gt;
Falls man die Ruby-Umgebung gerade erst eingerichtet hat, ohne sich zwischenzeitlich abzumelden, muß man zunächst die Umgebung manuell laden.&lt;br /&gt;
 source ~/.profile&lt;br /&gt;
&lt;br /&gt;
Nun kann Rails per &amp;quot;gem install rails&amp;quot; installiert werden (inklusive Abhängigkeiten).&lt;br /&gt;
Um spezielle versionen zu installieren kann man den gem Befehl mit &amp;quot;-v=x.y.z&amp;quot; ergänzen.&lt;br /&gt;
&lt;br /&gt;
Zum Testen hier ein Beispiel das gleich noch eine Content und Daten Management Anwendung installiert (http://zenadmin.org) und diese mit einer sqlite Datenbankdatei einrichtet:&lt;br /&gt;
 gem install rails -v=2.3.11&lt;br /&gt;
 gem install i18n sexp_processor rmagick sqlite3 zena&lt;br /&gt;
 zena new ~/doms/www.example.org/rails      # Zena Rails-Anwendung anlegen.&lt;br /&gt;
 cd ~/doms/www.example.org/rails&lt;br /&gt;
 rake db:create        # Datenbank anlegen.&lt;br /&gt;
 zena migrate          # Datenbank Tabellen einrichten.&lt;br /&gt;
 zena mksite LANG=en RAILS_ENV=production PASSWORD=geheim HOST=www.example.org # Webseite anlegen.&lt;br /&gt;
&lt;br /&gt;
=== Rails-Anwendung ===&lt;br /&gt;
&lt;br /&gt;
Seine eigene Rails-Anwendung kopiert man z.B. nach ~/doms/www.example.org/rails, oder erstellt dort eine Neue (rails ~/doms/www.example.org/rails, ...).&lt;br /&gt;
&lt;br /&gt;
=== Datenbank ===&lt;br /&gt;
&lt;br /&gt;
Mit &#039;&#039;hsadmin&#039;&#039; beispielsweise einen Postgres-User (z.B. &#039;xyz00_rails&#039;, Passwort sei &#039;geheim&#039;) sowie eine Datenbank anlegen (z.B. &#039;xyz00_rails&#039;.&lt;br /&gt;
&lt;br /&gt;
Die Datenbank in der Anwendung konfigurieren,&lt;br /&gt;
&lt;br /&gt;
 cd ~/doms/www.example.org/rails/config/&lt;br /&gt;
 nano database.yml&lt;br /&gt;
&lt;br /&gt;
mit folgendem Inhalt:&lt;br /&gt;
&lt;br /&gt;
 production:&lt;br /&gt;
    adapter: postgresql&lt;br /&gt;
    database: xyz00_rails&lt;br /&gt;
    host: localhost&lt;br /&gt;
    username: xyz00_rails&lt;br /&gt;
    password: geheim&lt;br /&gt;
&lt;br /&gt;
=== E-Mail, Dateiablage ===&lt;br /&gt;
&lt;br /&gt;
Beispielhafte Konfiguration:&lt;br /&gt;
&lt;br /&gt;
 default:&lt;br /&gt;
    email_delivery:&lt;br /&gt;
      delivery_method: :smtp&lt;br /&gt;
      smtp_settings:&lt;br /&gt;
        address: localhost&lt;br /&gt;
        port: 25&lt;br /&gt;
        domain: www.example.org&lt;br /&gt;
    attachments_storage_path: /home/doms/www.example.org/rails/attach&lt;br /&gt;
&lt;br /&gt;
=== Datenbankschema ===&lt;br /&gt;
&lt;br /&gt;
Initialisieren und migrieren der Datenbank (je nach Rails-Anwendung).&lt;br /&gt;
&lt;br /&gt;
 cd ~/doms/www.example.org/rails&lt;br /&gt;
 ...&lt;br /&gt;
 rake ...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Konfiguration von FastCGI ===&lt;br /&gt;
&lt;br /&gt;
~/doms/www.example.org/htdocs/.htaccess&lt;br /&gt;
&lt;br /&gt;
 RewriteEngine On&lt;br /&gt;
 RewriteRule ^$ index.html [QSA]&lt;br /&gt;
 RewriteRule ^([^.]+)$ $1.html [QSA]&lt;br /&gt;
 RewriteCond %{REQUEST_FILENAME} !-f [OR]&lt;br /&gt;
 RewriteCond %{REQUEST_FILENAME} dispatch.fcgi$&lt;br /&gt;
 RewriteRule ^(.*)$ /fastcgi-bin/dispatch.fcgi [QSA,L]&lt;br /&gt;
&lt;br /&gt;
Ältere Versionen von Rails, die noch nicht auf der &amp;quot;rack&amp;quot; Middleware aufbauen (wie obiges zena Beispiel), laufen mit folgender ~/doms/www.example.org/fastcgi/dispatch.fcgi&lt;br /&gt;
&lt;br /&gt;
 #!/usr/bin/env ruby&lt;br /&gt;
 require &amp;quot;/home/doms/www.example.org/rails/config/environment&amp;quot; &lt;br /&gt;
 require &#039;fcgi_handler&#039;&lt;br /&gt;
 RailsFCGIHandler.process!&lt;br /&gt;
&lt;br /&gt;
Für aktuelle Versionen von Rails, die auf &amp;quot;rack&amp;quot; aufbauen, siehe https://github.com/dre3k/rails3_fcgi, ~/doms/www.example.org/fastcgi/dispatch.fcgi&lt;br /&gt;
  #!/usr/bin/env ruby&lt;br /&gt;
 &lt;br /&gt;
 require_relative &#039;../config/environment&#039;&lt;br /&gt;
 &lt;br /&gt;
 class Rack::PathInfoRewriter&lt;br /&gt;
   def initialize(app)&lt;br /&gt;
     @app = app&lt;br /&gt;
   end&lt;br /&gt;
 &lt;br /&gt;
   def call(env)&lt;br /&gt;
     env.delete(&#039;SCRIPT_NAME&#039;)&lt;br /&gt;
     parts = env[&#039;REQUEST_URI&#039;].split(&#039;?&#039;)&lt;br /&gt;
     env[&#039;PATH_INFO&#039;] = parts[0]&lt;br /&gt;
     env[&#039;QUERY_STRING&#039;] = parts[1].to_s&lt;br /&gt;
     @app.call(env)&lt;br /&gt;
   end&lt;br /&gt;
 end&lt;br /&gt;
 &lt;br /&gt;
 Rack::Handler::FastCGI.run  Rack::PathInfoRewriter.new(HIER_APPLIKATIONSNAME_AUS_config/application.rb_EINTRAGEN::Application)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
FastCGI-Skript ausführbar machen:&lt;br /&gt;
&lt;br /&gt;
 chmod 755 ~/doms/www.example.org/fastcgi/dispatch.fcgi&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Am Anfang von ~/doms/www.example.org/rails/config/environment.rb einfügen:&lt;br /&gt;
&lt;br /&gt;
 ENV[&#039;RAILS_ENV&#039;] ||= &#039;production&#039;&lt;br /&gt;
 ENV[&#039;GEM_PATH&#039;] ||= &#039;/home/pacs/xyz00/users/meinuser/.gem/ruby/1.8:/var/lib/gems/1.8&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Die Applikation ins Webroot einbinden:&lt;br /&gt;
&lt;br /&gt;
 cd ~/doms/www.example.org&lt;br /&gt;
 # ggf. vorhandene Dateien sichern (oder nach ~/doms/www.example.org/rails/public kopieren),&lt;br /&gt;
 mv htdocs htdocs.old&lt;br /&gt;
 # und das entsprechende public/ Verzeichnis der Rails-Anwendung im Webroot verlinken.&lt;br /&gt;
 # Standardmäsig /home/doms/www.example.org/rails/public,&lt;br /&gt;
 # bei multi-site Anwendungen wie zena aber z.B. /home/doms/www.example.org/rails/site/www.example.org/public&lt;br /&gt;
 ln -s /home/doms/www.example.org/rails/public htdocs&lt;br /&gt;
&lt;br /&gt;
=== Konfiguration von SSL ===&lt;br /&gt;
&lt;br /&gt;
Die Verzeichnisse ~/doms/www.example.org/fastcgi-ssl/ und ~/doms/www.example.org/htdocs-ssl/ werden analog zu bzw. anstelle von fastcgi und htdocs gefüllt.&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:HSDoku]]&lt;br /&gt;
[[Kategorie:Installationsanleitungen]]&lt;br /&gt;
[[Kategorie:Software]]&lt;br /&gt;
[[Kategorie:Glossar]]&lt;/div&gt;</summary>
		<author><name>Srv00-wiki</name></author>
	</entry>
	<entry>
		<id>https://wiki.hostsharing.net/index.php?title=RubyOnRails&amp;diff=3480</id>
		<title>RubyOnRails</title>
		<link rel="alternate" type="text/html" href="https://wiki.hostsharing.net/index.php?title=RubyOnRails&amp;diff=3480"/>
		<updated>2012-09-02T18:30:51Z</updated>

		<summary type="html">&lt;p&gt;Srv00-wiki: /* Konfiguration von FastCGI */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Bestes Ruby on Rails Hosting bei Hostsharing ==&lt;br /&gt;
&lt;br /&gt;
Rubyanwendungen laufen (wie alle Anwendungen bei Hostsharing) als Prozesse des jeweiligen Benutzersaccounts. Probleme mit Dateirechten und Sicherheitsrisiken, wie sie sonst bei der Ausführung durch den Webserver auftreten, sind so von vorne herein ausgeschlossen.&lt;br /&gt;
&lt;br /&gt;
Standardmäßig erfolgt der Aufruf von Ruby Anwendungen durch den Apache Webserver über die FastCGI Schnittstelle. Dabei wird die Ruby Application Server Instanz des Users nach einem Aufruf noch für einige Zeit bereit gehalten, um sofort zur Bearbeitung von weiteren noch nicht gecacheten, oder gar nicht cachebaren, Anfragen zur Verfügung zu stehen.&lt;br /&gt;
&lt;br /&gt;
Für den Betrieb von noch anspruchsvolleren Anwendungen haben wir auch Tools wie haproxy, varnish, nginx etc. installiert. Wir können auch mod_passenger (mod_wsgi haben wir schon) oder mongrel oder Green Unicorn (gunicorn) installieren. Anwender, die damit auf unserer leistungsfähigen Infrastruktur (managed Plattform) z.B. einen Webserver Cluster mit load-balancing realisieren möchten, brauchen bei uns dafür nur eigene Daemons buchen, können dies aber auch (für größere Projekte) mit einer beliebigen Anzahl ganzer Server realisieren.&lt;br /&gt;
&lt;br /&gt;
== Einrichtung ohne zusätzliche Daemons (ein Application Server) ==&lt;br /&gt;
&lt;br /&gt;
=== Vorbereitungen ===&lt;br /&gt;
&lt;br /&gt;
Einige Einstellungen für den Paketuser.&lt;br /&gt;
&lt;br /&gt;
~/.gemrc&lt;br /&gt;
 install: --no-rdoc --no-ri&lt;br /&gt;
 update:  --no-rdoc --no-ri&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
~/.bashrc&lt;br /&gt;
 alias gem=&amp;quot;nice -n19 gem&amp;quot;&lt;br /&gt;
&lt;br /&gt;
~/.profile&lt;br /&gt;
 source &amp;quot;$HOME/.bashrc&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== Ruby ===&lt;br /&gt;
&lt;br /&gt;
==== Vorinstalliert ====&lt;br /&gt;
&lt;br /&gt;
Soll nur die zentral installierte Ruby Version 1.8 verwendet werden, ergänzt man man in ~/.profile:&lt;br /&gt;
 # enable user&#039;s own ruby installations, keeping all stuff below $HOME/.gem&lt;br /&gt;
 export PATH=&amp;quot;$HOME/bin:$HOME/.gem/ruby/1.8/bin:$PATH&amp;quot;&lt;br /&gt;
 export GEM_PATH=&amp;quot;$HOME/.gem/ruby/1.8:$( gem env gempath )&amp;quot;&lt;br /&gt;
 export GEM_HOME=&amp;quot;$HOME/.gem/ruby/1.8&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 # Disabled for now, because using system libs caused undefined method error.&lt;br /&gt;
 #export RUBYLIB=&amp;quot;$HOME/.gem/ruby/1.8/lib:/usr/local/lib/site_ruby/1.8:/usr/lib/ruby/1.8&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 # avoid to forget that extra parameter: ruby -rubygems prog_that_uses_gems&lt;br /&gt;
 export RUBYOPT=rubygems&lt;br /&gt;
 &lt;br /&gt;
 export RAILS_ENV=production&lt;br /&gt;
&lt;br /&gt;
==== Eigene Installation ====&lt;br /&gt;
&lt;br /&gt;
Um eine andere als die vorinstallierte Ruby Version zu verwenden, installiert man zunächst den Ruby Versions Manager (rvm),&lt;br /&gt;
 curl -L https://get.rvm.io | bash -s stable&lt;br /&gt;
 source ~/.rvm/scripts/rvm&lt;br /&gt;
 rvm notes&lt;br /&gt;
 rvm requirements&lt;br /&gt;
 rvm pkg install openssl&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
und lässt dann die gewünschte Ruby Version installieren.&lt;br /&gt;
 rvm install x.y.z&lt;br /&gt;
&lt;br /&gt;
RVM passt die Umgebungsvariablen automatisch an die ausgewählt Version an. Die Version wählt man global per&lt;br /&gt;
 rvm use x.y.z --default&lt;br /&gt;
oder nur für ein spezielles Verzeichnis:&lt;br /&gt;
 cd ~/verzeichnis/mit/ruby-x.y.z-Anwendung&lt;br /&gt;
 rvm use x.y.z-p??? --rvmrc&lt;br /&gt;
&lt;br /&gt;
Zur Verwaltung von gems installiert man noch rubygems.&lt;br /&gt;
 rvm rubygems current&lt;br /&gt;
&lt;br /&gt;
=== Rails ===&lt;br /&gt;
&lt;br /&gt;
Falls man die Ruby-Umgebung gerade erst eingerichtet hat, ohne sich zwischenzeitlich abzumelden, muß man zunächst die Umgebung manuell laden.&lt;br /&gt;
 source ~/.profile&lt;br /&gt;
&lt;br /&gt;
Nun kann Rails per &amp;quot;gem install rails&amp;quot; installiert werden (inklusive Abhängigkeiten).&lt;br /&gt;
Um spezielle versionen zu installieren kann man den gem Befehl mit &amp;quot;-v=x.y.z&amp;quot; ergänzen.&lt;br /&gt;
&lt;br /&gt;
Zum Testen hier ein Beispiel das gleich noch eine Content und Daten Management Anwendung installiert (http://zenadmin.org) und diese mit einer sqlite Datenbankdatei einrichtet:&lt;br /&gt;
 gem install rails -v=2.3.11&lt;br /&gt;
 gem install i18n sexp_processor rmagick sqlite3 zena&lt;br /&gt;
 zena new ~/doms/www.example.org/rails      # Zena Rails-Anwendung anlegen.&lt;br /&gt;
 cd ~/doms/www.example.org/rails&lt;br /&gt;
 rake db:create        # Datenbank anlegen.&lt;br /&gt;
 zena migrate          # Datenbank Tabellen einrichten.&lt;br /&gt;
 zena mksite LANG=en RAILS_ENV=production PASSWORD=geheim HOST=www.example.org # Webseite anlegen.&lt;br /&gt;
&lt;br /&gt;
=== Rails-Anwendung ===&lt;br /&gt;
&lt;br /&gt;
Seine eigene Rails-Anwendung kopiert man z.B. nach ~/doms/www.example.org/rails, oder erstellt dort eine Neue (rails ~/doms/www.example.org/rails, ...).&lt;br /&gt;
&lt;br /&gt;
=== Datenbank ===&lt;br /&gt;
&lt;br /&gt;
Mit &#039;&#039;hsadmin&#039;&#039; beispielsweise einen Postgres-User (z.B. &#039;xyz00_rails&#039;, Passwort sei &#039;geheim&#039;) sowie eine Datenbank anlegen (z.B. &#039;xyz00_rails&#039;.&lt;br /&gt;
&lt;br /&gt;
Die Datenbank in der Anwendung konfigurieren,&lt;br /&gt;
&lt;br /&gt;
 cd ~/doms/www.example.org/rails/config/&lt;br /&gt;
 nano database.yml&lt;br /&gt;
&lt;br /&gt;
mit folgendem Inhalt:&lt;br /&gt;
&lt;br /&gt;
 production:&lt;br /&gt;
    adapter: postgresql&lt;br /&gt;
    database: xyz00_rails&lt;br /&gt;
    host: localhost&lt;br /&gt;
    username: xyz00_rails&lt;br /&gt;
    password: geheim&lt;br /&gt;
&lt;br /&gt;
=== E-Mail, Dateiablage ===&lt;br /&gt;
&lt;br /&gt;
Beispielhafte Konfiguration:&lt;br /&gt;
&lt;br /&gt;
 default:&lt;br /&gt;
    email_delivery:&lt;br /&gt;
      delivery_method: :smtp&lt;br /&gt;
      smtp_settings:&lt;br /&gt;
        address: localhost&lt;br /&gt;
        port: 25&lt;br /&gt;
        domain: www.example.org&lt;br /&gt;
    attachments_storage_path: /home/doms/www.example.org/rails/attach&lt;br /&gt;
&lt;br /&gt;
=== Datenbankschema ===&lt;br /&gt;
&lt;br /&gt;
Initialisieren und migrieren der Datenbank (je nach Rails-Anwendung).&lt;br /&gt;
&lt;br /&gt;
 cd ~/doms/www.example.org/rails&lt;br /&gt;
 ...&lt;br /&gt;
 rake ...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Konfiguration von FastCGI ===&lt;br /&gt;
&lt;br /&gt;
~/doms/www.example.org/htdocs/.htaccess&lt;br /&gt;
&lt;br /&gt;
 RewriteEngine On&lt;br /&gt;
 RewriteRule ^$ index.html [QSA]&lt;br /&gt;
 RewriteRule ^([^.]+)$ $1.html [QSA]&lt;br /&gt;
 RewriteCond %{REQUEST_FILENAME} !-f [OR]&lt;br /&gt;
 RewriteCond %{REQUEST_FILENAME} dispatch.fcgi$&lt;br /&gt;
 RewriteRule ^(.*)$ /fastcgi-bin/dispatch.fcgi [QSA,L]&lt;br /&gt;
&lt;br /&gt;
Ältere Versionen von Rails, die noch nicht auf der &amp;quot;rack&amp;quot; Middleware aufbauen (wie obiges zena Beispiel), laufen mit folgender ~/doms/www.example.org/fastcgi/dispatch.fcgi&lt;br /&gt;
&lt;br /&gt;
 #!/usr/bin/env ruby&lt;br /&gt;
 require &amp;quot;/home/doms/www.example.org/rails/config/environment&amp;quot; &lt;br /&gt;
 require &#039;fcgi_handler&#039;&lt;br /&gt;
 RailsFCGIHandler.process!&lt;br /&gt;
&lt;br /&gt;
Für aktuelle Versionen von Rails, die auf &amp;quot;rack&amp;quot; aufbauen, siehe https://github.com/dre3k/rails3_fcgi, ~/doms/www.example.org/fastcgi/dispatch.fcgi&lt;br /&gt;
  #!/usr/bin/env ruby&lt;br /&gt;
 &lt;br /&gt;
 require_relative &#039;../config/environment&#039;&lt;br /&gt;
 &lt;br /&gt;
 class Rack::PathInfoRewriter&lt;br /&gt;
   def initialize(app)&lt;br /&gt;
     @app = app&lt;br /&gt;
   end&lt;br /&gt;
 &lt;br /&gt;
   def call(env)&lt;br /&gt;
     env.delete(&#039;SCRIPT_NAME&#039;)&lt;br /&gt;
     parts = env[&#039;REQUEST_URI&#039;].split(&#039;?&#039;)&lt;br /&gt;
     env[&#039;PATH_INFO&#039;] = parts[0]&lt;br /&gt;
     env[&#039;QUERY_STRING&#039;] = parts[1].to_s&lt;br /&gt;
     @app.call(env)&lt;br /&gt;
   end&lt;br /&gt;
 end&lt;br /&gt;
 &lt;br /&gt;
 Rack::Handler::FastCGI.run  Rack::PathInfoRewriter.new(HIER_APPLIKATIONSNAME_AUS_config/application.rb_EINTRAGEN::Application)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
FastCGI-Skript ausführbar machen:&lt;br /&gt;
&lt;br /&gt;
 chmod 755 ~/doms/www.example.org/fastcgi/dispatch.fcgi&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Am Anfang von ~/doms/www.example.org/rails/config/environment.rb einfügen:&lt;br /&gt;
&lt;br /&gt;
 ENV[&#039;RAILS_ENV&#039;] ||= &#039;production&#039;&lt;br /&gt;
 ENV[&#039;GEM_PATH&#039;] ||= &#039;/home/pacs/xyz00/users/meinuser/.gem/ruby/1.8:/var/lib/gems/1.8&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Die Applikation ins Webroot einbinden:&lt;br /&gt;
&lt;br /&gt;
 cd ~/doms/www.example.org&lt;br /&gt;
 # ggf. vorhandene Dateien sichern (oder nach ~/doms/www.example.org/rails/public kopieren)&lt;br /&gt;
 mv htdocs htdocs.old&lt;br /&gt;
 # Das public/ Verzeichnis der Rails-Anwendung ins Webroot verlinken.&lt;br /&gt;
 # Standardmäsig /home/doms/www.example.org/rails/public,&lt;br /&gt;
 # bei multi-site Anwendungen wie zena aber z.B. /home/doms/www.example.org/rails/site/www.example.org/public&lt;br /&gt;
 ln -s /home/doms/www.example.org/rails/public htdocs&lt;br /&gt;
&lt;br /&gt;
=== Konfiguration von SSL ===&lt;br /&gt;
&lt;br /&gt;
Die Verzeichnisse ~/doms/www.example.org/fastcgi-ssl/ und ~/doms/www.example.org/htdocs-ssl/ werden analog zu bzw. anstelle von fastcgi und htdocs gefüllt.&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:HSDoku]]&lt;br /&gt;
[[Kategorie:Installationsanleitungen]]&lt;br /&gt;
[[Kategorie:Software]]&lt;br /&gt;
[[Kategorie:Glossar]]&lt;/div&gt;</summary>
		<author><name>Srv00-wiki</name></author>
	</entry>
	<entry>
		<id>https://wiki.hostsharing.net/index.php?title=MySQL&amp;diff=3479</id>
		<title>MySQL</title>
		<link rel="alternate" type="text/html" href="https://wiki.hostsharing.net/index.php?title=MySQL&amp;diff=3479"/>
		<updated>2012-09-02T18:14:02Z</updated>

		<summary type="html">&lt;p&gt;Srv00-wiki: /* Weitere Benutzer anlegen */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Server ==&lt;br /&gt;
&lt;br /&gt;
Wir haben pro Host einen einzelnen MySQL Datenbankserver. Der Zugriff erfolgt über den Hostnamen &amp;lt;b&amp;gt;localhost&amp;lt;/b&amp;gt; und den Port 3306 (default). Außerdem kann der Server über den Socket &amp;lt;b&amp;gt;/var/run/mysqld/mysqld.sock&amp;lt;/b&amp;gt; erreicht werden.&lt;br /&gt;
&lt;br /&gt;
Die Anzahl der in Hostsharing Dynamic-Web-Paketen verwendbaren MySQL-Datenbanken ist ist durch die&lt;br /&gt;
Anzahl der jeweils gebuchten Multioptionen begrenzt. Der damit verbrauchte Speicherplatz geht in die Quota des Paketes mit ein, sodass hierüber eine zusätzliche Begrenzung vorliegt. Alle Datenbanken eines Paketes müssen mit dem Paketnamen und einem Underscore beginnen, also z.B. &amp;lt;b&amp;gt;xyz00_datenbank&amp;lt;/b&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== MySQL-User ==&lt;br /&gt;
&lt;br /&gt;
{{Textkasten|gruen||Die Namen der Datenbank-Benutzer müssen in keiner Beziehung zu den Unix-Benutzernamen auf den Hostsharing-Systemen stehen, also den Namen, die für den [[shell]]-Zugang verwendet werden.}}&lt;br /&gt;
&lt;br /&gt;
Es gilt jedoch die Regel, dass die Namen aller Datenbank-Benutzer eines Pakets mit dem Paketkürzel beginnen. Eine sinnvolle Konvention ist es, sofern man als Paketadministrator einen zentralen Datenbank-Administrator für alle Datenbanken einrichten möchte, diesen nur nach dem Paket zu benennen (z. B. &#039;&#039;&#039;xyz00&#039;&#039;&#039;). So zeigt der kurze Name die Sonderstellung an und der Paket-Administrator gleichzeitig zentraler Datenbankadministrator ist, kann er seinen Datenbank-Benutzernamen nicht ohne den Paket-Namen vergessen, sprich immer leicht ableiten.&lt;br /&gt;
&lt;br /&gt;
Weitere Datenbank-Benutzernamen können aus dem Paket-Namen, einem Unterstrich, und einer freien Zeichenfolge gebildet werden. Also kann der Paketadmin &#039;&#039;&#039;xyz00&#039;&#039;&#039; weitere User der Form &#039;&#039;&#039;xyz00_abc&#039;&#039;&#039; einrichten. Beachte die Differenz zu Unix-User-Namen, die nicht mit Unterstrich, sondern mit Bindestrich gebildet werden (&#039;&#039;&#039;xyz00&#039;&#039;&#039; -&amp;gt; &#039;&#039;&#039;xyz00-abc&#039;&#039;&#039;).&lt;br /&gt;
&lt;br /&gt;
Sinnvoll ist es z.B. für jede Anwendung eine eigene Datenbank und mindestens einen auf die jeweilige Datenbank beschränkten Benutzer anzulegen.&lt;br /&gt;
&lt;br /&gt;
=== Paketadmin ===&lt;br /&gt;
&lt;br /&gt;
Der Paketadmin hat mit seinem Account sehr weitgehende administrative Rechte in MySQL und sollte dementsprechend mit Umsicht genutzt werden. Er kann mit seinem Account im Administrationswerkzeug [[hsadmin]] unter anderem:&lt;br /&gt;
&lt;br /&gt;
* Datenbanken anlegen und löschen&lt;br /&gt;
* Datenbank-Benutzer anlegen und löschen&lt;br /&gt;
&lt;br /&gt;
Bevor man in seinem Paket eine Datenbank anlegen kann, muss man zunächst einen Datenbank-Benutzer einrichten, den man zum Datenbank-Administrator machen kann. Das ist zwingend notwendig. Datenbank-Administrator kann ein Datenbank-User mit dem Kürzel des Paketadmins sein (&amp;lt;b&amp;gt;xyz00&amp;lt;/b&amp;gt;). Es können allerdings auch beliebige Namen, die mit dem Paketkürzel &amp;lt;b&amp;gt;xyz00_...&amp;lt;/b&amp;gt; beginnen angelegt werden. Ein Datenbank-Adminstrator hat alle Rechte an einer Datenbank und wird wie unter &amp;quot;[[Datenbanken#Verwaltung_von_Datenbanken |Verwaltung von Datenbanken]]&amp;quot; beschrieben eingerichtet.&lt;br /&gt;
&lt;br /&gt;
=== Weitere Benutzer anlegen ===&lt;br /&gt;
&lt;br /&gt;
Du kannst Dir weitere Benutzer für MySQL anlegen. Wir empfehlen Dir das ausdrücklich, weil es eine gute Idee ist, den mächtigen Zugang eines Datenbank-Admins nur für administrative Zwecke zu benutzen. Wenn Skripte z.B. keine ganzen Tabellen löschen dürfen (drop) kann dies auch nicht aus versehen oder böswillig geschehen. Für einzelne Aufgaben kannst Du verschiedene Benutzer anlegen, denen Du natürlich auch verschiedene Rechte geben kannst, z.B. nur Leserechte an bestimmten Tabellen oder bestimmte Kommandos.&lt;br /&gt;
&lt;br /&gt;
Wir legen noch einen User an:&lt;br /&gt;
&lt;br /&gt;
siehe [[Datenbanken]]&lt;br /&gt;
&lt;br /&gt;
=== Der MySQL-Monitor ===&lt;br /&gt;
&lt;br /&gt;
Mit den neu angelegten User-Accounts können wir nun in den MySQL-Monitor wechseln, in dem die MySQL-Befehle eingegeben und verarbeitet werden. Der Monitor wird mit dem Befehl &amp;lt;b&amp;gt;mysql&amp;lt;/b&amp;gt; aufgerufen. Es ist hier übrigens egal, ob wir als Paketadmin oder als Domainadmin eingeloggt sind, denn MySQL-User und UNIX-Accounts haben keinen Zusammenhang. Wir können mit jedem UNIX-Account, also auch als normaler Domainadmin auf jeden Datenbank-Account zugreifen - auch auf den Paketadmin-Account.&lt;br /&gt;
&lt;br /&gt;
Da wir uns mit Benutzernamen und Passwort anmelden müssen, verwenden wir die Optionen -u (und danach den Benutzernamen) und -p. Das Passwort geben wir nicht in dieser Kommandozeile an, denn sonst ist es für andere User sichtbar. Wenn wir nach -p nichts angeben, werden wir von mysql danach gefragt und geben es dann an.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
xyz00@hopi$ mysql -u xyz00 -p&lt;br /&gt;
Enter password: password&lt;br /&gt;
Welcome to the MySQL monitor. Commands end with ; or \g.&lt;br /&gt;
Your MySQL connection id is 1257230 to server version: 3.23.49-log&lt;br /&gt;
Type &#039;help;&#039; or &#039;\h&#039; for help. Type &#039;\c&#039; to clear the buffer.&lt;br /&gt;
mysql&amp;gt;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nun können wir MySQL-Befehle eingeben. Zu beachten ist, dass man nach einem Kommando mit einem ; abschließen muss. Es gibt einige Ausnahmen, wo man das nicht braucht, z.B. beim Befehl QUIT, mit dem man den Monitor wieder verlässt.&lt;br /&gt;
=== Datenbank anlegen === &lt;br /&gt;
&lt;br /&gt;
geht nun auch mit [[hsadmin]] siehe [[Datenbanken]].&lt;br /&gt;
&lt;br /&gt;
Datenbanknamen in MySQL beginnen bei Hostsharing immer mit dem Namen des Pakets, gefolgt von einem Unterstrich; danach folgt der frei wählbare eigentliche Name.&lt;br /&gt;
&lt;br /&gt;
Beispiele gültiger Datenbanken für ein Paket &amp;lt;b&amp;gt;xyz00&amp;lt;/b&amp;gt;:&lt;br /&gt;
* &amp;lt;b&amp;gt;xyz00_otto&amp;lt;/b&amp;gt;&lt;br /&gt;
* &amp;lt;b&amp;gt;xyz00_anna&amp;lt;/b&amp;gt;&lt;br /&gt;
* &amp;lt;b&amp;gt;xyz00_db_fuer_hans&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Rechte vergeben ===&lt;br /&gt;
&lt;br /&gt;
Allen Benutzern, außer dem Paketadmin, müssen wir noch Rechte geben, sonst können sie gar nichts machen. Das erledigt man mit dem Befehl &amp;lt;b&amp;gt;GRANT&amp;lt;/b&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
mysql&amp;gt;GRANT SELECT, INSERT, DELETE, UPDATE ON xyz00_meinedatenbank.* TO xyz00_otto;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hinter der Datenbank verwenden wir .*, um alle Tabellen der Datenbank zu inkludieren. &lt;br /&gt;
&lt;br /&gt;
Mit &amp;lt;b&amp;gt;GRANT ALL&amp;lt;/b&amp;gt; kann man einem User auch alle Kommandorechte zuweisen.&lt;br /&gt;
&lt;br /&gt;
Alle Aufgaben können wir jetzt in Zukunft vom User &amp;lt;b&amp;gt;xyz00_otto&amp;lt;/b&amp;gt; erledigen lassen.&lt;br /&gt;
&lt;br /&gt;
== Verschiedenes ==&lt;br /&gt;
&lt;br /&gt;
* Web-Frontend: [http://www.phpmyadmin.net phpMyAdmin] ist unter https://phpmyadmin.hostsharing.net/current erreichbar.&lt;br /&gt;
* Online-Dokumentation: Die Online-Doku zu MySQL gibt es unter http://dev.mysql.com/doc/. Auf dieser Site gibt es auch mehrere Fassungen der kompletten Doku zum Downloaden.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
[[Kategorie:HSDoku]]&lt;br /&gt;
[[Kategorie:Datenbanken]]&lt;br /&gt;
[[Kategorie:Glossar]]&lt;br /&gt;
[[Kategorie:ToDo-Kerndoku]]&lt;/div&gt;</summary>
		<author><name>Srv00-wiki</name></author>
	</entry>
	<entry>
		<id>https://wiki.hostsharing.net/index.php?title=MySQL&amp;diff=3478</id>
		<title>MySQL</title>
		<link rel="alternate" type="text/html" href="https://wiki.hostsharing.net/index.php?title=MySQL&amp;diff=3478"/>
		<updated>2012-09-02T18:13:20Z</updated>

		<summary type="html">&lt;p&gt;Srv00-wiki: /* MySQL-User */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Server ==&lt;br /&gt;
&lt;br /&gt;
Wir haben pro Host einen einzelnen MySQL Datenbankserver. Der Zugriff erfolgt über den Hostnamen &amp;lt;b&amp;gt;localhost&amp;lt;/b&amp;gt; und den Port 3306 (default). Außerdem kann der Server über den Socket &amp;lt;b&amp;gt;/var/run/mysqld/mysqld.sock&amp;lt;/b&amp;gt; erreicht werden.&lt;br /&gt;
&lt;br /&gt;
Die Anzahl der in Hostsharing Dynamic-Web-Paketen verwendbaren MySQL-Datenbanken ist ist durch die&lt;br /&gt;
Anzahl der jeweils gebuchten Multioptionen begrenzt. Der damit verbrauchte Speicherplatz geht in die Quota des Paketes mit ein, sodass hierüber eine zusätzliche Begrenzung vorliegt. Alle Datenbanken eines Paketes müssen mit dem Paketnamen und einem Underscore beginnen, also z.B. &amp;lt;b&amp;gt;xyz00_datenbank&amp;lt;/b&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== MySQL-User ==&lt;br /&gt;
&lt;br /&gt;
{{Textkasten|gruen||Die Namen der Datenbank-Benutzer müssen in keiner Beziehung zu den Unix-Benutzernamen auf den Hostsharing-Systemen stehen, also den Namen, die für den [[shell]]-Zugang verwendet werden.}}&lt;br /&gt;
&lt;br /&gt;
Es gilt jedoch die Regel, dass die Namen aller Datenbank-Benutzer eines Pakets mit dem Paketkürzel beginnen. Eine sinnvolle Konvention ist es, sofern man als Paketadministrator einen zentralen Datenbank-Administrator für alle Datenbanken einrichten möchte, diesen nur nach dem Paket zu benennen (z. B. &#039;&#039;&#039;xyz00&#039;&#039;&#039;). So zeigt der kurze Name die Sonderstellung an und der Paket-Administrator gleichzeitig zentraler Datenbankadministrator ist, kann er seinen Datenbank-Benutzernamen nicht ohne den Paket-Namen vergessen, sprich immer leicht ableiten.&lt;br /&gt;
&lt;br /&gt;
Weitere Datenbank-Benutzernamen können aus dem Paket-Namen, einem Unterstrich, und einer freien Zeichenfolge gebildet werden. Also kann der Paketadmin &#039;&#039;&#039;xyz00&#039;&#039;&#039; weitere User der Form &#039;&#039;&#039;xyz00_abc&#039;&#039;&#039; einrichten. Beachte die Differenz zu Unix-User-Namen, die nicht mit Unterstrich, sondern mit Bindestrich gebildet werden (&#039;&#039;&#039;xyz00&#039;&#039;&#039; -&amp;gt; &#039;&#039;&#039;xyz00-abc&#039;&#039;&#039;).&lt;br /&gt;
&lt;br /&gt;
Sinnvoll ist es z.B. für jede Anwendung eine eigene Datenbank und mindestens einen auf die jeweilige Datenbank beschränkten Benutzer anzulegen.&lt;br /&gt;
&lt;br /&gt;
=== Paketadmin ===&lt;br /&gt;
&lt;br /&gt;
Der Paketadmin hat mit seinem Account sehr weitgehende administrative Rechte in MySQL und sollte dementsprechend mit Umsicht genutzt werden. Er kann mit seinem Account im Administrationswerkzeug [[hsadmin]] unter anderem:&lt;br /&gt;
&lt;br /&gt;
* Datenbanken anlegen und löschen&lt;br /&gt;
* Datenbank-Benutzer anlegen und löschen&lt;br /&gt;
&lt;br /&gt;
Bevor man in seinem Paket eine Datenbank anlegen kann, muss man zunächst einen Datenbank-Benutzer einrichten, den man zum Datenbank-Administrator machen kann. Das ist zwingend notwendig. Datenbank-Administrator kann ein Datenbank-User mit dem Kürzel des Paketadmins sein (&amp;lt;b&amp;gt;xyz00&amp;lt;/b&amp;gt;). Es können allerdings auch beliebige Namen, die mit dem Paketkürzel &amp;lt;b&amp;gt;xyz00_...&amp;lt;/b&amp;gt; beginnen angelegt werden. Ein Datenbank-Adminstrator hat alle Rechte an einer Datenbank und wird wie unter &amp;quot;[[Datenbanken#Verwaltung_von_Datenbanken |Verwaltung von Datenbanken]]&amp;quot; beschrieben eingerichtet.&lt;br /&gt;
&lt;br /&gt;
=== Weitere Benutzer anlegen ===&lt;br /&gt;
&lt;br /&gt;
Du kannst Dir weitere Benutzer für MySQL anlegen. Wir empfehlen Dir das ausdrücklich, weil es eine gute Idee ist, den mächtigen Zugang eines Datenbank-Admins nur für administrative Zwecke zu benutzen. Wenn Skripten z.B. keine ganzen Tabellen löschen dürfen (drop) kann dies auch nicht aus versehen oder böswillig geschehen. Für einzelne Aufgaben kannst Du verschiedene Benutzer anlegen, denen Du natürlich auch verschiedene Rechte geben kannst, z.B. nur Leserechte an bestimmten Tabellen oder bestimmte Kommandos.&lt;br /&gt;
&lt;br /&gt;
Wir legen noch einen User an:&lt;br /&gt;
&lt;br /&gt;
siehe [[Datenbanken]]&lt;br /&gt;
&lt;br /&gt;
=== Der MySQL-Monitor ===&lt;br /&gt;
&lt;br /&gt;
Mit den neu angelegten User-Accounts können wir nun in den MySQL-Monitor wechseln, in dem die MySQL-Befehle eingegeben und verarbeitet werden. Der Monitor wird mit dem Befehl &amp;lt;b&amp;gt;mysql&amp;lt;/b&amp;gt; aufgerufen. Es ist hier übrigens egal, ob wir als Paketadmin oder als Domainadmin eingeloggt sind, denn MySQL-User und UNIX-Accounts haben keinen Zusammenhang. Wir können mit jedem UNIX-Account, also auch als normaler Domainadmin auf jeden Datenbank-Account zugreifen - auch auf den Paketadmin-Account.&lt;br /&gt;
&lt;br /&gt;
Da wir uns mit Benutzernamen und Passwort anmelden müssen, verwenden wir die Optionen -u (und danach den Benutzernamen) und -p. Das Passwort geben wir nicht in dieser Kommandozeile an, denn sonst ist es für andere User sichtbar. Wenn wir nach -p nichts angeben, werden wir von mysql danach gefragt und geben es dann an.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
xyz00@hopi$ mysql -u xyz00 -p&lt;br /&gt;
Enter password: password&lt;br /&gt;
Welcome to the MySQL monitor. Commands end with ; or \g.&lt;br /&gt;
Your MySQL connection id is 1257230 to server version: 3.23.49-log&lt;br /&gt;
Type &#039;help;&#039; or &#039;\h&#039; for help. Type &#039;\c&#039; to clear the buffer.&lt;br /&gt;
mysql&amp;gt;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nun können wir MySQL-Befehle eingeben. Zu beachten ist, dass man nach einem Kommando mit einem ; abschließen muss. Es gibt einige Ausnahmen, wo man das nicht braucht, z.B. beim Befehl QUIT, mit dem man den Monitor wieder verlässt.&lt;br /&gt;
=== Datenbank anlegen === &lt;br /&gt;
&lt;br /&gt;
geht nun auch mit [[hsadmin]] siehe [[Datenbanken]].&lt;br /&gt;
&lt;br /&gt;
Datenbanknamen in MySQL beginnen bei Hostsharing immer mit dem Namen des Pakets, gefolgt von einem Unterstrich; danach folgt der frei wählbare eigentliche Name.&lt;br /&gt;
&lt;br /&gt;
Beispiele gültiger Datenbanken für ein Paket &amp;lt;b&amp;gt;xyz00&amp;lt;/b&amp;gt;:&lt;br /&gt;
* &amp;lt;b&amp;gt;xyz00_otto&amp;lt;/b&amp;gt;&lt;br /&gt;
* &amp;lt;b&amp;gt;xyz00_anna&amp;lt;/b&amp;gt;&lt;br /&gt;
* &amp;lt;b&amp;gt;xyz00_db_fuer_hans&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Rechte vergeben ===&lt;br /&gt;
&lt;br /&gt;
Allen Benutzern, außer dem Paketadmin, müssen wir noch Rechte geben, sonst können sie gar nichts machen. Das erledigt man mit dem Befehl &amp;lt;b&amp;gt;GRANT&amp;lt;/b&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
mysql&amp;gt;GRANT SELECT, INSERT, DELETE, UPDATE ON xyz00_meinedatenbank.* TO xyz00_otto;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hinter der Datenbank verwenden wir .*, um alle Tabellen der Datenbank zu inkludieren. &lt;br /&gt;
&lt;br /&gt;
Mit &amp;lt;b&amp;gt;GRANT ALL&amp;lt;/b&amp;gt; kann man einem User auch alle Kommandorechte zuweisen.&lt;br /&gt;
&lt;br /&gt;
Alle Aufgaben können wir jetzt in Zukunft vom User &amp;lt;b&amp;gt;xyz00_otto&amp;lt;/b&amp;gt; erledigen lassen.&lt;br /&gt;
&lt;br /&gt;
== Verschiedenes ==&lt;br /&gt;
&lt;br /&gt;
* Web-Frontend: [http://www.phpmyadmin.net phpMyAdmin] ist unter https://phpmyadmin.hostsharing.net/current erreichbar.&lt;br /&gt;
* Online-Dokumentation: Die Online-Doku zu MySQL gibt es unter http://dev.mysql.com/doc/. Auf dieser Site gibt es auch mehrere Fassungen der kompletten Doku zum Downloaden.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
[[Kategorie:HSDoku]]&lt;br /&gt;
[[Kategorie:Datenbanken]]&lt;br /&gt;
[[Kategorie:Glossar]]&lt;br /&gt;
[[Kategorie:ToDo-Kerndoku]]&lt;/div&gt;</summary>
		<author><name>Srv00-wiki</name></author>
	</entry>
	<entry>
		<id>https://wiki.hostsharing.net/index.php?title=RubyOnRails&amp;diff=3477</id>
		<title>RubyOnRails</title>
		<link rel="alternate" type="text/html" href="https://wiki.hostsharing.net/index.php?title=RubyOnRails&amp;diff=3477"/>
		<updated>2012-09-02T18:07:45Z</updated>

		<summary type="html">&lt;p&gt;Srv00-wiki: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Bestes Ruby on Rails Hosting bei Hostsharing ==&lt;br /&gt;
&lt;br /&gt;
Rubyanwendungen laufen (wie alle Anwendungen bei Hostsharing) als Prozesse des jeweiligen Benutzersaccounts. Probleme mit Dateirechten und Sicherheitsrisiken, wie sie sonst bei der Ausführung durch den Webserver auftreten, sind so von vorne herein ausgeschlossen.&lt;br /&gt;
&lt;br /&gt;
Standardmäßig erfolgt der Aufruf von Ruby Anwendungen durch den Apache Webserver über die FastCGI Schnittstelle. Dabei wird die Ruby Application Server Instanz des Users nach einem Aufruf noch für einige Zeit bereit gehalten, um sofort zur Bearbeitung von weiteren noch nicht gecacheten, oder gar nicht cachebaren, Anfragen zur Verfügung zu stehen.&lt;br /&gt;
&lt;br /&gt;
Für den Betrieb von noch anspruchsvolleren Anwendungen haben wir auch Tools wie haproxy, varnish, nginx etc. installiert. Wir können auch mod_passenger (mod_wsgi haben wir schon) oder mongrel oder Green Unicorn (gunicorn) installieren. Anwender, die damit auf unserer leistungsfähigen Infrastruktur (managed Plattform) z.B. einen Webserver Cluster mit load-balancing realisieren möchten, brauchen bei uns dafür nur eigene Daemons buchen, können dies aber auch (für größere Projekte) mit einer beliebigen Anzahl ganzer Server realisieren.&lt;br /&gt;
&lt;br /&gt;
== Einrichtung ohne zusätzliche Daemons (ein Application Server) ==&lt;br /&gt;
&lt;br /&gt;
=== Vorbereitungen ===&lt;br /&gt;
&lt;br /&gt;
Einige Einstellungen für den Paketuser.&lt;br /&gt;
&lt;br /&gt;
~/.gemrc&lt;br /&gt;
 install: --no-rdoc --no-ri&lt;br /&gt;
 update:  --no-rdoc --no-ri&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
~/.bashrc&lt;br /&gt;
 alias gem=&amp;quot;nice -n19 gem&amp;quot;&lt;br /&gt;
&lt;br /&gt;
~/.profile&lt;br /&gt;
 source &amp;quot;$HOME/.bashrc&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== Ruby ===&lt;br /&gt;
&lt;br /&gt;
==== Vorinstalliert ====&lt;br /&gt;
&lt;br /&gt;
Soll nur die zentral installierte Ruby Version 1.8 verwendet werden, ergänzt man man in ~/.profile:&lt;br /&gt;
 # enable user&#039;s own ruby installations, keeping all stuff below $HOME/.gem&lt;br /&gt;
 export PATH=&amp;quot;$HOME/bin:$HOME/.gem/ruby/1.8/bin:$PATH&amp;quot;&lt;br /&gt;
 export GEM_PATH=&amp;quot;$HOME/.gem/ruby/1.8:$( gem env gempath )&amp;quot;&lt;br /&gt;
 export GEM_HOME=&amp;quot;$HOME/.gem/ruby/1.8&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 # Disabled for now, because using system libs caused undefined method error.&lt;br /&gt;
 #export RUBYLIB=&amp;quot;$HOME/.gem/ruby/1.8/lib:/usr/local/lib/site_ruby/1.8:/usr/lib/ruby/1.8&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 # avoid to forget that extra parameter: ruby -rubygems prog_that_uses_gems&lt;br /&gt;
 export RUBYOPT=rubygems&lt;br /&gt;
 &lt;br /&gt;
 export RAILS_ENV=production&lt;br /&gt;
&lt;br /&gt;
==== Eigene Installation ====&lt;br /&gt;
&lt;br /&gt;
Um eine andere als die vorinstallierte Ruby Version zu verwenden, installiert man zunächst den Ruby Versions Manager (rvm),&lt;br /&gt;
 curl -L https://get.rvm.io | bash -s stable&lt;br /&gt;
 source ~/.rvm/scripts/rvm&lt;br /&gt;
 rvm notes&lt;br /&gt;
 rvm requirements&lt;br /&gt;
 rvm pkg install openssl&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
und lässt dann die gewünschte Ruby Version installieren.&lt;br /&gt;
 rvm install x.y.z&lt;br /&gt;
&lt;br /&gt;
RVM passt die Umgebungsvariablen automatisch an die ausgewählt Version an. Die Version wählt man global per&lt;br /&gt;
 rvm use x.y.z --default&lt;br /&gt;
oder nur für ein spezielles Verzeichnis:&lt;br /&gt;
 cd ~/verzeichnis/mit/ruby-x.y.z-Anwendung&lt;br /&gt;
 rvm use x.y.z-p??? --rvmrc&lt;br /&gt;
&lt;br /&gt;
Zur Verwaltung von gems installiert man noch rubygems.&lt;br /&gt;
 rvm rubygems current&lt;br /&gt;
&lt;br /&gt;
=== Rails ===&lt;br /&gt;
&lt;br /&gt;
Falls man die Ruby-Umgebung gerade erst eingerichtet hat, ohne sich zwischenzeitlich abzumelden, muß man zunächst die Umgebung manuell laden.&lt;br /&gt;
 source ~/.profile&lt;br /&gt;
&lt;br /&gt;
Nun kann Rails per &amp;quot;gem install rails&amp;quot; installiert werden (inklusive Abhängigkeiten).&lt;br /&gt;
Um spezielle versionen zu installieren kann man den gem Befehl mit &amp;quot;-v=x.y.z&amp;quot; ergänzen.&lt;br /&gt;
&lt;br /&gt;
Zum Testen hier ein Beispiel das gleich noch eine Content und Daten Management Anwendung installiert (http://zenadmin.org) und diese mit einer sqlite Datenbankdatei einrichtet:&lt;br /&gt;
 gem install rails -v=2.3.11&lt;br /&gt;
 gem install i18n sexp_processor rmagick sqlite3 zena&lt;br /&gt;
 zena new ~/doms/www.example.org/rails      # Zena Rails-Anwendung anlegen.&lt;br /&gt;
 cd ~/doms/www.example.org/rails&lt;br /&gt;
 rake db:create        # Datenbank anlegen.&lt;br /&gt;
 zena migrate          # Datenbank Tabellen einrichten.&lt;br /&gt;
 zena mksite LANG=en RAILS_ENV=production PASSWORD=geheim HOST=www.example.org # Webseite anlegen.&lt;br /&gt;
&lt;br /&gt;
=== Rails-Anwendung ===&lt;br /&gt;
&lt;br /&gt;
Seine eigene Rails-Anwendung kopiert man z.B. nach ~/doms/www.example.org/rails, oder erstellt dort eine Neue (rails ~/doms/www.example.org/rails, ...).&lt;br /&gt;
&lt;br /&gt;
=== Datenbank ===&lt;br /&gt;
&lt;br /&gt;
Mit &#039;&#039;hsadmin&#039;&#039; beispielsweise einen Postgres-User (z.B. &#039;xyz00_rails&#039;, Passwort sei &#039;geheim&#039;) sowie eine Datenbank anlegen (z.B. &#039;xyz00_rails&#039;.&lt;br /&gt;
&lt;br /&gt;
Die Datenbank in der Anwendung konfigurieren,&lt;br /&gt;
&lt;br /&gt;
 cd ~/doms/www.example.org/rails/config/&lt;br /&gt;
 nano database.yml&lt;br /&gt;
&lt;br /&gt;
mit folgendem Inhalt:&lt;br /&gt;
&lt;br /&gt;
 production:&lt;br /&gt;
    adapter: postgresql&lt;br /&gt;
    database: xyz00_rails&lt;br /&gt;
    host: localhost&lt;br /&gt;
    username: xyz00_rails&lt;br /&gt;
    password: geheim&lt;br /&gt;
&lt;br /&gt;
=== E-Mail, Dateiablage ===&lt;br /&gt;
&lt;br /&gt;
Beispielhafte Konfiguration:&lt;br /&gt;
&lt;br /&gt;
 default:&lt;br /&gt;
    email_delivery:&lt;br /&gt;
      delivery_method: :smtp&lt;br /&gt;
      smtp_settings:&lt;br /&gt;
        address: localhost&lt;br /&gt;
        port: 25&lt;br /&gt;
        domain: www.example.org&lt;br /&gt;
    attachments_storage_path: /home/doms/www.example.org/rails/attach&lt;br /&gt;
&lt;br /&gt;
=== Datenbankschema ===&lt;br /&gt;
&lt;br /&gt;
Initialisieren und migrieren der Datenbank (je nach Rails-Anwendung).&lt;br /&gt;
&lt;br /&gt;
 cd ~/doms/www.example.org/rails&lt;br /&gt;
 ...&lt;br /&gt;
 rake ...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Konfiguration von FastCGI ===&lt;br /&gt;
&lt;br /&gt;
~/doms/www.example.org/htdocs/.htaccess&lt;br /&gt;
&lt;br /&gt;
 RewriteEngine On&lt;br /&gt;
 RewriteRule ^$ index.html [QSA]&lt;br /&gt;
 RewriteRule ^([^.]+)$ $1.html [QSA]&lt;br /&gt;
 RewriteCond %{REQUEST_FILENAME} !-f [OR]&lt;br /&gt;
 RewriteCond %{REQUEST_FILENAME} dispatch.fcgi$&lt;br /&gt;
 RewriteRule ^(.*)$ /fastcgi-bin/dispatch.fcgi [QSA,L]&lt;br /&gt;
&lt;br /&gt;
Ältere Versionen von Rails, die noch nicht auf der &amp;quot;rack&amp;quot; Middleware aufbauen (wie obiges zena Beispiel), laufen mit folgender ~/doms/www.example.org/fastcgi/dispatch.fcgi&lt;br /&gt;
&lt;br /&gt;
 #!/usr/bin/env ruby&lt;br /&gt;
 require &amp;quot;/home/doms/www.example.org/rails/config/environment&amp;quot; &lt;br /&gt;
 require &#039;fcgi_handler&#039;&lt;br /&gt;
 RailsFCGIHandler.process!&lt;br /&gt;
&lt;br /&gt;
Für aktuelle Versionen von Rails, die auf &amp;quot;rack&amp;quot; aufbauen, siehe https://github.com/dre3k/rails3_fcgi, ~/doms/www.example.org/fastcgi/dispatch.fcgi&lt;br /&gt;
  #!/usr/bin/env ruby&lt;br /&gt;
 &lt;br /&gt;
 require_relative &#039;../config/environment&#039;&lt;br /&gt;
 &lt;br /&gt;
 class Rack::PathInfoRewriter&lt;br /&gt;
   def initialize(app)&lt;br /&gt;
     @app = app&lt;br /&gt;
   end&lt;br /&gt;
 &lt;br /&gt;
   def call(env)&lt;br /&gt;
     env.delete(&#039;SCRIPT_NAME&#039;)&lt;br /&gt;
     parts = env[&#039;REQUEST_URI&#039;].split(&#039;?&#039;)&lt;br /&gt;
     env[&#039;PATH_INFO&#039;] = parts[0]&lt;br /&gt;
     env[&#039;QUERY_STRING&#039;] = parts[1].to_s&lt;br /&gt;
     @app.call(env)&lt;br /&gt;
   end&lt;br /&gt;
 end&lt;br /&gt;
 &lt;br /&gt;
 Rack::Handler::FastCGI.run  Rack::PathInfoRewriter.new(HIER_APPLIKATIONSNAME_AUS_config/application.rb_EINTRAGEN::Application)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
FastCGI-Skript ausführbar machen:&lt;br /&gt;
&lt;br /&gt;
 chmod 755 ~/doms/www.example.org/fastcgi/dispatch.fcgi&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Am Anfang von ~/doms/www.example.org/rails/config/environment.rb einfügen:&lt;br /&gt;
&lt;br /&gt;
 ENV[&#039;RAILS_ENV&#039;] ||= &#039;production&#039;&lt;br /&gt;
 ENV[&#039;GEM_PATH&#039;] ||= &#039;/home/pacs/xyz00/users/meinuser/.gem/ruby/1.8:/var/lib/gems/1.8&#039;&lt;br /&gt;
Evtl. könnten diese Einstellungen auch ohne eine Modifikation der Anwendung erfolgen, indem die Umgebungsvariablen in der .htaccess gesetzt werden (z.B. &amp;quot;SetEnv RAILS_ENV production&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
Die Applikation ins Webroot einbinden:&lt;br /&gt;
&lt;br /&gt;
 # ggf. vorhandene Dateien sichern (oder nach ~/doms/www.example.org/rails/public kopieren)&lt;br /&gt;
 mv ~/doms/www.example.org/htdocs ~/doms/www.example.org/htdocs.old&lt;br /&gt;
 # Das doms/www.example.org/rails/public Verzeichnis ins Webroot verlinken.&lt;br /&gt;
 ln -s ~/doms/www..com/rails/public ~/doms/www.example.org/htdocs&lt;br /&gt;
&lt;br /&gt;
=== Konfiguration von SSL ===&lt;br /&gt;
&lt;br /&gt;
Die Verzeichnisse ~/doms/www.example.org/fastcgi-ssl/ und ~/doms/www.example.org/htdocs-ssl/ werden analog zu bzw. anstelle von fastcgi und htdocs gefüllt.&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:HSDoku]]&lt;br /&gt;
[[Kategorie:Installationsanleitungen]]&lt;br /&gt;
[[Kategorie:Software]]&lt;br /&gt;
[[Kategorie:Glossar]]&lt;/div&gt;</summary>
		<author><name>Srv00-wiki</name></author>
	</entry>
	<entry>
		<id>https://wiki.hostsharing.net/index.php?title=RubyOnRails&amp;diff=3476</id>
		<title>RubyOnRails</title>
		<link rel="alternate" type="text/html" href="https://wiki.hostsharing.net/index.php?title=RubyOnRails&amp;diff=3476"/>
		<updated>2012-09-02T17:59:51Z</updated>

		<summary type="html">&lt;p&gt;Srv00-wiki: /* Rails */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Bestes Ruby on Rails Hosting bei Hostsharing ==&lt;br /&gt;
&lt;br /&gt;
Rubyanwendungen laufen (wie alle Anwendungen bei Hostsharing) als Prozesse des jeweiligen Benutzersaccounts. Probleme mit Dateirechten und Sicherheitsrisiken, wie sie sonst bei der Ausführung durch den Webserver auftreten, sind so von vorne herein ausgeschlossen.&lt;br /&gt;
&lt;br /&gt;
Standardmäßig erfolgt der Aufruf von Ruby Anwendungen durch den Apache Webserver über die FastCGI Schnittstelle. Dabei wird die Ruby Application Server Instanz des Users nach einem Aufruf noch für einige Zeit bereit gehalten, um sofort zur Bearbeitung von weiteren noch nicht gecacheten, oder gar nicht cachebaren, Anfragen zur Verfügung zu stehen.&lt;br /&gt;
&lt;br /&gt;
Für den Betrieb von noch anspruchsvolleren Anwendungen haben wir auch Tools wie haproxy, varnish, nginx etc. installiert. Wir können auch mod_passenger (mod_wsgi haben wir schon) oder mongrel oder Green Unicorn (gunicorn) installieren. Anwender, die damit auf unserer leistungsfähigen Infrastruktur (managed Plattform) z.B. einen Webserver Cluster mit load-balancing realisieren möchten, brauchen bei uns dafür nur eigene Daemons buchen, können dies aber auch (für größere Projekte) mit einer beliebigen Anzahl ganzer Server realisieren.&lt;br /&gt;
&lt;br /&gt;
== Einrichtung ohne zusätzliche Daemons (ein Application Server) ==&lt;br /&gt;
&lt;br /&gt;
=== Vorbereitungen ===&lt;br /&gt;
&lt;br /&gt;
Einige Einstellungen für den Paketuser.&lt;br /&gt;
&lt;br /&gt;
~/.gemrc&lt;br /&gt;
 install: --no-rdoc --no-ri&lt;br /&gt;
 update:  --no-rdoc --no-ri&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
~/.bashrc&lt;br /&gt;
 alias gem=&amp;quot;nice -n19 gem&amp;quot;&lt;br /&gt;
&lt;br /&gt;
~/.profile&lt;br /&gt;
 source &amp;quot;$HOME/.bashrc&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== Ruby ===&lt;br /&gt;
&lt;br /&gt;
==== Vorinstalliert ====&lt;br /&gt;
&lt;br /&gt;
Soll nur die zentral installierte Ruby Version 1.8 verwendet werden, ergänzt man man in ~/.profile:&lt;br /&gt;
 # enable user&#039;s own ruby installations, keeping all stuff below $HOME/.gem&lt;br /&gt;
 export PATH=&amp;quot;$HOME/bin:$HOME/.gem/ruby/1.8/bin:$PATH&amp;quot;&lt;br /&gt;
 export GEM_PATH=&amp;quot;$HOME/.gem/ruby/1.8:$( gem env gempath )&amp;quot;&lt;br /&gt;
 export GEM_HOME=&amp;quot;$HOME/.gem/ruby/1.8&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 # Disabled for now, because using system libs caused undefined method error.&lt;br /&gt;
 #export RUBYLIB=&amp;quot;$HOME/.gem/ruby/1.8/lib:/usr/local/lib/site_ruby/1.8:/usr/lib/ruby/1.8&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 # avoid to forget that extra parameter: ruby -rubygems prog_that_uses_gems&lt;br /&gt;
 export RUBYOPT=rubygems&lt;br /&gt;
 &lt;br /&gt;
 export RAILS_ENV=production&lt;br /&gt;
&lt;br /&gt;
==== Eigene Installation ====&lt;br /&gt;
&lt;br /&gt;
Um eine andere als die vorinstallierte Ruby Version zu verwenden, installiert man zunächst den Ruby Versions Manager (rvm),&lt;br /&gt;
 curl -L https://get.rvm.io | bash -s stable&lt;br /&gt;
 source ~/.rvm/scripts/rvm&lt;br /&gt;
 rvm notes&lt;br /&gt;
 rvm requirements&lt;br /&gt;
 rvm pkg install openssl&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
und lässt dann die gewünschte Ruby Version installieren.&lt;br /&gt;
 rvm install x.y.z&lt;br /&gt;
&lt;br /&gt;
RVM passt die Umgebungsvariablen automatisch an die ausgewählt Version an. Die Version wählt man global per&lt;br /&gt;
 rvm use x.y.z --default&lt;br /&gt;
oder nur für ein spezielles Verzeichnis:&lt;br /&gt;
 cd ~/verzeichnis/mit/ruby-x.y.z-Anwendung&lt;br /&gt;
 rvm use x.y.z-p??? --rvmrc&lt;br /&gt;
&lt;br /&gt;
Zur Verwaltung von gems installiert man noch rubygems.&lt;br /&gt;
 rvm rubygems current&lt;br /&gt;
&lt;br /&gt;
=== Rails ===&lt;br /&gt;
&lt;br /&gt;
Falls man die Ruby-Umgebung gerade erst eingerichtet hat, ohne sich zwischenzeitlich abzumelden, muß man zunächst die Umgebung manuell laden.&lt;br /&gt;
 source ~/.profile&lt;br /&gt;
&lt;br /&gt;
Nun kann Rails per &amp;quot;gem install rails&amp;quot; installiert werden (inklusive Abhängigkeiten).&lt;br /&gt;
Um spezielle versionen zu installieren kann man den gem Befehl mit &amp;quot;-v=x.y.z&amp;quot; ergänzen.&lt;br /&gt;
&lt;br /&gt;
Zum Testen hier ein Beispiel das gleich noch eine Content und Daten Management Anwendung installiert (http://zenadmin.org) und diese mit einer sqlite Datenbankdatei einrichtet:&lt;br /&gt;
 gem install rails -v=2.3.11&lt;br /&gt;
 gem install i18n sexp_processor rmagick sqlite3 zena&lt;br /&gt;
 zena new ~/doms/example.com/rails      # Zena Rails-Anwendung anlegen.&lt;br /&gt;
 cd ~/doms/example.com/rails&lt;br /&gt;
 rake db:create        # Datenbank anlegen.&lt;br /&gt;
 zena migrate          # Datenbank Tabellen einrichten.&lt;br /&gt;
 zena mksite LANG=en RAILS_ENV=production PASSWORD=geheim HOST=example.org # Webseite anlegen.&lt;br /&gt;
&lt;br /&gt;
=== Rails-Anwendung ===&lt;br /&gt;
&lt;br /&gt;
Seine eigene Rails-Anwendung kopiert man z.B. nach ~/doms/example.com/rails, oder erstellt dort eine Neue (rails ~/doms/example.com/rails, ...).&lt;br /&gt;
&lt;br /&gt;
=== Datenbank ===&lt;br /&gt;
&lt;br /&gt;
Mit &#039;&#039;hsadmin&#039;&#039; beispielsweise einen Postgres-User (z.B. &#039;xyz00_rails&#039;, Passwort sei &#039;geheim&#039;) sowie eine Datenbank anlegen (z.B. &#039;xyz00_rails&#039;.&lt;br /&gt;
&lt;br /&gt;
Die Datenbank in der Anwendung konfigurieren,&lt;br /&gt;
&lt;br /&gt;
 cd ~/doms/example.com/rails/config/&lt;br /&gt;
 nano database.yml&lt;br /&gt;
&lt;br /&gt;
mit folgendem Inhalt:&lt;br /&gt;
&lt;br /&gt;
 production:&lt;br /&gt;
    adapter: postgresql&lt;br /&gt;
    database: xyz00_rails&lt;br /&gt;
    host: localhost&lt;br /&gt;
    username: xyz00_rails&lt;br /&gt;
    password: geheim&lt;br /&gt;
&lt;br /&gt;
=== E-Mail, Dateiablage ===&lt;br /&gt;
&lt;br /&gt;
Beispielhafte Konfiguration:&lt;br /&gt;
&lt;br /&gt;
 default:&lt;br /&gt;
    email_delivery:&lt;br /&gt;
      delivery_method: :smtp&lt;br /&gt;
      smtp_settings:&lt;br /&gt;
        address: localhost&lt;br /&gt;
        port: 25&lt;br /&gt;
        domain: example.org&lt;br /&gt;
    attachments_storage_path: /home/doms/example.com/rails/attach&lt;br /&gt;
&lt;br /&gt;
=== Datenbankschema ===&lt;br /&gt;
&lt;br /&gt;
Initialisieren und migrieren der Datenbank (je nach Rails-Anwendung).&lt;br /&gt;
&lt;br /&gt;
 cd ~/doms/example.com/rails&lt;br /&gt;
 ...&lt;br /&gt;
 rake ...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Konfiguration von FastCGI ===&lt;br /&gt;
&lt;br /&gt;
~/doms/example.org/htdocs/.htaccess&lt;br /&gt;
&lt;br /&gt;
 RewriteEngine On&lt;br /&gt;
 RewriteRule ^$ index.html [QSA]&lt;br /&gt;
 RewriteRule ^([^.]+)$ $1.html [QSA]&lt;br /&gt;
 RewriteCond %{REQUEST_FILENAME} !-f [OR]&lt;br /&gt;
 RewriteCond %{REQUEST_FILENAME} dispatch.fcgi$&lt;br /&gt;
 RewriteRule ^(.*)$ /fastcgi-bin/dispatch.fcgi [QSA,L]&lt;br /&gt;
&lt;br /&gt;
Ältere Versionen von Rails, die noch nicht auf der &amp;quot;rack&amp;quot; Middleware aufbauen (wie obiges zena Beispiel), laufen mit folgender ~/doms/www.example.org/fastcgi/dispatch.fcgi&lt;br /&gt;
&lt;br /&gt;
 #!/usr/bin/env ruby&lt;br /&gt;
 require &amp;quot;/home/doms/example.com/rails/config/environment&amp;quot; &lt;br /&gt;
 require &#039;fcgi_handler&#039;&lt;br /&gt;
 RailsFCGIHandler.process!&lt;br /&gt;
&lt;br /&gt;
Für aktuelle Versionen von Rails, die auf &amp;quot;rack&amp;quot; aufbauen, siehe https://github.com/dre3k/rails3_fcgi, ~/doms/www.example.org/fastcgi/dispatch.fcgi&lt;br /&gt;
  #!/usr/bin/env ruby&lt;br /&gt;
 &lt;br /&gt;
 require_relative &#039;../config/environment&#039;&lt;br /&gt;
 &lt;br /&gt;
 class Rack::PathInfoRewriter&lt;br /&gt;
   def initialize(app)&lt;br /&gt;
     @app = app&lt;br /&gt;
   end&lt;br /&gt;
 &lt;br /&gt;
   def call(env)&lt;br /&gt;
     env.delete(&#039;SCRIPT_NAME&#039;)&lt;br /&gt;
     parts = env[&#039;REQUEST_URI&#039;].split(&#039;?&#039;)&lt;br /&gt;
     env[&#039;PATH_INFO&#039;] = parts[0]&lt;br /&gt;
     env[&#039;QUERY_STRING&#039;] = parts[1].to_s&lt;br /&gt;
     @app.call(env)&lt;br /&gt;
   end&lt;br /&gt;
 end&lt;br /&gt;
 &lt;br /&gt;
 Rack::Handler::FastCGI.run  Rack::PathInfoRewriter.new(HIER_APPLIKATIONSNAME_AUS_config/application.rb_EINTRAGEN::Application)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
FastCGI-Skript ausführbar machen:&lt;br /&gt;
&lt;br /&gt;
 chmod 755 ~/doms/example.org/fastcgi/dispatch.fcgi&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Am Anfang von ~/doms/example.com/rails/config/environment.rb einfügen:&lt;br /&gt;
&lt;br /&gt;
 ENV[&#039;RAILS_ENV&#039;] ||= &#039;production&#039;&lt;br /&gt;
 ENV[&#039;GEM_PATH&#039;] ||= &#039;/home/pacs/xyz00/users/meinuser/.gem/ruby/1.8:/var/lib/gems/1.8&#039;&lt;br /&gt;
Evtl. könnten diese Einstellungen auch ohne eine Modifikation der Anwendung erfolgen, indem die Umgebungsvariablen in der .htaccess gesetzt werden (z.B. &amp;quot;SetEnv RAILS_ENV production&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
Die Applikation ins Webroot einbinden:&lt;br /&gt;
&lt;br /&gt;
 # ggf. vorhandene Dateien sichern (oder nach ~/doms/example.com/rails/public kopieren)&lt;br /&gt;
 mv ~/doms/example.org/htdocs ~/doms/example.org/htdocs.old&lt;br /&gt;
 # Das doms/example.com/rails/public Verzeichnis ins Webroot verlinken.&lt;br /&gt;
 ln -s ~/doms/example.com/rails/public ~/doms/example.org/htdocs&lt;br /&gt;
&lt;br /&gt;
=== Konfiguration von SSL ===&lt;br /&gt;
&lt;br /&gt;
Die Verzeichnisse ~/doms/example.org/fastcgi-ssl/ und ~/doms/rail.example.org/htdocs-ssl/ werden analog zu bzw. anstelle von fastcgi und htdocs gefüllt.&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:HSDoku]]&lt;br /&gt;
[[Kategorie:Installationsanleitungen]]&lt;br /&gt;
[[Kategorie:Software]]&lt;br /&gt;
[[Kategorie:Glossar]]&lt;/div&gt;</summary>
		<author><name>Srv00-wiki</name></author>
	</entry>
	<entry>
		<id>https://wiki.hostsharing.net/index.php?title=RubyOnRails&amp;diff=3475</id>
		<title>RubyOnRails</title>
		<link rel="alternate" type="text/html" href="https://wiki.hostsharing.net/index.php?title=RubyOnRails&amp;diff=3475"/>
		<updated>2012-09-02T17:56:23Z</updated>

		<summary type="html">&lt;p&gt;Srv00-wiki: /* Rails */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Bestes Ruby on Rails Hosting bei Hostsharing ==&lt;br /&gt;
&lt;br /&gt;
Rubyanwendungen laufen (wie alle Anwendungen bei Hostsharing) als Prozesse des jeweiligen Benutzersaccounts. Probleme mit Dateirechten und Sicherheitsrisiken, wie sie sonst bei der Ausführung durch den Webserver auftreten, sind so von vorne herein ausgeschlossen.&lt;br /&gt;
&lt;br /&gt;
Standardmäßig erfolgt der Aufruf von Ruby Anwendungen durch den Apache Webserver über die FastCGI Schnittstelle. Dabei wird die Ruby Application Server Instanz des Users nach einem Aufruf noch für einige Zeit bereit gehalten, um sofort zur Bearbeitung von weiteren noch nicht gecacheten, oder gar nicht cachebaren, Anfragen zur Verfügung zu stehen.&lt;br /&gt;
&lt;br /&gt;
Für den Betrieb von noch anspruchsvolleren Anwendungen haben wir auch Tools wie haproxy, varnish, nginx etc. installiert. Wir können auch mod_passenger (mod_wsgi haben wir schon) oder mongrel oder Green Unicorn (gunicorn) installieren. Anwender, die damit auf unserer leistungsfähigen Infrastruktur (managed Plattform) z.B. einen Webserver Cluster mit load-balancing realisieren möchten, brauchen bei uns dafür nur eigene Daemons buchen, können dies aber auch (für größere Projekte) mit einer beliebigen Anzahl ganzer Server realisieren.&lt;br /&gt;
&lt;br /&gt;
== Einrichtung ohne zusätzliche Daemons (ein Application Server) ==&lt;br /&gt;
&lt;br /&gt;
=== Vorbereitungen ===&lt;br /&gt;
&lt;br /&gt;
Einige Einstellungen für den Paketuser.&lt;br /&gt;
&lt;br /&gt;
~/.gemrc&lt;br /&gt;
 install: --no-rdoc --no-ri&lt;br /&gt;
 update:  --no-rdoc --no-ri&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
~/.bashrc&lt;br /&gt;
 alias gem=&amp;quot;nice -n19 gem&amp;quot;&lt;br /&gt;
&lt;br /&gt;
~/.profile&lt;br /&gt;
 source &amp;quot;$HOME/.bashrc&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== Ruby ===&lt;br /&gt;
&lt;br /&gt;
==== Vorinstalliert ====&lt;br /&gt;
&lt;br /&gt;
Soll nur die zentral installierte Ruby Version 1.8 verwendet werden, ergänzt man man in ~/.profile:&lt;br /&gt;
 # enable user&#039;s own ruby installations, keeping all stuff below $HOME/.gem&lt;br /&gt;
 export PATH=&amp;quot;$HOME/bin:$HOME/.gem/ruby/1.8/bin:$PATH&amp;quot;&lt;br /&gt;
 export GEM_PATH=&amp;quot;$HOME/.gem/ruby/1.8:$( gem env gempath )&amp;quot;&lt;br /&gt;
 export GEM_HOME=&amp;quot;$HOME/.gem/ruby/1.8&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 # Disabled for now, because using system libs caused undefined method error.&lt;br /&gt;
 #export RUBYLIB=&amp;quot;$HOME/.gem/ruby/1.8/lib:/usr/local/lib/site_ruby/1.8:/usr/lib/ruby/1.8&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 # avoid to forget that extra parameter: ruby -rubygems prog_that_uses_gems&lt;br /&gt;
 export RUBYOPT=rubygems&lt;br /&gt;
 &lt;br /&gt;
 export RAILS_ENV=production&lt;br /&gt;
&lt;br /&gt;
==== Eigene Installation ====&lt;br /&gt;
&lt;br /&gt;
Um eine andere als die vorinstallierte Ruby Version zu verwenden, installiert man zunächst den Ruby Versions Manager (rvm),&lt;br /&gt;
 curl -L https://get.rvm.io | bash -s stable&lt;br /&gt;
 source ~/.rvm/scripts/rvm&lt;br /&gt;
 rvm notes&lt;br /&gt;
 rvm requirements&lt;br /&gt;
 rvm pkg install openssl&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
und lässt dann die gewünschte Ruby Version installieren.&lt;br /&gt;
 rvm install x.y.z&lt;br /&gt;
&lt;br /&gt;
RVM passt die Umgebungsvariablen automatisch an die ausgewählt Version an. Die Version wählt man global per&lt;br /&gt;
 rvm use x.y.z --default&lt;br /&gt;
oder nur für ein spezielles Verzeichnis:&lt;br /&gt;
 cd ~/verzeichnis/mit/ruby-x.y.z-Anwendung&lt;br /&gt;
 rvm use x.y.z-p??? --rvmrc&lt;br /&gt;
&lt;br /&gt;
Zur Verwaltung von gems installiert man noch rubygems.&lt;br /&gt;
 rvm rubygems current&lt;br /&gt;
&lt;br /&gt;
=== Rails ===&lt;br /&gt;
&lt;br /&gt;
Falls man die Ruby-Umgebung gerade erst eingerichtet hat, ohne sich zwischenzeitlich abzumelden, muß man zunächst die Umgebung manuell laden.&lt;br /&gt;
 source ~/.profile&lt;br /&gt;
&lt;br /&gt;
Nun kann Rails per &amp;quot;gem install rails&amp;quot; installiert werden (inklusive Abhängigkeiten).&lt;br /&gt;
Um spezielle versionen zu installieren kann man den gem Befehl mit &amp;quot;-v=x.y.z&amp;quot; ergänzen.&lt;br /&gt;
&lt;br /&gt;
Zum Testen hier ein Beispiel das gleich noch eine fertige CMS Anwendung installiert (http://zenadmin.org) und mit einer einfachen sqlite Datenbankdatei einrichtet:&lt;br /&gt;
 gem install rails -v=2.3.11&lt;br /&gt;
 gem install i18n sexp_processor rmagick sqlite3 zena&lt;br /&gt;
 zena new ~/doms/example.com/rails      # Zena Rails-Anwendung anlegen.&lt;br /&gt;
 cd ~/doms/example.com/rails&lt;br /&gt;
 rake db:create        # Datenbank anlegen.&lt;br /&gt;
 zena migrate          # Datenbank Tabellen einrichten.&lt;br /&gt;
 zena mksite LANG=en RAILS_ENV=production PASSWORD=geheim HOST=example.org # Webseite anlegen.&lt;br /&gt;
&lt;br /&gt;
=== Rails-Anwendung ===&lt;br /&gt;
&lt;br /&gt;
Seine eigene Rails-Anwendung kopiert man z.B. nach ~/doms/example.com/rails, oder erstellt dort eine Neue (rails ~/doms/example.com/rails, ...).&lt;br /&gt;
&lt;br /&gt;
=== Datenbank ===&lt;br /&gt;
&lt;br /&gt;
Mit &#039;&#039;hsadmin&#039;&#039; beispielsweise einen Postgres-User (z.B. &#039;xyz00_rails&#039;, Passwort sei &#039;geheim&#039;) sowie eine Datenbank anlegen (z.B. &#039;xyz00_rails&#039;.&lt;br /&gt;
&lt;br /&gt;
Die Datenbank in der Anwendung konfigurieren,&lt;br /&gt;
&lt;br /&gt;
 cd ~/doms/example.com/rails/config/&lt;br /&gt;
 nano database.yml&lt;br /&gt;
&lt;br /&gt;
mit folgendem Inhalt:&lt;br /&gt;
&lt;br /&gt;
 production:&lt;br /&gt;
    adapter: postgresql&lt;br /&gt;
    database: xyz00_rails&lt;br /&gt;
    host: localhost&lt;br /&gt;
    username: xyz00_rails&lt;br /&gt;
    password: geheim&lt;br /&gt;
&lt;br /&gt;
=== E-Mail, Dateiablage ===&lt;br /&gt;
&lt;br /&gt;
Beispielhafte Konfiguration:&lt;br /&gt;
&lt;br /&gt;
 default:&lt;br /&gt;
    email_delivery:&lt;br /&gt;
      delivery_method: :smtp&lt;br /&gt;
      smtp_settings:&lt;br /&gt;
        address: localhost&lt;br /&gt;
        port: 25&lt;br /&gt;
        domain: example.org&lt;br /&gt;
    attachments_storage_path: /home/doms/example.com/rails/attach&lt;br /&gt;
&lt;br /&gt;
=== Datenbankschema ===&lt;br /&gt;
&lt;br /&gt;
Initialisieren und migrieren der Datenbank (je nach Rails-Anwendung).&lt;br /&gt;
&lt;br /&gt;
 cd ~/doms/example.com/rails&lt;br /&gt;
 ...&lt;br /&gt;
 rake ...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Konfiguration von FastCGI ===&lt;br /&gt;
&lt;br /&gt;
~/doms/example.org/htdocs/.htaccess&lt;br /&gt;
&lt;br /&gt;
 RewriteEngine On&lt;br /&gt;
 RewriteRule ^$ index.html [QSA]&lt;br /&gt;
 RewriteRule ^([^.]+)$ $1.html [QSA]&lt;br /&gt;
 RewriteCond %{REQUEST_FILENAME} !-f [OR]&lt;br /&gt;
 RewriteCond %{REQUEST_FILENAME} dispatch.fcgi$&lt;br /&gt;
 RewriteRule ^(.*)$ /fastcgi-bin/dispatch.fcgi [QSA,L]&lt;br /&gt;
&lt;br /&gt;
Ältere Versionen von Rails, die noch nicht auf der &amp;quot;rack&amp;quot; Middleware aufbauen (wie obiges zena Beispiel), laufen mit folgender ~/doms/www.example.org/fastcgi/dispatch.fcgi&lt;br /&gt;
&lt;br /&gt;
 #!/usr/bin/env ruby&lt;br /&gt;
 require &amp;quot;/home/doms/example.com/rails/config/environment&amp;quot; &lt;br /&gt;
 require &#039;fcgi_handler&#039;&lt;br /&gt;
 RailsFCGIHandler.process!&lt;br /&gt;
&lt;br /&gt;
Für aktuelle Versionen von Rails, die auf &amp;quot;rack&amp;quot; aufbauen, siehe https://github.com/dre3k/rails3_fcgi, ~/doms/www.example.org/fastcgi/dispatch.fcgi&lt;br /&gt;
  #!/usr/bin/env ruby&lt;br /&gt;
 &lt;br /&gt;
 require_relative &#039;../config/environment&#039;&lt;br /&gt;
 &lt;br /&gt;
 class Rack::PathInfoRewriter&lt;br /&gt;
   def initialize(app)&lt;br /&gt;
     @app = app&lt;br /&gt;
   end&lt;br /&gt;
 &lt;br /&gt;
   def call(env)&lt;br /&gt;
     env.delete(&#039;SCRIPT_NAME&#039;)&lt;br /&gt;
     parts = env[&#039;REQUEST_URI&#039;].split(&#039;?&#039;)&lt;br /&gt;
     env[&#039;PATH_INFO&#039;] = parts[0]&lt;br /&gt;
     env[&#039;QUERY_STRING&#039;] = parts[1].to_s&lt;br /&gt;
     @app.call(env)&lt;br /&gt;
   end&lt;br /&gt;
 end&lt;br /&gt;
 &lt;br /&gt;
 Rack::Handler::FastCGI.run  Rack::PathInfoRewriter.new(HIER_APPLIKATIONSNAME_AUS_config/application.rb_EINTRAGEN::Application)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
FastCGI-Skript ausführbar machen:&lt;br /&gt;
&lt;br /&gt;
 chmod 755 ~/doms/example.org/fastcgi/dispatch.fcgi&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Am Anfang von ~/doms/example.com/rails/config/environment.rb einfügen:&lt;br /&gt;
&lt;br /&gt;
 ENV[&#039;RAILS_ENV&#039;] ||= &#039;production&#039;&lt;br /&gt;
 ENV[&#039;GEM_PATH&#039;] ||= &#039;/home/pacs/xyz00/users/meinuser/.gem/ruby/1.8:/var/lib/gems/1.8&#039;&lt;br /&gt;
Evtl. könnten diese Einstellungen auch ohne eine Modifikation der Anwendung erfolgen, indem die Umgebungsvariablen in der .htaccess gesetzt werden (z.B. &amp;quot;SetEnv RAILS_ENV production&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
Die Applikation ins Webroot einbinden:&lt;br /&gt;
&lt;br /&gt;
 # ggf. vorhandene Dateien sichern (oder nach ~/doms/example.com/rails/public kopieren)&lt;br /&gt;
 mv ~/doms/example.org/htdocs ~/doms/example.org/htdocs.old&lt;br /&gt;
 # Das doms/example.com/rails/public Verzeichnis ins Webroot verlinken.&lt;br /&gt;
 ln -s ~/doms/example.com/rails/public ~/doms/example.org/htdocs&lt;br /&gt;
&lt;br /&gt;
=== Konfiguration von SSL ===&lt;br /&gt;
&lt;br /&gt;
Die Verzeichnisse ~/doms/example.org/fastcgi-ssl/ und ~/doms/rail.example.org/htdocs-ssl/ werden analog zu bzw. anstelle von fastcgi und htdocs gefüllt.&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:HSDoku]]&lt;br /&gt;
[[Kategorie:Installationsanleitungen]]&lt;br /&gt;
[[Kategorie:Software]]&lt;br /&gt;
[[Kategorie:Glossar]]&lt;/div&gt;</summary>
		<author><name>Srv00-wiki</name></author>
	</entry>
	<entry>
		<id>https://wiki.hostsharing.net/index.php?title=RubyOnRails&amp;diff=3474</id>
		<title>RubyOnRails</title>
		<link rel="alternate" type="text/html" href="https://wiki.hostsharing.net/index.php?title=RubyOnRails&amp;diff=3474"/>
		<updated>2012-09-02T17:55:32Z</updated>

		<summary type="html">&lt;p&gt;Srv00-wiki: /* Vorinstalliert */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Bestes Ruby on Rails Hosting bei Hostsharing ==&lt;br /&gt;
&lt;br /&gt;
Rubyanwendungen laufen (wie alle Anwendungen bei Hostsharing) als Prozesse des jeweiligen Benutzersaccounts. Probleme mit Dateirechten und Sicherheitsrisiken, wie sie sonst bei der Ausführung durch den Webserver auftreten, sind so von vorne herein ausgeschlossen.&lt;br /&gt;
&lt;br /&gt;
Standardmäßig erfolgt der Aufruf von Ruby Anwendungen durch den Apache Webserver über die FastCGI Schnittstelle. Dabei wird die Ruby Application Server Instanz des Users nach einem Aufruf noch für einige Zeit bereit gehalten, um sofort zur Bearbeitung von weiteren noch nicht gecacheten, oder gar nicht cachebaren, Anfragen zur Verfügung zu stehen.&lt;br /&gt;
&lt;br /&gt;
Für den Betrieb von noch anspruchsvolleren Anwendungen haben wir auch Tools wie haproxy, varnish, nginx etc. installiert. Wir können auch mod_passenger (mod_wsgi haben wir schon) oder mongrel oder Green Unicorn (gunicorn) installieren. Anwender, die damit auf unserer leistungsfähigen Infrastruktur (managed Plattform) z.B. einen Webserver Cluster mit load-balancing realisieren möchten, brauchen bei uns dafür nur eigene Daemons buchen, können dies aber auch (für größere Projekte) mit einer beliebigen Anzahl ganzer Server realisieren.&lt;br /&gt;
&lt;br /&gt;
== Einrichtung ohne zusätzliche Daemons (ein Application Server) ==&lt;br /&gt;
&lt;br /&gt;
=== Vorbereitungen ===&lt;br /&gt;
&lt;br /&gt;
Einige Einstellungen für den Paketuser.&lt;br /&gt;
&lt;br /&gt;
~/.gemrc&lt;br /&gt;
 install: --no-rdoc --no-ri&lt;br /&gt;
 update:  --no-rdoc --no-ri&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
~/.bashrc&lt;br /&gt;
 alias gem=&amp;quot;nice -n19 gem&amp;quot;&lt;br /&gt;
&lt;br /&gt;
~/.profile&lt;br /&gt;
 source &amp;quot;$HOME/.bashrc&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== Ruby ===&lt;br /&gt;
&lt;br /&gt;
==== Vorinstalliert ====&lt;br /&gt;
&lt;br /&gt;
Soll nur die zentral installierte Ruby Version 1.8 verwendet werden, ergänzt man man in ~/.profile:&lt;br /&gt;
 # enable user&#039;s own ruby installations, keeping all stuff below $HOME/.gem&lt;br /&gt;
 export PATH=&amp;quot;$HOME/bin:$HOME/.gem/ruby/1.8/bin:$PATH&amp;quot;&lt;br /&gt;
 export GEM_PATH=&amp;quot;$HOME/.gem/ruby/1.8:$( gem env gempath )&amp;quot;&lt;br /&gt;
 export GEM_HOME=&amp;quot;$HOME/.gem/ruby/1.8&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 # Disabled for now, because using system libs caused undefined method error.&lt;br /&gt;
 #export RUBYLIB=&amp;quot;$HOME/.gem/ruby/1.8/lib:/usr/local/lib/site_ruby/1.8:/usr/lib/ruby/1.8&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 # avoid to forget that extra parameter: ruby -rubygems prog_that_uses_gems&lt;br /&gt;
 export RUBYOPT=rubygems&lt;br /&gt;
 &lt;br /&gt;
 export RAILS_ENV=production&lt;br /&gt;
&lt;br /&gt;
==== Eigene Installation ====&lt;br /&gt;
&lt;br /&gt;
Um eine andere als die vorinstallierte Ruby Version zu verwenden, installiert man zunächst den Ruby Versions Manager (rvm),&lt;br /&gt;
 curl -L https://get.rvm.io | bash -s stable&lt;br /&gt;
 source ~/.rvm/scripts/rvm&lt;br /&gt;
 rvm notes&lt;br /&gt;
 rvm requirements&lt;br /&gt;
 rvm pkg install openssl&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
und lässt dann die gewünschte Ruby Version installieren.&lt;br /&gt;
 rvm install x.y.z&lt;br /&gt;
&lt;br /&gt;
RVM passt die Umgebungsvariablen automatisch an die ausgewählt Version an. Die Version wählt man global per&lt;br /&gt;
 rvm use x.y.z --default&lt;br /&gt;
oder nur für ein spezielles Verzeichnis:&lt;br /&gt;
 cd ~/verzeichnis/mit/ruby-x.y.z-Anwendung&lt;br /&gt;
 rvm use x.y.z-p??? --rvmrc&lt;br /&gt;
&lt;br /&gt;
Zur Verwaltung von gems installiert man noch rubygems.&lt;br /&gt;
 rvm rubygems current&lt;br /&gt;
&lt;br /&gt;
=== Rails ===&lt;br /&gt;
&lt;br /&gt;
Falls man die Ruby-Umgebung gerade erst eingerichtet hat, ohne sich zwischenzeitlich abzumelden, muß zunächst die Umgebung manuell laden.&lt;br /&gt;
 source ~/.profile&lt;br /&gt;
&lt;br /&gt;
Nun kann Rails per &amp;quot;gem install rails&amp;quot; installiert werden (inklusive Abhängigkeiten).&lt;br /&gt;
Um spezielle versionen zu installieren kann man den gem Befehl mit &amp;quot;-v=x.y.z&amp;quot; ergänzen.&lt;br /&gt;
&lt;br /&gt;
Zum Testen hier ein Beispiel das gleich noch eine fertige CMS Anwendung installiert (http://zenadmin.org) und mit einer einfachen sqlite Datenbankdatei einrichtet:&lt;br /&gt;
 gem install rails -v=2.3.11&lt;br /&gt;
 gem install i18n sexp_processor rmagick sqlite3 zena&lt;br /&gt;
 zena new ~/doms/example.com/rails      # Zena Rails-Anwendung anlegen.&lt;br /&gt;
 cd ~/doms/example.com/rails&lt;br /&gt;
 rake db:create        # Datenbank anlegen.&lt;br /&gt;
 zena migrate          # Datenbank Tabellen einrichten.&lt;br /&gt;
 zena mksite LANG=en RAILS_ENV=production PASSWORD=geheim HOST=example.org # Webseite anlegen.&lt;br /&gt;
&lt;br /&gt;
=== Rails-Anwendung ===&lt;br /&gt;
&lt;br /&gt;
Seine eigene Rails-Anwendung kopiert man z.B. nach ~/doms/example.com/rails, oder erstellt dort eine Neue (rails ~/doms/example.com/rails, ...).&lt;br /&gt;
&lt;br /&gt;
=== Datenbank ===&lt;br /&gt;
&lt;br /&gt;
Mit &#039;&#039;hsadmin&#039;&#039; beispielsweise einen Postgres-User (z.B. &#039;xyz00_rails&#039;, Passwort sei &#039;geheim&#039;) sowie eine Datenbank anlegen (z.B. &#039;xyz00_rails&#039;.&lt;br /&gt;
&lt;br /&gt;
Die Datenbank in der Anwendung konfigurieren,&lt;br /&gt;
&lt;br /&gt;
 cd ~/doms/example.com/rails/config/&lt;br /&gt;
 nano database.yml&lt;br /&gt;
&lt;br /&gt;
mit folgendem Inhalt:&lt;br /&gt;
&lt;br /&gt;
 production:&lt;br /&gt;
    adapter: postgresql&lt;br /&gt;
    database: xyz00_rails&lt;br /&gt;
    host: localhost&lt;br /&gt;
    username: xyz00_rails&lt;br /&gt;
    password: geheim&lt;br /&gt;
&lt;br /&gt;
=== E-Mail, Dateiablage ===&lt;br /&gt;
&lt;br /&gt;
Beispielhafte Konfiguration:&lt;br /&gt;
&lt;br /&gt;
 default:&lt;br /&gt;
    email_delivery:&lt;br /&gt;
      delivery_method: :smtp&lt;br /&gt;
      smtp_settings:&lt;br /&gt;
        address: localhost&lt;br /&gt;
        port: 25&lt;br /&gt;
        domain: example.org&lt;br /&gt;
    attachments_storage_path: /home/doms/example.com/rails/attach&lt;br /&gt;
&lt;br /&gt;
=== Datenbankschema ===&lt;br /&gt;
&lt;br /&gt;
Initialisieren und migrieren der Datenbank (je nach Rails-Anwendung).&lt;br /&gt;
&lt;br /&gt;
 cd ~/doms/example.com/rails&lt;br /&gt;
 ...&lt;br /&gt;
 rake ...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Konfiguration von FastCGI ===&lt;br /&gt;
&lt;br /&gt;
~/doms/example.org/htdocs/.htaccess&lt;br /&gt;
&lt;br /&gt;
 RewriteEngine On&lt;br /&gt;
 RewriteRule ^$ index.html [QSA]&lt;br /&gt;
 RewriteRule ^([^.]+)$ $1.html [QSA]&lt;br /&gt;
 RewriteCond %{REQUEST_FILENAME} !-f [OR]&lt;br /&gt;
 RewriteCond %{REQUEST_FILENAME} dispatch.fcgi$&lt;br /&gt;
 RewriteRule ^(.*)$ /fastcgi-bin/dispatch.fcgi [QSA,L]&lt;br /&gt;
&lt;br /&gt;
Ältere Versionen von Rails, die noch nicht auf der &amp;quot;rack&amp;quot; Middleware aufbauen (wie obiges zena Beispiel), laufen mit folgender ~/doms/www.example.org/fastcgi/dispatch.fcgi&lt;br /&gt;
&lt;br /&gt;
 #!/usr/bin/env ruby&lt;br /&gt;
 require &amp;quot;/home/doms/example.com/rails/config/environment&amp;quot; &lt;br /&gt;
 require &#039;fcgi_handler&#039;&lt;br /&gt;
 RailsFCGIHandler.process!&lt;br /&gt;
&lt;br /&gt;
Für aktuelle Versionen von Rails, die auf &amp;quot;rack&amp;quot; aufbauen, siehe https://github.com/dre3k/rails3_fcgi, ~/doms/www.example.org/fastcgi/dispatch.fcgi&lt;br /&gt;
  #!/usr/bin/env ruby&lt;br /&gt;
 &lt;br /&gt;
 require_relative &#039;../config/environment&#039;&lt;br /&gt;
 &lt;br /&gt;
 class Rack::PathInfoRewriter&lt;br /&gt;
   def initialize(app)&lt;br /&gt;
     @app = app&lt;br /&gt;
   end&lt;br /&gt;
 &lt;br /&gt;
   def call(env)&lt;br /&gt;
     env.delete(&#039;SCRIPT_NAME&#039;)&lt;br /&gt;
     parts = env[&#039;REQUEST_URI&#039;].split(&#039;?&#039;)&lt;br /&gt;
     env[&#039;PATH_INFO&#039;] = parts[0]&lt;br /&gt;
     env[&#039;QUERY_STRING&#039;] = parts[1].to_s&lt;br /&gt;
     @app.call(env)&lt;br /&gt;
   end&lt;br /&gt;
 end&lt;br /&gt;
 &lt;br /&gt;
 Rack::Handler::FastCGI.run  Rack::PathInfoRewriter.new(HIER_APPLIKATIONSNAME_AUS_config/application.rb_EINTRAGEN::Application)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
FastCGI-Skript ausführbar machen:&lt;br /&gt;
&lt;br /&gt;
 chmod 755 ~/doms/example.org/fastcgi/dispatch.fcgi&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Am Anfang von ~/doms/example.com/rails/config/environment.rb einfügen:&lt;br /&gt;
&lt;br /&gt;
 ENV[&#039;RAILS_ENV&#039;] ||= &#039;production&#039;&lt;br /&gt;
 ENV[&#039;GEM_PATH&#039;] ||= &#039;/home/pacs/xyz00/users/meinuser/.gem/ruby/1.8:/var/lib/gems/1.8&#039;&lt;br /&gt;
Evtl. könnten diese Einstellungen auch ohne eine Modifikation der Anwendung erfolgen, indem die Umgebungsvariablen in der .htaccess gesetzt werden (z.B. &amp;quot;SetEnv RAILS_ENV production&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
Die Applikation ins Webroot einbinden:&lt;br /&gt;
&lt;br /&gt;
 # ggf. vorhandene Dateien sichern (oder nach ~/doms/example.com/rails/public kopieren)&lt;br /&gt;
 mv ~/doms/example.org/htdocs ~/doms/example.org/htdocs.old&lt;br /&gt;
 # Das doms/example.com/rails/public Verzeichnis ins Webroot verlinken.&lt;br /&gt;
 ln -s ~/doms/example.com/rails/public ~/doms/example.org/htdocs&lt;br /&gt;
&lt;br /&gt;
=== Konfiguration von SSL ===&lt;br /&gt;
&lt;br /&gt;
Die Verzeichnisse ~/doms/example.org/fastcgi-ssl/ und ~/doms/rail.example.org/htdocs-ssl/ werden analog zu bzw. anstelle von fastcgi und htdocs gefüllt.&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:HSDoku]]&lt;br /&gt;
[[Kategorie:Installationsanleitungen]]&lt;br /&gt;
[[Kategorie:Software]]&lt;br /&gt;
[[Kategorie:Glossar]]&lt;/div&gt;</summary>
		<author><name>Srv00-wiki</name></author>
	</entry>
	<entry>
		<id>https://wiki.hostsharing.net/index.php?title=RubyOnRails&amp;diff=3473</id>
		<title>RubyOnRails</title>
		<link rel="alternate" type="text/html" href="https://wiki.hostsharing.net/index.php?title=RubyOnRails&amp;diff=3473"/>
		<updated>2012-09-02T17:52:28Z</updated>

		<summary type="html">&lt;p&gt;Srv00-wiki: /* E-Mail, Dateiablage */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Bestes Ruby on Rails Hosting bei Hostsharing ==&lt;br /&gt;
&lt;br /&gt;
Rubyanwendungen laufen (wie alle Anwendungen bei Hostsharing) als Prozesse des jeweiligen Benutzersaccounts. Probleme mit Dateirechten und Sicherheitsrisiken, wie sie sonst bei der Ausführung durch den Webserver auftreten, sind so von vorne herein ausgeschlossen.&lt;br /&gt;
&lt;br /&gt;
Standardmäßig erfolgt der Aufruf von Ruby Anwendungen durch den Apache Webserver über die FastCGI Schnittstelle. Dabei wird die Ruby Application Server Instanz des Users nach einem Aufruf noch für einige Zeit bereit gehalten, um sofort zur Bearbeitung von weiteren noch nicht gecacheten, oder gar nicht cachebaren, Anfragen zur Verfügung zu stehen.&lt;br /&gt;
&lt;br /&gt;
Für den Betrieb von noch anspruchsvolleren Anwendungen haben wir auch Tools wie haproxy, varnish, nginx etc. installiert. Wir können auch mod_passenger (mod_wsgi haben wir schon) oder mongrel oder Green Unicorn (gunicorn) installieren. Anwender, die damit auf unserer leistungsfähigen Infrastruktur (managed Plattform) z.B. einen Webserver Cluster mit load-balancing realisieren möchten, brauchen bei uns dafür nur eigene Daemons buchen, können dies aber auch (für größere Projekte) mit einer beliebigen Anzahl ganzer Server realisieren.&lt;br /&gt;
&lt;br /&gt;
== Einrichtung ohne zusätzliche Daemons (ein Application Server) ==&lt;br /&gt;
&lt;br /&gt;
=== Vorbereitungen ===&lt;br /&gt;
&lt;br /&gt;
Einige Einstellungen für den Paketuser.&lt;br /&gt;
&lt;br /&gt;
~/.gemrc&lt;br /&gt;
 install: --no-rdoc --no-ri&lt;br /&gt;
 update:  --no-rdoc --no-ri&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
~/.bashrc&lt;br /&gt;
 alias gem=&amp;quot;nice -n19 gem&amp;quot;&lt;br /&gt;
&lt;br /&gt;
~/.profile&lt;br /&gt;
 source &amp;quot;$HOME/.bashrc&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== Ruby ===&lt;br /&gt;
&lt;br /&gt;
==== Vorinstalliert ====&lt;br /&gt;
&lt;br /&gt;
Soll nur die zentral installierte Ruby Version 1.8 verwendet werden, ergänzt man man die ~/.profile:&lt;br /&gt;
 # enable user&#039;s own ruby installations, keeping all stuff below $HOME/.gem&lt;br /&gt;
 export PATH=&amp;quot;$HOME/bin:$HOME/.gem/ruby/1.8/bin:$PATH&amp;quot;&lt;br /&gt;
 export GEM_PATH=&amp;quot;$HOME/.gem/ruby/1.8:$( gem env gempath )&amp;quot;&lt;br /&gt;
 export GEM_HOME=&amp;quot;$HOME/.gem/ruby/1.8&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 # Disabled for now, because using system libs caused undefined method error.&lt;br /&gt;
 #export RUBYLIB=&amp;quot;$HOME/.gem/ruby/1.8/lib:/usr/local/lib/site_ruby/1.8:/usr/lib/ruby/1.8&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 # avoid to forget that extra parameter: ruby -rubygems prog_that_uses_gems&lt;br /&gt;
 export RUBYOPT=rubygems&lt;br /&gt;
 &lt;br /&gt;
 export RAILS_ENV=production&lt;br /&gt;
&lt;br /&gt;
==== Eigene Installation ====&lt;br /&gt;
&lt;br /&gt;
Um eine andere als die vorinstallierte Ruby Version zu verwenden, installiert man zunächst den Ruby Versions Manager (rvm),&lt;br /&gt;
 curl -L https://get.rvm.io | bash -s stable&lt;br /&gt;
 source ~/.rvm/scripts/rvm&lt;br /&gt;
 rvm notes&lt;br /&gt;
 rvm requirements&lt;br /&gt;
 rvm pkg install openssl&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
und lässt dann die gewünschte Ruby Version installieren.&lt;br /&gt;
 rvm install x.y.z&lt;br /&gt;
&lt;br /&gt;
RVM passt die Umgebungsvariablen automatisch an die ausgewählt Version an. Die Version wählt man global per&lt;br /&gt;
 rvm use x.y.z --default&lt;br /&gt;
oder nur für ein spezielles Verzeichnis:&lt;br /&gt;
 cd ~/verzeichnis/mit/ruby-x.y.z-Anwendung&lt;br /&gt;
 rvm use x.y.z-p??? --rvmrc&lt;br /&gt;
&lt;br /&gt;
Zur Verwaltung von gems installiert man noch rubygems.&lt;br /&gt;
 rvm rubygems current&lt;br /&gt;
&lt;br /&gt;
=== Rails ===&lt;br /&gt;
&lt;br /&gt;
Falls man die Ruby-Umgebung gerade erst eingerichtet hat, ohne sich zwischenzeitlich abzumelden, muß zunächst die Umgebung manuell laden.&lt;br /&gt;
 source ~/.profile&lt;br /&gt;
&lt;br /&gt;
Nun kann Rails per &amp;quot;gem install rails&amp;quot; installiert werden (inklusive Abhängigkeiten).&lt;br /&gt;
Um spezielle versionen zu installieren kann man den gem Befehl mit &amp;quot;-v=x.y.z&amp;quot; ergänzen.&lt;br /&gt;
&lt;br /&gt;
Zum Testen hier ein Beispiel das gleich noch eine fertige CMS Anwendung installiert (http://zenadmin.org) und mit einer einfachen sqlite Datenbankdatei einrichtet:&lt;br /&gt;
 gem install rails -v=2.3.11&lt;br /&gt;
 gem install i18n sexp_processor rmagick sqlite3 zena&lt;br /&gt;
 zena new ~/doms/example.com/rails      # Zena Rails-Anwendung anlegen.&lt;br /&gt;
 cd ~/doms/example.com/rails&lt;br /&gt;
 rake db:create        # Datenbank anlegen.&lt;br /&gt;
 zena migrate          # Datenbank Tabellen einrichten.&lt;br /&gt;
 zena mksite LANG=en RAILS_ENV=production PASSWORD=geheim HOST=example.org # Webseite anlegen.&lt;br /&gt;
&lt;br /&gt;
=== Rails-Anwendung ===&lt;br /&gt;
&lt;br /&gt;
Seine eigene Rails-Anwendung kopiert man z.B. nach ~/doms/example.com/rails, oder erstellt dort eine Neue (rails ~/doms/example.com/rails, ...).&lt;br /&gt;
&lt;br /&gt;
=== Datenbank ===&lt;br /&gt;
&lt;br /&gt;
Mit &#039;&#039;hsadmin&#039;&#039; beispielsweise einen Postgres-User (z.B. &#039;xyz00_rails&#039;, Passwort sei &#039;geheim&#039;) sowie eine Datenbank anlegen (z.B. &#039;xyz00_rails&#039;.&lt;br /&gt;
&lt;br /&gt;
Die Datenbank in der Anwendung konfigurieren,&lt;br /&gt;
&lt;br /&gt;
 cd ~/doms/example.com/rails/config/&lt;br /&gt;
 nano database.yml&lt;br /&gt;
&lt;br /&gt;
mit folgendem Inhalt:&lt;br /&gt;
&lt;br /&gt;
 production:&lt;br /&gt;
    adapter: postgresql&lt;br /&gt;
    database: xyz00_rails&lt;br /&gt;
    host: localhost&lt;br /&gt;
    username: xyz00_rails&lt;br /&gt;
    password: geheim&lt;br /&gt;
&lt;br /&gt;
=== E-Mail, Dateiablage ===&lt;br /&gt;
&lt;br /&gt;
Beispielhafte Konfiguration:&lt;br /&gt;
&lt;br /&gt;
 default:&lt;br /&gt;
    email_delivery:&lt;br /&gt;
      delivery_method: :smtp&lt;br /&gt;
      smtp_settings:&lt;br /&gt;
        address: localhost&lt;br /&gt;
        port: 25&lt;br /&gt;
        domain: example.org&lt;br /&gt;
    attachments_storage_path: /home/doms/example.com/rails/attach&lt;br /&gt;
&lt;br /&gt;
=== Datenbankschema ===&lt;br /&gt;
&lt;br /&gt;
Initialisieren und migrieren der Datenbank (je nach Rails-Anwendung).&lt;br /&gt;
&lt;br /&gt;
 cd ~/doms/example.com/rails&lt;br /&gt;
 ...&lt;br /&gt;
 rake ...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Konfiguration von FastCGI ===&lt;br /&gt;
&lt;br /&gt;
~/doms/example.org/htdocs/.htaccess&lt;br /&gt;
&lt;br /&gt;
 RewriteEngine On&lt;br /&gt;
 RewriteRule ^$ index.html [QSA]&lt;br /&gt;
 RewriteRule ^([^.]+)$ $1.html [QSA]&lt;br /&gt;
 RewriteCond %{REQUEST_FILENAME} !-f [OR]&lt;br /&gt;
 RewriteCond %{REQUEST_FILENAME} dispatch.fcgi$&lt;br /&gt;
 RewriteRule ^(.*)$ /fastcgi-bin/dispatch.fcgi [QSA,L]&lt;br /&gt;
&lt;br /&gt;
Ältere Versionen von Rails, die noch nicht auf der &amp;quot;rack&amp;quot; Middleware aufbauen (wie obiges zena Beispiel), laufen mit folgender ~/doms/www.example.org/fastcgi/dispatch.fcgi&lt;br /&gt;
&lt;br /&gt;
 #!/usr/bin/env ruby&lt;br /&gt;
 require &amp;quot;/home/doms/example.com/rails/config/environment&amp;quot; &lt;br /&gt;
 require &#039;fcgi_handler&#039;&lt;br /&gt;
 RailsFCGIHandler.process!&lt;br /&gt;
&lt;br /&gt;
Für aktuelle Versionen von Rails, die auf &amp;quot;rack&amp;quot; aufbauen, siehe https://github.com/dre3k/rails3_fcgi, ~/doms/www.example.org/fastcgi/dispatch.fcgi&lt;br /&gt;
  #!/usr/bin/env ruby&lt;br /&gt;
 &lt;br /&gt;
 require_relative &#039;../config/environment&#039;&lt;br /&gt;
 &lt;br /&gt;
 class Rack::PathInfoRewriter&lt;br /&gt;
   def initialize(app)&lt;br /&gt;
     @app = app&lt;br /&gt;
   end&lt;br /&gt;
 &lt;br /&gt;
   def call(env)&lt;br /&gt;
     env.delete(&#039;SCRIPT_NAME&#039;)&lt;br /&gt;
     parts = env[&#039;REQUEST_URI&#039;].split(&#039;?&#039;)&lt;br /&gt;
     env[&#039;PATH_INFO&#039;] = parts[0]&lt;br /&gt;
     env[&#039;QUERY_STRING&#039;] = parts[1].to_s&lt;br /&gt;
     @app.call(env)&lt;br /&gt;
   end&lt;br /&gt;
 end&lt;br /&gt;
 &lt;br /&gt;
 Rack::Handler::FastCGI.run  Rack::PathInfoRewriter.new(HIER_APPLIKATIONSNAME_AUS_config/application.rb_EINTRAGEN::Application)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
FastCGI-Skript ausführbar machen:&lt;br /&gt;
&lt;br /&gt;
 chmod 755 ~/doms/example.org/fastcgi/dispatch.fcgi&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Am Anfang von ~/doms/example.com/rails/config/environment.rb einfügen:&lt;br /&gt;
&lt;br /&gt;
 ENV[&#039;RAILS_ENV&#039;] ||= &#039;production&#039;&lt;br /&gt;
 ENV[&#039;GEM_PATH&#039;] ||= &#039;/home/pacs/xyz00/users/meinuser/.gem/ruby/1.8:/var/lib/gems/1.8&#039;&lt;br /&gt;
Evtl. könnten diese Einstellungen auch ohne eine Modifikation der Anwendung erfolgen, indem die Umgebungsvariablen in der .htaccess gesetzt werden (z.B. &amp;quot;SetEnv RAILS_ENV production&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
Die Applikation ins Webroot einbinden:&lt;br /&gt;
&lt;br /&gt;
 # ggf. vorhandene Dateien sichern (oder nach ~/doms/example.com/rails/public kopieren)&lt;br /&gt;
 mv ~/doms/example.org/htdocs ~/doms/example.org/htdocs.old&lt;br /&gt;
 # Das doms/example.com/rails/public Verzeichnis ins Webroot verlinken.&lt;br /&gt;
 ln -s ~/doms/example.com/rails/public ~/doms/example.org/htdocs&lt;br /&gt;
&lt;br /&gt;
=== Konfiguration von SSL ===&lt;br /&gt;
&lt;br /&gt;
Die Verzeichnisse ~/doms/example.org/fastcgi-ssl/ und ~/doms/rail.example.org/htdocs-ssl/ werden analog zu bzw. anstelle von fastcgi und htdocs gefüllt.&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:HSDoku]]&lt;br /&gt;
[[Kategorie:Installationsanleitungen]]&lt;br /&gt;
[[Kategorie:Software]]&lt;br /&gt;
[[Kategorie:Glossar]]&lt;/div&gt;</summary>
		<author><name>Srv00-wiki</name></author>
	</entry>
	<entry>
		<id>https://wiki.hostsharing.net/index.php?title=RubyOnRails&amp;diff=3472</id>
		<title>RubyOnRails</title>
		<link rel="alternate" type="text/html" href="https://wiki.hostsharing.net/index.php?title=RubyOnRails&amp;diff=3472"/>
		<updated>2012-09-02T17:51:40Z</updated>

		<summary type="html">&lt;p&gt;Srv00-wiki: /* Konfiguration von FastCGI */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Bestes Ruby on Rails Hosting bei Hostsharing ==&lt;br /&gt;
&lt;br /&gt;
Rubyanwendungen laufen (wie alle Anwendungen bei Hostsharing) als Prozesse des jeweiligen Benutzersaccounts. Probleme mit Dateirechten und Sicherheitsrisiken, wie sie sonst bei der Ausführung durch den Webserver auftreten, sind so von vorne herein ausgeschlossen.&lt;br /&gt;
&lt;br /&gt;
Standardmäßig erfolgt der Aufruf von Ruby Anwendungen durch den Apache Webserver über die FastCGI Schnittstelle. Dabei wird die Ruby Application Server Instanz des Users nach einem Aufruf noch für einige Zeit bereit gehalten, um sofort zur Bearbeitung von weiteren noch nicht gecacheten, oder gar nicht cachebaren, Anfragen zur Verfügung zu stehen.&lt;br /&gt;
&lt;br /&gt;
Für den Betrieb von noch anspruchsvolleren Anwendungen haben wir auch Tools wie haproxy, varnish, nginx etc. installiert. Wir können auch mod_passenger (mod_wsgi haben wir schon) oder mongrel oder Green Unicorn (gunicorn) installieren. Anwender, die damit auf unserer leistungsfähigen Infrastruktur (managed Plattform) z.B. einen Webserver Cluster mit load-balancing realisieren möchten, brauchen bei uns dafür nur eigene Daemons buchen, können dies aber auch (für größere Projekte) mit einer beliebigen Anzahl ganzer Server realisieren.&lt;br /&gt;
&lt;br /&gt;
== Einrichtung ohne zusätzliche Daemons (ein Application Server) ==&lt;br /&gt;
&lt;br /&gt;
=== Vorbereitungen ===&lt;br /&gt;
&lt;br /&gt;
Einige Einstellungen für den Paketuser.&lt;br /&gt;
&lt;br /&gt;
~/.gemrc&lt;br /&gt;
 install: --no-rdoc --no-ri&lt;br /&gt;
 update:  --no-rdoc --no-ri&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
~/.bashrc&lt;br /&gt;
 alias gem=&amp;quot;nice -n19 gem&amp;quot;&lt;br /&gt;
&lt;br /&gt;
~/.profile&lt;br /&gt;
 source &amp;quot;$HOME/.bashrc&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== Ruby ===&lt;br /&gt;
&lt;br /&gt;
==== Vorinstalliert ====&lt;br /&gt;
&lt;br /&gt;
Soll nur die zentral installierte Ruby Version 1.8 verwendet werden, ergänzt man man die ~/.profile:&lt;br /&gt;
 # enable user&#039;s own ruby installations, keeping all stuff below $HOME/.gem&lt;br /&gt;
 export PATH=&amp;quot;$HOME/bin:$HOME/.gem/ruby/1.8/bin:$PATH&amp;quot;&lt;br /&gt;
 export GEM_PATH=&amp;quot;$HOME/.gem/ruby/1.8:$( gem env gempath )&amp;quot;&lt;br /&gt;
 export GEM_HOME=&amp;quot;$HOME/.gem/ruby/1.8&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 # Disabled for now, because using system libs caused undefined method error.&lt;br /&gt;
 #export RUBYLIB=&amp;quot;$HOME/.gem/ruby/1.8/lib:/usr/local/lib/site_ruby/1.8:/usr/lib/ruby/1.8&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 # avoid to forget that extra parameter: ruby -rubygems prog_that_uses_gems&lt;br /&gt;
 export RUBYOPT=rubygems&lt;br /&gt;
 &lt;br /&gt;
 export RAILS_ENV=production&lt;br /&gt;
&lt;br /&gt;
==== Eigene Installation ====&lt;br /&gt;
&lt;br /&gt;
Um eine andere als die vorinstallierte Ruby Version zu verwenden, installiert man zunächst den Ruby Versions Manager (rvm),&lt;br /&gt;
 curl -L https://get.rvm.io | bash -s stable&lt;br /&gt;
 source ~/.rvm/scripts/rvm&lt;br /&gt;
 rvm notes&lt;br /&gt;
 rvm requirements&lt;br /&gt;
 rvm pkg install openssl&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
und lässt dann die gewünschte Ruby Version installieren.&lt;br /&gt;
 rvm install x.y.z&lt;br /&gt;
&lt;br /&gt;
RVM passt die Umgebungsvariablen automatisch an die ausgewählt Version an. Die Version wählt man global per&lt;br /&gt;
 rvm use x.y.z --default&lt;br /&gt;
oder nur für ein spezielles Verzeichnis:&lt;br /&gt;
 cd ~/verzeichnis/mit/ruby-x.y.z-Anwendung&lt;br /&gt;
 rvm use x.y.z-p??? --rvmrc&lt;br /&gt;
&lt;br /&gt;
Zur Verwaltung von gems installiert man noch rubygems.&lt;br /&gt;
 rvm rubygems current&lt;br /&gt;
&lt;br /&gt;
=== Rails ===&lt;br /&gt;
&lt;br /&gt;
Falls man die Ruby-Umgebung gerade erst eingerichtet hat, ohne sich zwischenzeitlich abzumelden, muß zunächst die Umgebung manuell laden.&lt;br /&gt;
 source ~/.profile&lt;br /&gt;
&lt;br /&gt;
Nun kann Rails per &amp;quot;gem install rails&amp;quot; installiert werden (inklusive Abhängigkeiten).&lt;br /&gt;
Um spezielle versionen zu installieren kann man den gem Befehl mit &amp;quot;-v=x.y.z&amp;quot; ergänzen.&lt;br /&gt;
&lt;br /&gt;
Zum Testen hier ein Beispiel das gleich noch eine fertige CMS Anwendung installiert (http://zenadmin.org) und mit einer einfachen sqlite Datenbankdatei einrichtet:&lt;br /&gt;
 gem install rails -v=2.3.11&lt;br /&gt;
 gem install i18n sexp_processor rmagick sqlite3 zena&lt;br /&gt;
 zena new ~/doms/example.com/rails      # Zena Rails-Anwendung anlegen.&lt;br /&gt;
 cd ~/doms/example.com/rails&lt;br /&gt;
 rake db:create        # Datenbank anlegen.&lt;br /&gt;
 zena migrate          # Datenbank Tabellen einrichten.&lt;br /&gt;
 zena mksite LANG=en RAILS_ENV=production PASSWORD=geheim HOST=example.org # Webseite anlegen.&lt;br /&gt;
&lt;br /&gt;
=== Rails-Anwendung ===&lt;br /&gt;
&lt;br /&gt;
Seine eigene Rails-Anwendung kopiert man z.B. nach ~/doms/example.com/rails, oder erstellt dort eine Neue (rails ~/doms/example.com/rails, ...).&lt;br /&gt;
&lt;br /&gt;
=== Datenbank ===&lt;br /&gt;
&lt;br /&gt;
Mit &#039;&#039;hsadmin&#039;&#039; beispielsweise einen Postgres-User (z.B. &#039;xyz00_rails&#039;, Passwort sei &#039;geheim&#039;) sowie eine Datenbank anlegen (z.B. &#039;xyz00_rails&#039;.&lt;br /&gt;
&lt;br /&gt;
Die Datenbank in der Anwendung konfigurieren,&lt;br /&gt;
&lt;br /&gt;
 cd ~/doms/example.com/rails/config/&lt;br /&gt;
 nano database.yml&lt;br /&gt;
&lt;br /&gt;
mit folgendem Inhalt:&lt;br /&gt;
&lt;br /&gt;
 production:&lt;br /&gt;
    adapter: postgresql&lt;br /&gt;
    database: xyz00_rails&lt;br /&gt;
    host: localhost&lt;br /&gt;
    username: xyz00_rails&lt;br /&gt;
    password: geheim&lt;br /&gt;
&lt;br /&gt;
=== E-Mail, Dateiablage ===&lt;br /&gt;
&lt;br /&gt;
Beispielhafte Konfiguration:&lt;br /&gt;
&lt;br /&gt;
 default:&lt;br /&gt;
    email_delivery:&lt;br /&gt;
      delivery_method: :smtp&lt;br /&gt;
      smtp_settings:&lt;br /&gt;
        address: localhost&lt;br /&gt;
        port: 25&lt;br /&gt;
        domain: example.org&lt;br /&gt;
    attachments_storage_path: /home/pacs/xyz00/users/doms/example.com/rails/attach&lt;br /&gt;
&lt;br /&gt;
=== Datenbankschema ===&lt;br /&gt;
&lt;br /&gt;
Initialisieren und migrieren der Datenbank (je nach Rails-Anwendung).&lt;br /&gt;
&lt;br /&gt;
 cd ~/doms/example.com/rails&lt;br /&gt;
 ...&lt;br /&gt;
 rake ...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Konfiguration von FastCGI ===&lt;br /&gt;
&lt;br /&gt;
~/doms/example.org/htdocs/.htaccess&lt;br /&gt;
&lt;br /&gt;
 RewriteEngine On&lt;br /&gt;
 RewriteRule ^$ index.html [QSA]&lt;br /&gt;
 RewriteRule ^([^.]+)$ $1.html [QSA]&lt;br /&gt;
 RewriteCond %{REQUEST_FILENAME} !-f [OR]&lt;br /&gt;
 RewriteCond %{REQUEST_FILENAME} dispatch.fcgi$&lt;br /&gt;
 RewriteRule ^(.*)$ /fastcgi-bin/dispatch.fcgi [QSA,L]&lt;br /&gt;
&lt;br /&gt;
Ältere Versionen von Rails, die noch nicht auf der &amp;quot;rack&amp;quot; Middleware aufbauen (wie obiges zena Beispiel), laufen mit folgender ~/doms/www.example.org/fastcgi/dispatch.fcgi&lt;br /&gt;
&lt;br /&gt;
 #!/usr/bin/env ruby&lt;br /&gt;
 require &amp;quot;/home/doms/example.com/rails/config/environment&amp;quot; &lt;br /&gt;
 require &#039;fcgi_handler&#039;&lt;br /&gt;
 RailsFCGIHandler.process!&lt;br /&gt;
&lt;br /&gt;
Für aktuelle Versionen von Rails, die auf &amp;quot;rack&amp;quot; aufbauen, siehe https://github.com/dre3k/rails3_fcgi, ~/doms/www.example.org/fastcgi/dispatch.fcgi&lt;br /&gt;
  #!/usr/bin/env ruby&lt;br /&gt;
 &lt;br /&gt;
 require_relative &#039;../config/environment&#039;&lt;br /&gt;
 &lt;br /&gt;
 class Rack::PathInfoRewriter&lt;br /&gt;
   def initialize(app)&lt;br /&gt;
     @app = app&lt;br /&gt;
   end&lt;br /&gt;
 &lt;br /&gt;
   def call(env)&lt;br /&gt;
     env.delete(&#039;SCRIPT_NAME&#039;)&lt;br /&gt;
     parts = env[&#039;REQUEST_URI&#039;].split(&#039;?&#039;)&lt;br /&gt;
     env[&#039;PATH_INFO&#039;] = parts[0]&lt;br /&gt;
     env[&#039;QUERY_STRING&#039;] = parts[1].to_s&lt;br /&gt;
     @app.call(env)&lt;br /&gt;
   end&lt;br /&gt;
 end&lt;br /&gt;
 &lt;br /&gt;
 Rack::Handler::FastCGI.run  Rack::PathInfoRewriter.new(HIER_APPLIKATIONSNAME_AUS_config/application.rb_EINTRAGEN::Application)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
FastCGI-Skript ausführbar machen:&lt;br /&gt;
&lt;br /&gt;
 chmod 755 ~/doms/example.org/fastcgi/dispatch.fcgi&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Am Anfang von ~/doms/example.com/rails/config/environment.rb einfügen:&lt;br /&gt;
&lt;br /&gt;
 ENV[&#039;RAILS_ENV&#039;] ||= &#039;production&#039;&lt;br /&gt;
 ENV[&#039;GEM_PATH&#039;] ||= &#039;/home/pacs/xyz00/users/meinuser/.gem/ruby/1.8:/var/lib/gems/1.8&#039;&lt;br /&gt;
Evtl. könnten diese Einstellungen auch ohne eine Modifikation der Anwendung erfolgen, indem die Umgebungsvariablen in der .htaccess gesetzt werden (z.B. &amp;quot;SetEnv RAILS_ENV production&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
Die Applikation ins Webroot einbinden:&lt;br /&gt;
&lt;br /&gt;
 # ggf. vorhandene Dateien sichern (oder nach ~/doms/example.com/rails/public kopieren)&lt;br /&gt;
 mv ~/doms/example.org/htdocs ~/doms/example.org/htdocs.old&lt;br /&gt;
 # Das doms/example.com/rails/public Verzeichnis ins Webroot verlinken.&lt;br /&gt;
 ln -s ~/doms/example.com/rails/public ~/doms/example.org/htdocs&lt;br /&gt;
&lt;br /&gt;
=== Konfiguration von SSL ===&lt;br /&gt;
&lt;br /&gt;
Die Verzeichnisse ~/doms/example.org/fastcgi-ssl/ und ~/doms/rail.example.org/htdocs-ssl/ werden analog zu bzw. anstelle von fastcgi und htdocs gefüllt.&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:HSDoku]]&lt;br /&gt;
[[Kategorie:Installationsanleitungen]]&lt;br /&gt;
[[Kategorie:Software]]&lt;br /&gt;
[[Kategorie:Glossar]]&lt;/div&gt;</summary>
		<author><name>Srv00-wiki</name></author>
	</entry>
	<entry>
		<id>https://wiki.hostsharing.net/index.php?title=RubyOnRails&amp;diff=3471</id>
		<title>RubyOnRails</title>
		<link rel="alternate" type="text/html" href="https://wiki.hostsharing.net/index.php?title=RubyOnRails&amp;diff=3471"/>
		<updated>2012-09-02T17:07:10Z</updated>

		<summary type="html">&lt;p&gt;Srv00-wiki: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Bestes Ruby on Rails Hosting bei Hostsharing ==&lt;br /&gt;
&lt;br /&gt;
Rubyanwendungen laufen (wie alle Anwendungen bei Hostsharing) als Prozesse des jeweiligen Benutzersaccounts. Probleme mit Dateirechten und Sicherheitsrisiken, wie sie sonst bei der Ausführung durch den Webserver auftreten, sind so von vorne herein ausgeschlossen.&lt;br /&gt;
&lt;br /&gt;
Standardmäßig erfolgt der Aufruf von Ruby Anwendungen durch den Apache Webserver über die FastCGI Schnittstelle. Dabei wird die Ruby Application Server Instanz des Users nach einem Aufruf noch für einige Zeit bereit gehalten, um sofort zur Bearbeitung von weiteren noch nicht gecacheten, oder gar nicht cachebaren, Anfragen zur Verfügung zu stehen.&lt;br /&gt;
&lt;br /&gt;
Für den Betrieb von noch anspruchsvolleren Anwendungen haben wir auch Tools wie haproxy, varnish, nginx etc. installiert. Wir können auch mod_passenger (mod_wsgi haben wir schon) oder mongrel oder Green Unicorn (gunicorn) installieren. Anwender, die damit auf unserer leistungsfähigen Infrastruktur (managed Plattform) z.B. einen Webserver Cluster mit load-balancing realisieren möchten, brauchen bei uns dafür nur eigene Daemons buchen, können dies aber auch (für größere Projekte) mit einer beliebigen Anzahl ganzer Server realisieren.&lt;br /&gt;
&lt;br /&gt;
== Einrichtung ohne zusätzliche Daemons (ein Application Server) ==&lt;br /&gt;
&lt;br /&gt;
=== Vorbereitungen ===&lt;br /&gt;
&lt;br /&gt;
Einige Einstellungen für den Paketuser.&lt;br /&gt;
&lt;br /&gt;
~/.gemrc&lt;br /&gt;
 install: --no-rdoc --no-ri&lt;br /&gt;
 update:  --no-rdoc --no-ri&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
~/.bashrc&lt;br /&gt;
 alias gem=&amp;quot;nice -n19 gem&amp;quot;&lt;br /&gt;
&lt;br /&gt;
~/.profile&lt;br /&gt;
 source &amp;quot;$HOME/.bashrc&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== Ruby ===&lt;br /&gt;
&lt;br /&gt;
==== Vorinstalliert ====&lt;br /&gt;
&lt;br /&gt;
Soll nur die zentral installierte Ruby Version 1.8 verwendet werden, ergänzt man man die ~/.profile:&lt;br /&gt;
 # enable user&#039;s own ruby installations, keeping all stuff below $HOME/.gem&lt;br /&gt;
 export PATH=&amp;quot;$HOME/bin:$HOME/.gem/ruby/1.8/bin:$PATH&amp;quot;&lt;br /&gt;
 export GEM_PATH=&amp;quot;$HOME/.gem/ruby/1.8:$( gem env gempath )&amp;quot;&lt;br /&gt;
 export GEM_HOME=&amp;quot;$HOME/.gem/ruby/1.8&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 # Disabled for now, because using system libs caused undefined method error.&lt;br /&gt;
 #export RUBYLIB=&amp;quot;$HOME/.gem/ruby/1.8/lib:/usr/local/lib/site_ruby/1.8:/usr/lib/ruby/1.8&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 # avoid to forget that extra parameter: ruby -rubygems prog_that_uses_gems&lt;br /&gt;
 export RUBYOPT=rubygems&lt;br /&gt;
 &lt;br /&gt;
 export RAILS_ENV=production&lt;br /&gt;
&lt;br /&gt;
==== Eigene Installation ====&lt;br /&gt;
&lt;br /&gt;
Um eine andere als die vorinstallierte Ruby Version zu verwenden, installiert man zunächst den Ruby Versions Manager (rvm),&lt;br /&gt;
 curl -L https://get.rvm.io | bash -s stable&lt;br /&gt;
 source ~/.rvm/scripts/rvm&lt;br /&gt;
 rvm notes&lt;br /&gt;
 rvm requirements&lt;br /&gt;
 rvm pkg install openssl&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
und lässt dann die gewünschte Ruby Version installieren.&lt;br /&gt;
 rvm install x.y.z&lt;br /&gt;
&lt;br /&gt;
RVM passt die Umgebungsvariablen automatisch an die ausgewählt Version an. Die Version wählt man global per&lt;br /&gt;
 rvm use x.y.z --default&lt;br /&gt;
oder nur für ein spezielles Verzeichnis:&lt;br /&gt;
 cd ~/verzeichnis/mit/ruby-x.y.z-Anwendung&lt;br /&gt;
 rvm use x.y.z-p??? --rvmrc&lt;br /&gt;
&lt;br /&gt;
Zur Verwaltung von gems installiert man noch rubygems.&lt;br /&gt;
 rvm rubygems current&lt;br /&gt;
&lt;br /&gt;
=== Rails ===&lt;br /&gt;
&lt;br /&gt;
Falls man die Ruby-Umgebung gerade erst eingerichtet hat, ohne sich zwischenzeitlich abzumelden, muß zunächst die Umgebung manuell laden.&lt;br /&gt;
 source ~/.profile&lt;br /&gt;
&lt;br /&gt;
Nun kann Rails per &amp;quot;gem install rails&amp;quot; installiert werden (inklusive Abhängigkeiten).&lt;br /&gt;
Um spezielle versionen zu installieren kann man den gem Befehl mit &amp;quot;-v=x.y.z&amp;quot; ergänzen.&lt;br /&gt;
&lt;br /&gt;
Zum Testen hier ein Beispiel das gleich noch eine fertige CMS Anwendung installiert (http://zenadmin.org) und mit einer einfachen sqlite Datenbankdatei einrichtet:&lt;br /&gt;
 gem install rails -v=2.3.11&lt;br /&gt;
 gem install i18n sexp_processor rmagick sqlite3 zena&lt;br /&gt;
 zena new ~/doms/example.com/rails      # Zena Rails-Anwendung anlegen.&lt;br /&gt;
 cd ~/doms/example.com/rails&lt;br /&gt;
 rake db:create        # Datenbank anlegen.&lt;br /&gt;
 zena migrate          # Datenbank Tabellen einrichten.&lt;br /&gt;
 zena mksite LANG=en RAILS_ENV=production PASSWORD=geheim HOST=example.org # Webseite anlegen.&lt;br /&gt;
&lt;br /&gt;
=== Rails-Anwendung ===&lt;br /&gt;
&lt;br /&gt;
Seine eigene Rails-Anwendung kopiert man z.B. nach ~/doms/example.com/rails, oder erstellt dort eine Neue (rails ~/doms/example.com/rails, ...).&lt;br /&gt;
&lt;br /&gt;
=== Datenbank ===&lt;br /&gt;
&lt;br /&gt;
Mit &#039;&#039;hsadmin&#039;&#039; beispielsweise einen Postgres-User (z.B. &#039;xyz00_rails&#039;, Passwort sei &#039;geheim&#039;) sowie eine Datenbank anlegen (z.B. &#039;xyz00_rails&#039;.&lt;br /&gt;
&lt;br /&gt;
Die Datenbank in der Anwendung konfigurieren,&lt;br /&gt;
&lt;br /&gt;
 cd ~/doms/example.com/rails/config/&lt;br /&gt;
 nano database.yml&lt;br /&gt;
&lt;br /&gt;
mit folgendem Inhalt:&lt;br /&gt;
&lt;br /&gt;
 production:&lt;br /&gt;
    adapter: postgresql&lt;br /&gt;
    database: xyz00_rails&lt;br /&gt;
    host: localhost&lt;br /&gt;
    username: xyz00_rails&lt;br /&gt;
    password: geheim&lt;br /&gt;
&lt;br /&gt;
=== E-Mail, Dateiablage ===&lt;br /&gt;
&lt;br /&gt;
Beispielhafte Konfiguration:&lt;br /&gt;
&lt;br /&gt;
 default:&lt;br /&gt;
    email_delivery:&lt;br /&gt;
      delivery_method: :smtp&lt;br /&gt;
      smtp_settings:&lt;br /&gt;
        address: localhost&lt;br /&gt;
        port: 25&lt;br /&gt;
        domain: example.org&lt;br /&gt;
    attachments_storage_path: /home/pacs/xyz00/users/doms/example.com/rails/attach&lt;br /&gt;
&lt;br /&gt;
=== Datenbankschema ===&lt;br /&gt;
&lt;br /&gt;
Initialisieren und migrieren der Datenbank (je nach Rails-Anwendung).&lt;br /&gt;
&lt;br /&gt;
 cd ~/doms/example.com/rails&lt;br /&gt;
 ...&lt;br /&gt;
 rake ...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Konfiguration von FastCGI ===&lt;br /&gt;
&lt;br /&gt;
~/doms/example.org/htdocs/.htaccess&lt;br /&gt;
&lt;br /&gt;
 RewriteEngine On&lt;br /&gt;
 RewriteRule ^$ index.html [QSA]&lt;br /&gt;
 RewriteRule ^([^.]+)$ $1.html [QSA]&lt;br /&gt;
 RewriteCond %{REQUEST_FILENAME} !-f [OR]&lt;br /&gt;
 RewriteCond %{REQUEST_FILENAME} dispatch.fcgi$&lt;br /&gt;
 RewriteRule ^(.*)$ /fastcgi-bin/dispatch.fcgi [QSA,L]&lt;br /&gt;
&lt;br /&gt;
Ältere Versionen von Rails, die noch nicht auf der &amp;quot;rack&amp;quot; Middleware aufbauen (wie obiges zena Beispiel), laufen mit folgender ~/doms/www.example.org/fastcgi/dispatch.fcgi&lt;br /&gt;
&lt;br /&gt;
 #!/usr/bin/env ruby&lt;br /&gt;
 require &amp;quot;/home/pacs/xyz00/users/meinuser/doms/example.com/rails/config/environment&amp;quot; &lt;br /&gt;
 require &#039;fcgi_handler&#039;&lt;br /&gt;
 RailsFCGIHandler.process!&lt;br /&gt;
&lt;br /&gt;
Für aktuelle Versionen von Rails, die auf &amp;quot;rack&amp;quot; aufbauen, siehe https://github.com/dre3k/rails3_fcgi, ~/doms/www.example.org/fastcgi/dispatch.fcgi&lt;br /&gt;
  #!/usr/bin/env ruby&lt;br /&gt;
 &lt;br /&gt;
 require_relative &#039;../config/environment&#039;&lt;br /&gt;
 &lt;br /&gt;
 class Rack::PathInfoRewriter&lt;br /&gt;
   def initialize(app)&lt;br /&gt;
     @app = app&lt;br /&gt;
   end&lt;br /&gt;
 &lt;br /&gt;
   def call(env)&lt;br /&gt;
     env.delete(&#039;SCRIPT_NAME&#039;)&lt;br /&gt;
     parts = env[&#039;REQUEST_URI&#039;].split(&#039;?&#039;)&lt;br /&gt;
     env[&#039;PATH_INFO&#039;] = parts[0]&lt;br /&gt;
     env[&#039;QUERY_STRING&#039;] = parts[1].to_s&lt;br /&gt;
     @app.call(env)&lt;br /&gt;
   end&lt;br /&gt;
 end&lt;br /&gt;
 &lt;br /&gt;
 Rack::Handler::FastCGI.run  Rack::PathInfoRewriter.new(HIER_APPLIKATIONSNAME_AUS_config/application.rb_EINTRAGEN::Application)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
FastCGI-Skript ausführbar machen:&lt;br /&gt;
&lt;br /&gt;
 chmod 755 ~/doms/example.org/fastcgi/dispatch.fcgi&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Am Anfang von ~/doms/example.com/rails/config/environment.rb einfügen:&lt;br /&gt;
&lt;br /&gt;
 ENV[&#039;RAILS_ENV&#039;] ||= &#039;production&#039;&lt;br /&gt;
 ENV[&#039;GEM_PATH&#039;] ||= &#039;/home/pacs/xyz00/users/meinuser/.gem/ruby/1.8:/var/lib/gems/1.8&#039;&lt;br /&gt;
Evtl. könnten diese Einstellungen auch ohne eine Modifikation der Anwendung erfolgen, indem die Umgebungsvariablen in der .htaccess gesetzt werden (z.B. &amp;quot;SetEnv RAILS_ENV production&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
Die Applikation ins Webroot einbinden:&lt;br /&gt;
&lt;br /&gt;
 # ggf. vorhandene Dateien sichern (oder nach ~/doms/example.com/rails/public kopieren)&lt;br /&gt;
 mv ~/doms/example.org/htdocs ~/doms/example.org/htdocs.old&lt;br /&gt;
 # Das doms/example.com/rails/public Verzeichnis ins Webroot verlinken.&lt;br /&gt;
 ln -s ~/doms/example.com/rails/public ~/doms/example.org/htdocs&lt;br /&gt;
&lt;br /&gt;
=== Konfiguration von SSL ===&lt;br /&gt;
&lt;br /&gt;
Die Verzeichnisse ~/doms/example.org/fastcgi-ssl/ und ~/doms/rail.example.org/htdocs-ssl/ werden analog zu bzw. anstelle von fastcgi und htdocs gefüllt.&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:HSDoku]]&lt;br /&gt;
[[Kategorie:Installationsanleitungen]]&lt;br /&gt;
[[Kategorie:Software]]&lt;br /&gt;
[[Kategorie:Glossar]]&lt;/div&gt;</summary>
		<author><name>Srv00-wiki</name></author>
	</entry>
	<entry>
		<id>https://wiki.hostsharing.net/index.php?title=MySQL&amp;diff=3470</id>
		<title>MySQL</title>
		<link rel="alternate" type="text/html" href="https://wiki.hostsharing.net/index.php?title=MySQL&amp;diff=3470"/>
		<updated>2012-09-02T16:53:36Z</updated>

		<summary type="html">&lt;p&gt;Srv00-wiki: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Server ==&lt;br /&gt;
&lt;br /&gt;
Wir haben pro Host einen einzelnen MySQL Datenbankserver. Der Zugriff erfolgt über den Hostnamen &amp;lt;b&amp;gt;localhost&amp;lt;/b&amp;gt; und den Port 3306 (default). Außerdem kann der Server über den Socket &amp;lt;b&amp;gt;/var/run/mysqld/mysqld.sock&amp;lt;/b&amp;gt; erreicht werden.&lt;br /&gt;
&lt;br /&gt;
Die Anzahl der in Hostsharing Dynamic-Web-Paketen verwendbaren MySQL-Datenbanken ist ist durch die&lt;br /&gt;
Anzahl der jeweils gebuchten Multioptionen begrenzt. Der damit verbrauchte Speicherplatz geht in die Quota des Paketes mit ein, sodass hierüber eine zusätzliche Begrenzung vorliegt. Alle Datenbanken eines Paketes müssen mit dem Paketnamen und einem Underscore beginnen, also z.B. &amp;lt;b&amp;gt;xyz00_datenbank&amp;lt;/b&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== MySQL-User ==&lt;br /&gt;
&lt;br /&gt;
{{Textkasten|gruen||Die Namen der Datenbank-Benutzer müssen in keiner Beziehung zu den Unix-Benutzernamen auf den Hostsharing-Systemen stehen, also den Namen, die für den [[shell]]-Zugang verwendet werden.}}&lt;br /&gt;
&lt;br /&gt;
Es gilt jedoch die Regel, dass die Namen aller Datenbank-Benutzer eines Pakets mit dem Paketkürzel beginnen. Eine sinnvolle Konvention ist es, sofern man als Paketadministrator einen zentralen Datenbank-Administrator für alle Datenbanken einrichten möchte, diesen nur nach dem Paket zu benennen (z. B. &#039;&#039;&#039;xyz00&#039;&#039;&#039;). So zeigt der kurze Name die Sonderstellung an und der Paket-Administrator gleichzeitig zentraler Datenbankadministrator ist, kann er seinen Datenbank-Benutzernamen nicht ohne den Paket-Namen vergessen, sprich immer leicht ableiten.&lt;br /&gt;
&lt;br /&gt;
Weitere Datenbank-Benutzernamen können aus dem Paket-Namen, einem Unterstrich, und einer freien Zeichenfolge gebildet werden. Also kann der Paketadmin &#039;&#039;&#039;xyz00&#039;&#039;&#039; weitere User der Form &#039;&#039;&#039;xyz00_abc&#039;&#039;&#039; einrichten. Beachte die Differenz zu Unix-User-Namen, die nicht mit Unterstrich, sondern mit Bindestrich gebildet werden (&#039;&#039;&#039;xyz00&#039;&#039;&#039; -&amp;gt; &#039;&#039;&#039;xyz00-abc&#039;&#039;&#039;).&lt;br /&gt;
&lt;br /&gt;
Sinnvoll ist es z.B. für jede Anwendung eine eigene Datenbank und mindestens einen auf jeweilige Datenbank beschränkten Benutzer anzulegen.&lt;br /&gt;
&lt;br /&gt;
=== Paketadmin ===&lt;br /&gt;
&lt;br /&gt;
Der Paketadmin hat mit seinem Account sehr weitgehende administrative Rechte in MySQL und sollte dementsprechend mit Umsicht genutzt werden. Er kann mit seinem Account im Administrationswerkzeug [[hsadmin]] unter anderem:&lt;br /&gt;
&lt;br /&gt;
* Datenbanken anlegen und löschen&lt;br /&gt;
* Datenbank-Benutzer anlegen und löschen&lt;br /&gt;
&lt;br /&gt;
Bevor man in seinem Paket eine Datenbank anlegen kann, muss man zunächst einen Datenbank-Benutzer einrichten, den man zum Datenbank-Administrator machen kann. Das ist zwingend notwendig. Datenbank-Administrator kann ein Datenbank-User mit dem Kürzel des Paketadmins sein (&amp;lt;b&amp;gt;xyz00&amp;lt;/b&amp;gt;). Es können allerdings auch beliebige Namen, die mit dem Paketkürzel &amp;lt;b&amp;gt;xyz00_...&amp;lt;/b&amp;gt; beginnen angelegt werden. Ein Datenbank-Adminstrator hat alle Rechte an einer Datenbank und wird wie unter &amp;quot;[[Datenbanken#Verwaltung_von_Datenbanken |Verwaltung von Datenbanken]]&amp;quot; beschrieben eingerichtet.&lt;br /&gt;
&lt;br /&gt;
=== Weitere Benutzer anlegen ===&lt;br /&gt;
&lt;br /&gt;
Du kannst Dir weitere Benutzer für MySQL anlegen. Wir empfehlen Dir das ausdrücklich, weil es eine gute Idee ist, den mächtigen Zugang eines Datenbank-Admins nur für administrative Zwecke zu benutzen. Wenn Skripten z.B. keine ganzen Tabellen löschen dürfen (drop) kann dies auch nicht aus versehen oder böswillig geschehen. Für einzelne Aufgaben kannst Du verschiedene Benutzer anlegen, denen Du natürlich auch verschiedene Rechte geben kannst, z.B. nur Leserechte an bestimmten Tabellen oder bestimmte Kommandos.&lt;br /&gt;
&lt;br /&gt;
Wir legen noch einen User an:&lt;br /&gt;
&lt;br /&gt;
siehe [[Datenbanken]]&lt;br /&gt;
&lt;br /&gt;
=== Der MySQL-Monitor ===&lt;br /&gt;
&lt;br /&gt;
Mit den neu angelegten User-Accounts können wir nun in den MySQL-Monitor wechseln, in dem die MySQL-Befehle eingegeben und verarbeitet werden. Der Monitor wird mit dem Befehl &amp;lt;b&amp;gt;mysql&amp;lt;/b&amp;gt; aufgerufen. Es ist hier übrigens egal, ob wir als Paketadmin oder als Domainadmin eingeloggt sind, denn MySQL-User und UNIX-Accounts haben keinen Zusammenhang. Wir können mit jedem UNIX-Account, also auch als normaler Domainadmin auf jeden Datenbank-Account zugreifen - auch auf den Paketadmin-Account.&lt;br /&gt;
&lt;br /&gt;
Da wir uns mit Benutzernamen und Passwort anmelden müssen, verwenden wir die Optionen -u (und danach den Benutzernamen) und -p. Das Passwort geben wir nicht in dieser Kommandozeile an, denn sonst ist es für andere User sichtbar. Wenn wir nach -p nichts angeben, werden wir von mysql danach gefragt und geben es dann an.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
xyz00@hopi$ mysql -u xyz00 -p&lt;br /&gt;
Enter password: password&lt;br /&gt;
Welcome to the MySQL monitor. Commands end with ; or \g.&lt;br /&gt;
Your MySQL connection id is 1257230 to server version: 3.23.49-log&lt;br /&gt;
Type &#039;help;&#039; or &#039;\h&#039; for help. Type &#039;\c&#039; to clear the buffer.&lt;br /&gt;
mysql&amp;gt;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nun können wir MySQL-Befehle eingeben. Zu beachten ist, dass man nach einem Kommando mit einem ; abschließen muss. Es gibt einige Ausnahmen, wo man das nicht braucht, z.B. beim Befehl QUIT, mit dem man den Monitor wieder verlässt.&lt;br /&gt;
=== Datenbank anlegen === &lt;br /&gt;
&lt;br /&gt;
geht nun auch mit [[hsadmin]] siehe [[Datenbanken]].&lt;br /&gt;
&lt;br /&gt;
Datenbanknamen in MySQL beginnen bei Hostsharing immer mit dem Namen des Pakets, gefolgt von einem Unterstrich; danach folgt der frei wählbare eigentliche Name.&lt;br /&gt;
&lt;br /&gt;
Beispiele gültiger Datenbanken für ein Paket &amp;lt;b&amp;gt;xyz00&amp;lt;/b&amp;gt;:&lt;br /&gt;
* &amp;lt;b&amp;gt;xyz00_otto&amp;lt;/b&amp;gt;&lt;br /&gt;
* &amp;lt;b&amp;gt;xyz00_anna&amp;lt;/b&amp;gt;&lt;br /&gt;
* &amp;lt;b&amp;gt;xyz00_db_fuer_hans&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Rechte vergeben ===&lt;br /&gt;
&lt;br /&gt;
Allen Benutzern, außer dem Paketadmin, müssen wir noch Rechte geben, sonst können sie gar nichts machen. Das erledigt man mit dem Befehl &amp;lt;b&amp;gt;GRANT&amp;lt;/b&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
mysql&amp;gt;GRANT SELECT, INSERT, DELETE, UPDATE ON xyz00_meinedatenbank.* TO xyz00_otto;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hinter der Datenbank verwenden wir .*, um alle Tabellen der Datenbank zu inkludieren. &lt;br /&gt;
&lt;br /&gt;
Mit &amp;lt;b&amp;gt;GRANT ALL&amp;lt;/b&amp;gt; kann man einem User auch alle Kommandorechte zuweisen.&lt;br /&gt;
&lt;br /&gt;
Alle Aufgaben können wir jetzt in Zukunft vom User &amp;lt;b&amp;gt;xyz00_otto&amp;lt;/b&amp;gt; erledigen lassen.&lt;br /&gt;
&lt;br /&gt;
== Verschiedenes ==&lt;br /&gt;
&lt;br /&gt;
* Web-Frontend: [http://www.phpmyadmin.net phpMyAdmin] ist unter https://phpmyadmin.hostsharing.net/current erreichbar.&lt;br /&gt;
* Online-Dokumentation: Die Online-Doku zu MySQL gibt es unter http://dev.mysql.com/doc/. Auf dieser Site gibt es auch mehrere Fassungen der kompletten Doku zum Downloaden.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
[[Kategorie:HSDoku]]&lt;br /&gt;
[[Kategorie:Datenbanken]]&lt;br /&gt;
[[Kategorie:Glossar]]&lt;br /&gt;
[[Kategorie:ToDo-Kerndoku]]&lt;/div&gt;</summary>
		<author><name>Srv00-wiki</name></author>
	</entry>
	<entry>
		<id>https://wiki.hostsharing.net/index.php?title=RubyOnRails&amp;diff=3469</id>
		<title>RubyOnRails</title>
		<link rel="alternate" type="text/html" href="https://wiki.hostsharing.net/index.php?title=RubyOnRails&amp;diff=3469"/>
		<updated>2012-09-02T16:38:08Z</updated>

		<summary type="html">&lt;p&gt;Srv00-wiki: /* Vorinstalliert */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Bestes Ruby on Rails Hosting bei Hostsharing ==&lt;br /&gt;
&lt;br /&gt;
Rubyanwendungen laufen (wie alle Anwendungen bei Hostsharing) als Prozesse des jeweiligen Benutzersaccounts. Probleme mit Dateirechten und Sicherheitsrisiken, wie sie sonst bei der Ausführung durch den Webserver auftreten, sind so von vorne herein ausgeschlossen.&lt;br /&gt;
&lt;br /&gt;
Standardmäßig erfolgt der Aufruf von Ruby Anwendungen durch den Apache Webserver über die FastCGI Schnittstelle. Dabei wird die Ruby Application Server Instanz des Users nach einem Aufruf noch für einige Zeit bereit gehalten, um sofort zur Bearbeitung von weiteren noch nicht gecacheten, oder gar nicht cachebaren, Anfragen zur Verfügung zu stehen.&lt;br /&gt;
&lt;br /&gt;
Für den Betrieb von noch anspruchsvolleren Anwendungen haben wir auch Tools wie haproxy, varnish, nginx etc. installiert. Wir können auch mod_passenger (mod_wsgi haben wir schon) oder mongrel oder Green Unicorn (gunicorn) installieren. Anwender, die damit auf unserer leistungsfähigen Infrastruktur (managed Plattform) z.B. einen Webserver Cluster mit load-balancing realisieren möchten, brauchen bei uns dafür nur eigene Daemons buchen, können dies aber auch (für größere Projekte) mit einer beliebigen Anzahl ganzer Server realisieren.&lt;br /&gt;
&lt;br /&gt;
== Einrichtung ohne zusätzliche Daemons (ein Application Server) ==&lt;br /&gt;
&lt;br /&gt;
=== Vorbereitungen ===&lt;br /&gt;
&lt;br /&gt;
Einige Einstellungen für den Paketuser.&lt;br /&gt;
&lt;br /&gt;
~/.gemrc&lt;br /&gt;
 install: --no-rdoc --no-ri&lt;br /&gt;
 update:  --no-rdoc --no-ri&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
~/.bashrc&lt;br /&gt;
 alias gem=&amp;quot;nice -n19 gem&amp;quot;&lt;br /&gt;
&lt;br /&gt;
~/.profile&lt;br /&gt;
 source &amp;quot;$HOME/.bashrc&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== Ruby ===&lt;br /&gt;
&lt;br /&gt;
==== Vorinstalliert ====&lt;br /&gt;
&lt;br /&gt;
Soll nur die zentral installierte Ruby Version 1.8 verwendet werden, ergänzt man man die ~/.profile:&lt;br /&gt;
 # enable user&#039;s own ruby installations, keeping all stuff below $HOME/.gem&lt;br /&gt;
 export PATH=&amp;quot;$HOME/bin:$HOME/.gem/ruby/1.8/bin:$PATH&amp;quot;&lt;br /&gt;
 export GEM_PATH=&amp;quot;$HOME/.gem/ruby/1.8:$( gem env gempath )&amp;quot;&lt;br /&gt;
 export GEM_HOME=&amp;quot;$HOME/.gem/ruby/1.8&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 # Disabled for now, because using system libs caused undefined method error.&lt;br /&gt;
 #export RUBYLIB=&amp;quot;$HOME/.gem/ruby/1.8/lib:/usr/local/lib/site_ruby/1.8:/usr/lib/ruby/1.8&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 # avoid to forget that extra parameter: ruby -rubygems prog_that_uses_gems&lt;br /&gt;
 export RUBYOPT=rubygems&lt;br /&gt;
 &lt;br /&gt;
 export RAILS_ENV=production&lt;br /&gt;
&lt;br /&gt;
==== Eigene Installation ====&lt;br /&gt;
&lt;br /&gt;
Um eine andere als die vorinstallierte Ruby Version zu verwenden, installiert man zunächst den Ruby Versions Manager (rvm),&lt;br /&gt;
 curl -L https://get.rvm.io | bash -s stable&lt;br /&gt;
 source ~/.rvm/scripts/rvm&lt;br /&gt;
 rvm notes&lt;br /&gt;
 rvm requirements&lt;br /&gt;
 rvm pkg install openssl&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
und lässt dann die gewünschte Ruby Version installieren.&lt;br /&gt;
 rvm install x.y.z&lt;br /&gt;
&lt;br /&gt;
RVM passt die Umgebungsvariablen automatisch an die ausgewählt Version an. Die Version wählt man global per&lt;br /&gt;
 rvm use x.y.z --default&lt;br /&gt;
oder nur für ein spezielles Verzeichnis:&lt;br /&gt;
 cd ~/verzeichnis/mit/ruby-x.y.z-Anwendung&lt;br /&gt;
 rvm use x.y.z-p??? --rvmrc&lt;br /&gt;
&lt;br /&gt;
Zur Verwaltung von gems installiert man noch rubygems.&lt;br /&gt;
 rvm rubygems current&lt;br /&gt;
&lt;br /&gt;
=== Rails ===&lt;br /&gt;
&lt;br /&gt;
Falls man die Ruby-Umgebung gerade erst eingerichtet hat, ohne sich zwischenzeitlich abzumelden, muß zunächst die Umgebung manuell laden.&lt;br /&gt;
 source ~/.profile&lt;br /&gt;
&lt;br /&gt;
Nun kann Rails per &amp;quot;gem install rails&amp;quot; installiert werden (inklusive Abhängigkeiten).&lt;br /&gt;
Um spezielle versionen zu installieren kann man den gem Befehl mit &amp;quot;-v=x.y.z&amp;quot; ergänzen.&lt;br /&gt;
&lt;br /&gt;
Zum Testen hier ein Beispiel das gleich noch eine fertige CMS Anwendung installiert (http://zenadmin.org) und mit einer einfachen sqlite Datenbankdatei einrichtet:&lt;br /&gt;
 gem install rails -v=2.3.11&lt;br /&gt;
 gem install i18n sexp_processor rmagick sqlite3 zena&lt;br /&gt;
 zena new ~/rails      # Zena Rails-Anwendung anlegen.&lt;br /&gt;
 cd ~/rails&lt;br /&gt;
 rake db:create        # Datenbank anlegen.&lt;br /&gt;
 zena migrate          # Datenbank Tabellen einrichten.&lt;br /&gt;
 zena mksite LANG=en RAILS_ENV=production PASSWORD=geheim HOST=rails.example.org # Webseite anlegen.&lt;br /&gt;
&lt;br /&gt;
=== Rails-Anwendung ===&lt;br /&gt;
&lt;br /&gt;
Seine eigene Rails-Anwendung kopiert man z.B. nach ~/rails, oder erstellt dort eine Neue (rails ~/rails, ...).&lt;br /&gt;
&lt;br /&gt;
=== Datenbank ===&lt;br /&gt;
&lt;br /&gt;
Mit &#039;&#039;hsadmin&#039;&#039; beispielsweise einen Postgres-User (z.B. &#039;xyz00_rails&#039;, Passwort sei &#039;geheim&#039;) sowie eine Datenbank anlegen (z.B. &#039;xyz00_rails&#039;.&lt;br /&gt;
&lt;br /&gt;
Die Datenbank in der Anwendung konfigurieren,&lt;br /&gt;
&lt;br /&gt;
 cd ~/rails/config/&lt;br /&gt;
 nano database.yml&lt;br /&gt;
&lt;br /&gt;
mit folgendem Inhalt:&lt;br /&gt;
&lt;br /&gt;
 production:&lt;br /&gt;
    adapter: postgresql&lt;br /&gt;
    database: xyz00_rails&lt;br /&gt;
    host: localhost&lt;br /&gt;
    username: xyz00_rails&lt;br /&gt;
    password: geheim&lt;br /&gt;
&lt;br /&gt;
=== E-Mail, Dateiablage ===&lt;br /&gt;
&lt;br /&gt;
Beispielhafte Konfiguration:&lt;br /&gt;
&lt;br /&gt;
 default:&lt;br /&gt;
    email_delivery:&lt;br /&gt;
      delivery_method: :smtp&lt;br /&gt;
      smtp_settings:&lt;br /&gt;
        address: localhost&lt;br /&gt;
        port: 25&lt;br /&gt;
        domain: example.org&lt;br /&gt;
    attachments_storage_path: /home/pacs/xyz00/users/rails/attach&lt;br /&gt;
&lt;br /&gt;
=== Datenbankschema ===&lt;br /&gt;
&lt;br /&gt;
Initialisieren und migrieren der Datenbank (je nach Rails-Anwendung).&lt;br /&gt;
&lt;br /&gt;
 cd ~/rails&lt;br /&gt;
 ...&lt;br /&gt;
 rake ...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Konfiguration von FastCGI ===&lt;br /&gt;
&lt;br /&gt;
~/doms/rails.example.org/htdocs/.htaccess&lt;br /&gt;
&lt;br /&gt;
 RewriteEngine On&lt;br /&gt;
 RewriteRule ^$ index.html [QSA]&lt;br /&gt;
 RewriteRule ^([^.]+)$ $1.html [QSA]&lt;br /&gt;
 RewriteCond %{REQUEST_FILENAME} !-f [OR]&lt;br /&gt;
 RewriteCond %{REQUEST_FILENAME} dispatch.fcgi$&lt;br /&gt;
 RewriteRule ^(.*)$ /fastcgi-bin/dispatch.fcgi [QSA,L]&lt;br /&gt;
&lt;br /&gt;
Ältere Versionen von Rails, die noch nicht auf der &amp;quot;rack&amp;quot; Middleware aufbauen (wie obiges zena Beispiel), laufen mit folgender ~/doms/www.example.org/fastcgi/dispatch.fcgi&lt;br /&gt;
&lt;br /&gt;
 #!/usr/bin/env ruby&lt;br /&gt;
 require &amp;quot;/home/pacs/xyz00/users/meinuser/rails/config/environment&amp;quot; &lt;br /&gt;
 require &#039;fcgi_handler&#039;&lt;br /&gt;
 RailsFCGIHandler.process!&lt;br /&gt;
&lt;br /&gt;
Für aktuelle Versionen von Rails, die auf &amp;quot;rack&amp;quot; aufbauen, siehe https://github.com/dre3k/rails3_fcgi, ~/doms/www.example.org/fastcgi/dispatch.fcgi&lt;br /&gt;
  #!/usr/bin/env ruby&lt;br /&gt;
 &lt;br /&gt;
 require_relative &#039;../config/environment&#039;&lt;br /&gt;
 &lt;br /&gt;
 class Rack::PathInfoRewriter&lt;br /&gt;
   def initialize(app)&lt;br /&gt;
     @app = app&lt;br /&gt;
   end&lt;br /&gt;
 &lt;br /&gt;
   def call(env)&lt;br /&gt;
     env.delete(&#039;SCRIPT_NAME&#039;)&lt;br /&gt;
     parts = env[&#039;REQUEST_URI&#039;].split(&#039;?&#039;)&lt;br /&gt;
     env[&#039;PATH_INFO&#039;] = parts[0]&lt;br /&gt;
     env[&#039;QUERY_STRING&#039;] = parts[1].to_s&lt;br /&gt;
     @app.call(env)&lt;br /&gt;
   end&lt;br /&gt;
 end&lt;br /&gt;
 &lt;br /&gt;
 Rack::Handler::FastCGI.run  Rack::PathInfoRewriter.new(HIER_APPLIKATIONSNAME_AUS_config/application.rb_EINTRAGEN::Application)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
FastCGI-Skript ausführbar machen:&lt;br /&gt;
&lt;br /&gt;
 chmod 755 ~/doms/rails.example.org/fastcgi/dispatch.fcgi&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Am Anfang von ~/rails/config/environment.rb einfügen:&lt;br /&gt;
&lt;br /&gt;
 ENV[&#039;RAILS_ENV&#039;] ||= &#039;production&#039;&lt;br /&gt;
 ENV[&#039;GEM_PATH&#039;] ||= &#039;/home/pacs/xyz00/users/meinuser/.gem/ruby/1.8:/var/lib/gems/1.8&#039;&lt;br /&gt;
Evtl. könnten diese Einstellungen auch ohne eine Modifikation der Anwendung erfolgen, indem die Umgebungsvariablen in der .htaccess gesetzt werden (z.B. &amp;quot;SetEnv RAILS_ENV production&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
Die Applikation ins Webroot einbinden:&lt;br /&gt;
&lt;br /&gt;
 # ggf. vorhandene Dateien sichern (oder nach ~/rails/public kopieren)&lt;br /&gt;
 mv ~/doms/rails.example.org/htdocs ~/doms/rails.example.org/htdocs.old&lt;br /&gt;
 # Das rails/public Verzeichnis ins Webroot verlinken.&lt;br /&gt;
 ln -s ~/rails/public ~/doms/rails.example.org/htdocs&lt;br /&gt;
&lt;br /&gt;
=== Konfiguration von SSL ===&lt;br /&gt;
&lt;br /&gt;
Die Verzeichnisse ~/doms/rails.example.org/fastcgi-ssl/ und ~/doms/rail.example.org/htdocs-ssl/ werden analog zu bzw. anstelle von fastcgi und htdocs gefüllt.&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:HSDoku]]&lt;br /&gt;
[[Kategorie:Installationsanleitungen]]&lt;br /&gt;
[[Kategorie:Software]]&lt;br /&gt;
[[Kategorie:Glossar]]&lt;/div&gt;</summary>
		<author><name>Srv00-wiki</name></author>
	</entry>
	<entry>
		<id>https://wiki.hostsharing.net/index.php?title=MySQL&amp;diff=3468</id>
		<title>MySQL</title>
		<link rel="alternate" type="text/html" href="https://wiki.hostsharing.net/index.php?title=MySQL&amp;diff=3468"/>
		<updated>2012-09-01T22:51:31Z</updated>

		<summary type="html">&lt;p&gt;Srv00-wiki: /* MySQL-User */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Server ==&lt;br /&gt;
&lt;br /&gt;
Wir haben pro Host einen einzelnen MySQL Datenbankserver. Der Zugriff erfolgt über den Hostnamen &amp;lt;b&amp;gt;localhost&amp;lt;/b&amp;gt; und den Port 3306 (default). Außerdem kann der Server über den Socket &amp;lt;b&amp;gt;/var/run/mysqld/mysqld.sock&amp;lt;/b&amp;gt; erreicht werden.&lt;br /&gt;
&lt;br /&gt;
Die Anzahl der in Hostsharing Dynamic-Web-Paketen verwendbaren MySQL-Datenbanken ist ist durch die&lt;br /&gt;
Anzahl der jeweils gebuchten Multioptionen begrenzt. Der damit verbrauchte Speicherplatz geht in die Quota des Paketes mit ein, sodass hierüber eine zusätzliche Begrenzung vorliegt. Alle Datenbanken eines Paketes müssen mit dem Paketnamen und einem Underscore beginnen, also z.B. &amp;lt;b&amp;gt;xyz00_datenbank&amp;lt;/b&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== MySQL-User ==&lt;br /&gt;
&lt;br /&gt;
{{Textkasten|gruen||Die Namen der Datenbank-Benutzer müssen in keiner Beziehung zu den Unix-Benutzernamen auf den Hostsharing-Systemen stehen, also den Namen, die für den [[shell]]-Zugang verwendet werden.}}&lt;br /&gt;
&lt;br /&gt;
Es gilt jedoch die Regel, dass die Namen aller Datenbank-Benutzer eines Pakets mit dem Paketkürzel beginnen. Eine sinnvolle Konvention ist es, sofern man als Paketadministrator einen zentralen Datenbank-Administrator für alle Datenbanken einrichten möchte, diesen nur nach dem Paket zu benennen (z. B. &#039;&#039;&#039;xyz00&#039;&#039;&#039;). So zeigt der kurze Name die Sonderstellung an und der Paket-Administrator gleichzeitig zentraler Datenbankadministrator ist, kann er seinen Datenbank-Benutzernamen nicht ohne den Paket-Namen vergessen, sprich immer leicht ableiten.&lt;br /&gt;
&lt;br /&gt;
Weitere Datenbank-Benutzernamen können aus dem Paket-Namen, einem Unterstrich, und einer freien Zeichenfolge gebildet werden. Also kann der Paketadmin &#039;&#039;&#039;xyz00&#039;&#039;&#039; weitere User der Form &#039;&#039;&#039;xyz00_abc&#039;&#039;&#039; einrichten. Beachte die Differenz zu Unix-User-Namen, die nicht mit Unterstrich, sondern mit Bindestrich gebildet werden (&#039;&#039;&#039;xyz00&#039;&#039;&#039; -&amp;gt; &#039;&#039;&#039;xyz00-abc&#039;&#039;&#039;).&lt;br /&gt;
&lt;br /&gt;
=== Paketadmin ===&lt;br /&gt;
&lt;br /&gt;
Der Paketadmin hat mit seinem Account sehr weitgehende administrative Rechte in MySQL und sollte dementsprechend mit Umsicht genutzt werden. Er kann mit seinem Account im Administrationswerkzeug [[hsadmin]] unter anderem:&lt;br /&gt;
&lt;br /&gt;
* Datenbanken anlegen und löschen&lt;br /&gt;
* Datenbank-Benutzer anlegen und löschen&lt;br /&gt;
&lt;br /&gt;
Bevor man in seinem Paket eine Datenbank anlegen kann, muss man zunächst einen Datenbank-Benutzer einrichten, den man zum Datenbank-Administrator machen kann. Das ist zwingend notwendig. Datenbank-Administrator kann ein Datenbank-User mit dem Kürzel des Paketadmins sein (&amp;lt;b&amp;gt;xyz00&amp;lt;/b&amp;gt;). Es können allerdings auch beliebige Namen, die mit dem Paketkürzel &amp;lt;b&amp;gt;xyz00_...&amp;lt;/b&amp;gt; beginnen angelegt werden. Ein Datenbank-Adminstrator hat alle Rechte an einer Datenbank und wird wie unter &amp;quot;[[Datenbanken#Verwaltung_von_Datenbanken |Verwaltung von Datenbanken]]&amp;quot; beschrieben eingerichtet.&lt;br /&gt;
&lt;br /&gt;
=== Weitere Benutzer anlegen ===&lt;br /&gt;
&lt;br /&gt;
Du kannst Dir weitere Benutzer für MySQL anlegen. Wir empfehlen Dir das ausdrücklich, weil es eine gute Idee ist, den mächtigen Zugang eines Datenbank-Admins nur für administrative Zwecke zu benutzen. Schließlich will man nicht immer den mächtigen Account des Paketadmins in seinen Skripten verwenden. Für einzelne Aufgaben kannst Du verschiedene Benutzer anlegen, denen Du natürlich auch verschiedene Rechte geben kannst, z.B. nur Rechte an bestimmten Tabellen oder zur Ausführung bestimmter Kommandos.&lt;br /&gt;
&lt;br /&gt;
Wir legen noch einen User an:&lt;br /&gt;
&lt;br /&gt;
siehe [[Datenbanken]]&lt;br /&gt;
&lt;br /&gt;
=== Der MySQL-Monitor ===&lt;br /&gt;
&lt;br /&gt;
Mit den neu angelegten User-Accounts können wir nun in den MySQL-Monitor wechseln, in dem die MySQL-Befehle eingegeben und verarbeitet werden. Der Monitor wird mit dem Befehl &amp;lt;b&amp;gt;mysql&amp;lt;/b&amp;gt; aufgerufen. Es ist hier übrigens egal, ob wir als Paketadmin oder als Domainadmin eingeloggt sind, denn MySQL-User und UNIX-Accounts haben keinen Zusammenhang. Wir können mit jedem UNIX-Account, also auch als normaler Domainadmin auf jeden Datenbank-Account zugreifen - auch auf den Paketadmin-Account.&lt;br /&gt;
&lt;br /&gt;
Da wir uns mit Benutzernamen und Passwort anmelden müssen, verwenden wir die Optionen -u (und danach den Benutzernamen) und -p. Das Passwort geben wir nicht in dieser Kommandozeile an, denn sonst ist es für andere User sichtbar. Wenn wir nach -p nichts angeben, werden wir von mysql danach gefragt und geben es dann an.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
xyz00@hopi$ mysql -u xyz00 -p&lt;br /&gt;
Enter password: password&lt;br /&gt;
Welcome to the MySQL monitor. Commands end with ; or \g.&lt;br /&gt;
Your MySQL connection id is 1257230 to server version: 3.23.49-log&lt;br /&gt;
Type &#039;help;&#039; or &#039;\h&#039; for help. Type &#039;\c&#039; to clear the buffer.&lt;br /&gt;
mysql&amp;gt;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nun können wir MySQL-Befehle eingeben. Zu beachten ist, dass man nach einem Kommando mit einem ; abschließen muss. Es gibt einige Ausnahmen, wo man das nicht braucht, z.B. beim Befehl QUIT, mit dem man den Monitor wieder verlässt.&lt;br /&gt;
=== Datenbank anlegen === &lt;br /&gt;
&lt;br /&gt;
geht nun auch mit [[hsadmin]] siehe [[Datenbanken]].&lt;br /&gt;
&lt;br /&gt;
Datenbanknamen in MySQL beginnen bei Hostsharing immer mit dem Namen des Pakets, gefolgt von einem Unterstrich; danach folgt der frei wählbare eigentliche Name.&lt;br /&gt;
&lt;br /&gt;
Beispiele gültiger Datenbanken für ein Paket &amp;lt;b&amp;gt;xyz00&amp;lt;/b&amp;gt;:&lt;br /&gt;
* &amp;lt;b&amp;gt;xyz00_otto&amp;lt;/b&amp;gt;&lt;br /&gt;
* &amp;lt;b&amp;gt;xyz00_anna&amp;lt;/b&amp;gt;&lt;br /&gt;
* &amp;lt;b&amp;gt;xyz00_db_fuer_hans&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Rechte vergeben ===&lt;br /&gt;
&lt;br /&gt;
Allen Benutzern, außer dem Paketadmin, müssen wir noch Rechte geben, sonst können sie gar nichts machen. Das erledigt man mit dem Befehl &amp;lt;b&amp;gt;GRANT&amp;lt;/b&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
mysql&amp;gt;GRANT SELECT, INSERT, DELETE, UPDATE ON xyz00_meinedatenbank.* TO xyz00_otto;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hinter der Datenbank verwenden wir .*, um alle Tabellen der Datenbank zu inkludieren. &lt;br /&gt;
&lt;br /&gt;
Mit &amp;lt;b&amp;gt;GRANT ALL&amp;lt;/b&amp;gt; kann man einem User auch alle Kommandorechte zuweisen.&lt;br /&gt;
&lt;br /&gt;
Alle Aufgaben können wir jetzt in Zukunft vom User &amp;lt;b&amp;gt;xyz00_otto&amp;lt;/b&amp;gt; erledigen lassen.&lt;br /&gt;
&lt;br /&gt;
== Verschiedenes ==&lt;br /&gt;
&lt;br /&gt;
* Web-Frontend: [http://www.phpmyadmin.net phpMyAdmin] ist unter https://phpmyadmin.hostsharing.net/current erreichbar.&lt;br /&gt;
* Online-Dokumentation: Die Online-Doku zu MySQL gibt es unter http://dev.mysql.com/doc/. Auf dieser Site gibt es auch mehrere Fassungen der kompletten Doku zum Downloaden.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
[[Kategorie:HSDoku]]&lt;br /&gt;
[[Kategorie:Datenbanken]]&lt;br /&gt;
[[Kategorie:Glossar]]&lt;br /&gt;
[[Kategorie:ToDo-Kerndoku]]&lt;/div&gt;</summary>
		<author><name>Srv00-wiki</name></author>
	</entry>
	<entry>
		<id>https://wiki.hostsharing.net/index.php?title=MySQL&amp;diff=3467</id>
		<title>MySQL</title>
		<link rel="alternate" type="text/html" href="https://wiki.hostsharing.net/index.php?title=MySQL&amp;diff=3467"/>
		<updated>2012-09-01T22:49:14Z</updated>

		<summary type="html">&lt;p&gt;Srv00-wiki: /* MySQL-User */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Server ==&lt;br /&gt;
&lt;br /&gt;
Wir haben pro Host einen einzelnen MySQL Datenbankserver. Der Zugriff erfolgt über den Hostnamen &amp;lt;b&amp;gt;localhost&amp;lt;/b&amp;gt; und den Port 3306 (default). Außerdem kann der Server über den Socket &amp;lt;b&amp;gt;/var/run/mysqld/mysqld.sock&amp;lt;/b&amp;gt; erreicht werden.&lt;br /&gt;
&lt;br /&gt;
Die Anzahl der in Hostsharing Dynamic-Web-Paketen verwendbaren MySQL-Datenbanken ist ist durch die&lt;br /&gt;
Anzahl der jeweils gebuchten Multioptionen begrenzt. Der damit verbrauchte Speicherplatz geht in die Quota des Paketes mit ein, sodass hierüber eine zusätzliche Begrenzung vorliegt. Alle Datenbanken eines Paketes müssen mit dem Paketnamen und einem Underscore beginnen, also z.B. &amp;lt;b&amp;gt;xyz00_datenbank&amp;lt;/b&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== MySQL-User ==&lt;br /&gt;
&lt;br /&gt;
{{Textkasten|gruen||Die Namen der Datenbank-Benutzer müssen in keiner Beziehung zu den Unix-Benutzernamen der Hostsharing-Systeme stehen, also den Namen, die für den [[shell]]-Zugang verwendet werden.}}&lt;br /&gt;
&lt;br /&gt;
Es gilt jedoch die Regel, dass die Namen aller Datenbank-Benutzer eines Pakets mit dem Paketkürzel beginnen. Eine sinnvolle Konvention ist es, sofern man als Paketadministrator einen zentralen Datenbank-Administrator für alle Datenbanken einrichten möchte, diesen nur nach dem Paket zu benennen (z. B. &#039;&#039;&#039;xyz00&#039;&#039;&#039;). So zeigt der kurze Name die Sonderstellung an und der Paket-Administrator gleichzeitig zentraler Datenbankadministrator ist, kann er seinen Datenbank-Benutzernamen nicht ohne den Paket-Namen vergessen, sprich immer leicht ableiten.&lt;br /&gt;
&lt;br /&gt;
Weitere Datenbank-Benutzernamen können aus dem Paket-Namen, einem Unterstrich, und einer freien Zeichenfolge gebildet werden. Also kann der Paketadmin &#039;&#039;&#039;xyz00&#039;&#039;&#039; weitere User der Form &#039;&#039;&#039;xyz00_abc&#039;&#039;&#039; einrichten. Beachte die Differenz zu Unix-User-Namen, die nicht mit Unterstrich, sondern mit Bindestrich gebildet werden (&#039;&#039;&#039;xyz00&#039;&#039;&#039; -&amp;gt; &#039;&#039;&#039;xyz00-abc&#039;&#039;&#039;).&lt;br /&gt;
&lt;br /&gt;
=== Paketadmin ===&lt;br /&gt;
&lt;br /&gt;
Der Paketadmin hat mit seinem Account sehr weitgehende administrative Rechte in MySQL und sollte dementsprechend mit Umsicht genutzt werden. Er kann mit seinem Account im Administrationswerkzeug [[hsadmin]] unter anderem:&lt;br /&gt;
&lt;br /&gt;
* Datenbanken anlegen und löschen&lt;br /&gt;
* Datenbank-Benutzer anlegen und löschen&lt;br /&gt;
&lt;br /&gt;
Bevor man in seinem Paket eine Datenbank anlegen kann, muss man zunächst einen Datenbank-Benutzer einrichten, den man zum Datenbank-Administrator machen kann. Das ist zwingend notwendig. Datenbank-Administrator kann ein Datenbank-User mit dem Kürzel des Paketadmins sein (&amp;lt;b&amp;gt;xyz00&amp;lt;/b&amp;gt;). Es können allerdings auch beliebige Namen, die mit dem Paketkürzel &amp;lt;b&amp;gt;xyz00_...&amp;lt;/b&amp;gt; beginnen angelegt werden. Ein Datenbank-Adminstrator hat alle Rechte an einer Datenbank und wird wie unter &amp;quot;[[Datenbanken#Verwaltung_von_Datenbanken |Verwaltung von Datenbanken]]&amp;quot; beschrieben eingerichtet.&lt;br /&gt;
&lt;br /&gt;
=== Weitere Benutzer anlegen ===&lt;br /&gt;
&lt;br /&gt;
Du kannst Dir weitere Benutzer für MySQL anlegen. Wir empfehlen Dir das ausdrücklich, weil es eine gute Idee ist, den mächtigen Zugang eines Datenbank-Admins nur für administrative Zwecke zu benutzen. Schließlich will man nicht immer den mächtigen Account des Paketadmins in seinen Skripten verwenden. Für einzelne Aufgaben kannst Du verschiedene Benutzer anlegen, denen Du natürlich auch verschiedene Rechte geben kannst, z.B. nur Rechte an bestimmten Tabellen oder zur Ausführung bestimmter Kommandos.&lt;br /&gt;
&lt;br /&gt;
Wir legen noch einen User an:&lt;br /&gt;
&lt;br /&gt;
siehe [[Datenbanken]]&lt;br /&gt;
&lt;br /&gt;
=== Der MySQL-Monitor ===&lt;br /&gt;
&lt;br /&gt;
Mit den neu angelegten User-Accounts können wir nun in den MySQL-Monitor wechseln, in dem die MySQL-Befehle eingegeben und verarbeitet werden. Der Monitor wird mit dem Befehl &amp;lt;b&amp;gt;mysql&amp;lt;/b&amp;gt; aufgerufen. Es ist hier übrigens egal, ob wir als Paketadmin oder als Domainadmin eingeloggt sind, denn MySQL-User und UNIX-Accounts haben keinen Zusammenhang. Wir können mit jedem UNIX-Account, also auch als normaler Domainadmin auf jeden Datenbank-Account zugreifen - auch auf den Paketadmin-Account.&lt;br /&gt;
&lt;br /&gt;
Da wir uns mit Benutzernamen und Passwort anmelden müssen, verwenden wir die Optionen -u (und danach den Benutzernamen) und -p. Das Passwort geben wir nicht in dieser Kommandozeile an, denn sonst ist es für andere User sichtbar. Wenn wir nach -p nichts angeben, werden wir von mysql danach gefragt und geben es dann an.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
xyz00@hopi$ mysql -u xyz00 -p&lt;br /&gt;
Enter password: password&lt;br /&gt;
Welcome to the MySQL monitor. Commands end with ; or \g.&lt;br /&gt;
Your MySQL connection id is 1257230 to server version: 3.23.49-log&lt;br /&gt;
Type &#039;help;&#039; or &#039;\h&#039; for help. Type &#039;\c&#039; to clear the buffer.&lt;br /&gt;
mysql&amp;gt;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nun können wir MySQL-Befehle eingeben. Zu beachten ist, dass man nach einem Kommando mit einem ; abschließen muss. Es gibt einige Ausnahmen, wo man das nicht braucht, z.B. beim Befehl QUIT, mit dem man den Monitor wieder verlässt.&lt;br /&gt;
=== Datenbank anlegen === &lt;br /&gt;
&lt;br /&gt;
geht nun auch mit [[hsadmin]] siehe [[Datenbanken]].&lt;br /&gt;
&lt;br /&gt;
Datenbanknamen in MySQL beginnen bei Hostsharing immer mit dem Namen des Pakets, gefolgt von einem Unterstrich; danach folgt der frei wählbare eigentliche Name.&lt;br /&gt;
&lt;br /&gt;
Beispiele gültiger Datenbanken für ein Paket &amp;lt;b&amp;gt;xyz00&amp;lt;/b&amp;gt;:&lt;br /&gt;
* &amp;lt;b&amp;gt;xyz00_otto&amp;lt;/b&amp;gt;&lt;br /&gt;
* &amp;lt;b&amp;gt;xyz00_anna&amp;lt;/b&amp;gt;&lt;br /&gt;
* &amp;lt;b&amp;gt;xyz00_db_fuer_hans&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Rechte vergeben ===&lt;br /&gt;
&lt;br /&gt;
Allen Benutzern, außer dem Paketadmin, müssen wir noch Rechte geben, sonst können sie gar nichts machen. Das erledigt man mit dem Befehl &amp;lt;b&amp;gt;GRANT&amp;lt;/b&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
mysql&amp;gt;GRANT SELECT, INSERT, DELETE, UPDATE ON xyz00_meinedatenbank.* TO xyz00_otto;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hinter der Datenbank verwenden wir .*, um alle Tabellen der Datenbank zu inkludieren. &lt;br /&gt;
&lt;br /&gt;
Mit &amp;lt;b&amp;gt;GRANT ALL&amp;lt;/b&amp;gt; kann man einem User auch alle Kommandorechte zuweisen.&lt;br /&gt;
&lt;br /&gt;
Alle Aufgaben können wir jetzt in Zukunft vom User &amp;lt;b&amp;gt;xyz00_otto&amp;lt;/b&amp;gt; erledigen lassen.&lt;br /&gt;
&lt;br /&gt;
== Verschiedenes ==&lt;br /&gt;
&lt;br /&gt;
* Web-Frontend: [http://www.phpmyadmin.net phpMyAdmin] ist unter https://phpmyadmin.hostsharing.net/current erreichbar.&lt;br /&gt;
* Online-Dokumentation: Die Online-Doku zu MySQL gibt es unter http://dev.mysql.com/doc/. Auf dieser Site gibt es auch mehrere Fassungen der kompletten Doku zum Downloaden.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
[[Kategorie:HSDoku]]&lt;br /&gt;
[[Kategorie:Datenbanken]]&lt;br /&gt;
[[Kategorie:Glossar]]&lt;br /&gt;
[[Kategorie:ToDo-Kerndoku]]&lt;/div&gt;</summary>
		<author><name>Srv00-wiki</name></author>
	</entry>
	<entry>
		<id>https://wiki.hostsharing.net/index.php?title=MySQL&amp;diff=3466</id>
		<title>MySQL</title>
		<link rel="alternate" type="text/html" href="https://wiki.hostsharing.net/index.php?title=MySQL&amp;diff=3466"/>
		<updated>2012-09-01T22:47:06Z</updated>

		<summary type="html">&lt;p&gt;Srv00-wiki: /* MySQL-User */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Server ==&lt;br /&gt;
&lt;br /&gt;
Wir haben pro Host einen einzelnen MySQL Datenbankserver. Der Zugriff erfolgt über den Hostnamen &amp;lt;b&amp;gt;localhost&amp;lt;/b&amp;gt; und den Port 3306 (default). Außerdem kann der Server über den Socket &amp;lt;b&amp;gt;/var/run/mysqld/mysqld.sock&amp;lt;/b&amp;gt; erreicht werden.&lt;br /&gt;
&lt;br /&gt;
Die Anzahl der in Hostsharing Dynamic-Web-Paketen verwendbaren MySQL-Datenbanken ist ist durch die&lt;br /&gt;
Anzahl der jeweils gebuchten Multioptionen begrenzt. Der damit verbrauchte Speicherplatz geht in die Quota des Paketes mit ein, sodass hierüber eine zusätzliche Begrenzung vorliegt. Alle Datenbanken eines Paketes müssen mit dem Paketnamen und einem Underscore beginnen, also z.B. &amp;lt;b&amp;gt;xyz00_datenbank&amp;lt;/b&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== MySQL-User ==&lt;br /&gt;
&lt;br /&gt;
{{Textkasten|gruen||Die Namen der Datenbank-Benutzer müssen in keiner Beziehung zu den Unix-Benutzernamen der Hostsharing-Systeme stehen, also den Namen, die für den [[shell]]-Zugang verwendet werden.}}&lt;br /&gt;
&lt;br /&gt;
Es gilt jedoch die Regel, dass die Namen aller Datenbank-Benutzer eines Pakets mit dem Paketkürzel beginnen. Eine sinnvolle Konvention ist es, sofern man als Paketadministrator einen zentralen Datenbank-Administrator für alle Datenbanken einrichten möchte, diesen nur nach dem Paket zu benennen (z. B. &#039;&#039;&#039;xyz00&#039;&#039;&#039;). So zeigt der kurze Name die Sonderstellung an und der Paket-Administrator gleichzeitig zentraler Datenbankadministrator ist, kann er seinen Datenbank-Benutzernamen nicht ohne den Paket-Namen vergessen, sprich immer leicht ableiten.&lt;br /&gt;
&lt;br /&gt;
Weitere Datenbank-Benutzernamen können aus dem Paket-Admin-Namen, einem Unterstrich, und einer freien Zeichenfolge gebildet werden. Also kann der Paketadmin &#039;&#039;&#039;xyz00&#039;&#039;&#039; weitere User der Form &#039;&#039;&#039;xyz00_abc&#039;&#039;&#039; einrichten. Beachte die Differenz zu Domain-Admin-Namen, die nicht mit Unterstrich, sondern mit Bindestrich gebildet werden (&#039;&#039;&#039;xyz00&#039;&#039;&#039; -&amp;gt; &#039;&#039;&#039;xyz00-abc&#039;&#039;&#039;).&lt;br /&gt;
&lt;br /&gt;
=== Paketadmin ===&lt;br /&gt;
&lt;br /&gt;
Der Paketadmin hat mit seinem Account sehr weitgehende administrative Rechte in MySQL und sollte dementsprechend mit Umsicht genutzt werden. Er kann mit seinem Account im Administrationswerkzeug [[hsadmin]] unter anderem:&lt;br /&gt;
&lt;br /&gt;
* Datenbanken anlegen und löschen&lt;br /&gt;
* Datenbank-Benutzer anlegen und löschen&lt;br /&gt;
&lt;br /&gt;
Bevor man in seinem Paket eine Datenbank anlegen kann, muss man zunächst einen Datenbank-Benutzer einrichten, den man zum Datenbank-Administrator machen kann. Das ist zwingend notwendig. Datenbank-Administrator kann ein Datenbank-User mit dem Kürzel des Paketadmins sein (&amp;lt;b&amp;gt;xyz00&amp;lt;/b&amp;gt;). Es können allerdings auch beliebige Namen, die mit dem Paketkürzel &amp;lt;b&amp;gt;xyz00_...&amp;lt;/b&amp;gt; beginnen angelegt werden. Ein Datenbank-Adminstrator hat alle Rechte an einer Datenbank und wird wie unter &amp;quot;[[Datenbanken#Verwaltung_von_Datenbanken |Verwaltung von Datenbanken]]&amp;quot; beschrieben eingerichtet.&lt;br /&gt;
&lt;br /&gt;
=== Weitere Benutzer anlegen ===&lt;br /&gt;
&lt;br /&gt;
Du kannst Dir weitere Benutzer für MySQL anlegen. Wir empfehlen Dir das ausdrücklich, weil es eine gute Idee ist, den mächtigen Zugang eines Datenbank-Admins nur für administrative Zwecke zu benutzen. Schließlich will man nicht immer den mächtigen Account des Paketadmins in seinen Skripten verwenden. Für einzelne Aufgaben kannst Du verschiedene Benutzer anlegen, denen Du natürlich auch verschiedene Rechte geben kannst, z.B. nur Rechte an bestimmten Tabellen oder zur Ausführung bestimmter Kommandos.&lt;br /&gt;
&lt;br /&gt;
Wir legen noch einen User an:&lt;br /&gt;
&lt;br /&gt;
siehe [[Datenbanken]]&lt;br /&gt;
&lt;br /&gt;
=== Der MySQL-Monitor ===&lt;br /&gt;
&lt;br /&gt;
Mit den neu angelegten User-Accounts können wir nun in den MySQL-Monitor wechseln, in dem die MySQL-Befehle eingegeben und verarbeitet werden. Der Monitor wird mit dem Befehl &amp;lt;b&amp;gt;mysql&amp;lt;/b&amp;gt; aufgerufen. Es ist hier übrigens egal, ob wir als Paketadmin oder als Domainadmin eingeloggt sind, denn MySQL-User und UNIX-Accounts haben keinen Zusammenhang. Wir können mit jedem UNIX-Account, also auch als normaler Domainadmin auf jeden Datenbank-Account zugreifen - auch auf den Paketadmin-Account.&lt;br /&gt;
&lt;br /&gt;
Da wir uns mit Benutzernamen und Passwort anmelden müssen, verwenden wir die Optionen -u (und danach den Benutzernamen) und -p. Das Passwort geben wir nicht in dieser Kommandozeile an, denn sonst ist es für andere User sichtbar. Wenn wir nach -p nichts angeben, werden wir von mysql danach gefragt und geben es dann an.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
xyz00@hopi$ mysql -u xyz00 -p&lt;br /&gt;
Enter password: password&lt;br /&gt;
Welcome to the MySQL monitor. Commands end with ; or \g.&lt;br /&gt;
Your MySQL connection id is 1257230 to server version: 3.23.49-log&lt;br /&gt;
Type &#039;help;&#039; or &#039;\h&#039; for help. Type &#039;\c&#039; to clear the buffer.&lt;br /&gt;
mysql&amp;gt;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nun können wir MySQL-Befehle eingeben. Zu beachten ist, dass man nach einem Kommando mit einem ; abschließen muss. Es gibt einige Ausnahmen, wo man das nicht braucht, z.B. beim Befehl QUIT, mit dem man den Monitor wieder verlässt.&lt;br /&gt;
=== Datenbank anlegen === &lt;br /&gt;
&lt;br /&gt;
geht nun auch mit [[hsadmin]] siehe [[Datenbanken]].&lt;br /&gt;
&lt;br /&gt;
Datenbanknamen in MySQL beginnen bei Hostsharing immer mit dem Namen des Pakets, gefolgt von einem Unterstrich; danach folgt der frei wählbare eigentliche Name.&lt;br /&gt;
&lt;br /&gt;
Beispiele gültiger Datenbanken für ein Paket &amp;lt;b&amp;gt;xyz00&amp;lt;/b&amp;gt;:&lt;br /&gt;
* &amp;lt;b&amp;gt;xyz00_otto&amp;lt;/b&amp;gt;&lt;br /&gt;
* &amp;lt;b&amp;gt;xyz00_anna&amp;lt;/b&amp;gt;&lt;br /&gt;
* &amp;lt;b&amp;gt;xyz00_db_fuer_hans&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Rechte vergeben ===&lt;br /&gt;
&lt;br /&gt;
Allen Benutzern, außer dem Paketadmin, müssen wir noch Rechte geben, sonst können sie gar nichts machen. Das erledigt man mit dem Befehl &amp;lt;b&amp;gt;GRANT&amp;lt;/b&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
mysql&amp;gt;GRANT SELECT, INSERT, DELETE, UPDATE ON xyz00_meinedatenbank.* TO xyz00_otto;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hinter der Datenbank verwenden wir .*, um alle Tabellen der Datenbank zu inkludieren. &lt;br /&gt;
&lt;br /&gt;
Mit &amp;lt;b&amp;gt;GRANT ALL&amp;lt;/b&amp;gt; kann man einem User auch alle Kommandorechte zuweisen.&lt;br /&gt;
&lt;br /&gt;
Alle Aufgaben können wir jetzt in Zukunft vom User &amp;lt;b&amp;gt;xyz00_otto&amp;lt;/b&amp;gt; erledigen lassen.&lt;br /&gt;
&lt;br /&gt;
== Verschiedenes ==&lt;br /&gt;
&lt;br /&gt;
* Web-Frontend: [http://www.phpmyadmin.net phpMyAdmin] ist unter https://phpmyadmin.hostsharing.net/current erreichbar.&lt;br /&gt;
* Online-Dokumentation: Die Online-Doku zu MySQL gibt es unter http://dev.mysql.com/doc/. Auf dieser Site gibt es auch mehrere Fassungen der kompletten Doku zum Downloaden.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
[[Kategorie:HSDoku]]&lt;br /&gt;
[[Kategorie:Datenbanken]]&lt;br /&gt;
[[Kategorie:Glossar]]&lt;br /&gt;
[[Kategorie:ToDo-Kerndoku]]&lt;/div&gt;</summary>
		<author><name>Srv00-wiki</name></author>
	</entry>
	<entry>
		<id>https://wiki.hostsharing.net/index.php?title=MySQL&amp;diff=3465</id>
		<title>MySQL</title>
		<link rel="alternate" type="text/html" href="https://wiki.hostsharing.net/index.php?title=MySQL&amp;diff=3465"/>
		<updated>2012-09-01T22:40:48Z</updated>

		<summary type="html">&lt;p&gt;Srv00-wiki: /* Weitere Benutzer anlegen */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Server ==&lt;br /&gt;
&lt;br /&gt;
Wir haben pro Host einen einzelnen MySQL Datenbankserver. Der Zugriff erfolgt über den Hostnamen &amp;lt;b&amp;gt;localhost&amp;lt;/b&amp;gt; und den Port 3306 (default). Außerdem kann der Server über den Socket &amp;lt;b&amp;gt;/var/run/mysqld/mysqld.sock&amp;lt;/b&amp;gt; erreicht werden.&lt;br /&gt;
&lt;br /&gt;
Die Anzahl der in Hostsharing Dynamic-Web-Paketen verwendbaren MySQL-Datenbanken ist ist durch die&lt;br /&gt;
Anzahl der jeweils gebuchten Multioptionen begrenzt. Der damit verbrauchte Speicherplatz geht in die Quota des Paketes mit ein, sodass hierüber eine zusätzliche Begrenzung vorliegt. Alle Datenbanken eines Paketes müssen mit dem Paketnamen und einem Underscore beginnen, also z.B. &amp;lt;b&amp;gt;xyz00_datenbank&amp;lt;/b&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== MySQL-User ==&lt;br /&gt;
&lt;br /&gt;
{{Textkasten|gruen||Die Namen der Datenbank-Benutzer müssen in keiner Beziehung zu den Unix-Benutzernamen der Hostsharing-Systeme stehen, also den Namen, die für den [[shell]]-Zugang verwendet werden.}}&lt;br /&gt;
&lt;br /&gt;
Es gilt jedoch die Regel, dass die Namen aller Datenbank-Benutzer eines Pakets mit dem Paketkürzel beginnen. Eine sinnvolle Konvention ist es, sofern man als Paketadministrator einen zentralen Datenbank-Administrator für alle Datenbanken einrichten möchte, diesen nur nach dem Paket zu benennen (z. B. &#039;&#039;&#039;xyz00&#039;&#039;&#039;). So kann der Paket-Admin seinen Benutzernamen für den Datenbank-Zugang nicht vergessen.&lt;br /&gt;
&lt;br /&gt;
Weitere Datenbank-Benutzernamen können aus dem Paket-Admin-Namen, einem Unterstrich, und einer freien Zeichenfolge gebildet werden. Also kann der Paketadmin &#039;&#039;&#039;xyz00&#039;&#039;&#039; weitere User der Form &#039;&#039;&#039;xyz00_abc&#039;&#039;&#039; einrichten. Beachte die Differenz zu Domain-Admin-Namen, die nicht mit Unterstrich, sondern mit Bindestrich gebildet werden (&#039;&#039;&#039;xyz00&#039;&#039;&#039; -&amp;gt; &#039;&#039;&#039;xyz00-abc&#039;&#039;&#039;).&lt;br /&gt;
&lt;br /&gt;
=== Paketadmin ===&lt;br /&gt;
&lt;br /&gt;
Der Paketadmin hat mit seinem Account sehr weitgehende administrative Rechte in MySQL und sollte dementsprechend mit Umsicht genutzt werden. Er kann mit seinem Account im Administrationswerkzeug [[hsadmin]] unter anderem:&lt;br /&gt;
&lt;br /&gt;
* Datenbanken anlegen und löschen&lt;br /&gt;
* Datenbank-Benutzer anlegen und löschen&lt;br /&gt;
&lt;br /&gt;
Bevor man in seinem Paket eine Datenbank anlegen kann, muss man zunächst einen Datenbank-Benutzer einrichten, den man zum Datenbank-Administrator machen kann. Das ist zwingend notwendig. Datenbank-Administrator kann ein Datenbank-User mit dem Kürzel des Paketadmins sein (&amp;lt;b&amp;gt;xyz00&amp;lt;/b&amp;gt;). Es können allerdings auch beliebige Namen, die mit dem Paketkürzel &amp;lt;b&amp;gt;xyz00_...&amp;lt;/b&amp;gt; beginnen angelegt werden. Ein Datenbank-Adminstrator hat alle Rechte an einer Datenbank und wird wie unter &amp;quot;[[Datenbanken#Verwaltung_von_Datenbanken |Verwaltung von Datenbanken]]&amp;quot; beschrieben eingerichtet.&lt;br /&gt;
&lt;br /&gt;
=== Weitere Benutzer anlegen ===&lt;br /&gt;
&lt;br /&gt;
Du kannst Dir weitere Benutzer für MySQL anlegen. Wir empfehlen Dir das ausdrücklich, weil es eine gute Idee ist, den mächtigen Zugang eines Datenbank-Admins nur für administrative Zwecke zu benutzen. Schließlich will man nicht immer den mächtigen Account des Paketadmins in seinen Skripten verwenden. Für einzelne Aufgaben kannst Du verschiedene Benutzer anlegen, denen Du natürlich auch verschiedene Rechte geben kannst, z.B. nur Rechte an bestimmten Tabellen oder zur Ausführung bestimmter Kommandos.&lt;br /&gt;
&lt;br /&gt;
Wir legen noch einen User an:&lt;br /&gt;
&lt;br /&gt;
siehe [[Datenbanken]]&lt;br /&gt;
&lt;br /&gt;
=== Der MySQL-Monitor ===&lt;br /&gt;
&lt;br /&gt;
Mit den neu angelegten User-Accounts können wir nun in den MySQL-Monitor wechseln, in dem die MySQL-Befehle eingegeben und verarbeitet werden. Der Monitor wird mit dem Befehl &amp;lt;b&amp;gt;mysql&amp;lt;/b&amp;gt; aufgerufen. Es ist hier übrigens egal, ob wir als Paketadmin oder als Domainadmin eingeloggt sind, denn MySQL-User und UNIX-Accounts haben keinen Zusammenhang. Wir können mit jedem UNIX-Account, also auch als normaler Domainadmin auf jeden Datenbank-Account zugreifen - auch auf den Paketadmin-Account.&lt;br /&gt;
&lt;br /&gt;
Da wir uns mit Benutzernamen und Passwort anmelden müssen, verwenden wir die Optionen -u (und danach den Benutzernamen) und -p. Das Passwort geben wir nicht in dieser Kommandozeile an, denn sonst ist es für andere User sichtbar. Wenn wir nach -p nichts angeben, werden wir von mysql danach gefragt und geben es dann an.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
xyz00@hopi$ mysql -u xyz00 -p&lt;br /&gt;
Enter password: password&lt;br /&gt;
Welcome to the MySQL monitor. Commands end with ; or \g.&lt;br /&gt;
Your MySQL connection id is 1257230 to server version: 3.23.49-log&lt;br /&gt;
Type &#039;help;&#039; or &#039;\h&#039; for help. Type &#039;\c&#039; to clear the buffer.&lt;br /&gt;
mysql&amp;gt;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nun können wir MySQL-Befehle eingeben. Zu beachten ist, dass man nach einem Kommando mit einem ; abschließen muss. Es gibt einige Ausnahmen, wo man das nicht braucht, z.B. beim Befehl QUIT, mit dem man den Monitor wieder verlässt.&lt;br /&gt;
=== Datenbank anlegen === &lt;br /&gt;
&lt;br /&gt;
geht nun auch mit [[hsadmin]] siehe [[Datenbanken]].&lt;br /&gt;
&lt;br /&gt;
Datenbanknamen in MySQL beginnen bei Hostsharing immer mit dem Namen des Pakets, gefolgt von einem Unterstrich; danach folgt der frei wählbare eigentliche Name.&lt;br /&gt;
&lt;br /&gt;
Beispiele gültiger Datenbanken für ein Paket &amp;lt;b&amp;gt;xyz00&amp;lt;/b&amp;gt;:&lt;br /&gt;
* &amp;lt;b&amp;gt;xyz00_otto&amp;lt;/b&amp;gt;&lt;br /&gt;
* &amp;lt;b&amp;gt;xyz00_anna&amp;lt;/b&amp;gt;&lt;br /&gt;
* &amp;lt;b&amp;gt;xyz00_db_fuer_hans&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Rechte vergeben ===&lt;br /&gt;
&lt;br /&gt;
Allen Benutzern, außer dem Paketadmin, müssen wir noch Rechte geben, sonst können sie gar nichts machen. Das erledigt man mit dem Befehl &amp;lt;b&amp;gt;GRANT&amp;lt;/b&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
mysql&amp;gt;GRANT SELECT, INSERT, DELETE, UPDATE ON xyz00_meinedatenbank.* TO xyz00_otto;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hinter der Datenbank verwenden wir .*, um alle Tabellen der Datenbank zu inkludieren. &lt;br /&gt;
&lt;br /&gt;
Mit &amp;lt;b&amp;gt;GRANT ALL&amp;lt;/b&amp;gt; kann man einem User auch alle Kommandorechte zuweisen.&lt;br /&gt;
&lt;br /&gt;
Alle Aufgaben können wir jetzt in Zukunft vom User &amp;lt;b&amp;gt;xyz00_otto&amp;lt;/b&amp;gt; erledigen lassen.&lt;br /&gt;
&lt;br /&gt;
== Verschiedenes ==&lt;br /&gt;
&lt;br /&gt;
* Web-Frontend: [http://www.phpmyadmin.net phpMyAdmin] ist unter https://phpmyadmin.hostsharing.net/current erreichbar.&lt;br /&gt;
* Online-Dokumentation: Die Online-Doku zu MySQL gibt es unter http://dev.mysql.com/doc/. Auf dieser Site gibt es auch mehrere Fassungen der kompletten Doku zum Downloaden.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
[[Kategorie:HSDoku]]&lt;br /&gt;
[[Kategorie:Datenbanken]]&lt;br /&gt;
[[Kategorie:Glossar]]&lt;br /&gt;
[[Kategorie:ToDo-Kerndoku]]&lt;/div&gt;</summary>
		<author><name>Srv00-wiki</name></author>
	</entry>
	<entry>
		<id>https://wiki.hostsharing.net/index.php?title=MySQL&amp;diff=3464</id>
		<title>MySQL</title>
		<link rel="alternate" type="text/html" href="https://wiki.hostsharing.net/index.php?title=MySQL&amp;diff=3464"/>
		<updated>2012-09-01T22:39:06Z</updated>

		<summary type="html">&lt;p&gt;Srv00-wiki: /* Paketadmin */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Server ==&lt;br /&gt;
&lt;br /&gt;
Wir haben pro Host einen einzelnen MySQL Datenbankserver. Der Zugriff erfolgt über den Hostnamen &amp;lt;b&amp;gt;localhost&amp;lt;/b&amp;gt; und den Port 3306 (default). Außerdem kann der Server über den Socket &amp;lt;b&amp;gt;/var/run/mysqld/mysqld.sock&amp;lt;/b&amp;gt; erreicht werden.&lt;br /&gt;
&lt;br /&gt;
Die Anzahl der in Hostsharing Dynamic-Web-Paketen verwendbaren MySQL-Datenbanken ist ist durch die&lt;br /&gt;
Anzahl der jeweils gebuchten Multioptionen begrenzt. Der damit verbrauchte Speicherplatz geht in die Quota des Paketes mit ein, sodass hierüber eine zusätzliche Begrenzung vorliegt. Alle Datenbanken eines Paketes müssen mit dem Paketnamen und einem Underscore beginnen, also z.B. &amp;lt;b&amp;gt;xyz00_datenbank&amp;lt;/b&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== MySQL-User ==&lt;br /&gt;
&lt;br /&gt;
{{Textkasten|gruen||Die Namen der Datenbank-Benutzer müssen in keiner Beziehung zu den Unix-Benutzernamen der Hostsharing-Systeme stehen, also den Namen, die für den [[shell]]-Zugang verwendet werden.}}&lt;br /&gt;
&lt;br /&gt;
Es gilt jedoch die Regel, dass die Namen aller Datenbank-Benutzer eines Pakets mit dem Paketkürzel beginnen. Eine sinnvolle Konvention ist es, sofern man als Paketadministrator einen zentralen Datenbank-Administrator für alle Datenbanken einrichten möchte, diesen nur nach dem Paket zu benennen (z. B. &#039;&#039;&#039;xyz00&#039;&#039;&#039;). So kann der Paket-Admin seinen Benutzernamen für den Datenbank-Zugang nicht vergessen.&lt;br /&gt;
&lt;br /&gt;
Weitere Datenbank-Benutzernamen können aus dem Paket-Admin-Namen, einem Unterstrich, und einer freien Zeichenfolge gebildet werden. Also kann der Paketadmin &#039;&#039;&#039;xyz00&#039;&#039;&#039; weitere User der Form &#039;&#039;&#039;xyz00_abc&#039;&#039;&#039; einrichten. Beachte die Differenz zu Domain-Admin-Namen, die nicht mit Unterstrich, sondern mit Bindestrich gebildet werden (&#039;&#039;&#039;xyz00&#039;&#039;&#039; -&amp;gt; &#039;&#039;&#039;xyz00-abc&#039;&#039;&#039;).&lt;br /&gt;
&lt;br /&gt;
=== Paketadmin ===&lt;br /&gt;
&lt;br /&gt;
Der Paketadmin hat mit seinem Account sehr weitgehende administrative Rechte in MySQL und sollte dementsprechend mit Umsicht genutzt werden. Er kann mit seinem Account im Administrationswerkzeug [[hsadmin]] unter anderem:&lt;br /&gt;
&lt;br /&gt;
* Datenbanken anlegen und löschen&lt;br /&gt;
* Datenbank-Benutzer anlegen und löschen&lt;br /&gt;
&lt;br /&gt;
Bevor man in seinem Paket eine Datenbank anlegen kann, muss man zunächst einen Datenbank-Benutzer einrichten, den man zum Datenbank-Administrator machen kann. Das ist zwingend notwendig. Datenbank-Administrator kann ein Datenbank-User mit dem Kürzel des Paketadmins sein (&amp;lt;b&amp;gt;xyz00&amp;lt;/b&amp;gt;). Es können allerdings auch beliebige Namen, die mit dem Paketkürzel &amp;lt;b&amp;gt;xyz00_...&amp;lt;/b&amp;gt; beginnen angelegt werden. Ein Datenbank-Adminstrator hat alle Rechte an einer Datenbank und wird wie unter &amp;quot;[[Datenbanken#Verwaltung_von_Datenbanken |Verwaltung von Datenbanken]]&amp;quot; beschrieben eingerichtet.&lt;br /&gt;
&lt;br /&gt;
=== Weitere Benutzer anlegen ===&lt;br /&gt;
&lt;br /&gt;
Du kannst Dir weitere Benutzer für MySQL anlegen. Wir empfehlen Dir das ausdrücklich, weil es eine gute Idee ist, den mächtigen Zugang des Paketadmins nur für administrative Zwecke zu benutzen. Schließlich will man nicht immer den mächtigen Account des Paketadmins in seinen Skripten verwenden. Für einzelne Aufgaben kannst Du verschiedene Benutzer anlegen, denen Du natürlich auch verschiedene Rechte geben kannst, z.B. nur Rechte an bestimmten Datenbanken oder zur Ausführung bestimmter Kommandos.&lt;br /&gt;
&lt;br /&gt;
Wir legen noch einen User an:&lt;br /&gt;
&lt;br /&gt;
siehe [[Datenbanken]]&lt;br /&gt;
&lt;br /&gt;
=== Der MySQL-Monitor ===&lt;br /&gt;
&lt;br /&gt;
Mit den neu angelegten User-Accounts können wir nun in den MySQL-Monitor wechseln, in dem die MySQL-Befehle eingegeben und verarbeitet werden. Der Monitor wird mit dem Befehl &amp;lt;b&amp;gt;mysql&amp;lt;/b&amp;gt; aufgerufen. Es ist hier übrigens egal, ob wir als Paketadmin oder als Domainadmin eingeloggt sind, denn MySQL-User und UNIX-Accounts haben keinen Zusammenhang. Wir können mit jedem UNIX-Account, also auch als normaler Domainadmin auf jeden Datenbank-Account zugreifen - auch auf den Paketadmin-Account.&lt;br /&gt;
&lt;br /&gt;
Da wir uns mit Benutzernamen und Passwort anmelden müssen, verwenden wir die Optionen -u (und danach den Benutzernamen) und -p. Das Passwort geben wir nicht in dieser Kommandozeile an, denn sonst ist es für andere User sichtbar. Wenn wir nach -p nichts angeben, werden wir von mysql danach gefragt und geben es dann an.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
xyz00@hopi$ mysql -u xyz00 -p&lt;br /&gt;
Enter password: password&lt;br /&gt;
Welcome to the MySQL monitor. Commands end with ; or \g.&lt;br /&gt;
Your MySQL connection id is 1257230 to server version: 3.23.49-log&lt;br /&gt;
Type &#039;help;&#039; or &#039;\h&#039; for help. Type &#039;\c&#039; to clear the buffer.&lt;br /&gt;
mysql&amp;gt;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nun können wir MySQL-Befehle eingeben. Zu beachten ist, dass man nach einem Kommando mit einem ; abschließen muss. Es gibt einige Ausnahmen, wo man das nicht braucht, z.B. beim Befehl QUIT, mit dem man den Monitor wieder verlässt.&lt;br /&gt;
=== Datenbank anlegen === &lt;br /&gt;
&lt;br /&gt;
geht nun auch mit [[hsadmin]] siehe [[Datenbanken]].&lt;br /&gt;
&lt;br /&gt;
Datenbanknamen in MySQL beginnen bei Hostsharing immer mit dem Namen des Pakets, gefolgt von einem Unterstrich; danach folgt der frei wählbare eigentliche Name.&lt;br /&gt;
&lt;br /&gt;
Beispiele gültiger Datenbanken für ein Paket &amp;lt;b&amp;gt;xyz00&amp;lt;/b&amp;gt;:&lt;br /&gt;
* &amp;lt;b&amp;gt;xyz00_otto&amp;lt;/b&amp;gt;&lt;br /&gt;
* &amp;lt;b&amp;gt;xyz00_anna&amp;lt;/b&amp;gt;&lt;br /&gt;
* &amp;lt;b&amp;gt;xyz00_db_fuer_hans&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Rechte vergeben ===&lt;br /&gt;
&lt;br /&gt;
Allen Benutzern, außer dem Paketadmin, müssen wir noch Rechte geben, sonst können sie gar nichts machen. Das erledigt man mit dem Befehl &amp;lt;b&amp;gt;GRANT&amp;lt;/b&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
mysql&amp;gt;GRANT SELECT, INSERT, DELETE, UPDATE ON xyz00_meinedatenbank.* TO xyz00_otto;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hinter der Datenbank verwenden wir .*, um alle Tabellen der Datenbank zu inkludieren. &lt;br /&gt;
&lt;br /&gt;
Mit &amp;lt;b&amp;gt;GRANT ALL&amp;lt;/b&amp;gt; kann man einem User auch alle Kommandorechte zuweisen.&lt;br /&gt;
&lt;br /&gt;
Alle Aufgaben können wir jetzt in Zukunft vom User &amp;lt;b&amp;gt;xyz00_otto&amp;lt;/b&amp;gt; erledigen lassen.&lt;br /&gt;
&lt;br /&gt;
== Verschiedenes ==&lt;br /&gt;
&lt;br /&gt;
* Web-Frontend: [http://www.phpmyadmin.net phpMyAdmin] ist unter https://phpmyadmin.hostsharing.net/current erreichbar.&lt;br /&gt;
* Online-Dokumentation: Die Online-Doku zu MySQL gibt es unter http://dev.mysql.com/doc/. Auf dieser Site gibt es auch mehrere Fassungen der kompletten Doku zum Downloaden.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
[[Kategorie:HSDoku]]&lt;br /&gt;
[[Kategorie:Datenbanken]]&lt;br /&gt;
[[Kategorie:Glossar]]&lt;br /&gt;
[[Kategorie:ToDo-Kerndoku]]&lt;/div&gt;</summary>
		<author><name>Srv00-wiki</name></author>
	</entry>
	<entry>
		<id>https://wiki.hostsharing.net/index.php?title=MySQL&amp;diff=3463</id>
		<title>MySQL</title>
		<link rel="alternate" type="text/html" href="https://wiki.hostsharing.net/index.php?title=MySQL&amp;diff=3463"/>
		<updated>2012-09-01T22:34:45Z</updated>

		<summary type="html">&lt;p&gt;Srv00-wiki: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Server ==&lt;br /&gt;
&lt;br /&gt;
Wir haben pro Host einen einzelnen MySQL Datenbankserver. Der Zugriff erfolgt über den Hostnamen &amp;lt;b&amp;gt;localhost&amp;lt;/b&amp;gt; und den Port 3306 (default). Außerdem kann der Server über den Socket &amp;lt;b&amp;gt;/var/run/mysqld/mysqld.sock&amp;lt;/b&amp;gt; erreicht werden.&lt;br /&gt;
&lt;br /&gt;
Die Anzahl der in Hostsharing Dynamic-Web-Paketen verwendbaren MySQL-Datenbanken ist ist durch die&lt;br /&gt;
Anzahl der jeweils gebuchten Multioptionen begrenzt. Der damit verbrauchte Speicherplatz geht in die Quota des Paketes mit ein, sodass hierüber eine zusätzliche Begrenzung vorliegt. Alle Datenbanken eines Paketes müssen mit dem Paketnamen und einem Underscore beginnen, also z.B. &amp;lt;b&amp;gt;xyz00_datenbank&amp;lt;/b&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== MySQL-User ==&lt;br /&gt;
&lt;br /&gt;
{{Textkasten|gruen||Die Namen der Datenbank-Benutzer müssen in keiner Beziehung zu den Unix-Benutzernamen der Hostsharing-Systeme stehen, also den Namen, die für den [[shell]]-Zugang verwendet werden.}}&lt;br /&gt;
&lt;br /&gt;
Es gilt jedoch die Regel, dass die Namen aller Datenbank-Benutzer eines Pakets mit dem Paketkürzel beginnen. Eine sinnvolle Konvention ist es, sofern man als Paketadministrator einen zentralen Datenbank-Administrator für alle Datenbanken einrichten möchte, diesen nur nach dem Paket zu benennen (z. B. &#039;&#039;&#039;xyz00&#039;&#039;&#039;). So kann der Paket-Admin seinen Benutzernamen für den Datenbank-Zugang nicht vergessen.&lt;br /&gt;
&lt;br /&gt;
Weitere Datenbank-Benutzernamen können aus dem Paket-Admin-Namen, einem Unterstrich, und einer freien Zeichenfolge gebildet werden. Also kann der Paketadmin &#039;&#039;&#039;xyz00&#039;&#039;&#039; weitere User der Form &#039;&#039;&#039;xyz00_abc&#039;&#039;&#039; einrichten. Beachte die Differenz zu Domain-Admin-Namen, die nicht mit Unterstrich, sondern mit Bindestrich gebildet werden (&#039;&#039;&#039;xyz00&#039;&#039;&#039; -&amp;gt; &#039;&#039;&#039;xyz00-abc&#039;&#039;&#039;).&lt;br /&gt;
&lt;br /&gt;
=== Paketadmin ===&lt;br /&gt;
&lt;br /&gt;
Der Paketadmin hat mit seinem Account sehr weitgehende administrative Rechte in MySQL und sollte dementsprechend mit Umsicht genutzt werden. Er kann mit seinem Account im Administrationswerkzeug [[hsadmin]] unter anderem:&lt;br /&gt;
&lt;br /&gt;
* Datenbanken anlegen und löschen&lt;br /&gt;
* Datenbank-Benutzer anlegen und löschen&lt;br /&gt;
&lt;br /&gt;
Bevor man in seinem Paket eine Datenbank anlegen kann, muss man zunächst einen Datenbank-Benutzer einrichten, den man zum Datenbank-Administrator machen kann. Das ist zwingend notwendig. Es kann ein Datenbank-User mit dem Kürzel des Paketadmins (&amp;lt;b&amp;gt;xyz00&amp;lt;/b&amp;gt;) sein. Es können allerdings auch beliebige Namen, die mit dem Paketkürzel &amp;lt;b&amp;gt;xyz00_...&amp;lt;/b&amp;gt; beginnen angelegt werden. Ein Datenbank-Adminstrator wird eingerichtet, wie unter &amp;quot;[[Datenbanken#Verwaltung_von_Datenbanken |Verwaltung von Datenbanken]]&amp;quot; beschrieben ist.&lt;br /&gt;
&lt;br /&gt;
=== Weitere Benutzer anlegen ===&lt;br /&gt;
&lt;br /&gt;
Du kannst Dir weitere Benutzer für MySQL anlegen. Wir empfehlen Dir das ausdrücklich, weil es eine gute Idee ist, den mächtigen Zugang des Paketadmins nur für administrative Zwecke zu benutzen. Schließlich will man nicht immer den mächtigen Account des Paketadmins in seinen Skripten verwenden. Für einzelne Aufgaben kannst Du verschiedene Benutzer anlegen, denen Du natürlich auch verschiedene Rechte geben kannst, z.B. nur Rechte an bestimmten Datenbanken oder zur Ausführung bestimmter Kommandos.&lt;br /&gt;
&lt;br /&gt;
Wir legen noch einen User an:&lt;br /&gt;
&lt;br /&gt;
siehe [[Datenbanken]]&lt;br /&gt;
&lt;br /&gt;
=== Der MySQL-Monitor ===&lt;br /&gt;
&lt;br /&gt;
Mit den neu angelegten User-Accounts können wir nun in den MySQL-Monitor wechseln, in dem die MySQL-Befehle eingegeben und verarbeitet werden. Der Monitor wird mit dem Befehl &amp;lt;b&amp;gt;mysql&amp;lt;/b&amp;gt; aufgerufen. Es ist hier übrigens egal, ob wir als Paketadmin oder als Domainadmin eingeloggt sind, denn MySQL-User und UNIX-Accounts haben keinen Zusammenhang. Wir können mit jedem UNIX-Account, also auch als normaler Domainadmin auf jeden Datenbank-Account zugreifen - auch auf den Paketadmin-Account.&lt;br /&gt;
&lt;br /&gt;
Da wir uns mit Benutzernamen und Passwort anmelden müssen, verwenden wir die Optionen -u (und danach den Benutzernamen) und -p. Das Passwort geben wir nicht in dieser Kommandozeile an, denn sonst ist es für andere User sichtbar. Wenn wir nach -p nichts angeben, werden wir von mysql danach gefragt und geben es dann an.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
xyz00@hopi$ mysql -u xyz00 -p&lt;br /&gt;
Enter password: password&lt;br /&gt;
Welcome to the MySQL monitor. Commands end with ; or \g.&lt;br /&gt;
Your MySQL connection id is 1257230 to server version: 3.23.49-log&lt;br /&gt;
Type &#039;help;&#039; or &#039;\h&#039; for help. Type &#039;\c&#039; to clear the buffer.&lt;br /&gt;
mysql&amp;gt;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nun können wir MySQL-Befehle eingeben. Zu beachten ist, dass man nach einem Kommando mit einem ; abschließen muss. Es gibt einige Ausnahmen, wo man das nicht braucht, z.B. beim Befehl QUIT, mit dem man den Monitor wieder verlässt.&lt;br /&gt;
=== Datenbank anlegen === &lt;br /&gt;
&lt;br /&gt;
geht nun auch mit [[hsadmin]] siehe [[Datenbanken]].&lt;br /&gt;
&lt;br /&gt;
Datenbanknamen in MySQL beginnen bei Hostsharing immer mit dem Namen des Pakets, gefolgt von einem Unterstrich; danach folgt der frei wählbare eigentliche Name.&lt;br /&gt;
&lt;br /&gt;
Beispiele gültiger Datenbanken für ein Paket &amp;lt;b&amp;gt;xyz00&amp;lt;/b&amp;gt;:&lt;br /&gt;
* &amp;lt;b&amp;gt;xyz00_otto&amp;lt;/b&amp;gt;&lt;br /&gt;
* &amp;lt;b&amp;gt;xyz00_anna&amp;lt;/b&amp;gt;&lt;br /&gt;
* &amp;lt;b&amp;gt;xyz00_db_fuer_hans&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Rechte vergeben ===&lt;br /&gt;
&lt;br /&gt;
Allen Benutzern, außer dem Paketadmin, müssen wir noch Rechte geben, sonst können sie gar nichts machen. Das erledigt man mit dem Befehl &amp;lt;b&amp;gt;GRANT&amp;lt;/b&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
mysql&amp;gt;GRANT SELECT, INSERT, DELETE, UPDATE ON xyz00_meinedatenbank.* TO xyz00_otto;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hinter der Datenbank verwenden wir .*, um alle Tabellen der Datenbank zu inkludieren. &lt;br /&gt;
&lt;br /&gt;
Mit &amp;lt;b&amp;gt;GRANT ALL&amp;lt;/b&amp;gt; kann man einem User auch alle Kommandorechte zuweisen.&lt;br /&gt;
&lt;br /&gt;
Alle Aufgaben können wir jetzt in Zukunft vom User &amp;lt;b&amp;gt;xyz00_otto&amp;lt;/b&amp;gt; erledigen lassen.&lt;br /&gt;
&lt;br /&gt;
== Verschiedenes ==&lt;br /&gt;
&lt;br /&gt;
* Web-Frontend: [http://www.phpmyadmin.net phpMyAdmin] ist unter https://phpmyadmin.hostsharing.net/current erreichbar.&lt;br /&gt;
* Online-Dokumentation: Die Online-Doku zu MySQL gibt es unter http://dev.mysql.com/doc/. Auf dieser Site gibt es auch mehrere Fassungen der kompletten Doku zum Downloaden.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
[[Kategorie:HSDoku]]&lt;br /&gt;
[[Kategorie:Datenbanken]]&lt;br /&gt;
[[Kategorie:Glossar]]&lt;br /&gt;
[[Kategorie:ToDo-Kerndoku]]&lt;/div&gt;</summary>
		<author><name>Srv00-wiki</name></author>
	</entry>
	<entry>
		<id>https://wiki.hostsharing.net/index.php?title=Apache_installieren&amp;diff=3462</id>
		<title>Apache installieren</title>
		<link rel="alternate" type="text/html" href="https://wiki.hostsharing.net/index.php?title=Apache_installieren&amp;diff=3462"/>
		<updated>2012-08-31T22:05:26Z</updated>

		<summary type="html">&lt;p&gt;Srv00-wiki: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
Der [http://httpd.apache.org/ Apache] ist ein Webserver zur Beantwortung von HTTP-Requests und wird üblicherweise zur Auslieferung von Webseiten genutzt. Auf HS Systemen läuft ein zentraler Apache, der standardmäßig die Anfragen für die in den Paketen aufgeschalteten Domains verarbeitet und die Webseiten ausliefert.&lt;br /&gt;
&lt;br /&gt;
Unter Umständen kann es sinnvoll sein, einen eigenen Apache zu betreiben, vor allem dann, wenn man Apache Module betreiben möchte, die vom zentralen Apache (z.B. aus Sicherheitsgründen im Shared Hosting) nicht zur Verfügung gestellt werden.&lt;br /&gt;
&lt;br /&gt;
Es gibt zwei Möglichkeiten, einen eigenen Apache bei HS zu betreiben:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Mit einer Portumleitung&#039;&#039;&#039;(Port Forwarding). Hierbei werden Requests auf die eigene IP:Port80 umgeleitet auf (z.B) Port 8080. Diese Option ist hier beschrieben.&lt;br /&gt;
* &#039;&#039;&#039;Hinter mod_proxy des zentralen Apaches&#039;&#039;&#039;. Dieser Betriebsmodus hat den Vorteil, pro Domain/Subdomain wählen zu können, ob man die Requests an den eigenen Apache delegiert. Es besteht somit die Möglichkeit weiterhin Domain-Admins zu verwenden und den eigenen Apache selektiv nur für den Service einzusetzen, für den man ihn braucht, während alle anderen Services durch den zentralen und betreuten Apache abgedeckt werden.&lt;br /&gt;
&lt;br /&gt;
== Voraussetzungen ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;eigene IP&#039;&#039;&#039;: Eine eigene IP muss von den [[Hostmaster | Hostmastern]] eingerichet werden. Dies erfordert die kostenpflichtige Buchung der Option &amp;quot;eigener Apache&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Konfiguration ~/etc/apache2.conf==&lt;br /&gt;
&lt;br /&gt;
Die Konfiguration eines Apache kann hier nicht beschrieben werden, dafür gibt es ziemlich dicke Bücher. Nur ein paar Hinweise:&lt;br /&gt;
&lt;br /&gt;
*Die Konfiguration des zentralen Apache kann in großen Teilen übernommen werden, man kann also gut /etc/apache2 in das eigene Benutzerverzeichnis ~/etc/apache2 kopieren, Pfade anpassen und einmal damit starten. Aber sei gewarnt: Den Apache (auch mit Vorwissen) zum Laufen zu bringen, braucht Wissen, Zeit und Geduld. Wer nicht ein Grundwissen in Linux-Administration mitbringt, sollte davon Abstand nehmen.&lt;br /&gt;
&lt;br /&gt;
Hilfreich sind die Meldungen, die der Apache selbst in den Log-Dateien ausgibt und seine Möglichkeiten zu Überprüfung der Konfiguration. Hier der Configtest:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
xyz00@h00:~/etc/apache2$ /usr/sbin/apache2 -f /home/pacs/xyz00/etc/apache2/apache2.conf -t&lt;br /&gt;
Syntax OK&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Den sollte man unbedingt ausführen, bevor man eine geänderte Konfiguration durch Neustart des Apachen übernimmt.&lt;br /&gt;
&lt;br /&gt;
=== Grundkonfiguration mit Portumleitung ===&lt;br /&gt;
&lt;br /&gt;
*Voraussetzung: Portumleitungen &#039;&#039;&#039;Port 80 -&amp;gt; 8080&#039;&#039;&#039; und bei Bedarf &#039;&#039;&#039;443 -&amp;gt; 8443&#039;&#039;&#039; von einem [[Hostmaster]] eingerichtet.&lt;br /&gt;
&lt;br /&gt;
Hier wird die eigene IP &#039;&#039;&#039;111.222.333.444&#039;&#039;&#039;, und das HS-Paket &#039;&#039;&#039;xyz00&#039;&#039;&#039; angenommen, sowie, dass das Verzeichnis &#039;&#039;&#039;/home/pacs/xyz00/etc/apache2/run/&#039;&#039;&#039; existiert. In der Konfigurationsdatei apache2.conf werden folgende Direktiven angepasst:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 ServerRoot /home/pacs/xyz00/etc/apache2&lt;br /&gt;
 ServerName xyz00.hostsharing.net&lt;br /&gt;
&lt;br /&gt;
 ServerAdmin xyz00@xyz00.hostsharing.net&lt;br /&gt;
&lt;br /&gt;
 User xyz00&lt;br /&gt;
 Group xyz00&lt;br /&gt;
&lt;br /&gt;
 Listen 111.222.333.444:8080&lt;br /&gt;
 Listen 111.222.333.444:8443&lt;br /&gt;
&lt;br /&gt;
 NameVirtualHost 111.222.333.444:8443&lt;br /&gt;
 NameVirtualHost 111.222.333.444:8080&lt;br /&gt;
&lt;br /&gt;
 LockFile /home/pacs/xyz00/etc/apache2/run/apache2.lock&lt;br /&gt;
 PidFile /home/pacs/xyz00/etc/apache2/run/apache2.pid&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Logging ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 ErrorLog /home/pacs/xyz00/var/web.err&lt;br /&gt;
 CustomLog /home/pacs/xyz00/var/web.log combined&lt;br /&gt;
&lt;br /&gt;
Diese Benennung der Logdateien zusammen mit dem aus der Konfiguration des zentralen Apache übernommenen Format der Logs hat den Vorteil, dass die Logdateien jede Nacht vom zentralen HS-Skript rotiert werden.&lt;br /&gt;
&lt;br /&gt;
=== Einbinden weiterer Konfigurationsdateien ===&lt;br /&gt;
&lt;br /&gt;
Der Apache erlaubt das Einbinden weiterer Konfigurationsdateien mit der &amp;quot;Include&amp;quot;-Direktive. Damit und mittels per Symlink in Verzeichnisse gelinkter Konfigurationsdateien lässt er sich sehr flexibel konfigurieren. Als Beispiel sei die einsehbare Konfiguration des zentralen Apache unter /etc/apache2 genannt. Mit folgenden Beispiel-Direktiven lassen sich alle Dateien von Konfigurationsverzeichnissen einbinden:&lt;br /&gt;
&lt;br /&gt;
 Include /home/pacs/xyz00/etc/apache2/conf.d/&lt;br /&gt;
 Include /home/pacs/xyz00/etc/apache2/mods-enabled/&lt;br /&gt;
 Include /home/pacs/xyz00/etc/apache2/sites-enabled/&lt;br /&gt;
&lt;br /&gt;
== Start- und Stopskripte ==&lt;br /&gt;
&lt;br /&gt;
Um den eigenen Apache zu starten und zu stoppen, müssen eigene Skripte geschrieben werden. In diesem Beispiel wird angenommen, dass sich die Konfiguration in ~/etc/apache2 (/home/pacs/xyz00/etc/apache2) befindet, dort sind ebenfalls die Skripte für Start und Stop.&lt;br /&gt;
&lt;br /&gt;
=== Startskript ~/etc/apache2/start-apache.sh ===&lt;br /&gt;
&lt;br /&gt;
  #! /bin/bash&lt;br /&gt;
  /usr/sbin/apache2 -f /home/pacs/xyz00/etc/apache2/apache2.conf&lt;br /&gt;
&lt;br /&gt;
=== Stopskript ~/etc/apache2/start-apache.sh ===&lt;br /&gt;
&lt;br /&gt;
  #! /bin/bash&lt;br /&gt;
  pid=$(cat /home/pacs/xyz00/etc/apache2/run/apache2.pid)&lt;br /&gt;
  kill -TERM $pid&lt;br /&gt;
  &lt;br /&gt;
Wenn der eigene Apache mit mod_fcgid läuft, ist es sinnvoll (wenn auch nicht besonders schön oder elegant), bei einem Stop des Apache die unter der eigenen Benutzerkennung laufenden FCGI-Prozesse abzuwürgen. Hier wird angenommen, dass sich die Sockets innerhalb der Verzeichnisstruktur  &#039;&#039;&#039;~/etc/apache2/run/&#039;&#039;&#039; befinden. Das zusätzliche Abwürgen des Apache (trotz vorherigem Beenden weiter oben) und die Löschbefehle für die diversen Socketdateien stammt aus der Konfiguration des eigenen Apachen des Autors und funktioniert so auch.&lt;br /&gt;
&lt;br /&gt;
  sleep 1&lt;br /&gt;
  killall -u xyz00 -KILL apache2&lt;br /&gt;
  killall -u xyz00 -KILL php&lt;br /&gt;
  rm ~/etc/apache2/run/fcgisock/*&lt;br /&gt;
  rm ~/etc/apache2/run/apache2.pid&lt;br /&gt;
  rm ~/etc/apache2/run/cgisock*&lt;br /&gt;
&lt;br /&gt;
== Überwachung und Start bei Systemstart ==&lt;br /&gt;
&lt;br /&gt;
Die Überwachung des Apachen genauso wie der Start beim Hochfahren des Systems wird mit [[monit_installieren | Monit]] gewährleistet. Dies muss natürlich entsprechend konfiguriert werden.&lt;br /&gt;
&lt;br /&gt;
== Hinweise und Erfahrungswerte ==&lt;br /&gt;
&lt;br /&gt;
== mod_fcgid ==&lt;br /&gt;
&lt;br /&gt;
Die Konfiguration des zentralen Apachen (in /etc/apache2/mods-enabled/fcgid.conf) kann nicht ohne Änderung übernommen werden. Dass der darin befindliche Pfad zum Verzeichnis für die Sockets &#039;&#039;&#039;SocketPath /var/run/apache2/fcgisock&#039;&#039;&#039; geändert werden muss, sollte klar sein. Aber der Apache möchte mit mod_fcgid noch eine Datei &amp;quot;shm&amp;quot; für Shared Memory anlegen. Und wenn dies nicht explizit konfiguriert wurde, standardmäßig in&lt;br /&gt;
/var/lib/apache2/fcgid/shm. Das ist für den eigenen Apache natürlich nicht möglich, er hat da keine Schreibrechte. Er läuft dann zwar ohne Fehler los, liefert aber keine Seiten aus.&lt;br /&gt;
&lt;br /&gt;
Eine funktionierende Konfiguration für mod_fcgid sieht daher so aus:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
SocketPath /home/pacs/xyz00/etc/apache2/run/fcgisock&lt;br /&gt;
SharememPath /home/pacs/xyz00/etc/apache2/run/shm&lt;br /&gt;
&lt;br /&gt;
IPCConnectTimeout 20&lt;br /&gt;
IPCCommTimeout 600&lt;br /&gt;
IdleTimeout 300&lt;br /&gt;
IdleScanInterval 120&lt;br /&gt;
BusyTimeout 300&lt;br /&gt;
BusyScanInterval 120&lt;br /&gt;
ErrorScanInterval 10&lt;br /&gt;
ZombieScanInterval 9&lt;br /&gt;
ProcessLifeTime 3600&lt;br /&gt;
SpawnScoreUpLimit 100&lt;br /&gt;
SpawnScore 1.&lt;br /&gt;
TerminationScore 2.&lt;br /&gt;
MaxProcessCount 250&lt;br /&gt;
DefaultMaxClassProcessCount 10&lt;br /&gt;
DefaultMinClassProcessCount 3&lt;br /&gt;
PHP_Fix_Pathinfo_Enable 1&lt;br /&gt;
OutputBufferSize 256&lt;br /&gt;
&lt;br /&gt;
&amp;lt;IfModule mod_fcgid.c&amp;gt;&lt;br /&gt;
 AddHandler fcgid-script .fcgi&lt;br /&gt;
 IPCConnectTimeout 20&lt;br /&gt;
&amp;lt;/IfModule&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Weblinks ==&lt;br /&gt;
&lt;br /&gt;
[http://httpd.apache.org/docs/2.2/ Dokumentation des Apache2.2]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:HSDoku]]&lt;br /&gt;
[[Kategorie:Installationsanleitungen]]&lt;br /&gt;
[[Kategorie:Software]]&lt;br /&gt;
[[Kategorie:Eigene Daemons]]&lt;/div&gt;</summary>
		<author><name>Srv00-wiki</name></author>
	</entry>
	<entry>
		<id>https://wiki.hostsharing.net/index.php?title=RubyOnRails&amp;diff=3461</id>
		<title>RubyOnRails</title>
		<link rel="alternate" type="text/html" href="https://wiki.hostsharing.net/index.php?title=RubyOnRails&amp;diff=3461"/>
		<updated>2012-08-31T10:22:59Z</updated>

		<summary type="html">&lt;p&gt;Srv00-wiki: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Bestes Ruby on Rails Hosting bei Hostsharing ==&lt;br /&gt;
&lt;br /&gt;
Rubyanwendungen laufen (wie alle Anwendungen bei Hostsharing) als Prozesse des jeweiligen Benutzersaccounts. Probleme mit Dateirechten und Sicherheitsrisiken, wie sie sonst bei der Ausführung durch den Webserver auftreten, sind so von vorne herein ausgeschlossen.&lt;br /&gt;
&lt;br /&gt;
Standardmäßig erfolgt der Aufruf von Ruby Anwendungen durch den Apache Webserver über die FastCGI Schnittstelle. Dabei wird die Ruby Application Server Instanz des Users nach einem Aufruf noch für einige Zeit bereit gehalten, um sofort zur Bearbeitung von weiteren noch nicht gecacheten, oder gar nicht cachebaren, Anfragen zur Verfügung zu stehen.&lt;br /&gt;
&lt;br /&gt;
Für den Betrieb von noch anspruchsvolleren Anwendungen haben wir auch Tools wie haproxy, varnish, nginx etc. installiert. Wir können auch mod_passenger (mod_wsgi haben wir schon) oder mongrel oder Green Unicorn (gunicorn) installieren. Anwender, die damit auf unserer leistungsfähigen Infrastruktur (managed Plattform) z.B. einen Webserver Cluster mit load-balancing realisieren möchten, brauchen bei uns dafür nur eigene Daemons buchen, können dies aber auch (für größere Projekte) mit einer beliebigen Anzahl ganzer Server realisieren.&lt;br /&gt;
&lt;br /&gt;
== Einrichtung ohne zusätzliche Daemons (ein Application Server) ==&lt;br /&gt;
&lt;br /&gt;
=== Vorbereitungen ===&lt;br /&gt;
&lt;br /&gt;
Einige Einstellungen für den Paketuser.&lt;br /&gt;
&lt;br /&gt;
~/.gemrc&lt;br /&gt;
 install: --no-rdoc --no-ri&lt;br /&gt;
 update:  --no-rdoc --no-ri&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
~/.bashrc&lt;br /&gt;
 alias gem=&amp;quot;nice -n19 gem&amp;quot;&lt;br /&gt;
&lt;br /&gt;
~/.profile&lt;br /&gt;
 source &amp;quot;$HOME/.bashrc&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== Ruby ===&lt;br /&gt;
&lt;br /&gt;
==== Vorinstalliert ====&lt;br /&gt;
&lt;br /&gt;
Soll nur die zentral installierte Ruby Version verwendet werden, ergänzt man man die ~/.profile:&lt;br /&gt;
 # enable user&#039;s own ruby installations, keeping all stuff below $HOME/.gem&lt;br /&gt;
 export PATH=&amp;quot;$HOME/bin:$HOME/.gem/ruby/1.8/bin:$PATH&amp;quot;&lt;br /&gt;
 export GEM_PATH=&amp;quot;$HOME/.gem/ruby/1.8:$( gem env gempath )&amp;quot;&lt;br /&gt;
 export GEM_HOME=&amp;quot;$HOME/.gem/ruby/1.8&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 # Disabled for now, because using system libs caused undefined method error.&lt;br /&gt;
 #export RUBYLIB=&amp;quot;$HOME/.gem/ruby/1.8/lib:/usr/local/lib/site_ruby/1.8:/usr/lib/ruby/1.8&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 # avoid to forget that extra parameter: ruby -rubygems prog_that_uses_gems&lt;br /&gt;
 export RUBYOPT=rubygems&lt;br /&gt;
 &lt;br /&gt;
 export RAILS_ENV=production&lt;br /&gt;
&lt;br /&gt;
==== Eigene Installation ====&lt;br /&gt;
&lt;br /&gt;
Um eine andere als die vorinstallierte Ruby Version zu verwenden, installiert man zunächst den Ruby Versions Manager (rvm),&lt;br /&gt;
 curl -L https://get.rvm.io | bash -s stable&lt;br /&gt;
 source ~/.rvm/scripts/rvm&lt;br /&gt;
 rvm notes&lt;br /&gt;
 rvm requirements&lt;br /&gt;
 rvm pkg install openssl&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
und lässt dann die gewünschte Ruby Version installieren.&lt;br /&gt;
 rvm install x.y.z&lt;br /&gt;
&lt;br /&gt;
RVM passt die Umgebungsvariablen automatisch an die ausgewählt Version an. Die Version wählt man global per&lt;br /&gt;
 rvm use x.y.z --default&lt;br /&gt;
oder nur für ein spezielles Verzeichnis:&lt;br /&gt;
 cd ~/verzeichnis/mit/ruby-x.y.z-Anwendung&lt;br /&gt;
 rvm use x.y.z-p??? --rvmrc&lt;br /&gt;
&lt;br /&gt;
Zur Verwaltung von gems installiert man noch rubygems.&lt;br /&gt;
 rvm rubygems current&lt;br /&gt;
&lt;br /&gt;
=== Rails ===&lt;br /&gt;
&lt;br /&gt;
Falls man die Ruby-Umgebung gerade erst eingerichtet hat, ohne sich zwischenzeitlich abzumelden, muß zunächst die Umgebung manuell laden.&lt;br /&gt;
 source ~/.profile&lt;br /&gt;
&lt;br /&gt;
Nun kann Rails per &amp;quot;gem install rails&amp;quot; installiert werden (inklusive Abhängigkeiten).&lt;br /&gt;
Um spezielle versionen zu installieren kann man den gem Befehl mit &amp;quot;-v=x.y.z&amp;quot; ergänzen.&lt;br /&gt;
&lt;br /&gt;
Zum Testen hier ein Beispiel das gleich noch eine fertige CMS Anwendung installiert (http://zenadmin.org) und mit einer einfachen sqlite Datenbankdatei einrichtet:&lt;br /&gt;
 gem install rails -v=2.3.11&lt;br /&gt;
 gem install i18n sexp_processor rmagick sqlite3 zena&lt;br /&gt;
 zena new ~/rails      # Zena Rails-Anwendung anlegen.&lt;br /&gt;
 cd ~/rails&lt;br /&gt;
 rake db:create        # Datenbank anlegen.&lt;br /&gt;
 zena migrate          # Datenbank Tabellen einrichten.&lt;br /&gt;
 zena mksite LANG=en RAILS_ENV=production PASSWORD=geheim HOST=rails.example.org # Webseite anlegen.&lt;br /&gt;
&lt;br /&gt;
=== Rails-Anwendung ===&lt;br /&gt;
&lt;br /&gt;
Seine eigene Rails-Anwendung kopiert man z.B. nach ~/rails, oder erstellt dort eine Neue (rails ~/rails, ...).&lt;br /&gt;
&lt;br /&gt;
=== Datenbank ===&lt;br /&gt;
&lt;br /&gt;
Mit &#039;&#039;hsadmin&#039;&#039; beispielsweise einen Postgres-User (z.B. &#039;xyz00_rails&#039;, Passwort sei &#039;geheim&#039;) sowie eine Datenbank anlegen (z.B. &#039;xyz00_rails&#039;.&lt;br /&gt;
&lt;br /&gt;
Die Datenbank in der Anwendung konfigurieren,&lt;br /&gt;
&lt;br /&gt;
 cd ~/rails/config/&lt;br /&gt;
 nano database.yml&lt;br /&gt;
&lt;br /&gt;
mit folgendem Inhalt:&lt;br /&gt;
&lt;br /&gt;
 production:&lt;br /&gt;
    adapter: postgresql&lt;br /&gt;
    database: xyz00_rails&lt;br /&gt;
    host: localhost&lt;br /&gt;
    username: xyz00_rails&lt;br /&gt;
    password: geheim&lt;br /&gt;
&lt;br /&gt;
=== E-Mail, Dateiablage ===&lt;br /&gt;
&lt;br /&gt;
Beispielhafte Konfiguration:&lt;br /&gt;
&lt;br /&gt;
 default:&lt;br /&gt;
    email_delivery:&lt;br /&gt;
      delivery_method: :smtp&lt;br /&gt;
      smtp_settings:&lt;br /&gt;
        address: localhost&lt;br /&gt;
        port: 25&lt;br /&gt;
        domain: example.org&lt;br /&gt;
    attachments_storage_path: /home/pacs/xyz00/users/rails/attach&lt;br /&gt;
&lt;br /&gt;
=== Datenbankschema ===&lt;br /&gt;
&lt;br /&gt;
Initialisieren und migrieren der Datenbank (je nach Rails-Anwendung).&lt;br /&gt;
&lt;br /&gt;
 cd ~/rails&lt;br /&gt;
 ...&lt;br /&gt;
 rake ...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Konfiguration von FastCGI ===&lt;br /&gt;
&lt;br /&gt;
~/doms/rails.example.org/htdocs/.htaccess&lt;br /&gt;
&lt;br /&gt;
 RewriteEngine On&lt;br /&gt;
 RewriteRule ^$ index.html [QSA]&lt;br /&gt;
 RewriteRule ^([^.]+)$ $1.html [QSA]&lt;br /&gt;
 RewriteCond %{REQUEST_FILENAME} !-f [OR]&lt;br /&gt;
 RewriteCond %{REQUEST_FILENAME} dispatch.fcgi$&lt;br /&gt;
 RewriteRule ^(.*)$ /fastcgi-bin/dispatch.fcgi [QSA,L]&lt;br /&gt;
&lt;br /&gt;
Ältere Versionen von Rails, die noch nicht auf der &amp;quot;rack&amp;quot; Middleware aufbauen (wie obiges zena Beispiel), laufen mit folgender ~/doms/www.example.org/fastcgi/dispatch.fcgi&lt;br /&gt;
&lt;br /&gt;
 #!/usr/bin/env ruby&lt;br /&gt;
 require &amp;quot;/home/pacs/xyz00/users/meinuser/rails/config/environment&amp;quot; &lt;br /&gt;
 require &#039;fcgi_handler&#039;&lt;br /&gt;
 RailsFCGIHandler.process!&lt;br /&gt;
&lt;br /&gt;
Für aktuelle Versionen von Rails, die auf &amp;quot;rack&amp;quot; aufbauen, siehe https://github.com/dre3k/rails3_fcgi, ~/doms/www.example.org/fastcgi/dispatch.fcgi&lt;br /&gt;
  #!/usr/bin/env ruby&lt;br /&gt;
 &lt;br /&gt;
 require_relative &#039;../config/environment&#039;&lt;br /&gt;
 &lt;br /&gt;
 class Rack::PathInfoRewriter&lt;br /&gt;
   def initialize(app)&lt;br /&gt;
     @app = app&lt;br /&gt;
   end&lt;br /&gt;
 &lt;br /&gt;
   def call(env)&lt;br /&gt;
     env.delete(&#039;SCRIPT_NAME&#039;)&lt;br /&gt;
     parts = env[&#039;REQUEST_URI&#039;].split(&#039;?&#039;)&lt;br /&gt;
     env[&#039;PATH_INFO&#039;] = parts[0]&lt;br /&gt;
     env[&#039;QUERY_STRING&#039;] = parts[1].to_s&lt;br /&gt;
     @app.call(env)&lt;br /&gt;
   end&lt;br /&gt;
 end&lt;br /&gt;
 &lt;br /&gt;
 Rack::Handler::FastCGI.run  Rack::PathInfoRewriter.new(HIER_APPLIKATIONSNAME_AUS_config/application.rb_EINTRAGEN::Application)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
FastCGI-Skript ausführbar machen:&lt;br /&gt;
&lt;br /&gt;
 chmod 755 ~/doms/rails.example.org/fastcgi/dispatch.fcgi&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Am Anfang von ~/rails/config/environment.rb einfügen:&lt;br /&gt;
&lt;br /&gt;
 ENV[&#039;RAILS_ENV&#039;] ||= &#039;production&#039;&lt;br /&gt;
 ENV[&#039;GEM_PATH&#039;] ||= &#039;/home/pacs/xyz00/users/meinuser/.gem/ruby/1.8:/var/lib/gems/1.8&#039;&lt;br /&gt;
Evtl. könnten diese Einstellungen auch ohne eine Modifikation der Anwendung erfolgen, indem die Umgebungsvariablen in der .htaccess gesetzt werden (z.B. &amp;quot;SetEnv RAILS_ENV production&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
Die Applikation ins Webroot einbinden:&lt;br /&gt;
&lt;br /&gt;
 # ggf. vorhandene Dateien sichern (oder nach ~/rails/public kopieren)&lt;br /&gt;
 mv ~/doms/rails.example.org/htdocs ~/doms/rails.example.org/htdocs.old&lt;br /&gt;
 # Das rails/public Verzeichnis ins Webroot verlinken.&lt;br /&gt;
 ln -s ~/rails/public ~/doms/rails.example.org/htdocs&lt;br /&gt;
&lt;br /&gt;
=== Konfiguration von SSL ===&lt;br /&gt;
&lt;br /&gt;
Die Verzeichnisse ~/doms/rails.example.org/fastcgi-ssl/ und ~/doms/rail.example.org/htdocs-ssl/ werden analog zu bzw. anstelle von fastcgi und htdocs gefüllt.&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:HSDoku]]&lt;br /&gt;
[[Kategorie:Installationsanleitungen]]&lt;br /&gt;
[[Kategorie:Software]]&lt;br /&gt;
[[Kategorie:Glossar]]&lt;/div&gt;</summary>
		<author><name>Srv00-wiki</name></author>
	</entry>
	<entry>
		<id>https://wiki.hostsharing.net/index.php?title=Domainverwaltung&amp;diff=3460</id>
		<title>Domainverwaltung</title>
		<link rel="alternate" type="text/html" href="https://wiki.hostsharing.net/index.php?title=Domainverwaltung&amp;diff=3460"/>
		<updated>2012-08-31T09:57:55Z</updated>

		<summary type="html">&lt;p&gt;Srv00-wiki: /* Domains neu zuordnen (Domain-Admin ändern, Paketzuordnung ändern) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{HSDoku-DomainLinks}}&lt;br /&gt;
&lt;br /&gt;
= Lokale Subdomains =&lt;br /&gt;
&lt;br /&gt;
Subdomains sind Domains unterhalb der Hauptdomain. Also das www in www.example.com, test in test.example.com usw. Bei Hostsharing können beliebig viele verschiedene Subdomains angelegt werden.&lt;br /&gt;
&lt;br /&gt;
== Lokale Subdomains via Verzeichnis ==&lt;br /&gt;
&lt;br /&gt;
Es wird unter [[~/]]doms/example.org/subs/ ein Verzeichnis mit dem Namen &amp;quot;muster&amp;quot; erstellt:&lt;br /&gt;
&lt;br /&gt;
Ergibt http://muster.example.org&lt;br /&gt;
&lt;br /&gt;
== Lokale Subdomains durch Aufschalten / Delegieren ==&lt;br /&gt;
&lt;br /&gt;
Dabei kann die Subdomain muster.example.org im gleichen oder einem anderen Paket aufgeschaltet werden.&lt;br /&gt;
&lt;br /&gt;
* Wenn die Aktion innerhalb eines Pakets durchgeführt werden soll, erfolgt die Einrichtung durch den Paket-Admin mit Hilfe von [[HSAdmin]].&lt;br /&gt;
&lt;br /&gt;
* Wenn die Aktion zwischen Paketen eines Mitglieds durchgeführt werden soll, erfolgt die Einrichtung durch den Mitgliedsaccount (hsh00-xyz) mit Hilfe von [[HSAdmin]].&lt;br /&gt;
&lt;br /&gt;
* Soll eine Subdomain an ein anderes Mitglied delegiert werden, so müssen sich beide Mitglieder mit diesem Wunsch an den Hostsharing-Service wenden. Der Hostsharing-Service schaltet die Subdomain, wenn ihm übereinstimmende Willenserklärungen der beteiligten Mitglieder vorliegen.&lt;br /&gt;
&lt;br /&gt;
= Domains neu zuordnen (Domain-Admin ändern, Paketzuordnung ändern) =&lt;br /&gt;
&lt;br /&gt;
Eine Domain-Verschiebung (neu zuordnen) wird ebenfalls über die DNS Delegation gemacht und erfolgt grundsätzlich über HSAdmin durch Löschen und Neuanlegen der Domain. Da die eigentliche Registrierung über das [http://www.domain-bestellsystem.de Domainbestellsystem] erfolgt, bleibt der Eigentümer der betreffenden Domain durch die Löschung über HSAdmin unverändert.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Achtung:&#039;&#039;&#039; Das ~/doms/example.org Verzeichnis, also alle Dateien im Webspace werden bei dieser Aktion komplett gelöscht. Sie müssen vorher manuell (am Besten in einem tar-archiv) gesichert werden! Auch die Zuordnung von Mailadressen der betreffenden Domain geht verloren und muß ggf. neu eingetragen werden.&lt;br /&gt;
&lt;br /&gt;
Der Hostsharing-Service (service@hostsharing.net) kann auch Verschiebungen mit minimalen Ausfallzeiten durchführen, bei aufwandsabhängiger Abrechnung gemäß dem Hostmaster-Stundensatz.&lt;br /&gt;
&lt;br /&gt;
= Status der Domaineinrichtung =&lt;br /&gt;
Der Domaineinrichtungs-Status kann  mit dem hsadmin-[[WebFrontend]] eingesehen werden oder mit [[hsadmin]] auf der Kommandozeile der [[Shell]]:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
hsadmin -c domain.search&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Adresse von Owner / Admin-C ändern =&lt;br /&gt;
Die Änderung der Adressdaten erfolgt, indem die Adressdaten des zugehörigen [[Handles]] im [https://www.domain-bestellsystem.de Domain-Bestellsystem] aktualisiert werden.&lt;br /&gt;
&lt;br /&gt;
= Eigene Verwaltung der Zonefiles =&lt;br /&gt;
Siehe [[Verwalten der Zonendaten]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:HSDoku]]&lt;br /&gt;
[[Kategorie:Domains]]&lt;br /&gt;
[[Kategorie:Hsadmin]]&lt;/div&gt;</summary>
		<author><name>Srv00-wiki</name></author>
	</entry>
	<entry>
		<id>https://wiki.hostsharing.net/index.php?title=RubyOnRails&amp;diff=3459</id>
		<title>RubyOnRails</title>
		<link rel="alternate" type="text/html" href="https://wiki.hostsharing.net/index.php?title=RubyOnRails&amp;diff=3459"/>
		<updated>2012-08-30T15:30:05Z</updated>

		<summary type="html">&lt;p&gt;Srv00-wiki: /* Rails */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Bestes Ruby on Rails Hosting bei Hostsharing ==&lt;br /&gt;
&lt;br /&gt;
Rubyanwendungen laufen (wie alle Anwendungen bei Hostsharing) als Prozesse des jeweiligen Benutzersaccounts. Probleme mit Dateirechten und Sicherheitsrisiken, wie sie sonst bei der Ausführung durch den Webserver auftreten, sind so von vorne herein ausgeschlossen.&lt;br /&gt;
&lt;br /&gt;
Standardmäßig erfolgt der Aufruf von Ruby Anwendungen durch den Apache Webserver über die FastCGI Schnittstelle. Dabei wird die Ruby Application Server Instanz des Users nach einem Aufruf noch für einige Zeit bereit gehalten, um sofort zur Bearbeitung von weiteren noch nicht gecacheten, oder gar nicht cachebaren, Anfragen zur Verfügung zu stehen.&lt;br /&gt;
&lt;br /&gt;
Für den Betrieb von noch anspruchsvolleren Anwendungen haben wir auch Tools wie haproxy, varnish, nginx etc. installiert. Wir können auch mod_passenger (mod_wsgi haben wir schon) oder mongrel oder Green Unicorn (gunicorn) installieren. Anwender, die damit auf unserer leistungsfähigen Infrastruktur (managed Plattform) z.B. einen Webserver Cluster mit load-balancing realisieren möchten, brauchen bei uns dafür nur eigene Daemons buchen, können dies aber auch (für größere Projekte) mit einer beliebigen Anzahl ganzer Server realisieren.&lt;br /&gt;
&lt;br /&gt;
== Einrichtung ohne zusätzliche Daemons (ein Application Server) ==&lt;br /&gt;
&lt;br /&gt;
=== Vorbereitungen ===&lt;br /&gt;
&lt;br /&gt;
Einige Einstellungen für den Paketuser.&lt;br /&gt;
&lt;br /&gt;
~/.gemrc&lt;br /&gt;
 install: --no-rdoc --no-ri&lt;br /&gt;
 update:  --no-rdoc --no-ri&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
~/.bashrc&lt;br /&gt;
 alias gem=&amp;quot;nice -n19 gem&amp;quot;&lt;br /&gt;
&lt;br /&gt;
~/.profile&lt;br /&gt;
 source &amp;quot;$HOME/.bashrc&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== Ruby ===&lt;br /&gt;
&lt;br /&gt;
==== Vorinstalliert ====&lt;br /&gt;
&lt;br /&gt;
Soll nur die zentral installierte Ruby Version verwendet werden, ergänzt man man die ~/.profile:&lt;br /&gt;
 # enable user&#039;s own ruby installations, keeping all stuff below $HOME/.gem&lt;br /&gt;
 export PATH=&amp;quot;$HOME/bin:$HOME/.gem/ruby/1.8/bin:$PATH&amp;quot;&lt;br /&gt;
 export GEM_PATH=&amp;quot;$HOME/.gem/ruby/1.8:$( gem env gempath )&amp;quot;&lt;br /&gt;
 export GEM_HOME=&amp;quot;$HOME/.gem/ruby/1.8&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 # Disabled for now, because using system libs caused undefined method error.&lt;br /&gt;
 #export RUBYLIB=&amp;quot;$HOME/.gem/ruby/1.8/lib:/usr/local/lib/site_ruby/1.8:/usr/lib/ruby/1.8&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 # avoid to forget that extra parameter: ruby -rubygems prog_that_uses_gems&lt;br /&gt;
 export RUBYOPT=rubygems&lt;br /&gt;
 &lt;br /&gt;
 export RAILS_ENV=production&lt;br /&gt;
&lt;br /&gt;
==== Eigene Installation ====&lt;br /&gt;
&lt;br /&gt;
Um eine andere als die vorinstallierte Ruby Version zu verwenden, installiert man zunächst den Ruby Versions Manager (rvm),&lt;br /&gt;
 curl -L https://get.rvm.io | bash -s stable&lt;br /&gt;
 source ~/.rvm/scripts/rvm&lt;br /&gt;
 rvm notes&lt;br /&gt;
 rvm requirements&lt;br /&gt;
 rvm pkg install openssl&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
und lässt dann die gewünschte Ruby Version installieren.&lt;br /&gt;
 rvm install x.y.z&lt;br /&gt;
&lt;br /&gt;
RVM passt die Umgebungsvariablen automatisch an die ausgewählt Version an. Die Version wählt man global per&lt;br /&gt;
 rvm use x.y.z --default&lt;br /&gt;
oder nur für ein spezielles Verzeichnis:&lt;br /&gt;
 cd ~/verzeichnis/mit/ruby-x.y.z-Anwendung&lt;br /&gt;
 rvm use x.y.z-p??? --rvmrc&lt;br /&gt;
&lt;br /&gt;
Zur Verwaltung von gems installiert man noch rubygems.&lt;br /&gt;
 rvm rubygems current&lt;br /&gt;
&lt;br /&gt;
=== Rails ===&lt;br /&gt;
&lt;br /&gt;
Falls man die Ruby-Umgebung gerade erst eingerichtet hat, ohne sich zwischenzeitlich abzumelden, muß zunächst die Umgebung manuell laden.&lt;br /&gt;
 source ~/.profile&lt;br /&gt;
&lt;br /&gt;
Nun kann Rails per &amp;quot;gem install rails&amp;quot; installiert werden (inklusive Abhängigkeiten).&lt;br /&gt;
Um spezielle versionen zu installieren kann man den gem Befehl mit &amp;quot;-v=x.y.z&amp;quot; ergänzen.&lt;br /&gt;
&lt;br /&gt;
Zum Testen hier ein Beispiel das gleich noch eine fertige CMS Anwendung installiert (http://zenadmin.org) und mit einer einfachen sqlite Datenbankdatei einrichtet:&lt;br /&gt;
 gem install rails -v=2.3.11&lt;br /&gt;
 gem install i18n sexp_processor sqlite3 zena&lt;br /&gt;
 zena new ~/rails      # Zena Rails-Anwendung anlegen.&lt;br /&gt;
 cd ~/rails&lt;br /&gt;
 rake db:create        # Datenbank anlegen.&lt;br /&gt;
 zena migrate          # Datenbank Tabellen einrichten.&lt;br /&gt;
 zena mksite LANG=en RAILS_ENV=production PASSWORD=geheim HOST=rails.example.org # Webseite anlegen.&lt;br /&gt;
&lt;br /&gt;
=== Rails-Anwendung ===&lt;br /&gt;
&lt;br /&gt;
Seine eigene Rails-Anwendung kopiert man z.B. nach ~/rails, oder erstellt dort eine Neue (rails ~/rails, ...).&lt;br /&gt;
&lt;br /&gt;
=== Datenbank ===&lt;br /&gt;
&lt;br /&gt;
Mit &#039;&#039;hsadmin&#039;&#039; beispielsweise einen Postgres-User (z.B. &#039;xyz00_rails&#039;, Passwort sei &#039;geheim&#039;) sowie eine Datenbank anlegen (z.B. &#039;xyz00_rails&#039;.&lt;br /&gt;
&lt;br /&gt;
Die Datenbank in der Anwendung konfigurieren,&lt;br /&gt;
&lt;br /&gt;
 cd ~/rails/config/&lt;br /&gt;
 nano database.yml&lt;br /&gt;
&lt;br /&gt;
mit folgendem Inhalt:&lt;br /&gt;
&lt;br /&gt;
 production:&lt;br /&gt;
    adapter: postgresql&lt;br /&gt;
    database: xyz00_rails&lt;br /&gt;
    host: localhost&lt;br /&gt;
    username: xyz00_rails&lt;br /&gt;
    password: geheim&lt;br /&gt;
&lt;br /&gt;
=== E-Mail, Dateiablage ===&lt;br /&gt;
&lt;br /&gt;
Beispielhafte Konfiguration:&lt;br /&gt;
&lt;br /&gt;
 default:&lt;br /&gt;
    email_delivery:&lt;br /&gt;
      delivery_method: :smtp&lt;br /&gt;
      smtp_settings:&lt;br /&gt;
        address: localhost&lt;br /&gt;
        port: 25&lt;br /&gt;
        domain: example.org&lt;br /&gt;
    attachments_storage_path: /home/pacs/xyz00/users/rails/attach&lt;br /&gt;
&lt;br /&gt;
=== Datenbankschema ===&lt;br /&gt;
&lt;br /&gt;
Initialisieren und migrieren der Datenbank (je nach Rails-Anwendung).&lt;br /&gt;
&lt;br /&gt;
 cd ~/rails&lt;br /&gt;
 ...&lt;br /&gt;
 rake ...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Konfiguration von FastCGI ===&lt;br /&gt;
&lt;br /&gt;
~/doms/rails.example.org/htdocs/.htaccess&lt;br /&gt;
&lt;br /&gt;
 RewriteEngine On&lt;br /&gt;
 RewriteRule ^$ index.html [QSA]&lt;br /&gt;
 RewriteRule ^([^.]+)$ $1.html [QSA]&lt;br /&gt;
 RewriteCond %{REQUEST_FILENAME} !-f [OR]&lt;br /&gt;
 RewriteCond %{REQUEST_FILENAME} dispatch.fcgi$&lt;br /&gt;
 RewriteRule ^(.*)$ /fastcgi-bin/dispatch.fcgi [QSA,L]&lt;br /&gt;
&lt;br /&gt;
Ältere Versionen von Rails, die noch nicht auf der &amp;quot;rack&amp;quot; Middleware aufbauen (wie obiges zena Beispiel), laufen mit folgender ~/doms/www.example.org/fastcgi/dispatch.fcgi&lt;br /&gt;
&lt;br /&gt;
 #!/usr/bin/env ruby&lt;br /&gt;
 require &amp;quot;/home/pacs/xyz00/users/meinuser/rails/config/environment&amp;quot; &lt;br /&gt;
 require &#039;fcgi_handler&#039;&lt;br /&gt;
 RailsFCGIHandler.process!&lt;br /&gt;
&lt;br /&gt;
Für aktuelle Versionen von Rails, die auf &amp;quot;rack&amp;quot; aufbauen, siehe https://github.com/dre3k/rails3_fcgi, ~/doms/www.example.org/fastcgi/dispatch.fcgi&lt;br /&gt;
  #!/usr/bin/env ruby&lt;br /&gt;
 &lt;br /&gt;
 require_relative &#039;../config/environment&#039;&lt;br /&gt;
 &lt;br /&gt;
 class Rack::PathInfoRewriter&lt;br /&gt;
   def initialize(app)&lt;br /&gt;
     @app = app&lt;br /&gt;
   end&lt;br /&gt;
 &lt;br /&gt;
   def call(env)&lt;br /&gt;
     env.delete(&#039;SCRIPT_NAME&#039;)&lt;br /&gt;
     parts = env[&#039;REQUEST_URI&#039;].split(&#039;?&#039;)&lt;br /&gt;
     env[&#039;PATH_INFO&#039;] = parts[0]&lt;br /&gt;
     env[&#039;QUERY_STRING&#039;] = parts[1].to_s&lt;br /&gt;
     @app.call(env)&lt;br /&gt;
   end&lt;br /&gt;
 end&lt;br /&gt;
 &lt;br /&gt;
 Rack::Handler::FastCGI.run  Rack::PathInfoRewriter.new(HIER_APPLIKATIONSNAME_AUS_config/application.rb_EINTRAGEN::Application)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
FastCGI-Skript ausführbar machen:&lt;br /&gt;
&lt;br /&gt;
 chmod 755 ~/doms/rails.example.org/fastcgi/dispatch.fcgi&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Am Anfang von ~/rails/config/environment.rb einfügen:&lt;br /&gt;
&lt;br /&gt;
 ENV[&#039;RAILS_ENV&#039;] ||= &#039;production&#039;&lt;br /&gt;
 ENV[&#039;GEM_PATH&#039;] ||= &#039;/home/pacs/xyz00/users/meinuser/.gem/ruby/1.8:/var/lib/gems/1.8&#039;&lt;br /&gt;
Evtl. könnten diese Einstellungen auch ohne eine Modifikation der Anwendung erfolgen, indem die Umgebungsvariablen in der .htaccess gesetzt werden (z.B. &amp;quot;SetEnv RAILS_ENV production&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
Die Applikation ins Webroot einbinden:&lt;br /&gt;
&lt;br /&gt;
 # ggf. vorhandene Dateien sichern (oder nach ~/rails/public kopieren)&lt;br /&gt;
 mv ~/doms/rails.example.org/htdocs ~/doms/rails.example.org/htdocs.old&lt;br /&gt;
 # Das rails/public Verzeichnis ins Webroot verlinken.&lt;br /&gt;
 ln -s ~/rails/public ~/doms/rails.example.org/htdocs&lt;br /&gt;
&lt;br /&gt;
=== Konfiguration von SSL ===&lt;br /&gt;
&lt;br /&gt;
Die Verzeichnisse ~/doms/rails.example.org/fastcgi-ssl/ und ~/doms/rail.example.org/htdocs-ssl/ werden analog zu bzw. anstelle von fastcgi und htdocs gefüllt.&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:HSDoku]]&lt;br /&gt;
[[Kategorie:Installationsanleitungen]]&lt;br /&gt;
[[Kategorie:Software]]&lt;br /&gt;
[[Kategorie:Glossar]]&lt;/div&gt;</summary>
		<author><name>Srv00-wiki</name></author>
	</entry>
	<entry>
		<id>https://wiki.hostsharing.net/index.php?title=RubyOnRails&amp;diff=3458</id>
		<title>RubyOnRails</title>
		<link rel="alternate" type="text/html" href="https://wiki.hostsharing.net/index.php?title=RubyOnRails&amp;diff=3458"/>
		<updated>2012-08-30T15:28:35Z</updated>

		<summary type="html">&lt;p&gt;Srv00-wiki: /* Rails */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Bestes Ruby on Rails Hosting bei Hostsharing ==&lt;br /&gt;
&lt;br /&gt;
Rubyanwendungen laufen (wie alle Anwendungen bei Hostsharing) als Prozesse des jeweiligen Benutzersaccounts. Probleme mit Dateirechten und Sicherheitsrisiken, wie sie sonst bei der Ausführung durch den Webserver auftreten, sind so von vorne herein ausgeschlossen.&lt;br /&gt;
&lt;br /&gt;
Standardmäßig erfolgt der Aufruf von Ruby Anwendungen durch den Apache Webserver über die FastCGI Schnittstelle. Dabei wird die Ruby Application Server Instanz des Users nach einem Aufruf noch für einige Zeit bereit gehalten, um sofort zur Bearbeitung von weiteren noch nicht gecacheten, oder gar nicht cachebaren, Anfragen zur Verfügung zu stehen.&lt;br /&gt;
&lt;br /&gt;
Für den Betrieb von noch anspruchsvolleren Anwendungen haben wir auch Tools wie haproxy, varnish, nginx etc. installiert. Wir können auch mod_passenger (mod_wsgi haben wir schon) oder mongrel oder Green Unicorn (gunicorn) installieren. Anwender, die damit auf unserer leistungsfähigen Infrastruktur (managed Plattform) z.B. einen Webserver Cluster mit load-balancing realisieren möchten, brauchen bei uns dafür nur eigene Daemons buchen, können dies aber auch (für größere Projekte) mit einer beliebigen Anzahl ganzer Server realisieren.&lt;br /&gt;
&lt;br /&gt;
== Einrichtung ohne zusätzliche Daemons (ein Application Server) ==&lt;br /&gt;
&lt;br /&gt;
=== Vorbereitungen ===&lt;br /&gt;
&lt;br /&gt;
Einige Einstellungen für den Paketuser.&lt;br /&gt;
&lt;br /&gt;
~/.gemrc&lt;br /&gt;
 install: --no-rdoc --no-ri&lt;br /&gt;
 update:  --no-rdoc --no-ri&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
~/.bashrc&lt;br /&gt;
 alias gem=&amp;quot;nice -n19 gem&amp;quot;&lt;br /&gt;
&lt;br /&gt;
~/.profile&lt;br /&gt;
 source &amp;quot;$HOME/.bashrc&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== Ruby ===&lt;br /&gt;
&lt;br /&gt;
==== Vorinstalliert ====&lt;br /&gt;
&lt;br /&gt;
Soll nur die zentral installierte Ruby Version verwendet werden, ergänzt man man die ~/.profile:&lt;br /&gt;
 # enable user&#039;s own ruby installations, keeping all stuff below $HOME/.gem&lt;br /&gt;
 export PATH=&amp;quot;$HOME/bin:$HOME/.gem/ruby/1.8/bin:$PATH&amp;quot;&lt;br /&gt;
 export GEM_PATH=&amp;quot;$HOME/.gem/ruby/1.8:$( gem env gempath )&amp;quot;&lt;br /&gt;
 export GEM_HOME=&amp;quot;$HOME/.gem/ruby/1.8&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 # Disabled for now, because using system libs caused undefined method error.&lt;br /&gt;
 #export RUBYLIB=&amp;quot;$HOME/.gem/ruby/1.8/lib:/usr/local/lib/site_ruby/1.8:/usr/lib/ruby/1.8&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 # avoid to forget that extra parameter: ruby -rubygems prog_that_uses_gems&lt;br /&gt;
 export RUBYOPT=rubygems&lt;br /&gt;
 &lt;br /&gt;
 export RAILS_ENV=production&lt;br /&gt;
&lt;br /&gt;
==== Eigene Installation ====&lt;br /&gt;
&lt;br /&gt;
Um eine andere als die vorinstallierte Ruby Version zu verwenden, installiert man zunächst den Ruby Versions Manager (rvm),&lt;br /&gt;
 curl -L https://get.rvm.io | bash -s stable&lt;br /&gt;
 source ~/.rvm/scripts/rvm&lt;br /&gt;
 rvm notes&lt;br /&gt;
 rvm requirements&lt;br /&gt;
 rvm pkg install openssl&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
und lässt dann die gewünschte Ruby Version installieren.&lt;br /&gt;
 rvm install x.y.z&lt;br /&gt;
&lt;br /&gt;
RVM passt die Umgebungsvariablen automatisch an die ausgewählt Version an. Die Version wählt man global per&lt;br /&gt;
 rvm use x.y.z --default&lt;br /&gt;
oder nur für ein spezielles Verzeichnis:&lt;br /&gt;
 cd ~/verzeichnis/mit/ruby-x.y.z-Anwendung&lt;br /&gt;
 rvm use x.y.z-p??? --rvmrc&lt;br /&gt;
&lt;br /&gt;
Zur Verwaltung von gems installiert man noch rubygems.&lt;br /&gt;
 rvm rubygems current&lt;br /&gt;
&lt;br /&gt;
=== Rails ===&lt;br /&gt;
&lt;br /&gt;
Falls man die Ruby-Umgebung gerade erst eingerichtet hat, ohne sich zwischenzeitlich abzumelden, muß zunächst die Umgebung manuell laden.&lt;br /&gt;
 source ~/.profile&lt;br /&gt;
&lt;br /&gt;
Nun kann Rails per &amp;quot;gem install rails&amp;quot; installiert werden (inklusive Abhängigkeiten).&lt;br /&gt;
Um spezielle versionen zu installieren kann man den gem Befehl mit &amp;quot;-v=x.y.z&amp;quot; ergänzen.&lt;br /&gt;
&lt;br /&gt;
Zum Testen hier ein Beispiel das auch noch ein fertiges CMS installiert (http://zenadmin.org) und es mit einer einfachen sqlite Datenbankdatei einrichtet:&lt;br /&gt;
 gem install rails -v=2.3.11&lt;br /&gt;
 gem install i18n sexp_processor sqlite3 zena&lt;br /&gt;
 zena new ~/rails      # Zena Rails-Anwendung anlegen.&lt;br /&gt;
 cd ~/rails&lt;br /&gt;
 rake db:create        # Datenbank anlegen.&lt;br /&gt;
 zena migrate          # Datenbank Tabellen einrichten.&lt;br /&gt;
 zena mksite LANG=en RAILS_ENV=production PASSWORD=geheim HOST=rails.example.org # Webseite anlegen.&lt;br /&gt;
&lt;br /&gt;
=== Rails-Anwendung ===&lt;br /&gt;
&lt;br /&gt;
Seine eigene Rails-Anwendung kopiert man z.B. nach ~/rails, oder erstellt dort eine Neue (rails ~/rails, ...).&lt;br /&gt;
&lt;br /&gt;
=== Datenbank ===&lt;br /&gt;
&lt;br /&gt;
Mit &#039;&#039;hsadmin&#039;&#039; beispielsweise einen Postgres-User (z.B. &#039;xyz00_rails&#039;, Passwort sei &#039;geheim&#039;) sowie eine Datenbank anlegen (z.B. &#039;xyz00_rails&#039;.&lt;br /&gt;
&lt;br /&gt;
Die Datenbank in der Anwendung konfigurieren,&lt;br /&gt;
&lt;br /&gt;
 cd ~/rails/config/&lt;br /&gt;
 nano database.yml&lt;br /&gt;
&lt;br /&gt;
mit folgendem Inhalt:&lt;br /&gt;
&lt;br /&gt;
 production:&lt;br /&gt;
    adapter: postgresql&lt;br /&gt;
    database: xyz00_rails&lt;br /&gt;
    host: localhost&lt;br /&gt;
    username: xyz00_rails&lt;br /&gt;
    password: geheim&lt;br /&gt;
&lt;br /&gt;
=== E-Mail, Dateiablage ===&lt;br /&gt;
&lt;br /&gt;
Beispielhafte Konfiguration:&lt;br /&gt;
&lt;br /&gt;
 default:&lt;br /&gt;
    email_delivery:&lt;br /&gt;
      delivery_method: :smtp&lt;br /&gt;
      smtp_settings:&lt;br /&gt;
        address: localhost&lt;br /&gt;
        port: 25&lt;br /&gt;
        domain: example.org&lt;br /&gt;
    attachments_storage_path: /home/pacs/xyz00/users/rails/attach&lt;br /&gt;
&lt;br /&gt;
=== Datenbankschema ===&lt;br /&gt;
&lt;br /&gt;
Initialisieren und migrieren der Datenbank (je nach Rails-Anwendung).&lt;br /&gt;
&lt;br /&gt;
 cd ~/rails&lt;br /&gt;
 ...&lt;br /&gt;
 rake ...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Konfiguration von FastCGI ===&lt;br /&gt;
&lt;br /&gt;
~/doms/rails.example.org/htdocs/.htaccess&lt;br /&gt;
&lt;br /&gt;
 RewriteEngine On&lt;br /&gt;
 RewriteRule ^$ index.html [QSA]&lt;br /&gt;
 RewriteRule ^([^.]+)$ $1.html [QSA]&lt;br /&gt;
 RewriteCond %{REQUEST_FILENAME} !-f [OR]&lt;br /&gt;
 RewriteCond %{REQUEST_FILENAME} dispatch.fcgi$&lt;br /&gt;
 RewriteRule ^(.*)$ /fastcgi-bin/dispatch.fcgi [QSA,L]&lt;br /&gt;
&lt;br /&gt;
Ältere Versionen von Rails, die noch nicht auf der &amp;quot;rack&amp;quot; Middleware aufbauen (wie obiges zena Beispiel), laufen mit folgender ~/doms/www.example.org/fastcgi/dispatch.fcgi&lt;br /&gt;
&lt;br /&gt;
 #!/usr/bin/env ruby&lt;br /&gt;
 require &amp;quot;/home/pacs/xyz00/users/meinuser/rails/config/environment&amp;quot; &lt;br /&gt;
 require &#039;fcgi_handler&#039;&lt;br /&gt;
 RailsFCGIHandler.process!&lt;br /&gt;
&lt;br /&gt;
Für aktuelle Versionen von Rails, die auf &amp;quot;rack&amp;quot; aufbauen, siehe https://github.com/dre3k/rails3_fcgi, ~/doms/www.example.org/fastcgi/dispatch.fcgi&lt;br /&gt;
  #!/usr/bin/env ruby&lt;br /&gt;
 &lt;br /&gt;
 require_relative &#039;../config/environment&#039;&lt;br /&gt;
 &lt;br /&gt;
 class Rack::PathInfoRewriter&lt;br /&gt;
   def initialize(app)&lt;br /&gt;
     @app = app&lt;br /&gt;
   end&lt;br /&gt;
 &lt;br /&gt;
   def call(env)&lt;br /&gt;
     env.delete(&#039;SCRIPT_NAME&#039;)&lt;br /&gt;
     parts = env[&#039;REQUEST_URI&#039;].split(&#039;?&#039;)&lt;br /&gt;
     env[&#039;PATH_INFO&#039;] = parts[0]&lt;br /&gt;
     env[&#039;QUERY_STRING&#039;] = parts[1].to_s&lt;br /&gt;
     @app.call(env)&lt;br /&gt;
   end&lt;br /&gt;
 end&lt;br /&gt;
 &lt;br /&gt;
 Rack::Handler::FastCGI.run  Rack::PathInfoRewriter.new(HIER_APPLIKATIONSNAME_AUS_config/application.rb_EINTRAGEN::Application)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
FastCGI-Skript ausführbar machen:&lt;br /&gt;
&lt;br /&gt;
 chmod 755 ~/doms/rails.example.org/fastcgi/dispatch.fcgi&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Am Anfang von ~/rails/config/environment.rb einfügen:&lt;br /&gt;
&lt;br /&gt;
 ENV[&#039;RAILS_ENV&#039;] ||= &#039;production&#039;&lt;br /&gt;
 ENV[&#039;GEM_PATH&#039;] ||= &#039;/home/pacs/xyz00/users/meinuser/.gem/ruby/1.8:/var/lib/gems/1.8&#039;&lt;br /&gt;
Evtl. könnten diese Einstellungen auch ohne eine Modifikation der Anwendung erfolgen, indem die Umgebungsvariablen in der .htaccess gesetzt werden (z.B. &amp;quot;SetEnv RAILS_ENV production&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
Die Applikation ins Webroot einbinden:&lt;br /&gt;
&lt;br /&gt;
 # ggf. vorhandene Dateien sichern (oder nach ~/rails/public kopieren)&lt;br /&gt;
 mv ~/doms/rails.example.org/htdocs ~/doms/rails.example.org/htdocs.old&lt;br /&gt;
 # Das rails/public Verzeichnis ins Webroot verlinken.&lt;br /&gt;
 ln -s ~/rails/public ~/doms/rails.example.org/htdocs&lt;br /&gt;
&lt;br /&gt;
=== Konfiguration von SSL ===&lt;br /&gt;
&lt;br /&gt;
Die Verzeichnisse ~/doms/rails.example.org/fastcgi-ssl/ und ~/doms/rail.example.org/htdocs-ssl/ werden analog zu bzw. anstelle von fastcgi und htdocs gefüllt.&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:HSDoku]]&lt;br /&gt;
[[Kategorie:Installationsanleitungen]]&lt;br /&gt;
[[Kategorie:Software]]&lt;br /&gt;
[[Kategorie:Glossar]]&lt;/div&gt;</summary>
		<author><name>Srv00-wiki</name></author>
	</entry>
	<entry>
		<id>https://wiki.hostsharing.net/index.php?title=RubyOnRails&amp;diff=3457</id>
		<title>RubyOnRails</title>
		<link rel="alternate" type="text/html" href="https://wiki.hostsharing.net/index.php?title=RubyOnRails&amp;diff=3457"/>
		<updated>2012-08-30T15:26:37Z</updated>

		<summary type="html">&lt;p&gt;Srv00-wiki: /* Rails */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Bestes Ruby on Rails Hosting bei Hostsharing ==&lt;br /&gt;
&lt;br /&gt;
Rubyanwendungen laufen (wie alle Anwendungen bei Hostsharing) als Prozesse des jeweiligen Benutzersaccounts. Probleme mit Dateirechten und Sicherheitsrisiken, wie sie sonst bei der Ausführung durch den Webserver auftreten, sind so von vorne herein ausgeschlossen.&lt;br /&gt;
&lt;br /&gt;
Standardmäßig erfolgt der Aufruf von Ruby Anwendungen durch den Apache Webserver über die FastCGI Schnittstelle. Dabei wird die Ruby Application Server Instanz des Users nach einem Aufruf noch für einige Zeit bereit gehalten, um sofort zur Bearbeitung von weiteren noch nicht gecacheten, oder gar nicht cachebaren, Anfragen zur Verfügung zu stehen.&lt;br /&gt;
&lt;br /&gt;
Für den Betrieb von noch anspruchsvolleren Anwendungen haben wir auch Tools wie haproxy, varnish, nginx etc. installiert. Wir können auch mod_passenger (mod_wsgi haben wir schon) oder mongrel oder Green Unicorn (gunicorn) installieren. Anwender, die damit auf unserer leistungsfähigen Infrastruktur (managed Plattform) z.B. einen Webserver Cluster mit load-balancing realisieren möchten, brauchen bei uns dafür nur eigene Daemons buchen, können dies aber auch (für größere Projekte) mit einer beliebigen Anzahl ganzer Server realisieren.&lt;br /&gt;
&lt;br /&gt;
== Einrichtung ohne zusätzliche Daemons (ein Application Server) ==&lt;br /&gt;
&lt;br /&gt;
=== Vorbereitungen ===&lt;br /&gt;
&lt;br /&gt;
Einige Einstellungen für den Paketuser.&lt;br /&gt;
&lt;br /&gt;
~/.gemrc&lt;br /&gt;
 install: --no-rdoc --no-ri&lt;br /&gt;
 update:  --no-rdoc --no-ri&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
~/.bashrc&lt;br /&gt;
 alias gem=&amp;quot;nice -n19 gem&amp;quot;&lt;br /&gt;
&lt;br /&gt;
~/.profile&lt;br /&gt;
 source &amp;quot;$HOME/.bashrc&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== Ruby ===&lt;br /&gt;
&lt;br /&gt;
==== Vorinstalliert ====&lt;br /&gt;
&lt;br /&gt;
Soll nur die zentral installierte Ruby Version verwendet werden, ergänzt man man die ~/.profile:&lt;br /&gt;
 # enable user&#039;s own ruby installations, keeping all stuff below $HOME/.gem&lt;br /&gt;
 export PATH=&amp;quot;$HOME/bin:$HOME/.gem/ruby/1.8/bin:$PATH&amp;quot;&lt;br /&gt;
 export GEM_PATH=&amp;quot;$HOME/.gem/ruby/1.8:$( gem env gempath )&amp;quot;&lt;br /&gt;
 export GEM_HOME=&amp;quot;$HOME/.gem/ruby/1.8&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 # Disabled for now, because using system libs caused undefined method error.&lt;br /&gt;
 #export RUBYLIB=&amp;quot;$HOME/.gem/ruby/1.8/lib:/usr/local/lib/site_ruby/1.8:/usr/lib/ruby/1.8&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 # avoid to forget that extra parameter: ruby -rubygems prog_that_uses_gems&lt;br /&gt;
 export RUBYOPT=rubygems&lt;br /&gt;
 &lt;br /&gt;
 export RAILS_ENV=production&lt;br /&gt;
&lt;br /&gt;
==== Eigene Installation ====&lt;br /&gt;
&lt;br /&gt;
Um eine andere als die vorinstallierte Ruby Version zu verwenden, installiert man zunächst den Ruby Versions Manager (rvm),&lt;br /&gt;
 curl -L https://get.rvm.io | bash -s stable&lt;br /&gt;
 source ~/.rvm/scripts/rvm&lt;br /&gt;
 rvm notes&lt;br /&gt;
 rvm requirements&lt;br /&gt;
 rvm pkg install openssl&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
und lässt dann die gewünschte Ruby Version installieren.&lt;br /&gt;
 rvm install x.y.z&lt;br /&gt;
&lt;br /&gt;
RVM passt die Umgebungsvariablen automatisch an die ausgewählt Version an. Die Version wählt man global per&lt;br /&gt;
 rvm use x.y.z --default&lt;br /&gt;
oder nur für ein spezielles Verzeichnis:&lt;br /&gt;
 cd ~/verzeichnis/mit/ruby-x.y.z-Anwendung&lt;br /&gt;
 rvm use x.y.z-p??? --rvmrc&lt;br /&gt;
&lt;br /&gt;
Zur Verwaltung von gems installiert man noch rubygems.&lt;br /&gt;
 rvm rubygems current&lt;br /&gt;
&lt;br /&gt;
=== Rails ===&lt;br /&gt;
&lt;br /&gt;
Falls man die Ruby-Umgebung gerade erst eingerichtet hat, ohne sich zwischenzeitlich abzumelden, muß zunächst die Umgebung manuell laden.&lt;br /&gt;
 source ~/.profile&lt;br /&gt;
&lt;br /&gt;
Nun kann Rails per &amp;quot;gem install rails&amp;quot; installiert werden (inklusive Abhängigkeiten).&lt;br /&gt;
Um spezielle versionen zu installieren kann man den gem Befehl mit &amp;quot;-v=x.y.z&amp;quot; ergänzen.&lt;br /&gt;
&lt;br /&gt;
Zum Testen hier ein Beispiel das auch noch ein fertiges CMS installiert (http://zenadmin.org), und dieses mit einer eifachen sqlite Datenbankdatei einrichtet:&lt;br /&gt;
 gem install rails -v=2.3.11&lt;br /&gt;
 gem install i18n sexp_processor sqlite3 zena&lt;br /&gt;
 zena new ~/rails      # Zena Rails-Anwendung anlegen.&lt;br /&gt;
 cd ~/rails&lt;br /&gt;
 rake db:create        # Datenbank anlegen.&lt;br /&gt;
 zena migrate          # Datenbank Tabellen einrichten.&lt;br /&gt;
 zena mksite LANG=en RAILS_ENV=production PASSWORD=geheim HOST=rails.example.org # Webseite anlegen.&lt;br /&gt;
&lt;br /&gt;
=== Rails-Anwendung ===&lt;br /&gt;
&lt;br /&gt;
Seine eigene Rails-Anwendung kopiert man z.B. nach ~/rails, oder erstellt dort eine Neue (rails ~/rails, ...).&lt;br /&gt;
&lt;br /&gt;
=== Datenbank ===&lt;br /&gt;
&lt;br /&gt;
Mit &#039;&#039;hsadmin&#039;&#039; beispielsweise einen Postgres-User (z.B. &#039;xyz00_rails&#039;, Passwort sei &#039;geheim&#039;) sowie eine Datenbank anlegen (z.B. &#039;xyz00_rails&#039;.&lt;br /&gt;
&lt;br /&gt;
Die Datenbank in der Anwendung konfigurieren,&lt;br /&gt;
&lt;br /&gt;
 cd ~/rails/config/&lt;br /&gt;
 nano database.yml&lt;br /&gt;
&lt;br /&gt;
mit folgendem Inhalt:&lt;br /&gt;
&lt;br /&gt;
 production:&lt;br /&gt;
    adapter: postgresql&lt;br /&gt;
    database: xyz00_rails&lt;br /&gt;
    host: localhost&lt;br /&gt;
    username: xyz00_rails&lt;br /&gt;
    password: geheim&lt;br /&gt;
&lt;br /&gt;
=== E-Mail, Dateiablage ===&lt;br /&gt;
&lt;br /&gt;
Beispielhafte Konfiguration:&lt;br /&gt;
&lt;br /&gt;
 default:&lt;br /&gt;
    email_delivery:&lt;br /&gt;
      delivery_method: :smtp&lt;br /&gt;
      smtp_settings:&lt;br /&gt;
        address: localhost&lt;br /&gt;
        port: 25&lt;br /&gt;
        domain: example.org&lt;br /&gt;
    attachments_storage_path: /home/pacs/xyz00/users/rails/attach&lt;br /&gt;
&lt;br /&gt;
=== Datenbankschema ===&lt;br /&gt;
&lt;br /&gt;
Initialisieren und migrieren der Datenbank (je nach Rails-Anwendung).&lt;br /&gt;
&lt;br /&gt;
 cd ~/rails&lt;br /&gt;
 ...&lt;br /&gt;
 rake ...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Konfiguration von FastCGI ===&lt;br /&gt;
&lt;br /&gt;
~/doms/rails.example.org/htdocs/.htaccess&lt;br /&gt;
&lt;br /&gt;
 RewriteEngine On&lt;br /&gt;
 RewriteRule ^$ index.html [QSA]&lt;br /&gt;
 RewriteRule ^([^.]+)$ $1.html [QSA]&lt;br /&gt;
 RewriteCond %{REQUEST_FILENAME} !-f [OR]&lt;br /&gt;
 RewriteCond %{REQUEST_FILENAME} dispatch.fcgi$&lt;br /&gt;
 RewriteRule ^(.*)$ /fastcgi-bin/dispatch.fcgi [QSA,L]&lt;br /&gt;
&lt;br /&gt;
Ältere Versionen von Rails, die noch nicht auf der &amp;quot;rack&amp;quot; Middleware aufbauen (wie obiges zena Beispiel), laufen mit folgender ~/doms/www.example.org/fastcgi/dispatch.fcgi&lt;br /&gt;
&lt;br /&gt;
 #!/usr/bin/env ruby&lt;br /&gt;
 require &amp;quot;/home/pacs/xyz00/users/meinuser/rails/config/environment&amp;quot; &lt;br /&gt;
 require &#039;fcgi_handler&#039;&lt;br /&gt;
 RailsFCGIHandler.process!&lt;br /&gt;
&lt;br /&gt;
Für aktuelle Versionen von Rails, die auf &amp;quot;rack&amp;quot; aufbauen, siehe https://github.com/dre3k/rails3_fcgi, ~/doms/www.example.org/fastcgi/dispatch.fcgi&lt;br /&gt;
  #!/usr/bin/env ruby&lt;br /&gt;
 &lt;br /&gt;
 require_relative &#039;../config/environment&#039;&lt;br /&gt;
 &lt;br /&gt;
 class Rack::PathInfoRewriter&lt;br /&gt;
   def initialize(app)&lt;br /&gt;
     @app = app&lt;br /&gt;
   end&lt;br /&gt;
 &lt;br /&gt;
   def call(env)&lt;br /&gt;
     env.delete(&#039;SCRIPT_NAME&#039;)&lt;br /&gt;
     parts = env[&#039;REQUEST_URI&#039;].split(&#039;?&#039;)&lt;br /&gt;
     env[&#039;PATH_INFO&#039;] = parts[0]&lt;br /&gt;
     env[&#039;QUERY_STRING&#039;] = parts[1].to_s&lt;br /&gt;
     @app.call(env)&lt;br /&gt;
   end&lt;br /&gt;
 end&lt;br /&gt;
 &lt;br /&gt;
 Rack::Handler::FastCGI.run  Rack::PathInfoRewriter.new(HIER_APPLIKATIONSNAME_AUS_config/application.rb_EINTRAGEN::Application)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
FastCGI-Skript ausführbar machen:&lt;br /&gt;
&lt;br /&gt;
 chmod 755 ~/doms/rails.example.org/fastcgi/dispatch.fcgi&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Am Anfang von ~/rails/config/environment.rb einfügen:&lt;br /&gt;
&lt;br /&gt;
 ENV[&#039;RAILS_ENV&#039;] ||= &#039;production&#039;&lt;br /&gt;
 ENV[&#039;GEM_PATH&#039;] ||= &#039;/home/pacs/xyz00/users/meinuser/.gem/ruby/1.8:/var/lib/gems/1.8&#039;&lt;br /&gt;
Evtl. könnten diese Einstellungen auch ohne eine Modifikation der Anwendung erfolgen, indem die Umgebungsvariablen in der .htaccess gesetzt werden (z.B. &amp;quot;SetEnv RAILS_ENV production&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
Die Applikation ins Webroot einbinden:&lt;br /&gt;
&lt;br /&gt;
 # ggf. vorhandene Dateien sichern (oder nach ~/rails/public kopieren)&lt;br /&gt;
 mv ~/doms/rails.example.org/htdocs ~/doms/rails.example.org/htdocs.old&lt;br /&gt;
 # Das rails/public Verzeichnis ins Webroot verlinken.&lt;br /&gt;
 ln -s ~/rails/public ~/doms/rails.example.org/htdocs&lt;br /&gt;
&lt;br /&gt;
=== Konfiguration von SSL ===&lt;br /&gt;
&lt;br /&gt;
Die Verzeichnisse ~/doms/rails.example.org/fastcgi-ssl/ und ~/doms/rail.example.org/htdocs-ssl/ werden analog zu bzw. anstelle von fastcgi und htdocs gefüllt.&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:HSDoku]]&lt;br /&gt;
[[Kategorie:Installationsanleitungen]]&lt;br /&gt;
[[Kategorie:Software]]&lt;br /&gt;
[[Kategorie:Glossar]]&lt;/div&gt;</summary>
		<author><name>Srv00-wiki</name></author>
	</entry>
	<entry>
		<id>https://wiki.hostsharing.net/index.php?title=RubyOnRails&amp;diff=3456</id>
		<title>RubyOnRails</title>
		<link rel="alternate" type="text/html" href="https://wiki.hostsharing.net/index.php?title=RubyOnRails&amp;diff=3456"/>
		<updated>2012-08-30T14:40:17Z</updated>

		<summary type="html">&lt;p&gt;Srv00-wiki: /* Vorinstalliert */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Bestes Ruby on Rails Hosting bei Hostsharing ==&lt;br /&gt;
&lt;br /&gt;
Rubyanwendungen laufen (wie alle Anwendungen bei Hostsharing) als Prozesse des jeweiligen Benutzersaccounts. Probleme mit Dateirechten und Sicherheitsrisiken, wie sie sonst bei der Ausführung durch den Webserver auftreten, sind so von vorne herein ausgeschlossen.&lt;br /&gt;
&lt;br /&gt;
Standardmäßig erfolgt der Aufruf von Ruby Anwendungen durch den Apache Webserver über die FastCGI Schnittstelle. Dabei wird die Ruby Application Server Instanz des Users nach einem Aufruf noch für einige Zeit bereit gehalten, um sofort zur Bearbeitung von weiteren noch nicht gecacheten, oder gar nicht cachebaren, Anfragen zur Verfügung zu stehen.&lt;br /&gt;
&lt;br /&gt;
Für den Betrieb von noch anspruchsvolleren Anwendungen haben wir auch Tools wie haproxy, varnish, nginx etc. installiert. Wir können auch mod_passenger (mod_wsgi haben wir schon) oder mongrel oder Green Unicorn (gunicorn) installieren. Anwender, die damit auf unserer leistungsfähigen Infrastruktur (managed Plattform) z.B. einen Webserver Cluster mit load-balancing realisieren möchten, brauchen bei uns dafür nur eigene Daemons buchen, können dies aber auch (für größere Projekte) mit einer beliebigen Anzahl ganzer Server realisieren.&lt;br /&gt;
&lt;br /&gt;
== Einrichtung ohne zusätzliche Daemons (ein Application Server) ==&lt;br /&gt;
&lt;br /&gt;
=== Vorbereitungen ===&lt;br /&gt;
&lt;br /&gt;
Einige Einstellungen für den Paketuser.&lt;br /&gt;
&lt;br /&gt;
~/.gemrc&lt;br /&gt;
 install: --no-rdoc --no-ri&lt;br /&gt;
 update:  --no-rdoc --no-ri&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
~/.bashrc&lt;br /&gt;
 alias gem=&amp;quot;nice -n19 gem&amp;quot;&lt;br /&gt;
&lt;br /&gt;
~/.profile&lt;br /&gt;
 source &amp;quot;$HOME/.bashrc&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== Ruby ===&lt;br /&gt;
&lt;br /&gt;
==== Vorinstalliert ====&lt;br /&gt;
&lt;br /&gt;
Soll nur die zentral installierte Ruby Version verwendet werden, ergänzt man man die ~/.profile:&lt;br /&gt;
 # enable user&#039;s own ruby installations, keeping all stuff below $HOME/.gem&lt;br /&gt;
 export PATH=&amp;quot;$HOME/bin:$HOME/.gem/ruby/1.8/bin:$PATH&amp;quot;&lt;br /&gt;
 export GEM_PATH=&amp;quot;$HOME/.gem/ruby/1.8:$( gem env gempath )&amp;quot;&lt;br /&gt;
 export GEM_HOME=&amp;quot;$HOME/.gem/ruby/1.8&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 # Disabled for now, because using system libs caused undefined method error.&lt;br /&gt;
 #export RUBYLIB=&amp;quot;$HOME/.gem/ruby/1.8/lib:/usr/local/lib/site_ruby/1.8:/usr/lib/ruby/1.8&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 # avoid to forget that extra parameter: ruby -rubygems prog_that_uses_gems&lt;br /&gt;
 export RUBYOPT=rubygems&lt;br /&gt;
 &lt;br /&gt;
 export RAILS_ENV=production&lt;br /&gt;
&lt;br /&gt;
==== Eigene Installation ====&lt;br /&gt;
&lt;br /&gt;
Um eine andere als die vorinstallierte Ruby Version zu verwenden, installiert man zunächst den Ruby Versions Manager (rvm),&lt;br /&gt;
 curl -L https://get.rvm.io | bash -s stable&lt;br /&gt;
 source ~/.rvm/scripts/rvm&lt;br /&gt;
 rvm notes&lt;br /&gt;
 rvm requirements&lt;br /&gt;
 rvm pkg install openssl&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
und lässt dann die gewünschte Ruby Version installieren.&lt;br /&gt;
 rvm install x.y.z&lt;br /&gt;
&lt;br /&gt;
RVM passt die Umgebungsvariablen automatisch an die ausgewählt Version an. Die Version wählt man global per&lt;br /&gt;
 rvm use x.y.z --default&lt;br /&gt;
oder nur für ein spezielles Verzeichnis:&lt;br /&gt;
 cd ~/verzeichnis/mit/ruby-x.y.z-Anwendung&lt;br /&gt;
 rvm use x.y.z-p??? --rvmrc&lt;br /&gt;
&lt;br /&gt;
Zur Verwaltung von gems installiert man noch rubygems.&lt;br /&gt;
 rvm rubygems current&lt;br /&gt;
&lt;br /&gt;
=== Rails ===&lt;br /&gt;
&lt;br /&gt;
Falls man die Ruby-Umgebung gerade erst eingerichtet hat, ohne sich zwischenzeitlich abzumelden, muß zunächst die Umgebung laden.&lt;br /&gt;
 source ~/.profile&lt;br /&gt;
&lt;br /&gt;
Nun kann Rails per &amp;quot;gem install rails&amp;quot; installiert werden (inklusive Abhängigkeiten).&lt;br /&gt;
Um spezielle versionen zu installieren kann man den gem Befehl mit &amp;quot;-v=x.y.z&amp;quot; ergänzen.&lt;br /&gt;
&lt;br /&gt;
Zum Testen hier ein Beispiel das auch noch ein fertiges CMS installiert (http://zenadmin.org), und dieses mit einer eifachen sqlite Datenbankdatei einrichtet:&lt;br /&gt;
 gem install rails -v=2.3.11&lt;br /&gt;
 gem install i18n sexp_processor sqlite3 zena&lt;br /&gt;
 zena new ~/rails      # Zena Rails-Anwendung anlegen.&lt;br /&gt;
 cd ~/rails&lt;br /&gt;
 rake db:create        # Datenbank anlegen.&lt;br /&gt;
 zena migrate          # Datenbank Tabellen einrichten.&lt;br /&gt;
 zena mksite LANG=en RAILS_ENV=production PASSWORD=geheim HOST=rails.example.org # Webseite anlegen.&lt;br /&gt;
&lt;br /&gt;
=== Rails-Anwendung ===&lt;br /&gt;
&lt;br /&gt;
Seine eigene Rails-Anwendung kopiert man z.B. nach ~/rails, oder erstellt dort eine Neue (rails ~/rails, ...).&lt;br /&gt;
&lt;br /&gt;
=== Datenbank ===&lt;br /&gt;
&lt;br /&gt;
Mit &#039;&#039;hsadmin&#039;&#039; beispielsweise einen Postgres-User (z.B. &#039;xyz00_rails&#039;, Passwort sei &#039;geheim&#039;) sowie eine Datenbank anlegen (z.B. &#039;xyz00_rails&#039;.&lt;br /&gt;
&lt;br /&gt;
Die Datenbank in der Anwendung konfigurieren,&lt;br /&gt;
&lt;br /&gt;
 cd ~/rails/config/&lt;br /&gt;
 nano database.yml&lt;br /&gt;
&lt;br /&gt;
mit folgendem Inhalt:&lt;br /&gt;
&lt;br /&gt;
 production:&lt;br /&gt;
    adapter: postgresql&lt;br /&gt;
    database: xyz00_rails&lt;br /&gt;
    host: localhost&lt;br /&gt;
    username: xyz00_rails&lt;br /&gt;
    password: geheim&lt;br /&gt;
&lt;br /&gt;
=== E-Mail, Dateiablage ===&lt;br /&gt;
&lt;br /&gt;
Beispielhafte Konfiguration:&lt;br /&gt;
&lt;br /&gt;
 default:&lt;br /&gt;
    email_delivery:&lt;br /&gt;
      delivery_method: :smtp&lt;br /&gt;
      smtp_settings:&lt;br /&gt;
        address: localhost&lt;br /&gt;
        port: 25&lt;br /&gt;
        domain: example.org&lt;br /&gt;
    attachments_storage_path: /home/pacs/xyz00/users/rails/attach&lt;br /&gt;
&lt;br /&gt;
=== Datenbankschema ===&lt;br /&gt;
&lt;br /&gt;
Initialisieren und migrieren der Datenbank (je nach Rails-Anwendung).&lt;br /&gt;
&lt;br /&gt;
 cd ~/rails&lt;br /&gt;
 ...&lt;br /&gt;
 rake ...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Konfiguration von FastCGI ===&lt;br /&gt;
&lt;br /&gt;
~/doms/rails.example.org/htdocs/.htaccess&lt;br /&gt;
&lt;br /&gt;
 RewriteEngine On&lt;br /&gt;
 RewriteRule ^$ index.html [QSA]&lt;br /&gt;
 RewriteRule ^([^.]+)$ $1.html [QSA]&lt;br /&gt;
 RewriteCond %{REQUEST_FILENAME} !-f [OR]&lt;br /&gt;
 RewriteCond %{REQUEST_FILENAME} dispatch.fcgi$&lt;br /&gt;
 RewriteRule ^(.*)$ /fastcgi-bin/dispatch.fcgi [QSA,L]&lt;br /&gt;
&lt;br /&gt;
Ältere Versionen von Rails, die noch nicht auf der &amp;quot;rack&amp;quot; Middleware aufbauen (wie obiges zena Beispiel), laufen mit folgender ~/doms/www.example.org/fastcgi/dispatch.fcgi&lt;br /&gt;
&lt;br /&gt;
 #!/usr/bin/env ruby&lt;br /&gt;
 require &amp;quot;/home/pacs/xyz00/users/meinuser/rails/config/environment&amp;quot; &lt;br /&gt;
 require &#039;fcgi_handler&#039;&lt;br /&gt;
 RailsFCGIHandler.process!&lt;br /&gt;
&lt;br /&gt;
Für aktuelle Versionen von Rails, die auf &amp;quot;rack&amp;quot; aufbauen, siehe https://github.com/dre3k/rails3_fcgi, ~/doms/www.example.org/fastcgi/dispatch.fcgi&lt;br /&gt;
  #!/usr/bin/env ruby&lt;br /&gt;
 &lt;br /&gt;
 require_relative &#039;../config/environment&#039;&lt;br /&gt;
 &lt;br /&gt;
 class Rack::PathInfoRewriter&lt;br /&gt;
   def initialize(app)&lt;br /&gt;
     @app = app&lt;br /&gt;
   end&lt;br /&gt;
 &lt;br /&gt;
   def call(env)&lt;br /&gt;
     env.delete(&#039;SCRIPT_NAME&#039;)&lt;br /&gt;
     parts = env[&#039;REQUEST_URI&#039;].split(&#039;?&#039;)&lt;br /&gt;
     env[&#039;PATH_INFO&#039;] = parts[0]&lt;br /&gt;
     env[&#039;QUERY_STRING&#039;] = parts[1].to_s&lt;br /&gt;
     @app.call(env)&lt;br /&gt;
   end&lt;br /&gt;
 end&lt;br /&gt;
 &lt;br /&gt;
 Rack::Handler::FastCGI.run  Rack::PathInfoRewriter.new(HIER_APPLIKATIONSNAME_AUS_config/application.rb_EINTRAGEN::Application)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
FastCGI-Skript ausführbar machen:&lt;br /&gt;
&lt;br /&gt;
 chmod 755 ~/doms/rails.example.org/fastcgi/dispatch.fcgi&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Am Anfang von ~/rails/config/environment.rb einfügen:&lt;br /&gt;
&lt;br /&gt;
 ENV[&#039;RAILS_ENV&#039;] ||= &#039;production&#039;&lt;br /&gt;
 ENV[&#039;GEM_PATH&#039;] ||= &#039;/home/pacs/xyz00/users/meinuser/.gem/ruby/1.8:/var/lib/gems/1.8&#039;&lt;br /&gt;
Evtl. könnten diese Einstellungen auch ohne eine Modifikation der Anwendung erfolgen, indem die Umgebungsvariablen in der .htaccess gesetzt werden (z.B. &amp;quot;SetEnv RAILS_ENV production&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
Die Applikation ins Webroot einbinden:&lt;br /&gt;
&lt;br /&gt;
 # ggf. vorhandene Dateien sichern (oder nach ~/rails/public kopieren)&lt;br /&gt;
 mv ~/doms/rails.example.org/htdocs ~/doms/rails.example.org/htdocs.old&lt;br /&gt;
 # Das rails/public Verzeichnis ins Webroot verlinken.&lt;br /&gt;
 ln -s ~/rails/public ~/doms/rails.example.org/htdocs&lt;br /&gt;
&lt;br /&gt;
=== Konfiguration von SSL ===&lt;br /&gt;
&lt;br /&gt;
Die Verzeichnisse ~/doms/rails.example.org/fastcgi-ssl/ und ~/doms/rail.example.org/htdocs-ssl/ werden analog zu bzw. anstelle von fastcgi und htdocs gefüllt.&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:HSDoku]]&lt;br /&gt;
[[Kategorie:Installationsanleitungen]]&lt;br /&gt;
[[Kategorie:Software]]&lt;br /&gt;
[[Kategorie:Glossar]]&lt;/div&gt;</summary>
		<author><name>Srv00-wiki</name></author>
	</entry>
	<entry>
		<id>https://wiki.hostsharing.net/index.php?title=RubyOnRails&amp;diff=3455</id>
		<title>RubyOnRails</title>
		<link rel="alternate" type="text/html" href="https://wiki.hostsharing.net/index.php?title=RubyOnRails&amp;diff=3455"/>
		<updated>2012-08-30T14:21:06Z</updated>

		<summary type="html">&lt;p&gt;Srv00-wiki: /* Bestes Ruby on Rails Hosting bei Hostsharing */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Bestes Ruby on Rails Hosting bei Hostsharing ==&lt;br /&gt;
&lt;br /&gt;
Rubyanwendungen laufen (wie alle Anwendungen bei Hostsharing) als Prozesse des jeweiligen Benutzersaccounts. Probleme mit Dateirechten und Sicherheitsrisiken, wie sie sonst bei der Ausführung durch den Webserver auftreten, sind so von vorne herein ausgeschlossen.&lt;br /&gt;
&lt;br /&gt;
Standardmäßig erfolgt der Aufruf von Ruby Anwendungen durch den Apache Webserver über die FastCGI Schnittstelle. Dabei wird die Ruby Application Server Instanz des Users nach einem Aufruf noch für einige Zeit bereit gehalten, um sofort zur Bearbeitung von weiteren noch nicht gecacheten, oder gar nicht cachebaren, Anfragen zur Verfügung zu stehen.&lt;br /&gt;
&lt;br /&gt;
Für den Betrieb von noch anspruchsvolleren Anwendungen haben wir auch Tools wie haproxy, varnish, nginx etc. installiert. Wir können auch mod_passenger (mod_wsgi haben wir schon) oder mongrel oder Green Unicorn (gunicorn) installieren. Anwender, die damit auf unserer leistungsfähigen Infrastruktur (managed Plattform) z.B. einen Webserver Cluster mit load-balancing realisieren möchten, brauchen bei uns dafür nur eigene Daemons buchen, können dies aber auch (für größere Projekte) mit einer beliebigen Anzahl ganzer Server realisieren.&lt;br /&gt;
&lt;br /&gt;
== Einrichtung ohne zusätzliche Daemons (ein Application Server) ==&lt;br /&gt;
&lt;br /&gt;
=== Vorbereitungen ===&lt;br /&gt;
&lt;br /&gt;
Einige Einstellungen für den Paketuser.&lt;br /&gt;
&lt;br /&gt;
~/.gemrc&lt;br /&gt;
 install: --no-rdoc --no-ri&lt;br /&gt;
 update:  --no-rdoc --no-ri&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
~/.bashrc&lt;br /&gt;
 alias gem=&amp;quot;nice -n19 gem&amp;quot;&lt;br /&gt;
&lt;br /&gt;
~/.profile&lt;br /&gt;
 source &amp;quot;$HOME/.bashrc&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== Ruby ===&lt;br /&gt;
&lt;br /&gt;
==== Vorinstalliert ====&lt;br /&gt;
&lt;br /&gt;
Soll nur die zentral installierte Ruby Version verwendet werden, ergänzt man man die ~/.profile:&lt;br /&gt;
 # enable user&#039;s own ruby installations, keeping all stuff below $HOME/.gem&lt;br /&gt;
 export PATH=&amp;quot;$HOME/bin:$HOME/.gem/ruby/1.8/bin:$PATH&amp;quot;&lt;br /&gt;
 export GEM_PATH=&amp;quot;$( gem env gempath )&amp;quot;&lt;br /&gt;
 export GEM_HOME=&amp;quot;$HOME/.gem/ruby/1.8&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 # Disabled for now, because using system libs caused undefined method error.&lt;br /&gt;
 #export RUBYLIB=&amp;quot;$HOME/.gem/ruby/1.8/lib:/usr/local/lib/site_ruby/1.8:/usr/lib/ruby/1.8&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 # avoid to forget that extra parameter: ruby -rubygems prog_that_uses_gems&lt;br /&gt;
 export RUBYOPT=rubygems&lt;br /&gt;
 &lt;br /&gt;
 export RAILS_ENV=production&lt;br /&gt;
&lt;br /&gt;
==== Eigene Installation ====&lt;br /&gt;
&lt;br /&gt;
Um eine andere als die vorinstallierte Ruby Version zu verwenden, installiert man zunächst den Ruby Versions Manager (rvm),&lt;br /&gt;
 curl -L https://get.rvm.io | bash -s stable&lt;br /&gt;
 source ~/.rvm/scripts/rvm&lt;br /&gt;
 rvm notes&lt;br /&gt;
 rvm requirements&lt;br /&gt;
 rvm pkg install openssl&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
und lässt dann die gewünschte Ruby Version installieren.&lt;br /&gt;
 rvm install x.y.z&lt;br /&gt;
&lt;br /&gt;
RVM passt die Umgebungsvariablen automatisch an die ausgewählt Version an. Die Version wählt man global per&lt;br /&gt;
 rvm use x.y.z --default&lt;br /&gt;
oder nur für ein spezielles Verzeichnis:&lt;br /&gt;
 cd ~/verzeichnis/mit/ruby-x.y.z-Anwendung&lt;br /&gt;
 rvm use x.y.z-p??? --rvmrc&lt;br /&gt;
&lt;br /&gt;
Zur Verwaltung von gems installiert man noch rubygems.&lt;br /&gt;
 rvm rubygems current&lt;br /&gt;
&lt;br /&gt;
=== Rails ===&lt;br /&gt;
&lt;br /&gt;
Falls man die Ruby-Umgebung gerade erst eingerichtet hat, ohne sich zwischenzeitlich abzumelden, muß zunächst die Umgebung laden.&lt;br /&gt;
 source ~/.profile&lt;br /&gt;
&lt;br /&gt;
Nun kann Rails per &amp;quot;gem install rails&amp;quot; installiert werden (inklusive Abhängigkeiten).&lt;br /&gt;
Um spezielle versionen zu installieren kann man den gem Befehl mit &amp;quot;-v=x.y.z&amp;quot; ergänzen.&lt;br /&gt;
&lt;br /&gt;
Zum Testen hier ein Beispiel das auch noch ein fertiges CMS installiert (http://zenadmin.org), und dieses mit einer eifachen sqlite Datenbankdatei einrichtet:&lt;br /&gt;
 gem install rails -v=2.3.11&lt;br /&gt;
 gem install i18n sexp_processor sqlite3 zena&lt;br /&gt;
 zena new ~/rails      # Zena Rails-Anwendung anlegen.&lt;br /&gt;
 cd ~/rails&lt;br /&gt;
 rake db:create        # Datenbank anlegen.&lt;br /&gt;
 zena migrate          # Datenbank Tabellen einrichten.&lt;br /&gt;
 zena mksite LANG=en RAILS_ENV=production PASSWORD=geheim HOST=rails.example.org # Webseite anlegen.&lt;br /&gt;
&lt;br /&gt;
=== Rails-Anwendung ===&lt;br /&gt;
&lt;br /&gt;
Seine eigene Rails-Anwendung kopiert man z.B. nach ~/rails, oder erstellt dort eine Neue (rails ~/rails, ...).&lt;br /&gt;
&lt;br /&gt;
=== Datenbank ===&lt;br /&gt;
&lt;br /&gt;
Mit &#039;&#039;hsadmin&#039;&#039; beispielsweise einen Postgres-User (z.B. &#039;xyz00_rails&#039;, Passwort sei &#039;geheim&#039;) sowie eine Datenbank anlegen (z.B. &#039;xyz00_rails&#039;.&lt;br /&gt;
&lt;br /&gt;
Die Datenbank in der Anwendung konfigurieren,&lt;br /&gt;
&lt;br /&gt;
 cd ~/rails/config/&lt;br /&gt;
 nano database.yml&lt;br /&gt;
&lt;br /&gt;
mit folgendem Inhalt:&lt;br /&gt;
&lt;br /&gt;
 production:&lt;br /&gt;
    adapter: postgresql&lt;br /&gt;
    database: xyz00_rails&lt;br /&gt;
    host: localhost&lt;br /&gt;
    username: xyz00_rails&lt;br /&gt;
    password: geheim&lt;br /&gt;
&lt;br /&gt;
=== E-Mail, Dateiablage ===&lt;br /&gt;
&lt;br /&gt;
Beispielhafte Konfiguration:&lt;br /&gt;
&lt;br /&gt;
 default:&lt;br /&gt;
    email_delivery:&lt;br /&gt;
      delivery_method: :smtp&lt;br /&gt;
      smtp_settings:&lt;br /&gt;
        address: localhost&lt;br /&gt;
        port: 25&lt;br /&gt;
        domain: example.org&lt;br /&gt;
    attachments_storage_path: /home/pacs/xyz00/users/rails/attach&lt;br /&gt;
&lt;br /&gt;
=== Datenbankschema ===&lt;br /&gt;
&lt;br /&gt;
Initialisieren und migrieren der Datenbank (je nach Rails-Anwendung).&lt;br /&gt;
&lt;br /&gt;
 cd ~/rails&lt;br /&gt;
 ...&lt;br /&gt;
 rake ...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Konfiguration von FastCGI ===&lt;br /&gt;
&lt;br /&gt;
~/doms/rails.example.org/htdocs/.htaccess&lt;br /&gt;
&lt;br /&gt;
 RewriteEngine On&lt;br /&gt;
 RewriteRule ^$ index.html [QSA]&lt;br /&gt;
 RewriteRule ^([^.]+)$ $1.html [QSA]&lt;br /&gt;
 RewriteCond %{REQUEST_FILENAME} !-f [OR]&lt;br /&gt;
 RewriteCond %{REQUEST_FILENAME} dispatch.fcgi$&lt;br /&gt;
 RewriteRule ^(.*)$ /fastcgi-bin/dispatch.fcgi [QSA,L]&lt;br /&gt;
&lt;br /&gt;
Ältere Versionen von Rails, die noch nicht auf der &amp;quot;rack&amp;quot; Middleware aufbauen (wie obiges zena Beispiel), laufen mit folgender ~/doms/www.example.org/fastcgi/dispatch.fcgi&lt;br /&gt;
&lt;br /&gt;
 #!/usr/bin/env ruby&lt;br /&gt;
 require &amp;quot;/home/pacs/xyz00/users/meinuser/rails/config/environment&amp;quot; &lt;br /&gt;
 require &#039;fcgi_handler&#039;&lt;br /&gt;
 RailsFCGIHandler.process!&lt;br /&gt;
&lt;br /&gt;
Für aktuelle Versionen von Rails, die auf &amp;quot;rack&amp;quot; aufbauen, siehe https://github.com/dre3k/rails3_fcgi, ~/doms/www.example.org/fastcgi/dispatch.fcgi&lt;br /&gt;
  #!/usr/bin/env ruby&lt;br /&gt;
 &lt;br /&gt;
 require_relative &#039;../config/environment&#039;&lt;br /&gt;
 &lt;br /&gt;
 class Rack::PathInfoRewriter&lt;br /&gt;
   def initialize(app)&lt;br /&gt;
     @app = app&lt;br /&gt;
   end&lt;br /&gt;
 &lt;br /&gt;
   def call(env)&lt;br /&gt;
     env.delete(&#039;SCRIPT_NAME&#039;)&lt;br /&gt;
     parts = env[&#039;REQUEST_URI&#039;].split(&#039;?&#039;)&lt;br /&gt;
     env[&#039;PATH_INFO&#039;] = parts[0]&lt;br /&gt;
     env[&#039;QUERY_STRING&#039;] = parts[1].to_s&lt;br /&gt;
     @app.call(env)&lt;br /&gt;
   end&lt;br /&gt;
 end&lt;br /&gt;
 &lt;br /&gt;
 Rack::Handler::FastCGI.run  Rack::PathInfoRewriter.new(HIER_APPLIKATIONSNAME_AUS_config/application.rb_EINTRAGEN::Application)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
FastCGI-Skript ausführbar machen:&lt;br /&gt;
&lt;br /&gt;
 chmod 755 ~/doms/rails.example.org/fastcgi/dispatch.fcgi&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Am Anfang von ~/rails/config/environment.rb einfügen:&lt;br /&gt;
&lt;br /&gt;
 ENV[&#039;RAILS_ENV&#039;] ||= &#039;production&#039;&lt;br /&gt;
 ENV[&#039;GEM_PATH&#039;] ||= &#039;/home/pacs/xyz00/users/meinuser/.gem/ruby/1.8:/var/lib/gems/1.8&#039;&lt;br /&gt;
Evtl. könnten diese Einstellungen auch ohne eine Modifikation der Anwendung erfolgen, indem die Umgebungsvariablen in der .htaccess gesetzt werden (z.B. &amp;quot;SetEnv RAILS_ENV production&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
Die Applikation ins Webroot einbinden:&lt;br /&gt;
&lt;br /&gt;
 # ggf. vorhandene Dateien sichern (oder nach ~/rails/public kopieren)&lt;br /&gt;
 mv ~/doms/rails.example.org/htdocs ~/doms/rails.example.org/htdocs.old&lt;br /&gt;
 # Das rails/public Verzeichnis ins Webroot verlinken.&lt;br /&gt;
 ln -s ~/rails/public ~/doms/rails.example.org/htdocs&lt;br /&gt;
&lt;br /&gt;
=== Konfiguration von SSL ===&lt;br /&gt;
&lt;br /&gt;
Die Verzeichnisse ~/doms/rails.example.org/fastcgi-ssl/ und ~/doms/rail.example.org/htdocs-ssl/ werden analog zu bzw. anstelle von fastcgi und htdocs gefüllt.&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:HSDoku]]&lt;br /&gt;
[[Kategorie:Installationsanleitungen]]&lt;br /&gt;
[[Kategorie:Software]]&lt;br /&gt;
[[Kategorie:Glossar]]&lt;/div&gt;</summary>
		<author><name>Srv00-wiki</name></author>
	</entry>
	<entry>
		<id>https://wiki.hostsharing.net/index.php?title=RubyOnRails&amp;diff=3454</id>
		<title>RubyOnRails</title>
		<link rel="alternate" type="text/html" href="https://wiki.hostsharing.net/index.php?title=RubyOnRails&amp;diff=3454"/>
		<updated>2012-08-30T12:46:56Z</updated>

		<summary type="html">&lt;p&gt;Srv00-wiki: /* Rails */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Bestes Ruby on Rails Hosting bei Hostsharing ==&lt;br /&gt;
&lt;br /&gt;
Rubyanwendungen laufen (wie alle Anwendungen bei Hostsharing) als Prozesse des jeweiligen Benutzersaccounts. Probleme mit Dateirechten und Sicherheitsrisiken, wie sie sonst bei der Ausführung durch den Webserver auftreten, sind so von vorne herein ausgeschlossen.&lt;br /&gt;
&lt;br /&gt;
Standardmäßig erfolgt der Aufruf von Ruby Anwendungen durch den Apache Webserver über die FastCGI Schnittstelle. Dieser hält dabei nach einem Aufruf die Ruby Application Server Instanz des Users noch für einige Zeit bereit, die dann sofort zur Bearbeitung von weiteren noch nicht gecacheten, oder gar nicht cachebaren, Anfragen zur Verfügung steht.&lt;br /&gt;
&lt;br /&gt;
Für den Betrieb von noch anspruchsvolleren Anwendungen haben wir auch Tools wie haproxy, varnish, nginx etc. installiert. Wir können auch mod_passenger (mod_wsgi haben wir schon) oder mongrel oder Green Unicorn (gunicorn) installieren. Anwender, die damit auf unserer leistungsfähigen Infrastruktur (managed Plattform) z.B. einen Webserver Cluster mit load-balancing realisieren möchten, brauchen bei uns dafür nur eigene Daemons buchen, können dies aber auch (für größere Projekte) mit einer beliebigen Anzahl ganzer Server realisieren.&lt;br /&gt;
&lt;br /&gt;
== Einrichtung ohne zusätzliche Daemons (ein Application Server) ==&lt;br /&gt;
&lt;br /&gt;
=== Vorbereitungen ===&lt;br /&gt;
&lt;br /&gt;
Einige Einstellungen für den Paketuser.&lt;br /&gt;
&lt;br /&gt;
~/.gemrc&lt;br /&gt;
 install: --no-rdoc --no-ri&lt;br /&gt;
 update:  --no-rdoc --no-ri&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
~/.bashrc&lt;br /&gt;
 alias gem=&amp;quot;nice -n19 gem&amp;quot;&lt;br /&gt;
&lt;br /&gt;
~/.profile&lt;br /&gt;
 source &amp;quot;$HOME/.bashrc&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== Ruby ===&lt;br /&gt;
&lt;br /&gt;
==== Vorinstalliert ====&lt;br /&gt;
&lt;br /&gt;
Soll nur die zentral installierte Ruby Version verwendet werden, ergänzt man man die ~/.profile:&lt;br /&gt;
 # enable user&#039;s own ruby installations, keeping all stuff below $HOME/.gem&lt;br /&gt;
 export PATH=&amp;quot;$HOME/bin:$HOME/.gem/ruby/1.8/bin:$PATH&amp;quot;&lt;br /&gt;
 export GEM_PATH=&amp;quot;$( gem env gempath )&amp;quot;&lt;br /&gt;
 export GEM_HOME=&amp;quot;$HOME/.gem/ruby/1.8&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 # Disabled for now, because using system libs caused undefined method error.&lt;br /&gt;
 #export RUBYLIB=&amp;quot;$HOME/.gem/ruby/1.8/lib:/usr/local/lib/site_ruby/1.8:/usr/lib/ruby/1.8&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 # avoid to forget that extra parameter: ruby -rubygems prog_that_uses_gems&lt;br /&gt;
 export RUBYOPT=rubygems&lt;br /&gt;
 &lt;br /&gt;
 export RAILS_ENV=production&lt;br /&gt;
&lt;br /&gt;
==== Eigene Installation ====&lt;br /&gt;
&lt;br /&gt;
Um eine andere als die vorinstallierte Ruby Version zu verwenden, installiert man zunächst den Ruby Versions Manager (rvm),&lt;br /&gt;
 curl -L https://get.rvm.io | bash -s stable&lt;br /&gt;
 source ~/.rvm/scripts/rvm&lt;br /&gt;
 rvm notes&lt;br /&gt;
 rvm requirements&lt;br /&gt;
 rvm pkg install openssl&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
und lässt dann die gewünschte Ruby Version installieren.&lt;br /&gt;
 rvm install x.y.z&lt;br /&gt;
&lt;br /&gt;
RVM passt die Umgebungsvariablen automatisch an die ausgewählt Version an. Die Version wählt man global per&lt;br /&gt;
 rvm use x.y.z --default&lt;br /&gt;
oder nur für ein spezielles Verzeichnis:&lt;br /&gt;
 cd ~/verzeichnis/mit/ruby-x.y.z-Anwendung&lt;br /&gt;
 rvm use x.y.z-p??? --rvmrc&lt;br /&gt;
&lt;br /&gt;
Zur Verwaltung von gems installiert man noch rubygems.&lt;br /&gt;
 rvm rubygems current&lt;br /&gt;
&lt;br /&gt;
=== Rails ===&lt;br /&gt;
&lt;br /&gt;
Falls man die Ruby-Umgebung gerade erst eingerichtet hat, ohne sich zwischenzeitlich abzumelden, muß zunächst die Umgebung laden.&lt;br /&gt;
 source ~/.profile&lt;br /&gt;
&lt;br /&gt;
Nun kann Rails per &amp;quot;gem install rails&amp;quot; installiert werden (inklusive Abhängigkeiten).&lt;br /&gt;
Um spezielle versionen zu installieren kann man den gem Befehl mit &amp;quot;-v=x.y.z&amp;quot; ergänzen.&lt;br /&gt;
&lt;br /&gt;
Zum Testen hier ein Beispiel das auch noch ein fertiges CMS installiert (http://zenadmin.org), und dieses mit einer eifachen sqlite Datenbankdatei einrichtet:&lt;br /&gt;
 gem install rails -v=2.3.11&lt;br /&gt;
 gem install i18n sexp_processor sqlite3 zena&lt;br /&gt;
 zena new ~/rails      # Zena Rails-Anwendung anlegen.&lt;br /&gt;
 cd ~/rails&lt;br /&gt;
 rake db:create        # Datenbank anlegen.&lt;br /&gt;
 zena migrate          # Datenbank Tabellen einrichten.&lt;br /&gt;
 zena mksite LANG=en RAILS_ENV=production PASSWORD=geheim HOST=rails.example.org # Webseite anlegen.&lt;br /&gt;
&lt;br /&gt;
=== Rails-Anwendung ===&lt;br /&gt;
&lt;br /&gt;
Seine eigene Rails-Anwendung kopiert man z.B. nach ~/rails, oder erstellt dort eine Neue (rails ~/rails, ...).&lt;br /&gt;
&lt;br /&gt;
=== Datenbank ===&lt;br /&gt;
&lt;br /&gt;
Mit &#039;&#039;hsadmin&#039;&#039; beispielsweise einen Postgres-User (z.B. &#039;xyz00_rails&#039;, Passwort sei &#039;geheim&#039;) sowie eine Datenbank anlegen (z.B. &#039;xyz00_rails&#039;.&lt;br /&gt;
&lt;br /&gt;
Die Datenbank in der Anwendung konfigurieren,&lt;br /&gt;
&lt;br /&gt;
 cd ~/rails/config/&lt;br /&gt;
 nano database.yml&lt;br /&gt;
&lt;br /&gt;
mit folgendem Inhalt:&lt;br /&gt;
&lt;br /&gt;
 production:&lt;br /&gt;
    adapter: postgresql&lt;br /&gt;
    database: xyz00_rails&lt;br /&gt;
    host: localhost&lt;br /&gt;
    username: xyz00_rails&lt;br /&gt;
    password: geheim&lt;br /&gt;
&lt;br /&gt;
=== E-Mail, Dateiablage ===&lt;br /&gt;
&lt;br /&gt;
Beispielhafte Konfiguration:&lt;br /&gt;
&lt;br /&gt;
 default:&lt;br /&gt;
    email_delivery:&lt;br /&gt;
      delivery_method: :smtp&lt;br /&gt;
      smtp_settings:&lt;br /&gt;
        address: localhost&lt;br /&gt;
        port: 25&lt;br /&gt;
        domain: example.org&lt;br /&gt;
    attachments_storage_path: /home/pacs/xyz00/users/rails/attach&lt;br /&gt;
&lt;br /&gt;
=== Datenbankschema ===&lt;br /&gt;
&lt;br /&gt;
Initialisieren und migrieren der Datenbank (je nach Rails-Anwendung).&lt;br /&gt;
&lt;br /&gt;
 cd ~/rails&lt;br /&gt;
 ...&lt;br /&gt;
 rake ...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Konfiguration von FastCGI ===&lt;br /&gt;
&lt;br /&gt;
~/doms/rails.example.org/htdocs/.htaccess&lt;br /&gt;
&lt;br /&gt;
 RewriteEngine On&lt;br /&gt;
 RewriteRule ^$ index.html [QSA]&lt;br /&gt;
 RewriteRule ^([^.]+)$ $1.html [QSA]&lt;br /&gt;
 RewriteCond %{REQUEST_FILENAME} !-f [OR]&lt;br /&gt;
 RewriteCond %{REQUEST_FILENAME} dispatch.fcgi$&lt;br /&gt;
 RewriteRule ^(.*)$ /fastcgi-bin/dispatch.fcgi [QSA,L]&lt;br /&gt;
&lt;br /&gt;
Ältere Versionen von Rails, die noch nicht auf der &amp;quot;rack&amp;quot; Middleware aufbauen (wie obiges zena Beispiel), laufen mit folgender ~/doms/www.example.org/fastcgi/dispatch.fcgi&lt;br /&gt;
&lt;br /&gt;
 #!/usr/bin/env ruby&lt;br /&gt;
 require &amp;quot;/home/pacs/xyz00/users/meinuser/rails/config/environment&amp;quot; &lt;br /&gt;
 require &#039;fcgi_handler&#039;&lt;br /&gt;
 RailsFCGIHandler.process!&lt;br /&gt;
&lt;br /&gt;
Für aktuelle Versionen von Rails, die auf &amp;quot;rack&amp;quot; aufbauen, siehe https://github.com/dre3k/rails3_fcgi, ~/doms/www.example.org/fastcgi/dispatch.fcgi&lt;br /&gt;
  #!/usr/bin/env ruby&lt;br /&gt;
 &lt;br /&gt;
 require_relative &#039;../config/environment&#039;&lt;br /&gt;
 &lt;br /&gt;
 class Rack::PathInfoRewriter&lt;br /&gt;
   def initialize(app)&lt;br /&gt;
     @app = app&lt;br /&gt;
   end&lt;br /&gt;
 &lt;br /&gt;
   def call(env)&lt;br /&gt;
     env.delete(&#039;SCRIPT_NAME&#039;)&lt;br /&gt;
     parts = env[&#039;REQUEST_URI&#039;].split(&#039;?&#039;)&lt;br /&gt;
     env[&#039;PATH_INFO&#039;] = parts[0]&lt;br /&gt;
     env[&#039;QUERY_STRING&#039;] = parts[1].to_s&lt;br /&gt;
     @app.call(env)&lt;br /&gt;
   end&lt;br /&gt;
 end&lt;br /&gt;
 &lt;br /&gt;
 Rack::Handler::FastCGI.run  Rack::PathInfoRewriter.new(HIER_APPLIKATIONSNAME_AUS_config/application.rb_EINTRAGEN::Application)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
FastCGI-Skript ausführbar machen:&lt;br /&gt;
&lt;br /&gt;
 chmod 755 ~/doms/rails.example.org/fastcgi/dispatch.fcgi&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Am Anfang von ~/rails/config/environment.rb einfügen:&lt;br /&gt;
&lt;br /&gt;
 ENV[&#039;RAILS_ENV&#039;] ||= &#039;production&#039;&lt;br /&gt;
 ENV[&#039;GEM_PATH&#039;] ||= &#039;/home/pacs/xyz00/users/meinuser/.gem/ruby/1.8:/var/lib/gems/1.8&#039;&lt;br /&gt;
Evtl. könnten diese Einstellungen auch ohne eine Modifikation der Anwendung erfolgen, indem die Umgebungsvariablen in der .htaccess gesetzt werden (z.B. &amp;quot;SetEnv RAILS_ENV production&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
Die Applikation ins Webroot einbinden:&lt;br /&gt;
&lt;br /&gt;
 # ggf. vorhandene Dateien sichern (oder nach ~/rails/public kopieren)&lt;br /&gt;
 mv ~/doms/rails.example.org/htdocs ~/doms/rails.example.org/htdocs.old&lt;br /&gt;
 # Das rails/public Verzeichnis ins Webroot verlinken.&lt;br /&gt;
 ln -s ~/rails/public ~/doms/rails.example.org/htdocs&lt;br /&gt;
&lt;br /&gt;
=== Konfiguration von SSL ===&lt;br /&gt;
&lt;br /&gt;
Die Verzeichnisse ~/doms/rails.example.org/fastcgi-ssl/ und ~/doms/rail.example.org/htdocs-ssl/ werden analog zu bzw. anstelle von fastcgi und htdocs gefüllt.&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:HSDoku]]&lt;br /&gt;
[[Kategorie:Installationsanleitungen]]&lt;br /&gt;
[[Kategorie:Software]]&lt;br /&gt;
[[Kategorie:Glossar]]&lt;/div&gt;</summary>
		<author><name>Srv00-wiki</name></author>
	</entry>
	<entry>
		<id>https://wiki.hostsharing.net/index.php?title=RubyOnRails&amp;diff=3453</id>
		<title>RubyOnRails</title>
		<link rel="alternate" type="text/html" href="https://wiki.hostsharing.net/index.php?title=RubyOnRails&amp;diff=3453"/>
		<updated>2012-08-30T12:29:54Z</updated>

		<summary type="html">&lt;p&gt;Srv00-wiki: /* Rails */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Bestes Ruby on Rails Hosting bei Hostsharing ==&lt;br /&gt;
&lt;br /&gt;
Rubyanwendungen laufen (wie alle Anwendungen bei Hostsharing) als Prozesse des jeweiligen Benutzersaccounts. Probleme mit Dateirechten und Sicherheitsrisiken, wie sie sonst bei der Ausführung durch den Webserver auftreten, sind so von vorne herein ausgeschlossen.&lt;br /&gt;
&lt;br /&gt;
Standardmäßig erfolgt der Aufruf von Ruby Anwendungen durch den Apache Webserver über die FastCGI Schnittstelle. Dieser hält dabei nach einem Aufruf die Ruby Application Server Instanz des Users noch für einige Zeit bereit, die dann sofort zur Bearbeitung von weiteren noch nicht gecacheten, oder gar nicht cachebaren, Anfragen zur Verfügung steht.&lt;br /&gt;
&lt;br /&gt;
Für den Betrieb von noch anspruchsvolleren Anwendungen haben wir auch Tools wie haproxy, varnish, nginx etc. installiert. Wir können auch mod_passenger (mod_wsgi haben wir schon) oder mongrel oder Green Unicorn (gunicorn) installieren. Anwender, die damit auf unserer leistungsfähigen Infrastruktur (managed Plattform) z.B. einen Webserver Cluster mit load-balancing realisieren möchten, brauchen bei uns dafür nur eigene Daemons buchen, können dies aber auch (für größere Projekte) mit einer beliebigen Anzahl ganzer Server realisieren.&lt;br /&gt;
&lt;br /&gt;
== Einrichtung ohne zusätzliche Daemons (ein Application Server) ==&lt;br /&gt;
&lt;br /&gt;
=== Vorbereitungen ===&lt;br /&gt;
&lt;br /&gt;
Einige Einstellungen für den Paketuser.&lt;br /&gt;
&lt;br /&gt;
~/.gemrc&lt;br /&gt;
 install: --no-rdoc --no-ri&lt;br /&gt;
 update:  --no-rdoc --no-ri&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
~/.bashrc&lt;br /&gt;
 alias gem=&amp;quot;nice -n19 gem&amp;quot;&lt;br /&gt;
&lt;br /&gt;
~/.profile&lt;br /&gt;
 source &amp;quot;$HOME/.bashrc&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== Ruby ===&lt;br /&gt;
&lt;br /&gt;
==== Vorinstalliert ====&lt;br /&gt;
&lt;br /&gt;
Soll nur die zentral installierte Ruby Version verwendet werden, ergänzt man man die ~/.profile:&lt;br /&gt;
 # enable user&#039;s own ruby installations, keeping all stuff below $HOME/.gem&lt;br /&gt;
 export PATH=&amp;quot;$HOME/bin:$HOME/.gem/ruby/1.8/bin:$PATH&amp;quot;&lt;br /&gt;
 export GEM_PATH=&amp;quot;$( gem env gempath )&amp;quot;&lt;br /&gt;
 export GEM_HOME=&amp;quot;$HOME/.gem/ruby/1.8&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 # Disabled for now, because using system libs caused undefined method error.&lt;br /&gt;
 #export RUBYLIB=&amp;quot;$HOME/.gem/ruby/1.8/lib:/usr/local/lib/site_ruby/1.8:/usr/lib/ruby/1.8&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 # avoid to forget that extra parameter: ruby -rubygems prog_that_uses_gems&lt;br /&gt;
 export RUBYOPT=rubygems&lt;br /&gt;
 &lt;br /&gt;
 export RAILS_ENV=production&lt;br /&gt;
&lt;br /&gt;
==== Eigene Installation ====&lt;br /&gt;
&lt;br /&gt;
Um eine andere als die vorinstallierte Ruby Version zu verwenden, installiert man zunächst den Ruby Versions Manager (rvm),&lt;br /&gt;
 curl -L https://get.rvm.io | bash -s stable&lt;br /&gt;
 source ~/.rvm/scripts/rvm&lt;br /&gt;
 rvm notes&lt;br /&gt;
 rvm requirements&lt;br /&gt;
 rvm pkg install openssl&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
und lässt dann die gewünschte Ruby Version installieren.&lt;br /&gt;
 rvm install x.y.z&lt;br /&gt;
&lt;br /&gt;
RVM passt die Umgebungsvariablen automatisch an die ausgewählt Version an. Die Version wählt man global per&lt;br /&gt;
 rvm use x.y.z --default&lt;br /&gt;
oder nur für ein spezielles Verzeichnis:&lt;br /&gt;
 cd ~/verzeichnis/mit/ruby-x.y.z-Anwendung&lt;br /&gt;
 rvm use x.y.z-p??? --rvmrc&lt;br /&gt;
&lt;br /&gt;
Zur Verwaltung von gems installiert man noch rubygems.&lt;br /&gt;
 rvm rubygems current&lt;br /&gt;
&lt;br /&gt;
=== Rails ===&lt;br /&gt;
&lt;br /&gt;
Falls man die Ruby-Umgebung gerade erst eingerichtet hat, ohne sich zwischenzeitlich abzumelden, muß zunächst die Umgebung laden.&lt;br /&gt;
 source ~/.profile&lt;br /&gt;
&lt;br /&gt;
Nun kann Rails per &amp;quot;gem install rails&amp;quot; installiert werden (inklusive Abhängigkeiten).&lt;br /&gt;
Um spezielle versionen zu installieren kann man den gem Befehl mit &amp;quot;-v=x.y.z&amp;quot; ergänzen.&lt;br /&gt;
&lt;br /&gt;
Zum Testen hier ein Beispiel das auch noch ein fertiges CMS installiert (http://zenadmin.org), und dieses mit einer eifachen sqlite Datenbankdatei einrichtet:&lt;br /&gt;
 gem install rails -v=2.3.11&lt;br /&gt;
 gem install i18n sexp_processor sqlite3 zena&lt;br /&gt;
 zena new ~/rails      # Zena Rails-Anwendung anlegen.&lt;br /&gt;
 cd ~/zena-test&lt;br /&gt;
 rake db:create        # Datenbank anlegen.&lt;br /&gt;
 zena migrate          # Datenbank Tabellen einrichten.&lt;br /&gt;
 zena mksite LANG=en RAILS_ENV=production PASSWORD=geheim HOST=rails.example.org # Webseite anlegen.&lt;br /&gt;
&lt;br /&gt;
=== Rails-Anwendung ===&lt;br /&gt;
&lt;br /&gt;
Seine eigene Rails-Anwendung kopiert man z.B. nach ~/rails, oder erstellt dort eine Neue (rails ~/rails, ...).&lt;br /&gt;
&lt;br /&gt;
=== Datenbank ===&lt;br /&gt;
&lt;br /&gt;
Mit &#039;&#039;hsadmin&#039;&#039; beispielsweise einen Postgres-User (z.B. &#039;xyz00_rails&#039;, Passwort sei &#039;geheim&#039;) sowie eine Datenbank anlegen (z.B. &#039;xyz00_rails&#039;.&lt;br /&gt;
&lt;br /&gt;
Die Datenbank in der Anwendung konfigurieren,&lt;br /&gt;
&lt;br /&gt;
 cd ~/rails/config/&lt;br /&gt;
 nano database.yml&lt;br /&gt;
&lt;br /&gt;
mit folgendem Inhalt:&lt;br /&gt;
&lt;br /&gt;
 production:&lt;br /&gt;
    adapter: postgresql&lt;br /&gt;
    database: xyz00_rails&lt;br /&gt;
    host: localhost&lt;br /&gt;
    username: xyz00_rails&lt;br /&gt;
    password: geheim&lt;br /&gt;
&lt;br /&gt;
=== E-Mail, Dateiablage ===&lt;br /&gt;
&lt;br /&gt;
Beispielhafte Konfiguration:&lt;br /&gt;
&lt;br /&gt;
 default:&lt;br /&gt;
    email_delivery:&lt;br /&gt;
      delivery_method: :smtp&lt;br /&gt;
      smtp_settings:&lt;br /&gt;
        address: localhost&lt;br /&gt;
        port: 25&lt;br /&gt;
        domain: example.org&lt;br /&gt;
    attachments_storage_path: /home/pacs/xyz00/users/rails/attach&lt;br /&gt;
&lt;br /&gt;
=== Datenbankschema ===&lt;br /&gt;
&lt;br /&gt;
Initialisieren und migrieren der Datenbank (je nach Rails-Anwendung).&lt;br /&gt;
&lt;br /&gt;
 cd ~/rails&lt;br /&gt;
 ...&lt;br /&gt;
 rake ...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Konfiguration von FastCGI ===&lt;br /&gt;
&lt;br /&gt;
~/doms/rails.example.org/htdocs/.htaccess&lt;br /&gt;
&lt;br /&gt;
 RewriteEngine On&lt;br /&gt;
 RewriteRule ^$ index.html [QSA]&lt;br /&gt;
 RewriteRule ^([^.]+)$ $1.html [QSA]&lt;br /&gt;
 RewriteCond %{REQUEST_FILENAME} !-f [OR]&lt;br /&gt;
 RewriteCond %{REQUEST_FILENAME} dispatch.fcgi$&lt;br /&gt;
 RewriteRule ^(.*)$ /fastcgi-bin/dispatch.fcgi [QSA,L]&lt;br /&gt;
&lt;br /&gt;
Ältere Versionen von Rails, die noch nicht auf der &amp;quot;rack&amp;quot; Middleware aufbauen (wie obiges zena Beispiel), laufen mit folgender ~/doms/www.example.org/fastcgi/dispatch.fcgi&lt;br /&gt;
&lt;br /&gt;
 #!/usr/bin/env ruby&lt;br /&gt;
 require &amp;quot;/home/pacs/xyz00/users/meinuser/rails/config/environment&amp;quot; &lt;br /&gt;
 require &#039;fcgi_handler&#039;&lt;br /&gt;
 RailsFCGIHandler.process!&lt;br /&gt;
&lt;br /&gt;
Für aktuelle Versionen von Rails, die auf &amp;quot;rack&amp;quot; aufbauen, siehe https://github.com/dre3k/rails3_fcgi, ~/doms/www.example.org/fastcgi/dispatch.fcgi&lt;br /&gt;
  #!/usr/bin/env ruby&lt;br /&gt;
 &lt;br /&gt;
 require_relative &#039;../config/environment&#039;&lt;br /&gt;
 &lt;br /&gt;
 class Rack::PathInfoRewriter&lt;br /&gt;
   def initialize(app)&lt;br /&gt;
     @app = app&lt;br /&gt;
   end&lt;br /&gt;
 &lt;br /&gt;
   def call(env)&lt;br /&gt;
     env.delete(&#039;SCRIPT_NAME&#039;)&lt;br /&gt;
     parts = env[&#039;REQUEST_URI&#039;].split(&#039;?&#039;)&lt;br /&gt;
     env[&#039;PATH_INFO&#039;] = parts[0]&lt;br /&gt;
     env[&#039;QUERY_STRING&#039;] = parts[1].to_s&lt;br /&gt;
     @app.call(env)&lt;br /&gt;
   end&lt;br /&gt;
 end&lt;br /&gt;
 &lt;br /&gt;
 Rack::Handler::FastCGI.run  Rack::PathInfoRewriter.new(HIER_APPLIKATIONSNAME_AUS_config/application.rb_EINTRAGEN::Application)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
FastCGI-Skript ausführbar machen:&lt;br /&gt;
&lt;br /&gt;
 chmod 755 ~/doms/rails.example.org/fastcgi/dispatch.fcgi&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Am Anfang von ~/rails/config/environment.rb einfügen:&lt;br /&gt;
&lt;br /&gt;
 ENV[&#039;RAILS_ENV&#039;] ||= &#039;production&#039;&lt;br /&gt;
 ENV[&#039;GEM_PATH&#039;] ||= &#039;/home/pacs/xyz00/users/meinuser/.gem/ruby/1.8:/var/lib/gems/1.8&#039;&lt;br /&gt;
Evtl. könnten diese Einstellungen auch ohne eine Modifikation der Anwendung erfolgen, indem die Umgebungsvariablen in der .htaccess gesetzt werden (z.B. &amp;quot;SetEnv RAILS_ENV production&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
Die Applikation ins Webroot einbinden:&lt;br /&gt;
&lt;br /&gt;
 # ggf. vorhandene Dateien sichern (oder nach ~/rails/public kopieren)&lt;br /&gt;
 mv ~/doms/rails.example.org/htdocs ~/doms/rails.example.org/htdocs.old&lt;br /&gt;
 # Das rails/public Verzeichnis ins Webroot verlinken.&lt;br /&gt;
 ln -s ~/rails/public ~/doms/rails.example.org/htdocs&lt;br /&gt;
&lt;br /&gt;
=== Konfiguration von SSL ===&lt;br /&gt;
&lt;br /&gt;
Die Verzeichnisse ~/doms/rails.example.org/fastcgi-ssl/ und ~/doms/rail.example.org/htdocs-ssl/ werden analog zu bzw. anstelle von fastcgi und htdocs gefüllt.&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:HSDoku]]&lt;br /&gt;
[[Kategorie:Installationsanleitungen]]&lt;br /&gt;
[[Kategorie:Software]]&lt;br /&gt;
[[Kategorie:Glossar]]&lt;/div&gt;</summary>
		<author><name>Srv00-wiki</name></author>
	</entry>
	<entry>
		<id>https://wiki.hostsharing.net/index.php?title=RubyOnRails&amp;diff=3452</id>
		<title>RubyOnRails</title>
		<link rel="alternate" type="text/html" href="https://wiki.hostsharing.net/index.php?title=RubyOnRails&amp;diff=3452"/>
		<updated>2012-08-29T19:28:05Z</updated>

		<summary type="html">&lt;p&gt;Srv00-wiki: /* Bestes Ruby on Rails Hosting bei Hostsharing */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Bestes Ruby on Rails Hosting bei Hostsharing ==&lt;br /&gt;
&lt;br /&gt;
Rubyanwendungen laufen (wie alle Anwendungen bei Hostsharing) als Prozesse des jeweiligen Benutzersaccounts. Probleme mit Dateirechten und Sicherheitsrisiken, wie sie sonst bei der Ausführung durch den Webserver auftreten, sind so von vorne herein ausgeschlossen.&lt;br /&gt;
&lt;br /&gt;
Standardmäßig erfolgt der Aufruf von Ruby Anwendungen durch den Apache Webserver über die FastCGI Schnittstelle. Dieser hält dabei nach einem Aufruf die Ruby Application Server Instanz des Users noch für einige Zeit bereit, die dann sofort zur Bearbeitung von weiteren noch nicht gecacheten, oder gar nicht cachebaren, Anfragen zur Verfügung steht.&lt;br /&gt;
&lt;br /&gt;
Für den Betrieb von noch anspruchsvolleren Anwendungen haben wir auch Tools wie haproxy, varnish, nginx etc. installiert. Wir können auch mod_passenger (mod_wsgi haben wir schon) oder mongrel oder Green Unicorn (gunicorn) installieren. Anwender, die damit auf unserer leistungsfähigen Infrastruktur (managed Plattform) z.B. einen Webserver Cluster mit load-balancing realisieren möchten, brauchen bei uns dafür nur eigene Daemons buchen, können dies aber auch (für größere Projekte) mit einer beliebigen Anzahl ganzer Server realisieren.&lt;br /&gt;
&lt;br /&gt;
== Einrichtung ohne zusätzliche Daemons (ein Application Server) ==&lt;br /&gt;
&lt;br /&gt;
=== Vorbereitungen ===&lt;br /&gt;
&lt;br /&gt;
Einige Einstellungen für den Paketuser.&lt;br /&gt;
&lt;br /&gt;
~/.gemrc&lt;br /&gt;
 install: --no-rdoc --no-ri&lt;br /&gt;
 update:  --no-rdoc --no-ri&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
~/.bashrc&lt;br /&gt;
 alias gem=&amp;quot;nice -n19 gem&amp;quot;&lt;br /&gt;
&lt;br /&gt;
~/.profile&lt;br /&gt;
 source &amp;quot;$HOME/.bashrc&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== Ruby ===&lt;br /&gt;
&lt;br /&gt;
==== Vorinstalliert ====&lt;br /&gt;
&lt;br /&gt;
Soll nur die zentral installierte Ruby Version verwendet werden, ergänzt man man die ~/.profile:&lt;br /&gt;
 # enable user&#039;s own ruby installations, keeping all stuff below $HOME/.gem&lt;br /&gt;
 export PATH=&amp;quot;$HOME/bin:$HOME/.gem/ruby/1.8/bin:$PATH&amp;quot;&lt;br /&gt;
 export GEM_PATH=&amp;quot;$( gem env gempath )&amp;quot;&lt;br /&gt;
 export GEM_HOME=&amp;quot;$HOME/.gem/ruby/1.8&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 # Disabled for now, because using system libs caused undefined method error.&lt;br /&gt;
 #export RUBYLIB=&amp;quot;$HOME/.gem/ruby/1.8/lib:/usr/local/lib/site_ruby/1.8:/usr/lib/ruby/1.8&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 # avoid to forget that extra parameter: ruby -rubygems prog_that_uses_gems&lt;br /&gt;
 export RUBYOPT=rubygems&lt;br /&gt;
 &lt;br /&gt;
 export RAILS_ENV=production&lt;br /&gt;
&lt;br /&gt;
==== Eigene Installation ====&lt;br /&gt;
&lt;br /&gt;
Um eine andere als die vorinstallierte Ruby Version zu verwenden, installiert man zunächst den Ruby Versions Manager (rvm),&lt;br /&gt;
 curl -L https://get.rvm.io | bash -s stable&lt;br /&gt;
 source ~/.rvm/scripts/rvm&lt;br /&gt;
 rvm notes&lt;br /&gt;
 rvm requirements&lt;br /&gt;
 rvm pkg install openssl&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
und lässt dann die gewünschte Ruby Version installieren.&lt;br /&gt;
 rvm install x.y.z&lt;br /&gt;
&lt;br /&gt;
RVM passt die Umgebungsvariablen automatisch an die ausgewählt Version an. Die Version wählt man global per&lt;br /&gt;
 rvm use x.y.z --default&lt;br /&gt;
oder nur für ein spezielles Verzeichnis:&lt;br /&gt;
 cd ~/verzeichnis/mit/ruby-x.y.z-Anwendung&lt;br /&gt;
 rvm use x.y.z-p??? --rvmrc&lt;br /&gt;
&lt;br /&gt;
Zur Verwaltung von gems installiert man noch rubygems.&lt;br /&gt;
 rvm rubygems current&lt;br /&gt;
&lt;br /&gt;
=== Rails ===&lt;br /&gt;
&lt;br /&gt;
Nun kann Rails per &amp;quot;gem install rails&amp;quot; installiert werden (inklusive Abhängigkeiten).&lt;br /&gt;
Um spezielle versionen zu installieren kann man den gem Befehl mit &amp;quot;-v=x.y.z&amp;quot; ergänzen.&lt;br /&gt;
&lt;br /&gt;
Zum Testen hier ein Beispiel das auch noch ein fertiges CMS installiert (http://zenadmin.org), und dieses mit einer eifachen sqlite Datenbankdatei einrichtet:&lt;br /&gt;
 gem install rails -v=2.3.11&lt;br /&gt;
 gem install i18n sexp_processor sqlite3 zena&lt;br /&gt;
 zena new ~/rails      # Zena Rails-Anwendung anlegen.&lt;br /&gt;
 cd ~/zena-test&lt;br /&gt;
 rake db:create        # Datenbank anlegen.&lt;br /&gt;
 zena migrate          # Datenbank Tabellen einrichten.&lt;br /&gt;
 zena mksite LANG=en RAILS_ENV=production PASSWORD=geheim HOST=rails.example.org # Webseite anlegen.&lt;br /&gt;
&lt;br /&gt;
=== Rails-Anwendung ===&lt;br /&gt;
&lt;br /&gt;
Seine eigene Rails-Anwendung kopiert man z.B. nach ~/rails, oder erstellt dort eine Neue (rails ~/rails, ...).&lt;br /&gt;
&lt;br /&gt;
=== Datenbank ===&lt;br /&gt;
&lt;br /&gt;
Mit &#039;&#039;hsadmin&#039;&#039; beispielsweise einen Postgres-User (z.B. &#039;xyz00_rails&#039;, Passwort sei &#039;geheim&#039;) sowie eine Datenbank anlegen (z.B. &#039;xyz00_rails&#039;.&lt;br /&gt;
&lt;br /&gt;
Die Datenbank in der Anwendung konfigurieren,&lt;br /&gt;
&lt;br /&gt;
 cd ~/rails/config/&lt;br /&gt;
 nano database.yml&lt;br /&gt;
&lt;br /&gt;
mit folgendem Inhalt:&lt;br /&gt;
&lt;br /&gt;
 production:&lt;br /&gt;
    adapter: postgresql&lt;br /&gt;
    database: xyz00_rails&lt;br /&gt;
    host: localhost&lt;br /&gt;
    username: xyz00_rails&lt;br /&gt;
    password: geheim&lt;br /&gt;
&lt;br /&gt;
=== E-Mail, Dateiablage ===&lt;br /&gt;
&lt;br /&gt;
Beispielhafte Konfiguration:&lt;br /&gt;
&lt;br /&gt;
 default:&lt;br /&gt;
    email_delivery:&lt;br /&gt;
      delivery_method: :smtp&lt;br /&gt;
      smtp_settings:&lt;br /&gt;
        address: localhost&lt;br /&gt;
        port: 25&lt;br /&gt;
        domain: example.org&lt;br /&gt;
    attachments_storage_path: /home/pacs/xyz00/users/rails/attach&lt;br /&gt;
&lt;br /&gt;
=== Datenbankschema ===&lt;br /&gt;
&lt;br /&gt;
Initialisieren und migrieren der Datenbank (je nach Rails-Anwendung).&lt;br /&gt;
&lt;br /&gt;
 cd ~/rails&lt;br /&gt;
 ...&lt;br /&gt;
 rake ...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Konfiguration von FastCGI ===&lt;br /&gt;
&lt;br /&gt;
~/doms/rails.example.org/htdocs/.htaccess&lt;br /&gt;
&lt;br /&gt;
 RewriteEngine On&lt;br /&gt;
 RewriteRule ^$ index.html [QSA]&lt;br /&gt;
 RewriteRule ^([^.]+)$ $1.html [QSA]&lt;br /&gt;
 RewriteCond %{REQUEST_FILENAME} !-f [OR]&lt;br /&gt;
 RewriteCond %{REQUEST_FILENAME} dispatch.fcgi$&lt;br /&gt;
 RewriteRule ^(.*)$ /fastcgi-bin/dispatch.fcgi [QSA,L]&lt;br /&gt;
&lt;br /&gt;
Ältere Versionen von Rails, die noch nicht auf der &amp;quot;rack&amp;quot; Middleware aufbauen (wie obiges zena Beispiel), laufen mit folgender ~/doms/www.example.org/fastcgi/dispatch.fcgi&lt;br /&gt;
&lt;br /&gt;
 #!/usr/bin/env ruby&lt;br /&gt;
 require &amp;quot;/home/pacs/xyz00/users/meinuser/rails/config/environment&amp;quot; &lt;br /&gt;
 require &#039;fcgi_handler&#039;&lt;br /&gt;
 RailsFCGIHandler.process!&lt;br /&gt;
&lt;br /&gt;
Für aktuelle Versionen von Rails, die auf &amp;quot;rack&amp;quot; aufbauen, siehe https://github.com/dre3k/rails3_fcgi, ~/doms/www.example.org/fastcgi/dispatch.fcgi&lt;br /&gt;
  #!/usr/bin/env ruby&lt;br /&gt;
 &lt;br /&gt;
 require_relative &#039;../config/environment&#039;&lt;br /&gt;
 &lt;br /&gt;
 class Rack::PathInfoRewriter&lt;br /&gt;
   def initialize(app)&lt;br /&gt;
     @app = app&lt;br /&gt;
   end&lt;br /&gt;
 &lt;br /&gt;
   def call(env)&lt;br /&gt;
     env.delete(&#039;SCRIPT_NAME&#039;)&lt;br /&gt;
     parts = env[&#039;REQUEST_URI&#039;].split(&#039;?&#039;)&lt;br /&gt;
     env[&#039;PATH_INFO&#039;] = parts[0]&lt;br /&gt;
     env[&#039;QUERY_STRING&#039;] = parts[1].to_s&lt;br /&gt;
     @app.call(env)&lt;br /&gt;
   end&lt;br /&gt;
 end&lt;br /&gt;
 &lt;br /&gt;
 Rack::Handler::FastCGI.run  Rack::PathInfoRewriter.new(HIER_APPLIKATIONSNAME_AUS_config/application.rb_EINTRAGEN::Application)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
FastCGI-Skript ausführbar machen:&lt;br /&gt;
&lt;br /&gt;
 chmod 755 ~/doms/rails.example.org/fastcgi/dispatch.fcgi&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Am Anfang von ~/rails/config/environment.rb einfügen:&lt;br /&gt;
&lt;br /&gt;
 ENV[&#039;RAILS_ENV&#039;] ||= &#039;production&#039;&lt;br /&gt;
 ENV[&#039;GEM_PATH&#039;] ||= &#039;/home/pacs/xyz00/users/meinuser/.gem/ruby/1.8:/var/lib/gems/1.8&#039;&lt;br /&gt;
Evtl. könnten diese Einstellungen auch ohne eine Modifikation der Anwendung erfolgen, indem die Umgebungsvariablen in der .htaccess gesetzt werden (z.B. &amp;quot;SetEnv RAILS_ENV production&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
Die Applikation ins Webroot einbinden:&lt;br /&gt;
&lt;br /&gt;
 # ggf. vorhandene Dateien sichern (oder nach ~/rails/public kopieren)&lt;br /&gt;
 mv ~/doms/rails.example.org/htdocs ~/doms/rails.example.org/htdocs.old&lt;br /&gt;
 # Das rails/public Verzeichnis ins Webroot verlinken.&lt;br /&gt;
 ln -s ~/rails/public ~/doms/rails.example.org/htdocs&lt;br /&gt;
&lt;br /&gt;
=== Konfiguration von SSL ===&lt;br /&gt;
&lt;br /&gt;
Die Verzeichnisse ~/doms/rails.example.org/fastcgi-ssl/ und ~/doms/rail.example.org/htdocs-ssl/ werden analog zu bzw. anstelle von fastcgi und htdocs gefüllt.&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:HSDoku]]&lt;br /&gt;
[[Kategorie:Installationsanleitungen]]&lt;br /&gt;
[[Kategorie:Software]]&lt;br /&gt;
[[Kategorie:Glossar]]&lt;/div&gt;</summary>
		<author><name>Srv00-wiki</name></author>
	</entry>
	<entry>
		<id>https://wiki.hostsharing.net/index.php?title=RubyOnRails&amp;diff=3451</id>
		<title>RubyOnRails</title>
		<link rel="alternate" type="text/html" href="https://wiki.hostsharing.net/index.php?title=RubyOnRails&amp;diff=3451"/>
		<updated>2012-08-29T14:26:13Z</updated>

		<summary type="html">&lt;p&gt;Srv00-wiki: /* Konfiguration von FastCGI */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Bestes Ruby on Rails Hosting bei Hostsharing ==&lt;br /&gt;
&lt;br /&gt;
Rubyanwendungen laufen (wie alle Anwendungen bei Hostsharing) als Prozesse des jeweiligen Benutzersaccounts. Probleme mit Dateirechten und Sicherheitsrisiken, wie sie sonst bei der Ausführung durch den Webserver auftreten, sind so von vorne herein ausgeschlossen.&lt;br /&gt;
&lt;br /&gt;
Standardmäßig erfolgt der Aufruf von Ruby Anwendungen durch den Apache Webserver über die FastCGI Schnittstelle. Dabei wird ständig eine Ruby Application Server Instanz des Users bereitgehalten, die somit jederzeit zur Bearbeitung von noch nicht gecacheten, oder gar nicht cachebaren, Anfragen zur Verfügung steht.&lt;br /&gt;
&lt;br /&gt;
Für den Betrieb von noch anspruchsvolleren Anwendungen haben wir auch Tools wie haproxy, varnish, nginx etc. installiert. Wir können auch mod_passenger (mod_wsgi haben wir schon) oder mongrel oder Green Unicorn (gunicorn) installieren. Anwender, die damit auf unserer leistungsfähigen Infrastruktur (managed Plattform) z.B. einen Webserver Cluster mit load-balancing realisieren möchten, brauchen bei uns dafür nur eigene Daemons buchen, können dies aber auch (für größere Projekte) mit einer beliebigen Anzahl ganzer Server realisieren.&lt;br /&gt;
&lt;br /&gt;
== Einrichtung ohne zusätzliche Daemons (ein Application Server) ==&lt;br /&gt;
&lt;br /&gt;
=== Vorbereitungen ===&lt;br /&gt;
&lt;br /&gt;
Einige Einstellungen für den Paketuser.&lt;br /&gt;
&lt;br /&gt;
~/.gemrc&lt;br /&gt;
 install: --no-rdoc --no-ri&lt;br /&gt;
 update:  --no-rdoc --no-ri&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
~/.bashrc&lt;br /&gt;
 alias gem=&amp;quot;nice -n19 gem&amp;quot;&lt;br /&gt;
&lt;br /&gt;
~/.profile&lt;br /&gt;
 source &amp;quot;$HOME/.bashrc&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== Ruby ===&lt;br /&gt;
&lt;br /&gt;
==== Vorinstalliert ====&lt;br /&gt;
&lt;br /&gt;
Soll nur die zentral installierte Ruby Version verwendet werden, ergänzt man man die ~/.profile:&lt;br /&gt;
 # enable user&#039;s own ruby installations, keeping all stuff below $HOME/.gem&lt;br /&gt;
 export PATH=&amp;quot;$HOME/bin:$HOME/.gem/ruby/1.8/bin:$PATH&amp;quot;&lt;br /&gt;
 export GEM_PATH=&amp;quot;$( gem env gempath )&amp;quot;&lt;br /&gt;
 export GEM_HOME=&amp;quot;$HOME/.gem/ruby/1.8&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 # Disabled for now, because using system libs caused undefined method error.&lt;br /&gt;
 #export RUBYLIB=&amp;quot;$HOME/.gem/ruby/1.8/lib:/usr/local/lib/site_ruby/1.8:/usr/lib/ruby/1.8&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 # avoid to forget that extra parameter: ruby -rubygems prog_that_uses_gems&lt;br /&gt;
 export RUBYOPT=rubygems&lt;br /&gt;
 &lt;br /&gt;
 export RAILS_ENV=production&lt;br /&gt;
&lt;br /&gt;
==== Eigene Installation ====&lt;br /&gt;
&lt;br /&gt;
Um eine andere als die vorinstallierte Ruby Version zu verwenden, installiert man zunächst den Ruby Versions Manager (rvm),&lt;br /&gt;
 curl -L https://get.rvm.io | bash -s stable&lt;br /&gt;
 source ~/.rvm/scripts/rvm&lt;br /&gt;
 rvm notes&lt;br /&gt;
 rvm requirements&lt;br /&gt;
 rvm pkg install openssl&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
und lässt dann die gewünschte Ruby Version installieren.&lt;br /&gt;
 rvm install x.y.z&lt;br /&gt;
&lt;br /&gt;
RVM passt die Umgebungsvariablen automatisch an die ausgewählt Version an. Die Version wählt man global per&lt;br /&gt;
 rvm use x.y.z --default&lt;br /&gt;
oder nur für ein spezielles Verzeichnis:&lt;br /&gt;
 cd ~/verzeichnis/mit/ruby-x.y.z-Anwendung&lt;br /&gt;
 rvm use x.y.z-p??? --rvmrc&lt;br /&gt;
&lt;br /&gt;
Zur Verwaltung von gems installiert man noch rubygems.&lt;br /&gt;
 rvm rubygems current&lt;br /&gt;
&lt;br /&gt;
=== Rails ===&lt;br /&gt;
&lt;br /&gt;
Nun kann Rails per &amp;quot;gem install rails&amp;quot; installiert werden (inklusive Abhängigkeiten).&lt;br /&gt;
Um spezielle versionen zu installieren kann man den gem Befehl mit &amp;quot;-v=x.y.z&amp;quot; ergänzen.&lt;br /&gt;
&lt;br /&gt;
Zum Testen hier ein Beispiel das auch noch ein fertiges CMS installiert (http://zenadmin.org), und dieses mit einer eifachen sqlite Datenbankdatei einrichtet:&lt;br /&gt;
 gem install rails -v=2.3.11&lt;br /&gt;
 gem install i18n sexp_processor sqlite3 zena&lt;br /&gt;
 zena new ~/rails      # Zena Rails-Anwendung anlegen.&lt;br /&gt;
 cd ~/zena-test&lt;br /&gt;
 rake db:create        # Datenbank anlegen.&lt;br /&gt;
 zena migrate          # Datenbank Tabellen einrichten.&lt;br /&gt;
 zena mksite LANG=en RAILS_ENV=production PASSWORD=geheim HOST=rails.example.org # Webseite anlegen.&lt;br /&gt;
&lt;br /&gt;
=== Rails-Anwendung ===&lt;br /&gt;
&lt;br /&gt;
Seine eigene Rails-Anwendung kopiert man z.B. nach ~/rails, oder erstellt dort eine Neue (rails ~/rails, ...).&lt;br /&gt;
&lt;br /&gt;
=== Datenbank ===&lt;br /&gt;
&lt;br /&gt;
Mit &#039;&#039;hsadmin&#039;&#039; beispielsweise einen Postgres-User (z.B. &#039;xyz00_rails&#039;, Passwort sei &#039;geheim&#039;) sowie eine Datenbank anlegen (z.B. &#039;xyz00_rails&#039;.&lt;br /&gt;
&lt;br /&gt;
Die Datenbank in der Anwendung konfigurieren,&lt;br /&gt;
&lt;br /&gt;
 cd ~/rails/config/&lt;br /&gt;
 nano database.yml&lt;br /&gt;
&lt;br /&gt;
mit folgendem Inhalt:&lt;br /&gt;
&lt;br /&gt;
 production:&lt;br /&gt;
    adapter: postgresql&lt;br /&gt;
    database: xyz00_rails&lt;br /&gt;
    host: localhost&lt;br /&gt;
    username: xyz00_rails&lt;br /&gt;
    password: geheim&lt;br /&gt;
&lt;br /&gt;
=== E-Mail, Dateiablage ===&lt;br /&gt;
&lt;br /&gt;
Beispielhafte Konfiguration:&lt;br /&gt;
&lt;br /&gt;
 default:&lt;br /&gt;
    email_delivery:&lt;br /&gt;
      delivery_method: :smtp&lt;br /&gt;
      smtp_settings:&lt;br /&gt;
        address: localhost&lt;br /&gt;
        port: 25&lt;br /&gt;
        domain: example.org&lt;br /&gt;
    attachments_storage_path: /home/pacs/xyz00/users/rails/attach&lt;br /&gt;
&lt;br /&gt;
=== Datenbankschema ===&lt;br /&gt;
&lt;br /&gt;
Initialisieren und migrieren der Datenbank (je nach Rails-Anwendung).&lt;br /&gt;
&lt;br /&gt;
 cd ~/rails&lt;br /&gt;
 ...&lt;br /&gt;
 rake ...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Konfiguration von FastCGI ===&lt;br /&gt;
&lt;br /&gt;
~/doms/rails.example.org/htdocs/.htaccess&lt;br /&gt;
&lt;br /&gt;
 RewriteEngine On&lt;br /&gt;
 RewriteRule ^$ index.html [QSA]&lt;br /&gt;
 RewriteRule ^([^.]+)$ $1.html [QSA]&lt;br /&gt;
 RewriteCond %{REQUEST_FILENAME} !-f [OR]&lt;br /&gt;
 RewriteCond %{REQUEST_FILENAME} dispatch.fcgi$&lt;br /&gt;
 RewriteRule ^(.*)$ /fastcgi-bin/dispatch.fcgi [QSA,L]&lt;br /&gt;
&lt;br /&gt;
Ältere Versionen von Rails, die noch nicht auf der &amp;quot;rack&amp;quot; Middleware aufbauen (wie obiges zena Beispiel), laufen mit folgender ~/doms/www.example.org/fastcgi/dispatch.fcgi&lt;br /&gt;
&lt;br /&gt;
 #!/usr/bin/env ruby&lt;br /&gt;
 require &amp;quot;/home/pacs/xyz00/users/meinuser/rails/config/environment&amp;quot; &lt;br /&gt;
 require &#039;fcgi_handler&#039;&lt;br /&gt;
 RailsFCGIHandler.process!&lt;br /&gt;
&lt;br /&gt;
Für aktuelle Versionen von Rails, die auf &amp;quot;rack&amp;quot; aufbauen, siehe https://github.com/dre3k/rails3_fcgi, ~/doms/www.example.org/fastcgi/dispatch.fcgi&lt;br /&gt;
  #!/usr/bin/env ruby&lt;br /&gt;
 &lt;br /&gt;
 require_relative &#039;../config/environment&#039;&lt;br /&gt;
 &lt;br /&gt;
 class Rack::PathInfoRewriter&lt;br /&gt;
   def initialize(app)&lt;br /&gt;
     @app = app&lt;br /&gt;
   end&lt;br /&gt;
 &lt;br /&gt;
   def call(env)&lt;br /&gt;
     env.delete(&#039;SCRIPT_NAME&#039;)&lt;br /&gt;
     parts = env[&#039;REQUEST_URI&#039;].split(&#039;?&#039;)&lt;br /&gt;
     env[&#039;PATH_INFO&#039;] = parts[0]&lt;br /&gt;
     env[&#039;QUERY_STRING&#039;] = parts[1].to_s&lt;br /&gt;
     @app.call(env)&lt;br /&gt;
   end&lt;br /&gt;
 end&lt;br /&gt;
 &lt;br /&gt;
 Rack::Handler::FastCGI.run  Rack::PathInfoRewriter.new(HIER_APPLIKATIONSNAME_AUS_config/application.rb_EINTRAGEN::Application)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
FastCGI-Skript ausführbar machen:&lt;br /&gt;
&lt;br /&gt;
 chmod 755 ~/doms/rails.example.org/fastcgi/dispatch.fcgi&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Am Anfang von ~/rails/config/environment.rb einfügen:&lt;br /&gt;
&lt;br /&gt;
 ENV[&#039;RAILS_ENV&#039;] ||= &#039;production&#039;&lt;br /&gt;
 ENV[&#039;GEM_PATH&#039;] ||= &#039;/home/pacs/xyz00/users/meinuser/.gem/ruby/1.8:/var/lib/gems/1.8&#039;&lt;br /&gt;
Evtl. könnten diese Einstellungen auch ohne eine Modifikation der Anwendung erfolgen, indem die Umgebungsvariablen in der .htaccess gesetzt werden (z.B. &amp;quot;SetEnv RAILS_ENV production&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
Die Applikation ins Webroot einbinden:&lt;br /&gt;
&lt;br /&gt;
 # ggf. vorhandene Dateien sichern (oder nach ~/rails/public kopieren)&lt;br /&gt;
 mv ~/doms/rails.example.org/htdocs ~/doms/rails.example.org/htdocs.old&lt;br /&gt;
 # Das rails/public Verzeichnis ins Webroot verlinken.&lt;br /&gt;
 ln -s ~/rails/public ~/doms/rails.example.org/htdocs&lt;br /&gt;
&lt;br /&gt;
=== Konfiguration von SSL ===&lt;br /&gt;
&lt;br /&gt;
Die Verzeichnisse ~/doms/rails.example.org/fastcgi-ssl/ und ~/doms/rail.example.org/htdocs-ssl/ werden analog zu bzw. anstelle von fastcgi und htdocs gefüllt.&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:HSDoku]]&lt;br /&gt;
[[Kategorie:Installationsanleitungen]]&lt;br /&gt;
[[Kategorie:Software]]&lt;br /&gt;
[[Kategorie:Glossar]]&lt;/div&gt;</summary>
		<author><name>Srv00-wiki</name></author>
	</entry>
	<entry>
		<id>https://wiki.hostsharing.net/index.php?title=RubyOnRails&amp;diff=3450</id>
		<title>RubyOnRails</title>
		<link rel="alternate" type="text/html" href="https://wiki.hostsharing.net/index.php?title=RubyOnRails&amp;diff=3450"/>
		<updated>2012-08-29T14:20:14Z</updated>

		<summary type="html">&lt;p&gt;Srv00-wiki: /* Konfiguration von FastCGI */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Bestes Ruby on Rails Hosting bei Hostsharing ==&lt;br /&gt;
&lt;br /&gt;
Rubyanwendungen laufen (wie alle Anwendungen bei Hostsharing) als Prozesse des jeweiligen Benutzersaccounts. Probleme mit Dateirechten und Sicherheitsrisiken, wie sie sonst bei der Ausführung durch den Webserver auftreten, sind so von vorne herein ausgeschlossen.&lt;br /&gt;
&lt;br /&gt;
Standardmäßig erfolgt der Aufruf von Ruby Anwendungen durch den Apache Webserver über die FastCGI Schnittstelle. Dabei wird ständig eine Ruby Application Server Instanz des Users bereitgehalten, die somit jederzeit zur Bearbeitung von noch nicht gecacheten, oder gar nicht cachebaren, Anfragen zur Verfügung steht.&lt;br /&gt;
&lt;br /&gt;
Für den Betrieb von noch anspruchsvolleren Anwendungen haben wir auch Tools wie haproxy, varnish, nginx etc. installiert. Wir können auch mod_passenger (mod_wsgi haben wir schon) oder mongrel oder Green Unicorn (gunicorn) installieren. Anwender, die damit auf unserer leistungsfähigen Infrastruktur (managed Plattform) z.B. einen Webserver Cluster mit load-balancing realisieren möchten, brauchen bei uns dafür nur eigene Daemons buchen, können dies aber auch (für größere Projekte) mit einer beliebigen Anzahl ganzer Server realisieren.&lt;br /&gt;
&lt;br /&gt;
== Einrichtung ohne zusätzliche Daemons (ein Application Server) ==&lt;br /&gt;
&lt;br /&gt;
=== Vorbereitungen ===&lt;br /&gt;
&lt;br /&gt;
Einige Einstellungen für den Paketuser.&lt;br /&gt;
&lt;br /&gt;
~/.gemrc&lt;br /&gt;
 install: --no-rdoc --no-ri&lt;br /&gt;
 update:  --no-rdoc --no-ri&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
~/.bashrc&lt;br /&gt;
 alias gem=&amp;quot;nice -n19 gem&amp;quot;&lt;br /&gt;
&lt;br /&gt;
~/.profile&lt;br /&gt;
 source &amp;quot;$HOME/.bashrc&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== Ruby ===&lt;br /&gt;
&lt;br /&gt;
==== Vorinstalliert ====&lt;br /&gt;
&lt;br /&gt;
Soll nur die zentral installierte Ruby Version verwendet werden, ergänzt man man die ~/.profile:&lt;br /&gt;
 # enable user&#039;s own ruby installations, keeping all stuff below $HOME/.gem&lt;br /&gt;
 export PATH=&amp;quot;$HOME/bin:$HOME/.gem/ruby/1.8/bin:$PATH&amp;quot;&lt;br /&gt;
 export GEM_PATH=&amp;quot;$( gem env gempath )&amp;quot;&lt;br /&gt;
 export GEM_HOME=&amp;quot;$HOME/.gem/ruby/1.8&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 # Disabled for now, because using system libs caused undefined method error.&lt;br /&gt;
 #export RUBYLIB=&amp;quot;$HOME/.gem/ruby/1.8/lib:/usr/local/lib/site_ruby/1.8:/usr/lib/ruby/1.8&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 # avoid to forget that extra parameter: ruby -rubygems prog_that_uses_gems&lt;br /&gt;
 export RUBYOPT=rubygems&lt;br /&gt;
 &lt;br /&gt;
 export RAILS_ENV=production&lt;br /&gt;
&lt;br /&gt;
==== Eigene Installation ====&lt;br /&gt;
&lt;br /&gt;
Um eine andere als die vorinstallierte Ruby Version zu verwenden, installiert man zunächst den Ruby Versions Manager (rvm),&lt;br /&gt;
 curl -L https://get.rvm.io | bash -s stable&lt;br /&gt;
 source ~/.rvm/scripts/rvm&lt;br /&gt;
 rvm notes&lt;br /&gt;
 rvm requirements&lt;br /&gt;
 rvm pkg install openssl&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
und lässt dann die gewünschte Ruby Version installieren.&lt;br /&gt;
 rvm install x.y.z&lt;br /&gt;
&lt;br /&gt;
RVM passt die Umgebungsvariablen automatisch an die ausgewählt Version an. Die Version wählt man global per&lt;br /&gt;
 rvm use x.y.z --default&lt;br /&gt;
oder nur für ein spezielles Verzeichnis:&lt;br /&gt;
 cd ~/verzeichnis/mit/ruby-x.y.z-Anwendung&lt;br /&gt;
 rvm use x.y.z-p??? --rvmrc&lt;br /&gt;
&lt;br /&gt;
Zur Verwaltung von gems installiert man noch rubygems.&lt;br /&gt;
 rvm rubygems current&lt;br /&gt;
&lt;br /&gt;
=== Rails ===&lt;br /&gt;
&lt;br /&gt;
Nun kann Rails per &amp;quot;gem install rails&amp;quot; installiert werden (inklusive Abhängigkeiten).&lt;br /&gt;
Um spezielle versionen zu installieren kann man den gem Befehl mit &amp;quot;-v=x.y.z&amp;quot; ergänzen.&lt;br /&gt;
&lt;br /&gt;
Zum Testen hier ein Beispiel das auch noch ein fertiges CMS installiert (http://zenadmin.org), und dieses mit einer eifachen sqlite Datenbankdatei einrichtet:&lt;br /&gt;
 gem install rails -v=2.3.11&lt;br /&gt;
 gem install i18n sexp_processor sqlite3 zena&lt;br /&gt;
 zena new ~/rails      # Zena Rails-Anwendung anlegen.&lt;br /&gt;
 cd ~/zena-test&lt;br /&gt;
 rake db:create        # Datenbank anlegen.&lt;br /&gt;
 zena migrate          # Datenbank Tabellen einrichten.&lt;br /&gt;
 zena mksite LANG=en RAILS_ENV=production PASSWORD=geheim HOST=rails.example.org # Webseite anlegen.&lt;br /&gt;
&lt;br /&gt;
=== Rails-Anwendung ===&lt;br /&gt;
&lt;br /&gt;
Seine eigene Rails-Anwendung kopiert man z.B. nach ~/rails, oder erstellt dort eine Neue (rails ~/rails, ...).&lt;br /&gt;
&lt;br /&gt;
=== Datenbank ===&lt;br /&gt;
&lt;br /&gt;
Mit &#039;&#039;hsadmin&#039;&#039; beispielsweise einen Postgres-User (z.B. &#039;xyz00_rails&#039;, Passwort sei &#039;geheim&#039;) sowie eine Datenbank anlegen (z.B. &#039;xyz00_rails&#039;.&lt;br /&gt;
&lt;br /&gt;
Die Datenbank in der Anwendung konfigurieren,&lt;br /&gt;
&lt;br /&gt;
 cd ~/rails/config/&lt;br /&gt;
 nano database.yml&lt;br /&gt;
&lt;br /&gt;
mit folgendem Inhalt:&lt;br /&gt;
&lt;br /&gt;
 production:&lt;br /&gt;
    adapter: postgresql&lt;br /&gt;
    database: xyz00_rails&lt;br /&gt;
    host: localhost&lt;br /&gt;
    username: xyz00_rails&lt;br /&gt;
    password: geheim&lt;br /&gt;
&lt;br /&gt;
=== E-Mail, Dateiablage ===&lt;br /&gt;
&lt;br /&gt;
Beispielhafte Konfiguration:&lt;br /&gt;
&lt;br /&gt;
 default:&lt;br /&gt;
    email_delivery:&lt;br /&gt;
      delivery_method: :smtp&lt;br /&gt;
      smtp_settings:&lt;br /&gt;
        address: localhost&lt;br /&gt;
        port: 25&lt;br /&gt;
        domain: example.org&lt;br /&gt;
    attachments_storage_path: /home/pacs/xyz00/users/rails/attach&lt;br /&gt;
&lt;br /&gt;
=== Datenbankschema ===&lt;br /&gt;
&lt;br /&gt;
Initialisieren und migrieren der Datenbank (je nach Rails-Anwendung).&lt;br /&gt;
&lt;br /&gt;
 cd ~/rails&lt;br /&gt;
 ...&lt;br /&gt;
 rake ...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Konfiguration von FastCGI ===&lt;br /&gt;
&lt;br /&gt;
~/doms/rails.example.org/htdocs/.htaccess&lt;br /&gt;
&lt;br /&gt;
 RewriteEngine On&lt;br /&gt;
 RewriteRule ^$ index.html [QSA]&lt;br /&gt;
 RewriteRule ^([^.]+)$ $1.html [QSA]&lt;br /&gt;
 RewriteCond %{REQUEST_FILENAME} !-f [OR]&lt;br /&gt;
 RewriteCond %{REQUEST_FILENAME} dispatch.fcgi$&lt;br /&gt;
 RewriteRule ^(.*)$ /fastcgi-bin/dispatch.fcgi [QSA,L]&lt;br /&gt;
&lt;br /&gt;
Ältere Versionen von Rails, die noch nicht auf der &amp;quot;rack&amp;quot; Middleware aufbauen, laufen mit folgender ~/doms/www.example.org/fastcgi/dispatch.fcgi&lt;br /&gt;
&lt;br /&gt;
 #!/usr/bin/env ruby&lt;br /&gt;
 require &amp;quot;/home/pacs/xyz00/users/meinuser/rails/config/environment&amp;quot; &lt;br /&gt;
 require &#039;fcgi_handler&#039;&lt;br /&gt;
 RailsFCGIHandler.process!&lt;br /&gt;
&lt;br /&gt;
Für aktuelle Versionen von Rails, die auf &amp;quot;rack&amp;quot; aufbauen, siehe https://github.com/dre3k/rails3_fcgi, ~/doms/www.example.org/fastcgi/dispatch.fcgi&lt;br /&gt;
  #!/usr/bin/env ruby&lt;br /&gt;
 &lt;br /&gt;
 require_relative &#039;../config/environment&#039;&lt;br /&gt;
 &lt;br /&gt;
 class Rack::PathInfoRewriter&lt;br /&gt;
   def initialize(app)&lt;br /&gt;
     @app = app&lt;br /&gt;
   end&lt;br /&gt;
 &lt;br /&gt;
   def call(env)&lt;br /&gt;
     env.delete(&#039;SCRIPT_NAME&#039;)&lt;br /&gt;
     parts = env[&#039;REQUEST_URI&#039;].split(&#039;?&#039;)&lt;br /&gt;
     env[&#039;PATH_INFO&#039;] = parts[0]&lt;br /&gt;
     env[&#039;QUERY_STRING&#039;] = parts[1].to_s&lt;br /&gt;
     @app.call(env)&lt;br /&gt;
   end&lt;br /&gt;
 end&lt;br /&gt;
 &lt;br /&gt;
 Rack::Handler::FastCGI.run  Rack::PathInfoRewriter.new(HIER_APPLIKATIONSNAME_AUS_config/application.rb_EINTRAGEN::Application)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
FastCGI-Skript ausführbar machen:&lt;br /&gt;
&lt;br /&gt;
 chmod 755 ~/doms/rails.example.org/fastcgi/dispatch.fcgi&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Am Anfang von ~/rails/config/environment.rb einfügen:&lt;br /&gt;
&lt;br /&gt;
 ENV[&#039;RAILS_ENV&#039;] ||= &#039;production&#039;&lt;br /&gt;
 ENV[&#039;GEM_PATH&#039;] ||= &#039;/home/pacs/xyz00/users/meinuser/.gem/ruby/1.8:/var/lib/gems/1.8&#039;&lt;br /&gt;
Evtl. können diese Einstellungen auch ohne eine Modifikation der Anwendung erfolgen, indem die Umgebungsvariablen in der .htaccess gesetzt werden (z.B. &amp;quot;SetEnv RAILS_ENV production&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
Die Applikation ins Webroot einbinden:&lt;br /&gt;
&lt;br /&gt;
 # ggf. vorhandene Dateien sichern (oder nach ~/rails/public kopieren)&lt;br /&gt;
 mv ~/doms/rails.example.org/htdocs ~/doms/rails.example.org/htdocs.old&lt;br /&gt;
 # Das rails/public Verzeichnis ins Webroot verlinken.&lt;br /&gt;
 ln -s ~/rails/public ~/doms/rails.example.org/htdocs&lt;br /&gt;
&lt;br /&gt;
=== Konfiguration von SSL ===&lt;br /&gt;
&lt;br /&gt;
Die Verzeichnisse ~/doms/rails.example.org/fastcgi-ssl/ und ~/doms/rail.example.org/htdocs-ssl/ werden analog zu bzw. anstelle von fastcgi und htdocs gefüllt.&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:HSDoku]]&lt;br /&gt;
[[Kategorie:Installationsanleitungen]]&lt;br /&gt;
[[Kategorie:Software]]&lt;br /&gt;
[[Kategorie:Glossar]]&lt;/div&gt;</summary>
		<author><name>Srv00-wiki</name></author>
	</entry>
	<entry>
		<id>https://wiki.hostsharing.net/index.php?title=RubyOnRails&amp;diff=3449</id>
		<title>RubyOnRails</title>
		<link rel="alternate" type="text/html" href="https://wiki.hostsharing.net/index.php?title=RubyOnRails&amp;diff=3449"/>
		<updated>2012-08-29T14:18:43Z</updated>

		<summary type="html">&lt;p&gt;Srv00-wiki: /* Rails */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Bestes Ruby on Rails Hosting bei Hostsharing ==&lt;br /&gt;
&lt;br /&gt;
Rubyanwendungen laufen (wie alle Anwendungen bei Hostsharing) als Prozesse des jeweiligen Benutzersaccounts. Probleme mit Dateirechten und Sicherheitsrisiken, wie sie sonst bei der Ausführung durch den Webserver auftreten, sind so von vorne herein ausgeschlossen.&lt;br /&gt;
&lt;br /&gt;
Standardmäßig erfolgt der Aufruf von Ruby Anwendungen durch den Apache Webserver über die FastCGI Schnittstelle. Dabei wird ständig eine Ruby Application Server Instanz des Users bereitgehalten, die somit jederzeit zur Bearbeitung von noch nicht gecacheten, oder gar nicht cachebaren, Anfragen zur Verfügung steht.&lt;br /&gt;
&lt;br /&gt;
Für den Betrieb von noch anspruchsvolleren Anwendungen haben wir auch Tools wie haproxy, varnish, nginx etc. installiert. Wir können auch mod_passenger (mod_wsgi haben wir schon) oder mongrel oder Green Unicorn (gunicorn) installieren. Anwender, die damit auf unserer leistungsfähigen Infrastruktur (managed Plattform) z.B. einen Webserver Cluster mit load-balancing realisieren möchten, brauchen bei uns dafür nur eigene Daemons buchen, können dies aber auch (für größere Projekte) mit einer beliebigen Anzahl ganzer Server realisieren.&lt;br /&gt;
&lt;br /&gt;
== Einrichtung ohne zusätzliche Daemons (ein Application Server) ==&lt;br /&gt;
&lt;br /&gt;
=== Vorbereitungen ===&lt;br /&gt;
&lt;br /&gt;
Einige Einstellungen für den Paketuser.&lt;br /&gt;
&lt;br /&gt;
~/.gemrc&lt;br /&gt;
 install: --no-rdoc --no-ri&lt;br /&gt;
 update:  --no-rdoc --no-ri&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
~/.bashrc&lt;br /&gt;
 alias gem=&amp;quot;nice -n19 gem&amp;quot;&lt;br /&gt;
&lt;br /&gt;
~/.profile&lt;br /&gt;
 source &amp;quot;$HOME/.bashrc&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== Ruby ===&lt;br /&gt;
&lt;br /&gt;
==== Vorinstalliert ====&lt;br /&gt;
&lt;br /&gt;
Soll nur die zentral installierte Ruby Version verwendet werden, ergänzt man man die ~/.profile:&lt;br /&gt;
 # enable user&#039;s own ruby installations, keeping all stuff below $HOME/.gem&lt;br /&gt;
 export PATH=&amp;quot;$HOME/bin:$HOME/.gem/ruby/1.8/bin:$PATH&amp;quot;&lt;br /&gt;
 export GEM_PATH=&amp;quot;$( gem env gempath )&amp;quot;&lt;br /&gt;
 export GEM_HOME=&amp;quot;$HOME/.gem/ruby/1.8&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 # Disabled for now, because using system libs caused undefined method error.&lt;br /&gt;
 #export RUBYLIB=&amp;quot;$HOME/.gem/ruby/1.8/lib:/usr/local/lib/site_ruby/1.8:/usr/lib/ruby/1.8&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 # avoid to forget that extra parameter: ruby -rubygems prog_that_uses_gems&lt;br /&gt;
 export RUBYOPT=rubygems&lt;br /&gt;
 &lt;br /&gt;
 export RAILS_ENV=production&lt;br /&gt;
&lt;br /&gt;
==== Eigene Installation ====&lt;br /&gt;
&lt;br /&gt;
Um eine andere als die vorinstallierte Ruby Version zu verwenden, installiert man zunächst den Ruby Versions Manager (rvm),&lt;br /&gt;
 curl -L https://get.rvm.io | bash -s stable&lt;br /&gt;
 source ~/.rvm/scripts/rvm&lt;br /&gt;
 rvm notes&lt;br /&gt;
 rvm requirements&lt;br /&gt;
 rvm pkg install openssl&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
und lässt dann die gewünschte Ruby Version installieren.&lt;br /&gt;
 rvm install x.y.z&lt;br /&gt;
&lt;br /&gt;
RVM passt die Umgebungsvariablen automatisch an die ausgewählt Version an. Die Version wählt man global per&lt;br /&gt;
 rvm use x.y.z --default&lt;br /&gt;
oder nur für ein spezielles Verzeichnis:&lt;br /&gt;
 cd ~/verzeichnis/mit/ruby-x.y.z-Anwendung&lt;br /&gt;
 rvm use x.y.z-p??? --rvmrc&lt;br /&gt;
&lt;br /&gt;
Zur Verwaltung von gems installiert man noch rubygems.&lt;br /&gt;
 rvm rubygems current&lt;br /&gt;
&lt;br /&gt;
=== Rails ===&lt;br /&gt;
&lt;br /&gt;
Nun kann Rails per &amp;quot;gem install rails&amp;quot; installiert werden (inklusive Abhängigkeiten).&lt;br /&gt;
Um spezielle versionen zu installieren kann man den gem Befehl mit &amp;quot;-v=x.y.z&amp;quot; ergänzen.&lt;br /&gt;
&lt;br /&gt;
Zum Testen hier ein Beispiel das auch noch ein fertiges CMS installiert (http://zenadmin.org), und dieses mit einer eifachen sqlite Datenbankdatei einrichtet:&lt;br /&gt;
 gem install rails -v=2.3.11&lt;br /&gt;
 gem install i18n sexp_processor sqlite3 zena&lt;br /&gt;
 zena new ~/rails      # Zena Rails-Anwendung anlegen.&lt;br /&gt;
 cd ~/zena-test&lt;br /&gt;
 rake db:create        # Datenbank anlegen.&lt;br /&gt;
 zena migrate          # Datenbank Tabellen einrichten.&lt;br /&gt;
 zena mksite LANG=en RAILS_ENV=production PASSWORD=geheim HOST=rails.example.org # Webseite anlegen.&lt;br /&gt;
&lt;br /&gt;
=== Rails-Anwendung ===&lt;br /&gt;
&lt;br /&gt;
Seine eigene Rails-Anwendung kopiert man z.B. nach ~/rails, oder erstellt dort eine Neue (rails ~/rails, ...).&lt;br /&gt;
&lt;br /&gt;
=== Datenbank ===&lt;br /&gt;
&lt;br /&gt;
Mit &#039;&#039;hsadmin&#039;&#039; beispielsweise einen Postgres-User (z.B. &#039;xyz00_rails&#039;, Passwort sei &#039;geheim&#039;) sowie eine Datenbank anlegen (z.B. &#039;xyz00_rails&#039;.&lt;br /&gt;
&lt;br /&gt;
Die Datenbank in der Anwendung konfigurieren,&lt;br /&gt;
&lt;br /&gt;
 cd ~/rails/config/&lt;br /&gt;
 nano database.yml&lt;br /&gt;
&lt;br /&gt;
mit folgendem Inhalt:&lt;br /&gt;
&lt;br /&gt;
 production:&lt;br /&gt;
    adapter: postgresql&lt;br /&gt;
    database: xyz00_rails&lt;br /&gt;
    host: localhost&lt;br /&gt;
    username: xyz00_rails&lt;br /&gt;
    password: geheim&lt;br /&gt;
&lt;br /&gt;
=== E-Mail, Dateiablage ===&lt;br /&gt;
&lt;br /&gt;
Beispielhafte Konfiguration:&lt;br /&gt;
&lt;br /&gt;
 default:&lt;br /&gt;
    email_delivery:&lt;br /&gt;
      delivery_method: :smtp&lt;br /&gt;
      smtp_settings:&lt;br /&gt;
        address: localhost&lt;br /&gt;
        port: 25&lt;br /&gt;
        domain: example.org&lt;br /&gt;
    attachments_storage_path: /home/pacs/xyz00/users/rails/attach&lt;br /&gt;
&lt;br /&gt;
=== Datenbankschema ===&lt;br /&gt;
&lt;br /&gt;
Initialisieren und migrieren der Datenbank (je nach Rails-Anwendung).&lt;br /&gt;
&lt;br /&gt;
 cd ~/rails&lt;br /&gt;
 ...&lt;br /&gt;
 rake ...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Konfiguration von FastCGI ===&lt;br /&gt;
&lt;br /&gt;
~/doms/rails.example.org/htdocs/.htaccess&lt;br /&gt;
&lt;br /&gt;
 RewriteEngine On&lt;br /&gt;
 RewriteRule ^$ index.html [QSA]&lt;br /&gt;
 RewriteRule ^([^.]+)$ $1.html [QSA]&lt;br /&gt;
 RewriteCond %{REQUEST_FILENAME} !-f [OR]&lt;br /&gt;
 RewriteCond %{REQUEST_FILENAME} dispatch.fcgi$&lt;br /&gt;
 RewriteRule ^(.*)$ /fastcgi-bin/dispatch.fcgi [QSA,L]&lt;br /&gt;
&lt;br /&gt;
Ältere Versionen von Rails, die noch nicht auf rack middleware aufbauen, laufen mit folgender ~/doms/www.example.org/fastcgi/dispatch.fcgi&lt;br /&gt;
&lt;br /&gt;
 #!/usr/bin/env ruby&lt;br /&gt;
 require &amp;quot;/home/pacs/xyz00/users/meinuser/rails/config/environment&amp;quot; &lt;br /&gt;
 require &#039;fcgi_handler&#039;&lt;br /&gt;
 RailsFCGIHandler.process!&lt;br /&gt;
&lt;br /&gt;
Für aktuelle Versionen von Rails, die auf der &amp;quot;rack&amp;quot; Middleware aufbauen, siehe https://github.com/dre3k/rails3_fcgi, ~/doms/www.example.org/fastcgi/dispatch.fcgi&lt;br /&gt;
  #!/usr/bin/env ruby&lt;br /&gt;
 &lt;br /&gt;
 require_relative &#039;../config/environment&#039;&lt;br /&gt;
 &lt;br /&gt;
 class Rack::PathInfoRewriter&lt;br /&gt;
   def initialize(app)&lt;br /&gt;
     @app = app&lt;br /&gt;
   end&lt;br /&gt;
 &lt;br /&gt;
   def call(env)&lt;br /&gt;
     env.delete(&#039;SCRIPT_NAME&#039;)&lt;br /&gt;
     parts = env[&#039;REQUEST_URI&#039;].split(&#039;?&#039;)&lt;br /&gt;
     env[&#039;PATH_INFO&#039;] = parts[0]&lt;br /&gt;
     env[&#039;QUERY_STRING&#039;] = parts[1].to_s&lt;br /&gt;
     @app.call(env)&lt;br /&gt;
   end&lt;br /&gt;
 end&lt;br /&gt;
 &lt;br /&gt;
 Rack::Handler::FastCGI.run  Rack::PathInfoRewriter.new(HIER_APPLIKATIONSNAME_AUS_config/application.rb_EINTRAGEN::Application)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
FastCGI-Skript ausführbar machen:&lt;br /&gt;
&lt;br /&gt;
 chmod 755 ~/doms/rails.example.org/fastcgi/dispatch.fcgi&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Am Anfang von ~/rails/config/environment.rb einfügen:&lt;br /&gt;
&lt;br /&gt;
 ENV[&#039;RAILS_ENV&#039;] ||= &#039;production&#039;&lt;br /&gt;
 ENV[&#039;GEM_PATH&#039;] ||= &#039;/home/pacs/xyz00/users/meinuser/.gem/ruby/1.8:/var/lib/gems/1.8&#039;&lt;br /&gt;
Evtl. können diese Einstellungen auch ohne eine Modifikation der Anwendung erfolgen, indem die Umgebungsvariablen in der .htaccess gesetzt werden (z.B. &amp;quot;SetEnv RAILS_ENV production&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
Die Applikation ins Webroot einbinden:&lt;br /&gt;
&lt;br /&gt;
 # ggf. vorhandene Dateien sichern (oder nach ~/rails/public kopieren)&lt;br /&gt;
 mv ~/doms/rails.example.org/htdocs ~/doms/rails.example.org/htdocs.old&lt;br /&gt;
 # Das rails/public Verzeichnis ins Webroot verlinken.&lt;br /&gt;
 ln -s ~/rails/public ~/doms/rails.example.org/htdocs&lt;br /&gt;
&lt;br /&gt;
=== Konfiguration von SSL ===&lt;br /&gt;
&lt;br /&gt;
Die Verzeichnisse ~/doms/rails.example.org/fastcgi-ssl/ und ~/doms/rail.example.org/htdocs-ssl/ werden analog zu bzw. anstelle von fastcgi und htdocs gefüllt.&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:HSDoku]]&lt;br /&gt;
[[Kategorie:Installationsanleitungen]]&lt;br /&gt;
[[Kategorie:Software]]&lt;br /&gt;
[[Kategorie:Glossar]]&lt;/div&gt;</summary>
		<author><name>Srv00-wiki</name></author>
	</entry>
	<entry>
		<id>https://wiki.hostsharing.net/index.php?title=RubyOnRails&amp;diff=3448</id>
		<title>RubyOnRails</title>
		<link rel="alternate" type="text/html" href="https://wiki.hostsharing.net/index.php?title=RubyOnRails&amp;diff=3448"/>
		<updated>2012-08-29T14:12:19Z</updated>

		<summary type="html">&lt;p&gt;Srv00-wiki: /* Bestes Ruby on Rails Hosting bei Hostsharing */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Bestes Ruby on Rails Hosting bei Hostsharing ==&lt;br /&gt;
&lt;br /&gt;
Rubyanwendungen laufen (wie alle Anwendungen bei Hostsharing) als Prozesse des jeweiligen Benutzersaccounts. Probleme mit Dateirechten und Sicherheitsrisiken, wie sie sonst bei der Ausführung durch den Webserver auftreten, sind so von vorne herein ausgeschlossen.&lt;br /&gt;
&lt;br /&gt;
Standardmäßig erfolgt der Aufruf von Ruby Anwendungen durch den Apache Webserver über die FastCGI Schnittstelle. Dabei wird ständig eine Ruby Application Server Instanz des Users bereitgehalten, die somit jederzeit zur Bearbeitung von noch nicht gecacheten, oder gar nicht cachebaren, Anfragen zur Verfügung steht.&lt;br /&gt;
&lt;br /&gt;
Für den Betrieb von noch anspruchsvolleren Anwendungen haben wir auch Tools wie haproxy, varnish, nginx etc. installiert. Wir können auch mod_passenger (mod_wsgi haben wir schon) oder mongrel oder Green Unicorn (gunicorn) installieren. Anwender, die damit auf unserer leistungsfähigen Infrastruktur (managed Plattform) z.B. einen Webserver Cluster mit load-balancing realisieren möchten, brauchen bei uns dafür nur eigene Daemons buchen, können dies aber auch (für größere Projekte) mit einer beliebigen Anzahl ganzer Server realisieren.&lt;br /&gt;
&lt;br /&gt;
== Einrichtung ohne zusätzliche Daemons (ein Application Server) ==&lt;br /&gt;
&lt;br /&gt;
=== Vorbereitungen ===&lt;br /&gt;
&lt;br /&gt;
Einige Einstellungen für den Paketuser.&lt;br /&gt;
&lt;br /&gt;
~/.gemrc&lt;br /&gt;
 install: --no-rdoc --no-ri&lt;br /&gt;
 update:  --no-rdoc --no-ri&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
~/.bashrc&lt;br /&gt;
 alias gem=&amp;quot;nice -n19 gem&amp;quot;&lt;br /&gt;
&lt;br /&gt;
~/.profile&lt;br /&gt;
 source &amp;quot;$HOME/.bashrc&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== Ruby ===&lt;br /&gt;
&lt;br /&gt;
==== Vorinstalliert ====&lt;br /&gt;
&lt;br /&gt;
Soll nur die zentral installierte Ruby Version verwendet werden, ergänzt man man die ~/.profile:&lt;br /&gt;
 # enable user&#039;s own ruby installations, keeping all stuff below $HOME/.gem&lt;br /&gt;
 export PATH=&amp;quot;$HOME/bin:$HOME/.gem/ruby/1.8/bin:$PATH&amp;quot;&lt;br /&gt;
 export GEM_PATH=&amp;quot;$( gem env gempath )&amp;quot;&lt;br /&gt;
 export GEM_HOME=&amp;quot;$HOME/.gem/ruby/1.8&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 # Disabled for now, because using system libs caused undefined method error.&lt;br /&gt;
 #export RUBYLIB=&amp;quot;$HOME/.gem/ruby/1.8/lib:/usr/local/lib/site_ruby/1.8:/usr/lib/ruby/1.8&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 # avoid to forget that extra parameter: ruby -rubygems prog_that_uses_gems&lt;br /&gt;
 export RUBYOPT=rubygems&lt;br /&gt;
 &lt;br /&gt;
 export RAILS_ENV=production&lt;br /&gt;
&lt;br /&gt;
==== Eigene Installation ====&lt;br /&gt;
&lt;br /&gt;
Um eine andere als die vorinstallierte Ruby Version zu verwenden, installiert man zunächst den Ruby Versions Manager (rvm),&lt;br /&gt;
 curl -L https://get.rvm.io | bash -s stable&lt;br /&gt;
 source ~/.rvm/scripts/rvm&lt;br /&gt;
 rvm notes&lt;br /&gt;
 rvm requirements&lt;br /&gt;
 rvm pkg install openssl&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
und lässt dann die gewünschte Ruby Version installieren.&lt;br /&gt;
 rvm install x.y.z&lt;br /&gt;
&lt;br /&gt;
RVM passt die Umgebungsvariablen automatisch an die ausgewählt Version an. Die Version wählt man global per&lt;br /&gt;
 rvm use x.y.z --default&lt;br /&gt;
oder nur für ein spezielles Verzeichnis:&lt;br /&gt;
 cd ~/verzeichnis/mit/ruby-x.y.z-Anwendung&lt;br /&gt;
 rvm use x.y.z-p??? --rvmrc&lt;br /&gt;
&lt;br /&gt;
Zur Verwaltung von gems installiert man noch rubygems.&lt;br /&gt;
 rvm rubygems current&lt;br /&gt;
&lt;br /&gt;
=== Rails ===&lt;br /&gt;
&lt;br /&gt;
Nun kann Rails per &amp;quot;gem install &amp;lt;Paketname&amp;gt;&amp;quot; installiert werden (inklusive Abhängigkeiten).&lt;br /&gt;
Um spezielle versionen zu installieren kann man den gem Befehl mit &amp;quot;-v=x.y.z&amp;quot; ergänzen.&lt;br /&gt;
&lt;br /&gt;
Zum Testen ein Beispiel das auch noch ein fertiges CMS installiert (http://zenadmin.org), inklusive automatischer Einrichtung einer sqlite Datenbankdatei:&lt;br /&gt;
 gem install rails -v=2.3.11&lt;br /&gt;
 gem install i18n sexp_processor sqlite3 zena&lt;br /&gt;
 zena new ~/rails      # Legt eine Rails-Anwendung an.&lt;br /&gt;
 cd ~/zena-test&lt;br /&gt;
 rake db:create        # Datenbank anlegen.&lt;br /&gt;
 zena migrate          # Datenbank Tabellen einrichten.&lt;br /&gt;
 zena mksite LANG=en RAILS_ENV=production PASSWORD=geheim HOST=rails.example.org # Webseite anlegen.&lt;br /&gt;
&lt;br /&gt;
=== Rails-Anwendung ===&lt;br /&gt;
&lt;br /&gt;
Seine eigene Rails-Anwendung kopiert man z.B. nach ~/rails, oder erstellt dort eine Neue (rails ~/rails, ...).&lt;br /&gt;
&lt;br /&gt;
=== Datenbank ===&lt;br /&gt;
&lt;br /&gt;
Mit &#039;&#039;hsadmin&#039;&#039; beispielsweise einen Postgres-User (z.B. &#039;xyz00_rails&#039;, Passwort sei &#039;geheim&#039;) sowie eine Datenbank anlegen (z.B. &#039;xyz00_rails&#039;.&lt;br /&gt;
&lt;br /&gt;
Die Datenbank in der Anwendung konfigurieren,&lt;br /&gt;
&lt;br /&gt;
 cd ~/rails/config/&lt;br /&gt;
 nano database.yml&lt;br /&gt;
&lt;br /&gt;
mit folgendem Inhalt:&lt;br /&gt;
&lt;br /&gt;
 production:&lt;br /&gt;
    adapter: postgresql&lt;br /&gt;
    database: xyz00_rails&lt;br /&gt;
    host: localhost&lt;br /&gt;
    username: xyz00_rails&lt;br /&gt;
    password: geheim&lt;br /&gt;
&lt;br /&gt;
=== E-Mail, Dateiablage ===&lt;br /&gt;
&lt;br /&gt;
Beispielhafte Konfiguration:&lt;br /&gt;
&lt;br /&gt;
 default:&lt;br /&gt;
    email_delivery:&lt;br /&gt;
      delivery_method: :smtp&lt;br /&gt;
      smtp_settings:&lt;br /&gt;
        address: localhost&lt;br /&gt;
        port: 25&lt;br /&gt;
        domain: example.org&lt;br /&gt;
    attachments_storage_path: /home/pacs/xyz00/users/rails/attach&lt;br /&gt;
&lt;br /&gt;
=== Datenbankschema ===&lt;br /&gt;
&lt;br /&gt;
Initialisieren und migrieren der Datenbank (je nach Rails-Anwendung).&lt;br /&gt;
&lt;br /&gt;
 cd ~/rails&lt;br /&gt;
 ...&lt;br /&gt;
 rake ...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Konfiguration von FastCGI ===&lt;br /&gt;
&lt;br /&gt;
~/doms/rails.example.org/htdocs/.htaccess&lt;br /&gt;
&lt;br /&gt;
 RewriteEngine On&lt;br /&gt;
 RewriteRule ^$ index.html [QSA]&lt;br /&gt;
 RewriteRule ^([^.]+)$ $1.html [QSA]&lt;br /&gt;
 RewriteCond %{REQUEST_FILENAME} !-f [OR]&lt;br /&gt;
 RewriteCond %{REQUEST_FILENAME} dispatch.fcgi$&lt;br /&gt;
 RewriteRule ^(.*)$ /fastcgi-bin/dispatch.fcgi [QSA,L]&lt;br /&gt;
&lt;br /&gt;
Ältere Versionen von Rails, die noch nicht auf rack middleware aufbauen, laufen mit folgender ~/doms/www.example.org/fastcgi/dispatch.fcgi&lt;br /&gt;
&lt;br /&gt;
 #!/usr/bin/env ruby&lt;br /&gt;
 require &amp;quot;/home/pacs/xyz00/users/meinuser/rails/config/environment&amp;quot; &lt;br /&gt;
 require &#039;fcgi_handler&#039;&lt;br /&gt;
 RailsFCGIHandler.process!&lt;br /&gt;
&lt;br /&gt;
Für aktuelle Versionen von Rails, die auf der &amp;quot;rack&amp;quot; Middleware aufbauen, siehe https://github.com/dre3k/rails3_fcgi, ~/doms/www.example.org/fastcgi/dispatch.fcgi&lt;br /&gt;
  #!/usr/bin/env ruby&lt;br /&gt;
 &lt;br /&gt;
 require_relative &#039;../config/environment&#039;&lt;br /&gt;
 &lt;br /&gt;
 class Rack::PathInfoRewriter&lt;br /&gt;
   def initialize(app)&lt;br /&gt;
     @app = app&lt;br /&gt;
   end&lt;br /&gt;
 &lt;br /&gt;
   def call(env)&lt;br /&gt;
     env.delete(&#039;SCRIPT_NAME&#039;)&lt;br /&gt;
     parts = env[&#039;REQUEST_URI&#039;].split(&#039;?&#039;)&lt;br /&gt;
     env[&#039;PATH_INFO&#039;] = parts[0]&lt;br /&gt;
     env[&#039;QUERY_STRING&#039;] = parts[1].to_s&lt;br /&gt;
     @app.call(env)&lt;br /&gt;
   end&lt;br /&gt;
 end&lt;br /&gt;
 &lt;br /&gt;
 Rack::Handler::FastCGI.run  Rack::PathInfoRewriter.new(HIER_APPLIKATIONSNAME_AUS_config/application.rb_EINTRAGEN::Application)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
FastCGI-Skript ausführbar machen:&lt;br /&gt;
&lt;br /&gt;
 chmod 755 ~/doms/rails.example.org/fastcgi/dispatch.fcgi&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Am Anfang von ~/rails/config/environment.rb einfügen:&lt;br /&gt;
&lt;br /&gt;
 ENV[&#039;RAILS_ENV&#039;] ||= &#039;production&#039;&lt;br /&gt;
 ENV[&#039;GEM_PATH&#039;] ||= &#039;/home/pacs/xyz00/users/meinuser/.gem/ruby/1.8:/var/lib/gems/1.8&#039;&lt;br /&gt;
Evtl. können diese Einstellungen auch ohne eine Modifikation der Anwendung erfolgen, indem die Umgebungsvariablen in der .htaccess gesetzt werden (z.B. &amp;quot;SetEnv RAILS_ENV production&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
Die Applikation ins Webroot einbinden:&lt;br /&gt;
&lt;br /&gt;
 # ggf. vorhandene Dateien sichern (oder nach ~/rails/public kopieren)&lt;br /&gt;
 mv ~/doms/rails.example.org/htdocs ~/doms/rails.example.org/htdocs.old&lt;br /&gt;
 # Das rails/public Verzeichnis ins Webroot verlinken.&lt;br /&gt;
 ln -s ~/rails/public ~/doms/rails.example.org/htdocs&lt;br /&gt;
&lt;br /&gt;
=== Konfiguration von SSL ===&lt;br /&gt;
&lt;br /&gt;
Die Verzeichnisse ~/doms/rails.example.org/fastcgi-ssl/ und ~/doms/rail.example.org/htdocs-ssl/ werden analog zu bzw. anstelle von fastcgi und htdocs gefüllt.&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:HSDoku]]&lt;br /&gt;
[[Kategorie:Installationsanleitungen]]&lt;br /&gt;
[[Kategorie:Software]]&lt;br /&gt;
[[Kategorie:Glossar]]&lt;/div&gt;</summary>
		<author><name>Srv00-wiki</name></author>
	</entry>
	<entry>
		<id>https://wiki.hostsharing.net/index.php?title=RubyOnRails&amp;diff=3447</id>
		<title>RubyOnRails</title>
		<link rel="alternate" type="text/html" href="https://wiki.hostsharing.net/index.php?title=RubyOnRails&amp;diff=3447"/>
		<updated>2012-08-28T19:15:56Z</updated>

		<summary type="html">&lt;p&gt;Srv00-wiki: /* Rails */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Bestes Ruby on Rails Hosting bei Hostsharing ==&lt;br /&gt;
&lt;br /&gt;
Rubyanwendungen laufen (wie alle Anwendungen bei Hostsharing) als Prozesse des jeweiligen Benutzersaccounts. Probleme mit Dateirechten und Sicherheitsrisiken, wie sie sonst bei der Ausführung durch den Webserver auftreten, sind so von vorne herein ausgeschlossen.&lt;br /&gt;
&lt;br /&gt;
Standardmäßig erfolgt der Aufruf von Ruby Anwendungen durch den Apache Webserver über die FastCGI Schnittstelle. Dabei wird ständig eine Ruby Application Server Instanz des Users bereitgehalten, die somit jederzeit zur Bearbeitung von noch nicht gecacheten, oder gar nicht cachebaren, Anfragen zur Verfügung steht.&lt;br /&gt;
&lt;br /&gt;
Für den Betrieb von noch anspruchsvolleren Anwendungen haben wir auch Tools wie haproxy, varnish, nginx etc. installiert. Wir können auch mod_passenger (mod_wsgi haben wir schon) oder mongrel oder Green Unicorn (gunicorn) installieren. Anwender, die damit auf unserer leistungsfähigen Infrastruktur (managed Plattform) z.B. einen Webserver Cluster mit load-balancing realisieren möchten, brauchen bei uns dafür nur eigene Daemons buchen, oder können (für größere Projekte) dafür natürlich auch eine beliebige Anzahl ganzer Server buchen.&lt;br /&gt;
&lt;br /&gt;
== Einrichtung ohne zusätzliche Daemons (ein Application Server) ==&lt;br /&gt;
&lt;br /&gt;
=== Vorbereitungen ===&lt;br /&gt;
&lt;br /&gt;
Einige Einstellungen für den Paketuser.&lt;br /&gt;
&lt;br /&gt;
~/.gemrc&lt;br /&gt;
 install: --no-rdoc --no-ri&lt;br /&gt;
 update:  --no-rdoc --no-ri&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
~/.bashrc&lt;br /&gt;
 alias gem=&amp;quot;nice -n19 gem&amp;quot;&lt;br /&gt;
&lt;br /&gt;
~/.profile&lt;br /&gt;
 source &amp;quot;$HOME/.bashrc&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== Ruby ===&lt;br /&gt;
&lt;br /&gt;
==== Vorinstalliert ====&lt;br /&gt;
&lt;br /&gt;
Soll nur die zentral installierte Ruby Version verwendet werden, ergänzt man man die ~/.profile:&lt;br /&gt;
 # enable user&#039;s own ruby installations, keeping all stuff below $HOME/.gem&lt;br /&gt;
 export PATH=&amp;quot;$HOME/bin:$HOME/.gem/ruby/1.8/bin:$PATH&amp;quot;&lt;br /&gt;
 export GEM_PATH=&amp;quot;$( gem env gempath )&amp;quot;&lt;br /&gt;
 export GEM_HOME=&amp;quot;$HOME/.gem/ruby/1.8&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 # Disabled for now, because using system libs caused undefined method error.&lt;br /&gt;
 #export RUBYLIB=&amp;quot;$HOME/.gem/ruby/1.8/lib:/usr/local/lib/site_ruby/1.8:/usr/lib/ruby/1.8&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 # avoid to forget that extra parameter: ruby -rubygems prog_that_uses_gems&lt;br /&gt;
 export RUBYOPT=rubygems&lt;br /&gt;
 &lt;br /&gt;
 export RAILS_ENV=production&lt;br /&gt;
&lt;br /&gt;
==== Eigene Installation ====&lt;br /&gt;
&lt;br /&gt;
Um eine andere als die vorinstallierte Ruby Version zu verwenden, installiert man zunächst den Ruby Versions Manager (rvm),&lt;br /&gt;
 curl -L https://get.rvm.io | bash -s stable&lt;br /&gt;
 source ~/.rvm/scripts/rvm&lt;br /&gt;
 rvm notes&lt;br /&gt;
 rvm requirements&lt;br /&gt;
 rvm pkg install openssl&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
und lässt dann die gewünschte Ruby Version installieren.&lt;br /&gt;
 rvm install x.y.z&lt;br /&gt;
&lt;br /&gt;
RVM passt die Umgebungsvariablen automatisch an die ausgewählt Version an. Die Version wählt man global per&lt;br /&gt;
 rvm use x.y.z --default&lt;br /&gt;
oder nur für ein spezielles Verzeichnis:&lt;br /&gt;
 cd ~/verzeichnis/mit/ruby-x.y.z-Anwendung&lt;br /&gt;
 rvm use x.y.z-p??? --rvmrc&lt;br /&gt;
&lt;br /&gt;
Zur Verwaltung von gems installiert man noch rubygems.&lt;br /&gt;
 rvm rubygems current&lt;br /&gt;
&lt;br /&gt;
=== Rails ===&lt;br /&gt;
&lt;br /&gt;
Nun kann Rails per &amp;quot;gem install &amp;lt;Paketname&amp;gt;&amp;quot; installiert werden (inklusive Abhängigkeiten).&lt;br /&gt;
Um spezielle versionen zu installieren kann man den gem Befehl mit &amp;quot;-v=x.y.z&amp;quot; ergänzen.&lt;br /&gt;
&lt;br /&gt;
Zum Testen ein Beispiel das auch noch ein fertiges CMS installiert (http://zenadmin.org), inklusive automatischer Einrichtung einer sqlite Datenbankdatei:&lt;br /&gt;
 gem install rails -v=2.3.11&lt;br /&gt;
 gem install i18n sexp_processor sqlite3 zena&lt;br /&gt;
 zena new ~/rails      # Legt eine Rails-Anwendung an.&lt;br /&gt;
 cd ~/zena-test&lt;br /&gt;
 rake db:create        # Datenbank anlegen.&lt;br /&gt;
 zena migrate          # Datenbank Tabellen einrichten.&lt;br /&gt;
 zena mksite LANG=en RAILS_ENV=production PASSWORD=geheim HOST=rails.example.org # Webseite anlegen.&lt;br /&gt;
&lt;br /&gt;
=== Rails-Anwendung ===&lt;br /&gt;
&lt;br /&gt;
Seine eigene Rails-Anwendung kopiert man z.B. nach ~/rails, oder erstellt dort eine Neue (rails ~/rails, ...).&lt;br /&gt;
&lt;br /&gt;
=== Datenbank ===&lt;br /&gt;
&lt;br /&gt;
Mit &#039;&#039;hsadmin&#039;&#039; beispielsweise einen Postgres-User (z.B. &#039;xyz00_rails&#039;, Passwort sei &#039;geheim&#039;) sowie eine Datenbank anlegen (z.B. &#039;xyz00_rails&#039;.&lt;br /&gt;
&lt;br /&gt;
Die Datenbank in der Anwendung konfigurieren,&lt;br /&gt;
&lt;br /&gt;
 cd ~/rails/config/&lt;br /&gt;
 nano database.yml&lt;br /&gt;
&lt;br /&gt;
mit folgendem Inhalt:&lt;br /&gt;
&lt;br /&gt;
 production:&lt;br /&gt;
    adapter: postgresql&lt;br /&gt;
    database: xyz00_rails&lt;br /&gt;
    host: localhost&lt;br /&gt;
    username: xyz00_rails&lt;br /&gt;
    password: geheim&lt;br /&gt;
&lt;br /&gt;
=== E-Mail, Dateiablage ===&lt;br /&gt;
&lt;br /&gt;
Beispielhafte Konfiguration:&lt;br /&gt;
&lt;br /&gt;
 default:&lt;br /&gt;
    email_delivery:&lt;br /&gt;
      delivery_method: :smtp&lt;br /&gt;
      smtp_settings:&lt;br /&gt;
        address: localhost&lt;br /&gt;
        port: 25&lt;br /&gt;
        domain: example.org&lt;br /&gt;
    attachments_storage_path: /home/pacs/xyz00/users/rails/attach&lt;br /&gt;
&lt;br /&gt;
=== Datenbankschema ===&lt;br /&gt;
&lt;br /&gt;
Initialisieren und migrieren der Datenbank (je nach Rails-Anwendung).&lt;br /&gt;
&lt;br /&gt;
 cd ~/rails&lt;br /&gt;
 ...&lt;br /&gt;
 rake ...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Konfiguration von FastCGI ===&lt;br /&gt;
&lt;br /&gt;
~/doms/rails.example.org/htdocs/.htaccess&lt;br /&gt;
&lt;br /&gt;
 RewriteEngine On&lt;br /&gt;
 RewriteRule ^$ index.html [QSA]&lt;br /&gt;
 RewriteRule ^([^.]+)$ $1.html [QSA]&lt;br /&gt;
 RewriteCond %{REQUEST_FILENAME} !-f [OR]&lt;br /&gt;
 RewriteCond %{REQUEST_FILENAME} dispatch.fcgi$&lt;br /&gt;
 RewriteRule ^(.*)$ /fastcgi-bin/dispatch.fcgi [QSA,L]&lt;br /&gt;
&lt;br /&gt;
Ältere Versionen von Rails, die noch nicht auf rack middleware aufbauen, laufen mit folgender ~/doms/www.example.org/fastcgi/dispatch.fcgi&lt;br /&gt;
&lt;br /&gt;
 #!/usr/bin/env ruby&lt;br /&gt;
 require &amp;quot;/home/pacs/xyz00/users/meinuser/rails/config/environment&amp;quot; &lt;br /&gt;
 require &#039;fcgi_handler&#039;&lt;br /&gt;
 RailsFCGIHandler.process!&lt;br /&gt;
&lt;br /&gt;
Für aktuelle Versionen von Rails, die auf der &amp;quot;rack&amp;quot; Middleware aufbauen, siehe https://github.com/dre3k/rails3_fcgi, ~/doms/www.example.org/fastcgi/dispatch.fcgi&lt;br /&gt;
  #!/usr/bin/env ruby&lt;br /&gt;
 &lt;br /&gt;
 require_relative &#039;../config/environment&#039;&lt;br /&gt;
 &lt;br /&gt;
 class Rack::PathInfoRewriter&lt;br /&gt;
   def initialize(app)&lt;br /&gt;
     @app = app&lt;br /&gt;
   end&lt;br /&gt;
 &lt;br /&gt;
   def call(env)&lt;br /&gt;
     env.delete(&#039;SCRIPT_NAME&#039;)&lt;br /&gt;
     parts = env[&#039;REQUEST_URI&#039;].split(&#039;?&#039;)&lt;br /&gt;
     env[&#039;PATH_INFO&#039;] = parts[0]&lt;br /&gt;
     env[&#039;QUERY_STRING&#039;] = parts[1].to_s&lt;br /&gt;
     @app.call(env)&lt;br /&gt;
   end&lt;br /&gt;
 end&lt;br /&gt;
 &lt;br /&gt;
 Rack::Handler::FastCGI.run  Rack::PathInfoRewriter.new(HIER_APPLIKATIONSNAME_AUS_config/application.rb_EINTRAGEN::Application)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
FastCGI-Skript ausführbar machen:&lt;br /&gt;
&lt;br /&gt;
 chmod 755 ~/doms/rails.example.org/fastcgi/dispatch.fcgi&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Am Anfang von ~/rails/config/environment.rb einfügen:&lt;br /&gt;
&lt;br /&gt;
 ENV[&#039;RAILS_ENV&#039;] ||= &#039;production&#039;&lt;br /&gt;
 ENV[&#039;GEM_PATH&#039;] ||= &#039;/home/pacs/xyz00/users/meinuser/.gem/ruby/1.8:/var/lib/gems/1.8&#039;&lt;br /&gt;
Evtl. können diese Einstellungen auch ohne eine Modifikation der Anwendung erfolgen, indem die Umgebungsvariablen in der .htaccess gesetzt werden (z.B. &amp;quot;SetEnv RAILS_ENV production&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
Die Applikation ins Webroot einbinden:&lt;br /&gt;
&lt;br /&gt;
 # ggf. vorhandene Dateien sichern (oder nach ~/rails/public kopieren)&lt;br /&gt;
 mv ~/doms/rails.example.org/htdocs ~/doms/rails.example.org/htdocs.old&lt;br /&gt;
 # Das rails/public Verzeichnis ins Webroot verlinken.&lt;br /&gt;
 ln -s ~/rails/public ~/doms/rails.example.org/htdocs&lt;br /&gt;
&lt;br /&gt;
=== Konfiguration von SSL ===&lt;br /&gt;
&lt;br /&gt;
Die Verzeichnisse ~/doms/rails.example.org/fastcgi-ssl/ und ~/doms/rail.example.org/htdocs-ssl/ werden analog zu bzw. anstelle von fastcgi und htdocs gefüllt.&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:HSDoku]]&lt;br /&gt;
[[Kategorie:Installationsanleitungen]]&lt;br /&gt;
[[Kategorie:Software]]&lt;br /&gt;
[[Kategorie:Glossar]]&lt;/div&gt;</summary>
		<author><name>Srv00-wiki</name></author>
	</entry>
	<entry>
		<id>https://wiki.hostsharing.net/index.php?title=RubyOnRails&amp;diff=3446</id>
		<title>RubyOnRails</title>
		<link rel="alternate" type="text/html" href="https://wiki.hostsharing.net/index.php?title=RubyOnRails&amp;diff=3446"/>
		<updated>2012-08-28T19:14:20Z</updated>

		<summary type="html">&lt;p&gt;Srv00-wiki: /* Vorinstalliert */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Bestes Ruby on Rails Hosting bei Hostsharing ==&lt;br /&gt;
&lt;br /&gt;
Rubyanwendungen laufen (wie alle Anwendungen bei Hostsharing) als Prozesse des jeweiligen Benutzersaccounts. Probleme mit Dateirechten und Sicherheitsrisiken, wie sie sonst bei der Ausführung durch den Webserver auftreten, sind so von vorne herein ausgeschlossen.&lt;br /&gt;
&lt;br /&gt;
Standardmäßig erfolgt der Aufruf von Ruby Anwendungen durch den Apache Webserver über die FastCGI Schnittstelle. Dabei wird ständig eine Ruby Application Server Instanz des Users bereitgehalten, die somit jederzeit zur Bearbeitung von noch nicht gecacheten, oder gar nicht cachebaren, Anfragen zur Verfügung steht.&lt;br /&gt;
&lt;br /&gt;
Für den Betrieb von noch anspruchsvolleren Anwendungen haben wir auch Tools wie haproxy, varnish, nginx etc. installiert. Wir können auch mod_passenger (mod_wsgi haben wir schon) oder mongrel oder Green Unicorn (gunicorn) installieren. Anwender, die damit auf unserer leistungsfähigen Infrastruktur (managed Plattform) z.B. einen Webserver Cluster mit load-balancing realisieren möchten, brauchen bei uns dafür nur eigene Daemons buchen, oder können (für größere Projekte) dafür natürlich auch eine beliebige Anzahl ganzer Server buchen.&lt;br /&gt;
&lt;br /&gt;
== Einrichtung ohne zusätzliche Daemons (ein Application Server) ==&lt;br /&gt;
&lt;br /&gt;
=== Vorbereitungen ===&lt;br /&gt;
&lt;br /&gt;
Einige Einstellungen für den Paketuser.&lt;br /&gt;
&lt;br /&gt;
~/.gemrc&lt;br /&gt;
 install: --no-rdoc --no-ri&lt;br /&gt;
 update:  --no-rdoc --no-ri&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
~/.bashrc&lt;br /&gt;
 alias gem=&amp;quot;nice -n19 gem&amp;quot;&lt;br /&gt;
&lt;br /&gt;
~/.profile&lt;br /&gt;
 source &amp;quot;$HOME/.bashrc&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== Ruby ===&lt;br /&gt;
&lt;br /&gt;
==== Vorinstalliert ====&lt;br /&gt;
&lt;br /&gt;
Soll nur die zentral installierte Ruby Version verwendet werden, ergänzt man man die ~/.profile:&lt;br /&gt;
 # enable user&#039;s own ruby installations, keeping all stuff below $HOME/.gem&lt;br /&gt;
 export PATH=&amp;quot;$HOME/bin:$HOME/.gem/ruby/1.8/bin:$PATH&amp;quot;&lt;br /&gt;
 export GEM_PATH=&amp;quot;$( gem env gempath )&amp;quot;&lt;br /&gt;
 export GEM_HOME=&amp;quot;$HOME/.gem/ruby/1.8&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 # Disabled for now, because using system libs caused undefined method error.&lt;br /&gt;
 #export RUBYLIB=&amp;quot;$HOME/.gem/ruby/1.8/lib:/usr/local/lib/site_ruby/1.8:/usr/lib/ruby/1.8&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 # avoid to forget that extra parameter: ruby -rubygems prog_that_uses_gems&lt;br /&gt;
 export RUBYOPT=rubygems&lt;br /&gt;
 &lt;br /&gt;
 export RAILS_ENV=production&lt;br /&gt;
&lt;br /&gt;
==== Eigene Installation ====&lt;br /&gt;
&lt;br /&gt;
Um eine andere als die vorinstallierte Ruby Version zu verwenden, installiert man zunächst den Ruby Versions Manager (rvm),&lt;br /&gt;
 curl -L https://get.rvm.io | bash -s stable&lt;br /&gt;
 source ~/.rvm/scripts/rvm&lt;br /&gt;
 rvm notes&lt;br /&gt;
 rvm requirements&lt;br /&gt;
 rvm pkg install openssl&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
und lässt dann die gewünschte Ruby Version installieren.&lt;br /&gt;
 rvm install x.y.z&lt;br /&gt;
&lt;br /&gt;
RVM passt die Umgebungsvariablen automatisch an die ausgewählt Version an. Die Version wählt man global per&lt;br /&gt;
 rvm use x.y.z --default&lt;br /&gt;
oder nur für ein spezielles Verzeichnis:&lt;br /&gt;
 cd ~/verzeichnis/mit/ruby-x.y.z-Anwendung&lt;br /&gt;
 rvm use x.y.z-p??? --rvmrc&lt;br /&gt;
&lt;br /&gt;
Zur Verwaltung von gems installiert man noch rubygems.&lt;br /&gt;
 rvm rubygems current&lt;br /&gt;
&lt;br /&gt;
=== Rails ===&lt;br /&gt;
&lt;br /&gt;
Nun kann Rails per &amp;quot;gem install &amp;lt;Paketname&amp;gt;&amp;quot; installiert werden (inklusive Abhängigkeiten).&lt;br /&gt;
Um spezielle versionen zu installieren kann man den gem Befehl mit &amp;quot;-v=x.y.z&amp;quot; ergänzen.&lt;br /&gt;
&lt;br /&gt;
Zum Testen ein Beispiel das auch noch ein fertiges CMS Framework installiert (http://zenadmin.org), inklusive automatischer Einrichtung einer sqlite Datenbankdatei:&lt;br /&gt;
 gem install rails -v=2.3.11&lt;br /&gt;
 gem install i18n sexp_processor sqlite3 zena&lt;br /&gt;
 zena new ~/rails      # Legt eine Rails-Anwendung an.&lt;br /&gt;
 cd ~/zena-test&lt;br /&gt;
 rake db:create        # Datenbank anlegen.&lt;br /&gt;
 zena migrate          # Datenbank Tabellen einrichten.&lt;br /&gt;
 zena mksite LANG=en RAILS_ENV=production PASSWORD=geheim HOST=rails.example.org # Webseite anlegen.&lt;br /&gt;
&lt;br /&gt;
=== Rails-Anwendung ===&lt;br /&gt;
&lt;br /&gt;
Seine eigene Rails-Anwendung kopiert man z.B. nach ~/rails, oder erstellt dort eine Neue (rails ~/rails, ...).&lt;br /&gt;
&lt;br /&gt;
=== Datenbank ===&lt;br /&gt;
&lt;br /&gt;
Mit &#039;&#039;hsadmin&#039;&#039; beispielsweise einen Postgres-User (z.B. &#039;xyz00_rails&#039;, Passwort sei &#039;geheim&#039;) sowie eine Datenbank anlegen (z.B. &#039;xyz00_rails&#039;.&lt;br /&gt;
&lt;br /&gt;
Die Datenbank in der Anwendung konfigurieren,&lt;br /&gt;
&lt;br /&gt;
 cd ~/rails/config/&lt;br /&gt;
 nano database.yml&lt;br /&gt;
&lt;br /&gt;
mit folgendem Inhalt:&lt;br /&gt;
&lt;br /&gt;
 production:&lt;br /&gt;
    adapter: postgresql&lt;br /&gt;
    database: xyz00_rails&lt;br /&gt;
    host: localhost&lt;br /&gt;
    username: xyz00_rails&lt;br /&gt;
    password: geheim&lt;br /&gt;
&lt;br /&gt;
=== E-Mail, Dateiablage ===&lt;br /&gt;
&lt;br /&gt;
Beispielhafte Konfiguration:&lt;br /&gt;
&lt;br /&gt;
 default:&lt;br /&gt;
    email_delivery:&lt;br /&gt;
      delivery_method: :smtp&lt;br /&gt;
      smtp_settings:&lt;br /&gt;
        address: localhost&lt;br /&gt;
        port: 25&lt;br /&gt;
        domain: example.org&lt;br /&gt;
    attachments_storage_path: /home/pacs/xyz00/users/rails/attach&lt;br /&gt;
&lt;br /&gt;
=== Datenbankschema ===&lt;br /&gt;
&lt;br /&gt;
Initialisieren und migrieren der Datenbank (je nach Rails-Anwendung).&lt;br /&gt;
&lt;br /&gt;
 cd ~/rails&lt;br /&gt;
 ...&lt;br /&gt;
 rake ...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Konfiguration von FastCGI ===&lt;br /&gt;
&lt;br /&gt;
~/doms/rails.example.org/htdocs/.htaccess&lt;br /&gt;
&lt;br /&gt;
 RewriteEngine On&lt;br /&gt;
 RewriteRule ^$ index.html [QSA]&lt;br /&gt;
 RewriteRule ^([^.]+)$ $1.html [QSA]&lt;br /&gt;
 RewriteCond %{REQUEST_FILENAME} !-f [OR]&lt;br /&gt;
 RewriteCond %{REQUEST_FILENAME} dispatch.fcgi$&lt;br /&gt;
 RewriteRule ^(.*)$ /fastcgi-bin/dispatch.fcgi [QSA,L]&lt;br /&gt;
&lt;br /&gt;
Ältere Versionen von Rails, die noch nicht auf rack middleware aufbauen, laufen mit folgender ~/doms/www.example.org/fastcgi/dispatch.fcgi&lt;br /&gt;
&lt;br /&gt;
 #!/usr/bin/env ruby&lt;br /&gt;
 require &amp;quot;/home/pacs/xyz00/users/meinuser/rails/config/environment&amp;quot; &lt;br /&gt;
 require &#039;fcgi_handler&#039;&lt;br /&gt;
 RailsFCGIHandler.process!&lt;br /&gt;
&lt;br /&gt;
Für aktuelle Versionen von Rails, die auf der &amp;quot;rack&amp;quot; Middleware aufbauen, siehe https://github.com/dre3k/rails3_fcgi, ~/doms/www.example.org/fastcgi/dispatch.fcgi&lt;br /&gt;
  #!/usr/bin/env ruby&lt;br /&gt;
 &lt;br /&gt;
 require_relative &#039;../config/environment&#039;&lt;br /&gt;
 &lt;br /&gt;
 class Rack::PathInfoRewriter&lt;br /&gt;
   def initialize(app)&lt;br /&gt;
     @app = app&lt;br /&gt;
   end&lt;br /&gt;
 &lt;br /&gt;
   def call(env)&lt;br /&gt;
     env.delete(&#039;SCRIPT_NAME&#039;)&lt;br /&gt;
     parts = env[&#039;REQUEST_URI&#039;].split(&#039;?&#039;)&lt;br /&gt;
     env[&#039;PATH_INFO&#039;] = parts[0]&lt;br /&gt;
     env[&#039;QUERY_STRING&#039;] = parts[1].to_s&lt;br /&gt;
     @app.call(env)&lt;br /&gt;
   end&lt;br /&gt;
 end&lt;br /&gt;
 &lt;br /&gt;
 Rack::Handler::FastCGI.run  Rack::PathInfoRewriter.new(HIER_APPLIKATIONSNAME_AUS_config/application.rb_EINTRAGEN::Application)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
FastCGI-Skript ausführbar machen:&lt;br /&gt;
&lt;br /&gt;
 chmod 755 ~/doms/rails.example.org/fastcgi/dispatch.fcgi&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Am Anfang von ~/rails/config/environment.rb einfügen:&lt;br /&gt;
&lt;br /&gt;
 ENV[&#039;RAILS_ENV&#039;] ||= &#039;production&#039;&lt;br /&gt;
 ENV[&#039;GEM_PATH&#039;] ||= &#039;/home/pacs/xyz00/users/meinuser/.gem/ruby/1.8:/var/lib/gems/1.8&#039;&lt;br /&gt;
Evtl. können diese Einstellungen auch ohne eine Modifikation der Anwendung erfolgen, indem die Umgebungsvariablen in der .htaccess gesetzt werden (z.B. &amp;quot;SetEnv RAILS_ENV production&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
Die Applikation ins Webroot einbinden:&lt;br /&gt;
&lt;br /&gt;
 # ggf. vorhandene Dateien sichern (oder nach ~/rails/public kopieren)&lt;br /&gt;
 mv ~/doms/rails.example.org/htdocs ~/doms/rails.example.org/htdocs.old&lt;br /&gt;
 # Das rails/public Verzeichnis ins Webroot verlinken.&lt;br /&gt;
 ln -s ~/rails/public ~/doms/rails.example.org/htdocs&lt;br /&gt;
&lt;br /&gt;
=== Konfiguration von SSL ===&lt;br /&gt;
&lt;br /&gt;
Die Verzeichnisse ~/doms/rails.example.org/fastcgi-ssl/ und ~/doms/rail.example.org/htdocs-ssl/ werden analog zu bzw. anstelle von fastcgi und htdocs gefüllt.&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:HSDoku]]&lt;br /&gt;
[[Kategorie:Installationsanleitungen]]&lt;br /&gt;
[[Kategorie:Software]]&lt;br /&gt;
[[Kategorie:Glossar]]&lt;/div&gt;</summary>
		<author><name>Srv00-wiki</name></author>
	</entry>
	<entry>
		<id>https://wiki.hostsharing.net/index.php?title=RubyOnRails&amp;diff=3445</id>
		<title>RubyOnRails</title>
		<link rel="alternate" type="text/html" href="https://wiki.hostsharing.net/index.php?title=RubyOnRails&amp;diff=3445"/>
		<updated>2012-08-28T19:14:07Z</updated>

		<summary type="html">&lt;p&gt;Srv00-wiki: /* Vorinstalliert */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Bestes Ruby on Rails Hosting bei Hostsharing ==&lt;br /&gt;
&lt;br /&gt;
Rubyanwendungen laufen (wie alle Anwendungen bei Hostsharing) als Prozesse des jeweiligen Benutzersaccounts. Probleme mit Dateirechten und Sicherheitsrisiken, wie sie sonst bei der Ausführung durch den Webserver auftreten, sind so von vorne herein ausgeschlossen.&lt;br /&gt;
&lt;br /&gt;
Standardmäßig erfolgt der Aufruf von Ruby Anwendungen durch den Apache Webserver über die FastCGI Schnittstelle. Dabei wird ständig eine Ruby Application Server Instanz des Users bereitgehalten, die somit jederzeit zur Bearbeitung von noch nicht gecacheten, oder gar nicht cachebaren, Anfragen zur Verfügung steht.&lt;br /&gt;
&lt;br /&gt;
Für den Betrieb von noch anspruchsvolleren Anwendungen haben wir auch Tools wie haproxy, varnish, nginx etc. installiert. Wir können auch mod_passenger (mod_wsgi haben wir schon) oder mongrel oder Green Unicorn (gunicorn) installieren. Anwender, die damit auf unserer leistungsfähigen Infrastruktur (managed Plattform) z.B. einen Webserver Cluster mit load-balancing realisieren möchten, brauchen bei uns dafür nur eigene Daemons buchen, oder können (für größere Projekte) dafür natürlich auch eine beliebige Anzahl ganzer Server buchen.&lt;br /&gt;
&lt;br /&gt;
== Einrichtung ohne zusätzliche Daemons (ein Application Server) ==&lt;br /&gt;
&lt;br /&gt;
=== Vorbereitungen ===&lt;br /&gt;
&lt;br /&gt;
Einige Einstellungen für den Paketuser.&lt;br /&gt;
&lt;br /&gt;
~/.gemrc&lt;br /&gt;
 install: --no-rdoc --no-ri&lt;br /&gt;
 update:  --no-rdoc --no-ri&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
~/.bashrc&lt;br /&gt;
 alias gem=&amp;quot;nice -n19 gem&amp;quot;&lt;br /&gt;
&lt;br /&gt;
~/.profile&lt;br /&gt;
 source &amp;quot;$HOME/.bashrc&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== Ruby ===&lt;br /&gt;
&lt;br /&gt;
==== Vorinstalliert ====&lt;br /&gt;
&lt;br /&gt;
Soll nur die zentral installierte Ruby Version verwendet werden, ergänzt man man die ~/.profile:&lt;br /&gt;
 # enable user&#039;s own ruby installations, keeping all stuff below $HOME/.gem&lt;br /&gt;
 export PATH=&amp;quot;$HOME/bin:$HOME/.gem/ruby/1.8/bin:$PATH&amp;quot;&lt;br /&gt;
 export GEM_PATH=&amp;quot;$( gem env gempath )&amp;quot;&lt;br /&gt;
 export GEM_HOME=&amp;quot;$HOME/.gem/ruby/1.8&amp;quot;&lt;br /&gt;
&lt;br /&gt;
 # Disabled for now, because using system libs caused undefined method error.&lt;br /&gt;
 #export RUBYLIB=&amp;quot;$HOME/.gem/ruby/1.8/lib:/usr/local/lib/site_ruby/1.8:/usr/lib/ruby/1.8&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 # avoid to forget that extra parameter: ruby -rubygems prog_that_uses_gems&lt;br /&gt;
 export RUBYOPT=rubygems&lt;br /&gt;
 &lt;br /&gt;
 export RAILS_ENV=production&lt;br /&gt;
&lt;br /&gt;
==== Eigene Installation ====&lt;br /&gt;
&lt;br /&gt;
Um eine andere als die vorinstallierte Ruby Version zu verwenden, installiert man zunächst den Ruby Versions Manager (rvm),&lt;br /&gt;
 curl -L https://get.rvm.io | bash -s stable&lt;br /&gt;
 source ~/.rvm/scripts/rvm&lt;br /&gt;
 rvm notes&lt;br /&gt;
 rvm requirements&lt;br /&gt;
 rvm pkg install openssl&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
und lässt dann die gewünschte Ruby Version installieren.&lt;br /&gt;
 rvm install x.y.z&lt;br /&gt;
&lt;br /&gt;
RVM passt die Umgebungsvariablen automatisch an die ausgewählt Version an. Die Version wählt man global per&lt;br /&gt;
 rvm use x.y.z --default&lt;br /&gt;
oder nur für ein spezielles Verzeichnis:&lt;br /&gt;
 cd ~/verzeichnis/mit/ruby-x.y.z-Anwendung&lt;br /&gt;
 rvm use x.y.z-p??? --rvmrc&lt;br /&gt;
&lt;br /&gt;
Zur Verwaltung von gems installiert man noch rubygems.&lt;br /&gt;
 rvm rubygems current&lt;br /&gt;
&lt;br /&gt;
=== Rails ===&lt;br /&gt;
&lt;br /&gt;
Nun kann Rails per &amp;quot;gem install &amp;lt;Paketname&amp;gt;&amp;quot; installiert werden (inklusive Abhängigkeiten).&lt;br /&gt;
Um spezielle versionen zu installieren kann man den gem Befehl mit &amp;quot;-v=x.y.z&amp;quot; ergänzen.&lt;br /&gt;
&lt;br /&gt;
Zum Testen ein Beispiel das auch noch ein fertiges CMS Framework installiert (http://zenadmin.org), inklusive automatischer Einrichtung einer sqlite Datenbankdatei:&lt;br /&gt;
 gem install rails -v=2.3.11&lt;br /&gt;
 gem install i18n sexp_processor sqlite3 zena&lt;br /&gt;
 zena new ~/rails      # Legt eine Rails-Anwendung an.&lt;br /&gt;
 cd ~/zena-test&lt;br /&gt;
 rake db:create        # Datenbank anlegen.&lt;br /&gt;
 zena migrate          # Datenbank Tabellen einrichten.&lt;br /&gt;
 zena mksite LANG=en RAILS_ENV=production PASSWORD=geheim HOST=rails.example.org # Webseite anlegen.&lt;br /&gt;
&lt;br /&gt;
=== Rails-Anwendung ===&lt;br /&gt;
&lt;br /&gt;
Seine eigene Rails-Anwendung kopiert man z.B. nach ~/rails, oder erstellt dort eine Neue (rails ~/rails, ...).&lt;br /&gt;
&lt;br /&gt;
=== Datenbank ===&lt;br /&gt;
&lt;br /&gt;
Mit &#039;&#039;hsadmin&#039;&#039; beispielsweise einen Postgres-User (z.B. &#039;xyz00_rails&#039;, Passwort sei &#039;geheim&#039;) sowie eine Datenbank anlegen (z.B. &#039;xyz00_rails&#039;.&lt;br /&gt;
&lt;br /&gt;
Die Datenbank in der Anwendung konfigurieren,&lt;br /&gt;
&lt;br /&gt;
 cd ~/rails/config/&lt;br /&gt;
 nano database.yml&lt;br /&gt;
&lt;br /&gt;
mit folgendem Inhalt:&lt;br /&gt;
&lt;br /&gt;
 production:&lt;br /&gt;
    adapter: postgresql&lt;br /&gt;
    database: xyz00_rails&lt;br /&gt;
    host: localhost&lt;br /&gt;
    username: xyz00_rails&lt;br /&gt;
    password: geheim&lt;br /&gt;
&lt;br /&gt;
=== E-Mail, Dateiablage ===&lt;br /&gt;
&lt;br /&gt;
Beispielhafte Konfiguration:&lt;br /&gt;
&lt;br /&gt;
 default:&lt;br /&gt;
    email_delivery:&lt;br /&gt;
      delivery_method: :smtp&lt;br /&gt;
      smtp_settings:&lt;br /&gt;
        address: localhost&lt;br /&gt;
        port: 25&lt;br /&gt;
        domain: example.org&lt;br /&gt;
    attachments_storage_path: /home/pacs/xyz00/users/rails/attach&lt;br /&gt;
&lt;br /&gt;
=== Datenbankschema ===&lt;br /&gt;
&lt;br /&gt;
Initialisieren und migrieren der Datenbank (je nach Rails-Anwendung).&lt;br /&gt;
&lt;br /&gt;
 cd ~/rails&lt;br /&gt;
 ...&lt;br /&gt;
 rake ...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Konfiguration von FastCGI ===&lt;br /&gt;
&lt;br /&gt;
~/doms/rails.example.org/htdocs/.htaccess&lt;br /&gt;
&lt;br /&gt;
 RewriteEngine On&lt;br /&gt;
 RewriteRule ^$ index.html [QSA]&lt;br /&gt;
 RewriteRule ^([^.]+)$ $1.html [QSA]&lt;br /&gt;
 RewriteCond %{REQUEST_FILENAME} !-f [OR]&lt;br /&gt;
 RewriteCond %{REQUEST_FILENAME} dispatch.fcgi$&lt;br /&gt;
 RewriteRule ^(.*)$ /fastcgi-bin/dispatch.fcgi [QSA,L]&lt;br /&gt;
&lt;br /&gt;
Ältere Versionen von Rails, die noch nicht auf rack middleware aufbauen, laufen mit folgender ~/doms/www.example.org/fastcgi/dispatch.fcgi&lt;br /&gt;
&lt;br /&gt;
 #!/usr/bin/env ruby&lt;br /&gt;
 require &amp;quot;/home/pacs/xyz00/users/meinuser/rails/config/environment&amp;quot; &lt;br /&gt;
 require &#039;fcgi_handler&#039;&lt;br /&gt;
 RailsFCGIHandler.process!&lt;br /&gt;
&lt;br /&gt;
Für aktuelle Versionen von Rails, die auf der &amp;quot;rack&amp;quot; Middleware aufbauen, siehe https://github.com/dre3k/rails3_fcgi, ~/doms/www.example.org/fastcgi/dispatch.fcgi&lt;br /&gt;
  #!/usr/bin/env ruby&lt;br /&gt;
 &lt;br /&gt;
 require_relative &#039;../config/environment&#039;&lt;br /&gt;
 &lt;br /&gt;
 class Rack::PathInfoRewriter&lt;br /&gt;
   def initialize(app)&lt;br /&gt;
     @app = app&lt;br /&gt;
   end&lt;br /&gt;
 &lt;br /&gt;
   def call(env)&lt;br /&gt;
     env.delete(&#039;SCRIPT_NAME&#039;)&lt;br /&gt;
     parts = env[&#039;REQUEST_URI&#039;].split(&#039;?&#039;)&lt;br /&gt;
     env[&#039;PATH_INFO&#039;] = parts[0]&lt;br /&gt;
     env[&#039;QUERY_STRING&#039;] = parts[1].to_s&lt;br /&gt;
     @app.call(env)&lt;br /&gt;
   end&lt;br /&gt;
 end&lt;br /&gt;
 &lt;br /&gt;
 Rack::Handler::FastCGI.run  Rack::PathInfoRewriter.new(HIER_APPLIKATIONSNAME_AUS_config/application.rb_EINTRAGEN::Application)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
FastCGI-Skript ausführbar machen:&lt;br /&gt;
&lt;br /&gt;
 chmod 755 ~/doms/rails.example.org/fastcgi/dispatch.fcgi&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Am Anfang von ~/rails/config/environment.rb einfügen:&lt;br /&gt;
&lt;br /&gt;
 ENV[&#039;RAILS_ENV&#039;] ||= &#039;production&#039;&lt;br /&gt;
 ENV[&#039;GEM_PATH&#039;] ||= &#039;/home/pacs/xyz00/users/meinuser/.gem/ruby/1.8:/var/lib/gems/1.8&#039;&lt;br /&gt;
Evtl. können diese Einstellungen auch ohne eine Modifikation der Anwendung erfolgen, indem die Umgebungsvariablen in der .htaccess gesetzt werden (z.B. &amp;quot;SetEnv RAILS_ENV production&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
Die Applikation ins Webroot einbinden:&lt;br /&gt;
&lt;br /&gt;
 # ggf. vorhandene Dateien sichern (oder nach ~/rails/public kopieren)&lt;br /&gt;
 mv ~/doms/rails.example.org/htdocs ~/doms/rails.example.org/htdocs.old&lt;br /&gt;
 # Das rails/public Verzeichnis ins Webroot verlinken.&lt;br /&gt;
 ln -s ~/rails/public ~/doms/rails.example.org/htdocs&lt;br /&gt;
&lt;br /&gt;
=== Konfiguration von SSL ===&lt;br /&gt;
&lt;br /&gt;
Die Verzeichnisse ~/doms/rails.example.org/fastcgi-ssl/ und ~/doms/rail.example.org/htdocs-ssl/ werden analog zu bzw. anstelle von fastcgi und htdocs gefüllt.&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:HSDoku]]&lt;br /&gt;
[[Kategorie:Installationsanleitungen]]&lt;br /&gt;
[[Kategorie:Software]]&lt;br /&gt;
[[Kategorie:Glossar]]&lt;/div&gt;</summary>
		<author><name>Srv00-wiki</name></author>
	</entry>
	<entry>
		<id>https://wiki.hostsharing.net/index.php?title=RubyOnRails&amp;diff=3444</id>
		<title>RubyOnRails</title>
		<link rel="alternate" type="text/html" href="https://wiki.hostsharing.net/index.php?title=RubyOnRails&amp;diff=3444"/>
		<updated>2012-08-28T19:09:45Z</updated>

		<summary type="html">&lt;p&gt;Srv00-wiki: /* Rails */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Bestes Ruby on Rails Hosting bei Hostsharing ==&lt;br /&gt;
&lt;br /&gt;
Rubyanwendungen laufen (wie alle Anwendungen bei Hostsharing) als Prozesse des jeweiligen Benutzersaccounts. Probleme mit Dateirechten und Sicherheitsrisiken, wie sie sonst bei der Ausführung durch den Webserver auftreten, sind so von vorne herein ausgeschlossen.&lt;br /&gt;
&lt;br /&gt;
Standardmäßig erfolgt der Aufruf von Ruby Anwendungen durch den Apache Webserver über die FastCGI Schnittstelle. Dabei wird ständig eine Ruby Application Server Instanz des Users bereitgehalten, die somit jederzeit zur Bearbeitung von noch nicht gecacheten, oder gar nicht cachebaren, Anfragen zur Verfügung steht.&lt;br /&gt;
&lt;br /&gt;
Für den Betrieb von noch anspruchsvolleren Anwendungen haben wir auch Tools wie haproxy, varnish, nginx etc. installiert. Wir können auch mod_passenger (mod_wsgi haben wir schon) oder mongrel oder Green Unicorn (gunicorn) installieren. Anwender, die damit auf unserer leistungsfähigen Infrastruktur (managed Plattform) z.B. einen Webserver Cluster mit load-balancing realisieren möchten, brauchen bei uns dafür nur eigene Daemons buchen, oder können (für größere Projekte) dafür natürlich auch eine beliebige Anzahl ganzer Server buchen.&lt;br /&gt;
&lt;br /&gt;
== Einrichtung ohne zusätzliche Daemons (ein Application Server) ==&lt;br /&gt;
&lt;br /&gt;
=== Vorbereitungen ===&lt;br /&gt;
&lt;br /&gt;
Einige Einstellungen für den Paketuser.&lt;br /&gt;
&lt;br /&gt;
~/.gemrc&lt;br /&gt;
 install: --no-rdoc --no-ri&lt;br /&gt;
 update:  --no-rdoc --no-ri&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
~/.bashrc&lt;br /&gt;
 alias gem=&amp;quot;nice -n19 gem&amp;quot;&lt;br /&gt;
&lt;br /&gt;
~/.profile&lt;br /&gt;
 source &amp;quot;$HOME/.bashrc&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== Ruby ===&lt;br /&gt;
&lt;br /&gt;
==== Vorinstalliert ====&lt;br /&gt;
&lt;br /&gt;
Soll nur die zentral installierte Ruby Version verwendet werden, ergänzt man man die ~/.profile:&lt;br /&gt;
 # enable user&#039;s own ruby stuff below $HOME&lt;br /&gt;
 export PATH=&amp;quot;$HOME/bin:$HOME/.gem/ruby/1.8/bin:$PATH&amp;quot;&lt;br /&gt;
 export GEM_PATH=&amp;quot;$( gem env gempath )&amp;quot;&lt;br /&gt;
 export GEM_HOME=&amp;quot;$HOME/.gem/ruby/1.8&amp;quot;&lt;br /&gt;
 # caused undefined method error:&lt;br /&gt;
 #export RUBYLIB=&amp;quot;$HOME/.gem/ruby/1.8/lib:/usr/local/lib/site_ruby/1.8:/usr/lib/ruby/1.8&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 # avoid to forget that extra parameter: ruby -rubygems prog_that_uses_gems&lt;br /&gt;
 export RUBYOPT=rubygems&lt;br /&gt;
 &lt;br /&gt;
 export RAILS_ENV=production&lt;br /&gt;
&lt;br /&gt;
==== Eigene Installation ====&lt;br /&gt;
&lt;br /&gt;
Um eine andere als die vorinstallierte Ruby Version zu verwenden, installiert man zunächst den Ruby Versions Manager (rvm),&lt;br /&gt;
 curl -L https://get.rvm.io | bash -s stable&lt;br /&gt;
 source ~/.rvm/scripts/rvm&lt;br /&gt;
 rvm notes&lt;br /&gt;
 rvm requirements&lt;br /&gt;
 rvm pkg install openssl&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
und lässt dann die gewünschte Ruby Version installieren.&lt;br /&gt;
 rvm install x.y.z&lt;br /&gt;
&lt;br /&gt;
RVM passt die Umgebungsvariablen automatisch an die ausgewählt Version an. Die Version wählt man global per&lt;br /&gt;
 rvm use x.y.z --default&lt;br /&gt;
oder nur für ein spezielles Verzeichnis:&lt;br /&gt;
 cd ~/verzeichnis/mit/ruby-x.y.z-Anwendung&lt;br /&gt;
 rvm use x.y.z-p??? --rvmrc&lt;br /&gt;
&lt;br /&gt;
Zur Verwaltung von gems installiert man noch rubygems.&lt;br /&gt;
 rvm rubygems current&lt;br /&gt;
&lt;br /&gt;
=== Rails ===&lt;br /&gt;
&lt;br /&gt;
Nun kann Rails per &amp;quot;gem install &amp;lt;Paketname&amp;gt;&amp;quot; installiert werden (inklusive Abhängigkeiten).&lt;br /&gt;
Um spezielle versionen zu installieren kann man den gem Befehl mit &amp;quot;-v=x.y.z&amp;quot; ergänzen.&lt;br /&gt;
&lt;br /&gt;
Zum Testen ein Beispiel das auch noch ein fertiges CMS Framework installiert (http://zenadmin.org), inklusive automatischer Einrichtung einer sqlite Datenbankdatei:&lt;br /&gt;
 gem install rails -v=2.3.11&lt;br /&gt;
 gem install i18n sexp_processor sqlite3 zena&lt;br /&gt;
 zena new ~/rails      # Legt eine Rails-Anwendung an.&lt;br /&gt;
 cd ~/zena-test&lt;br /&gt;
 rake db:create        # Datenbank anlegen.&lt;br /&gt;
 zena migrate          # Datenbank Tabellen einrichten.&lt;br /&gt;
 zena mksite LANG=en RAILS_ENV=production PASSWORD=geheim HOST=rails.example.org # Webseite anlegen.&lt;br /&gt;
&lt;br /&gt;
=== Rails-Anwendung ===&lt;br /&gt;
&lt;br /&gt;
Seine eigene Rails-Anwendung kopiert man z.B. nach ~/rails, oder erstellt dort eine Neue (rails ~/rails, ...).&lt;br /&gt;
&lt;br /&gt;
=== Datenbank ===&lt;br /&gt;
&lt;br /&gt;
Mit &#039;&#039;hsadmin&#039;&#039; beispielsweise einen Postgres-User (z.B. &#039;xyz00_rails&#039;, Passwort sei &#039;geheim&#039;) sowie eine Datenbank anlegen (z.B. &#039;xyz00_rails&#039;.&lt;br /&gt;
&lt;br /&gt;
Die Datenbank in der Anwendung konfigurieren,&lt;br /&gt;
&lt;br /&gt;
 cd ~/rails/config/&lt;br /&gt;
 nano database.yml&lt;br /&gt;
&lt;br /&gt;
mit folgendem Inhalt:&lt;br /&gt;
&lt;br /&gt;
 production:&lt;br /&gt;
    adapter: postgresql&lt;br /&gt;
    database: xyz00_rails&lt;br /&gt;
    host: localhost&lt;br /&gt;
    username: xyz00_rails&lt;br /&gt;
    password: geheim&lt;br /&gt;
&lt;br /&gt;
=== E-Mail, Dateiablage ===&lt;br /&gt;
&lt;br /&gt;
Beispielhafte Konfiguration:&lt;br /&gt;
&lt;br /&gt;
 default:&lt;br /&gt;
    email_delivery:&lt;br /&gt;
      delivery_method: :smtp&lt;br /&gt;
      smtp_settings:&lt;br /&gt;
        address: localhost&lt;br /&gt;
        port: 25&lt;br /&gt;
        domain: example.org&lt;br /&gt;
    attachments_storage_path: /home/pacs/xyz00/users/rails/attach&lt;br /&gt;
&lt;br /&gt;
=== Datenbankschema ===&lt;br /&gt;
&lt;br /&gt;
Initialisieren und migrieren der Datenbank (je nach Rails-Anwendung).&lt;br /&gt;
&lt;br /&gt;
 cd ~/rails&lt;br /&gt;
 ...&lt;br /&gt;
 rake ...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Konfiguration von FastCGI ===&lt;br /&gt;
&lt;br /&gt;
~/doms/rails.example.org/htdocs/.htaccess&lt;br /&gt;
&lt;br /&gt;
 RewriteEngine On&lt;br /&gt;
 RewriteRule ^$ index.html [QSA]&lt;br /&gt;
 RewriteRule ^([^.]+)$ $1.html [QSA]&lt;br /&gt;
 RewriteCond %{REQUEST_FILENAME} !-f [OR]&lt;br /&gt;
 RewriteCond %{REQUEST_FILENAME} dispatch.fcgi$&lt;br /&gt;
 RewriteRule ^(.*)$ /fastcgi-bin/dispatch.fcgi [QSA,L]&lt;br /&gt;
&lt;br /&gt;
Ältere Versionen von Rails, die noch nicht auf rack middleware aufbauen, laufen mit folgender ~/doms/www.example.org/fastcgi/dispatch.fcgi&lt;br /&gt;
&lt;br /&gt;
 #!/usr/bin/env ruby&lt;br /&gt;
 require &amp;quot;/home/pacs/xyz00/users/meinuser/rails/config/environment&amp;quot; &lt;br /&gt;
 require &#039;fcgi_handler&#039;&lt;br /&gt;
 RailsFCGIHandler.process!&lt;br /&gt;
&lt;br /&gt;
Für aktuelle Versionen von Rails, die auf der &amp;quot;rack&amp;quot; Middleware aufbauen, siehe https://github.com/dre3k/rails3_fcgi, ~/doms/www.example.org/fastcgi/dispatch.fcgi&lt;br /&gt;
  #!/usr/bin/env ruby&lt;br /&gt;
 &lt;br /&gt;
 require_relative &#039;../config/environment&#039;&lt;br /&gt;
 &lt;br /&gt;
 class Rack::PathInfoRewriter&lt;br /&gt;
   def initialize(app)&lt;br /&gt;
     @app = app&lt;br /&gt;
   end&lt;br /&gt;
 &lt;br /&gt;
   def call(env)&lt;br /&gt;
     env.delete(&#039;SCRIPT_NAME&#039;)&lt;br /&gt;
     parts = env[&#039;REQUEST_URI&#039;].split(&#039;?&#039;)&lt;br /&gt;
     env[&#039;PATH_INFO&#039;] = parts[0]&lt;br /&gt;
     env[&#039;QUERY_STRING&#039;] = parts[1].to_s&lt;br /&gt;
     @app.call(env)&lt;br /&gt;
   end&lt;br /&gt;
 end&lt;br /&gt;
 &lt;br /&gt;
 Rack::Handler::FastCGI.run  Rack::PathInfoRewriter.new(HIER_APPLIKATIONSNAME_AUS_config/application.rb_EINTRAGEN::Application)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
FastCGI-Skript ausführbar machen:&lt;br /&gt;
&lt;br /&gt;
 chmod 755 ~/doms/rails.example.org/fastcgi/dispatch.fcgi&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Am Anfang von ~/rails/config/environment.rb einfügen:&lt;br /&gt;
&lt;br /&gt;
 ENV[&#039;RAILS_ENV&#039;] ||= &#039;production&#039;&lt;br /&gt;
 ENV[&#039;GEM_PATH&#039;] ||= &#039;/home/pacs/xyz00/users/meinuser/.gem/ruby/1.8:/var/lib/gems/1.8&#039;&lt;br /&gt;
Evtl. können diese Einstellungen auch ohne eine Modifikation der Anwendung erfolgen, indem die Umgebungsvariablen in der .htaccess gesetzt werden (z.B. &amp;quot;SetEnv RAILS_ENV production&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
Die Applikation ins Webroot einbinden:&lt;br /&gt;
&lt;br /&gt;
 # ggf. vorhandene Dateien sichern (oder nach ~/rails/public kopieren)&lt;br /&gt;
 mv ~/doms/rails.example.org/htdocs ~/doms/rails.example.org/htdocs.old&lt;br /&gt;
 # Das rails/public Verzeichnis ins Webroot verlinken.&lt;br /&gt;
 ln -s ~/rails/public ~/doms/rails.example.org/htdocs&lt;br /&gt;
&lt;br /&gt;
=== Konfiguration von SSL ===&lt;br /&gt;
&lt;br /&gt;
Die Verzeichnisse ~/doms/rails.example.org/fastcgi-ssl/ und ~/doms/rail.example.org/htdocs-ssl/ werden analog zu bzw. anstelle von fastcgi und htdocs gefüllt.&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:HSDoku]]&lt;br /&gt;
[[Kategorie:Installationsanleitungen]]&lt;br /&gt;
[[Kategorie:Software]]&lt;br /&gt;
[[Kategorie:Glossar]]&lt;/div&gt;</summary>
		<author><name>Srv00-wiki</name></author>
	</entry>
	<entry>
		<id>https://wiki.hostsharing.net/index.php?title=RubyOnRails&amp;diff=3443</id>
		<title>RubyOnRails</title>
		<link rel="alternate" type="text/html" href="https://wiki.hostsharing.net/index.php?title=RubyOnRails&amp;diff=3443"/>
		<updated>2012-08-28T19:09:04Z</updated>

		<summary type="html">&lt;p&gt;Srv00-wiki: /* Rails */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Bestes Ruby on Rails Hosting bei Hostsharing ==&lt;br /&gt;
&lt;br /&gt;
Rubyanwendungen laufen (wie alle Anwendungen bei Hostsharing) als Prozesse des jeweiligen Benutzersaccounts. Probleme mit Dateirechten und Sicherheitsrisiken, wie sie sonst bei der Ausführung durch den Webserver auftreten, sind so von vorne herein ausgeschlossen.&lt;br /&gt;
&lt;br /&gt;
Standardmäßig erfolgt der Aufruf von Ruby Anwendungen durch den Apache Webserver über die FastCGI Schnittstelle. Dabei wird ständig eine Ruby Application Server Instanz des Users bereitgehalten, die somit jederzeit zur Bearbeitung von noch nicht gecacheten, oder gar nicht cachebaren, Anfragen zur Verfügung steht.&lt;br /&gt;
&lt;br /&gt;
Für den Betrieb von noch anspruchsvolleren Anwendungen haben wir auch Tools wie haproxy, varnish, nginx etc. installiert. Wir können auch mod_passenger (mod_wsgi haben wir schon) oder mongrel oder Green Unicorn (gunicorn) installieren. Anwender, die damit auf unserer leistungsfähigen Infrastruktur (managed Plattform) z.B. einen Webserver Cluster mit load-balancing realisieren möchten, brauchen bei uns dafür nur eigene Daemons buchen, oder können (für größere Projekte) dafür natürlich auch eine beliebige Anzahl ganzer Server buchen.&lt;br /&gt;
&lt;br /&gt;
== Einrichtung ohne zusätzliche Daemons (ein Application Server) ==&lt;br /&gt;
&lt;br /&gt;
=== Vorbereitungen ===&lt;br /&gt;
&lt;br /&gt;
Einige Einstellungen für den Paketuser.&lt;br /&gt;
&lt;br /&gt;
~/.gemrc&lt;br /&gt;
 install: --no-rdoc --no-ri&lt;br /&gt;
 update:  --no-rdoc --no-ri&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
~/.bashrc&lt;br /&gt;
 alias gem=&amp;quot;nice -n19 gem&amp;quot;&lt;br /&gt;
&lt;br /&gt;
~/.profile&lt;br /&gt;
 source &amp;quot;$HOME/.bashrc&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== Ruby ===&lt;br /&gt;
&lt;br /&gt;
==== Vorinstalliert ====&lt;br /&gt;
&lt;br /&gt;
Soll nur die zentral installierte Ruby Version verwendet werden, ergänzt man man die ~/.profile:&lt;br /&gt;
 # enable user&#039;s own ruby stuff below $HOME&lt;br /&gt;
 export PATH=&amp;quot;$HOME/bin:$HOME/.gem/ruby/1.8/bin:$PATH&amp;quot;&lt;br /&gt;
 export GEM_PATH=&amp;quot;$( gem env gempath )&amp;quot;&lt;br /&gt;
 export GEM_HOME=&amp;quot;$HOME/.gem/ruby/1.8&amp;quot;&lt;br /&gt;
 # caused undefined method error:&lt;br /&gt;
 #export RUBYLIB=&amp;quot;$HOME/.gem/ruby/1.8/lib:/usr/local/lib/site_ruby/1.8:/usr/lib/ruby/1.8&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 # avoid to forget that extra parameter: ruby -rubygems prog_that_uses_gems&lt;br /&gt;
 export RUBYOPT=rubygems&lt;br /&gt;
 &lt;br /&gt;
 export RAILS_ENV=production&lt;br /&gt;
&lt;br /&gt;
==== Eigene Installation ====&lt;br /&gt;
&lt;br /&gt;
Um eine andere als die vorinstallierte Ruby Version zu verwenden, installiert man zunächst den Ruby Versions Manager (rvm),&lt;br /&gt;
 curl -L https://get.rvm.io | bash -s stable&lt;br /&gt;
 source ~/.rvm/scripts/rvm&lt;br /&gt;
 rvm notes&lt;br /&gt;
 rvm requirements&lt;br /&gt;
 rvm pkg install openssl&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
und lässt dann die gewünschte Ruby Version installieren.&lt;br /&gt;
 rvm install x.y.z&lt;br /&gt;
&lt;br /&gt;
RVM passt die Umgebungsvariablen automatisch an die ausgewählt Version an. Die Version wählt man global per&lt;br /&gt;
 rvm use x.y.z --default&lt;br /&gt;
oder nur für ein spezielles Verzeichnis:&lt;br /&gt;
 cd ~/verzeichnis/mit/ruby-x.y.z-Anwendung&lt;br /&gt;
 rvm use x.y.z-p??? --rvmrc&lt;br /&gt;
&lt;br /&gt;
Zur Verwaltung von gems installiert man noch rubygems.&lt;br /&gt;
 rvm rubygems current&lt;br /&gt;
&lt;br /&gt;
=== Rails ===&lt;br /&gt;
&lt;br /&gt;
Nun kann Rails per &amp;quot;gem install &amp;lt;Paketname&amp;gt;&amp;quot; installiert werden (inklusive Abhängigkeiten).&lt;br /&gt;
Um spezielle versionen zu installieren kann man den gem Befehl mit &amp;quot;-v=x.y.z&amp;quot; ergänzen.&lt;br /&gt;
&lt;br /&gt;
Zum Testen ein Beispiel das auch noch ein fertiges CMS Framework installiert (http://zenadmin.org), inklusive automatischer Einrichtung einer sqlite Datenbankdatei:&lt;br /&gt;
 gem install rails -v=2.3.11&lt;br /&gt;
 gem install i18n sexp_processor sqlite3 zena&lt;br /&gt;
 zena new ~/rails  # Legt eine Rails-Anwendung an.&lt;br /&gt;
 cd ~/zena-test&lt;br /&gt;
 rake db:create        # Datenbank anlegen.&lt;br /&gt;
 zena migrate          # Datenbank Tabellen einrichten.&lt;br /&gt;
 zena mksite LANG=en RAILS_ENV=production PASSWORD=geheim HOST=rails.example.org # Webseite anlegen.&lt;br /&gt;
&lt;br /&gt;
=== Rails-Anwendung ===&lt;br /&gt;
&lt;br /&gt;
Seine eigene Rails-Anwendung kopiert man z.B. nach ~/rails, oder erstellt dort eine Neue (rails ~/rails, ...).&lt;br /&gt;
&lt;br /&gt;
=== Datenbank ===&lt;br /&gt;
&lt;br /&gt;
Mit &#039;&#039;hsadmin&#039;&#039; beispielsweise einen Postgres-User (z.B. &#039;xyz00_rails&#039;, Passwort sei &#039;geheim&#039;) sowie eine Datenbank anlegen (z.B. &#039;xyz00_rails&#039;.&lt;br /&gt;
&lt;br /&gt;
Die Datenbank in der Anwendung konfigurieren,&lt;br /&gt;
&lt;br /&gt;
 cd ~/rails/config/&lt;br /&gt;
 nano database.yml&lt;br /&gt;
&lt;br /&gt;
mit folgendem Inhalt:&lt;br /&gt;
&lt;br /&gt;
 production:&lt;br /&gt;
    adapter: postgresql&lt;br /&gt;
    database: xyz00_rails&lt;br /&gt;
    host: localhost&lt;br /&gt;
    username: xyz00_rails&lt;br /&gt;
    password: geheim&lt;br /&gt;
&lt;br /&gt;
=== E-Mail, Dateiablage ===&lt;br /&gt;
&lt;br /&gt;
Beispielhafte Konfiguration:&lt;br /&gt;
&lt;br /&gt;
 default:&lt;br /&gt;
    email_delivery:&lt;br /&gt;
      delivery_method: :smtp&lt;br /&gt;
      smtp_settings:&lt;br /&gt;
        address: localhost&lt;br /&gt;
        port: 25&lt;br /&gt;
        domain: example.org&lt;br /&gt;
    attachments_storage_path: /home/pacs/xyz00/users/rails/attach&lt;br /&gt;
&lt;br /&gt;
=== Datenbankschema ===&lt;br /&gt;
&lt;br /&gt;
Initialisieren und migrieren der Datenbank (je nach Rails-Anwendung).&lt;br /&gt;
&lt;br /&gt;
 cd ~/rails&lt;br /&gt;
 ...&lt;br /&gt;
 rake ...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Konfiguration von FastCGI ===&lt;br /&gt;
&lt;br /&gt;
~/doms/rails.example.org/htdocs/.htaccess&lt;br /&gt;
&lt;br /&gt;
 RewriteEngine On&lt;br /&gt;
 RewriteRule ^$ index.html [QSA]&lt;br /&gt;
 RewriteRule ^([^.]+)$ $1.html [QSA]&lt;br /&gt;
 RewriteCond %{REQUEST_FILENAME} !-f [OR]&lt;br /&gt;
 RewriteCond %{REQUEST_FILENAME} dispatch.fcgi$&lt;br /&gt;
 RewriteRule ^(.*)$ /fastcgi-bin/dispatch.fcgi [QSA,L]&lt;br /&gt;
&lt;br /&gt;
Ältere Versionen von Rails, die noch nicht auf rack middleware aufbauen, laufen mit folgender ~/doms/www.example.org/fastcgi/dispatch.fcgi&lt;br /&gt;
&lt;br /&gt;
 #!/usr/bin/env ruby&lt;br /&gt;
 require &amp;quot;/home/pacs/xyz00/users/meinuser/rails/config/environment&amp;quot; &lt;br /&gt;
 require &#039;fcgi_handler&#039;&lt;br /&gt;
 RailsFCGIHandler.process!&lt;br /&gt;
&lt;br /&gt;
Für aktuelle Versionen von Rails, die auf der &amp;quot;rack&amp;quot; Middleware aufbauen, siehe https://github.com/dre3k/rails3_fcgi, ~/doms/www.example.org/fastcgi/dispatch.fcgi&lt;br /&gt;
  #!/usr/bin/env ruby&lt;br /&gt;
 &lt;br /&gt;
 require_relative &#039;../config/environment&#039;&lt;br /&gt;
 &lt;br /&gt;
 class Rack::PathInfoRewriter&lt;br /&gt;
   def initialize(app)&lt;br /&gt;
     @app = app&lt;br /&gt;
   end&lt;br /&gt;
 &lt;br /&gt;
   def call(env)&lt;br /&gt;
     env.delete(&#039;SCRIPT_NAME&#039;)&lt;br /&gt;
     parts = env[&#039;REQUEST_URI&#039;].split(&#039;?&#039;)&lt;br /&gt;
     env[&#039;PATH_INFO&#039;] = parts[0]&lt;br /&gt;
     env[&#039;QUERY_STRING&#039;] = parts[1].to_s&lt;br /&gt;
     @app.call(env)&lt;br /&gt;
   end&lt;br /&gt;
 end&lt;br /&gt;
 &lt;br /&gt;
 Rack::Handler::FastCGI.run  Rack::PathInfoRewriter.new(HIER_APPLIKATIONSNAME_AUS_config/application.rb_EINTRAGEN::Application)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
FastCGI-Skript ausführbar machen:&lt;br /&gt;
&lt;br /&gt;
 chmod 755 ~/doms/rails.example.org/fastcgi/dispatch.fcgi&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Am Anfang von ~/rails/config/environment.rb einfügen:&lt;br /&gt;
&lt;br /&gt;
 ENV[&#039;RAILS_ENV&#039;] ||= &#039;production&#039;&lt;br /&gt;
 ENV[&#039;GEM_PATH&#039;] ||= &#039;/home/pacs/xyz00/users/meinuser/.gem/ruby/1.8:/var/lib/gems/1.8&#039;&lt;br /&gt;
Evtl. können diese Einstellungen auch ohne eine Modifikation der Anwendung erfolgen, indem die Umgebungsvariablen in der .htaccess gesetzt werden (z.B. &amp;quot;SetEnv RAILS_ENV production&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
Die Applikation ins Webroot einbinden:&lt;br /&gt;
&lt;br /&gt;
 # ggf. vorhandene Dateien sichern (oder nach ~/rails/public kopieren)&lt;br /&gt;
 mv ~/doms/rails.example.org/htdocs ~/doms/rails.example.org/htdocs.old&lt;br /&gt;
 # Das rails/public Verzeichnis ins Webroot verlinken.&lt;br /&gt;
 ln -s ~/rails/public ~/doms/rails.example.org/htdocs&lt;br /&gt;
&lt;br /&gt;
=== Konfiguration von SSL ===&lt;br /&gt;
&lt;br /&gt;
Die Verzeichnisse ~/doms/rails.example.org/fastcgi-ssl/ und ~/doms/rail.example.org/htdocs-ssl/ werden analog zu bzw. anstelle von fastcgi und htdocs gefüllt.&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:HSDoku]]&lt;br /&gt;
[[Kategorie:Installationsanleitungen]]&lt;br /&gt;
[[Kategorie:Software]]&lt;br /&gt;
[[Kategorie:Glossar]]&lt;/div&gt;</summary>
		<author><name>Srv00-wiki</name></author>
	</entry>
	<entry>
		<id>https://wiki.hostsharing.net/index.php?title=RubyOnRails&amp;diff=3442</id>
		<title>RubyOnRails</title>
		<link rel="alternate" type="text/html" href="https://wiki.hostsharing.net/index.php?title=RubyOnRails&amp;diff=3442"/>
		<updated>2012-08-28T19:08:34Z</updated>

		<summary type="html">&lt;p&gt;Srv00-wiki: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Bestes Ruby on Rails Hosting bei Hostsharing ==&lt;br /&gt;
&lt;br /&gt;
Rubyanwendungen laufen (wie alle Anwendungen bei Hostsharing) als Prozesse des jeweiligen Benutzersaccounts. Probleme mit Dateirechten und Sicherheitsrisiken, wie sie sonst bei der Ausführung durch den Webserver auftreten, sind so von vorne herein ausgeschlossen.&lt;br /&gt;
&lt;br /&gt;
Standardmäßig erfolgt der Aufruf von Ruby Anwendungen durch den Apache Webserver über die FastCGI Schnittstelle. Dabei wird ständig eine Ruby Application Server Instanz des Users bereitgehalten, die somit jederzeit zur Bearbeitung von noch nicht gecacheten, oder gar nicht cachebaren, Anfragen zur Verfügung steht.&lt;br /&gt;
&lt;br /&gt;
Für den Betrieb von noch anspruchsvolleren Anwendungen haben wir auch Tools wie haproxy, varnish, nginx etc. installiert. Wir können auch mod_passenger (mod_wsgi haben wir schon) oder mongrel oder Green Unicorn (gunicorn) installieren. Anwender, die damit auf unserer leistungsfähigen Infrastruktur (managed Plattform) z.B. einen Webserver Cluster mit load-balancing realisieren möchten, brauchen bei uns dafür nur eigene Daemons buchen, oder können (für größere Projekte) dafür natürlich auch eine beliebige Anzahl ganzer Server buchen.&lt;br /&gt;
&lt;br /&gt;
== Einrichtung ohne zusätzliche Daemons (ein Application Server) ==&lt;br /&gt;
&lt;br /&gt;
=== Vorbereitungen ===&lt;br /&gt;
&lt;br /&gt;
Einige Einstellungen für den Paketuser.&lt;br /&gt;
&lt;br /&gt;
~/.gemrc&lt;br /&gt;
 install: --no-rdoc --no-ri&lt;br /&gt;
 update:  --no-rdoc --no-ri&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
~/.bashrc&lt;br /&gt;
 alias gem=&amp;quot;nice -n19 gem&amp;quot;&lt;br /&gt;
&lt;br /&gt;
~/.profile&lt;br /&gt;
 source &amp;quot;$HOME/.bashrc&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== Ruby ===&lt;br /&gt;
&lt;br /&gt;
==== Vorinstalliert ====&lt;br /&gt;
&lt;br /&gt;
Soll nur die zentral installierte Ruby Version verwendet werden, ergänzt man man die ~/.profile:&lt;br /&gt;
 # enable user&#039;s own ruby stuff below $HOME&lt;br /&gt;
 export PATH=&amp;quot;$HOME/bin:$HOME/.gem/ruby/1.8/bin:$PATH&amp;quot;&lt;br /&gt;
 export GEM_PATH=&amp;quot;$( gem env gempath )&amp;quot;&lt;br /&gt;
 export GEM_HOME=&amp;quot;$HOME/.gem/ruby/1.8&amp;quot;&lt;br /&gt;
 # caused undefined method error:&lt;br /&gt;
 #export RUBYLIB=&amp;quot;$HOME/.gem/ruby/1.8/lib:/usr/local/lib/site_ruby/1.8:/usr/lib/ruby/1.8&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 # avoid to forget that extra parameter: ruby -rubygems prog_that_uses_gems&lt;br /&gt;
 export RUBYOPT=rubygems&lt;br /&gt;
 &lt;br /&gt;
 export RAILS_ENV=production&lt;br /&gt;
&lt;br /&gt;
==== Eigene Installation ====&lt;br /&gt;
&lt;br /&gt;
Um eine andere als die vorinstallierte Ruby Version zu verwenden, installiert man zunächst den Ruby Versions Manager (rvm),&lt;br /&gt;
 curl -L https://get.rvm.io | bash -s stable&lt;br /&gt;
 source ~/.rvm/scripts/rvm&lt;br /&gt;
 rvm notes&lt;br /&gt;
 rvm requirements&lt;br /&gt;
 rvm pkg install openssl&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
und lässt dann die gewünschte Ruby Version installieren.&lt;br /&gt;
 rvm install x.y.z&lt;br /&gt;
&lt;br /&gt;
RVM passt die Umgebungsvariablen automatisch an die ausgewählt Version an. Die Version wählt man global per&lt;br /&gt;
 rvm use x.y.z --default&lt;br /&gt;
oder nur für ein spezielles Verzeichnis:&lt;br /&gt;
 cd ~/verzeichnis/mit/ruby-x.y.z-Anwendung&lt;br /&gt;
 rvm use x.y.z-p??? --rvmrc&lt;br /&gt;
&lt;br /&gt;
Zur Verwaltung von gems installiert man noch rubygems.&lt;br /&gt;
 rvm rubygems current&lt;br /&gt;
&lt;br /&gt;
=== Rails ===&lt;br /&gt;
&lt;br /&gt;
Nun kann Rails per &amp;quot;gem install &amp;lt;Paketname&amp;gt;&amp;quot; installiert werden (inklusive Abhängigkeiten).&lt;br /&gt;
Um spezielle versionen zu installieren kann man den gem Befehl mit &amp;quot;-v=x.y.z&amp;quot; ergänzen.&lt;br /&gt;
&lt;br /&gt;
Zum Testen ein Beispiel das noch ein fertiges CMS Framework installiert (http://zenadmin.org), inklusive automatischer Einrichtung einer sqlite Datenbankdatei:&lt;br /&gt;
 gem install rails -v=2.3.11&lt;br /&gt;
 gem install i18n sexp_processor sqlite3 zena&lt;br /&gt;
 zena new ~/rails  # Legt eine Rails-Anwendung an.&lt;br /&gt;
 cd ~/zena-test&lt;br /&gt;
 rake db:create        # Datenbank anlegen.&lt;br /&gt;
 zena migrate          # Datenbank Tabellen einrichten.&lt;br /&gt;
 zena mksite LANG=en RAILS_ENV=production PASSWORD=geheim HOST=rails.example.org # Webseite anlegen.&lt;br /&gt;
&lt;br /&gt;
=== Rails-Anwendung ===&lt;br /&gt;
&lt;br /&gt;
Seine eigene Rails-Anwendung kopiert man z.B. nach ~/rails, oder erstellt dort eine Neue (rails ~/rails, ...).&lt;br /&gt;
&lt;br /&gt;
=== Datenbank ===&lt;br /&gt;
&lt;br /&gt;
Mit &#039;&#039;hsadmin&#039;&#039; beispielsweise einen Postgres-User (z.B. &#039;xyz00_rails&#039;, Passwort sei &#039;geheim&#039;) sowie eine Datenbank anlegen (z.B. &#039;xyz00_rails&#039;.&lt;br /&gt;
&lt;br /&gt;
Die Datenbank in der Anwendung konfigurieren,&lt;br /&gt;
&lt;br /&gt;
 cd ~/rails/config/&lt;br /&gt;
 nano database.yml&lt;br /&gt;
&lt;br /&gt;
mit folgendem Inhalt:&lt;br /&gt;
&lt;br /&gt;
 production:&lt;br /&gt;
    adapter: postgresql&lt;br /&gt;
    database: xyz00_rails&lt;br /&gt;
    host: localhost&lt;br /&gt;
    username: xyz00_rails&lt;br /&gt;
    password: geheim&lt;br /&gt;
&lt;br /&gt;
=== E-Mail, Dateiablage ===&lt;br /&gt;
&lt;br /&gt;
Beispielhafte Konfiguration:&lt;br /&gt;
&lt;br /&gt;
 default:&lt;br /&gt;
    email_delivery:&lt;br /&gt;
      delivery_method: :smtp&lt;br /&gt;
      smtp_settings:&lt;br /&gt;
        address: localhost&lt;br /&gt;
        port: 25&lt;br /&gt;
        domain: example.org&lt;br /&gt;
    attachments_storage_path: /home/pacs/xyz00/users/rails/attach&lt;br /&gt;
&lt;br /&gt;
=== Datenbankschema ===&lt;br /&gt;
&lt;br /&gt;
Initialisieren und migrieren der Datenbank (je nach Rails-Anwendung).&lt;br /&gt;
&lt;br /&gt;
 cd ~/rails&lt;br /&gt;
 ...&lt;br /&gt;
 rake ...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Konfiguration von FastCGI ===&lt;br /&gt;
&lt;br /&gt;
~/doms/rails.example.org/htdocs/.htaccess&lt;br /&gt;
&lt;br /&gt;
 RewriteEngine On&lt;br /&gt;
 RewriteRule ^$ index.html [QSA]&lt;br /&gt;
 RewriteRule ^([^.]+)$ $1.html [QSA]&lt;br /&gt;
 RewriteCond %{REQUEST_FILENAME} !-f [OR]&lt;br /&gt;
 RewriteCond %{REQUEST_FILENAME} dispatch.fcgi$&lt;br /&gt;
 RewriteRule ^(.*)$ /fastcgi-bin/dispatch.fcgi [QSA,L]&lt;br /&gt;
&lt;br /&gt;
Ältere Versionen von Rails, die noch nicht auf rack middleware aufbauen, laufen mit folgender ~/doms/www.example.org/fastcgi/dispatch.fcgi&lt;br /&gt;
&lt;br /&gt;
 #!/usr/bin/env ruby&lt;br /&gt;
 require &amp;quot;/home/pacs/xyz00/users/meinuser/rails/config/environment&amp;quot; &lt;br /&gt;
 require &#039;fcgi_handler&#039;&lt;br /&gt;
 RailsFCGIHandler.process!&lt;br /&gt;
&lt;br /&gt;
Für aktuelle Versionen von Rails, die auf der &amp;quot;rack&amp;quot; Middleware aufbauen, siehe https://github.com/dre3k/rails3_fcgi, ~/doms/www.example.org/fastcgi/dispatch.fcgi&lt;br /&gt;
  #!/usr/bin/env ruby&lt;br /&gt;
 &lt;br /&gt;
 require_relative &#039;../config/environment&#039;&lt;br /&gt;
 &lt;br /&gt;
 class Rack::PathInfoRewriter&lt;br /&gt;
   def initialize(app)&lt;br /&gt;
     @app = app&lt;br /&gt;
   end&lt;br /&gt;
 &lt;br /&gt;
   def call(env)&lt;br /&gt;
     env.delete(&#039;SCRIPT_NAME&#039;)&lt;br /&gt;
     parts = env[&#039;REQUEST_URI&#039;].split(&#039;?&#039;)&lt;br /&gt;
     env[&#039;PATH_INFO&#039;] = parts[0]&lt;br /&gt;
     env[&#039;QUERY_STRING&#039;] = parts[1].to_s&lt;br /&gt;
     @app.call(env)&lt;br /&gt;
   end&lt;br /&gt;
 end&lt;br /&gt;
 &lt;br /&gt;
 Rack::Handler::FastCGI.run  Rack::PathInfoRewriter.new(HIER_APPLIKATIONSNAME_AUS_config/application.rb_EINTRAGEN::Application)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
FastCGI-Skript ausführbar machen:&lt;br /&gt;
&lt;br /&gt;
 chmod 755 ~/doms/rails.example.org/fastcgi/dispatch.fcgi&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Am Anfang von ~/rails/config/environment.rb einfügen:&lt;br /&gt;
&lt;br /&gt;
 ENV[&#039;RAILS_ENV&#039;] ||= &#039;production&#039;&lt;br /&gt;
 ENV[&#039;GEM_PATH&#039;] ||= &#039;/home/pacs/xyz00/users/meinuser/.gem/ruby/1.8:/var/lib/gems/1.8&#039;&lt;br /&gt;
Evtl. können diese Einstellungen auch ohne eine Modifikation der Anwendung erfolgen, indem die Umgebungsvariablen in der .htaccess gesetzt werden (z.B. &amp;quot;SetEnv RAILS_ENV production&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
Die Applikation ins Webroot einbinden:&lt;br /&gt;
&lt;br /&gt;
 # ggf. vorhandene Dateien sichern (oder nach ~/rails/public kopieren)&lt;br /&gt;
 mv ~/doms/rails.example.org/htdocs ~/doms/rails.example.org/htdocs.old&lt;br /&gt;
 # Das rails/public Verzeichnis ins Webroot verlinken.&lt;br /&gt;
 ln -s ~/rails/public ~/doms/rails.example.org/htdocs&lt;br /&gt;
&lt;br /&gt;
=== Konfiguration von SSL ===&lt;br /&gt;
&lt;br /&gt;
Die Verzeichnisse ~/doms/rails.example.org/fastcgi-ssl/ und ~/doms/rail.example.org/htdocs-ssl/ werden analog zu bzw. anstelle von fastcgi und htdocs gefüllt.&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:HSDoku]]&lt;br /&gt;
[[Kategorie:Installationsanleitungen]]&lt;br /&gt;
[[Kategorie:Software]]&lt;br /&gt;
[[Kategorie:Glossar]]&lt;/div&gt;</summary>
		<author><name>Srv00-wiki</name></author>
	</entry>
	<entry>
		<id>https://wiki.hostsharing.net/index.php?title=RubyOnRails&amp;diff=3441</id>
		<title>RubyOnRails</title>
		<link rel="alternate" type="text/html" href="https://wiki.hostsharing.net/index.php?title=RubyOnRails&amp;diff=3441"/>
		<updated>2012-08-28T17:41:41Z</updated>

		<summary type="html">&lt;p&gt;Srv00-wiki: /* Konfiguration von FastCGI */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Bestes Ruby on Rails Hosting bei Hostsharing ==&lt;br /&gt;
&lt;br /&gt;
Rubyanwendungen laufen (wie alle Anwendungen bei Hostsharing) als Prozesse des jeweiligen Benutzersaccounts. Probleme mit Dateirechten und Sicherheitsrisiken, wie sie sonst bei der Ausführung durch den Webserver auftreten, sind so von vorne herein ausgeschlossen.&lt;br /&gt;
&lt;br /&gt;
Standardmäßig erfolgt der Aufruf von Ruby Anwendungen durch den Apache Webserver über die FastCGI Schnittstelle. Dabei wird ständig eine Ruby Application Server Instanz des Users bereitgehalten, die somit jederzeit zur Bearbeitung von noch nicht gecacheten, oder gar nicht cachebaren, Anfragen zur Verfügung steht.&lt;br /&gt;
&lt;br /&gt;
Für den Betrieb von noch anspruchsvolleren Anwendungen haben wir auch Tools wie haproxy, varnish, nginx etc. installiert. Wir können auch mod_passenger (mod_wsgi haben wir schon) oder mongrel oder Green Unicorn (gunicorn) installieren. Anwender, die damit auf unserer leistungsfähigen Infrastruktur (managed Plattform) z.B. einen Webserver Cluster mit load-balancing realisieren möchten, brauchen bei uns dafür nur eigene Daemons buchen, oder können (für größere Projekte) dafür natürlich auch eine beliebige Anzahl ganzer Server buchen.&lt;br /&gt;
&lt;br /&gt;
== Einrichtung ohne zusätzliche Daemons (ein Application Server) ==&lt;br /&gt;
&lt;br /&gt;
=== Vorbereitungen ===&lt;br /&gt;
&lt;br /&gt;
Einige Einstellungen für den Paketuser.&lt;br /&gt;
&lt;br /&gt;
~/.gemrc&lt;br /&gt;
 install: --no-rdoc --no-ri&lt;br /&gt;
 update:  --no-rdoc --no-ri&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
~/.bashrc&lt;br /&gt;
 alias gem=&amp;quot;nice -n19 gem&amp;quot;&lt;br /&gt;
&lt;br /&gt;
~/.profile&lt;br /&gt;
 source &amp;quot;$HOME/.bashrc&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== Ruby ===&lt;br /&gt;
&lt;br /&gt;
==== Vorinstalliert ====&lt;br /&gt;
&lt;br /&gt;
Soll nur die zentral installierte Ruby Version verwendet werden, ergänzt man man die ~/.profile:&lt;br /&gt;
 # enable user&#039;s own ruby stuff below $HOME&lt;br /&gt;
 export PATH=&amp;quot;$HOME/bin:$HOME/.gem/ruby/1.8/bin:$PATH&amp;quot;&lt;br /&gt;
 export GEM_PATH=&amp;quot;$( gem env gempath )&amp;quot;&lt;br /&gt;
 export GEM_HOME=&amp;quot;$HOME/.gem/ruby/1.8&amp;quot;&lt;br /&gt;
 # caused undefined method error:&lt;br /&gt;
 #export RUBYLIB=&amp;quot;$HOME/.gem/ruby/1.8/lib:/usr/local/lib/site_ruby/1.8:/usr/lib/ruby/1.8&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 # avoid to forget that extra parameter: ruby -rubygems prog_that_uses_gems&lt;br /&gt;
 export RUBYOPT=rubygems&lt;br /&gt;
 &lt;br /&gt;
 export RAILS_ENV=production&lt;br /&gt;
&lt;br /&gt;
==== Eigene Installation ====&lt;br /&gt;
&lt;br /&gt;
Um eine andere als die vorinstallierte Ruby Version zu verwenden, installiert man zunächst den Ruby Versions Manager (rvm),&lt;br /&gt;
 curl -L https://get.rvm.io | bash -s stable&lt;br /&gt;
 source ~/.rvm/scripts/rvm&lt;br /&gt;
 rvm notes&lt;br /&gt;
 rvm requirements&lt;br /&gt;
 rvm pkg install openssl&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
und lässt dann die gewünschte Ruby Version installieren.&lt;br /&gt;
 rvm install x.y.z&lt;br /&gt;
&lt;br /&gt;
RVM passt die Umgebungsvariablen automatisch an die ausgewählt Version an. Die Version wählt man global per&lt;br /&gt;
 rvm use x.y.z --default&lt;br /&gt;
oder nur für ein spezielles Verzeichnis:&lt;br /&gt;
 cd ~/verzeichnis/mit/ruby-x.y.z-Anwendung&lt;br /&gt;
 rvm use x.y.z-p??? --rvmrc&lt;br /&gt;
&lt;br /&gt;
Zur Verwaltung von gems installiert man noch rubygems.&lt;br /&gt;
 rvm rubygems current&lt;br /&gt;
&lt;br /&gt;
=== Rails ===&lt;br /&gt;
&lt;br /&gt;
Nun kann Rails durch installieren des gem-Pakets installiert werden (inklusive Abhängigkeiten).&lt;br /&gt;
 gem install rails&lt;br /&gt;
Um spezielle versionen zu installieren kann man gem Befehle mit &amp;quot;-v=x.y.z&amp;quot; ergänzen.&lt;br /&gt;
&lt;br /&gt;
=== Rails-Anwendung ===&lt;br /&gt;
&lt;br /&gt;
Seine Rails-Anwendung kopiert man z.B. nach ~/rails, oder erstellt dort eine Neue (rails ~/rails, ...).&lt;br /&gt;
&lt;br /&gt;
=== Datenbank ===&lt;br /&gt;
&lt;br /&gt;
Mit &#039;&#039;hsadmin&#039;&#039; beispielsweise einen Postgres-User (z.B. &#039;xyz00_rails&#039;, Passwort sei &#039;geheim&#039;) sowie eine Datenbank anlegen (z.B. &#039;xyz00_rails&#039;.&lt;br /&gt;
&lt;br /&gt;
Die Datenbank in der Anwendung konfigurieren,&lt;br /&gt;
&lt;br /&gt;
  cd ~/rails-app/config/&lt;br /&gt;
  nano database.yml&lt;br /&gt;
&lt;br /&gt;
mit folgendem Inhalt:&lt;br /&gt;
&lt;br /&gt;
  production:&lt;br /&gt;
    adapter: postgresql&lt;br /&gt;
    database: xyz00_rails&lt;br /&gt;
    host: localhost&lt;br /&gt;
    username: xyz00_rails&lt;br /&gt;
    password: geheim&lt;br /&gt;
&lt;br /&gt;
=== E-Mail, Dateiablage ===&lt;br /&gt;
&lt;br /&gt;
Beispielhafte Konfiguration:&lt;br /&gt;
&lt;br /&gt;
  default:&lt;br /&gt;
    email_delivery:&lt;br /&gt;
      delivery_method: :smtp&lt;br /&gt;
      smtp_settings:&lt;br /&gt;
        address: localhost&lt;br /&gt;
        port: 25&lt;br /&gt;
        domain: example.org&lt;br /&gt;
    attachments_storage_path: /home/pacs/xyz00/users/rails/attach&lt;br /&gt;
&lt;br /&gt;
=== Datenbankschema ===&lt;br /&gt;
&lt;br /&gt;
Initialisieren und migrieren der Datenbank je nach Rails-Anwendung.&lt;br /&gt;
&lt;br /&gt;
  cd ~/rails&lt;br /&gt;
  ...&lt;br /&gt;
  rake ...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Konfiguration von FastCGI ===&lt;br /&gt;
&lt;br /&gt;
~/doms/rails.example.org/htdocs/.htaccess&lt;br /&gt;
&lt;br /&gt;
 RewriteEngine On&lt;br /&gt;
 RewriteRule ^$ index.html [QSA]&lt;br /&gt;
 RewriteRule ^([^.]+)$ $1.html [QSA]&lt;br /&gt;
 RewriteCond %{REQUEST_FILENAME} !-f [OR]&lt;br /&gt;
 RewriteCond %{REQUEST_FILENAME} dispatch.fcgi$&lt;br /&gt;
 RewriteRule ^(.*)$ /fastcgi-bin/dispatch.fcgi [QSA,L]&lt;br /&gt;
&lt;br /&gt;
Ältere Versionen von Rails, die noch nicht auf rack middleware aufbauen, laufen mit folgender ~/doms/www.example.org/fastcgi/dispatch.fcgi&lt;br /&gt;
&lt;br /&gt;
 #!/usr/bin/env ruby&lt;br /&gt;
 require &amp;quot;/home/pacs/xyz00/users/meinuser/rails/config/environment&amp;quot; &lt;br /&gt;
 require &#039;fcgi_handler&#039;&lt;br /&gt;
 RailsFCGIHandler.process!&lt;br /&gt;
&lt;br /&gt;
Für aktuelle Versionen von Rails, die auf der &amp;quot;rack&amp;quot; Middleware aufbauen, siehe https://github.com/dre3k/rails3_fcgi, ~/doms/www.example.org/fastcgi/dispatch.fcgi&lt;br /&gt;
  #!/usr/bin/env ruby&lt;br /&gt;
 &lt;br /&gt;
 require_relative &#039;../config/environment&#039;&lt;br /&gt;
 &lt;br /&gt;
 class Rack::PathInfoRewriter&lt;br /&gt;
   def initialize(app)&lt;br /&gt;
     @app = app&lt;br /&gt;
   end&lt;br /&gt;
 &lt;br /&gt;
   def call(env)&lt;br /&gt;
     env.delete(&#039;SCRIPT_NAME&#039;)&lt;br /&gt;
     parts = env[&#039;REQUEST_URI&#039;].split(&#039;?&#039;)&lt;br /&gt;
     env[&#039;PATH_INFO&#039;] = parts[0]&lt;br /&gt;
     env[&#039;QUERY_STRING&#039;] = parts[1].to_s&lt;br /&gt;
     @app.call(env)&lt;br /&gt;
   end&lt;br /&gt;
 end&lt;br /&gt;
 &lt;br /&gt;
 Rack::Handler::FastCGI.run  Rack::PathInfoRewriter.new(HIER_APPLIKATIONSNAME_AUS_config/application.rb_EINTRAGEN::Application)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
FastCGI-Skript ausführbar machen:&lt;br /&gt;
&lt;br /&gt;
 chmod 755 ~/doms/rails.example.org/fastcgi/dispatch.fcgi&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Am Anfang von ~/rails/config/environment.rb einfügen:&lt;br /&gt;
&lt;br /&gt;
 ENV[&#039;RAILS_ENV&#039;] ||= &#039;production&#039;&lt;br /&gt;
 ENV[&#039;GEM_PATH&#039;] ||= &#039;/home/pacs/xyz00/users/meinuser/.gem/ruby/1.8:/var/lib/gems/1.8&#039;&lt;br /&gt;
Evtl. können diese Einstellungen auch ohne eine Modifikation der Anwendung erfolgen, indem die Umgebungsvariablen in der .htaccess gesetzt werden (z.B. &amp;quot;SetEnv RAILS_ENV production&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
Die Applikation ins Webroot einbinden:&lt;br /&gt;
&lt;br /&gt;
 # ggf. vorhandene Dateien sichern (oder nach ~/rails/public kopieren)&lt;br /&gt;
 mv ~/doms/rails.example.org/htdocs ~/doms/rails.example.org/htdocs.old&lt;br /&gt;
 # Das rails/public Verzeichnis ins Webroot verlinken.&lt;br /&gt;
 ln -s ~/rails/public ~/doms/rails.example.org/htdocs&lt;br /&gt;
&lt;br /&gt;
=== Konfiguration von SSL ===&lt;br /&gt;
&lt;br /&gt;
Die Verzeichnisse ~/doms/rails.example.org/fastcgi-ssl/ und ~/doms/rail.example.org/htdocs-ssl/ werden analog zu bzw. anstelle von fastcgi und htdocs gefüllt.&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:HSDoku]]&lt;br /&gt;
[[Kategorie:Installationsanleitungen]]&lt;br /&gt;
[[Kategorie:Software]]&lt;br /&gt;
[[Kategorie:Glossar]]&lt;/div&gt;</summary>
		<author><name>Srv00-wiki</name></author>
	</entry>
	<entry>
		<id>https://wiki.hostsharing.net/index.php?title=RubyOnRails&amp;diff=3440</id>
		<title>RubyOnRails</title>
		<link rel="alternate" type="text/html" href="https://wiki.hostsharing.net/index.php?title=RubyOnRails&amp;diff=3440"/>
		<updated>2012-08-28T17:20:32Z</updated>

		<summary type="html">&lt;p&gt;Srv00-wiki: /* Vorinstalliert */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Bestes Ruby on Rails Hosting bei Hostsharing ==&lt;br /&gt;
&lt;br /&gt;
Rubyanwendungen laufen (wie alle Anwendungen bei Hostsharing) als Prozesse des jeweiligen Benutzersaccounts. Probleme mit Dateirechten und Sicherheitsrisiken, wie sie sonst bei der Ausführung durch den Webserver auftreten, sind so von vorne herein ausgeschlossen.&lt;br /&gt;
&lt;br /&gt;
Standardmäßig erfolgt der Aufruf von Ruby Anwendungen durch den Apache Webserver über die FastCGI Schnittstelle. Dabei wird ständig eine Ruby Application Server Instanz des Users bereitgehalten, die somit jederzeit zur Bearbeitung von noch nicht gecacheten, oder gar nicht cachebaren, Anfragen zur Verfügung steht.&lt;br /&gt;
&lt;br /&gt;
Für den Betrieb von noch anspruchsvolleren Anwendungen haben wir auch Tools wie haproxy, varnish, nginx etc. installiert. Wir können auch mod_passenger (mod_wsgi haben wir schon) oder mongrel oder Green Unicorn (gunicorn) installieren. Anwender, die damit auf unserer leistungsfähigen Infrastruktur (managed Plattform) z.B. einen Webserver Cluster mit load-balancing realisieren möchten, brauchen bei uns dafür nur eigene Daemons buchen, oder können (für größere Projekte) dafür natürlich auch eine beliebige Anzahl ganzer Server buchen.&lt;br /&gt;
&lt;br /&gt;
== Einrichtung ohne zusätzliche Daemons (ein Application Server) ==&lt;br /&gt;
&lt;br /&gt;
=== Vorbereitungen ===&lt;br /&gt;
&lt;br /&gt;
Einige Einstellungen für den Paketuser.&lt;br /&gt;
&lt;br /&gt;
~/.gemrc&lt;br /&gt;
 install: --no-rdoc --no-ri&lt;br /&gt;
 update:  --no-rdoc --no-ri&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
~/.bashrc&lt;br /&gt;
 alias gem=&amp;quot;nice -n19 gem&amp;quot;&lt;br /&gt;
&lt;br /&gt;
~/.profile&lt;br /&gt;
 source &amp;quot;$HOME/.bashrc&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== Ruby ===&lt;br /&gt;
&lt;br /&gt;
==== Vorinstalliert ====&lt;br /&gt;
&lt;br /&gt;
Soll nur die zentral installierte Ruby Version verwendet werden, ergänzt man man die ~/.profile:&lt;br /&gt;
 # enable user&#039;s own ruby stuff below $HOME&lt;br /&gt;
 export PATH=&amp;quot;$HOME/bin:$HOME/.gem/ruby/1.8/bin:$PATH&amp;quot;&lt;br /&gt;
 export GEM_PATH=&amp;quot;$( gem env gempath )&amp;quot;&lt;br /&gt;
 export GEM_HOME=&amp;quot;$HOME/.gem/ruby/1.8&amp;quot;&lt;br /&gt;
 # caused undefined method error:&lt;br /&gt;
 #export RUBYLIB=&amp;quot;$HOME/.gem/ruby/1.8/lib:/usr/local/lib/site_ruby/1.8:/usr/lib/ruby/1.8&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 # avoid to forget that extra parameter: ruby -rubygems prog_that_uses_gems&lt;br /&gt;
 export RUBYOPT=rubygems&lt;br /&gt;
 &lt;br /&gt;
 export RAILS_ENV=production&lt;br /&gt;
&lt;br /&gt;
==== Eigene Installation ====&lt;br /&gt;
&lt;br /&gt;
Um eine andere als die vorinstallierte Ruby Version zu verwenden, installiert man zunächst den Ruby Versions Manager (rvm),&lt;br /&gt;
 curl -L https://get.rvm.io | bash -s stable&lt;br /&gt;
 source ~/.rvm/scripts/rvm&lt;br /&gt;
 rvm notes&lt;br /&gt;
 rvm requirements&lt;br /&gt;
 rvm pkg install openssl&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
und lässt dann die gewünschte Ruby Version installieren.&lt;br /&gt;
 rvm install x.y.z&lt;br /&gt;
&lt;br /&gt;
RVM passt die Umgebungsvariablen automatisch an die ausgewählt Version an. Die Version wählt man global per&lt;br /&gt;
 rvm use x.y.z --default&lt;br /&gt;
oder nur für ein spezielles Verzeichnis:&lt;br /&gt;
 cd ~/verzeichnis/mit/ruby-x.y.z-Anwendung&lt;br /&gt;
 rvm use x.y.z-p??? --rvmrc&lt;br /&gt;
&lt;br /&gt;
Zur Verwaltung von gems installiert man noch rubygems.&lt;br /&gt;
 rvm rubygems current&lt;br /&gt;
&lt;br /&gt;
=== Rails ===&lt;br /&gt;
&lt;br /&gt;
Nun kann Rails durch installieren des gem-Pakets installiert werden (inklusive Abhängigkeiten).&lt;br /&gt;
 gem install rails&lt;br /&gt;
Um spezielle versionen zu installieren kann man gem Befehle mit &amp;quot;-v=x.y.z&amp;quot; ergänzen.&lt;br /&gt;
&lt;br /&gt;
=== Rails-Anwendung ===&lt;br /&gt;
&lt;br /&gt;
Seine Rails-Anwendung kopiert man z.B. nach ~/rails, oder erstellt dort eine Neue (rails ~/rails, ...).&lt;br /&gt;
&lt;br /&gt;
=== Datenbank ===&lt;br /&gt;
&lt;br /&gt;
Mit &#039;&#039;hsadmin&#039;&#039; beispielsweise einen Postgres-User (z.B. &#039;xyz00_rails&#039;, Passwort sei &#039;geheim&#039;) sowie eine Datenbank anlegen (z.B. &#039;xyz00_rails&#039;.&lt;br /&gt;
&lt;br /&gt;
Die Datenbank in der Anwendung konfigurieren,&lt;br /&gt;
&lt;br /&gt;
  cd ~/rails-app/config/&lt;br /&gt;
  nano database.yml&lt;br /&gt;
&lt;br /&gt;
mit folgendem Inhalt:&lt;br /&gt;
&lt;br /&gt;
  production:&lt;br /&gt;
    adapter: postgresql&lt;br /&gt;
    database: xyz00_rails&lt;br /&gt;
    host: localhost&lt;br /&gt;
    username: xyz00_rails&lt;br /&gt;
    password: geheim&lt;br /&gt;
&lt;br /&gt;
=== E-Mail, Dateiablage ===&lt;br /&gt;
&lt;br /&gt;
Beispielhafte Konfiguration:&lt;br /&gt;
&lt;br /&gt;
  default:&lt;br /&gt;
    email_delivery:&lt;br /&gt;
      delivery_method: :smtp&lt;br /&gt;
      smtp_settings:&lt;br /&gt;
        address: localhost&lt;br /&gt;
        port: 25&lt;br /&gt;
        domain: example.org&lt;br /&gt;
    attachments_storage_path: /home/pacs/xyz00/users/rails/attach&lt;br /&gt;
&lt;br /&gt;
=== Datenbankschema ===&lt;br /&gt;
&lt;br /&gt;
Initialisieren und migrieren der Datenbank je nach Rails-Anwendung.&lt;br /&gt;
&lt;br /&gt;
  cd ~/rails&lt;br /&gt;
  ...&lt;br /&gt;
  rake ...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Konfiguration von FastCGI ===&lt;br /&gt;
&lt;br /&gt;
~/doms/rails.example.org/htdocs/.htaccess&lt;br /&gt;
&lt;br /&gt;
  RewriteEngine On&lt;br /&gt;
  RewriteRule ^$ index.html [QSA]&lt;br /&gt;
  RewriteRule ^([^.]+)$ $1.html [QSA]&lt;br /&gt;
  RewriteCond %{REQUEST_FILENAME} !-f [OR]&lt;br /&gt;
  RewriteCond %{REQUEST_FILENAME} dispatch.fcgi$&lt;br /&gt;
  RewriteRule ^(.*)$ /fastcgi-bin/dispatch.fcgi [QSA,L]&lt;br /&gt;
&lt;br /&gt;
Ältere Versionen von Rails, die noch nicht auf rack middleware aufbauen, laufen mit folgender ~/doms/www.example.org/fastcgi/dispatch.fcgi&lt;br /&gt;
&lt;br /&gt;
  #!/usr/bin/env ruby&lt;br /&gt;
  require &amp;quot;/home/pacs/xyz00/users/meinuser/rails/config/environment&amp;quot; &lt;br /&gt;
  require &#039;fcgi_handler&#039;&lt;br /&gt;
  RailsFCGIHandler.process!&lt;br /&gt;
&lt;br /&gt;
Für aktuelle Versionen von Rails, die auf der &amp;quot;rack&amp;quot; Middleware aufbauen, siehe https://github.com/dre3k/rails3_fcgi, ~/doms/www.example.org/fastcgi/dispatch.fcgi&lt;br /&gt;
  #!/usr/bin/env ruby&lt;br /&gt;
 &lt;br /&gt;
 require_relative &#039;../config/environment&#039;&lt;br /&gt;
 &lt;br /&gt;
 class Rack::PathInfoRewriter&lt;br /&gt;
   def initialize(app)&lt;br /&gt;
     @app = app&lt;br /&gt;
   end&lt;br /&gt;
 &lt;br /&gt;
   def call(env)&lt;br /&gt;
     env.delete(&#039;SCRIPT_NAME&#039;)&lt;br /&gt;
     parts = env[&#039;REQUEST_URI&#039;].split(&#039;?&#039;)&lt;br /&gt;
     env[&#039;PATH_INFO&#039;] = parts[0]&lt;br /&gt;
     env[&#039;QUERY_STRING&#039;] = parts[1].to_s&lt;br /&gt;
     @app.call(env)&lt;br /&gt;
   end&lt;br /&gt;
 end&lt;br /&gt;
 &lt;br /&gt;
 Rack::Handler::FastCGI.run  Rack::PathInfoRewriter.new(HIER_APPLIKATIONSNAME_AUS_config/application.rb_EINTRAGEN::Application)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
FastCGI-Skript ausführbar machen:&lt;br /&gt;
&lt;br /&gt;
  chmod 755 ~/doms/rails.example.org/fastcgi/dispatch.fcgi&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Am Anfang von ~/rails/config/environment.rb einfügen:&lt;br /&gt;
&lt;br /&gt;
  ENV[&#039;RAILS_ENV&#039;] ||= &#039;production&#039;&lt;br /&gt;
  ENV[&#039;GEM_PATH&#039;] ||= &#039;/home/pacs/xyz00/users/meinuser/ruby/.gem/ruby/1.8:/var/lib/gems/1.8&#039;&lt;br /&gt;
Evtl. können diese Einstellungen auch ohne eine Modifikation der Anwendung erfolgen, indem die Umgebungsvariablen in der .htaccess gesetzt werden (z.B. &amp;quot;SetEnv RAILS_ENV production&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
Die Applikation ins Webroot einbinden:&lt;br /&gt;
&lt;br /&gt;
  # ggf. vorhandene Dateien sichern (oder nach ~/rails/public kopieren)&lt;br /&gt;
  mv ~/doms/rails.example.org/htdocs ~/doms/rails.example.org/htdocs.old&lt;br /&gt;
  # Das rails/public Verzeichnis ins Webroot verlinken.&lt;br /&gt;
  ln -s ~/rails/public ~/doms/rails.example.org/htdocs&lt;br /&gt;
&lt;br /&gt;
=== Konfiguration von SSL ===&lt;br /&gt;
&lt;br /&gt;
Die Verzeichnisse ~/doms/rails.example.org/fastcgi-ssl/ und ~/doms/rail.example.org/htdocs-ssl/ werden analog zu bzw. anstelle von fastcgi und htdocs gefüllt.&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:HSDoku]]&lt;br /&gt;
[[Kategorie:Installationsanleitungen]]&lt;br /&gt;
[[Kategorie:Software]]&lt;br /&gt;
[[Kategorie:Glossar]]&lt;/div&gt;</summary>
		<author><name>Srv00-wiki</name></author>
	</entry>
	<entry>
		<id>https://wiki.hostsharing.net/index.php?title=RubyOnRails&amp;diff=3439</id>
		<title>RubyOnRails</title>
		<link rel="alternate" type="text/html" href="https://wiki.hostsharing.net/index.php?title=RubyOnRails&amp;diff=3439"/>
		<updated>2012-08-28T17:20:21Z</updated>

		<summary type="html">&lt;p&gt;Srv00-wiki: /* Vorinstalliert */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Bestes Ruby on Rails Hosting bei Hostsharing ==&lt;br /&gt;
&lt;br /&gt;
Rubyanwendungen laufen (wie alle Anwendungen bei Hostsharing) als Prozesse des jeweiligen Benutzersaccounts. Probleme mit Dateirechten und Sicherheitsrisiken, wie sie sonst bei der Ausführung durch den Webserver auftreten, sind so von vorne herein ausgeschlossen.&lt;br /&gt;
&lt;br /&gt;
Standardmäßig erfolgt der Aufruf von Ruby Anwendungen durch den Apache Webserver über die FastCGI Schnittstelle. Dabei wird ständig eine Ruby Application Server Instanz des Users bereitgehalten, die somit jederzeit zur Bearbeitung von noch nicht gecacheten, oder gar nicht cachebaren, Anfragen zur Verfügung steht.&lt;br /&gt;
&lt;br /&gt;
Für den Betrieb von noch anspruchsvolleren Anwendungen haben wir auch Tools wie haproxy, varnish, nginx etc. installiert. Wir können auch mod_passenger (mod_wsgi haben wir schon) oder mongrel oder Green Unicorn (gunicorn) installieren. Anwender, die damit auf unserer leistungsfähigen Infrastruktur (managed Plattform) z.B. einen Webserver Cluster mit load-balancing realisieren möchten, brauchen bei uns dafür nur eigene Daemons buchen, oder können (für größere Projekte) dafür natürlich auch eine beliebige Anzahl ganzer Server buchen.&lt;br /&gt;
&lt;br /&gt;
== Einrichtung ohne zusätzliche Daemons (ein Application Server) ==&lt;br /&gt;
&lt;br /&gt;
=== Vorbereitungen ===&lt;br /&gt;
&lt;br /&gt;
Einige Einstellungen für den Paketuser.&lt;br /&gt;
&lt;br /&gt;
~/.gemrc&lt;br /&gt;
 install: --no-rdoc --no-ri&lt;br /&gt;
 update:  --no-rdoc --no-ri&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
~/.bashrc&lt;br /&gt;
 alias gem=&amp;quot;nice -n19 gem&amp;quot;&lt;br /&gt;
&lt;br /&gt;
~/.profile&lt;br /&gt;
 source &amp;quot;$HOME/.bashrc&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== Ruby ===&lt;br /&gt;
&lt;br /&gt;
==== Vorinstalliert ====&lt;br /&gt;
&lt;br /&gt;
Soll nur die zentral installierte Ruby Version verwendet werden, ergänzt man man die ~/.profile:&lt;br /&gt;
 # enable user&#039;s own ruby stuff below $HOME&lt;br /&gt;
 export PATH=&amp;quot;$HOME/bin:$HOME/.gem/ruby/1.8/bin:$PATH&amp;quot;&lt;br /&gt;
 export GEM_PATH=&amp;quot;$( gem env gempath )&amp;quot;&lt;br /&gt;
 export GEM_HOME=&amp;quot;$HOME/.gem/ruby/1.8&amp;quot;&lt;br /&gt;
 # caused udefined method error:&lt;br /&gt;
 #export RUBYLIB=&amp;quot;$HOME/.gem/ruby/1.8/lib:/usr/local/lib/site_ruby/1.8:/usr/lib/ruby/1.8&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 # avoid to forget that extra parameter: ruby -rubygems prog_that_uses_gems&lt;br /&gt;
 export RUBYOPT=rubygems&lt;br /&gt;
 &lt;br /&gt;
 export RAILS_ENV=production&lt;br /&gt;
&lt;br /&gt;
==== Eigene Installation ====&lt;br /&gt;
&lt;br /&gt;
Um eine andere als die vorinstallierte Ruby Version zu verwenden, installiert man zunächst den Ruby Versions Manager (rvm),&lt;br /&gt;
 curl -L https://get.rvm.io | bash -s stable&lt;br /&gt;
 source ~/.rvm/scripts/rvm&lt;br /&gt;
 rvm notes&lt;br /&gt;
 rvm requirements&lt;br /&gt;
 rvm pkg install openssl&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
und lässt dann die gewünschte Ruby Version installieren.&lt;br /&gt;
 rvm install x.y.z&lt;br /&gt;
&lt;br /&gt;
RVM passt die Umgebungsvariablen automatisch an die ausgewählt Version an. Die Version wählt man global per&lt;br /&gt;
 rvm use x.y.z --default&lt;br /&gt;
oder nur für ein spezielles Verzeichnis:&lt;br /&gt;
 cd ~/verzeichnis/mit/ruby-x.y.z-Anwendung&lt;br /&gt;
 rvm use x.y.z-p??? --rvmrc&lt;br /&gt;
&lt;br /&gt;
Zur Verwaltung von gems installiert man noch rubygems.&lt;br /&gt;
 rvm rubygems current&lt;br /&gt;
&lt;br /&gt;
=== Rails ===&lt;br /&gt;
&lt;br /&gt;
Nun kann Rails durch installieren des gem-Pakets installiert werden (inklusive Abhängigkeiten).&lt;br /&gt;
 gem install rails&lt;br /&gt;
Um spezielle versionen zu installieren kann man gem Befehle mit &amp;quot;-v=x.y.z&amp;quot; ergänzen.&lt;br /&gt;
&lt;br /&gt;
=== Rails-Anwendung ===&lt;br /&gt;
&lt;br /&gt;
Seine Rails-Anwendung kopiert man z.B. nach ~/rails, oder erstellt dort eine Neue (rails ~/rails, ...).&lt;br /&gt;
&lt;br /&gt;
=== Datenbank ===&lt;br /&gt;
&lt;br /&gt;
Mit &#039;&#039;hsadmin&#039;&#039; beispielsweise einen Postgres-User (z.B. &#039;xyz00_rails&#039;, Passwort sei &#039;geheim&#039;) sowie eine Datenbank anlegen (z.B. &#039;xyz00_rails&#039;.&lt;br /&gt;
&lt;br /&gt;
Die Datenbank in der Anwendung konfigurieren,&lt;br /&gt;
&lt;br /&gt;
  cd ~/rails-app/config/&lt;br /&gt;
  nano database.yml&lt;br /&gt;
&lt;br /&gt;
mit folgendem Inhalt:&lt;br /&gt;
&lt;br /&gt;
  production:&lt;br /&gt;
    adapter: postgresql&lt;br /&gt;
    database: xyz00_rails&lt;br /&gt;
    host: localhost&lt;br /&gt;
    username: xyz00_rails&lt;br /&gt;
    password: geheim&lt;br /&gt;
&lt;br /&gt;
=== E-Mail, Dateiablage ===&lt;br /&gt;
&lt;br /&gt;
Beispielhafte Konfiguration:&lt;br /&gt;
&lt;br /&gt;
  default:&lt;br /&gt;
    email_delivery:&lt;br /&gt;
      delivery_method: :smtp&lt;br /&gt;
      smtp_settings:&lt;br /&gt;
        address: localhost&lt;br /&gt;
        port: 25&lt;br /&gt;
        domain: example.org&lt;br /&gt;
    attachments_storage_path: /home/pacs/xyz00/users/rails/attach&lt;br /&gt;
&lt;br /&gt;
=== Datenbankschema ===&lt;br /&gt;
&lt;br /&gt;
Initialisieren und migrieren der Datenbank je nach Rails-Anwendung.&lt;br /&gt;
&lt;br /&gt;
  cd ~/rails&lt;br /&gt;
  ...&lt;br /&gt;
  rake ...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Konfiguration von FastCGI ===&lt;br /&gt;
&lt;br /&gt;
~/doms/rails.example.org/htdocs/.htaccess&lt;br /&gt;
&lt;br /&gt;
  RewriteEngine On&lt;br /&gt;
  RewriteRule ^$ index.html [QSA]&lt;br /&gt;
  RewriteRule ^([^.]+)$ $1.html [QSA]&lt;br /&gt;
  RewriteCond %{REQUEST_FILENAME} !-f [OR]&lt;br /&gt;
  RewriteCond %{REQUEST_FILENAME} dispatch.fcgi$&lt;br /&gt;
  RewriteRule ^(.*)$ /fastcgi-bin/dispatch.fcgi [QSA,L]&lt;br /&gt;
&lt;br /&gt;
Ältere Versionen von Rails, die noch nicht auf rack middleware aufbauen, laufen mit folgender ~/doms/www.example.org/fastcgi/dispatch.fcgi&lt;br /&gt;
&lt;br /&gt;
  #!/usr/bin/env ruby&lt;br /&gt;
  require &amp;quot;/home/pacs/xyz00/users/meinuser/rails/config/environment&amp;quot; &lt;br /&gt;
  require &#039;fcgi_handler&#039;&lt;br /&gt;
  RailsFCGIHandler.process!&lt;br /&gt;
&lt;br /&gt;
Für aktuelle Versionen von Rails, die auf der &amp;quot;rack&amp;quot; Middleware aufbauen, siehe https://github.com/dre3k/rails3_fcgi, ~/doms/www.example.org/fastcgi/dispatch.fcgi&lt;br /&gt;
  #!/usr/bin/env ruby&lt;br /&gt;
 &lt;br /&gt;
 require_relative &#039;../config/environment&#039;&lt;br /&gt;
 &lt;br /&gt;
 class Rack::PathInfoRewriter&lt;br /&gt;
   def initialize(app)&lt;br /&gt;
     @app = app&lt;br /&gt;
   end&lt;br /&gt;
 &lt;br /&gt;
   def call(env)&lt;br /&gt;
     env.delete(&#039;SCRIPT_NAME&#039;)&lt;br /&gt;
     parts = env[&#039;REQUEST_URI&#039;].split(&#039;?&#039;)&lt;br /&gt;
     env[&#039;PATH_INFO&#039;] = parts[0]&lt;br /&gt;
     env[&#039;QUERY_STRING&#039;] = parts[1].to_s&lt;br /&gt;
     @app.call(env)&lt;br /&gt;
   end&lt;br /&gt;
 end&lt;br /&gt;
 &lt;br /&gt;
 Rack::Handler::FastCGI.run  Rack::PathInfoRewriter.new(HIER_APPLIKATIONSNAME_AUS_config/application.rb_EINTRAGEN::Application)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
FastCGI-Skript ausführbar machen:&lt;br /&gt;
&lt;br /&gt;
  chmod 755 ~/doms/rails.example.org/fastcgi/dispatch.fcgi&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Am Anfang von ~/rails/config/environment.rb einfügen:&lt;br /&gt;
&lt;br /&gt;
  ENV[&#039;RAILS_ENV&#039;] ||= &#039;production&#039;&lt;br /&gt;
  ENV[&#039;GEM_PATH&#039;] ||= &#039;/home/pacs/xyz00/users/meinuser/ruby/.gem/ruby/1.8:/var/lib/gems/1.8&#039;&lt;br /&gt;
Evtl. können diese Einstellungen auch ohne eine Modifikation der Anwendung erfolgen, indem die Umgebungsvariablen in der .htaccess gesetzt werden (z.B. &amp;quot;SetEnv RAILS_ENV production&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
Die Applikation ins Webroot einbinden:&lt;br /&gt;
&lt;br /&gt;
  # ggf. vorhandene Dateien sichern (oder nach ~/rails/public kopieren)&lt;br /&gt;
  mv ~/doms/rails.example.org/htdocs ~/doms/rails.example.org/htdocs.old&lt;br /&gt;
  # Das rails/public Verzeichnis ins Webroot verlinken.&lt;br /&gt;
  ln -s ~/rails/public ~/doms/rails.example.org/htdocs&lt;br /&gt;
&lt;br /&gt;
=== Konfiguration von SSL ===&lt;br /&gt;
&lt;br /&gt;
Die Verzeichnisse ~/doms/rails.example.org/fastcgi-ssl/ und ~/doms/rail.example.org/htdocs-ssl/ werden analog zu bzw. anstelle von fastcgi und htdocs gefüllt.&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:HSDoku]]&lt;br /&gt;
[[Kategorie:Installationsanleitungen]]&lt;br /&gt;
[[Kategorie:Software]]&lt;br /&gt;
[[Kategorie:Glossar]]&lt;/div&gt;</summary>
		<author><name>Srv00-wiki</name></author>
	</entry>
	<entry>
		<id>https://wiki.hostsharing.net/index.php?title=RubyOnRails&amp;diff=3438</id>
		<title>RubyOnRails</title>
		<link rel="alternate" type="text/html" href="https://wiki.hostsharing.net/index.php?title=RubyOnRails&amp;diff=3438"/>
		<updated>2012-08-28T16:59:00Z</updated>

		<summary type="html">&lt;p&gt;Srv00-wiki: /* Vorinstalliert */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Bestes Ruby on Rails Hosting bei Hostsharing ==&lt;br /&gt;
&lt;br /&gt;
Rubyanwendungen laufen (wie alle Anwendungen bei Hostsharing) als Prozesse des jeweiligen Benutzersaccounts. Probleme mit Dateirechten und Sicherheitsrisiken, wie sie sonst bei der Ausführung durch den Webserver auftreten, sind so von vorne herein ausgeschlossen.&lt;br /&gt;
&lt;br /&gt;
Standardmäßig erfolgt der Aufruf von Ruby Anwendungen durch den Apache Webserver über die FastCGI Schnittstelle. Dabei wird ständig eine Ruby Application Server Instanz des Users bereitgehalten, die somit jederzeit zur Bearbeitung von noch nicht gecacheten, oder gar nicht cachebaren, Anfragen zur Verfügung steht.&lt;br /&gt;
&lt;br /&gt;
Für den Betrieb von noch anspruchsvolleren Anwendungen haben wir auch Tools wie haproxy, varnish, nginx etc. installiert. Wir können auch mod_passenger (mod_wsgi haben wir schon) oder mongrel oder Green Unicorn (gunicorn) installieren. Anwender, die damit auf unserer leistungsfähigen Infrastruktur (managed Plattform) z.B. einen Webserver Cluster mit load-balancing realisieren möchten, brauchen bei uns dafür nur eigene Daemons buchen, oder können (für größere Projekte) dafür natürlich auch eine beliebige Anzahl ganzer Server buchen.&lt;br /&gt;
&lt;br /&gt;
== Einrichtung ohne zusätzliche Daemons (ein Application Server) ==&lt;br /&gt;
&lt;br /&gt;
=== Vorbereitungen ===&lt;br /&gt;
&lt;br /&gt;
Einige Einstellungen für den Paketuser.&lt;br /&gt;
&lt;br /&gt;
~/.gemrc&lt;br /&gt;
 install: --no-rdoc --no-ri&lt;br /&gt;
 update:  --no-rdoc --no-ri&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
~/.bashrc&lt;br /&gt;
 alias gem=&amp;quot;nice -n19 gem&amp;quot;&lt;br /&gt;
&lt;br /&gt;
~/.profile&lt;br /&gt;
 source &amp;quot;$HOME/.bashrc&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== Ruby ===&lt;br /&gt;
&lt;br /&gt;
==== Vorinstalliert ====&lt;br /&gt;
&lt;br /&gt;
Soll nur die zentral installierte Ruby Version verwendet werden, ergänzt man man die ~/.profile:&lt;br /&gt;
 # enable user&#039;s own ruby stuff below $HOME&lt;br /&gt;
 export PATH=&amp;quot;$HOME/bin:$HOME/.gem/ruby/1.8/bin:$PATH&amp;quot;&lt;br /&gt;
 export GEM_PATH=&amp;quot;$( gem env gempath )&amp;quot;&lt;br /&gt;
 export GEM_HOME=&amp;quot;$HOME/.gem/ruby/1.8&amp;quot;&lt;br /&gt;
 export RUBYLIB=&amp;quot;$HOME/.gem/ruby/1.8/lib:/usr/local/lib/site_ruby/1.8:/usr/lib/ruby/1.8&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 # avoid to forget that extra parameter: ruby -rubygems prog_that_uses_gems&lt;br /&gt;
 export RUBYOPT=rubygems&lt;br /&gt;
 &lt;br /&gt;
 export RAILS_ENV=production&lt;br /&gt;
&lt;br /&gt;
==== Eigene Installation ====&lt;br /&gt;
&lt;br /&gt;
Um eine andere als die vorinstallierte Ruby Version zu verwenden, installiert man zunächst den Ruby Versions Manager (rvm),&lt;br /&gt;
 curl -L https://get.rvm.io | bash -s stable&lt;br /&gt;
 source ~/.rvm/scripts/rvm&lt;br /&gt;
 rvm notes&lt;br /&gt;
 rvm requirements&lt;br /&gt;
 rvm pkg install openssl&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
und lässt dann die gewünschte Ruby Version installieren.&lt;br /&gt;
 rvm install x.y.z&lt;br /&gt;
&lt;br /&gt;
RVM passt die Umgebungsvariablen automatisch an die ausgewählt Version an. Die Version wählt man global per&lt;br /&gt;
 rvm use x.y.z --default&lt;br /&gt;
oder nur für ein spezielles Verzeichnis:&lt;br /&gt;
 cd ~/verzeichnis/mit/ruby-x.y.z-Anwendung&lt;br /&gt;
 rvm use x.y.z-p??? --rvmrc&lt;br /&gt;
&lt;br /&gt;
Zur Verwaltung von gems installiert man noch rubygems.&lt;br /&gt;
 rvm rubygems current&lt;br /&gt;
&lt;br /&gt;
=== Rails ===&lt;br /&gt;
&lt;br /&gt;
Nun kann Rails durch installieren des gem-Pakets installiert werden (inklusive Abhängigkeiten).&lt;br /&gt;
 gem install rails&lt;br /&gt;
Um spezielle versionen zu installieren kann man gem Befehle mit &amp;quot;-v=x.y.z&amp;quot; ergänzen.&lt;br /&gt;
&lt;br /&gt;
=== Rails-Anwendung ===&lt;br /&gt;
&lt;br /&gt;
Seine Rails-Anwendung kopiert man z.B. nach ~/rails, oder erstellt dort eine Neue (rails ~/rails, ...).&lt;br /&gt;
&lt;br /&gt;
=== Datenbank ===&lt;br /&gt;
&lt;br /&gt;
Mit &#039;&#039;hsadmin&#039;&#039; beispielsweise einen Postgres-User (z.B. &#039;xyz00_rails&#039;, Passwort sei &#039;geheim&#039;) sowie eine Datenbank anlegen (z.B. &#039;xyz00_rails&#039;.&lt;br /&gt;
&lt;br /&gt;
Die Datenbank in der Anwendung konfigurieren,&lt;br /&gt;
&lt;br /&gt;
  cd ~/rails-app/config/&lt;br /&gt;
  nano database.yml&lt;br /&gt;
&lt;br /&gt;
mit folgendem Inhalt:&lt;br /&gt;
&lt;br /&gt;
  production:&lt;br /&gt;
    adapter: postgresql&lt;br /&gt;
    database: xyz00_rails&lt;br /&gt;
    host: localhost&lt;br /&gt;
    username: xyz00_rails&lt;br /&gt;
    password: geheim&lt;br /&gt;
&lt;br /&gt;
=== E-Mail, Dateiablage ===&lt;br /&gt;
&lt;br /&gt;
Beispielhafte Konfiguration:&lt;br /&gt;
&lt;br /&gt;
  default:&lt;br /&gt;
    email_delivery:&lt;br /&gt;
      delivery_method: :smtp&lt;br /&gt;
      smtp_settings:&lt;br /&gt;
        address: localhost&lt;br /&gt;
        port: 25&lt;br /&gt;
        domain: example.org&lt;br /&gt;
    attachments_storage_path: /home/pacs/xyz00/users/rails/attach&lt;br /&gt;
&lt;br /&gt;
=== Datenbankschema ===&lt;br /&gt;
&lt;br /&gt;
Initialisieren und migrieren der Datenbank je nach Rails-Anwendung.&lt;br /&gt;
&lt;br /&gt;
  cd ~/rails&lt;br /&gt;
  ...&lt;br /&gt;
  rake ...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Konfiguration von FastCGI ===&lt;br /&gt;
&lt;br /&gt;
~/doms/rails.example.org/htdocs/.htaccess&lt;br /&gt;
&lt;br /&gt;
  RewriteEngine On&lt;br /&gt;
  RewriteRule ^$ index.html [QSA]&lt;br /&gt;
  RewriteRule ^([^.]+)$ $1.html [QSA]&lt;br /&gt;
  RewriteCond %{REQUEST_FILENAME} !-f [OR]&lt;br /&gt;
  RewriteCond %{REQUEST_FILENAME} dispatch.fcgi$&lt;br /&gt;
  RewriteRule ^(.*)$ /fastcgi-bin/dispatch.fcgi [QSA,L]&lt;br /&gt;
&lt;br /&gt;
Ältere Versionen von Rails, die noch nicht auf rack middleware aufbauen, laufen mit folgender ~/doms/www.example.org/fastcgi/dispatch.fcgi&lt;br /&gt;
&lt;br /&gt;
  #!/usr/bin/env ruby&lt;br /&gt;
  require &amp;quot;/home/pacs/xyz00/users/meinuser/rails/config/environment&amp;quot; &lt;br /&gt;
  require &#039;fcgi_handler&#039;&lt;br /&gt;
  RailsFCGIHandler.process!&lt;br /&gt;
&lt;br /&gt;
Für aktuelle Versionen von Rails, die auf der &amp;quot;rack&amp;quot; Middleware aufbauen, siehe https://github.com/dre3k/rails3_fcgi, ~/doms/www.example.org/fastcgi/dispatch.fcgi&lt;br /&gt;
  #!/usr/bin/env ruby&lt;br /&gt;
 &lt;br /&gt;
 require_relative &#039;../config/environment&#039;&lt;br /&gt;
 &lt;br /&gt;
 class Rack::PathInfoRewriter&lt;br /&gt;
   def initialize(app)&lt;br /&gt;
     @app = app&lt;br /&gt;
   end&lt;br /&gt;
 &lt;br /&gt;
   def call(env)&lt;br /&gt;
     env.delete(&#039;SCRIPT_NAME&#039;)&lt;br /&gt;
     parts = env[&#039;REQUEST_URI&#039;].split(&#039;?&#039;)&lt;br /&gt;
     env[&#039;PATH_INFO&#039;] = parts[0]&lt;br /&gt;
     env[&#039;QUERY_STRING&#039;] = parts[1].to_s&lt;br /&gt;
     @app.call(env)&lt;br /&gt;
   end&lt;br /&gt;
 end&lt;br /&gt;
 &lt;br /&gt;
 Rack::Handler::FastCGI.run  Rack::PathInfoRewriter.new(HIER_APPLIKATIONSNAME_AUS_config/application.rb_EINTRAGEN::Application)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
FastCGI-Skript ausführbar machen:&lt;br /&gt;
&lt;br /&gt;
  chmod 755 ~/doms/rails.example.org/fastcgi/dispatch.fcgi&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Am Anfang von ~/rails/config/environment.rb einfügen:&lt;br /&gt;
&lt;br /&gt;
  ENV[&#039;RAILS_ENV&#039;] ||= &#039;production&#039;&lt;br /&gt;
  ENV[&#039;GEM_PATH&#039;] ||= &#039;/home/pacs/xyz00/users/meinuser/ruby/.gem/ruby/1.8:/var/lib/gems/1.8&#039;&lt;br /&gt;
Evtl. können diese Einstellungen auch ohne eine Modifikation der Anwendung erfolgen, indem die Umgebungsvariablen in der .htaccess gesetzt werden (z.B. &amp;quot;SetEnv RAILS_ENV production&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
Die Applikation ins Webroot einbinden:&lt;br /&gt;
&lt;br /&gt;
  # ggf. vorhandene Dateien sichern (oder nach ~/rails/public kopieren)&lt;br /&gt;
  mv ~/doms/rails.example.org/htdocs ~/doms/rails.example.org/htdocs.old&lt;br /&gt;
  # Das rails/public Verzeichnis ins Webroot verlinken.&lt;br /&gt;
  ln -s ~/rails/public ~/doms/rails.example.org/htdocs&lt;br /&gt;
&lt;br /&gt;
=== Konfiguration von SSL ===&lt;br /&gt;
&lt;br /&gt;
Die Verzeichnisse ~/doms/rails.example.org/fastcgi-ssl/ und ~/doms/rail.example.org/htdocs-ssl/ werden analog zu bzw. anstelle von fastcgi und htdocs gefüllt.&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:HSDoku]]&lt;br /&gt;
[[Kategorie:Installationsanleitungen]]&lt;br /&gt;
[[Kategorie:Software]]&lt;br /&gt;
[[Kategorie:Glossar]]&lt;/div&gt;</summary>
		<author><name>Srv00-wiki</name></author>
	</entry>
	<entry>
		<id>https://wiki.hostsharing.net/index.php?title=RubyOnRails&amp;diff=3437</id>
		<title>RubyOnRails</title>
		<link rel="alternate" type="text/html" href="https://wiki.hostsharing.net/index.php?title=RubyOnRails&amp;diff=3437"/>
		<updated>2012-08-28T16:42:19Z</updated>

		<summary type="html">&lt;p&gt;Srv00-wiki: /* Vorinstalliert */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Bestes Ruby on Rails Hosting bei Hostsharing ==&lt;br /&gt;
&lt;br /&gt;
Rubyanwendungen laufen (wie alle Anwendungen bei Hostsharing) als Prozesse des jeweiligen Benutzersaccounts. Probleme mit Dateirechten und Sicherheitsrisiken, wie sie sonst bei der Ausführung durch den Webserver auftreten, sind so von vorne herein ausgeschlossen.&lt;br /&gt;
&lt;br /&gt;
Standardmäßig erfolgt der Aufruf von Ruby Anwendungen durch den Apache Webserver über die FastCGI Schnittstelle. Dabei wird ständig eine Ruby Application Server Instanz des Users bereitgehalten, die somit jederzeit zur Bearbeitung von noch nicht gecacheten, oder gar nicht cachebaren, Anfragen zur Verfügung steht.&lt;br /&gt;
&lt;br /&gt;
Für den Betrieb von noch anspruchsvolleren Anwendungen haben wir auch Tools wie haproxy, varnish, nginx etc. installiert. Wir können auch mod_passenger (mod_wsgi haben wir schon) oder mongrel oder Green Unicorn (gunicorn) installieren. Anwender, die damit auf unserer leistungsfähigen Infrastruktur (managed Plattform) z.B. einen Webserver Cluster mit load-balancing realisieren möchten, brauchen bei uns dafür nur eigene Daemons buchen, oder können (für größere Projekte) dafür natürlich auch eine beliebige Anzahl ganzer Server buchen.&lt;br /&gt;
&lt;br /&gt;
== Einrichtung ohne zusätzliche Daemons (ein Application Server) ==&lt;br /&gt;
&lt;br /&gt;
=== Vorbereitungen ===&lt;br /&gt;
&lt;br /&gt;
Einige Einstellungen für den Paketuser.&lt;br /&gt;
&lt;br /&gt;
~/.gemrc&lt;br /&gt;
 install: --no-rdoc --no-ri&lt;br /&gt;
 update:  --no-rdoc --no-ri&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
~/.bashrc&lt;br /&gt;
 alias gem=&amp;quot;nice -n19 gem&amp;quot;&lt;br /&gt;
&lt;br /&gt;
~/.profile&lt;br /&gt;
 source &amp;quot;$HOME/.bashrc&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== Ruby ===&lt;br /&gt;
&lt;br /&gt;
==== Vorinstalliert ====&lt;br /&gt;
&lt;br /&gt;
Soll nur die zentral installierte Ruby Version verwendet werden, ergänzt man man die ~/.profile:&lt;br /&gt;
 # enable user&#039;s own ruby stuff below $HOME&lt;br /&gt;
 export PATH=&amp;quot;$HOME/bin:$HOME/.gem/bin:$PATH&amp;quot;&lt;br /&gt;
 export GEM_PATH=&amp;quot;$( gem env gempath )&amp;quot;&lt;br /&gt;
 export GEM_HOME=&amp;quot;$HOME/.gem/ruby/1.8&amp;quot;&lt;br /&gt;
 export RUBYLIB=&amp;quot;$HOME/.gem/ruby/1.8/lib:/usr/local/lib/site_ruby/1.8:/usr/lib/ruby/1.8&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 # avoid to forget that extra parameter: ruby -rubygems prog_that_uses_gems&lt;br /&gt;
 export RUBYOPT=rubygems&lt;br /&gt;
 &lt;br /&gt;
 export RAILS_ENV=production&lt;br /&gt;
&lt;br /&gt;
==== Eigene Installation ====&lt;br /&gt;
&lt;br /&gt;
Um eine andere als die vorinstallierte Ruby Version zu verwenden, installiert man zunächst den Ruby Versions Manager (rvm),&lt;br /&gt;
 curl -L https://get.rvm.io | bash -s stable&lt;br /&gt;
 source ~/.rvm/scripts/rvm&lt;br /&gt;
 rvm notes&lt;br /&gt;
 rvm requirements&lt;br /&gt;
 rvm pkg install openssl&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
und lässt dann die gewünschte Ruby Version installieren.&lt;br /&gt;
 rvm install x.y.z&lt;br /&gt;
&lt;br /&gt;
RVM passt die Umgebungsvariablen automatisch an die ausgewählt Version an. Die Version wählt man global per&lt;br /&gt;
 rvm use x.y.z --default&lt;br /&gt;
oder nur für ein spezielles Verzeichnis:&lt;br /&gt;
 cd ~/verzeichnis/mit/ruby-x.y.z-Anwendung&lt;br /&gt;
 rvm use x.y.z-p??? --rvmrc&lt;br /&gt;
&lt;br /&gt;
Zur Verwaltung von gems installiert man noch rubygems.&lt;br /&gt;
 rvm rubygems current&lt;br /&gt;
&lt;br /&gt;
=== Rails ===&lt;br /&gt;
&lt;br /&gt;
Nun kann Rails durch installieren des gem-Pakets installiert werden (inklusive Abhängigkeiten).&lt;br /&gt;
 gem install rails&lt;br /&gt;
Um spezielle versionen zu installieren kann man gem Befehle mit &amp;quot;-v=x.y.z&amp;quot; ergänzen.&lt;br /&gt;
&lt;br /&gt;
=== Rails-Anwendung ===&lt;br /&gt;
&lt;br /&gt;
Seine Rails-Anwendung kopiert man z.B. nach ~/rails, oder erstellt dort eine Neue (rails ~/rails, ...).&lt;br /&gt;
&lt;br /&gt;
=== Datenbank ===&lt;br /&gt;
&lt;br /&gt;
Mit &#039;&#039;hsadmin&#039;&#039; beispielsweise einen Postgres-User (z.B. &#039;xyz00_rails&#039;, Passwort sei &#039;geheim&#039;) sowie eine Datenbank anlegen (z.B. &#039;xyz00_rails&#039;.&lt;br /&gt;
&lt;br /&gt;
Die Datenbank in der Anwendung konfigurieren,&lt;br /&gt;
&lt;br /&gt;
  cd ~/rails-app/config/&lt;br /&gt;
  nano database.yml&lt;br /&gt;
&lt;br /&gt;
mit folgendem Inhalt:&lt;br /&gt;
&lt;br /&gt;
  production:&lt;br /&gt;
    adapter: postgresql&lt;br /&gt;
    database: xyz00_rails&lt;br /&gt;
    host: localhost&lt;br /&gt;
    username: xyz00_rails&lt;br /&gt;
    password: geheim&lt;br /&gt;
&lt;br /&gt;
=== E-Mail, Dateiablage ===&lt;br /&gt;
&lt;br /&gt;
Beispielhafte Konfiguration:&lt;br /&gt;
&lt;br /&gt;
  default:&lt;br /&gt;
    email_delivery:&lt;br /&gt;
      delivery_method: :smtp&lt;br /&gt;
      smtp_settings:&lt;br /&gt;
        address: localhost&lt;br /&gt;
        port: 25&lt;br /&gt;
        domain: example.org&lt;br /&gt;
    attachments_storage_path: /home/pacs/xyz00/users/rails/attach&lt;br /&gt;
&lt;br /&gt;
=== Datenbankschema ===&lt;br /&gt;
&lt;br /&gt;
Initialisieren und migrieren der Datenbank je nach Rails-Anwendung.&lt;br /&gt;
&lt;br /&gt;
  cd ~/rails&lt;br /&gt;
  ...&lt;br /&gt;
  rake ...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Konfiguration von FastCGI ===&lt;br /&gt;
&lt;br /&gt;
~/doms/rails.example.org/htdocs/.htaccess&lt;br /&gt;
&lt;br /&gt;
  RewriteEngine On&lt;br /&gt;
  RewriteRule ^$ index.html [QSA]&lt;br /&gt;
  RewriteRule ^([^.]+)$ $1.html [QSA]&lt;br /&gt;
  RewriteCond %{REQUEST_FILENAME} !-f [OR]&lt;br /&gt;
  RewriteCond %{REQUEST_FILENAME} dispatch.fcgi$&lt;br /&gt;
  RewriteRule ^(.*)$ /fastcgi-bin/dispatch.fcgi [QSA,L]&lt;br /&gt;
&lt;br /&gt;
Ältere Versionen von Rails, die noch nicht auf rack middleware aufbauen, laufen mit folgender ~/doms/www.example.org/fastcgi/dispatch.fcgi&lt;br /&gt;
&lt;br /&gt;
  #!/usr/bin/env ruby&lt;br /&gt;
  require &amp;quot;/home/pacs/xyz00/users/meinuser/rails/config/environment&amp;quot; &lt;br /&gt;
  require &#039;fcgi_handler&#039;&lt;br /&gt;
  RailsFCGIHandler.process!&lt;br /&gt;
&lt;br /&gt;
Für aktuelle Versionen von Rails, die auf der &amp;quot;rack&amp;quot; Middleware aufbauen, siehe https://github.com/dre3k/rails3_fcgi, ~/doms/www.example.org/fastcgi/dispatch.fcgi&lt;br /&gt;
  #!/usr/bin/env ruby&lt;br /&gt;
 &lt;br /&gt;
 require_relative &#039;../config/environment&#039;&lt;br /&gt;
 &lt;br /&gt;
 class Rack::PathInfoRewriter&lt;br /&gt;
   def initialize(app)&lt;br /&gt;
     @app = app&lt;br /&gt;
   end&lt;br /&gt;
 &lt;br /&gt;
   def call(env)&lt;br /&gt;
     env.delete(&#039;SCRIPT_NAME&#039;)&lt;br /&gt;
     parts = env[&#039;REQUEST_URI&#039;].split(&#039;?&#039;)&lt;br /&gt;
     env[&#039;PATH_INFO&#039;] = parts[0]&lt;br /&gt;
     env[&#039;QUERY_STRING&#039;] = parts[1].to_s&lt;br /&gt;
     @app.call(env)&lt;br /&gt;
   end&lt;br /&gt;
 end&lt;br /&gt;
 &lt;br /&gt;
 Rack::Handler::FastCGI.run  Rack::PathInfoRewriter.new(HIER_APPLIKATIONSNAME_AUS_config/application.rb_EINTRAGEN::Application)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
FastCGI-Skript ausführbar machen:&lt;br /&gt;
&lt;br /&gt;
  chmod 755 ~/doms/rails.example.org/fastcgi/dispatch.fcgi&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Am Anfang von ~/rails/config/environment.rb einfügen:&lt;br /&gt;
&lt;br /&gt;
  ENV[&#039;RAILS_ENV&#039;] ||= &#039;production&#039;&lt;br /&gt;
  ENV[&#039;GEM_PATH&#039;] ||= &#039;/home/pacs/xyz00/users/meinuser/ruby/.gem/ruby/1.8:/var/lib/gems/1.8&#039;&lt;br /&gt;
Evtl. können diese Einstellungen auch ohne eine Modifikation der Anwendung erfolgen, indem die Umgebungsvariablen in der .htaccess gesetzt werden (z.B. &amp;quot;SetEnv RAILS_ENV production&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
Die Applikation ins Webroot einbinden:&lt;br /&gt;
&lt;br /&gt;
  # ggf. vorhandene Dateien sichern (oder nach ~/rails/public kopieren)&lt;br /&gt;
  mv ~/doms/rails.example.org/htdocs ~/doms/rails.example.org/htdocs.old&lt;br /&gt;
  # Das rails/public Verzeichnis ins Webroot verlinken.&lt;br /&gt;
  ln -s ~/rails/public ~/doms/rails.example.org/htdocs&lt;br /&gt;
&lt;br /&gt;
=== Konfiguration von SSL ===&lt;br /&gt;
&lt;br /&gt;
Die Verzeichnisse ~/doms/rails.example.org/fastcgi-ssl/ und ~/doms/rail.example.org/htdocs-ssl/ werden analog zu bzw. anstelle von fastcgi und htdocs gefüllt.&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:HSDoku]]&lt;br /&gt;
[[Kategorie:Installationsanleitungen]]&lt;br /&gt;
[[Kategorie:Software]]&lt;br /&gt;
[[Kategorie:Glossar]]&lt;/div&gt;</summary>
		<author><name>Srv00-wiki</name></author>
	</entry>
	<entry>
		<id>https://wiki.hostsharing.net/index.php?title=RubyOnRails&amp;diff=3436</id>
		<title>RubyOnRails</title>
		<link rel="alternate" type="text/html" href="https://wiki.hostsharing.net/index.php?title=RubyOnRails&amp;diff=3436"/>
		<updated>2012-08-28T16:41:19Z</updated>

		<summary type="html">&lt;p&gt;Srv00-wiki: /* Vorinstalliert */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Bestes Ruby on Rails Hosting bei Hostsharing ==&lt;br /&gt;
&lt;br /&gt;
Rubyanwendungen laufen (wie alle Anwendungen bei Hostsharing) als Prozesse des jeweiligen Benutzersaccounts. Probleme mit Dateirechten und Sicherheitsrisiken, wie sie sonst bei der Ausführung durch den Webserver auftreten, sind so von vorne herein ausgeschlossen.&lt;br /&gt;
&lt;br /&gt;
Standardmäßig erfolgt der Aufruf von Ruby Anwendungen durch den Apache Webserver über die FastCGI Schnittstelle. Dabei wird ständig eine Ruby Application Server Instanz des Users bereitgehalten, die somit jederzeit zur Bearbeitung von noch nicht gecacheten, oder gar nicht cachebaren, Anfragen zur Verfügung steht.&lt;br /&gt;
&lt;br /&gt;
Für den Betrieb von noch anspruchsvolleren Anwendungen haben wir auch Tools wie haproxy, varnish, nginx etc. installiert. Wir können auch mod_passenger (mod_wsgi haben wir schon) oder mongrel oder Green Unicorn (gunicorn) installieren. Anwender, die damit auf unserer leistungsfähigen Infrastruktur (managed Plattform) z.B. einen Webserver Cluster mit load-balancing realisieren möchten, brauchen bei uns dafür nur eigene Daemons buchen, oder können (für größere Projekte) dafür natürlich auch eine beliebige Anzahl ganzer Server buchen.&lt;br /&gt;
&lt;br /&gt;
== Einrichtung ohne zusätzliche Daemons (ein Application Server) ==&lt;br /&gt;
&lt;br /&gt;
=== Vorbereitungen ===&lt;br /&gt;
&lt;br /&gt;
Einige Einstellungen für den Paketuser.&lt;br /&gt;
&lt;br /&gt;
~/.gemrc&lt;br /&gt;
 install: --no-rdoc --no-ri&lt;br /&gt;
 update:  --no-rdoc --no-ri&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
~/.bashrc&lt;br /&gt;
 alias gem=&amp;quot;nice -n19 gem&amp;quot;&lt;br /&gt;
&lt;br /&gt;
~/.profile&lt;br /&gt;
 source &amp;quot;$HOME/.bashrc&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== Ruby ===&lt;br /&gt;
&lt;br /&gt;
==== Vorinstalliert ====&lt;br /&gt;
&lt;br /&gt;
Soll nur die zentral installierte Ruby Version verwendet werden, ergänzt man man die ~/.profile:&lt;br /&gt;
 # enable user&#039;s own ruby stuff below $HOME&lt;br /&gt;
 export PATH=&amp;quot;$HOME/bin:$HOME/.gem/bin:$PATH&amp;quot;&lt;br /&gt;
 export GEM_PATH=&amp;quot;$( gem env gempath )&amp;quot;&lt;br /&gt;
 export GEM_HOME=&amp;quot;$HOME/.gem/ruby/1.8&amp;quot;&lt;br /&gt;
 export RUBYLIB=&amp;quot;$HOME/.gem/ruby/1.8/lib/:/usr/local/lib/site_ruby/1.8/:/usr/lib/ruby/1.8/&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 # avoid to forget that extra parameter: ruby -rubygems prog_that_uses_gems&lt;br /&gt;
 export RUBYOPT=rubygems&lt;br /&gt;
 &lt;br /&gt;
 export RAILS_ENV=production&lt;br /&gt;
&lt;br /&gt;
==== Eigene Installation ====&lt;br /&gt;
&lt;br /&gt;
Um eine andere als die vorinstallierte Ruby Version zu verwenden, installiert man zunächst den Ruby Versions Manager (rvm),&lt;br /&gt;
 curl -L https://get.rvm.io | bash -s stable&lt;br /&gt;
 source ~/.rvm/scripts/rvm&lt;br /&gt;
 rvm notes&lt;br /&gt;
 rvm requirements&lt;br /&gt;
 rvm pkg install openssl&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
und lässt dann die gewünschte Ruby Version installieren.&lt;br /&gt;
 rvm install x.y.z&lt;br /&gt;
&lt;br /&gt;
RVM passt die Umgebungsvariablen automatisch an die ausgewählt Version an. Die Version wählt man global per&lt;br /&gt;
 rvm use x.y.z --default&lt;br /&gt;
oder nur für ein spezielles Verzeichnis:&lt;br /&gt;
 cd ~/verzeichnis/mit/ruby-x.y.z-Anwendung&lt;br /&gt;
 rvm use x.y.z-p??? --rvmrc&lt;br /&gt;
&lt;br /&gt;
Zur Verwaltung von gems installiert man noch rubygems.&lt;br /&gt;
 rvm rubygems current&lt;br /&gt;
&lt;br /&gt;
=== Rails ===&lt;br /&gt;
&lt;br /&gt;
Nun kann Rails durch installieren des gem-Pakets installiert werden (inklusive Abhängigkeiten).&lt;br /&gt;
 gem install rails&lt;br /&gt;
Um spezielle versionen zu installieren kann man gem Befehle mit &amp;quot;-v=x.y.z&amp;quot; ergänzen.&lt;br /&gt;
&lt;br /&gt;
=== Rails-Anwendung ===&lt;br /&gt;
&lt;br /&gt;
Seine Rails-Anwendung kopiert man z.B. nach ~/rails, oder erstellt dort eine Neue (rails ~/rails, ...).&lt;br /&gt;
&lt;br /&gt;
=== Datenbank ===&lt;br /&gt;
&lt;br /&gt;
Mit &#039;&#039;hsadmin&#039;&#039; beispielsweise einen Postgres-User (z.B. &#039;xyz00_rails&#039;, Passwort sei &#039;geheim&#039;) sowie eine Datenbank anlegen (z.B. &#039;xyz00_rails&#039;.&lt;br /&gt;
&lt;br /&gt;
Die Datenbank in der Anwendung konfigurieren,&lt;br /&gt;
&lt;br /&gt;
  cd ~/rails-app/config/&lt;br /&gt;
  nano database.yml&lt;br /&gt;
&lt;br /&gt;
mit folgendem Inhalt:&lt;br /&gt;
&lt;br /&gt;
  production:&lt;br /&gt;
    adapter: postgresql&lt;br /&gt;
    database: xyz00_rails&lt;br /&gt;
    host: localhost&lt;br /&gt;
    username: xyz00_rails&lt;br /&gt;
    password: geheim&lt;br /&gt;
&lt;br /&gt;
=== E-Mail, Dateiablage ===&lt;br /&gt;
&lt;br /&gt;
Beispielhafte Konfiguration:&lt;br /&gt;
&lt;br /&gt;
  default:&lt;br /&gt;
    email_delivery:&lt;br /&gt;
      delivery_method: :smtp&lt;br /&gt;
      smtp_settings:&lt;br /&gt;
        address: localhost&lt;br /&gt;
        port: 25&lt;br /&gt;
        domain: example.org&lt;br /&gt;
    attachments_storage_path: /home/pacs/xyz00/users/rails/attach&lt;br /&gt;
&lt;br /&gt;
=== Datenbankschema ===&lt;br /&gt;
&lt;br /&gt;
Initialisieren und migrieren der Datenbank je nach Rails-Anwendung.&lt;br /&gt;
&lt;br /&gt;
  cd ~/rails&lt;br /&gt;
  ...&lt;br /&gt;
  rake ...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Konfiguration von FastCGI ===&lt;br /&gt;
&lt;br /&gt;
~/doms/rails.example.org/htdocs/.htaccess&lt;br /&gt;
&lt;br /&gt;
  RewriteEngine On&lt;br /&gt;
  RewriteRule ^$ index.html [QSA]&lt;br /&gt;
  RewriteRule ^([^.]+)$ $1.html [QSA]&lt;br /&gt;
  RewriteCond %{REQUEST_FILENAME} !-f [OR]&lt;br /&gt;
  RewriteCond %{REQUEST_FILENAME} dispatch.fcgi$&lt;br /&gt;
  RewriteRule ^(.*)$ /fastcgi-bin/dispatch.fcgi [QSA,L]&lt;br /&gt;
&lt;br /&gt;
Ältere Versionen von Rails, die noch nicht auf rack middleware aufbauen, laufen mit folgender ~/doms/www.example.org/fastcgi/dispatch.fcgi&lt;br /&gt;
&lt;br /&gt;
  #!/usr/bin/env ruby&lt;br /&gt;
  require &amp;quot;/home/pacs/xyz00/users/meinuser/rails/config/environment&amp;quot; &lt;br /&gt;
  require &#039;fcgi_handler&#039;&lt;br /&gt;
  RailsFCGIHandler.process!&lt;br /&gt;
&lt;br /&gt;
Für aktuelle Versionen von Rails, die auf der &amp;quot;rack&amp;quot; Middleware aufbauen, siehe https://github.com/dre3k/rails3_fcgi, ~/doms/www.example.org/fastcgi/dispatch.fcgi&lt;br /&gt;
  #!/usr/bin/env ruby&lt;br /&gt;
 &lt;br /&gt;
 require_relative &#039;../config/environment&#039;&lt;br /&gt;
 &lt;br /&gt;
 class Rack::PathInfoRewriter&lt;br /&gt;
   def initialize(app)&lt;br /&gt;
     @app = app&lt;br /&gt;
   end&lt;br /&gt;
 &lt;br /&gt;
   def call(env)&lt;br /&gt;
     env.delete(&#039;SCRIPT_NAME&#039;)&lt;br /&gt;
     parts = env[&#039;REQUEST_URI&#039;].split(&#039;?&#039;)&lt;br /&gt;
     env[&#039;PATH_INFO&#039;] = parts[0]&lt;br /&gt;
     env[&#039;QUERY_STRING&#039;] = parts[1].to_s&lt;br /&gt;
     @app.call(env)&lt;br /&gt;
   end&lt;br /&gt;
 end&lt;br /&gt;
 &lt;br /&gt;
 Rack::Handler::FastCGI.run  Rack::PathInfoRewriter.new(HIER_APPLIKATIONSNAME_AUS_config/application.rb_EINTRAGEN::Application)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
FastCGI-Skript ausführbar machen:&lt;br /&gt;
&lt;br /&gt;
  chmod 755 ~/doms/rails.example.org/fastcgi/dispatch.fcgi&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Am Anfang von ~/rails/config/environment.rb einfügen:&lt;br /&gt;
&lt;br /&gt;
  ENV[&#039;RAILS_ENV&#039;] ||= &#039;production&#039;&lt;br /&gt;
  ENV[&#039;GEM_PATH&#039;] ||= &#039;/home/pacs/xyz00/users/meinuser/ruby/.gem/ruby/1.8:/var/lib/gems/1.8&#039;&lt;br /&gt;
Evtl. können diese Einstellungen auch ohne eine Modifikation der Anwendung erfolgen, indem die Umgebungsvariablen in der .htaccess gesetzt werden (z.B. &amp;quot;SetEnv RAILS_ENV production&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
Die Applikation ins Webroot einbinden:&lt;br /&gt;
&lt;br /&gt;
  # ggf. vorhandene Dateien sichern (oder nach ~/rails/public kopieren)&lt;br /&gt;
  mv ~/doms/rails.example.org/htdocs ~/doms/rails.example.org/htdocs.old&lt;br /&gt;
  # Das rails/public Verzeichnis ins Webroot verlinken.&lt;br /&gt;
  ln -s ~/rails/public ~/doms/rails.example.org/htdocs&lt;br /&gt;
&lt;br /&gt;
=== Konfiguration von SSL ===&lt;br /&gt;
&lt;br /&gt;
Die Verzeichnisse ~/doms/rails.example.org/fastcgi-ssl/ und ~/doms/rail.example.org/htdocs-ssl/ werden analog zu bzw. anstelle von fastcgi und htdocs gefüllt.&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:HSDoku]]&lt;br /&gt;
[[Kategorie:Installationsanleitungen]]&lt;br /&gt;
[[Kategorie:Software]]&lt;br /&gt;
[[Kategorie:Glossar]]&lt;/div&gt;</summary>
		<author><name>Srv00-wiki</name></author>
	</entry>
	<entry>
		<id>https://wiki.hostsharing.net/index.php?title=RubyOnRails&amp;diff=3435</id>
		<title>RubyOnRails</title>
		<link rel="alternate" type="text/html" href="https://wiki.hostsharing.net/index.php?title=RubyOnRails&amp;diff=3435"/>
		<updated>2012-08-28T16:29:39Z</updated>

		<summary type="html">&lt;p&gt;Srv00-wiki: /* Vorinstalliert */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Bestes Ruby on Rails Hosting bei Hostsharing ==&lt;br /&gt;
&lt;br /&gt;
Rubyanwendungen laufen (wie alle Anwendungen bei Hostsharing) als Prozesse des jeweiligen Benutzersaccounts. Probleme mit Dateirechten und Sicherheitsrisiken, wie sie sonst bei der Ausführung durch den Webserver auftreten, sind so von vorne herein ausgeschlossen.&lt;br /&gt;
&lt;br /&gt;
Standardmäßig erfolgt der Aufruf von Ruby Anwendungen durch den Apache Webserver über die FastCGI Schnittstelle. Dabei wird ständig eine Ruby Application Server Instanz des Users bereitgehalten, die somit jederzeit zur Bearbeitung von noch nicht gecacheten, oder gar nicht cachebaren, Anfragen zur Verfügung steht.&lt;br /&gt;
&lt;br /&gt;
Für den Betrieb von noch anspruchsvolleren Anwendungen haben wir auch Tools wie haproxy, varnish, nginx etc. installiert. Wir können auch mod_passenger (mod_wsgi haben wir schon) oder mongrel oder Green Unicorn (gunicorn) installieren. Anwender, die damit auf unserer leistungsfähigen Infrastruktur (managed Plattform) z.B. einen Webserver Cluster mit load-balancing realisieren möchten, brauchen bei uns dafür nur eigene Daemons buchen, oder können (für größere Projekte) dafür natürlich auch eine beliebige Anzahl ganzer Server buchen.&lt;br /&gt;
&lt;br /&gt;
== Einrichtung ohne zusätzliche Daemons (ein Application Server) ==&lt;br /&gt;
&lt;br /&gt;
=== Vorbereitungen ===&lt;br /&gt;
&lt;br /&gt;
Einige Einstellungen für den Paketuser.&lt;br /&gt;
&lt;br /&gt;
~/.gemrc&lt;br /&gt;
 install: --no-rdoc --no-ri&lt;br /&gt;
 update:  --no-rdoc --no-ri&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
~/.bashrc&lt;br /&gt;
 alias gem=&amp;quot;nice -n19 gem&amp;quot;&lt;br /&gt;
&lt;br /&gt;
~/.profile&lt;br /&gt;
 source &amp;quot;$HOME/.bashrc&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== Ruby ===&lt;br /&gt;
&lt;br /&gt;
==== Vorinstalliert ====&lt;br /&gt;
&lt;br /&gt;
Soll nur die zentral installierte Ruby Version verwendet werden, ergänzt man man die ~/.profile:&lt;br /&gt;
 # enable user&#039;s own ruby stuff below $HOME&lt;br /&gt;
 export PATH=&amp;quot;$HOME/bin:$HOME/.gem/bin:$PATH&amp;quot;&lt;br /&gt;
 export GEM_PATH=&amp;quot;$( gem env gempath )&amp;quot;&lt;br /&gt;
 export GEM_HOME=&amp;quot;$HOME/.gem/ruby/1.8&amp;quot;&lt;br /&gt;
 export RUBYLIB=&amp;quot;$HOME/.gem/ruby/1.8/lib:/usr/local/lib/site_ruby/1.8/:/usr/lib/ruby/1.8&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 # avoid to forget that extra parameter: ruby -rubygems prog_that_uses_gems&lt;br /&gt;
 export RUBYOPT=rubygems&lt;br /&gt;
 &lt;br /&gt;
 export RAILS_ENV=production&lt;br /&gt;
&lt;br /&gt;
==== Eigene Installation ====&lt;br /&gt;
&lt;br /&gt;
Um eine andere als die vorinstallierte Ruby Version zu verwenden, installiert man zunächst den Ruby Versions Manager (rvm),&lt;br /&gt;
 curl -L https://get.rvm.io | bash -s stable&lt;br /&gt;
 source ~/.rvm/scripts/rvm&lt;br /&gt;
 rvm notes&lt;br /&gt;
 rvm requirements&lt;br /&gt;
 rvm pkg install openssl&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
und lässt dann die gewünschte Ruby Version installieren.&lt;br /&gt;
 rvm install x.y.z&lt;br /&gt;
&lt;br /&gt;
RVM passt die Umgebungsvariablen automatisch an die ausgewählt Version an. Die Version wählt man global per&lt;br /&gt;
 rvm use x.y.z --default&lt;br /&gt;
oder nur für ein spezielles Verzeichnis:&lt;br /&gt;
 cd ~/verzeichnis/mit/ruby-x.y.z-Anwendung&lt;br /&gt;
 rvm use x.y.z-p??? --rvmrc&lt;br /&gt;
&lt;br /&gt;
Zur Verwaltung von gems installiert man noch rubygems.&lt;br /&gt;
 rvm rubygems current&lt;br /&gt;
&lt;br /&gt;
=== Rails ===&lt;br /&gt;
&lt;br /&gt;
Nun kann Rails durch installieren des gem-Pakets installiert werden (inklusive Abhängigkeiten).&lt;br /&gt;
 gem install rails&lt;br /&gt;
Um spezielle versionen zu installieren kann man gem Befehle mit &amp;quot;-v=x.y.z&amp;quot; ergänzen.&lt;br /&gt;
&lt;br /&gt;
=== Rails-Anwendung ===&lt;br /&gt;
&lt;br /&gt;
Seine Rails-Anwendung kopiert man z.B. nach ~/rails, oder erstellt dort eine Neue (rails ~/rails, ...).&lt;br /&gt;
&lt;br /&gt;
=== Datenbank ===&lt;br /&gt;
&lt;br /&gt;
Mit &#039;&#039;hsadmin&#039;&#039; beispielsweise einen Postgres-User (z.B. &#039;xyz00_rails&#039;, Passwort sei &#039;geheim&#039;) sowie eine Datenbank anlegen (z.B. &#039;xyz00_rails&#039;.&lt;br /&gt;
&lt;br /&gt;
Die Datenbank in der Anwendung konfigurieren,&lt;br /&gt;
&lt;br /&gt;
  cd ~/rails-app/config/&lt;br /&gt;
  nano database.yml&lt;br /&gt;
&lt;br /&gt;
mit folgendem Inhalt:&lt;br /&gt;
&lt;br /&gt;
  production:&lt;br /&gt;
    adapter: postgresql&lt;br /&gt;
    database: xyz00_rails&lt;br /&gt;
    host: localhost&lt;br /&gt;
    username: xyz00_rails&lt;br /&gt;
    password: geheim&lt;br /&gt;
&lt;br /&gt;
=== E-Mail, Dateiablage ===&lt;br /&gt;
&lt;br /&gt;
Beispielhafte Konfiguration:&lt;br /&gt;
&lt;br /&gt;
  default:&lt;br /&gt;
    email_delivery:&lt;br /&gt;
      delivery_method: :smtp&lt;br /&gt;
      smtp_settings:&lt;br /&gt;
        address: localhost&lt;br /&gt;
        port: 25&lt;br /&gt;
        domain: example.org&lt;br /&gt;
    attachments_storage_path: /home/pacs/xyz00/users/rails/attach&lt;br /&gt;
&lt;br /&gt;
=== Datenbankschema ===&lt;br /&gt;
&lt;br /&gt;
Initialisieren und migrieren der Datenbank je nach Rails-Anwendung.&lt;br /&gt;
&lt;br /&gt;
  cd ~/rails&lt;br /&gt;
  ...&lt;br /&gt;
  rake ...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Konfiguration von FastCGI ===&lt;br /&gt;
&lt;br /&gt;
~/doms/rails.example.org/htdocs/.htaccess&lt;br /&gt;
&lt;br /&gt;
  RewriteEngine On&lt;br /&gt;
  RewriteRule ^$ index.html [QSA]&lt;br /&gt;
  RewriteRule ^([^.]+)$ $1.html [QSA]&lt;br /&gt;
  RewriteCond %{REQUEST_FILENAME} !-f [OR]&lt;br /&gt;
  RewriteCond %{REQUEST_FILENAME} dispatch.fcgi$&lt;br /&gt;
  RewriteRule ^(.*)$ /fastcgi-bin/dispatch.fcgi [QSA,L]&lt;br /&gt;
&lt;br /&gt;
Ältere Versionen von Rails, die noch nicht auf rack middleware aufbauen, laufen mit folgender ~/doms/www.example.org/fastcgi/dispatch.fcgi&lt;br /&gt;
&lt;br /&gt;
  #!/usr/bin/env ruby&lt;br /&gt;
  require &amp;quot;/home/pacs/xyz00/users/meinuser/rails/config/environment&amp;quot; &lt;br /&gt;
  require &#039;fcgi_handler&#039;&lt;br /&gt;
  RailsFCGIHandler.process!&lt;br /&gt;
&lt;br /&gt;
Für aktuelle Versionen von Rails, die auf der &amp;quot;rack&amp;quot; Middleware aufbauen, siehe https://github.com/dre3k/rails3_fcgi, ~/doms/www.example.org/fastcgi/dispatch.fcgi&lt;br /&gt;
  #!/usr/bin/env ruby&lt;br /&gt;
 &lt;br /&gt;
 require_relative &#039;../config/environment&#039;&lt;br /&gt;
 &lt;br /&gt;
 class Rack::PathInfoRewriter&lt;br /&gt;
   def initialize(app)&lt;br /&gt;
     @app = app&lt;br /&gt;
   end&lt;br /&gt;
 &lt;br /&gt;
   def call(env)&lt;br /&gt;
     env.delete(&#039;SCRIPT_NAME&#039;)&lt;br /&gt;
     parts = env[&#039;REQUEST_URI&#039;].split(&#039;?&#039;)&lt;br /&gt;
     env[&#039;PATH_INFO&#039;] = parts[0]&lt;br /&gt;
     env[&#039;QUERY_STRING&#039;] = parts[1].to_s&lt;br /&gt;
     @app.call(env)&lt;br /&gt;
   end&lt;br /&gt;
 end&lt;br /&gt;
 &lt;br /&gt;
 Rack::Handler::FastCGI.run  Rack::PathInfoRewriter.new(HIER_APPLIKATIONSNAME_AUS_config/application.rb_EINTRAGEN::Application)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
FastCGI-Skript ausführbar machen:&lt;br /&gt;
&lt;br /&gt;
  chmod 755 ~/doms/rails.example.org/fastcgi/dispatch.fcgi&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Am Anfang von ~/rails/config/environment.rb einfügen:&lt;br /&gt;
&lt;br /&gt;
  ENV[&#039;RAILS_ENV&#039;] ||= &#039;production&#039;&lt;br /&gt;
  ENV[&#039;GEM_PATH&#039;] ||= &#039;/home/pacs/xyz00/users/meinuser/ruby/.gem/ruby/1.8:/var/lib/gems/1.8&#039;&lt;br /&gt;
Evtl. können diese Einstellungen auch ohne eine Modifikation der Anwendung erfolgen, indem die Umgebungsvariablen in der .htaccess gesetzt werden (z.B. &amp;quot;SetEnv RAILS_ENV production&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
Die Applikation ins Webroot einbinden:&lt;br /&gt;
&lt;br /&gt;
  # ggf. vorhandene Dateien sichern (oder nach ~/rails/public kopieren)&lt;br /&gt;
  mv ~/doms/rails.example.org/htdocs ~/doms/rails.example.org/htdocs.old&lt;br /&gt;
  # Das rails/public Verzeichnis ins Webroot verlinken.&lt;br /&gt;
  ln -s ~/rails/public ~/doms/rails.example.org/htdocs&lt;br /&gt;
&lt;br /&gt;
=== Konfiguration von SSL ===&lt;br /&gt;
&lt;br /&gt;
Die Verzeichnisse ~/doms/rails.example.org/fastcgi-ssl/ und ~/doms/rail.example.org/htdocs-ssl/ werden analog zu bzw. anstelle von fastcgi und htdocs gefüllt.&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:HSDoku]]&lt;br /&gt;
[[Kategorie:Installationsanleitungen]]&lt;br /&gt;
[[Kategorie:Software]]&lt;br /&gt;
[[Kategorie:Glossar]]&lt;/div&gt;</summary>
		<author><name>Srv00-wiki</name></author>
	</entry>
	<entry>
		<id>https://wiki.hostsharing.net/index.php?title=RubyOnRails&amp;diff=3434</id>
		<title>RubyOnRails</title>
		<link rel="alternate" type="text/html" href="https://wiki.hostsharing.net/index.php?title=RubyOnRails&amp;diff=3434"/>
		<updated>2012-08-28T16:23:32Z</updated>

		<summary type="html">&lt;p&gt;Srv00-wiki: /* Vorinstalliert */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Bestes Ruby on Rails Hosting bei Hostsharing ==&lt;br /&gt;
&lt;br /&gt;
Rubyanwendungen laufen (wie alle Anwendungen bei Hostsharing) als Prozesse des jeweiligen Benutzersaccounts. Probleme mit Dateirechten und Sicherheitsrisiken, wie sie sonst bei der Ausführung durch den Webserver auftreten, sind so von vorne herein ausgeschlossen.&lt;br /&gt;
&lt;br /&gt;
Standardmäßig erfolgt der Aufruf von Ruby Anwendungen durch den Apache Webserver über die FastCGI Schnittstelle. Dabei wird ständig eine Ruby Application Server Instanz des Users bereitgehalten, die somit jederzeit zur Bearbeitung von noch nicht gecacheten, oder gar nicht cachebaren, Anfragen zur Verfügung steht.&lt;br /&gt;
&lt;br /&gt;
Für den Betrieb von noch anspruchsvolleren Anwendungen haben wir auch Tools wie haproxy, varnish, nginx etc. installiert. Wir können auch mod_passenger (mod_wsgi haben wir schon) oder mongrel oder Green Unicorn (gunicorn) installieren. Anwender, die damit auf unserer leistungsfähigen Infrastruktur (managed Plattform) z.B. einen Webserver Cluster mit load-balancing realisieren möchten, brauchen bei uns dafür nur eigene Daemons buchen, oder können (für größere Projekte) dafür natürlich auch eine beliebige Anzahl ganzer Server buchen.&lt;br /&gt;
&lt;br /&gt;
== Einrichtung ohne zusätzliche Daemons (ein Application Server) ==&lt;br /&gt;
&lt;br /&gt;
=== Vorbereitungen ===&lt;br /&gt;
&lt;br /&gt;
Einige Einstellungen für den Paketuser.&lt;br /&gt;
&lt;br /&gt;
~/.gemrc&lt;br /&gt;
 install: --no-rdoc --no-ri&lt;br /&gt;
 update:  --no-rdoc --no-ri&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
~/.bashrc&lt;br /&gt;
 alias gem=&amp;quot;nice -n19 gem&amp;quot;&lt;br /&gt;
&lt;br /&gt;
~/.profile&lt;br /&gt;
 source &amp;quot;$HOME/.bashrc&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== Ruby ===&lt;br /&gt;
&lt;br /&gt;
==== Vorinstalliert ====&lt;br /&gt;
&lt;br /&gt;
Soll nur die zentral installierte Ruby Version verwendet werden, ergänzt man man die ~/.profile:&lt;br /&gt;
 # enable user&#039;s own ruby stuff below $HOME&lt;br /&gt;
 export PATH=&amp;quot;$HOME/bin:$HOME/.gem/bin:$PATH&amp;quot;&lt;br /&gt;
 export GEM_HOME=&amp;quot;$HOME/.gem&amp;quot;&lt;br /&gt;
 export RUBYLIB=&amp;quot;$HOME/.gem/ruby/1.8/lib:/usr/local/lib/site_ruby/1.8/:/usr/lib/ruby/1.8&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 # avoid to forget that extra parameter: ruby -rubygems prog_that_uses_gems&lt;br /&gt;
 export RUBYOPT=rubygems&lt;br /&gt;
 &lt;br /&gt;
 export RAILS_ENV=production&lt;br /&gt;
&lt;br /&gt;
==== Eigene Installation ====&lt;br /&gt;
&lt;br /&gt;
Um eine andere als die vorinstallierte Ruby Version zu verwenden, installiert man zunächst den Ruby Versions Manager (rvm),&lt;br /&gt;
 curl -L https://get.rvm.io | bash -s stable&lt;br /&gt;
 source ~/.rvm/scripts/rvm&lt;br /&gt;
 rvm notes&lt;br /&gt;
 rvm requirements&lt;br /&gt;
 rvm pkg install openssl&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
und lässt dann die gewünschte Ruby Version installieren.&lt;br /&gt;
 rvm install x.y.z&lt;br /&gt;
&lt;br /&gt;
RVM passt die Umgebungsvariablen automatisch an die ausgewählt Version an. Die Version wählt man global per&lt;br /&gt;
 rvm use x.y.z --default&lt;br /&gt;
oder nur für ein spezielles Verzeichnis:&lt;br /&gt;
 cd ~/verzeichnis/mit/ruby-x.y.z-Anwendung&lt;br /&gt;
 rvm use x.y.z-p??? --rvmrc&lt;br /&gt;
&lt;br /&gt;
Zur Verwaltung von gems installiert man noch rubygems.&lt;br /&gt;
 rvm rubygems current&lt;br /&gt;
&lt;br /&gt;
=== Rails ===&lt;br /&gt;
&lt;br /&gt;
Nun kann Rails durch installieren des gem-Pakets installiert werden (inklusive Abhängigkeiten).&lt;br /&gt;
 gem install rails&lt;br /&gt;
Um spezielle versionen zu installieren kann man gem Befehle mit &amp;quot;-v=x.y.z&amp;quot; ergänzen.&lt;br /&gt;
&lt;br /&gt;
=== Rails-Anwendung ===&lt;br /&gt;
&lt;br /&gt;
Seine Rails-Anwendung kopiert man z.B. nach ~/rails, oder erstellt dort eine Neue (rails ~/rails, ...).&lt;br /&gt;
&lt;br /&gt;
=== Datenbank ===&lt;br /&gt;
&lt;br /&gt;
Mit &#039;&#039;hsadmin&#039;&#039; beispielsweise einen Postgres-User (z.B. &#039;xyz00_rails&#039;, Passwort sei &#039;geheim&#039;) sowie eine Datenbank anlegen (z.B. &#039;xyz00_rails&#039;.&lt;br /&gt;
&lt;br /&gt;
Die Datenbank in der Anwendung konfigurieren,&lt;br /&gt;
&lt;br /&gt;
  cd ~/rails-app/config/&lt;br /&gt;
  nano database.yml&lt;br /&gt;
&lt;br /&gt;
mit folgendem Inhalt:&lt;br /&gt;
&lt;br /&gt;
  production:&lt;br /&gt;
    adapter: postgresql&lt;br /&gt;
    database: xyz00_rails&lt;br /&gt;
    host: localhost&lt;br /&gt;
    username: xyz00_rails&lt;br /&gt;
    password: geheim&lt;br /&gt;
&lt;br /&gt;
=== E-Mail, Dateiablage ===&lt;br /&gt;
&lt;br /&gt;
Beispielhafte Konfiguration:&lt;br /&gt;
&lt;br /&gt;
  default:&lt;br /&gt;
    email_delivery:&lt;br /&gt;
      delivery_method: :smtp&lt;br /&gt;
      smtp_settings:&lt;br /&gt;
        address: localhost&lt;br /&gt;
        port: 25&lt;br /&gt;
        domain: example.org&lt;br /&gt;
    attachments_storage_path: /home/pacs/xyz00/users/rails/attach&lt;br /&gt;
&lt;br /&gt;
=== Datenbankschema ===&lt;br /&gt;
&lt;br /&gt;
Initialisieren und migrieren der Datenbank je nach Rails-Anwendung.&lt;br /&gt;
&lt;br /&gt;
  cd ~/rails&lt;br /&gt;
  ...&lt;br /&gt;
  rake ...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Konfiguration von FastCGI ===&lt;br /&gt;
&lt;br /&gt;
~/doms/rails.example.org/htdocs/.htaccess&lt;br /&gt;
&lt;br /&gt;
  RewriteEngine On&lt;br /&gt;
  RewriteRule ^$ index.html [QSA]&lt;br /&gt;
  RewriteRule ^([^.]+)$ $1.html [QSA]&lt;br /&gt;
  RewriteCond %{REQUEST_FILENAME} !-f [OR]&lt;br /&gt;
  RewriteCond %{REQUEST_FILENAME} dispatch.fcgi$&lt;br /&gt;
  RewriteRule ^(.*)$ /fastcgi-bin/dispatch.fcgi [QSA,L]&lt;br /&gt;
&lt;br /&gt;
Ältere Versionen von Rails, die noch nicht auf rack middleware aufbauen, laufen mit folgender ~/doms/www.example.org/fastcgi/dispatch.fcgi&lt;br /&gt;
&lt;br /&gt;
  #!/usr/bin/env ruby&lt;br /&gt;
  require &amp;quot;/home/pacs/xyz00/users/meinuser/rails/config/environment&amp;quot; &lt;br /&gt;
  require &#039;fcgi_handler&#039;&lt;br /&gt;
  RailsFCGIHandler.process!&lt;br /&gt;
&lt;br /&gt;
Für aktuelle Versionen von Rails, die auf der &amp;quot;rack&amp;quot; Middleware aufbauen, siehe https://github.com/dre3k/rails3_fcgi, ~/doms/www.example.org/fastcgi/dispatch.fcgi&lt;br /&gt;
  #!/usr/bin/env ruby&lt;br /&gt;
 &lt;br /&gt;
 require_relative &#039;../config/environment&#039;&lt;br /&gt;
 &lt;br /&gt;
 class Rack::PathInfoRewriter&lt;br /&gt;
   def initialize(app)&lt;br /&gt;
     @app = app&lt;br /&gt;
   end&lt;br /&gt;
 &lt;br /&gt;
   def call(env)&lt;br /&gt;
     env.delete(&#039;SCRIPT_NAME&#039;)&lt;br /&gt;
     parts = env[&#039;REQUEST_URI&#039;].split(&#039;?&#039;)&lt;br /&gt;
     env[&#039;PATH_INFO&#039;] = parts[0]&lt;br /&gt;
     env[&#039;QUERY_STRING&#039;] = parts[1].to_s&lt;br /&gt;
     @app.call(env)&lt;br /&gt;
   end&lt;br /&gt;
 end&lt;br /&gt;
 &lt;br /&gt;
 Rack::Handler::FastCGI.run  Rack::PathInfoRewriter.new(HIER_APPLIKATIONSNAME_AUS_config/application.rb_EINTRAGEN::Application)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
FastCGI-Skript ausführbar machen:&lt;br /&gt;
&lt;br /&gt;
  chmod 755 ~/doms/rails.example.org/fastcgi/dispatch.fcgi&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Am Anfang von ~/rails/config/environment.rb einfügen:&lt;br /&gt;
&lt;br /&gt;
  ENV[&#039;RAILS_ENV&#039;] ||= &#039;production&#039;&lt;br /&gt;
  ENV[&#039;GEM_PATH&#039;] ||= &#039;/home/pacs/xyz00/users/meinuser/ruby/.gem/ruby/1.8:/var/lib/gems/1.8&#039;&lt;br /&gt;
Evtl. können diese Einstellungen auch ohne eine Modifikation der Anwendung erfolgen, indem die Umgebungsvariablen in der .htaccess gesetzt werden (z.B. &amp;quot;SetEnv RAILS_ENV production&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
Die Applikation ins Webroot einbinden:&lt;br /&gt;
&lt;br /&gt;
  # ggf. vorhandene Dateien sichern (oder nach ~/rails/public kopieren)&lt;br /&gt;
  mv ~/doms/rails.example.org/htdocs ~/doms/rails.example.org/htdocs.old&lt;br /&gt;
  # Das rails/public Verzeichnis ins Webroot verlinken.&lt;br /&gt;
  ln -s ~/rails/public ~/doms/rails.example.org/htdocs&lt;br /&gt;
&lt;br /&gt;
=== Konfiguration von SSL ===&lt;br /&gt;
&lt;br /&gt;
Die Verzeichnisse ~/doms/rails.example.org/fastcgi-ssl/ und ~/doms/rail.example.org/htdocs-ssl/ werden analog zu bzw. anstelle von fastcgi und htdocs gefüllt.&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:HSDoku]]&lt;br /&gt;
[[Kategorie:Installationsanleitungen]]&lt;br /&gt;
[[Kategorie:Software]]&lt;br /&gt;
[[Kategorie:Glossar]]&lt;/div&gt;</summary>
		<author><name>Srv00-wiki</name></author>
	</entry>
</feed>