Feb 04

Der nginx Webserver stellt eine gute Alternative zum verbreiteten Apache Webserver dar und steht schon seit längerem in Version 1.0 bereit. Leider ist in den Paketen der Serverdistributionen (zB. Cent OS 6) nur eine Vorversion vefügbar.
Im folgenden Artikel will ich kurz darstellen, wie man die neueste stable-Version unter Cent OS 6 kompiliert und als Service konfiguriert.

Im ersten Schritt muss man die Build-Tools und einige Abhängigkeiten nachinstallieren.

# Install build tools and some dependencies
yum install gcc.x86_64 gcc-c++.x86_64 make.x86_64 pcre-devel.x86_64 openssl.x86_64 openssl-devel.x86_64

Danach kann man dann nginx herunterladen und entpacken. Die aktuelle stable-Version ist 1.0.11.

# download nginx and unpack
wget http://nginx.org/download/nginx-1.0.11.tar.gz
tar zxvf nginx-1.0.11.tar.gz
cd nginx-1.0.11

Im nächten Schritt wird der Compiler konfiguriert.
Als Zielverzeichnis habe ich /opt/nginx gewählt, es lässt sich aber über anpassen des –prefix ändern.
In diesem Beispiel habe ich die Mailunterstützung weggelassen und das SSL Modul aktiviert.

./configure --prefix=/opt/nginx --without-mail_pop3_module --without-mail_imap_module --without-mail_smtp_module --with-http_ssl_module --with-http_stub_status_module --with-http_gzip_static_module

Zum Abschluss noch kompilieren und schon ist nginx fertig installiert.

make
make install

Um nginx als Service zu starten muss noch ein init-Script erstellt werden. DAzu passt man das nachfolgenden Script an den gewählten Prefix an und kopiert es nach /etc/init.d.


#!/bin/sh
#
# nginx – this script starts and stops the nginx daemon
#
# chkconfig: - 85 15
# description: Nginx is an HTTP(S) server, HTTP(S) reverse \
# proxy and IMAP/POP3 proxy server
# processname: nginx
# config: /opt/nginx/conf/nginx.conf
# pidfile: /opt/nginx/logs/nginx.pid

# Source function library.
. /etc/rc.d/init.d/functions

# Source networking configuration.
. /etc/sysconfig/network

# Check that networking is up.
[ "$NETWORKING" = "no" ] && exit 0

nginx="/opt/nginx/sbin/nginx"
prog=$(basename $nginx)

NGINX_CONF_FILE="/opt/nginx/conf/nginx.conf"

lockfile=/var/lock/subsys/nginx

start() {
[ -x $nginx ] || exit 5
[ -f $NGINX_CONF_FILE ] || exit 6
echo -n $"Starting $prog: "
daemon $nginx -c $NGINX_CONF_FILE
retval=$?
echo
[ $retval -eq 0 ] && touch $lockfile
return $retval
}

stop() {
echo -n $"Stopping $prog: "
killproc $prog -QUIT
retval=$?
echo
[ $retval -eq 0 ] && rm -f $lockfile
return $retval
}

restart() {
configtest || return $?
stop
start
}

reload() {
configtest || return $?
echo -n $”Reloading $prog: ”
killproc $nginx -HUP
RETVAL=$?
echo
}

force_reload() {
restart
}

configtest() {
$nginx -t -c $NGINX_CONF_FILE
}

rh_status() {
status $prog
}

rh_status_q() {
rh_status >/dev/null 2>&1
}

case "$1" in
start)
rh_status_q && exit 0
$1
;;
stop)
rh_status_q || exit 0
$1
;;
restart|configtest)
$1
;;
reload)
rh_status_q || exit 7
$1
;;
force-reload)
force_reload
;;
status)
rh_status
;;
condrestart|try-restart)
rh_status_q || exit 0
;;
*)
echo $"Usage: $0 {start|stop|status|restart|condrestart|try-restart|reload|force-reload|configtest}"
exit 2
esac

Danach das Script nur noch ausführbar markieren und mittel chkconfig aktivieren.

chmod +x /etc/init.d/nginx
chkconfig nginx on

Die Konfiguration liegt unter /opt/nginx/conf/nginx.conf und mit service nginx start/stop lässt sich der Dienst steuern.

Fertig!

Einen Kommentar schreiben