Ich hatte heute die reizende Aufgab im Intranet von Radio Corax für eine Ruby on Rails Anwendung einen
nginx Webserver mit
Upload Progress Module zu basteln. Dazu muss das Teil neu compiliert werden. Zur Entwicklung benutze ich ein gentoo, und da das ja eh alles selbst compiliert, war das schnell erledigt. Aber im Radio haben wir alles auf Debian unter OpenVZ laufen. Ich wollte ungern die originalen Sourcen nutzen und platt compilieren, sondern hätte gern ein Debian-Paket gebaut, welches sich mit allen Debian-Patches sauber integriert. Das war dann überraschend ziemlich leicht und ging so:
Bevor es los geht, brauchen wir noch ein paar Pakete
apt-get install dpkg-dev fakeroot
Zu erst mal an die Stelle tappen, wo es sich gehört Quelltexte abzulegen
cd /usr/src
die nginx-Quellen von Debian ziehen
apt-get source nginx
und dazu die
Quellen vom Upload Progress Module
wget -c http://wiki.codemongers.com/NginxHttpUploadProgressModule?action=AttachFile&do=get&target=nginx_uploadprogress_module-0.2.tar.gz
das ganze schön auspacken
tar -xvzf nginx_uploadprogress_module-0.2.tar.gz
jetzt die Steuerscripte der Debian-Quellen anpassen. Damit das auch alles compiliert wird, wie wir es haben wollen, die Datei /usr/src/nginx-VERSION/debian/rules anpassen
./configure --conf-path=/etc/nginx/nginx.conf \
--error-log-path=/var/log/nginx/error.log --pid-path=/var/run/nginx.pid \
--lock-path=/var/lock/nginx.lock --http-log-path=/var/log/nginx/access.log \
--http-client-body-temp-path=/var/lib/nginx/body --http-proxy-temp-path=/var/lib/nginxproxy \
--http-fastcgi-temp-path=/var/lib/nginx/fastcgi --with-debug --with-ttp_stub_status_module
Dort einfach in der letzten Zeile dranhängen
--add-module=/usr/src/nginx_uploadprogress_module
Jetzt das ganze Paket neu compilieren. Bei Fehlern während des ./configure Aufrufs einfach die fehlenden Abhängigkeiten (wird angezeigt) mit apt-get install PAKET nachinstallieren.
cd nginx-VERSION
dpkg-buildpackage -rfakeroot -uc -b
Ist alles glatt gelaufen, liegt unter /usr/src das fertige Debian-Paket rum, welches in gewohnter Debian-Manier installiert werden kann.
cd ..
dpkg -i nginx-VERSION.deb
Fertig. Mehr Infos und Erklärungen zur genauen Funktionsweise gibt es im
Bamboo Blog