One-Click Speedup für Apache-VHosts 0

Posted by fwoeck
on Thursday, July 23

Mit diesen allgemeinen Apache2-Optionen lässt sich relativ schnell und schmerzlos eine Verbesserung der Ladezeiten erreichen: Kompression und Expiration-Headers.

Die beiden verantwortlichen Module müssen aktiviert werden:

a2enmod expires
a2enmod deflate

und die globale Sektion der apache2.conf erweitert:

# gzip html, css and js
AddOutputFilterByType DEFLATE text/html text/css application/x-javascript application/javascript

# far future expires headers
<FilesMatch ".(ico|pdf|flv|jpg|jpeg|png|gif|js|css|swf)?d{10}$">
  ExpiresDefault "access plus 10 years" 
</FilesMatch>

Zu beachten wäre, dass die statischen Dateien aufgrund der langen Lebensdauer nicht aus dem Cache der Browser verschwinden werden – es sei denn, man zwingt sie dazu!

Weblinks

speed-up-your-apachepassenger-rails-app-in-2min

mod_rewrite: 13 Beispiele 0

Posted by fwoeck
on Sunday, April 26

Auf seiner Website gibt DK Lynn eine Einführung in die Verwendung von mod_rewrite. Außer dem Link seien hier noch der pdf-Ausdruck und ein mod_rewrite-Cheat-sheet angegeben.

Material

  1. apache-mod_rewrite-examples
  2. 13_Realworld_Examples.pdf
  3. mod_rewrite-cheat-sheet-v2.pdf

Apache Performance-tuning 0

Posted by fwoeck
on Monday, February 16

Um die Ladezeiten von Webpages unabhängig von der Serverseite clientbasiert zu beschleunigen, kann man unter anderen die Einstellungen seines Apache verändern.

mod_expires und mod_deflate

mod_expires setzt dabei sinnvolle Verfalldaten für das Caching auf statischen Dateien und mod_deflate besorgt das Gzippen von http-Inhalten.

So wird es aktiviert:

# a2enmod expires
# a2enmod deflate
<ifmodule mod_expires.c>
  <filesmatch "\.(jpg|gif|png|css|js)$">
    ExpiresActive on
    ExpiresDefault "access plus 1 year"
  </filesmatch>
</ifmodule>

Letzteres kann in der Hauptkonfiguration geschehen.

AddOutputFilterByType DEFLATE text/html text/plain text/xml

Dies ist eine schnelle und verbesserungsfähige Variante, um verzeichnisbasiert die Kompression in virtuellen Hosts zu aktivieren.
Weitere Infos: apache.org/…/mod_deflate

YSlow

Das Firefox-Plugin YSlow hilft, weitere Optimierungspotentiale aufzudecken und erklärt Hintergründe. Weiterführende Infos:
developer.yahoo.com/performance

Ein mongrel-Cluster für die Produktion 0

Posted by fwoeck
on Saturday, December 13

benötigt folgende Elemente:

Das mongrel_cluster-gem

gem install mogrel
gem install mongrel_cluster

Es enthält u.a. eine init.d-Datei zum Serverstart:

/etc/init.d/mongrel_cluster

Hier muss ggf. der startende User angepasst werden – bei mir laufen die Server schlampiger weise unter meinem Useraccount:

USER=me

sites-available/default

In der entsprechenden apache2-Sitedatei finden wir die Proxydefinition:

<VirtualHost *:80>
    UseCanonicalName Off
    ServerAdmin  webmaster@localhost
    SetEnv RAILS_ENV production
    DocumentRoot /var/www/railsapp/public/
    <Directory /var/www/railsapp/public/>
        Options +FollowSymLinks
        AllowOverride all
        Order allow,deny
        Allow from all
    </Directory>

    <Proxy balancer://mongrel_cluster>
        Order allow,deny
        Allow from all
        BalancerMember http://127.0.0.1:7000
        BalancerMember http://127.0.0.1:7001
        BalancerMember http://127.0.0.1:7002
    </Proxy>

    RewriteEngine On

    # Rewrite index to check for static
    RewriteRule ^/$ /index.html [QSA]

    # Rewrite to check for Rails cached page
    RewriteRule ^([^.]+)$ $1.html [QSA]

    # Redirect all non-static requests to the cluster
    RewriteCond %{DOCUMENT_ROOT}/%{REQUEST_FILENAME} !-f
    RewriteRule ^/(.*)$ balancer://mongrel_cluster%{REQUEST_URI} [P,QSA,L]

</VirtualHost>

/etc/mongrel_cluster/railsapp.yml

Hier wird der Cluster konfiguriert:

---
user: me
cwd: /var/www/railsapp
log_file: log/mongrel.log
port: "7000" 
environment: production
group: me
address: 127.0.0.1
pid_file: tmp/pids/mongrel.pid
servers: 3

mod_proxy aktivieren

Einige apache2-module müssen eingebunden sein:

> ls mods-enabled/ | grep proxy

proxy_ajp.load
proxy_balancer.load
proxy.conf
proxy_connect.load
proxy_http.load
proxy.load

Kleinigkeiten

Einige Abschlussarbeiten müssen getan werden: die Verzeichnisse erzeugen, auf die referenziert wird und mit Rechten versehen, etc.

Dann läuft der Cluster ohne Mucken!

apache2 und Passenger: das worker-Modell! 0

Posted by fwoeck
on Thursday, November 06

text ergänzen…

# apt-get install apache2-mpm-worker 

# apt-get autoremove

# passenger-install-apache2-module 

# service apache2 restart

aber: unter Ubuntu wird php5 deinstalliert!

FIXME