Linuxový webserver - kompletní popis instalace
V tomto článku detailně popíši, jak nainstalovat nejzákladnější součásti webového serveru, jakožto HTTP server, modul PHP a databázi MySQL.
Popíši konkrétní instalaci těch nejnovějších produktů:
HTTP server Apache 2.0.52
PHP 5.0.3
MySQL 4.1.8
Instalace byla ověřena na Fedora Core 2, Fedora Core 3, SUSE Linux 9.1, ale v principu by měla být podobná na každém linuxu.
PHP 5.0.3 bude kompilováno s podporou bz2, cpdflib, ctype, curllib, dom, ftp, gd2, freetype2, gettext, libiconv, libxml, mbstring, mysql, openssl, pcre, posix, session, SimpleXML, SPL, SQLite, tokenizer, xml a zlib.
Apache 2.0.52 bude kompilován s podporou mod_access, mod_auth, mod_auth_digest, mod_deflate, mod_env, mod_headers, mod_setenvif, mod_ssl, mod_mime, mod_imap, mod_alias and mod_rewrite.
Kompilace (Open) SSL
Potřebná OpenSSL knihovna: openssl-0.9.7d.tar.gz
su cd /usr/local/src tar -xzf openssl-0.9.7d.tar.gz cd openssl-0.9.7d ./config --prefix=/usr/local make make install
Nyní je nutné vytvořit privátní klíč a umístit jej do /home/ssl:
mkdir /home/ssl
cd /home/ssl
/usr/local/bin/openssl genrsa -des3 -rand
some_big_file_1:some_big_file_2
-out localhost.key 1024
Dále vytvoříme privátní klíč bez pass-phrase, je to sice méně bezpečné, ale umožní nám to bootovat server bez toho, aniž bychom museli pokaždé psát pass-phrase:
/usr/locl/bin/openssl rsa -in localhost.key
-out localhost.key.unsecure
Také vytvoříme "request file" pro certifikační autoritu k obdržení důvěryhodného SSL certifikátu (pokud je požadován) s názvem localhost.key.csr:
/usr/local/bin/openssl req -new
-key localhost.key
-out localhost.key.csr
Mezitím, než se vyřeší všechny záležitosti s certifikační autoritou vytvoříme dočasný 30ti denní certifikát (self-signed, tj. podepíšeme si jej sami):
/usr/local/bin/openssl x509 -req -days 30
-in localhost.key.csr
-signkey localhost.key
-out localhost.cert
chmod 400 localhost.cert
chmod 400 localhost.key
chmod 400 localhost.key.unsecure
Kompilace MySQL 4.1.8
Je potřeba: mysql-4.1.8.tar.gz, libtermcap-2.0.8-35.i386.rpm, libtermcap-devel-2.0.8-35.i386.rpm
MySQL 4.1.8 má úplně jiný komunikační protokol a asociované PHP mysqli funkce. Pokud Vaše skripty nebyly napsané pro MySQL 4.1, měli byste raději nainstalovat MySQL 4.0.22, abyste zůstali 100% kompatibilní. Parametry pro kompilaci MySQL 4.0.22 budou stejné, pouze odstraňte jeden parametr obsahující "mysqli" z PHP ./configure parametrů (uvedeno níže). Nicméně, pro programování nových aplikací se doporučuje MySQL 4.1.8.
cd /usr/local/src
tar -xzf mysql-4.1.8.tar.gz
cd mysql-4.1.8
./configure --prefix=/usr/local/mysql
--unix-sock-path=/tmp/mysql.sock
--with-charset=utf-8
make
make install
groupadd mysql
useradd -g mysql mysql
cp support-files/my-medium.cnf /etc/my.cnf
cd /usr/local/mysql
bin/mysql_install_db --user=mysql
chown -R root .
chown -R mysql var
chgrp -R mysql .
Pokud by byl s čímkoliv problém, řešení většinou najdete v
/usr/local/mysql/var/<hostname>.err
Kompilace Apache 2.0.52
Je potřeba: httpd-2.0.52.tar.gz, libxml2-devel-2.6.7-28.i586.rpm, zlib-devel-1.2.1-70.i586.rpm, readline-devel-4.3-306.i586.rpm
cd /usr/local/src
tar -zxvf httpd-2.0.52.tar.gz
cd httpd-2.0.52
./configure --prefix=/usr/local/apache2
--enable-so
--enable-auth-digest
--enable-rewrite
--enable-setenvif
--enable-mime
--enable-deflate
--enable-ssl
--with-ssl=/usr/local
--enable-headers
make
make install
Dále upravíme konfigurační soubor /usr/local/apache2/conf/httpd.conf. Budeme předpokládat, že Váš web root je /home/www:
DocumentRoot "/home/www"
Přidáme podporu pro PHP 5 (jako modul):
LoadModule php5_module modules/libphp5.so DirectoryIndex index.html index.htm index.php AddType application/x-httpd-php .php AddType application/x-httpd-php-source .phps
Dále povolíme/vytvoříme základní mod_rewrite pravidla:
<Directory "/home/www">
Options Indexes Includes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
Allow from all
</Directory>
Odepřeme klientům přístup k .htaccess:
<Files ~ "^.ht">
Order allow,deny
Deny from all
</Files>
Dále, pokud používáme SSL (na standardním portu 443), musíme upravit soubor /usr/local/apache2/conf/ssl.conf následovně (stačí přepsat původní obsah souboru následujícím):
Listen 443
<VirtualHost _default_:443>
ServerName localhost
SSLEngine on
SSLCertificateFile /home/ssl/localhost.cert
SSLCertificateKeyFile /home/ssl/localhost.key.unsecure
</VirtualHost>
Kompilace PHP 5.0.3:
Je potřeba: php-5.0.3.tar.bz2, curl-7.12.1.tar.gz, libiconv-1.9.1.tar.gz, jpegsrc.v6b.tar.gz, libpng-1.2.7.tar.gz, clibpdf202r1.tar.gz, freetype-2.1.9.tar.bz2
Kompilace libiconv:
cd /usr/local/src
tar -xzf libiconv-1.9.1.tar.gz
cd libiconv-1.9.1
./configure --prefix=/usr/local
make
make install
Kompilace libjpeg:
cd /usr/local/src
tar -xzf jpegsrc.v6b.tar.gz
cd jpeg-6b
./configure --prefix=/usr/local
make
make install
make install-lib
Kompilace libpng:
cd /usr/local/src
tar -xzf libpng-1.2.7.tar.gz
cd libpng-1.2.7
cp scripts/makefile.linux makefile
make
make install
Kompilace cpdflib:
cd /usr/local/src
tar -xzf clibpdf202r1.tar.gz
cd ClibPDF/source
cp Makefile.Linux makefile
make
make install
Kompilace curl:
cd /usr/local/src
tar -xzf curl-7.12.1.tar.gz
cd curl-7.12.1
./configure --prefix=/usr/local
make
make install
Kompilace freetype 2:
cd /usr/local/src
tar -xjf freetype-2.1.9.tar.bz2
cd freetype-2.1.9
./configure --prefix=/usr/local
make
make install
Nyní už zkompilujeme PHP, s podporou MySQL, iconv, curl, zlib, modules:
cd /usr/local/src
tar -xjf php-5.0.3.tar.bz2
cd php-5.0.3
./configure --with-apxs2=/usr/local/apache2/bin/apxs
--with-mysql=/usr/local/mysql
--with-mysqli=/usr/local/mysql/bin/mysql_config
--with-mysql-sock=/tmp/mysql.sock
--with-sqlite
--enable-sqlite-utf8
--with-zlib
--with-zlib-dir
--with-bz2
--with-gd
--enable-gd
--enable-gd-native-ttf
--with-jpeg-dir=/usr/local
--with-png-dir=/usr/local
--with-ttf
--with-freetype-dir=/usr/local
--with-iconv=/usr/local
--with-curl=/usr/local
--enable-track-vars
--with-gettext
--with-config-file-path=/usr/local/apache2/conf
--enable-trans-id
--enable-ftp
--with-cpdflib=/usr/local
--enable-mbstring
--with-openssl=/usr/local
make
make install
cp php.ini-dist /usr/local/apache2/conf/php.ini
Dále upravíme konfigurační soubor /usr/local/apache2/conf/php.ini a také zajistíme základní PHP bezpečnost:
mysql.default_socket = /tmp/mysql.sock short_open_tag = Off register_globals = Off allow_url_fopen = Off
Vytvoření skriptu "web" pro automatický start webového serveru po nabootování (skript je pak nutné umístit tam, kde se bude při startu systému spouštět - na Fedora Core to je např.: /etc/init.d/):
/etc/init.d/web: #!/bin/sh case "$1" in start) /usr/local/apache2/bin/apachectl start /usr/local/mysql/share/mysql/mysql.server start ;; stop) /usr/local/apache2/bin/apachectl stop /usr/local/mysql/share/mysql/mysql.server stop ;; restart) /usr/local/apache2/bin/apachectl restart /usr/local/mysql/share/mysql/mysql.server restart ;; esac
Dále je nutné, aby měl soubor skriptu právo na spuštění:
chmod u+x /etc/init.d/web
Nějakou konfigurační utilitou (system-config-services, YaST) nastavte, aby se service "web" spoustela v run levelu 3 a 5.
Tak, a teď ještě nainstalujeme phpMyAdmin do /home/www/db , abychom mohli pohodlně spravovat MySQL databázi (stačí pak v browseru napsat http://localhost/db/).
Instalace phpMyAdmin
Je potřeba: phpMyAdmin-2.6.0-pl3.tar.bz2
mkdir /home/www cd /home/www tar -xjf /usr/local/src/phpMyAdmin-2.6.0-pl3.tar.bz2 ln -s phpMyAdmin-2.6.0-pl3 db
Konfigurace phpMyAdmin (soubor /home/www/db/config.inc.php):
// URL to phpMyAdmin $cfg['PmaAbsoluteUri']='http://localhost/db/'; //connection settings $cfg['Servers'][$i]['connect_type']='socket'; $cfg['Servers'][$i]['extension']='mysqli'; // user na password $cfg['Servers'][$i]['auth_type']='config'; $cfg['Servers'][$i]['user']='root'; $cfg['Servers'][$i]['password']=''; // PMA settings $cfg['Servers'][$i]['pmadb']='phpmyadmin'; $cfg['Servers'][$i]['bookmarktable']='pma_bookmark'; $cfg['Servers'][$i]['relation']='pma_relation'; $cfg['Servers'][$i]['table_info']='pma_table_info'; $cfg['Servers'][$i]['table_coords']='pma_table_coords'; $cfg['Servers'][$i]['pdf_pages']='pma_pdf_pages'; $cfg['Servers'][$i]['column_info']='pma_column_info'; $cfg['Servers'][$i]['history']='pma_history'; $cfg['Servers'][$i]['verbose_check']=FALSE; // persistent connections $cfg['PersistentConnections']=TRUE; // do not display logo on the left $cfg['LeftDisplayLogo']=FALSE; // show MySQL and PHP info $cfg['ShowMysqlInfo']=TRUE; $cfg['ShowMysqlVars']=TRUE; $cfg['ShowPhpInfo']=TRUE; // show BLOBs $cfg['ShowBlob']=TRUE
Jako poslední krok, použijte phpMyAdmin SQL window ke spuštění skriptu /home/www/db/scripts/create_tables_mysql_4_1_2+.sql aby vytvořil PMA tabulky (požaduje phpMyAdmin).
