12.31
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ć ;]


4 ResponsesLeave a comment ?
Jeśli wołać fastcgi przez spawn-fcgi, to lajt też może pracować z uprawnieniami zależnymi od konta.
Jak to pisalem nie wiedziałem jeszcze że to istnieje ;] Tylko wtedy jest troche wiecej roboty przy dodawaniu nowej strony w porównaniu do apache + mod_suexec + fastcgi.
Poza tym z tego co widzę spawn-fcgi nie obsługuje dynamicznego “ubijania” procesów a to czasami się przydaje (np. jakaś strona w firmowym intranecie która jest używana rzadko).
Już nie pamiętam za dobrze(a nie chce mi się wracać do eksperymentów z lajtem — nie mam potrzeby), ale wydaje mi się, że procesy timeoutują do momentu, kiedy zostają dwa: master i jeden worker. Póki nie uprawiasz masshostingu, to te dwa procesy na wirtualkę można przeżyć, przynajmniej swap się na coś przyda.
Propos tego w apachu (czy phpie, ciężko powiedzieć) trafiłem na buga w fcgi, jeżeli PHP forkowało procesy do obsługiwania żądań (czyli PHP_FCGI_CHILDREN=x) to czasami po restarcie apacha (ale rzadko, ciężkie do odtworzenia) childy phpa zostawały w systemie, niezabijalne, więc na razie nie ustawiam tej opcji tylko po prostu odpalam parę procesów PHPa.