nginx :: a very simple tutorial
nginx
Το λογισμικό 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.
Installation
Μία πολύ απλή εγκατάσταση μπορεί να γίνει με τις παρακάτω εντολές:
$ 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
Φυσικά με την εντολή:
./configure --help
Μπορεί να δει κανείς το πλήθος των επιλογών που μπορεί να ορίσει, όπως για παράδειγμα να ορίσεις τον nginx ως mail proxy
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
Για να δούμε ότι όλα παίζουν σωστά, ως διαχειριστής πληκτρολογούμε την παρακάτω εντολή :
# /usr/local/nginx/sbin/nginx -t
Εάν θέλουμε να τρέξουμε τον nginx με κάποιο συγκεκριμένο αρχείο:
# /usr/local/nginx/sbin/nginx -c nginx.new.conf
Configuration
Αφού ολοκληρώσουμε την εγκατάσταση είμαστε έτοιμοι να δούμε ότι όλα είναι δουλεύουν σωστα.
Το αρχείο ρυθμίσεων του nginx βρίσκεται κάτω από τον κατάλογο της εγκατάστασης:
/usr/local/nginx/conf/nginx.conf
ένα τυπικό παράδειγμα του αρχείου ρυθμίσεων είναι το εξής:
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; } } }
Για να πραγματοποιήσουμε τυπικό έλεγχο της σωστής λειτουργίας της υπηρεσίας, που μόλις εγκαταστήσαμε,
χρειάζεται να εκκινήσουμε την υπηρεσία με την παρακάτω εντολή:
# /usr/local/nginx/sbin/nginx
Και στην συνέχεια στον firefox πληκτρολούμε την εξής ηλεκτρονική διεύθυνση:
http://localhost
Το οποίο θα μας επιστρέψει το παρακάτω μήνυμα:
Welcome to nginx!
Ο αρχικός κατάλογος στον οποίο μπορούμε να αποθηκεύσουμε τις ιστοσελίδες μας είναι ο εξής:
Ανοίγουμε έναν http client (web browser --> firefox) και πληκτρολογούμε το εξής:
/usr/local/nginx/html/
Παράρτημα
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
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
$ 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.
Οπότε προσθέτουμε το εξής στο αρχείο ρυθμίσεων:
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