Internet Info, s.r.o. Lupa Měšec Podnikatel Root Zdroják DigiZone Slunečnice Vitalia TopDrive KupDnes Navrcholu NovýTarif Dobrý web Weblogy Woko Jagg Computer.cz SK: MojeLinky

Hlavní navigace

Kompilace Apache, PHP a MySQL na Linuxu ze zdroje

Dnes, kdy téměř každá distribuce Linuxu obsahuje i binární formu Apache, PHP a MySQL, se může zdát, že je zbytečné se zabývat tím, jak uvedené celky zkompilovat a konfigurovat. Pokud ovšem chcete systém přesně podle vašich potřeb, nebo máte požadavky na specifické moduly (curl, iconv, ssl), potom v řadě případů binární forma (rpm, deb) vůbec neexistuje a do kompilace se pustit musíte.

Tweetni to Twitter Jaggni to! Jagg Del.icio.us Delicious

Ke kompilaci ze zdroje je vhodné přistoupit i tehdy, pokud chcete výkon systému optimalizovat pro váš hardware.

Předpokladem ke kompilaci je funkční gcc, gcc-c++ a další základní programy, které jsou popsány v samostatném článku (většina distribucí je obsahuje již v základu).

Kompilaci můžete přízpůsobit řadou parametrů předaných gcc, a celý systém tak optimalizovat pro váš hardware. Pro Intel P-IV je vhodná například tato sestava parametrů:

export CFLAGS="-march=pentium4 -mfpmath=sse -msse2 -O2 -pipe -s -fomit-frame-pointer" 

Popis veškerých parametrů pro gcc vhodných pro váš systém naleznete na gcc.gnu.org.

Dále uvedené skripty byly otestovány na SuSE 9.1 s kernelem 2.6.5 a gcc 3.3.3, budou ale funkční na libovolné distribuci (pouze s nutností použití jiných vhodných rpm či deb balíčků).

Základní popis systému

PHP 5.0.1 bude kompilováno s podporou: bz2, cpdf, ctype, curl, dom, ftp, gd2, freetype2, gettext, iconv, libxml, mbstring, mysql, openssl, pcre, posix, session, SimpleXML, SPL, SQLite, tokenizer, xml, xsl, a zlib.

Apache 2.0.51 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 a mod_rewrite.

Pokud není uvedeno jinak, předpokládám, že veškeré zdrojové soubory jsou umístěny v adresáři  /usr/local/src.

Kompilace (open) SSL

Kompilace OpenSSL je následovná:

cd /usr/local/src
tar -zxvf openssl-0.9.7d.tar.gz
cd openssl-0.9.7d
./config --prefix=/usr/local
make
make install

Vygenerování privátního klíče do adresáře /home/ssl:

mkdir /home/ssl
cd /home/ssl
/usr/local/bin/openssl genrsa -des3 -rand \
  nějaký_velký_soubor_1 : \
  nějaký_velký_soubor_2 : \
  nějaký_velký_soubor_3 \
  -out localhost.key 1024

Následně si vygenerujeme privátní klíč bez pass-phrase, je to sice méně bezpečné, ale zase nás to zbaví povinnosti zadávat pass-phrase při každém bootupu serveru:

/usr/local/bin/openssl rsa \
  -in localhost.key \
  -out localhost.key.unsecure

A rovněž vytvoříme požadavek na certifikační autoritu ( localhost.key.csr), která náš klíč autorizuje (pokud nemáme klíč jen na lokální testování):

/usr/local/bin/openssl req -new \
  -key localhost.key \
  -out localhost.key.csr

Mezitím, co čekáme na certifikační autoritu, si můžeme si vytvořit pro svoje testování vlastní, provizorní podpis certifikátu, v tomto případě s platností 30 dní:

/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 Apache 2.0.51 web serveru

Řada dnešních webhostingů stále používá Apache 1.3.x, nicméně doba problémů a nekompatibilit Apache 2.0 již, zdá se, pominula, proto je v tomto příkladu použit Apache 2.0.

Apache 2.0 bude zkompilován s podporou pro mod_ssl, mod_deflate, mod_rewrite, a pochopitelně mod_so.

Kompilace je pak následovná:

cd /usr/local/src
tar -zxvf httpd-2.0.51.tar.gz
cd httpd-2.0.51
./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

Rovněž je nutné modifikovat (doplnit) konfigurační soubor Apache /usr/local/apache2/conf/httpd.conf (tento příklad předpokládá, že root web serveru je v  /home/www):

DocumentRoot "/home/www"

Doplnit PHP 5, které bude instalováno jako modul Apache 2 serveru:

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

A doplníme rovněž základní pravidla pro mod_rewrite a znemožnění klientům přistupovat k souboru  .htaccess:

<Directory "/home/www">
 Options Indexes Includes FollowSymLinks MultiViews
 AllowOverride All
 Order allow,deny
 Allow from all
</Directory>
<Files ~ "^.ht">
   Order allow,deny
   Deny from all
</Files>

Pro použití SSL (na standardním portu 443) změníme soubor /usr/local/apache2/conf/ssl.conf celý na:

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.1

Pro kompilaci PHP budeme potřebovat následující zdroje:

Nejdříve zkompilujeme pomocné knihovny, začneme třeba libiconv:

cd /usr/local/src
tar -zxvf 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 -zxvf jpegsrc.v6b.tar.gz
cd jpeg-6b
./configure --prefix=/usr/local
make
make install

Kompilace libpng:

cd /usr/local/src
tar -zxvf 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 -zxvf clibpdf110-7e.tar.gz
cd ClibPDF/source
cp Makefile.Linux makefile
make
make install

Kompilace CURL:

cd /usr/local/src
tar -zxvf 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 -jxvf freetype-2.1.9.tar.bz2
cd freetype-2.1.9
./configure --prefix=/usr/local
make
make install

Kompilace GD 2:

cd /usr/local/src
tar -zxvf gd-2.0.28.tar.gz
cd gd-2.0.28
./configure --prefix=/usr/local
make
make install

A následuje kompilace PHP 5.0.1 s podporou pro MySQL, iconv, curl, zlib, gd, mbstring, SSL a řadu dalších modulů, včetně podpory pro debugger (třeba pro ladění s Quanta Plus, což je skvělý editor pro prostředí KDE 3.3.0):

cd /usr/local/src
tar -jxvf php-5.0.1.tar.bz2
cd php-5.0.1
./configure \
  --with-apxs2=/usr/local/apache2/bin/apxs \
  --with-mysql  \
  --with-mysql-sock=/tmp/mysql.sock \
  --with-zlib \
  --with-zlib-dir \
  --with-bz2 \
  --with-gd=/usr/local \
  --enable-gd \
  --enable-gd-native-ttf \
  --with-jpeg-dir \
  --with-png-dir \
  --with-ttf \
  --with-freetype-dir \
  --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 \
  --enable-mbstring-encoding-translation \
  --with-openssl \
  --with-calendar \
  --with-xsl \
  --with-readline \
  --enable-debug=yes
make
make install
cp php.ini-dist /usr/local/apache2/conf/php.ini

Následně je nutné modifikovat soubor /usr/local/apache2/conf/php.ini, včetně základního zabezpečení:

mysql.default_socket = /tmp/mysql.sock
short_open_tag = Off
register_globals = Off
allow_url_fopen = Off

MySQL 4.0 databáze

MySQL databáze je použita ve verzi 4.0, postup pro verzi 4.1 by byl ovšem totožný.

Vlastní kompilace MySQL, včetně vytvoření skupiny a uživatele mysql:

cd /usr/local/src
tar -zxvf mysql-4.0.21.tar.gz
cd mysql-4.0.21
./configure --prefix=/usr/local/mysql
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 .
bin/mysqld_safe --user=mysql

Soubor /etc/my.cnf může být pro malou zátěž MySQL databáze konfigurován například takto:

[client]
port = 3306
socket = /tmp/mysql.sock
[mysqld]
port = 3306
socket = /tmp/mysql.sock
skip-locking
key_buffer = 16K
max_allowed_packet = 1M
table_cache = 4
sort_buffer_size = 64K
net_buffer_length = 2K
thread_stack = 64K
skip-networking
server-id = 1
[mysqldump]
quick
max_allowed_packet = 16M
[mysql]
no-auto-rehash
[isamchk]
key_buffer = 8M
sort_buffer_size = 8M
[myisamchk]
key_buffer = 8M
sort_buffer_size = 8M
[mysqlhotcopy]
interactive-timeout

phpMyAdmin

phpMyAdmin rozbalte pomocí příkazu tar -jxvf do /home/www. Za pomoci phpMyAdminu je možné spravovat MySQL databázi pomocí webového rozhraní.

Automatické spuštění Apache a MySQL

Zbývá poslední věc, a to zajistit automatické spouštění (a ukončení) Apache a MySQL při startu serveru. Zde vytvoříme (v případě SuSE 9.1, u jiných distribucí mohou být lokace odlišné) nový soubor /etc/init.d/web a nastavíme mu “executable”(spus­titelný) příznak:

#! /bin/sh
#
# /etc/init.d/web
#
# (c) Radek HULAN
# http://hulan.info/
#
### BEGIN INIT INFO
# Provides:       apache-mysql
# Default-Start:  5
# Default-Stop:   5
# Description:    Starts Apache2 and MySQL 4
### END INIT INFO

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
                ;;
esac

Potom v YaSTu, v sekci Systém, pod-sekce Editor úrovní běhu, povolíme službu web (pro runlevel 5). Tím se Apache a MySQL automaticky spustí při startu serveru a vypne při jeho shutdownu.

Otestování instalace

Vytvořte soubor /home/www/index.php s tímto obsahem:

Valentýna vyřešíte v našem butiku

Pánové, Valentýn je tu a tak jsme pro vás v našem butiku připravili balíček dámských kalhotek a trička za zvýhodněnou cenu 365 Kč.

       
<html>
<head><title>PHP Test</title></head>
<body>
<?php phpinfo(); ?>
</body>
</html>

Ve vašem browseru napište http://localhost/ a potom rovněž https://localhost/, zobrazí se vám řada informací o PHP. Pokud napíšete do URL http://localhost/phpMyAdmin-2.6.0-rc2/, budete moci spravovat vaši MySQL databázi.


Autor, Radek Hulán, má vlastní odborný blog na adrese http://hulan.in­fo/blog/.

Školení: Zavedení Google Apps do firmy

Cílem školení je provést účastníky jednotlivými kroky zavedení Google Apps na vlastní doménu a seznámit je se základy administrace, aby byli schopni Google Apps sami udržovat a rozvíjet dle potřeb. Účastníci se také dozví, jak používat základní služby v balíku Google Apps (Gmail, Kalendář, Dokumenty a Weby Google) a jaké jsou možnosti jejich využití ve firmě.

Podrobnější informace a přihláška  

Ohodnoťte jako ve škole:
Průměrná známka 2,94

Přehled názorů

ajajaj
d.f.h 29. 9. 2004 00:09
Nový
└ 
Re:
rADo 8. 10. 2004 15:32
Nový
sam mgr. radek hulan
mira 29. 9. 2004 00:12
Nový
└ 
Re: sam mgr. radek hulan
Ritchie 29. 9. 2004 00:24
Nový
 
└ 
Re: manual
rADo 29. 9. 2004 00:40
Nový
 
 
└ 
Re: manual
Wejn 29. 9. 2004 01:32
Nový
PHP 5?
Michal Kubeček 29. 9. 2004 00:40
Nový
├ 
Re: PHP 5?
rADo 29. 9. 2004 00:43
Nový
│
└ 
Re: PHP 5?
Michal Kubeček 29. 9. 2004 00:55
Nový
│
 
└ 
Re: PHP 5?
rADo 29. 9. 2004 01:14
Nový
│
 
 
└ 
Re: PHP 5?
Screamer 21. 2. 2005 20:58
Nový
└ 
Re: PHP 5?
Jakub 29. 9. 2004 16:00
Nový
 
└ 
Re: PHP 5?
Michal Kubeček 29. 9. 2004 22:10
Nový
Dotaz
Vladimír Stwora 29. 9. 2004 02:23
Nový
└ 
Re: Dotaz
limuhob 29. 9. 2004 08:42
Nový
 
└ 
Re: Dotaz
Tom Mraz 30. 9. 2004 13:20
Nový
me se to libilo
Zdeněk Štěpánek 29. 9. 2004 08:18
Nový
└ 
Re: me se to libilo
Ritchie 29. 9. 2004 09:16
Nový
 
├ 
Re: me se to libilo
rADo 29. 9. 2004 11:19
Nový
 
│
└ 
Re: me se to libilo
Jakub Moc 30. 9. 2004 11:33
Nový
 
└ 
Re: me se to libilo
Bubak 29. 9. 2004 19:18
Nový
Já chci binární balíčky
Yeti 29. 9. 2004 09:52
Nový
└ 
Re: Já chci binární balíčky
Yeti 29. 9. 2004 09:53
Nový
Pro začátečníky SUPER
Petr Dvořáček 29. 9. 2004 12:55
Nový
└ 
Re: Pro začátečníky SUPER
Michal Kubeček 29. 9. 2004 13:24
Nový
 
├ 
Re: Pro začátečníky SUPER
rADo 29. 9. 2004 13:52
Nový
 
│
└ 
Re: Pro začátečníky SUPER
tuba 29. 9. 2004 16:24
Nový
 
│
 
└ 
Re: článek k ničemu
jirka 29. 9. 2004 17:55
Nový
 
│
 
 
└ 
OT: aha
jirka 29. 9. 2004 18:09
Nový
 
├ 
Re: Pro začátečníky SUPER
Bubak 29. 9. 2004 19:46
Nový
 
│
└ 
Re: Pro začátečníky SUPER
Michal Kubeček 29. 9. 2004 22:17
Nový
 
│
 
└ 
Re: Pro začátečníky SUPER
Bubak 1. 10. 2004 21:38
Nový
 
│
 
 
└ 
Re: Pro začátečníky SUPER
Lo!Mm 7. 10. 2004 20:45
Nový
 
└ 
Re: Pro začátečníky SUPER
Bubak 29. 9. 2004 19:48
Nový
dve verze php?
wocis 29. 9. 2004 14:12
Nový
├ 
Re: dve verze php?
Pavel Riha 29. 9. 2004 18:23
Nový
│
└ 
Re: dve verze php?
jirka 29. 9. 2004 18:50
Nový
└ 
Re: dve verze php?
Ondra Kudlík 29. 9. 2004 18:56
Nový
Nulová informační hodnota?
Pavel Sýkora 29. 9. 2004 22:03
Nový
Dobrej článek...
jk 29. 9. 2004 22:22
Nový
Hulán
Vojta Hála 30. 9. 2004 01:23
Nový
technicka poznamka
Marek Pasovsky 30. 9. 2004 08:43
Nový
pan Hulan a jeho uspechy
chytrak 30. 9. 2004 11:24
Nový
dik
slesik 30. 9. 2004 12:09
Nový
└ 
Re: dik
rADo 30. 9. 2004 16:42
Nový
 
└ 
Re: dik
Jakub Moc 30. 9. 2004 18:38
Nový
 
 
└ 
Re: dik
rADo 30. 9. 2004 19:09
Nový
 
 
 
├ 
Re: dik
rADo 30. 9. 2004 19:13
Nový
 
 
 
└ 
Re: dik
Jakub Moc 30. 9. 2004 20:14
Nový
optimalizace
jkt 30. 9. 2004 17:34
Nový
phpinfo()
Martin Tůma 30. 9. 2004 21:57
Nový
RE:dik pro Radka
chytrak 1. 10. 2004 11:19
Nový
├ 
RE:dik pro Radka
muthafucka 1. 10. 2004 13:46
Nový
│
├ 
RE:dik pro Radka
chytrak 1. 10. 2004 15:19
Nový
│
└ 
RE:dik pro Radka
Vojta Hála 3. 10. 2004 14:53
Nový
│
 
└ 
RE:dik pro Radka
Jakub Moc 3. 10. 2004 21:57
Nový
└ 
RE:dik pro Radka
rADo 8. 10. 2004 12:21
Nový
Máte rádi rADovy rady?
llook 2. 10. 2004 19:30
Nový
ORDER BY Count()
Korči 2. 10. 2004 19:48
Nový
Chybka...(cpdflib)
Martin 18. 3. 2005 19:47
Nový
chyba při konfiguraci PHP
Joelp 4. 11. 2005 20:12
Nový
└ 
Re: chyba při konfiguraci PHP
Kamil Dudka 13. 10. 2007 00:43
Nový
Parodický web na Hulána
Daimler 11. 12. 2007 16:38
Nový
       

Tento text je již více než dva měsíce starý. Chcete-li na něj reagovat v diskusi, pravděpodobně vám již nikdo neodpoví. Pro řešení aktuálních problémů doporučujeme využít naše diskusní fórum.

Zasílat nově přidané příspěvky e-mailem