LNMP – Część 1: Wstęp i repozytoria

Jakiś czas temu na łamach bloga pojawiła się seria wpisów okoko w której poruszał on niektóre aspekty sieci czy serwerów www. Na podstawie swoich doświadczeń miałem kilka zastrzeżeń w artykule dotyczącym nginx, zapowiedziałem wtedy swój artykuł. Czas leci do przodu, a wpisu cały czas nie ma. Nie będę oszukiwał, po prostu nie było. Pozwoliło mi to jednak na przemyślenie sprawy i ostatecznie zmianę koncepcji. Postanowiłem, że zamiast jednego wpisu pojawi się cała seria dotycząc konfiguracji LNMP – od Linux + Nginx + MySQL + PHP. Sądzę, że taka seria pozwoli innym zapoznać się w tym bardziej przystępny sposób, liczę też na to, że dzięki waszym komentarzom sam dowiem się czegoś nowego ;) Z góry zaznaczam, że może być nieregularnie, bo równie bywa z czasem.

Dlaczego tak, a nie inaczej?

Zacznijmy może od dosyć ważnej kwestii – dlaczego akurat taka konfiguracja? Przecież ten kto zna mnie jako stałego użytkownika serwisu wie, że jestem raczej zwolennikiem systemu Windows, co potwierdza w każdym komentarzu nawet useragent. Sprawa jest dosyć prosta. Jest to rozwiązanie nie tylko zupełnie darmowe od strony oprogramowania, ale również bardzo popularne, sprawdzone i szybkie. Jeszcze jakiś czas temu byłem zwolennikiem paneli hostingowych takich jak cPanel czy Direct Admin i nie wyobrażałem sobie samodzielnego ustawiania takich fundamentów serwisów www. Sytuacja odwróciła się, gdy w końcu bardziej wysiliłem się aby to poznać. Wtedy okazało się, że to rozwiązanie o wiele bardziej elastyczne, bo nie jesteśmy skazani na to, co oferuje hosting współdzielony. Poza tym, jest również tańsze, w szczególności gdy znajdziemy dobrą ofertę np. serwera VPS a mamy problem z obciążeniem na hostingu współdzielonym.

Dlaczego nie VPS w wersji managed? Miałem do czynienia z trzema takimi serwerami w trzech różnych firmach i nie polecam tego nikomu. Wiecie co robią firmy za te dodatkowe 50-70zł miesięcznie? Po prostu nic… razem z najczęściej wybieranym Direct Adminem „wszystko wrzuca się samo”, na żadnym nie widziałem żadnych większych zmian. O np. zmianie domyślnego portu można zupełnie zapomnieć. Czy sam mogę coś polecić? Tak, polecam serwery w firmie Ultimahost – link zawiera mojego reflinka, o czym tutaj świadomie informuję aby nie było niedomówień. Korzystam z usług tej firmy od prawie dwóch lat i wypowiadać się mogę jedynie w superlatywach, pomimo że po spojrzeniu na ceny i pakiety można stwierdzić, że to overselling. Tego po prostu nie widać… śmiga aż miło.

Wróćmy do samej technologii. Postawiłem na Debiana, jako dystrybucję bardzo stabilną, sukcesywnie się rozwijającą i posiadającą ogromną bazę pakietów. Jest to dystrybucja tak popularna, że są chyba niewielkie szanse na to, że nie znajdziemy do niej pakietów tego czego szukamy. Nginx za to, że jest bardzo szybki, ma czytelną dokumentację i konfigurację. Jego możliwości są natomiast naprawdę imponujące. Wspomniałem o MySQL, ale tak naprawdę użyję MariaDB. Przeszedł na ten serwer bazodanowy jakiś czas temu i jestem zadowolony. Rozwija się on bardziej dynamicznie, nie boi się informować o lukach bezpieczeństwa i szybko je łatać. Poza tym, zdobywa coraz większe wsparcie, chociaż w dużej mierze jest to negatywna polityka Oracle. No i na koniec PHP – po prostu swoisty standard w tworzeniu stron www. Większość popularnych witryn czy systemów zarządzania treścią działa i jest tworzonych w PHP. Wychodzę tu z założenia, że użytkownik wie co to sudo, lub chociażby loguje się przez SSH na konto roota (tym zajmiemy się jeszcze w dalszej części cyklu).

Repozytoria

Tyle tytułem teoretycznego wstępu. Przejdźmy więc do czynów, a zaczniemy od dodania repozytoriów. Dlaczego tak? Ponieważ nie widzę sensu samodzielnego kompilowania oprogramowania. Może dałoby nam to jakieś minimalne różnice w wydajności. Może będziemy w stanie stworzyć dokładnie to co chcemy ale… ma to też negatywne strony. Przy aktualizacji musimy znowu wszystko kompilować, poza tym sam poradnik ma być przede wszystkim czytelny. Z góry uprzedzam, że postanowiłem użyć repozytoriów Dotdeb – dlatego, że znajduje się w nim oprogramowanie aktualne i dobrze dopasowane. Najpierw jednak wpisy od Debiana, zakładając, że używamy wersji Wheeze. Tak naprawdę jest to „na wszelki wypadek”, bo odpowiednie repozytoria powinny być już dodane. Edytujemy plik /etc/apt/sources.list i dopisujemy:

deb http://ftp.pl.debian.org/debian/ wheezy main non-free contrib
deb-src http://ftp.pl.debian.org/debian/ wheezy main non-free contrib
deb http://security.debian.org/ wheezy/updates main contrib non-free
deb-src http://security.debian.org/ wheezy/updates main contrib non-free
deb http://ftp.pl.debian.org/debian/ wheezy-updates main non-free contrib
deb-src http://ftp.pl.debian.org/debian/ wheezy-updates main non-free contrib

Następnie wspomniany Dotdeb, dopisujemy więc dalszy ciąg:

deb http://packages.dotdeb.org wheezy all
deb-src http://packages.dotdeb.org wheezy all

Jeżeli mamy zamiar używać PHP 5.5 (póki co nie jest stabilne i nie jest to zalecane na serwerach produkcyjnych!) dopisujemy również:

deb http://packages.dotdeb.org wheezy-php55 all
deb-src http://packages.dotdeb.org wheezy-php55 all

Więcej na ten temat będzie we wpisie poświęconym PHP.
W tym wypadku musimy dodać odpowiedni klucz, zrobimy to wydając polecenia:

wget http://www.dotdeb.org/dotdeb.gpg
cat dotdeb.gpg | sudo apt-key add -

Na koniec zostały nam repozytoria MariaDB, dodajemy więc:

deb http://mirror.netcologne.de/mariadb/repo/5.5/debian wheezy main
deb-src http://mirror.netcologne.de/mariadb/repo/5.5/debian wheezy main

W tym wypadku również musimy dodać klucze, co zrobimy poleceniem:

sudo apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 0xcbcb082a1bb943db

To już wszystko na dzisiaj. W następnym odcinku zajmiemy się serwerem www, nginxem.