Archive for the ‘apache’ Category

mod_gzip vs. mod_deflate

Thursday, April 10th, 2008

… sta različna modula za isto stvar ? Toda katerega izbrati ?

Mod_gzip stisne vsebino za približno 4 – 6 % bolj kot mod_deflate, hkrati pa mod_gzip porabi več procesorske moči in bi naj bil celo manj podprt s strani brskalnikov … ena primerjava tukaj.

Jaz bom verjetno uporabil mod_deflate (jutri nameščam Grin .. ), ker toliko preveč pa spet nimam procesorske moči, pa še glede na to da uporabljam mpm worker, ki porabi več CPUja kot prefork, bo kar mod_deflate, ki je lepo podprt.

Seveda ni pametno kompresirati PDFje, ker verjetno nebodo več delali pa tudi NS4 ima probleme s kompresiranimi CSSji, tako da pazit tam. Če pa imate PHP in Zlib, pa lahko uporabite kar tole … http://ru2.php.net/ob_gzhandler.

Popravek, pri novejših verzijah je tudi pri mod_deflate možno nastavljati stopnjo kompresije, tako da več verjetno nebo razlike v porabi CPUja če nastavite za oba moda enako stopnjo. Ima pa mod_gzip kar nekaj več nastavitev, če jih seveda potrebujete …

Apache MPM in seznam naloženih modulov …

Saturday, April 5th, 2008

Najprej kar na kratko, seznam naloženih modulov dobimo tako …

debian:~# apache2 -D DUMP_MODULES

priporočeno je da tiste ki jih ne potrebujemo onemogočimo.

Druga stvar pa je MPM, ki ga lahko izbiramo pri apacheju, kolikor sem gledal dokumentacijo je teh MPMjev na voljo X pa še več Smile . Privzeto pa se uporablja prefork, ki je ok, dokler niste na škatli z malo rama in dosti obiska. Za worker pa pravijo da bo vsega drugega prej zmanjkalo kot rama Grin , pa tudi to da nemoremo z njim uporabljati mod_php, ker je php …

pizda**ja

no, obstaja pa možnost da php poganjamo z FastCGI tako kot se to dela običajno, na LiteSpeedu in še nekaterih Httpd, ki jih bomo sedaj pustili na strani. Zato so skoz debate gor in dol kako je s Worker MPMjem samo sr*nje in težave. Pa ni čisto tako … samo Apachejev modul dela super, s PHP pa tudi nebi smelo biti težav glede na to da hostingi prav lepo furajo FastCGI PHP, kadar ni uporabljen Apache.

No zdej smo imeli apache2 s MPM prefork in mod_php … najprej potrebujemo tole:

apt-get install apache2-mpm-worker libapache2-mod-fcgid

nato še omogočimo FastCGI če že ni … (pri meni je bil po restartu Apacheja)

a2enmod fcgid

inštaliramo še module itd. če tega še nimamo (jaz že imam, ker sem prej laufal php na MPM prefork)

apt-get install php5-cgi php5-curl php5-gd php5-ldap php5-mysql php5-mysqli php5-sqlite php5-xsl

ter na koncu še povemo apacheju kaj naj dela s php datotekami …

<Directory /var/www>
AddHandler fcgid-script .php
FCGIWrapper /usr/lib/cgi-bin/php5 .php
</Directory>

kar pa zna biti ZELO tečno … če imamo kup virtualhostov … pa pri vsakem dodajati … lahko pa tudi:

<Directory *>
AddHandler fcgid-script .php
FCGIWrapper /usr/lib/cgi-bin/php5 .php
</Directory>

in je to to Smile . Manjkajo še samo nastavitve za MPM worker, tiste za MPM prefork pa moremo zbrisati …

# MPM – Worker
StartServers 2
MaxClients 150
MinSpareThreads 25
MaxSpareThreads 75
ThreadsPerChild 25
MaxRequestsPerChild 0

tele so od tukaj, zato priredite za svojo konfiguracijo.

na koncu pa še restartamo Apacheja …

/etc/init.d/apache2 restart

Wink

Pa še ena malenkost, ki pride z FastCGI/PHP, ini direkotiv nemorete več nastavljati preko htaccess datotek ali znotraj , tako da recimo to več tam nebo delovalo:

php_value default_charset windows-1250

lahko pa to uredite preko php datotek, ali pa custom php.ini Smile .

Še linki, kaj sem študiral zadnje 2 dni .. (samo najnujnejše, drugače bi bilo par strani linkov Evil )
http://ivan.gudangbaca.com/installing_apache2_and_php5_using_mod_fcgid
http://my-experiments-with-it.blogspot.com/2006/05/how-does-preforkc-work.html
http://doughboy.wordpress.com/2008/02/13/apache-worker-and-php/
http://neosmart.net/…-php-isnt-thread-safe-yet/

Apache in SSL #2

Wednesday, April 2nd, 2008

Tako SSL certifikat imamo, sedaj pa še konfiguriramo apache …

# SSL
SSLEngine on
SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL
SSLCertificateFile /var/ssl/secure.cert
SSLCertificateKeyFile /var/ssl/secure.key

#. ..

<Directory “/var/www/haha/”>
SSLOptions +StrictRequire
SSLRequireSSL
SSLRequire %{HTTP_HOST} eq “domena.org” # SSL dovolimo samo na določeni (pod)domeni
ErrorDocument 403 http://www.hekni-me.biz/
# ali . ..
ErrorDocument 403 ‘Haha, n00b si !’

# . ..

In to je to Grin .

Apache in SSL

Wednesday, April 2nd, 2008

Prva stvar, ki jo potrebujemo je SSL certifikat …

http://www.apache-ssl.org/#FAQ

Step one – create the key and request: openssl req -new > new.cert.csr

Step two – remove the passphrase from the key (optional):

openssl rsa -in privkey.pem -out new.cert.key

Step three – convert request into signed cert:

openssl x509 -in new.cert.csr -out new.cert.cert -req -signkey new.cert.key -days 365

The Apache-SSL directives that you need to use the resulting cert are:

SSLCertificateFile /path/to/certs/new.cert.cert
SSLCertificateKeyFile /path/to/certs/new.cert.key

lahko pred tem odskakljate v mapo, kjer želite imeti certifikat, drugače pa se bo pojavil v /root/… privzeto.

Apache2 tweaking

Monday, March 31st, 2008

No pa še malo apacheja Smile .

Najprej Maxclients


MaxClients can be calculated by the following formula:

MaxClients = (TotalRam – MSRPC) / (MaxProcessSize – MSRPC)

TotalRam – estimated total RAM available to the Apache
MSRPC – Minimal Shared RAM per Child

še nekaj o tem …

Izklopimo .htaccess datotek (da jih apache nebo odpiral vsakič ko kdo prileti na stran)


<Directory />
AllowOverride all
</Directory>

Potem pa še preverjanje … eno od možnih … koliko rama popapca apache


ps -v -U www-data

ali pa top pa user www-data, httpd ali kar pač imate Smile.

Edit: pa jaz imam povprečno 1.8% (9,2MB) Grin rama na proces, največ pa sem zasledil 2.7% (18,8MB) Evil .

Apache2 – Logging

Tuesday, March 25th, 2008

Najprej vprašanje, zakaj sploh beležiti aktivnosti na vašem strežniku ? Če izklopite logiranje boste dobili na hitrosti, pa tudi log file tja do par GB lahko odmislite. Po drugi strani pa neboste vedeli kaj se je dogajalo na strežniku, sicer lahko imate druga logiranja ampak vseeno …

Najprej poglejmo v kakšnem formatu Apache shranjuje loge … privzeto:
LogFormat "%h %l %u %t \"%r\" %>s %b" common

<programlisting><![CDATA[LogFormat "<logitem><host>%h</host>
<ident>%l</ident>
<user>%u</user>
<datetime>%t</datetime>
<url>%r</url>
<statuscode>%>s</statuscode>
<bytes>%b</bytes>\n</logitem>" commonxml

tole sem med drugim zasledil med brskanjem po nekem članku, vendar pa je zadeva dokaj potratna se boste polnili loge z dolgimi ponavljajočimi se stringi, namesto katerih bi lahko uporabili mogoče samo eno črko. Ali pa tudi ne.

Naslednja stvar, ki jo moremo dodati je:
CustomLog logs/access_log common

po tem bomo imeli nove loge in seveda stare, če ste jih prej imeli, čeprav bi osebno priporočal da se logira samo enkrat.

Ločeno beležimo dostope samo do določenih datotek, v tem primeru beležimo samo za .html in .shtml datoteke.
SetEnvIf Request_URI "(\.html|\.shtml)$" html
CustomLog logs/access.log common env=html

ali pa NE beležimo slik:
SetEnvIf Request_URI "(\.gif|\.png|\.jpg)$" image
CustomLog logs/access.log common env=!image

samo določene direktorije:
SetEnvIf Request_URI "^/weather/" weather_dept
CustomLog /groups/weather/www-access_log common env=weather_dept

preusmeritve:
LogFormat "%301U" redirects
CustomLog logs/redirects.log redirects

Pa še seveda apache2 logs 2 mysql :

http://www.outoforder.cc/projects/apache/mod_log_sql/