www_apache2
Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédenteProchaine révisionLes deux révisions suivantes | ||
www_apache2 [2012/01/12 00:22] – thierry | www_apache2 [2012/04/22 15:40] – thierry | ||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
====== Apache2 ====== | ====== Apache2 ====== | ||
+ | ===== Catch-all ===== | ||
+ | |||
+ | Lien: http:// | ||
+ | |||
+ | " Catch-all DNS, VirtualHost et on fait mumuse avec les noms de sous-domaines " ... a suivre. | ||
+ | |||
===== Stress avec Curl-Loader ===== | ===== Stress avec Curl-Loader ===== | ||
Ligne 57: | Ligne 63: | ||
Donc: | Donc: | ||
# ulimit -n 10000 | # ulimit -n 10000 | ||
+ | |||
+ | ==== Exemples de conf ==== | ||
+ | |||
+ | En pratique: | ||
+ | |||
+ | J'ai fait des tests en utilisant des machines virtuels, dans un reseau virtualisé avec des interfaces " | ||
+ | |||
+ | Les principaux interets: | ||
+ | *le reseau est hyper rapide (estimé à 10Gb/s!) puisque tout passe en RAM | ||
+ | *ce reseau etant vierge, je suis libre d'y mettre n' | ||
+ | |||
+ | Voici une conf de test, largement inspiré de l' | ||
+ | ########### GENERAL SECTION ################################ | ||
+ | BATCH_NAME= test | ||
+ | CLIENTS_NUM_MAX=10000 | ||
+ | CLIENTS_NUM_START=50 | ||
+ | CLIENTS_RAMPUP_INC=25 | ||
+ | INTERFACE=eth1 | ||
+ | NETMASK=17 | ||
+ | IP_ADDR_MIN= 192.168.128.32 | ||
+ | IP_ADDR_MAX= 192.168.191.255 | ||
+ | CYCLES_NUM= 5 | ||
+ | URLS_NUM= 3 | ||
+ | | ||
+ | ########### URL SECTION #################################### | ||
+ | | ||
+ | URL=http:// | ||
+ | URL_SHORT_NAME=" | ||
+ | REQUEST_TYPE=GET | ||
+ | TIMER_URL_COMPLETION = 1500 # In msec. When positive, Now it is enforced by cancelling url fetch on timeout | ||
+ | TIMER_AFTER_URL_SLEEP = 20 | ||
+ | | ||
+ | ### | ||
+ | | ||
+ | URL=http:// | ||
+ | URL_SHORT_NAME=" | ||
+ | REQUEST_TYPE=GET | ||
+ | TIMER_URL_COMPLETION = 5000 # In msec. When positive, Now it is enforced by cancelling url fetch on timeout | ||
+ | TIMER_AFTER_URL_SLEEP = 2500 | ||
+ | | ||
+ | ### | ||
+ | | ||
+ | URL=http:// | ||
+ | URL_SHORT_NAME=" | ||
+ | REQUEST_TYPE=GET | ||
+ | TIMER_URL_COMPLETION = 5000 # In msec. When positive, Now it is enforced by cancelling url fetch on timeout | ||
+ | TIMER_AFTER_URL_SLEEP = 500 | ||
+ | | ||
+ | ### | ||
+ | |||
+ | |||
+ | Donc, on va faire notre test en communicant via eth1 , avec beaucoup d'IP. | ||
+ | |||
+ | # curl-loader test.conf | ||
+ | |||
+ | Voila. | ||
===== Log Syslog ===== | ===== Log Syslog ===== | ||
Ligne 243: | Ligne 305: | ||
# / | # / | ||
+ | |||
+ | Avec " | ||
+ | RPAFproxy_ips < | ||
+ | |||
+ | ==== Logs ==== | ||
+ | |||
+ | Voir plus loin avec webalizer. | ||
==== Tweaks et bugs ==== | ==== Tweaks et bugs ==== | ||
Ligne 300: | Ligne 369: | ||
Voila. | Voila. | ||
+ | |||
+ | ==== https reverse proxy ==== | ||
+ | |||
+ | Liens: | ||
+ | *http:// | ||
+ | *http:// | ||
+ | *http:// | ||
+ | |||
+ | Soit un domain: toto.mondomain.fr | ||
+ | |||
+ | export NAME=toto.mondomain.fr | ||
+ | | ||
+ | openssl genrsa -des3 -out $NAME.key 1024 | ||
+ | (entrer une passe phrase provisoire) | ||
+ | openssl req -new -key $NAME.key -out $NAME.csr | ||
+ | |||
+ | CN: | ||
+ | |||
+ | Virer la pass-phrase: | ||
+ | cp $NAME.key $NAME.key.bak | ||
+ | openssl rsa -in $NAME.key.bak -out $NAME.key | ||
+ | |||
+ | === 1 domaine === | ||
+ | |||
+ | Un seul domaine | ||
+ | |||
+ | openssl x509 -req -days 3650 -in $NAME.csr -signkey $NAME.key -out $NAME.crt | ||
+ | |||
+ | Les clefs sont prêtes. | ||
+ | |||
+ | === multi-domaine === | ||
+ | |||
+ | Lien: http:// | ||
+ | |||
+ | Il faut mettre plusieurs domaines dans le certificat de la facon suivante: | ||
+ | |||
+ | Créer un fichier " | ||
+ | < | ||
+ | [ mydomain_http ] | ||
+ | nsCertType | ||
+ | keyUsage | ||
+ | extendedKeyUsage | ||
+ | subjectKeyIdentifier | ||
+ | authorityKeyIdentifier | ||
+ | subjectAltName | ||
+ | [ mydomain_http_subject ] | ||
+ | DNS.1 = sub1.mondomain.fr | ||
+ | DNS.2 = sub2.mondomain.fr | ||
+ | ... etc ... | ||
+ | DNS.x = xxxx.mondomain.fr | ||
+ | </ | ||
+ | |||
+ | Et enfin | ||
+ | openssl x509 -req -days 3650 -in $NAME.csr -signkey $NAME.key -out $NAME.crt -extfile $NAME.domain_extensions.txt -extensions mydomain_http | ||
+ | |||
+ | Et voila: tout les domaines " | ||
+ | |||
+ | | :!: Il serai aussi possible d' | ||
+ | |||
+ | === nginx === | ||
===== Apache HA ===== | ===== Apache HA ===== | ||
Ligne 564: | Ligne 693: | ||
*http:// | *http:// | ||
+ | === vite dit === | ||
# aptitude install awstats | # aptitude install awstats | ||
Ligne 587: | Ligne 717: | ||
... la dernière date traité faisant office de point de départ pour le fichier suivant. (toutes les dates anterieures étant ignoré) | ... la dernière date traité faisant office de point de départ pour le fichier suivant. (toutes les dates anterieures étant ignoré) | ||
+ | |||
+ | === en pratique === | ||
+ | |||
+ | Soit les rotations de logs **'' | ||
+ | |||
+ | Soit : | ||
+ | - **'' | ||
+ | - **'' | ||
+ | |||
+ | Soit dans **'' | ||
+ | | ||
+ | # pas de ligne " | ||
+ | Incremental yes | ||
+ | |||
+ | Soit dans **''/ | ||
+ | #!/bin/sh | ||
+ | / | ||
+ | |||
+ | Soit un script nommé **'' | ||
+ | #!/bin/sh | ||
+ | | ||
+ | # -------------------------------------------- | ||
+ | # - La conf est dans / | ||
+ | # - La ligne " | ||
+ | # - Desactiver/ | ||
+ | # -------------------------------------------- | ||
+ | | ||
+ | NAME=`basename $0` | ||
+ | | ||
+ | WEBALIZER=/ | ||
+ | MERGE=/ | ||
+ | | ||
+ | STAT=/ | ||
+ | AWK=/ | ||
+ | | ||
+ | # ------------------------------------ | ||
+ | # Les fichiers de LOGS a " | ||
+ | # ------------------------------------ | ||
+ | | ||
+ | LOGS="/ | ||
+ | | ||
+ | logger -t ${NAME} "start ..." | ||
+ | | ||
+ | # Verifions l' | ||
+ | | ||
+ | if [ ! -x ${WEBALIZER} ] || [ ! -x ${MERGE} ] ; then | ||
+ | echo " | ||
+ | exit 1 | ||
+ | fi | ||
+ | | ||
+ | # Verifier l' | ||
+ | | ||
+ | if ! EPOCHs=" | ||
+ | echo " | ||
+ | exit 1 | ||
+ | fi | ||
+ | | ||
+ | # ecart en secondes entre les dates de modifications des 2 fichiers (valeur absolue) | ||
+ | DIFFS=$( echo ${EPOCHs} | ${AWK} -F' ' '{ diff=$2-$1; diff=(diff< | ||
+ | | ||
+ | # On tolere 120 secondes, soit 2 minutes | ||
+ | | ||
+ | if [ ${DIFFS} -ge 120 ]; then | ||
+ | echo -e " | ||
+ | exit 1 | ||
+ | fi | ||
+ | | ||
+ | # Sinon Ok. | ||
+ | | ||
+ | logger -t ${NAME} " | ||
+ | | ||
+ | ${MERGE} ${LOGS} | ${WEBALIZER} -c / | ||
+ | | ||
+ | logger -t ${NAME} " | ||
+ | | ||
+ | # -------------- | ||
+ | # EOF | ||
+ | |||
+ | Que fait ce script ? | ||
+ | - il verifie que l' | ||
+ | - que l' | ||
+ | - merge et import des données dans webalizer | ||
===== Compilation ===== | ===== Compilation ===== | ||
Ligne 593: | Ligne 805: | ||
D' | D' | ||
+ | |||
+ | :!: Faire des copies de sauvegarde de | ||
+ | / | ||
+ | / | ||
+ | Tout va disparaitre: | ||
# dpkg -P webalizer | # dpkg -P webalizer | ||
Ligne 604: | Ligne 821: | ||
# aptitude install gcc make libz-dev libpng-dev libgd2-noxpm-dev | # aptitude install gcc make libz-dev libpng-dev libgd2-noxpm-dev | ||
| | ||
- | + | # exit | |
+ | $ ./ | ||
+ | $ make | ||
+ | $ su | ||
+ | # make install | ||
+ | |||
+ | L' | ||
+ | / | ||
+ | On mettra la conf dans: | ||
+ | / | ||
+ | |||
+ | Et voila ? | ||
+ | Bug corrigé. | ||
| | ||
www_apache2.txt · Dernière modification : 2012/05/10 20:49 de thierry