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