Yaws :: yet another web server
Contents
yaws
http://yaws.hyber.org/yman.yaws?page=yaws.conf
Το πρόγραμμα yaws είναι υψηλής απόδοσης διακομιστής HTTP & HTTPS, ειδικά προσαρμοσμένο για διαδικτυακές εφαρμογές δυναμικού περιεχομένου.
Yaws is a HTTP high perfomance 1.1 webserver particularly well suited for dynamic-content webapplications.
Linux Installation
Μία πολύ απλή εγκατάσταση μπορεί να γίνει με τις παρακάτω εντολές:
$ wget -c http://yaws.hyber.org/download/yaws-1.88.tar.gz $ tar zxvf yaws-1.88.tar.gz $ cd yaws $ ./configure $ make $ make install
Με τις παραπάνω εντολές έχουμε καταφέρει να εγκαταστήσουμε τον web server μας.
Οι προκαθορισμένες διαδρομές των καταλόγων, που ορίζονται από την παραπάνω εξ' ορισμού εγκατάσταση, είναι οι εξής:
Αρχεία Ρυθμίσεων:
etc files went into /usr/local/etc
Εκτελέσιμα αρχεία:
executables went into /usr/local/bin
Βιβλιοθήκες:
library files went into /usr/local/lib/yaws
Αρχεία log και διάφορα άλλα (pid file):
var files went into /usr/local/var
Προκαθορισμένος κατάλογος ενός διαδικτυακού ιστότοπου:
default docroot went into /usr/local/var/yaws/www
Φυσικά με την εντολή:
./configure --help
Μπορεί να δει κανείς το πλήθος των επιλογών που μπορεί να ορίσει, όπως παράδειγμα να ορίσει τον κατάλογο εγκατάστασης.
Windows Installation
Κι όμως υπάρχει και Windows πρόγραμμα εγκατάστασης:
Yaws-1.88-windows-installer.exe
Check
Για να δούμε την έκδοση του προγράμματος
# /usr/local/bin/yaws -v Yaws 1.88
Για να δούμε περισσότερες πληροφορίες:
/usr/local/bin/yaws --help
Ένα πλήρες output της παραπάνω εντολής είναι το εξής:
usage: yaws -i | --interactive — interactive (no daemon) mode yaws -w | --winteractive — cygwin interactive (werl) yaws --daemon — daemon mode Auxiliary flags for the daemon: --id Id — set system id --debug — debug mode --nodebug — turn off debug mode --conf File — set config file --tracetraf — trace traffic --tracehttp — trace http traffic --traceout — trace output to stdout --version — print version --pa path — add load path --mnesiadir dir — start Mnesia in dir --proto_dist Mod — use Mod for distrib --sname xxx — start with sname xxx --name xxx — start with name xxx --runmod mod — call mod:start/0 at startup --heart — auto restart yaws if it crashes --heart-restart=C,T — allow C heart restarts in T seconds --erlarg X — pass argument X to /usr/bin/erl --setcookie X — set an erlang cookie --run_erl X — use run_erl with pipe-id X --to_erl X — connect to pipe-id X --disable-kpoll — pass +K false to erlang ctl functions ... yaws --hup [--id ID] — hup the daemon, reload conf yaws --stop [--id ID] — stop the daemon yaws --debug-dump [--id ID] — produce a debug dump yaws --status [--id ID] — query the daemon status yaws --load Modules — load modules yaws --ls — list Yaws nodes and their status yaws --ctltrace traffic|http — toggle trace of running daemon yaws --check YawsFile [IncDirs] — test compile File yaws --wait-started[=secs] [--id ID] — wait for daemon to be ready yaws --stats [--id ID] — show daemon statistics
Configuration
Αφού ολοκληρώσουμε την εγκατάσταση είμαστε έτοιμοι να δούμε ότι όλα είναι δουλεύουν σωστα.
Το αρχείο ρυθμίσεων του yaws βρίσκεται κάτω από τον κατάλογο της εγκατάστασης:
/usr/local/etc/yaws/yaws.conf
ένα τυπικό παράδειγμα του αρχείου ρυθμίσεων είναι το εξής:
logdir = /usr/local/var/log/yaws ebin_dir = /usr/local/lib/yaws/examples/ebin ebin_dir = /usr/local/var/yaws/ebin include_dir = /usr/local/lib/yaws/examples/include max_connections = nolimit trace = false use_old_ssl = false copy_error_log = true log_wrap_size = 1000000 log_resolve_hostname = false fail_on_bind_err = true auth_log = true pick_first_virthost_on_nomatch = true use_fdsrv = false <server myarch> port = 80 listen = 0.0.0.0 docroot = /usr/local/var/yaws/www appmods = <cgi-bin, yaws_appmod_cgi> </server> <server localhost> port = 80 listen = 0.0.0.0 docroot = /tmp dir_listings = true statistics = true <auth> realm = foobar dir = / user = foo:bar user = baz:bar </auth> </server> <server myarch> port = 443 docroot = /tmp listen = 0.0.0.0 dir_listings = true <ssl> keyfile = /usr/local/etc/yaws/yaws-key.pem certfile = /usr/local/etc/yaws/yaws-cert.pem depth = 0 </ssl> </server>
Εξαιρετικά απλό και straight forward.
# /usr/local/bin/yaws
Και στην συνέχεια στον firefox πληκτρολογούμε την εξής ηλεκτρονική διεύθυνση:
http://myarch/
Το οποίο θα μας επιστρέψει την αρχική σελίδα του yaws.
ΠΡΟΣΟΧΗ: Μην μπερδευτείτε, το myarch είναι το hostname του μηχανήματός μου! Εσείς θα βάλετε το δικό σας.
Παράρτημα
O yaws έχει την δυνατότητα να συνδεθεί με την 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 (από την έκδοση 5.3.0 και μετά, η εγκατάσταση της php είναι εξ' ορισμού fast-cgi)
$ wget -c http://gr2.php.net/distributions/php-5.3.2.tar.bz2 $ tar jxvf php-5.3.2.tar.bz2 $ cd php-5.3.2 $ ./configure $ make $ make install
Υπάρχουν δύο, παρόμοιοι μεν – διαφορετικοί δε, τρόποι για να συνδέσουμε την Php με τον Yaws.
Ο ένας είναι μέσω του CGI, ο άλλος μέσω του Fast-Cgi.
Κι ενώ ακούγονται και λειτουργούν περίπου με τον ίδιο τρόπο το configuration μας στην κάθε περίπτωση είναι διαφορετικό.
CGI
Φαινομενικά ο ευκολότερος (και πιο παραδοσιακός) τρόπος.
Εάν το εκτελέσιμο του php-cgi είναι σε αυτή την διαδρομή:
/usr/bin/php-cgi
τότε δεν χρειάζεται να πειράξουμε καθόλου το yaws.conf μας.
Αρκεί να τροποποιήσουμε μία μόνο μεταβλητή στο php.ini μας.
cgi.force_redirect = 0
Αλλιώς θα χρειαστεί να δηλώσουμε το path του php-cgi στο yaws.conf.
Παράδειγμα:
php_exe_path = /usr/local/bin/php-cgi
ΠΡΟΣΟΧΗ: Το php.ini πρέπει να βρίσκεται στην σωστή τοποθεσία!
Πληκτρολογήστε την παρακάτω εντολή για να βρείτε το σωστό path, στο οποίο έχετε ή πρέπει να τοποθετήσετε το php.ini
echo '<?php phpinfo(); ?>' | php | grep 'php.ini'
Fast-Cgi
Ο εναλλακτικός τρόπος (μιας και η php το υποστηρίζει) είναι να τρέξουμε την php σε μία TCP πόρτα
στην οποία θα ακούει τα αιτήματα του web server μας για να εξυπηρετεί τις σελίδες php που έχουμε
Πχ.
/usr/local/bin/php-cgi -b 3000
yaws.conf
Τώρα θα πρέπει να δηλώσουμε στον yaws μας όλες τις php σελίδες μας να τις στέλνει στην fast-cgi php
για να μεταφράζονται σε html.
Οπότε προσθέτουμε το εξής στο αρχείο ρυθμίσεων:
fcgi_app_server = localhost:3000
Ναι τόσο απλό είναι!
ΠΡΟΣΟΧΗ: Η προσθήκη πρέπει να γίνει στο αντίστοιχο virtual host μας, στην δική μου περίπτωση ολόκληρο το configuration είναι ως εξής:
<server myarch> port = 80 listen = 0.0.0.0 docroot = /usr/local/var/yaws/www appmods = <cgi-bin, yaws_appmod_cgi> # ebal fcgi_app_server = localhost:3000 </server>
php files
Πολύ μεγάλη προσοχή στο εξής:
Ο yaws by default υποστηρίζει τις εξής καταλήξεις αρχείων:
.yaws .php .cgi .fcgi
αλλά τα αρχεία PHP, θα προσπαθήσει να τα στείλει στο php-cgi πρόγραμμα.
Γεγονός που είναι λάθος, καθώς το php-cgi είναι το fast-cgi της php και δεν παίζει σε interactive mode!
Άρα θα πρέπει για να κάνετε χρήση της php over fast-cgi να αλλάξετε την κατάληξη των αρχείων από php σε fcgi !!!
Ορίστε ένα αρχείο δοκιμής:
/usr/local/var/yaws/www/p.fcgi
<?php phpinfo(); ?>
Και στον firefox γράφουμε το εξής:
για να δούμε ότι λειτουργεί άψογα.
ΥΓ: Μόλις βρω πως μπορεί να παίξει χωρίς την αλλαγή της κατάληξης – θα το προσθέσω εδώ!