A więc stawiasz serwer www w firmie. Potrzebujesz PHPa do jakiegoś crma/strony firmowej/bloga/czegokolwiek i zdecydowałeś się postawić “standard” LAMP (Linux, Apache, MySQL, PHP).

sudo aptitude install apache2 mysql-server libapache2-mod-php5

Zrobiles vhosta, untarowales appa, dales mu baze i oddales appa userom. Cos sie nie chcialo zapisywac wiec pare chmod 666 albo chown -R apache:apache i wszystko dziala ok.

Potem przyszedł 2, 3 10 vhost i zaczely sie problemy. Gdy pliki appa sa zmieniane tylko przez usera abo tylko przez apacha nie ma problemu, wystarczy ustawic (czasami troche pokrecone) uprawnienia i wszystko jest ok. Gorzej gdy user chce edytowac plik uploadowany przez PHPa,a le tu tez mozna sobie poradzic, albo po prostu odpalac co jakis czas dajacy userowi ownera tych plikow.  Ale jednak coś nam nie pasuje…. jak w appie/phpie  bedzie jakis paskudny bug to bad guy bedzie mial dostep do wszystkiego co user apache ma.

Ale przeciez to nie root. No i ? Wystarczajace uprawnienia zeby wyciagnac hasla do bazy z plików php, pozmieniac je, DROP DATABASE…. ofc sa backupy itd ale jednak fajnie by bylo zeby php uruchamial sie na userku a nie jako user apache. Wiec co by tu zrobić…

Apache + mod_php

Zalety:szybkie, niezbyt wielkie zużycie pamieci, łatwe do ustawienia
Wady: wszystko pod jednym userkiem

Apache + mod_suphp

Zalety:łatwość w konfiguracji, rozdzielenie appów różnych userów
Wady: każde żądanie wywołuje proces phpa wiec wolne(zwłaszcza przy małuch plikach), niemożność użycia akceleratorów phpa takich jak XCache

Apache + mod_suexec + mod_fastcgi

Zalety: szybki, rozdzielenie userów, akcerelatory PHPa działają
Wady: Troche roboty przy konfiguracji

Lighttpd + fastcgi

Zalety: szybki, serwer www żre mniej pamięci niż apache
Wady: Wszystko pod jednym userkiem

Czyli całkiem sporo możliwości do wyboru…. Jeżeli hostujesz jednego appa to właściwie mod_php lub lighttpd + FastCGI wydajie sie najbardziej trafnym wyborem. Jeżeli wiecej, no więc… z tym już jest troche więcej roboty ;] Postaram się w najbliższym czasie opisać jak to zrobić ;]