Apache veebiserveri kasutamine Debian Squeeze operatsioonisüsteemiga
Sissejuhatus
TODO
Eesmärk
Olgu eesmärgiks seada tööle selline veebiserveri
- php ja ssl tugi
- kuulab portidel 80 ja 443, st http://loomaaed.tartu.ee/ ja https://loomaaed.tartu.ee/
Veebiserveri paigaldamiseks tuleb öelda
# apt-get install apache2
Security
Üldiselt ollakse arvamusel, et mida vähem veebiserver oma versiooni ja distributsiooni kohta ise räägib seda parem, selleks tuleb failis /etc/apache2/conf.d/security kasutada rida
ServerTokens Prod
PHP5 kasutamine
PHP5 kasutamiseks tuleb lisada paketid, php5-pgsql on vajalik, et PHP5 saaks kasutada PostgreSQL andmebaasi
# apt-get install php5 php5-pgsql
- /etc/cron.d/php5 - kustutab automaatselt vanu sessioone, nb! see tegevus võib paista teatud juhtumitel anomaaliana
- /etc/php5/apache2/php.ini - PHP5 seadistusfail
php.ini seadistamisel tuleb lähtuda vajadustest, aga kui vajadusi ei ole sõnastada, ja on lihtsalt tarvis nö töötavat ja pigem turvalist keskkonda, siis Debian Lenny PHP5 puhul võiks kasutada selliseid parameetrite väärtusi algpunktina, ja katsuda siiski vajadused välja selgitada
disable_functions = dl, exec, passthru, proc_close, proc_get_status, proc_nice, proc_open, proc_terminate, system expose_php = Off register_globals = Off magic_quotes_gpc = Off safe_mode = Off display_errors = Off log_errors = On
Apache veebiserverit saab PHP skripte kasutama seadistada selliselt, et skriptid ei saa pöörduda väljapoole etteantud kataloogi, nt sellest, et skripti seest lugeda /etc/passwd faili sisu include direktiiviga. Lisaks on kasulik error_log direktiiv kõnealuse ressurssiga seotud PHP vigade logimiseks.
open_basedir ja error_log direktiivide kasutamine võiks toimuda nt selliselt
... <Directory /srv/www.tartu.loomaaed.ee/html> php_admin_value open_basedir "/tmp:/srv/www.tartu.loomaaed.ee" php_admin_value error_log "/var/log/apache2/www.tartu.loomaaed.ee-php-error.log" Options None AllowOverRide None Order Allow,Deny Allow from All </Directory>
PHP teeke saab sisse ja välja lülitada php5enmod ja php5dismod abil, nt
# php5enmod pgsql
Parasjagu selliselt sisselülitatud moodulite nimekiri on (need php5*mod skript sisuliselt tekitavad ja eemaldavad vastavaid linke)
# ls -ld /etc/php5/apache2/conf.d/* lrwxrwxrwx 1 root root 25 Sep 1 2014 /etc/php5/apache2/conf.d/10-pdo.ini -> ../mods-available/pdo.ini lrwxrwxrwx 1 root root 25 Sep 1 2014 /etc/php5/apache2/conf.d/20-apc.ini -> ../mods-available/apc.ini lrwxrwxrwx 1 root root 26 Sep 1 2014 /etc/php5/apache2/conf.d/20-curl.ini -> ../mods-available/curl.ini ..
kõigi php sisselülitatud moodulite nimekiri
# php -m
PHP Shell
PHP Shell http://phpshell.sourceforge.net/ tarkvara on esineb php skripti kujul ning võimaldab kontrollida, kuivõrd on veebiserveri seadistamisel nähtud vaeva turvalisusega. Nö mitte-turvalisel juhul paistab pilt nt selline
kus
- on õnnestunud liikuda kasutaja kodukataloogi /home/imre - seda saaks kontrollida open_basedir direktiiviga
- on õnnestunud käivitada käsk netstat ja näha, millistel portidel arvutis igasugused teenused töötavad - seda saaks kontrollida disable_functions direktiivi abil
PHP Shell kasutamiseks tuleb .tar.gz arhiiv kopeerida veebijuurika alla ning failis config.php näidata kasutaja ligipääs
[users] kasutajanimi = "kasutajaparool"
PHP Suhosin teegid
Paigaldamiseks sobib öelda, Debianil paigaldatakse ta vaikimisi koos php5 paketiga
# apt-get install php5-suhosin
Seadistusfailiks on, seal nt post max size jt võivad override'da php.ini vastavaid väärtusi
/etc/php5/conf.d/suhosin.ini
PHP PEAR kasutamine
PEAR (PHP Extension and Application Repository) http://pear.php.net/ on vaba tarkvaraline korduvkasutatavate PHP PHP keeles kirjutatud moodulite repositoorium. PEAR abil süsteemi paigaldatud moodulite nimekirja näitab
# pear list
# pear list-upgrades pear.php.net Available Upgrades (stable): ========================================= Channel Package Local Remote Size pear.php.net Net_SMTP 1.6.1 (stable) 1.6.2 (stable) 12.8kB
Uuendamiseks konkreetsele versioonile sobib öelda nt
# pear upgrade XML_RSS-1.0.2
PHP PECL kasutamine
PECL (PHP Extension Community Library) on c teegid, st .so failid, mida PHP kasutab. Ettevalmistamiseks peab süsteemi paigaldama arendusvahendid, nt
# apt-get install build-essential php5-dev g++
Teegi paigaldamiseks (mille käigus ta kompileeritakse) sobib öelda
# pecl install rar downloading rar-3.0.2.tgz ... Starting to download rar-3.0.2.tgz (257,787 bytes) .....................................................done: 257,787 bytes 125 source files, building running: phpize Configuring for: PHP Api Version: 20090626 Zend Module Api No: 20090626 Zend Extension Api No: 220090626 building in /tmp/pear/temp/pear-build-rootO4FB6b/rar-3.0.2 running: /tmp/pear/temp/rar/configure checking for grep that handles long lines and -e... /bin/grep ... Build complete. Don't forget to run 'make test'. running: make INSTALL_ROOT="/tmp/pear/temp/pear-build-rootO4FB6b/install-rar-3.0.2" install Installing shared extensions: /tmp/pear/temp/pear-build-rootO4FB6b/install-rar-3.0.2/usr/lib/php5/20090626/ running: find "/tmp/pear/temp/pear-build-rootO4FB6b/install-rar-3.0.2" | xargs ls -dils 2867789 4 drwxr-xr-x 3 root root 4096 Dec 9 17:50 /tmp/pear/temp/pear-build-rootO4FB6b/install-rar-3.0.2 2867913 4 drwxr-xr-x 3 root root 4096 Dec 9 17:50 /tmp/pear/temp/pear-build-rootO4FB6b/install-rar-3.0.2/usr 2867914 4 drwxr-xr-x 3 root root 4096 Dec 9 17:50 /tmp/pear/temp/pear-build-rootO4FB6b/install-rar-3.0.2/usr/lib 2867915 4 drwxr-xr-x 3 root root 4096 Dec 9 17:50 /tmp/pear/temp/pear-build-rootO4FB6b/install-rar-3.0.2/usr/lib/php5 2867916 4 drwxr-xr-x 2 root root 4096 Dec 9 17:50 /tmp/pear/temp/pear-build-rootO4FB6b/install-rar-3.0.2/usr/lib/php5/20090626 2867912 1300 -rwxr-xr-x 1 root root 1325564 Dec 9 17:50 /tmp/pear/temp/pear-build-rootO4FB6b/install-rar-3.0.2/usr/lib/php5/20090626/rar.so Build process completed successfully Installing '/usr/lib/php5/20090626/rar.so' install ok: channel://pecl.php.net/rar-3.0.2 configuration option "php_ini" is not set to php.ini location You should add "extension=rar.so" to php.ini
Seejärel tuleb nagu öeldud rida lisa /etc/php5/apache/php.ini seadistusfaili sobivasse kohta
extension=rar.so
PHP OCI8 ja PDO Oracle tarkvara kompileerimine ja paigaldamine
Olgu konkreetselt eesmärgiks php5-cli käsurea utiliidiga käivitada php skripti, mis saaks kasutada andmeid Oracle andmebaasist. Selleks on levinud kasutada kahte teeki, st ühte või teist
- OCI8
- PDO-OCI
Kasutamine eeldab Oracle poolt jagatava oracle-xe-client Debiani paketi kasutamist, mis esineb 2010 aastal vaid i386 arhitektuuri jaoks. Üks võimalus seda kasutada on tekitada esmalt nt debootstrap abil amd64 arvutisse 32 bit chroot keskkond ning edasi seal keskkonnas toimetada
# mkdir /srv/lenny-32 # debootstrap --arch=i386 lenny /srv/lenny-32 http://ftp.aso.ee/debian # mount -t proc /proc /srv/lenny-32/proc # chroot /srv/lenny-32
- Lisada /etc/apt/sources.list faili juurde
deb http://oss.oracle.com/debian unstable main non-free
- Lisada Oracle repositooriumi võti
# wget http://oss.oracle.com/el4/RPM-GPG-KEY-oracle -O- | apt-key add -
- Paigaldada oracle-xe-client tarkvara
# apt-get update # apt-get install oracle-xe-client
- Paigaldada php5 kompileerimiseks vajalikud sõltuvused ka fakeroot pakett
# apt-get build-dep php5 # apt-get install fakeroot
- Kopeerida php5 lähteteksti pakett
# mkdir /usr/src/oracle-php # cd /usr/src/oracle-php # apt-get source php5
- Kohendada php5 paketi kompileerimise seadistusfaile, esmalt kirjeldada keskkonnamuutuja ORACLE_CLIENT, mille väärtust edaspidi kasutatakse
# ORACLE_CLIENT=$(find /usr/lib/oracle/xe/app/oracle/product/ -name 'client' | sort --reverse | head --lines=1)
- Lisada debian/modulelist faili lõppu oci8 ja pdo-oci moodulitele vastavad read
oci8 OCI8 pdo-oci PDO_OCI
- Lisada debian/rules faili vastavad -with-* read, nt --with-mysql järele
... --with-mysql=shared,/usr \ --with-oci8=shared,/usr/lib/oracle/xe/app/oracle/product/10.2.0/client \ --with-pdo-oci=shared,/usr/lib/oracle/xe/app/oracle/product/10.2.0/client \
- Lisada debian/control faili vastavad sektsioonid
Package: php5-oci8 Architecture: any Depends: ${shlibs:Depends}, ${misc:Depends}, ${php:Depends}, php5-common (= ${Source-Version}), oracle-xe-client Description: OCI8 module for php5 This package provides a module for OCI8 using Oracle 10g Express client. . PHP5 is an HTML-embedded scripting language. Much of its syntax is borrowed from C, Java and Perl with a couple of unique PHP-specific features thrown in. The goal of the language is to allow web developers to write dynamically generated pages quickly.
ja
Package: php5-pdo-oci Architecture: any Depends: ${shlibs:Depends}, ${misc:Depends}, ${php:Depends}, php5-common (= ${Source-Version}), oracle-xe-client Description: PDO OCI module for php5 This package provides an Oracle OCI driver using Oracle 10g Express client. . PHP5 is an HTML-embedded scripting language. Much of its syntax is borrowed from C, Java and Perl with a couple of unique PHP-specific features thrown in. The goal of the language is to allow web developers to write dynamically generated pages quickly.
- Lisa debian/control faili php5 paketile sõltuvus oracle-xe-client paketist, lisades rea Build-Depends lõppu komaga eraldades
oracle-xe-client
- Moodustada sobiva sisuga debian/shlibs.local
libclntsh 10.1 oracle-xe-client(>= 10.2.0.1-1.2)
- php5 kompileerimiseks sobib öelda
# LD_LIBRARY_PATH="${ORACLE_CLIENT}/lib" dpkg-buildpackage -rfakeroot
Tulemusena tekib hulka php5 moodulite .deb pakette, sh
php5-oci8_5.2.6.dfsg.1-1+lenny8_i386.deb php5-pdo-oci_5.2.6.dfsg.1-1+lenny8_i386.deb
Pakendamise vea tõttu tuleb kopeerida pdo-oci teek käsitsi
# cp /usr/src/oracle-php/php5-5.2.6.dfsg.1/apache2-build/modules/pdo_oci.so /usr/lib/php5/20060613+lfs/pdo-oci.so
Kasulikud lisamaterjalid
- http://otn.oracle.com/tech/php/pdf/underground-php-oracle-manual.pdf
- http://howto.landure.fr/gnu-linux/debian-4-0-etch-en/install-oci8-and-mssql-extensions-for-php5-on-debian-4-0-etch
- http://wiki.oracle.com/page/PHP+Oracle+FAQ
Süsteemi ettevalmistamine PHP OCI8 tarkvara kasutamiseks
Valmistada ette tnsnames.ora fail, nt kataloog /etc/oracle
# cat /etc/oracle/tnsnames.ora LOOM= (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.1)(PORT = 1521)) ) (CONNECT_DATA = (SERVICE_NAME = LOOMAAED) ) )
PHP OCI8 tarkvara kasutamine
Testiks sobib kasutada sellist skripti
<?php $conn = oci_connect('kasutajanimi', 'parool', 'TEST'); if (!$conn) { trigger_error("Could not connect to database", E_USER_ERROR); } ?>
php5-cli abi käivitamiseks
$ export TNS_ADMIN=/etc/oracle $ export ORACLE_HOME=/usr/lib/oracle/xe/app/oracle/product/10.2.0/client $ export LD_LIBRARY_PATH=/usr/lib/oracle/xe/app/oracle/product/10.2.0/client/lib $ php5 skript.php
PHP PDO-OCI teegi kasutamine
Testiks sobib kasutada sellist skripti
<?php try { $dbh = new PDO('oci:dbname=LOOM', 'kasutajanimi', 'parool'); } catch (PDOException $e) { trigger_error("Could not connect to database: ". $e->getMessage(), E_USER_ERROR); } ?>
Üle chrooti kasutamiseks sobib öelda
# chroot /srv/lenny-32 /root/test-pdo-oci.php.sh
kus
# cat /srv/lenny-32/root/test-pdo-oci.php.sh #!/bin/bash export TNS_ADMIN=/etc/oracle export ORACLE_HOME=/usr/lib/oracle/xe/app/oracle/product/10.2.0/client export LD_LIBRARY_PATH=/usr/lib/oracle/xe/app/oracle/product/10.2.0/client/lib php5 /root/test-pdo-oci.php
Memcached
Seadistusfail on /etc/memcached.conf, tavaliselt kuulab teenus pordil 11211/udp/tcp.
# apt-get install memcached
PHP5 teegi kasutamiseks tuleb paigaldada
# apt-get install php5-memcache
ning /etc/php5/apache2/php.ini failis näidata
session.save_handler = memcache session.save_path = "tcp://127.0.0.1:11211"
Turvalisus on lahendatud ???
Kasulikud lisamaterjalid
- http://phpchunk.net/2012/02/speed-up-your-sessions-part-2-performance/
- http://joshprewitt.com/2011/07/03/setting-up-memcache-to-handle-php-sessions-for-a-web-cluster/
SSL komponendi käivitamine
Veebiserverile https toe seadistamiseks tuleb öelda
# bash:/etc/apache2/mods-enabled# ln -s ../mods-available/ssl.load # bash:/etc/apache2/mods-enabled# ln -s ../mods-available/ssl.conf
ehk
# a2enmod ssl Enabling module ssl. See /usr/share/doc/apache2.2-common/README.Debian.gz on how to configure SSL \ and create self-signed certificates. Run '/etc/init.d/apache2 restart' to activate new configuration!
Vaikimisi seadistustega ssl virtuaalse serveri saab aktiveerida
# a2ensite default-ssl
ning Virtuaalhosti lisada SSL seisukohast olulised read
SSLEngine on SSLCipherSuite HIGH:MEDIUM SSLCertificateFile /etc/apache2/serdid/www.loomaaed.tartu.ee-cert.pem SSLCertificateKeyFile /etc/apache2/serdid/www.loomaaed.tartu.ee-key.pem SSLCertificateChainFile /etc/apache2/serdid/tla-ca-chain.pem
Sertifikaadipäringu tekitamine võiks toimuda nt selliselt, sertifikaadipäringu alusel väljastab SK sertifikaate oma JUUR-SK -> KLASS3-SK sertifikaatide suhtes
$ openssl req -nodes -new -newkey rsa:2048 > www.loomaaed.tartu.ee.csr ... Country Name (2 letter code) [AU]:EE State or Province Name (full name) [Some-State]:Harju Locality Name (eg, city) []:Tallinn Organization Name (eg, company) [Internet Widgits Pty Ltd]: Tartu Loomaaed Organizational Unit Name (eg, section) []: Common Name (eg, YOUR name) []:www.loomaaed.tartu.ee Email Address []:
Kasulikud lisamaterjalid
SNI kasutamine
SNI http://en.wikipedia.org/wiki/Server_Name_Indication tehnika võimaldab samal soketil st ip aadressil ja pordil töötava veebiserveriga pakkuda erinevatel domeeninimedel https:// teenust. Selleks sobib kasutada serverina nt Debian Squeeze Apache veebiseverit ja kliendina Debian Squeeze Iceweasel brauserit. Seadistamiseks tuleb lihtsamal juhul lihtsalt seadistada https:// virtual hostid sarnaselt nö tavaliste http:// virtual hostidega.
Brauseris peab olema sisse lülitatud TLS
Edit -> Preferences -> Advanced -> Encryption -> Use TLS 1.0
HTTP Proxy käivitamine
Selleks, et veebiserveris saaks kasutada ProxyPass ja ProxyPassReverse direktiive, tuleb lülitada käima sellised moodulid
# cd /etc/apache2/mods-enabled # ln -s ../mods-available/proxy.conf # ln -s ../mods-available/proxy.load # ln -s ../mods-available/proxy_http.load # ln -s ../mods-available/proxy_connect.load
Kasutamine toimub nt selliselt
ProxyPass /images http://web.loomaaed.tartu.ee:7778/images ProxyPassReverse /images http://web.loomaaed.tartu.ee:7778/images
Proximist saab kasutada ka Rewrite direktiiviga, nt selliselt nö ilusate urlide tegemise eesmärgil (kus teisel positsioonil ei ole mitte failitee, vaid uri)
RewriteEngine On RewriteRule ^(/eng.*) /portal/!portal.clean_url?$1 [QSA,P]
või nt
... RewriteRule ^/robots.txt /robots_ssl.txt [PT]
Kui mingil põhjusel peab proxima vastu https'i, siis selliselt
SSLEngine on SSLProxyEngine on SSLProxyVerify none ... RewriteEngine On RewriteRule ^(/eng.*) /portal/!portal.clean_url?$1 [QSA,P]
BasicAuth tekstifailist
<Directory /srv/www/salajanekataloog> AuthType Basic AuthName "FILE-Auth" AuthBasicProvider file AuthUserFile /etc/apache2/htpasswd.salajanekataloog Require valid-user Order Allow,Deny Allow from All </Directory>
kusjuures htpasswd.salajanekataloog sisaldab kasutajanimesid ja paroole, fail moodustatakse nt nii
$ htpasswd -c htpasswd.salajanekataloog esimenekasutaja Password: parool $ htpasswd htpasswd.salajanekataloog teinekasutaja Password: parool
BasicAuth LDAP kataloogist
Apache mod_authnz_ldap ja mod_ldap moodulite abil saab autentida veebiserveri failisüsteemi kataloogi kasutajaid vastu LDAP kataloogi. Moodulite sisselülitamiseks tuleb öelda
# a2enmod authnz_ldap # a2enmod ldap
Seadistus sobib kasutada nt sellist sektsiooni
<Directory /srv/www/salajanekataloog> AuthType Basic AuthName "LDAP-Auth" AuthBasicProvider ldap AuthzLDAPAuthoritative on AuthLDAPURL "ldaps://ldap.loomaaed.tartu.ee/dc=loomaaed,dc=tartu,dc=ee?uid?sub?(objectClass=*)" Require valid-user Order Allow,Deny Allow from All </Directory>
Kui LDAP serveriga toimub suhtlemine üle turvalise kanali, tuleb kasutada veebiserveris LDAP kliendi seadistusfaili /etc/ldap/ldap.conf nii nagu palas OpenLDAP_kasutamine_Debianiga#LDAP_kliendi_seadistamine õpetatakse.
BasicAuth PostgreSQL andmebaasist
Paigaldada pakett libapache2-mod-auth-pgsql http://www.giuseppetanzilli.it/mod_auth_pgsql2/
# apt-get install libapache2-mod-auth-pgsql
ning kasutada nt sellist Location sektsiooni
<Location /pg-auth> Order Allow,Deny Allow from All AuthName "PG-Auth" AuthType basic Auth_PG_host baas.loomaaed.tartu.ee Auth_PG_port 5432 Auth_PG_user kasutajanimi Auth_PG_pwd parool Auth_PG_database baasinimi Auth_PG_pwd_table skeeminimi.tabelinimi Auth_PG_uid_field vali1 Auth_PG_pwd_field vali2 Auth_PG_encrypted off <LIMIT GET POST> require valid-user </LIMIT> </Location>
ajp13 proxy kasutamine
ajp13 protokolli abil saab nö generic Apache veebiserveri taga Tomcat rakendusserverit pidada. Tarkvara paigaldamiseks tuleb öelda
# apt-get install libapache2-mod-jk
Tarkvara kastumiseks tuleb failis /etc/apache2/apache2.conf kasutada nt
JkWorkersFile /etc/libapache2-mod-jk/workers.properties JkLogFile /var/log/apache2/mod_jk.log JkLogLevel debug
ning failis /etc/libapache2-mod-jk/workers.properties kirjeldada nn tööline (ingl. k. worker), nt selliselt
worker.list=ajp13_worker worker.ajp13_worker.port=8009 worker.ajp13_worker.host=localhost worker.ajp13_worker.type=ajp13
Veebiserveri seadistusfailis, nt VirtualHost sektsioonis kasutada rida
... ServerName www.loomaaed.tartu.ee JkMount /java-ressurss* ajp13_worker JkMount /tapselt-see-uri ajp13_worker
et vahendada java teenust aadressil http://www.loomaaed.tartu.ee/java-ressurss ning /tapselt-see-uri.
Kui mingil põhjusel on Tomcatiga suhtlemine ajp13 protokolli abil raskendatud, siis võttes arvesse asjaolu, et Tomcat sisaldab endas ka HTTP serverit (st nö tavalist veebiserverit), on võimalik vahendada läbi Apache Tomcati http protokolli kasutades. Selleks sobib kasutada nt direktiive
ProxyPass /java-ressurss http://tomcat.loomaaed.tartu.ee/java-ressurss ProxyPassReverse /java-ressurss http://tomcat.loomaaed.tartu.ee/java-ressurss
Selleks, et ajp annaks https:// Apache taga töötavale Tomcatile üle kasutaja sertifikaadi PEM kujul ning nii, et seda saaks java programmist kasutada a la
request.getAttribute("SSL_CLIENT_CERT");
peab kasutama lisaks Apache seadistusfailis parameetrit
JkEnvVar SSL_CLIENT_CERT
ajp13 proxy kasutamine koormusjaotuseks
Selleks, et ajp13 abil vahendada kasutajad kahele Tomcat'ile sobib kasutada sellist /etc/libapache2-mod-jk/workers.properties faili sisu
worker.list=ajp13_worker worker.tomcat1a.port=8009 worker.tomcat1a.host=10.0.7.241 worker.tomcat1a.type=ajp13 worker.tomcat1a.lbfactor=1 worker.tomcat1a.connect_timeout=1000 worker.tomcat1a.jvm_route=tomcat1a worker.tomcat1b.port=8009 worker.tomcat1b.host=10.0.7.242 worker.tomcat1b.type=ajp13 worker.tomcat1b.lbfactor=2 worker.tomcat1a.connect_timeout=1000 worker.tomcat1b.jvm_route=tomcat1b worker.ajp13_worker.type=lb worker.ajp13_worker.sticky_session=1 worker.ajp13_worker.sticky_session_force=false worker.ajp13_worker.method=Request worker.ajp13_worker.balance_workers=tomcat1a,tomcat1b
RewriteRule kasutamine
RewriteRule abil saab juhendada veebiserverit, millistel tingimustel ta vastab brauserile päringu vastuse asemel Location päise rida sisaldava vastusega. Kasutamiseks tuleb moodustada link
# cd /etc/apache2/mods-enabled # ln -s ../mods-available/rewrite.load
ning nt http://www.loomaaed.tartu.ee seadistusfailis kasutada ridu
RewriteEngine On RewriteRule ^/veebikoht http://web.loomaaed.tartu.ee/ [L,R=301]
Tulemusena esitatakse brauserile päringu
GET /veebikoht Host: www.loomaaed.tartu.ee ...
peale vastus, st Location ja HTTP kood on just olulised
HTTP/1.1 301 Moved Permanently Date: Mon, 18 May 2009 11:49:18 GMT Server: Apache Location: http://web.loomaaed.tartu.ee/ Content-Length: 424 Content-Type: text/html; charset=iso-8859-1 Keep-Alive: timeout=15, max=100 Connection: Keep-Alive
Skriptile töötluse edasiandmiseks sobib kasutada sellist reeglit
RewriteRule ^(.*) "/srv/www/cgi-bin/skript.pl$1" [T=application/x-httpd-cgi]
kus
- skript.pl kutsutakse välja igasuguste uride puhul, seejuures skript näeb keskkonnamuutujat PATH_INFO, mille väärtuseks on esitatud päringu uri osa
- sellise konstruktsiooni töötamiseks on oluline, et skript.pl ning $1 on peale teisendusi eraldatud / märgiga, vastasel korral otsib veebiserver failisüsteemist faili skript.pluri
RewriteCond kasutamine
RewriteCond võimaldab kasutada RewriteRule'i tingimuslikult, nt järgmine konstruksioon suunab http://www.loomaaed.tartu.org/ ja http://www.loomaaed.tartu.net/ poole pöördujad http://www.loomaaed.tartu.ee/ peale
ServerName www.loomaaed.tartu.ee ServerAlias www.loomaaed.tartu.org ServerAlias www.loomaaed.tartu.net ... RewriteEngine On RewriteCond %{SERVER_NAME} www.loomaaed.tartu.org RewriteRule ^/(.*) http://www.loomaaed.tartu.ee/ [R,L] RewriteCond %{SERVER_NAME} www.loomaaed.tartu.net RewriteRule ^/(.*) http://www.loomaaed.tartu.ee/ [R,L]
Query stringi kasutamiseks, uuele urile lisatakse algne qs lõppu
RewriteCond %{QUERY_STRING} "id=36&search=1" RewriteRule "^/otsing$" http://loomaaed.tartu.ee/otsinguvormiteade [R,L]
Selleks, et qs lõppu ei lisata, tuleb lõpetada uus aadress küsimärgiga
RewriteCond %{QUERY_STRING} "id=36&search=1" RewriteRule "^/otsing$" http://loomaaed.tartu.ee/otsinguvormiteade? [R,L]
Vaikimisi nö teate näitamine
RewriteCond %{HTTP_HOST} !loomaaed.tartu.ee RewriteCond %{HTTP_HOST} !www.loomaaed.tartu.ee RewriteRule ^/.* /valehostnamegapoordutud.html [PT]
Veebiserveri vastuste pakkimine
Kui klient esitab päringuga kaasa päise
accept-encoding: gzip,deflate
siis see tähendab, et brauser oskab vastu võtta gzip'iga pakitud vastuseid. Selleks, et server vastuseid pakkida oskaks peab olema sisse lülitatud mod_deflate moodul http://httpd.apache.org/docs/2.2/mod/mod_deflate.html ja vaikimisi on see sisse lülitatud. Globaalseks väljalülitamiseks tuleb moodul välja lülitada
# cd /etc/apache2/mods-enabled # rm deflate.conf deflate.load
Location ja LocationMatch direktiivide kasutamine
Location direktiive vaatab Apache läbi järjekorras ja töötab URI'ga viimati klappinud Location. Nt sellise järgnevusega saab piirata külastajate ligipääsu va näidatud ip aadressidelt pöördujad
<Location /> Order Allow,Deny Allow from 192.168 </Location> <Location /veahaldus> Order Allow,Deny Allow from All </Location> ErrorDocument 403 /hooldus/index.html <Location /hooldus> Order Allow,Deny Allow from All </Location>
- kõik külastajad saavad ligi /veahaldus ning /hooldus aadressidel olevatele ressurssidele
- ainult 192.168/16 võrgust pöörduvad kasutajad saavad ligi kõigile ressurssidele
LocationMatch direktiiviga saab kontrollida aadressi vastu regulaaravaldist, nt
<LocationMatch "/(web|image|html)/"> Order Allow,Deny Allow from 192.168.2 10.0.5.5 </LocationMatch>
lubab ligipääsu /web/, /image/ ja /html/ sõnesid sisaldavatele aadressidele vaid ip aaressidelt 192.168.2.0/24 ja 10.0.5.5.
Directory direktiivi kasutamine
Directory direktiivi abil saab piirata ressurssile ligipääsu tema asukohale failisüsteemis järgi. Nt selleks, et piirata kõigile '.svn' ja 'CVS' kataloogidele ligipääsu, sobib kasutada selliseid sektsioone
<Directory ~ ".*\.svn"> Order allow,deny Deny from all Satisfy All </Directory> <Directory ~ ".*\/CVS"> Order allow,deny Deny from all Satisfy All </Directory>
Selleks, et kasutajad pääseks ressursile ligi
- teatud ip aadressidelt ilma basic auth paroolita
- mujalt basic auth parooli kontrolliga
sobib kasutada sellist sektsiooni
<Directory /ressurss> Options None Order Allow,Deny Allow from 192.168.1.0/24 AuthType Basic AuthName "Ressurss" AuthBasicProvider file AuthUserFile /etc/apache2/htpasswd Require valid-user Satisfy Any </Location>
kus
- satisfy any on oluline, et kasutaja autentimiseks piisaks ühe ükskõik millisese tingimuse rahuldamisest
Virtuaalhostide kasutamine
Ühe Apache veebiserveri installatsiooni saab seadistada nii, et ta teenindab erinevatele domeeninimedele ehk veebikohtadele esitatud HTTP päringuid. Seejuures saab erinevate veebikohtade juures kasutada erinevaid veebiserveri tööd kontrollivaid seadistusi, nt
- dokumendijuurikas - kataloog, mis vastab veebikohale veebiserveri failisüsteemis
- kasutajate ligipääsupiirangud - nt ligipääsupiirang kliendi ip aadressi või kasutajanime ja parooli alusel; või id kaardi alusel
- veebiserver funktsionaalsed omadused - CGI skriptide kasutamise võimalus
- https veebikohtade puhul erinevaid veebiserveri sertifikaate
Nii käima seatud veebiserveri kohta öeldake, et veebiserver töötab virtuaalses režiimis.
Virtuaalhostide pidamiseks on olulised sellised seadistusfailid
- /etc/apache2/ports.conf - millistel võrgusoketitel (portidel) veebiserver kliente teenindab
# cat /etc/apache2/ports.conf NameVirtualHost 192.168.1.151:80 Listen 192.168.1.151:80
- /etc/apache2/sites-available ja sites-enabled - virtuaalhostide seadistusfailid; erinevatele veebikohtadele vastavaid seadistused esitatakse tavaliselt kataloogis /etc/apache2/sites-available ja /etc/apache2/sites-enabled erinevates failides, kusjuures esimeses kataloogis on virtuaalhostide failid ise ning viimases lingid neile failidele. Reaalselt on kasutajatele kättesaadavad vaid need virtuaalhostid, millele on tehtud lingid.
Suhtliselt lihtne virtuaalhosti seadisfail on sellise sisuga
# cat /etc/apache/sites-available/www.loomaaed.tartu.ee.conf <VirtualHost 192.168.1.4:80> ServerName www.loomaaed.tartu.ee ServerAdmin webmaster@loomaad.tartu.ee DocumentRoot /srv/www.loomaaed.tartu.ee/www_i5u7yhGbdVy4/html ErrorLog /var/log/apache2/www.loomaaed.tartu.ee-error.log LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined CustomLog /var/log/apache2/www.loomaaed.tartu.ee-access.log combined <Directory /srv/www.loomaaed.tartu.ee/www_i5u7yhGbdVy4/html> Options None AllowOverRide None Order Allow,Deny Allow from All </Directory> </VirtualHost>
ja
# cd /etc/apache2/sites-enabled # ls -l # www.loomaaed.tartu.ee.conf -> ../sites-available/www.loomaaed.tartu.ee.conf
kus
- ServerName - virtuaalhosti domeeninimi, mida kasutaja virtuaalhosti poole brauseris kasutab
- ServerAdmin - ...
- DocumentRoot - dokumendijuurikas
- ErrorLog - ...
- LogFormat - ...
- CustomLog - ...
- Directory - ...
Veebikülastajate lähte-aadresside teisendamine RPAF mooduliga
Kui veebiserveri ees kasutatakse nn kiirendavat proxy't, nt Squidi, siis paistavad veebiserveri logis läbi Squidi tehtud päringud olevat lähtunud Squidist ip aadressilt. Statistilist analüüsi saab küll teha ehk ka Squidi abil samuti, aga nt vigade otsimisel on otsekohesem kui veebiserveri logis esinevad külastajate õiged ip aadressid (mis üldiselt võivad olla ka mõned muud proxy'd, mida külastajad on otsustanud kasutada).
RPAF mooduli kasutamise tulemusena paistab veebiserverile päring lähtuvat kliendi ip aadressilt, st kliendi aadress esitatakse veebiserveri logis ja praktiliselt kõikjal, kus päringu lähte ip aadress veebiserveris mõju avaldada võiks. RPAF moodul saavutab sellise tulemuse Squidi poolt lisatava X-Forwarded-For päise kasutamisel, milles Squid ütleb kaasa tema poole pöördunud ip aadressi.
RPAF mooduli kasutamiseks tuleb veebiserverisse moodul paigaldada öeldes
# apt-get install libapache2-mod-rpaf
Peale paigaldamist moodul võetakse kasutusele, mooduli seadistusfail on vaikimisi sisuga
# cat /etc/apache2/mods-enabled/rpaf.conf RPAFenable On RPAFsethostname On RPAFproxy_ips 127.0.0.1
Lisades RPAFproxy järele Squidi proxy aadressi, esitatakse Apache logis veebikülastajate brauserite nö tegelikke aadresse. Arusaadavalt turvakaalutlustel tuleks olla tähelepanelik, milliseid Squid'e usaldatakse, oluline võiks see olla nt kui mõne veebiserveri ressursi kasutamist kontrollitakse ip aadressi põhiselt (kuigi siinkohal tasuks kaaluda hoopiski ligipääsu piiramist Squidi vahenditega).
Veebikülastajate lähte-aadresside teisendamine remoteip mooduliga
Selgub, et alates Apache v. 2.4 on kasutada remoteip moodul http://httpd.apache.org/docs/2.4/mod/mod_remoteip.html ja sellega saab veebiküljastajate nö tegelikke aadresse muuta nähtavaks veebiserveri jaoks, sh rakenduste jaoks. Kasutamiseks tuleb moodul sisse lülitada
# a2enmod remoteip
Tekitada remoteip seadistusfail, nt
# cat /etc/apache2/mods-enabled/remoteip.conf RemoteIPHeader X-Forwarded-For RemoteIPInternalProxy 10.0.0.100
Selleks, et Apache logiks klientide aadresse, tuleb muuta CustomLog kirjeldust, %h -> %a
# grep " combined$" /etc/apache2/apache2.conf # LogFormat "%h %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" combined LogFormat "%a %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" combined
Ning kehtestada muudatused
# service apache2 restart
Tulemusena esitatakse nt phpinfo() väljundis REMOTE_ADDR väärutseks kliendi ip ja samuti access logis.
Proxy mooduli kasutamine koormusjaotuseks
Proxy http://httpd.apache.org/docs/2.2/mod/mod_proxy.html moodulit saab kasutada nt selliselt koormusjaotuseks
<Location /balancer-manager> SetHandler balancer-manager Order Allow,Deny Allow from 172.19 </Location> ProxyPass /balancer-manager ! ProxyPass / balancer://mycluster/ # ProxyPassReverse / http://10.0.13.146:80 # ProxyPassReverse / http://10.0.13.147:80 <Proxy balancer://mycluster> BalancerMember http://10.0.13.146:80 BalancerMember http://10.0.13.147:80 </Proxy>
Päringute ja päringu vastuste päiste ümberkirjutamine
headers
Selleks, et kasutaja esitatud veebiserveri päringus ja päringu vastuses muuda HTTP päiseid sobib kasutada Apache mod_headers moodulit, sisselülitamiseks öelda http://httpd.apache.org/docs/2.2/mod/mod_headers.html
# a2enmod headers
Sisenenud päringute päiste muutmiseks sobib kasutada RequestHeader direktiivi, nt
RequestHeader set Ssl-Client-S-Dn %{SSL_CLIENT_S_DN}e RequestHeader set Ssl-Client-Verify %{SSL_CLIENT_VERIFY}e
Väljuvate päringute päiste muutmiseks sobib kasutada Header direktiivi, nt
<Location /loomaaed> Header set Cache-Control "no-store, no-cache, must-revalidate, max-age=0" Header set Pragma "no-cache" </Location>
expire
http://httpd.apache.org/docs/2.2/mod/mod_expires.html
# a2enmod expires
<Directory /srv/www/html/static> ExpiresActive On ExpiresByType text/html A20 ExpiresDefault A20 </Directory>
PHP abil kirja saatmine SMTP relee kaudu
PHP Pear mooduli Net_SMTP http://pear.php.net/package/Net_SMTP/ abil saab saata SMTP relee kaudu kirju välja, tarkvara paigaldamiseks tuleb öelda
# apt-get intall php-mail
Näiteks selline skript saadab kirja välja
<? require 'Net/SMTP.php'; $host = '192.168.1.250'; $from = 'mart@loomaaed.tartu.ee'; $rcpt = array('priit@loomaaed.tartu.ee'); $subj = "Subject: Teade, mis on tähtis\n"; $body = "Kirja sisu osa"; /* Create a new Net_SMTP object. */ if (! ($smtp = new Net_SMTP($host))) { die("Unable to instantiate Net_SMTP object\n"); } /* Connect to the SMTP server. */ if (PEAR::isError($e = $smtp->connect())) { die($e->getMessage() . "\n"); } /* Send the 'MAIL FROM:' SMTP command. */ if (PEAR::isError($smtp->mailFrom($from))) { die("Unable to set sender to <$from>\n"); } /* Address the message to each of the recipients. */ foreach ($rcpt as $to) { if (PEAR::isError($res = $smtp->rcptTo($to))) { die("Unable to add recipient <$to>: " . $res->getMessage() . "\n"); } } /* Set the body of the message. */ if (PEAR::isError($smtp->data("From: Mart Kask <mart@loomaaed.tartu.ee>\r\n" . "To: Priit Kask <priit@loomaaed.tartu.ee>\r\n" . $subj . "\r\n" . $body))) { die("Unable to send data\n"); } /* Disconnect from the SMTP server. */ $smtp->disconnect(); ?>
Logimine
CustomLog http://httpd.apache.org/docs/2.2/mod/mod_log_config.html direktiiviga saab täpsustada, mida veebiserverile esitatud päringutega seoses logitakse, nt näidata, et logitakse päringu teenindamiseks kulunud aega
CustomLog /var/log/apache2/loomaaed.tartu.ee-ssl-access.log "%h %l %u %t \"%r\" %>s %b %T/%D"
kus
- %T - päringu tegemiseks kulunud aeg sekundites
- %D - päringu tegemiseks kulunud aeg mikrosekundites
Seejuures tuleb arvestada, et päringu tegemiseks kulunud aeg sõltub nii päringu esitajast kui vastajast.
kood 408
Apache logib 408 koodiga sissekande kui ta ootas päringut, aga seda ei tulnud ning ta lõpetas ootamise nt KeepAliveTimeout tõttu, nt
10.80.106.29 - - [16/May/2013:15:22:33 +0300] "-" 408 - 0 "-" "-" "" "-"
FastCGI
FastCGI saab töötada kolmes režiimis
- dünaamiline (ingl. k. dynamic) - protsessi käivitab vajadusel veebiserver ise
- staatiline (ingl. k. static) - etteantud hulk protsesse käivitatakse veebiserveri käivitamisel
- väline (ingl. k. external) - protsess töötab eraldi veebiserverist, veebiserveri suhtleb sellega nt üle tcp/ip
FastCGI http://www.fastcgi.com/ tarkvara paigaldamiseks tuleb öelda
# apt-get install libapache2-mod-fastcgi libfcgi-perl
Dünaamiline
FastCGI kasutamiseks peab veebiserver sisaldama nt sellist seadistust
<Directory /srv/www/fcgi> Options ExecCGI AddHandler fastcgi-script .fcgi </Directory>
Nn HelloWorld FastCGI skript on selline
$ cat /srv/www/fcgi/fcgi.fcgi #!/usr/bin/perl use FCGI; while( FCGI::accept() >= 0 ) { print( "Content-Type: text/plain\n\n" ); print( "Hello World\n" ); }
FastCGI kasutamisega kaasneb veebiserveris töötav protsess
# ps aux | grep www-data | grep perl www-data 13742 0.0 0.5 19328 2812 ? S 23:23 0:00 /usr/bin/perl /srv/www/fcgi/fcgi.fcgi
Lisaks saab veebiserveri seadistusfaili nn põhiosas juhtida FastCGI tööd nt selliselt
FastCgiConfig -initial-env PATH \ -appConnTimeout 600 -idle-timeout 60 \ -init-start-delay 0 -maxClassProcesses 100 -maxProcesses 200 -min-server-life 60 \ -minProcesses 0 -startDelay 1 -autoUpdate
kus
- TODO
Staatiline
Parameetri FastCGIServer abil saab käivitada etteantud hulga FastCGI protsesse, nt
FastCgiServer /srv/www/fcgi/fcgi.fcgi -processes 10 -initial-env FCGI=on
kus
- FCGI=on - fcgi skript näeb lisaks sellist keskkonnamuutujat näidatud väärtusega
Kui veebiserveri muu seadistusega kaasneb kõnealuse skript kasutamine, siis see toimub FastCGI'na, nt selline RewriteRule
RewriteEngine On RewriteRule ^/stat/(.*) "/srv/www-static/stat.fcgi/$1" [T=application/x-httpd-cgi]
kus
- /srv/www-static/stat.fcgi on iseenesest samasugune kui dünaamilisel juhtumil
Väline
Veebiserverist eraldi protsessi kasutamise üheks eeliseks on süsteemi suurem skaleeritavus, FastCGI toega teenus ei pea töötama veebiserveriga samas arvutis. Kas samas arvutis või võrgus tuleb käivitada protsess, nt sellise skripti abil
$ cat /srv/www-fcgi-external/ext.fcgi use FCGI; my $socket = FCGI::OpenSocket( ":8080", 5 ); my $request = FCGI::Request( \*STDIN, \*STDOUT, \*STDERR, \%ENV, $socket ); my $count; while( $request->Accept() >= 0 ) { print "Content-type: text/html\n\n"; print ++$count; } FCGI::CloseSocket( $socket );
Veebiserveri seadistusfailis tuleb näidata parameeter
FastCgiExternalServer /srv/www/ext.fcgi -host 127.0.0.1:8080
kus
- /srv/www on muus osas seotud FastCGI kasutamisega, nt Directory direktiivi abil
- 127.0.0.1:8080 on ext.fcgi sees kasutatud soketi aadress
Protsessi käivitamiseks sobib öelda nt
$ perl /srv/www-fcgi-external/ext.fcgi
Tulemusena esitatakse aadressil http://fcgi.loomaaed.tartu.ee/ext.fcgi igale brauseri pöördumisele vastuseks ühe võrra suurem arv.
Pyhton WSGI
# apt-get install libapache2-mod-wsgi
Veebiserveri seadistuse osa
WSGIScriptAlias /myapp /srv/www/wsgi/myapp.wsgi
HelloWorld skript
# cat /srv/www/wsgi/myapp.wsgi def application(environ, start_response): status = '200 OK' output = 'Hello World!' response_headers = [('Content-type', 'text/plain'), ('Content-Length', str(len(output)))] start_response(status, response_headers)
Tulemusena saab pöörduda aadressile http://localhost/myapp
Re-negotiation probleem
TODO
Kasulikud lisamaterjalid
- http://www.educatedguesswork.org/2009/11/understanding_the_tls_renegoti.html
- http://lukenotricks.blogspot.com/2009/11/tls-renegotiation-attack-for-impatient.html
Allalaadimise kiiruse kontrollimine
# apt-get install libapache2-mod-bw
ID kaardiga autentimine
Sisselogimine
Väljalogimine
Mime type kasutamine
Vahel on kasulik juhtida failidega töötamist MIME tüübi abil, nt selline rida paneb brauserid pakkuma salvestamise võimalust, st mitte esitama xml teksti brauserisse
AddType application/octet-stream .ddoc
Tundub, et teine ja parem variant on
<FilesMatch "\.ddoc"> Header set Content-Disposition attachment </FilesMatch>
Selle kasutamiseks tuleb headers moodul sisse lülitada
# a2enmod headers
Teksti asendamine HTTP BODY sees
Alates Apache v. 2.2.7 (Debian Squeeze v. 6 paketihalduses on 2.2.16) on tarkvara koosseisus mod_substitude teek, mille aktiviseerimiseks sobib öelda
# a2enmod substitute # /etc/init.d/apache2 restart
Kasutamiseks sobib kasutada nt sellist sektsiooni Virtual Host kirjelduses
<Location /wiki> AddOutputFilterByType SUBSTITUTE text/html Substitute s/Mart/Priit/n </Location>
ulimit seadistamine
Käesolevate ulimit väärtuste esitamiseks sobib tekitada nt selline cgi skript ja brauseris käivitada
# cat /var/www/cgi-bin/index.cgi #!/bin/bash echo -e "Content-type: text/plain\n\n"; ulimit -a
Vaikimisi väljastakse Debian Squeeze v. 6 64 bit juhtumil
core file size (blocks, -c) 0 data seg size (kbytes, -d) unlimited scheduling priority (-e) 0 file size (blocks, -f) unlimited pending signals (-i) 16382 max locked memory (kbytes, -l) 64 max memory size (kbytes, -m) unlimited open files (-n) 1024 pipe size (512 bytes, -p) 8 POSIX message queues (bytes, -q) 819200 real-time priority (-r) 0 stack size (kbytes, -s) 8192 cpu time (seconds, -t) unlimited max user processes (-u) unlimited virtual memory (kbytes, -v) unlimited file locks (-x) unlimited
kus
- core file size 0 - core faile ei salvestata
- open files 1024 - ühe protsessi poolt lubatud avatud failide arv
- max user processes - operatsioonisüsteemis kasutajale lubatud samaaegselt töötavate protsesside arv
nofile
Näiteks selliselt
# cat /etc/apache2/envvars ... APACHE_ULIMIT_MAX_FILES="ulimit -n 65536"
Parasjagu töötavate veebiserveri protsesside poolt avatud failide arvude küsimiseks sobib öelda nt
# for i in `ps U www-data | awk {'print $1'} | grep -v PID`; \ do echo -n "$i: "; lsof -n -p $i | wc -l ; done 6411: 111 6723: 111 6740: 111 ...
core failide salvestamine
Lisada /etc/apache2/apache2.conf seadistusfaili rida
CoreDumpDirectory /var/cache/apache2
käivitada apache unlimited core suurusega
# ulimit -c unlimited # /etc/init.d/apache2 start
Või kirjutada /etc/init.d/apache2 skripti sisse selline ulimit rida
.. case $1 in start) log_daemon_msg "Starting web server" "apache2" # ulimit -c 4096 ulimit -c unlimited ...
kus
- ulimit -c 4096 tekitab core faile suurusega kui 2 MB
Tappa mõni apache2 child protsess SEGV signaaliga
# kill -11 PID
Tulemusena tekib core fail
/var/cache/apache2/core
Seejuures tuleb arvestada, et core failid salvestakse sama nimega, st järgmine kirjutab eelmise üle. Üks variant ülekirjutamist mingil määral vältida on nt cron töö abil liigutada iga minut eelmine fail eest ära mujale.
Võib olla on parem tulemus, kui kasutada apache2-dbg paketti.
Kasulikud lisamaterjalid
- /usr/share/doc/apache2.2-common/README.backtrace
- http://jrs-s.net/2012/05/24/enabling-core-dumps-on-apache2-2-on-debian/
PHP APC
# apt-get install php-apc
APC tööd juhtib nt selline seadistusfail
# cat /etc/php5/conf.d/apc.ini extension=apc.so apc.max_file_size = 5 apc.shm_size = 512 apc.file_update_protection = 2 apc.stat = 1 apc.ttl=3600 apc.user_ttl = 3600 apc.gc_ttl = 3600
kus
- TODO
Statistika esitamiseks sobib kopeerida APC lähtetekst ning sealt kasutada skripti apc.php.
GeoIP
Apache GeoIP mooduli abil saab tekida GEO* nimelised keskkonnamuutujad, mille väärtused sõltuvad päringu esitanud ip aadressist. Ja neid muutujaid saab siis kasutada nt PHP koodis või niisama veebiserveri seadistusfailis, nt RewriteCond tingimuste juures, et kontrollida mida ühelt või teiselt ip aadressilt sooritatud päringutele vastatakse. Tarkvara paigaldamiseks sobib öelda
# apt-get install libapache2-mod-geoip
Lisaks tuleb paigaldada GeoIP andmebaasid, nt paketihalduse abil öelda
# apt-get install geoip-database
või siis käsitsi nt http://dev.maxmind.com/geoip/legacy/geolite aadressilt kopeerida meelepärased baasid.
Kasutamiseks tuleks näidata /etc/apache2/mods-enabled/geoip.conf failis nt
# cat /etc/apache2/mods-enabled/geoip.conf <IfModule mod_geoip.c> GeoIPEnable On GeoIPOutput Env GeoIPDBFile /root/GeoIP.dat Standard GeoIPDBFile /root/GeoIPASNum.dat Standard GeoIPDBFile /root/GeoLiteCity.dat Standard GeoIPEnableUTF8 On #GeoIPDBFile /usr/share/GeoIP/GeoIP.dat </IfModule>
ning virtul hosti sektsioonis nt
RewriteEngine on RewriteCond %{ENV:GEOIP_COUNTRY_CODE} !^EE$ RewriteRule ^(.*) http://www.loomaaed.tartu.ee/ [R,L]
Kasulikud lisamaterjalid
Oracle Weblogic kasutamine
Oracle Weblogic rakendusserver kasutamiseks Apache taga tuleb esmalt kopeerida failisüsteemi wl moodul, mille leiab Weblogic paigalduse failisüsteemist, nt
/opt/bea/wlserver_10.3/server/plugin/linux/x86_64/mod_wl_20.so /opt/bea/wlserver_10.3/server/plugin/linux/x86_64/mod_wl_22.so
Seejuures tuleb arvestada, et 2013 aastal on olemas teegid Apache v. 2.0 ja v. 2.2 jaoks. Edasi tuleb moodul laadida sobiva seadistusega, nt
# cat /etc/apache2/mods-available/weblogic.load LoadModule weblogic_module /usr/lib/apache2/modules/mod_weblogic.so
# cat /etc/apache2/mods-available/weblogic.conf <IfModule mod_weblogic.c> Debug OFF WLLogFile /var/log/apache2/weblogic.log DebugConfigInfo Off KeepAliveSecs 120 WLIOTimeoutSecs 120 </IfModule>
Lõpuks veebiserver virtual host juures kirjeldada, millise uri juures Weblogic on kasutusel, nt
<Location /wl> Sethandler weblogic-handler WeblogicCluster 10.0.6.36:7030,10.0.6.37:7030 WLCookieName JSESSIDRIIGIPORTAALGW </Location>
Apache v. 2.4
Apache v. 2.4 saab 2013 aasta kevadel katsetada kergesti nt Ubuntu 12.04 ja nt sellise PPA abil
# add-apt-repository ppa:nathan-renniewaldock/apache2.4-php
- Directory ja Location juures tuleb Order ja Allow asemel kasutada sarnast rida
<Directory /srv/www> Require all granted </Directory>
- NameVirtualHost direktiivi enam pole nö aktiivses kasutuses, piisab Listenist
Kasulikud lisamaterjalid
WebDAV server
WebDAV teeke pole tarvis eraldi paidaldada, nende tugi on apahce2.2-bin paketis olemas
# dpkg -L apache2.2-bin | grep mod_dav /usr/lib/apache2/modules/mod_dav.so /usr/lib/apache2/modules/mod_dav_lock.so /usr/lib/apache2/modules/mod_dav_fs.so
Sisselülitamiseks sobib öelda
# a2enmod dav # a2enmod dav_fs # a2enmod dav_lock
Veebiserveri VirtualHost'is sobib kasutada nt sellist sektsiooni
Alias /webdav /srv/webdav <Directory /srv/webdav> Options All DAV On AuthType Basic AuthName "webdav" AuthBasicProvider file AuthUserFile /etc/apache2/webdav.password Require valid-user Order Allow,Deny Allow from All </Directory>
kus
- DAV - lülitatakse sisse WebDAV tugi
Kliendiks sobib kasutada nt
- Nautilus
- GNOME
- http://www.webdav.org/cadaver/
Kasulikud lisamaterjalid
- http://www.howtoforge.com/setting-up-webdav-with-apache2-on-debian-etch
- http://ubuntuguide.org/wiki/WebDAV
- http://bernaerts.dyndns.org/linux/75-debian/62-debian-webdav-share
- https://www.digitalocean.com/community/articles/how-to-configure-webdav-access-with-apache-on-ubuntu-12-04
CORS
Kasulikud lisamaterjalid
- https://developer.mozilla.org/en-US/docs/HTTP/Access_control_CORS
- http://www.html5rocks.com/en/tutorials/cors/
- http://arunranga.com/examples/access-control/
Märkused
- laaditud moodulite nimekirja esitamiseks
# apache2ctl -M | grep ssl ssl_module (shared)
mod security
Kasulikud lisamaterjalid
- TODO
CGI
# apt-get install apache2 #
Kasulikud lisamaterjalid
- TODO