View source for nginx

{{anchor href="top"}}
Hits :  **{{hits}}**

== nginx :: a very simple tutorial ==

{{ToC from="h2" to="h3"}}

=== nginx ===

http://www.nginx.net/

http://wiki.nginx.org/Main

Το λογισμικό **nginx** [προφέρεται ως engine x] είναι ένας διακομιστής HTTP και διακομιστής μεσολάβησης για το ηλεκτρονικό ταχυδρομείο

Nginx is a free, open-source, high-performance HTTP server and reverse proxy, as well as an IMAP/POP3 proxy server.

((#top))
-----------

=== Installation ===

Μία πολύ απλή εγκατάσταση μπορεί να γίνει με τις παρακάτω εντολές:

%%(code)
$ wget -c http://sysoev.ru/nginx/nginx-0.6.35.tar.gz
$ tar jxvf nginx-0.6.35.tar.gz
$ cd nginx-0.6.35
$ ./configure
$ make
$ make install
%%

Με τις παραπάνω εντολές έχουμε καταφέρει να εγκαστήσουμε τον web server μας.
Η εγκατάσταση εξ'ορισμού (όπως παραπάνω) ορίζει την διαδρομή του httpd daemon να είναι η εξής:
**/usr/local/nginx/sbin/nginx**

Φυσικά με την εντολή:

%%(code)
./configure --help
%%

Μπορεί να δει κανείς το πλήθος των επιλογών που μπορεί να ορίσει, όπως για παράδειγμα να ορίσεις τον nginx ως mail proxy

((#top))
-----------

=== Check ===

Για να δούμε την έκδοση του προγράμματος

%%
# /usr/local/nginx/sbin/nginx -v
nginx version: nginx/0.6.35
%%

Για να δούμε περισσότερες πληροφορίες:

%%
# /usr/local/nginx/sbin/nginx -V
nginx version: nginx/0.6.35
built by gcc 4.3.2 (Ubuntu 4.3.2-1ubuntu12) 
configure arguments: --prefix=/usr/local/nginx/ --with-debug
%%

Για να δούμε ότι όλα παίζουν σωστά, ως διαχειριστής πληκτρολογούμε την παρακάτω εντολή :

%%(code)
# /usr/local/nginx/sbin/nginx -t
%%

Εάν θέλουμε να τρέξουμε τον nginx με κάποιο συγκεκριμένο αρχείο:

%%(code)
# /usr/local/nginx/sbin/nginx -c nginx.new.conf
%%

((#top))
-----------

=== Configuration ===

Αφού ολοκληρώσουμε την εγκατάσταση είμαστε έτοιμοι να δούμε ότι όλα είναι δουλεύουν σωστα.

Το αρχείο ρυθμίσεων του nginx βρίσκεται κάτω από τον κατάλογο της εγκατάστασης:

**/usr/local/nginx/conf/nginx.conf**

ένα τυπικό παράδειγμα του αρχείου ρυθμίσεων είναι το εξής:

%%(html)
worker_processes  1;
events {
    worker_connections  1024;
}
http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;
    server {
        listen       80;
        server_name  localhost;
        location / {
            root   html;
            index  index.html index.htm;
        }
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
}
%%

Για να πραγματοποιήσουμε τυπικό έλεγχο της σωστής λειτουργίας της υπηρεσίας, που μόλις εγκαταστήσαμε, 
χρειάζεται να εκκινήσουμε την υπηρεσία με την παρακάτω εντολή:

%%(code)
# /usr/local/nginx/sbin/nginx
%%

Και στην συνέχεια στον firefox πληκτρολούμε την εξής ηλεκτρονική διεύθυνση:

%%(html)
http://localhost
%%

Το οποίο θα μας επιστρέψει το παρακάτω μήνυμα:

**Welcome to nginx! **

Ο αρχικός κατάλογος στον οποίο μπορούμε να αποθηκεύσουμε τις ιστοσελίδες μας είναι ο εξής:

Ανοίγουμε έναν http client (web browser --> firefox) και πληκτρολογούμε το εξής:

/usr/local/nginx/html/

((#top))
-----------

=== Παράρτημα ===

O nginx web server έχει την δυνατότητα να συνδεθεί με την php ώστε να υποστηρίζει δυναμικά site.
Ο τρόπος με τον οποίο γίνεται αυτό είναι μέσω της χρήσης του fastcgi.

Περισσότερα για το fastcgi μπορεί κανείς να βρει στα παρακάτω urls:

http://wiki.nginx.org/NginxHttpFcgiModule
http://www.fastcgi.com
http://en.wikipedia.org/wiki/FastCGI

==== php ====

http://php.net/

PHP  is a widely-used general-purpose scripting language that is especially suited for Web development and can be embedded into HTML. 

Για την τυπική εγκατάσταση της php πρέπει να δηλώσουμε κατά το configure την υποστήριξη για fast-cgi
%%(code)
$ wget -c http://gr2.php.net/distributions/php-5.2.9.tar.bz2
$ tar jxvf php-5.2.9.tar.bz2
$ cd php-5.2.5
$ ./configure --enable-fastcgi
$ make
$ make install
%%

Ο απλούστερος τρόπος (μιας και η php το υποστηρίζει) είναι να τρέξουμε την php σε μία TCP πόρτα
στην οποία θα ακούει τα αιτήματα του web server μας για να εξυπηρετεί τις σελίδες php που έχουμε

Πχ.

%%
./php-cgi -b 127.0.0.1:8888
%%

==== nginx conf ====

Τώρα θα πρέπει να δηλώσουμε στον nginx web server μας όλες τις php σελίδες μας να τις στέλνει στην fast-cgi php 
για να μεταφράζονται σε html.

Οπότε προσθέτουμε το εξής στο αρχείο ρυθμίσεων:

%%(code)
        location ~ \.php$ {
            root           html;
            fastcgi_pass   127.0.0.1:8888;
            fastcgi_index  index.php;
            fastcgi_param  SCRIPT_FILENAME  /usr/local/nginx/html/$fastcgi_script_name;
    }
%%

==== Manage Nginx ====

Ένα απλό script με το οποίο διαχειριζόμαστε τον nginx web server

Μέσα από το παρακάτω script μπορούμε να:
  * start
  * stop
  * restart
  * status
  * check
  * version

το αντιγράφεται στο **/etc/init.d/nginx**
κι έπειτα: 

%%
chmod 540 /etc/init.d/nginx
%%

%%
#!/bin/sh
# description: Start/Stop nginx Web Server

# ebal 16/03/2009
name="nginx"
desc="Web Server"
path="/opt/nginx"
pidfile="$path/logs/nginx.pid"
daemon=$path"/sbin/"$name

if [ -f $pidfile ];
then
        pid=`cat $pidfile`
        status=1
else
        status=0
fi

  case "$1" in

    'status')
      if [ 1 -eq $status ]; then
        echo
        echo $name $desc" : is Up & Runnning"
        echo "PID of" $name" : "$pid
        echo
      else
        echo
        echo $name $desc "is NOT running";
      fi
    echo
    ;;
 
    'start')
      if [ 1 -eq $status ]; then
        $0 status
      else
        echo "Starting "$name"..."
        $daemon
        sleep 1
        $0 status

      fi
    ;;
    'stop')
      if [ 1 -eq $status ]; then
        echo "Stoping "$name $desc"..."
        kill $pid
        sleep 1
        $0 status
      else
        $0 status
      fi
    ;;

   'restart')
       $0 stop
       $0 start
    ;;

   'version')
        $daemon -V
    ;;

   'check')
        $daemon -t
    ;;

    *)
      echo -n "Usage: $0 {start|stop|restart|status|check|version)";
      echo "";
    exit 1
  esac
%%

((#top))
-----------