Darmowy serwer internetowy
Nasz darmowy serwer WWW będzie oparty na tzw. LAMP czyli Linux, Apache, MySQL, PHP.
Postawienie darmowego serwera stron internetowych rozpoczniemy od zainstalowania Linux-a. Obecnie mamy do wyboru wiele dystrybucji, które pozwalają w relatywnie prosty sposób
uruchomienie takiego serwera WWW już podczas instalacji samego Linux-a. My jednak zrobimy to inaczej; zainstalujemy dowolną, stabilną dystrybucje Linux-a z podstawowymi pakietami
i następnie dokompilujemy sobie potrzebne nam elementy dla pracy serwera WWW - czyli pełna kontrola nad tym co mamy na serwerze.
Mimo, iż pisałem, że instalujemy dowolną dystrybucję, to oczywiście mogę polecić darmową wersję komercyjnego serwera Linux-owego czyli CentOS
- jest to dystrybucja bazująca na Red Hat Enterprise Server. W przypadku tej dystrybucji jest możliwość ściągnięcia specjalnej płytki dla instalacji serwera np.
CentOS 4.4 i386 Single ServerCD. Aktualna wersja to CentOS 5.2.
Uwaga: na pewno trzeba zainstalować gcc, aby można było kompilować źródła.
Gdy już mamy zainstalowanego Linux-a, możemy przystąpić do kompletowania najświeższych binariów naszego serwera:
Apache - serwer HTTP
MySQL - baza danych
PHP - język skryptowy
Dodatki:
zlib - biblioteki zlib
libpng - biblioteki png
libgd - biblioteki gd
pdflib - biblioteki pdf
Teraz możemy przystąpić do właściwej instalacji:
1. Instalacja MySQL
a) instalacja pakietów
rpm -ivh MySQL-server-5.0.37-0.i386.rpm
rpm -ivh MySQL-Max-5.0.37-0.i386.rpm
rpm -ivh MySQL-client-5.0.37-0.i386.rpm
rpm -ivh MySQL-devel-5.0.37-1.i386.rpm
b) konfiguracja podstawowa
- ustawienie hasła na root'a:
mysqladmin -u root password 'nowe-hasło'
- usunięcie anonimowego użytkownika:
mysql -u root -p
use mysql
delete from user where User='';
quit
mysqladmin -u root -p reload
2. Instalacja dodatków
a) zlib 1.2.3
- kopiujemy zlib-1.2.3.tar.gz do /usr/src
- tar -zxvf zlib-1.2.3.tar.gz
- cd zlib-1.2.3
- ./configure --shared
- make
- make install
b) libpng 1.2.16
- kopiujemy libpng-1.2.16.tar.gz do /usr/src
- tar -zxvf libpng-1.2.16.tar.gz
- cd libpng-1.2.16/scripts
- cp makefile.linux ../makefile
- cd ..
- make test
- make install
c) gd 2.0.34
- kopiujemy gd-2.0.34.tar.gz do /usr/src
- tar -zxvf gd-2.0.34.tar.gz
- cd gd-2.0.34
- ./configure
- make
- make install
d) PDFlib-6.0.2-Linux
- kopiujemy PDFlib-6.0.2-Linux.tar.gz do /usr/src
- tar -zxvf PDFlib-6.0.2-Linux.tar.gz
- cp PDFlib-6.0.2-Linux/bind/php5/php-503/libpdf_php.so /usr/local/lib/
- rm -rf /usr/src/PDFlib-6.0.2-Linux
e) freetype-2.3.2.tar.gz
- kopiujemy freetype-2.3.2.tar.gz do /usr/src
- tar -zxvf freetype-2.3.2.tar.gz
- cd freetype-2.3.2
- ./configure
- make
- make install
f) jpegsrc.v6b.tar.gz
- kopiujemy jpegsrc.v6b.tar.gz do /usr/src
- tar -zxvf jpegsrc.v6b.tar.gz
- cd jpeg-6b
- ./configure
- make
- make install
- ldconfig
3. Instalacja Apache 2.2.4
- kopiujemy httpd-2.2.4.tar.gz do /usr/src
- tar -zxvf httpd-2.2.4.tar.gz
- cd httpd-2.2.4
- ./configure --prefix=/usr/local/apache --enable-ssl --enable-so --enable-expires --enable-headers --enable-mime-magic --enable-rewrite --enable-unique_id --enable-speling
- make
- make install
4. Instalacja PHP 5.2.1
- kopiujemy php-5.2.1.tar.gz do /usr/src
- tar -zxvf php-5.2.1.tar.gz
- cd php-5.2.1
- ./configure --with-mysql --with-apxs2=/usr/local/apache/bin/apxs --with-zlib --with-gd --enable-gd --with-pdflib-dir=/usr/local/lib --with-tiff-dir=/usr/local/lib --with-jpeg --with-jpeg-dir=/usr/lib --with-png-dir=/usr/local/lib --with-zlib-dir --with-openssl --enable-ftp --disable-ipv6 --without-pgsql --with-gettext --enable-track-vars --enable-trans-id --enable-trans-sid --with-bz2 --with-freetype-dir --with-png --with-png-dir=/usr/local/iunclude/ --enable-memory-limit --enable-safe-mode --with-mime-magic
- make
- make install
- cp php.ini-dist /usr/local/lib/php.ini (środowiska programistyczne) lub cp php.ini-recommended /usr/local/lib/php.ini (środowiska produkcyjne)
Możliwe błędy podczas kompilacji PHP:
a) brak pakietów:
- flex: instalacja ze źródła, bądź np. yum install flex
- bison: instalacja ze źródła, bądź np. yum install bison
b) brak plików conf lub directory (np. configure: error: xml2-config not found. Please check your libxml2 installation.):
- libxml2: doinstalować pakiet libxml2-devel
- bzip2: doinstalować pakiet bzip2-devel
c) błąd typu: checking whether the C++ compiler (gcc ) works... no
- doinstalować kompiler: gcc-c++ (źródła lub yum)
5. Konfiguracja i uruchomienie Apache
a) /usr/local/apache/conf/httpd.conf:
- dopisanie/odkometowanie: AddType application/x-httpd-php .php
b) odpalenie/restart Apache:
- ./usr/local/apache/bin/apachectl -k start
W następnych odcinkach, jak starczy czasu, będzie o:
generowaniu certyfikatów - czyli jak skonfigurować https
server hardening - czyli o zwiększeniu bezpieczeństwa servera LAMP