tučňák
Vybrat další barevné schéma
VýchozíZelenýModrýČernýZlatý
opona
opona

google


Kompilace ze zdroje Apache 2.0.52 s SSL, PHP 5.0.3 a MySQL 4.1.8 na Linuxu

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.

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

Základní popis systému:

phpMyAdmin

PHP 5.0.3 bude kompilováno s podporou: bz2, cpdf, ctype, curl, dom, ftp, gd2, freetype2, gettext, iconv, libxml, mbstring, mysql, mysqli, openssl, pcre, posix, session, SimpleXML, SPL, SQLite, tokenizer, xml, xsl, 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 a mod_rewrite.

Nezbytné nástroje:

Tento článek předpodkládá, že máte instalované nezbytné nástroje pro kompilaci.

Toto je vše, co potřebujete :

Parametry kompilace:

Kompilace může být uzpůsobena řadou parametrů, které se předají gcc, pro moje Pentium-IV/HT/3.4GHz, je toto vhodný počáteční set parametrů:

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

Seznam parametrů specifických pro Vaše CPU a Váš systém můžete nalézt na gcc.gnu.org.

Veškeré tyto skripty byly kompletně testovány pod SuSE Linuxem 9.1 s kernelem 2.6.8.1, a s gcc verze 3.3.3, a na Fedora Core 3 s kernelem 2.6.9.1, ale měly by fungovat na libovolné Linux distribuci.

Tento návod předpokládá, že zdrojové kódy jsou umístěny v /usr/local/src adresáři, SSL klíče v /home/ssl adresáři, a root webu je umístěn v /home/www adresáři.

Kompilace (Open) SSL ze zdroje:


Kompilace OpenSSL:

su

cd /usr/local/src

tar -zxvf openssl-0.9.7d.tar.gz

cd openssl-0.9.7d

./config --prefix=/usr/local

make

make install


Vytvoření privátního klíče v adresáři /home/ssl:

mkdir /home/ssl

cd /home/ssl

/usr/local/bin/openssl genrsa -des3 -rand velký_soubor_1:velký_soubor_2 -out localhost.key 1024


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

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


Následně si vytvoříme požadavek na certifikační autoritu, která náš klíč autorizuje (pokud to potřebujeme), a uložíme jej do souboru localhost.key.csr:

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


A zatímco čekáme na certifikační autoritu, můžeme si vytvořit provizorní certifikát podepsaný námi (self-signed), například pro testovací účely, platný v tomto případě po 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 MySQL 4.1.8 ze zdroje:

Upozornění: MySQL 4.1.8 má nový komunikační protokol, a nové PHP rozšíření, oproti MySQL 4.0 a starším. Pokud Vaše skripty s mysqli nepočítají, stáhněte si raději MySQL 4.0.22! Postup instalace je totožný, jen u kompilace PHP oddělejte v ./configure skriptu jeden řádek s mysqli.

Nicméně, pro nový vývoj je MySQL 4.1.8 a PHP 5.0.3 rozhodně doporučeno.

Kompilace MySQL ze zdroje a vytvoření uživatele / skupiny mysql:

cd /usr/local/src

tar -zxvf mysql-4.1.8.tar.gz

cd mysql-4.1.8

./configure --prefix=/usr/local/mysql --with-unix-sock-path=/tmp/mysql.sock --with-charset=utf8

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 .

MySQL konfigurační soubor /etc/my.cnf může pro naše lokální použití vypadat 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

Kompilace ze zdroje Apache 2.0.52 web serveru:

Vlastní kompilace a instalace :

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

Následně musíme modifikovat konfigurační soubor Apache serveru, umístěný v /usr/local/apache2/conf/httpd.conf (tento návod také předpokládá, že root Vašeho budoucího webu je v /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

Vtvoříme základní mod_rewrite pravidla:

<Directory "/home/www">
 Options Indexes Includes FollowSymLinks MultiViews
 AllowOverride All
 Order allow,deny
 Allow from all
</Directory>

A zakážeme klientům přistupovat k .htaccess:

<Files ~ "^.ht">
   Order allow,deny
   Deny from all
</Files>

Následně, pokud používáme SSL (na standardním portu 443), musíme nahradit soubor /usr/local/apache2/conf/ssl.conf tímto obsahem:

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 ze zdroje:

Pro kompilaci PHP 5 budeme potřebovat řadu externích knihoven, jako je libcurl, libiconv, libjpeg, libpng, Freetype2. GD2 knihovna je v PHP 5 vestavěná.

Kompilace libiconv ze zdroje:

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 ze zdroje:

cd /usr/local/src

tar -zxvf jpegsrc.v6b.tar.gz

cd jpeg-6b

./configure --prefix=/usr/local

make

make install

make install-lib


Kompilace libpng ze zdroje:

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 ze zdroje:

cd /usr/local/src

tar -zxvf clibpdf202r1.tar.gz

cd ClibPDF/source

cp Makefile.Linux makefile

make

make install


Kompilace curl ze zdroje:

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 ze zdroje:

cd /usr/local/src

tar -jxvf freetype-2.1.9.tar.bz2

cd freetype-2.1.9

./configure --prefix=/usr/local

make

make install


Následuje kompilace PHP, s podporou pro MySQL, iconv, curl, zlib, gd2, mbstring, SSL a další moduly, včetně debug módu:

cd /usr/local/src

tar -jxvf 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


Následně musíme modifikovat konfigurační soubor PHP /usr/local/apache2/conf/php.ini:

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

Jak spouštět Apache a MySQL při startu serveru?

Poslední věcí je vytvořit si skript, který nastartuje Apache a MySQL automaticky při startu serveru. Vytvoříme si soubor /etc/init.d/web a nastavíme mu “executable” příznak.

#! /bin/sh
#
# /etc/init.d/web
#
#
### 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
                ;;
        restart)
        /usr/local/apache2/bin/apachectl restart
        /usr/local/mysql/share/mysql/mysql.server restart
                ;;
esac

Potom spustíme YaST, sekce “System”, sub-sekce “Run level editor”, kde povolíme službu web pro runlevel 3 a 5.

Testování systému ?

Nejdříve nastartujeme Apache a MySQL server:

/etc/init.d/web start

A poté vytvoříme soubor /home/www/index.php s tímto obsahem:

<?php phpinfo(); ?>

Ve Vašem browseru zadejte URL http://localhost/ a https://localhost/, a pokud je vše instalováno řádně, ukáže se Vám řada informací o Vaší nové Apache/MySQL/PHP instalaci.

phpMyAdmin:

Rovněž budeme potřebovat phpMyAdmin aplikaci, pro správu MySQL serveru pomocí browseru, zadáním http://localhost/db/ do URL:

Instalace phpMyAdmina do adresáře /home/www/db:

mkdir /home/www
cd /home/www
tar -jxvf /usr/local/src/phpMyAdmin-2.6.0-pl3.tar.bz2
ln -s phpMyAdmin-2.6.0-pl3 db

Následně, povolíme některé rozšířené vlastnosti phpMyAdmina, pomocí modifikace souboru /home/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;

Potom použijeme SQL okno phpMyAdmina ke spuštění skriptu /home/www/db/scripts/create_tables_mysql_4_1_2+.sql, který vytvoří základní PMA tabulky (phpMyAdmin je potřebuje pro svoji činnost).

Debugger pro PHP:

PHPEclipse

Existuje několik nástrojů a IDE pro debugování a profilování PHP kódu, nejlepší z nich je rozhodně PHPeclipse, vysoce kvalitní IDE. Pro použití PHPeclipse je nutné nejdříve zprovoznit PHP debugger.

Instalace:

cd /usr/local/src
tar -zxvf dbg-2.11.30-src.tar.gz
cd dbg-2.11.30
./deferphpize
mkdir /usr/local/modules
cp modules/dbg.so /usr/local/modules
cp modules/dbg.la /usr/local/modules

Potom musíme modifikovat PHP konfigurační soubor /usr/local/apache2/conf/php.ini:

; nahrání modulu debuggeru
extension_dir = "/usr/local/modules"
extension=dbg.so

; konfigurace debuggeru
[debugger]
debugger.enabled = true
debugger.profiler_enabled = true
debugger.JIT_host = localhost
debugger.JIT_port = 10001
debugger.JIT_enabled = on

; implicitní flush - použijte jen při ladění
implicit_flush = On

Potřebujete i mod_perl?

Instalace a kompilace:

cd /usr/local/src

tar zxvf mod_perl-2.0-current.tar.gz

cd mod_perl-1.99_16

perl Makefile.PL MP_APXS=/usr/local/apache2/bin/apxs

make

make install


Následně musíme modifikovat konfigurační soubor Apache, tedy /usr/local/apache2/conf/httpd.conf pro použití mod_perl v adresáři /home/www/perl:

LoadModule perl_module modules/mod_perl.so
PerlModule Apache2
Alias /perl/ /home/www/perl/
<Location /perl/>
    SetHandler perl-script
    PerlResponseHandler ModPerl::Registry
    PerlOptions +ParseHeaders
    Options +ExecCGI
</Location>

Otestování instalace? Vytvořte soubor /home/www/perl/test.pl, chmod 755 test.pl, a jděte na URL http://localhost/perl/test.pl.

#!/usr/bin/perl
print "Content-type: text/plain\n\n";
print "mod_perl 2.0 rocks!\n";
 
Pocet navstev: 110828