Deprecated: Function split() is deprecated in /home/www/static/linuxsoft.ro/www.linuxsoft.ro/public_html/wiki/inc/auth.php on line 146 Warning: Cannot modify header information - headers already sent by (output started at /home/www/static/linuxsoft.ro/www.linuxsoft.ro/public_html/wiki/inc/auth.php:146) in /home/www/static/linuxsoft.ro/www.linuxsoft.ro/public_html/wiki/inc/auth.php on line 236 Warning: Cannot modify header information - headers already sent by (output started at /home/www/static/linuxsoft.ro/www.linuxsoft.ro/public_html/wiki/inc/auth.php:146) in /home/www/static/linuxsoft.ro/www.linuxsoft.ro/public_html/wiki/inc/actions.php on line 128 servere:apache-2.0-mysql-5-php-5-pe-red-hat-enterprise-4 [Linux Soft Wiki]
 

Despre

Instalarea prin compilare si configurarea Apache2, PHP 5 si MYSQL 5. Acest how-to se poate aplica oricarei distributii Linux nu numai Red Hat.

Recent am avut o cere de la un client ce avea o aplicatia scrisa pentru PHP5 si cu suport pentru tranzactii MYSQL5 pe un Red Hat 4 update 4 care rula intr-un Data Center deci eram limitat la sistemul de operare. Asa cum Red Hat vine instalat implicit cu versiunile mai vechi PHP4 si MySQL4 a trebuit sa depun ceva efort ca sa pot fece aplicatiile scrise pentru PHP5 cu MySQL5 functionale pe RedHat 4.
In continuare voi descrie in detalui pasii pe care ia-m urmat pentru a instala PHP5 si MySQL5 pe Red Hat 4 Update 4.

Pregatire

Inaine de a incepe verificati daca aveti acces cu utilizatorul root in sistem si daca compilatorul gcc este instalat in system.
Red Hat nu instaleaza implicit compilatorul gcc. Verificam daca avem instalat compilatorul si versiunea acestuia

#gcc-config -l

Verificam daca avem pachetele rpm gcc instalate:

#rpm -qa | grep -i gcc
#rpm -qa | grep -i glibc

Red Hat instaleaza implicit serverul http, php si mysql de acea inainte de a instala noile versiuni vom verifica daca nu avem instalate in system versiunile mei vechi.

#rpm -qa | grep -i http
#rpm -qa | grep -i php
#rpm -qa | grep -i mysql

Daca avem instalate in system versiuni mai vechi vom dezinstala pachetele aferente:

#rpm -evh rpm_package_name

Vom instala aplicatiile in directoarele:

MySQL5  => /usr/local/mysql
Apache2 => /usr/local/apache2
PHP5    => /usr/local/php5

La data scrierii acestui How-to ultimele versiuni disponibile sunt:

MySQL => mysql-5.0.27
Apache => httpd-2.0.59
PHP => php-5.2.0

In caz ca nu au fost instalate in prealabil Apache si Php este bine sa verificati daca aveti in sistem instalat zlib si libxml2 care sunt dependinte de care avem nevoie pentru rularea PHP5.

#rpm -qa | grep -i zlib
#rpm -qa | grep -i libxml2

Compilare

1. Creem directorul de lucru, presupunem ca avem un utelizator cu numele “user” si vom crea in directorul utilizatorului /home/user directorul de unde vom opera in continuare.

#cd /home/user/Desktop
#mkdir src
#cd src

2. Downloadam versiunile cele mai recente tarball Apache, php si MySQL. Vizitati pagina pt download > mirror pentru a gasi lista de servere mirror care sunt cele mai apropiate de locatia unde va aflati. In cazul de mai jost sunt prezentate serverele mirror care sunt cele mai aproape de mine.

#wget http://jp2.php.net/distributions/php-5.2.0.tar.bz2
#wget ftp://ftp.iij.ad.jp/pub/db/mysql/Downloads/MySQL-5.0/mysql-5.0.27.tar.gz
#wget http://www.meisei-u.ac.jp/mirror/apache/dist/httpd/httpd-2.0.59.tar.gz

3. Despachetam fisierele downloadate:

#tar -xjvf php-5.2.0.tar.bz2
#tar -xzvf mysql-5.0.27.tar.gz
#tar -xzvf httpd-2.0.59.tar.gz

MySQL

Dupa ce am dezarhivat mysql automat a fost creat directorul cu denumirea mysql-5.0.27 unde si vom compila mysql.

1. Intram in directorul mysql-5.0.27

#cd /home/user/Desktop/src/mysql-5.0.27

2. Creem utilizatorul si grupul sub care va rula mysql

#groupadd mysql && useradd -g mysql mysql

3. Securizam utilizatorul nou creat mysql prim eliminarea acesului la shell

#vi /etc/passwd
mysql:x:501:501::/home/mysql:/bin/bash
## Modificam pentru RedHat
mysql:x:501:501:Mysql:/dev/null:/sbin/nologin

4. Acum putem trece la compilarea propriu zisa a lui MySQL dar inainte de a incepe este bine sa consultati cu atentie documentatia de pe siteul MySQL unde va trebui sa va alegeti cu atentie swichurile (cea ce urmeaza dupa ./configure) de care aveti nevoie.

5. Optimizarea
In cazul de mai jos am folosit optimizarea GCC -O3 care este recomandata de mysql si optimizarea pentru procesoarele Pentium 4 (Intel) pentru a optimiza mysql pentru propriul procesor consultati Gentoo Wiki Safe CFlags

#CFLAGS="-O3 -march=pentium4 -pipe -fomit-frame-pointer" \
CXX=gcc CXXFLAGS="-O3 -march=pentium4 -pipe -fomit-frame-pointer \
-felide-constructors -fno-exceptions -fno-rtti" ./configure \
--prefix=/usr/local/mysql --enable-assembler \
--with-mysqld-ldflags=-all-static --with-charset=utf8

6. Compilarea propriu zisa

#make && make install

7. Copiem fisierul de configurare al MySQL my.cnf in directorul /etc

#cp support-files/my-medium.cnf /etc/my.cnf

8. Initializam baza de date primara a lui mysql

#/usr/local/mysql/bin/mysql_install_db --user=mysql

9. Modificam permisiunile si utelizatorul la care apartin recursiv pentru directoarele unde a fost instalat mysql

#cd /usr/local/mysql
#chown -R root . 
#chown -R mysql var 
#chgrp -R mysql .

10. Copiem si activam scriptul de initializare pentru mysql

#cp /home/user/Desktop/src/mysql-5.0.27/support-files/mysql.server /etc/init.d/mysqld 
#chmod +x /etc/init.d/mysqld
#chkconfig --add mysqld
#chkconfig --level 35 mysqld on
#chkconfig --list | grep -i mysqld | awk '{print $1,$5,$7}'

11. Cream parole pentru acesul administratorului la baza de date

#/etc/init.d/mysqld start
#/usr/local/mysql/bin/mysqladmin -uroot password 'parola_noua'
#/usr/local/mysql/bin/mysqladmin -uroot -h localhost password 'parola_noua'

Puteti porni manual mysql daca nu-l vreti in init

#/usr/local/mysql/bin/mysqld_safe --user=mysql &

Apache

Ne mutam in directorul unde se afla sursele apache

#cd /home/user/Desktop/src/httpd-2.0.59

Inainte de a incepe compilarea apache este bine sa studiati cu atentie documentatia vedeti in special documentatia referitoare la swithcurile de configurare unde va trebui sa va alegeti cu atentie switchurile (cea ce urmeaza dupa ./configure) de care aveti nevoie.

1. Configurarea initiala
In cazul de mai jos am folosit optimizarea gcc -O2 si optimizarea pentru procesoarele Pentium 4 (Intel) pentru a optimiza Apache pentru propriul procesor consultati Gentoo Wiki Safe CFlags

#CFLAGS="-O2 -march=pentium4 -pipe -fomit-frame-pointer" \
CXX=gcc CXXFLAGS="-O2 -march=pentium4 -pipe -fomit-frame-pointer" \
./configure --prefix=/usr/local/apache2 --enable-mods-shared=most \
--enable-auth-anon --enable-auth-dbm --enable-auth-digest \
--enable-charset-lite --enable-expires --enable-headers --enable-logio \
--enable-rewrite --enable-info --enable-ext-filter --enable-deflate \
--enable-cache --enable-disk-cache --enable-mem-cache --enable-file-cache \
--enable-proxy --enable-proxy-connect --enable-proxy-ftp --enable-proxy-http \
--enable-case-filter --enable-case-filter-in --enable-echo --enable-mime-magic \
--enable-unique-id --enable-vhost-alias --enable-ssl --with-mpm=prefork

2. Compilarea apache

#make && make install

3. Apache nu vine cu un script de initializare mai jos va prezint un script de initializare pe care il folosesc in Red Hat

#vi /etc/init.d/httpd

#########################################################################################
#!/bin/bash
#
# Startup script for the Apache Web Server
#
# chkconfig: - 85 15
# description: Apache is a World Wide Web server.  It is used to serve \
#              HTML files and CGI.
# processname: httpd
# pidfile: /usr/local/apache2/logs/httpd.pid
# config: /usr/local/apache2/conf/httpd.conf

# Source function library.
. /etc/rc.d/init.d/functions

if [ -f /etc/sysconfig/httpd ]; then
        . /etc/sysconfig/httpd
fi

# This will prevent initlog from swallowing up a pass-phrase prompt if
# mod_ssl needs a pass-phrase from the user.
INITLOG_ARGS=""

# Path to the apachectl script, server binary, and short-form for messages.
apachectl=/usr/local/apache2/bin/apachectl
httpd=/usr/local/apache2/bin/httpd
pid=$httpd/logs/httpd.pid
prog=httpd
RETVAL=0


# The semantics of these two functions differ from the way apachectl does
# things -- attempting to start while running is a failure, and shutdown
# when not running is also a failure.  So we just do it the way init scripts
# are expected to behave here.
start() {
        echo -n $"Starting $prog: "
        daemon $httpd $OPTIONS
        RETVAL=$?
        echo
        [ $RETVAL = 0 ] && touch /var/lock/subsys/httpd
        return $RETVAL
}
stop() {
        echo -n $"Stopping $prog: "
        killproc $httpd
        RETVAL=$?
        echo
        [ $RETVAL = 0 ] && rm -f /var/lock/subsys/httpd $pid
}
reload() {
        echo -n $"Reloading $prog: "
        killproc $httpd -HUP
        RETVAL=$?
        echo
}

# See how we were called.
case "$1" in
  start)
        start
        ;;
  stop)
        stop
        ;;
  status)
        status $httpd
        RETVAL=$?
        ;;
  restart)
        stop
        start
        ;;
  condrestart)
        if [ -f $pid ] ; then
                stop
                start
        fi
        ;;
  reload)
        reload
        ;;
  graceful|help|configtest|fullstatus)
        $apachectl $@
        RETVAL=$?
        ;;
  *)
        echo $"Usage: $prog {start|stop|restart|condrestart|reload|status"
		echo $"|fullstatus|graceful|help|configtest}"
        exit 1
esac

exit $RETVAL
#########################################################################################

4. Initializam init scriptul

#chmod +x /etc/init.d/httpd
#chkconfig --add httpd
#chkconfig --level 35 httpd on
#chkconfig --list | grep -i httpd | awk '{print $1,$5,$7}'

5. Acum putem porni apache cu init scriptul

#/etc/init.d/httpd start

Sau putem porni manual apache

#/usr/local/apache2/bin/apachectl start

6. Testam daca a pornit serverul si daca putem acesa in localhost pagina de web defaul ce vine de la Apache.
Testam daca este Apache asculta pe portul 80

#netstat -nap| egrep "(0\.0\.0\.0).*(0\.0\.0\.0).*LISTEN" | \gawk '{print $4 "\t" $7}' | egrep -o ":(.*)" | cut -c 2-

Testam Apache din consola cu links:

#links http://localhost

PHP

Inainte de a trece la instalare php este bine sa verificati daca aveti instalat in system zlib si libxml2.
Daca aveti dependentele in system puteti trece direct la instalarea php > 5.2 si in cazul in care nu le aveti instalate urmati pashii de mai jos.

Instalarea dependintelor
1. Pentru zlib si libxml2 in caz ca nu le avem instalate in sistem le downloadam de la.

#wget http://www.zlib.net/zlib-1.2.3.tar.gz
#wget ftp://xmlsoft.org/libxml2/libxml2-2.6.27.tar.gz

2. Decomprimam zlib si libxml

#tar -xzvf zlib-1.2.3.tar.gz
#tar -xzvf libxml2-2.6.27.tar.gz

3. Instalam dependentele care vor fi instalate default in /usr/local/lib

#cd /home/user/Desktop/src/zlib-1.2.3
#./configure && make && make install
#cd /home/user/Desktop/src/libxml2-2.6.27
#./configure && make && make install

4. Verificam unde se afla librariile de care avem nevoie pentru a instala php5, zlib si libxml2 in RedHat:

#rpm -ql zlib | grep /usr/lib 
#rpm -ql libxml2 | grep /usr/lib

5. Trecem la configurarea pentru compilare a PHP5
Ca si in cazul MySQL si Apache am folosit optimizari pentru procesor pentru mai multe informatii consultati http://www.php.net/manual/en/install.unix.apache2.php.
Note: in cazul de mai jos am folosit librariile zlib si libxml2 default instalate de RedHat in /usr/lib cele instalate manual se afla in /usr/local/lib.

#cd /home/user/Desktop/src/php-5.2.0
#CFLAGS="-O2 -march=pentium4 -pipe -fomit-frame-pointer" \
CXX=gcc CXXFLAGS="-O2 -march=pentium4 -pipe -fomit-frame-pointer" \
./configure --prefix=/usr/local/php5 \
--with-apxs2=/usr/local/apache2/bin/apxs \
--with-libxml-dir=/usr/lib \
--with-zlib --with-zlib-dir=/usr/lib \
--with-mysql=/usr/local/mysql \
--with-mysqli=/usr/local/mysql/bin/mysql_config \
--enable-mbstring --enable-sockets

6. Compilam PHP-ul

#make && make install

7. Editam fisierul de configurare Apache si adaugam compatibilitatea cu php:

#vi /usr/local/apache2/conf/httpd.conf
AddType application/x-httpd-php .php
## Adaugam la finele DirectoryIndex inregistrarea index.php
DirectoryIndex index.html index.html.var index.php

8. Restartam Serverul Apache

#/etc/init.d/httpd restart

9. Testam Apache cu modulul php incarcat, pentru aceasta vom creea un fisier de test ce va contine cod php si care ne va afisa informatii despre php-ul instalat in sistem.

#vi /usr/local/apache2/htdocs/test.php
<?php
phpinfo();
?>

10. Testam in consola Apache si PHP

#links http://localhost/test.php

PHPMyAdmin

Odata ce am instalat mysql, apache si php este bine sa avem o interfata grafica prin web pentru administrarea mysql de aceea am hotarat sa combinam functionalitatea tuturor 3 aplicatii instalate.

1.

#cd /home/user/Desktop/src/
#wget http://jaist.dl.sourceforge.net/sourceforge/phpmyadmin/phpMyAdmin-2.9.1.1-all-languages.tar.bz2
#tar -xjvf phpMyAdmin-2.9.1.1-all-languages.tar.bz2
#mv phpMyAdmin-2.9.1.1-all-languages  /usr/local/apache2/htdocs/phpmyadmin

2. Configurarea PhpMyAdmin

#vi /usr/local/apache2/htdocs/phpmyadmin/libraries/config.default.php
#diff -Nut config.default.php config.default.php.old
#########################################################################################
--- config.default.php   2006-12-05 18:18:50.000000000 +0900
+++ config.default.php.or   2006-11-19 09:28:45.000000000 +0900
@@ -68,9 +68,9 @@
                                                        // The controluser is also
                                                        // used for all relational
                                                        // features (pmadb)
-$cfg['Servers'][$i]['auth_type']     = 'config';       // Authentication method (config, http or cookie based)?
+$cfg['Servers'][$i]['auth_type']     = 'http';         // Authentication method (config, http or cookie based)?
 $cfg['Servers'][$i]['user']          = 'root';         // MySQL user
-$cfg['Servers'][$i]['password']      = '';             // MySQL password (only needed
+$cfg['Servers'][$i]['password']      = 'mysql_pass';   // MySQL password (only needed
 
                                                        // with 'config' auth_type)
 $cfg['Servers'][$i]['nopassword']    = FALSE;          // Whether to try to connect without password
 $cfg['Servers'][$i]['only_db']       = '';             // If set to a db-name, only
#########################################################################################

Acum putem trece la Utelizarea efectiva a solutiilor instalatre in RH4.

 
servere/apache-2.0-mysql-5-php-5-pe-red-hat-enterprise-4.txt · Last modified: 2008/03/02 17:38 by mudrii
 
Publicaţi pe acest Wiki doar conţinut original, nu se acceptă copierea articolelor de pe alte site-uri. Se recomandă folosirea link-urilor in acest caz.
Recent changes RSS feed