Fork me on GitHub

nginx, dari nol

Posted by udienz on May 09, 2009 · 6 mins read

logo Nginx adalah web server yang sangat powerfull, menurut bechmark terbukti nginx unggul di static file dari pada apache dan lighttpd. nah bagimana cara installnya? silakan ikuti langkah berikut

# untuk debian/ubuntu/blankon
$ sudo apt-get install nginx
# untuk centos, fedora, dkk
$ sudo yum install nginx
# untuk opensuse
$ zipper in nginx

silakan koreksi bila perintah di atas salah. nah tapi saya pengen install dari source code, bagaimana? oke oke saya akan nyoba nginstal nginx dari nol. eh.. ini cuman berlaku di debian/ubuntu/blankon :D

$ wget http://sysoev.ru/nginx/nginx-0.6.36.tar.gz
$ tar -xzvf nginx-0.6.36.tar.gz
$ cd nginx-0.6.36
$ sudo aptitude install build-essential

sebentar saya break dulu, seperti biasa instalasi melalui source entah itu dari berkas tar.gz atu tar.bz2 itu insya Allah tidak jauh jauh dari

$ ./configure
$ make
$ sudo make install

dan ternyata berlaku juga di nginx, alhamdulillah kalo begitu. tapi di sini saya nggak akan cuman melakukan perintah ./configure yang umum, namun harus menyelaraskan dengan settingan di debian/ubuntu/blankon. jadi nya:

$ 	./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/nginx/proxy 
	--http-fastcgi-temp-path=/var/lib/nginx/fastcgi --with-debug --with-http_stub_status_module 
	--with-http_flv_module --with-http_ssl_module --with-http_dav_module
$ make
$ sudo make install

okeh sudah jalan, silakan aktifkan nginxnya

$ sudo /etc/init.d/nginx start

Trus saya pengen php juga lha ini yang agak mbulet :D, okeh sekarang copas script berikut dan taruh di /etc/default/php-fastcgi:

#
# Settings for php-cgi in external FASTCGI Mode
#

# Should php-fastcgi run automatically on startup? (default: no)

START=yes

# Which user runs PHP? (default: www-data)

EXEC_AS_USER=www-data

# Host and TCP port for FASTCGI-Listener (default: localhost:9000)

FCGI_HOST=localhost
FCGI_PORT=9000

# Environment variables, which are processed by PHP

PHP_FCGI_CHILDREN=5
PHP_FCGI_MAX_REQUESTS=1000

dan ini juga, di simpan di /etc/init.d/php-fastcgi:

#!/bin/sh
### BEGIN INIT INFO
# Provides:          php-fastcgi
# Required-Start:    $all
# Required-Stop:     $all
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Start and stop php-cgi in external FASTCGI mode
# Description:       Start and stop php-cgi in external FASTCGI mode
### END INIT INFO

# Author: Kurt Zankl

# Do NOT "set -e"

PATH=/sbin:/usr/sbin:/bin:/usr/bin
DESC="php-cgi in external FASTCGI mode"
NAME=php-fastcgi
DAEMON=/usr/bin/php-cgi
PIDFILE=/var/run/$NAME.pid
SCRIPTNAME=/etc/init.d/$NAME

# Exit if the package is not installed
[ -x "$DAEMON" ] || exit 0

# Read configuration variable file if it is present
[ -r /etc/default/$NAME ] && . /etc/default/$NAME

# Load the VERBOSE setting and other rcS variables
. /lib/init/vars.sh

# Define LSB log_* functions.
# Depend on lsb-base (>= 3.0-6) to ensure that this file is present.
. /lib/lsb/init-functions

# If the daemon is not enabled, give the user a warning and then exit,
# unless we are stopping the daemon
if [ "$START" != "yes" -a "$1" != "stop" ]; then
        log_warning_msg "To enable $NAME, edit /etc/default/$NAME and set START=yes"
        exit 0
fi

# Process configuration
export PHP_FCGI_CHILDREN PHP_FCGI_MAX_REQUESTS
DAEMON_ARGS="-q -b $FCGI_HOST:$FCGI_PORT"

do_start()
{
        # Return
        #   0 if daemon has been started
        #   1 if daemon was already running
        #   2 if daemon could not be started
        start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON --test > /dev/null || return 1
        start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON --background --make-pidfile --chuid $EXEC_AS_USER --startas $DAEMON -- $DAEMON_ARGS || return 2
}

do_stop()
{
        # Return
        #   0 if daemon has been stopped
        #   1 if daemon was already stopped
        #   2 if daemon could not be stopped
        #   other if a failure occurred
        start-stop-daemon --stop --quiet --retry=TERM/30/KILL/5 --pidfile $PIDFILE > /dev/null # --name $DAEMON
        RETVAL="$?"
        [ "$RETVAL" = 2 ] && return 2
        # Wait for children to finish too if this is a daemon that forks
        # and if the daemon is only ever run from this initscript.
        # If the above conditions are not satisfied then add some other code
        # that waits for the process to drop all resources that could be
        # needed by services started subsequently.  A last resort is to
        # sleep for some time.
        start-stop-daemon --stop --quiet --oknodo --retry=0/30/KILL/5 --exec $DAEMON
        [ "$?" = 2 ] && return 2
        # Many daemons don't delete their pidfiles when they exit.
        rm -f $PIDFILE
        return "$RETVAL"
}

case "$1" in
  start)
        [ "$VERBOSE" != no ] && log_daemon_msg "Starting $DESC" "$NAME"
        do_start
        case "$?" in
                0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
                2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
        esac
        ;;
  stop)
        [ "$VERBOSE" != no ] && log_daemon_msg "Stopping $DESC" "$NAME"
        do_stop
        case "$?" in
                0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
                2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
        esac
        ;;
  restart|force-reload)
        log_daemon_msg "Restarting $DESC" "$NAME"
        do_stop
        case "$?" in
          0|1)
                do_start
                case "$?" in
                        0) log_end_msg 0 ;;
                        1) log_end_msg 1 ;; # Old process is still running
                        *) log_end_msg 1 ;; # Failed to start
                esac
                ;;
          *)
                # Failed to stop
                log_end_msg 1
                ;;
        esac
        ;;
  *)
        echo "Usage: $SCRIPTNAME {start|stop|restart|force-reload}" >&2
        exit 3
        ;;
esac

nah kemudian silakan truskan dengan perintah di bawah ini:

$ sudo chmod 755 /etc/init.d/php-fastcgi
$ sudo update-rc.d php-fastcgi defaults

untuk selanjutnya silakan lihat ke sini, itu tulisan keren dah :p

gimana sudah paham? nah kalau ada waktu senggang silakan lihat repo nginx saya di github.com, itu sudah siap di paketkan jadi .deb. udah duluah capek nulisnya :D