tag:www.stefanwienert.net,2008:/debian Debian - Stefan Wienert's Blog 2011-09-01T18:13:03Z Enki Stefan Wienert stwienert@gmail.com tag:www.stefanwienert.net,2008:Post/41 2010-03-23T16:40:00Z 2010-03-23T17:40:58Z Umstellung 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 &#8220;site.stefanwienert.net&#8221; genommen. Jetzt ist mir mal aufgefallen, dass die Wahl der Subdomain &#8220;www.&#8221; deutlich klüger gewesen wäre.</p> <p>Anfragen an <b>mod_userdir</b> können bei dieser Methode dann einfach durch &#8220;http://hauptdomain/~username&#8221; entgegengenommen werden. Die Haupt Rails Domain, auf die der Nutzer bei Erstkontakt stoßen sollte, ist dann &#8220;www.stefanwienert.net&#8221; und wird dank Passenger dann an einen Ruby-Prozess dispatcht. Dazu muss man einfach nur zwei vhosts in seiner &#8220;/etc/apache2/sites-enabled/&#8230;&#8221; 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>&lt;<span class="co">VirtualHost</span> *:<span class="i">80</span>&gt; <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> &lt;<span class="co">Directory</span> <span class="rx"><span class="dl">/</span><span class="k">var</span><span class="dl">/</span></span>www/&gt; <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> &lt;<span class="rx"><span class="dl">/</span><span class="k">Directory&gt; <tt> </tt>&lt;</span><span class="dl">/</span></span><span class="co">VirtualHost</span>&gt; <tt> </tt><tt> </tt><span class="c"># jetzt der eigentliche Rails Prozess</span><tt> </tt>&lt;<span class="co">VirtualHost</span> *:<span class="i">80</span>&gt; <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> &lt;<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&gt; <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> &lt;<span class="rx"><span class="dl">/</span><span class="k">Directory&gt; <tt> </tt>&lt;</span><span class="dl">/</span></span><span class="co">VirtualHost</span>&gt;<tt> </tt><tt> </tt></pre></td> </tr></table> <p>Zu guter Letzt noch eine 304 Weiterleitung für die, die &#8220;http://site.stefanwienert.net&#8221; oder &#8220;http://stefanwienert.net&#8221; eintippen. Das ganze kann man in die entsprechenden htaccess packen oder oben gleich mit bei den &#8220;Directory&#8221; 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/39 2010-03-22T07:07:00Z 2010-03-22T08:07:16Z Vim 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/37 2010-03-02T06:31:00Z 2011-09-01T18:13:03Z Rails/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 &#8230;)</li> <li>Schauen, dass die Lese/Schreibrechte hinhauen: z.B. <tt>chgrp psaserv log db tmp -R &amp;&amp; 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">&quot;</span><span class="k">production</span><span class="dl">&quot;</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> &lt;<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 &gt;<tt> </tt> <span class="co">AllowOverride</span> all<tt> </tt> <span class="co">Options</span> -<span class="co">MultiViews</span><tt> </tt> &lt;<span class="rx"><span class="dl">/</span><span class="k">Directory&gt;<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://&#8230;domain), muss man noch etwas tun:</p> <ul> <li>die Datei &#8220;conf/vhost.conf&#8221; nach &#8220;conf/vhost_ssl.conf&#8221; kopieren</li> <li>Plesk reloaden</li> </ul> <p>Ansonsten erhält man ein 403 &#8220;Forbidden You don&#8217;t have permission to access / on this server.&#8221;, da Apache das ganze als statische <span class="caps">HTML</span>-Seite betrachtet, und die index.html sucht.</p>