tag:www.stefanwienert.net,2008:/debianDebian - Stefan Wienert's Blog2011-09-01T18:13:03ZEnkiStefan Wienertstwienert@gmail.comtag:www.stefanwienert.net,2008:Post/412010-03-23T16:40:00Z2010-03-23T17:40:58ZUmstellung auf "www.stefanwienert.net" und Passenger mit apache mod userdir<p>Diejenigen, die meinen Feed abonniert haben, haben es wahrscheinlich schon gemerkt, da die ganzen Items als ungelesen markiert sein könnten.<br />
Da ich passenger verwende, aber gleichzeitig noch apache mit mod_userdir nutzen möchte, blieb mir nichts anderes übrig als den Hauptteil der Site auf eine Subdomain zu legen. Aus irgendwelchen unerfindlichen Gründen hatte ich damals “site.stefanwienert.net” genommen. Jetzt ist mir mal aufgefallen, dass die Wahl der Subdomain “www.” deutlich klüger gewesen wäre.</p>
<p>Anfragen an <b>mod_userdir</b> können bei dieser Methode dann einfach durch “http://hauptdomain/~username” entgegengenommen werden. Die Haupt Rails Domain, auf die der Nutzer bei Erstkontakt stoßen sollte, ist dann “www.stefanwienert.net” und wird dank Passenger dann an einen Ruby-Prozess dispatcht. Dazu muss man einfach nur zwei vhosts in seiner “/etc/apache2/sites-enabled/…” aktivieren:</p><table class="CodeRay"><tr>
<td class="line_numbers" title="click to toggle" onclick="with (this.firstChild.style) { display = (display == '') ? 'none' : '' }"><pre>1<tt>
</tt>2<tt>
</tt>3<tt>
</tt>4<tt>
</tt>5<tt>
</tt>6<tt>
</tt>7<tt>
</tt>8<tt>
</tt>9<tt>
</tt><strong>10</strong><tt>
</tt>11<tt>
</tt>12<tt>
</tt>13<tt>
</tt>14<tt>
</tt>15<tt>
</tt>16<tt>
</tt>17<tt>
</tt>18<tt>
</tt>19<tt>
</tt><strong>20</strong><tt>
</tt>21<tt>
</tt>22<tt>
</tt>23<tt>
</tt>24<tt>
</tt>25<tt>
</tt>26<tt>
</tt>27<tt>
</tt>28<tt>
</tt>29<tt>
</tt><strong>30</strong><tt>
</tt>31<tt>
</tt>32<tt>
</tt></pre></td>
<td class="code"><pre ondblclick="with (this.style) { overflow = (overflow == 'auto' || overflow == '') ? 'visible' : 'auto' }"><span class="c"># Hier fuer die Hauptdomain, um weitere Websites zu ermoeglichen</span><tt>
</tt><span class="c"># z.B. php Wikis oder Userspaces</span><tt>
</tt><<span class="co">VirtualHost</span> *:<span class="i">80</span>> <tt>
</tt> <span class="co">ServerAdmin</span> s59605<span class="iv">@htw</span>-dresden.de <tt>
</tt> <span class="co">ServerName</span> stefanwienert.net <tt>
</tt> <span class="co">DocumentRoot</span> <span class="rx"><span class="dl">/</span><span class="k">var</span><span class="dl">/</span></span>www <tt>
</tt><span class="c"># PassengerHighPerformance on </span><tt>
</tt> <<span class="co">Directory</span> <span class="rx"><span class="dl">/</span><span class="k">var</span><span class="dl">/</span></span>www/> <tt>
</tt> <span class="co">Options</span> <span class="co">Indexes</span> <span class="co">FollowSymLinks</span> <span class="co">MultiViews</span><tt>
</tt> <span class="co">AllowOverride</span> <span class="co">All</span> <tt>
</tt> <span class="co">Order</span> allow,deny <tt>
</tt> allow from all <tt>
</tt> <<span class="rx"><span class="dl">/</span><span class="k">Directory> <tt>
</tt><</span><span class="dl">/</span></span><span class="co">VirtualHost</span>> <tt>
</tt><tt>
</tt><span class="c"># jetzt der eigentliche Rails Prozess</span><tt>
</tt><<span class="co">VirtualHost</span> *:<span class="i">80</span>> <tt>
</tt> <span class="co">ServerAdmin</span> info<span class="iv">@stefanwienert</span>.net <tt>
</tt> <span class="co">ServerName</span> www.stefanwienert.net <tt>
</tt> <span class="co">ServerAlias</span> site.stefanwienert.net <tt>
</tt> <span class="c">#RailsBaseURI /site </span><tt>
</tt> <span class="co">DocumentRoot</span> <span class="rx"><span class="dl">/</span><span class="k">path</span><span class="dl">/</span></span>to/rails/public <tt>
</tt><span class="c"># gzip html, css and js </span><tt>
</tt> <span class="co">AddOutputFilterByType</span> <span class="co">DEFLATE</span> text/html text/css application/x-javascript application/javascript<tt>
</tt><tt>
</tt> <<span class="co">Directory</span> <span class="rx"><span class="dl">/</span><span class="k">path</span><span class="dl">/</span></span>to/rails/public> <tt>
</tt> <span class="co">Order</span> allow,deny <tt>
</tt> <span class="co">Allow</span> from all <tt>
</tt> <span class="co">AllowOverride</span> <span class="co">All</span> <tt>
</tt> <<span class="rx"><span class="dl">/</span><span class="k">Directory> <tt>
</tt><</span><span class="dl">/</span></span><span class="co">VirtualHost</span>><tt>
</tt><tt>
</tt></pre></td>
</tr></table>
<p>Zu guter Letzt noch eine 304 Weiterleitung für die, die “http://site.stefanwienert.net” oder “http://stefanwienert.net” eintippen. Das ganze kann man in die entsprechenden htaccess packen oder oben gleich mit bei den “Directory” Direktiven mit angeben. Hier der Vollständigkeit halber, bevor ihr selbst erst googlen müsst.</p><table class="CodeRay"><tr>
<td class="line_numbers" title="click to toggle" onclick="with (this.firstChild.style) { display = (display == '') ? 'none' : '' }"><pre>1<tt>
</tt>2<tt>
</tt>3<tt>
</tt>4<tt>
</tt>5<tt>
</tt>6<tt>
</tt>7<tt>
</tt>8<tt>
</tt>9<tt>
</tt><strong>10</strong><tt>
</tt>11<tt>
</tt>12<tt>
</tt>13<tt>
</tt>14<tt>
</tt>15<tt>
</tt>16<tt>
</tt>17<tt>
</tt></pre></td>
<td class="code"><pre ondblclick="with (this.style) { overflow = (overflow == 'auto' || overflow == '') ? 'visible' : 'auto' }"><span class="c"># /var/www/.htaccess:</span><tt>
</tt><span class="co">RewriteEngine</span> <span class="co">On</span><tt>
</tt><tt>
</tt><span class="co">RewriteCond</span> <span class="s"><span class="dl">%{</span><span class="k">HTTP_HOST</span><span class="dl">}</span></span> ^stefanwienert.net<span class="er">$</span><tt>
</tt><span class="co">RewriteCond</span> <span class="s"><span class="dl">%{</span><span class="k">REQUEST_URI</span><span class="dl">}</span></span> ^<span class="er">\</span><span class="rx"><span class="dl">/</span><span class="k">$<tt>
</tt>RewriteRule ^(.*)$ http:</span><span class="dl">/</span></span>/www.stefanwienert.net/<span class="gv">$1</span> [<span class="co">R</span>=permanent,<span class="co">L</span>]<tt>
</tt><tt>
</tt><tt>
</tt><span class="c"># /path/to/rails/public/.htaccess</span><tt>
</tt><span class="co">RewriteEngine</span> on<tt>
</tt><tt>
</tt><span class="co">RewriteCond</span> <span class="s"><span class="dl">%{</span><span class="k">HTTP_HOST</span><span class="dl">}</span></span> ^site.stefanwienert.net [<span class="co">NC</span>]<tt>
</tt><span class="co">RewriteRule</span> ^(.*)<span class="er">$</span> http<span class="sy">:/</span>/www.stefanwienert.net/<span class="gv">$1</span> [<span class="co">L</span>,<span class="co">R</span>=<span class="i">301</span>]<tt>
</tt><tt>
</tt><tt>
</tt><span class="c"># Hups, hier sieht man mal, dass ich die Zeilen jeweils woanders</span><tt>
</tt><span class="c"># herkopiert habe: Selbe Funktion aber etwas andere Syntax :)</span><tt>
</tt></pre></td>
</tr></table>
tag:www.stefanwienert.net,2008:Post/392010-03-22T07:07:00Z2010-03-22T08:07:16ZVim 7.2 mit ERB HAML .. Syntaxhightlighting auf Debian Squeeze <p>Wer sein Rails Projekt auf Debian laufen hat, und seine Minichanges mit <span class="caps">VIM</span> macht, der kennt vielleicht das Problem, dass bei Vim 7.1 keine Syntax Beschreibungen fuer <span class="caps">ERB</span> und <span class="caps">HAML</span> (z.B.) dabei sind.</p>
<p>7.2. kann man wie folgt installieren (Alternativ aber auch aus der Quelle, hier jetzt mit den debs)</p><table class="CodeRay"><tr>
<td class="line_numbers" title="click to toggle" onclick="with (this.firstChild.style) { display = (display == '') ? 'none' : '' }"><pre>1<tt>
</tt>2<tt>
</tt>3<tt>
</tt>4<tt>
</tt>5<tt>
</tt>6<tt>
</tt>7<tt>
</tt></pre></td>
<td class="code"><pre ondblclick="with (this.style) { overflow = (overflow == 'auto' || overflow == '') ? 'visible' : 'auto' }"><span class="c"># Pakete herunterladen</span><tt>
</tt>wget http<span class="sy">:/</span>/ftp.de.debian.org/debian/pool/main/v/vim/vim-common_7.<span class="fl">2.330</span>-<span class="i">1</span>_i386.deb<tt>
</tt>wget http<span class="sy">:/</span>/ftp.de.debian.org/debian/pool/main/v/vim/vim-runtime_7.<span class="fl">2.330</span>-<span class="i">1</span>_all.deb<tt>
</tt>wget http<span class="sy">:/</span>/ftp.de.debian.org/debian/pool/main/v/vim/vim_7.<span class="fl">2.330</span>-<span class="i">1</span>_i386.deb <tt>
</tt><tt>
</tt><span class="c"># Das Zeug installieren</span><tt>
</tt>dpkg -i *.deb<tt>
</tt></pre></td>
</tr></table>
<p>Jetzt ist es zwar schon installiert, aber u.a. das Syntaxhighlighting sollte noch etwas bocken, weil noch der runtimepath angepasst werden muss:</p><table class="CodeRay"><tr>
<td class="line_numbers" title="click to toggle" onclick="with (this.firstChild.style) { display = (display == '') ? 'none' : '' }"><pre>1<tt>
</tt>2<tt>
</tt>3<tt>
</tt>4<tt>
</tt>5<tt>
</tt>6<tt>
</tt>7<tt>
</tt></pre></td>
<td class="code"><pre ondblclick="with (this.style) { overflow = (overflow == 'auto' || overflow == '') ? 'visible' : 'auto' }">vim /usr/share/vim/vimrc<tt>
</tt><tt>
</tt># Dort unten einfuegen, falls die Zeile in der Datei nicht vorhanden ist:<tt>
</tt>set runtimepath=~/.vim,/etc/vim,/usr/share/vim/vimfiles,/usr/share/vim/addons,/usr/share/vim/vim72,\<tt>
</tt> /usr/share/vim/vimfiles,/usr/share/vim/addons/after,~/.vim/after<tt>
</tt><tt>
</tt># Speichern und raus<tt>
</tt></pre></td>
</tr></table>
<p>Sollte soweit klappen. Bitte einen Kommentar hinterlassen, falls was schiefgelaufen ist.</p>tag:www.stefanwienert.net,2008:Post/372010-03-02T06:31:00Z2011-09-01T18:13:03ZRails/Passenger im Parallels Plesk zum Laufen bekommen EDIT mit SSL<p>Wer auch Parallels Plesk Panel für seine Serveradministration verwendet, und sich schonmal gefragt hat, ob es was besseres als die Build-in Fast <span class="caps">CGI</span> Unterstützung oder Mongrel/Webrick gibt, dem will ich hier mal einen kleinen Guide geben, wie das ganze mit Passenger zu bewerkstelligen ist.<br />
Wir verwenden für die Administration unserer Server auch Plesk, da es echt stupid simple ist.</p>
<p>Ich gehe davon aus, dass Ruby und Rubygems bereits installiert sind! (Sollte man z.B. Debian verwenden, auf keinen Fall die Pakete aus dem apt-get installieren, sondern <a href="http://rubyonrails.org/download">manuell wie hier beschreiben</a>.) Auch ein Root-Zugang zum Server wird benötigt.</p>
<p>Also:</p>
<ol>
<li>im Plesk eine neue Domain/Subdomain anlegen</li>
<li>Unser Rails-Projekt nach <tt>/var/www/vhosts/<span class="caps">DOMAIN</span>/httpdocs</tt> bzw. <tt>/var/www/vhosts/<span class="caps">DOMAIN</span>/subdomains/<span class="caps">SUBDOMAIN</span>/httpdocs</tt> kopieren. Also genau dort rein, kein weiteres Unterverzeichnis (nach httpdocs kommen dann gleich app db config public …)</li>
<li>Schauen, dass die Lese/Schreibrechte hinhauen: z.B. <tt>chgrp psaserv log db tmp -R && chmod g+w * -R</tt>. Im einzelnen mal schauen.</li>
<li>Root Konsole: Gems installieren und Datenbank migrieren:</li>
</ol><table class="CodeRay"><tr>
<td class="line_numbers" title="click to toggle" onclick="with (this.firstChild.style) { display = (display == '') ? 'none' : '' }"><pre>1<tt>
</tt>2<tt>
</tt>3<tt>
</tt>4<tt>
</tt>5<tt>
</tt></pre></td>
<td class="code"><pre ondblclick="with (this.style) { overflow = (overflow == 'auto' || overflow == '') ? 'visible' : 'auto' }">rake gems<span class="sy">:install</span><tt>
</tt>rake db<span class="sy">:migrate</span> <span class="co">RAILS_ENV</span>=<span class="s"><span class="dl">"</span><span class="k">production</span><span class="dl">"</span></span><tt>
</tt>gem install passenger<tt>
</tt><span class="c"># laengere Anleitung befolgen. Im Endeffekt muss man ein paar Zeilen in die apache2.conf kopieren. </span><tt>
</tt><span class="c"># Den zweiten Teil mit mit der Vserver Konfiguration interessiert uns im Moment nicht</span><tt>
</tt></pre></td>
</tr></table>
<ol>
<li>Im Ordner <tt><span class="caps">DOMAIN</span>/conf</tt> also von unserem httpdocs Verzeichnis <tt>../conf/vhost.conf</tt> nun die Datei vhost.conf anlegen und folgendes reinkopieren (jeweils das richtige Verzeichnis als Ziel nehmen, je nachdem ob wir eine Subdomain oder Domain benutzen möchten):</li>
</ol><table class="CodeRay"><tr>
<td class="line_numbers" title="click to toggle" onclick="with (this.firstChild.style) { display = (display == '') ? 'none' : '' }"><pre>1<tt>
</tt>2<tt>
</tt>3<tt>
</tt>4<tt>
</tt>5<tt>
</tt>6<tt>
</tt></pre></td>
<td class="code"><pre ondblclick="with (this.style) { overflow = (overflow == 'auto' || overflow == '') ? 'visible' : 'auto' }"> <span class="co">DocumentRoot</span> <span class="rx"><span class="dl">/</span><span class="k">var</span><span class="dl">/</span></span>www/vhosts/<span class="co">DOMAIN</span>/httpdocs/public<tt>
</tt><span class="c"># bzw. /var/www/vhosts/DOMAIN/subdomains/SUBDOMAIN/httpdocs/public</span><tt>
</tt> <<span class="co">Directory</span> <span class="rx"><span class="dl">/</span><span class="k">var</span><span class="dl">/</span></span>www/vhosts/pludoni.de/subdomains/tasks/httpdocs/public ><tt>
</tt> <span class="co">AllowOverride</span> all<tt>
</tt> <span class="co">Options</span> -<span class="co">MultiViews</span><tt>
</tt> <<span class="rx"><span class="dl">/</span><span class="k">Directory><tt>
</tt></span></span></pre></td>
</tr></table>
<ol>
<li>plesk Vhost reloaden:</li>
</ol><table class="CodeRay"><tr>
<td class="line_numbers" title="click to toggle" onclick="with (this.firstChild.style) { display = (display == '') ? 'none' : '' }"><pre>1<tt>
</tt></pre></td>
<td class="code"><pre ondblclick="with (this.style) { overflow = (overflow == 'auto' || overflow == '') ? 'visible' : 'auto' }">/usr/local/psa/admin/sbin/websrvmng -u --vhost-name=DOMAIN.de<tt>
</tt></pre></td>
</tr></table>
<p>hierbei jeweils immer nur die Domain angeben, auch wenn wir nur einen Subdomain anlegen.</p>
<p>Nun sollte unsere Rails App unter der Domain bzw. Subdomain verfügbar sein. Neustarten können wir Passenger indem wir ein <tt>touch tmp/restart.txt</tt> oder die Datei sonst irgendwie im Timestamp verändern.</p>
<p><strong>Edit</strong>: Möchte man Plesk, Rails und Passenger mit <span class="caps">SSL</span> verwenden (also https://…domain), muss man noch etwas tun:</p>
<ul>
<li>die Datei “conf/vhost.conf” nach “conf/vhost_ssl.conf” kopieren</li>
<li>Plesk reloaden</li>
</ul>
<p>Ansonsten erhält man ein 403 “Forbidden You don’t have permission to access / on this server.”, da Apache das ganze als statische <span class="caps">HTML</span>-Seite betrachtet, und die index.html sucht.</p>