Welcome, Guest. Please login or register.
+  Linux Soft Forum
|-+  Īnvaţă» Tips&Tricks» Instalarea Apache2 MySQL5 si PHP5 din surse pentru RH4ES
[Picture 161] [Picture 160] [Picture 159]
Username:
Password:
 
Pages: [1]   Go Down
  Print  
Author Topic: Instalarea Apache2 MySQL5 si PHP5 din surse pentru RH4ES  (Read 1625 times)
0 Members and 1 Guest are viewing this topic.
mudrii
Veteran
**

« on: January 15, 2007, 09:02:48 AM »

Instalarea prin compilare si configurarea Apache2 PHP5 si MYSQL5

Acest how-to se poate aplica oricarei distributi 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.

Pregatirea pentru instalare
Note: Vom instala aplicatiile in directoarele;
MySQL5 => /usr/local/mysql
Apache2 => /usr/local/apache2
PHP5 => /usr/local/php5


Note: 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


Note: 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 dependente de care avem nevoi pentru rularea PHP5.
Code:
#rpm -qa | grep -i zlib
#rpm -qa | grep -i libxml2

Inaine de a incepe verificati daca aveti aces cu utelizotarul root in sistem si daca compilatorul gcc este instalat in system.
Note: Red Hat nu instaleaza implicit compilatorul gcc.
1. Verificam daca avem instalat compilatorul si versiunea acestuia.
Code:
#gcc-config -l
1.1 verificam daca avem pachtele rpm gcc instalate
Code:
#rpm -qa | grep -i gcc
#rpm -qa | grep -i glibc

1.2 Red Hat instaleaza implicit serverul http, php si mysql de acea inainte de a instala noie versiuni vom verifica daca nu avem instalate in system versiunile mei vechi.
Code:
#rpm -qa | grep -i http
#rpm -qa | grep -i php
#rpm -qa | grep -i mysql

1.2.1 Daca avem instalate in system versiuni mai vechi vom dezinstala pachetele aferente.
Code:
#rpm -evh rpm_package_name

1.3 Creem directurul de lucru
Presupunem ca avem un utelizator cu numele "user" si vom crea in directorul utelizatorului /home/user directorul de unde vom opera in continuare.
Code:
#cd /home/user/Desktop
#mkdir src ; cd src

2. Downloadam versiunile cele mai recente tarball apache, php si mysql

2.1 Vizitati pagine pt download > mirror pentru a gasi lista de servere mirror care sunt cele mai apropiate de locatia unde va aflati.
Code:
Apache > http://httpd.apache.org/download.cgi
MySQL > http://dev.mysql.com/downloads/mysql/5.0.html
PHP > http://www.php.net/downloads.php

In cazul de mai jost sunt prezentate serverele mirror care sunt cele mai aproape de mine.
Code:
#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. Decompresia Torballs
Code:
#tar -xjvf php-5.2.0.tar.bz2
#tar -xzvf mysql-5.0.27.tar.gz
#tar -xzvf httpd-2.0.59.tar.gz

4 Compilarea si instalarea MySQL
Dupa ce am dezarhivat mysql automat a fost creat directorul cu denumirea mysql-5.0.27 unde si vom compila mysql

4.1 Intram in directorul  mysql-5.0.27
Code:
#cd /home/user/Desktop/src/mysql-5.0.27

4.2 Creem utelizatorul si grupul sub care va rula mysql
Code:
#groupadd mysql && useradd -g mysql mysql

4.2.1 Securizam utelizatorul nou creat mysql prim eliminarea acesului la shell
Code:
#vi /etc/passwd
mysql:x:501:501::/home/mysql:/bin/bash
## Modificam pentru RedHat
mysql:x:501:501:Mysql:/dev/null:/sbin/nologin

4.3 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 > http://dev.mysql.com/doc/refman/5.0/en/ unde va trebui sa va alegeti cu atentie swichurile (cea ce urmeaza dupa ./configure) de care aveti nevoie .

4.3.1 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 > http://gentoo-wiki.com/Safe_Cflags
Code:
#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

4.4 Compilarea propriu zisa
Code:
#make && make install

4.5 Copiem fisierul de configurare al MySQL my.cnf in directorul /etc
Code:
#cp support-files/my-medium.cnf /etc/my.cnf

4.6 Initializam baza de date primara a lui mysql
Code:
#/usr/local/mysql/bin/mysql_install_db --user=mysql

4.7 Modificam permisiunile si utelizatorul la care apartin recursiv pentru directoarele unde a fost instalat mysql
Code:
#cd /usr/local/mysql
#chown -R root .
#chown -R mysql var
#chgrp -R mysql .

4.8 Copiem si activam scriptul de initializare pentru mysql
Code:
#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}'

4.9 Cream parole pentru acesul administratorului la baza de date
Code:
#/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'

4.10 Puteti porni manual mysql daca nu-l vreti in init
Code:
#/usr/local/mysql/bin/mysqld_safe --user=mysql &

5. Instalare si configurarea Apache
Ne mutam in directorul unde se afla sursele apache
Code:
#cd /home/user/Desktop/src/httpd-2.0.59

Inainte de a incepe compilarea apache este bine sa studiati cu atentie documentatia http://httpd.apache.org/docs/2.0/install.html vedeti in special documentatia referitoare la swithcurile de configurare unde va trebui sa va alegeti cu atentie swichurile (cea ce urmeaza dupa ./configure) de care aveti nevoie.

5.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 > http://gentoo-wiki.com/Safe_Cflags
Code:
#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

5.2 Compilarea apache
Code:
#make && make install

5.3 Apache nu vine cu un script de initializare mai jos va prezint un script de initializare pe care il folosesc in Red Hat
Code:
#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
#########################################################################################

5.3.1 Initializam init scriptul
Code:
#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.4 Acum putem porni apache cu init scriptul
Code:
#/etc/init.d/httpd start

5.4.1 Sau putem porni manual apache
Code:
#/usr/local/apache2/bin/apachectl start

5.5 Testatm daca a pornit serverul si daca putem acesa in localhost pagina de web defaul ce vine de la apache
5.5.1 Testam daca este apache asculta pe portul 80
Code:
#netstat -nap| egrep "(0\.0\.0\.0).*(0\.0\.0\.0).*LISTEN" | \gawk '{print $4 "\t" $7}' | egrep -o ":(.*)" | cut -c 2-
5.5.2 Testam apache din consola cu links
Code:
#links http://localhost

6.1 Instalarea PHP5
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 > 6.2 si in cazul in care nu le aveti instalate urmati pashii de mai jos.

6.1.1 Pentru zlib si libxml2 in caz ca nu le avem instalate in sistem le downloadam de la.
Code:
#wget http://www.zlib.net/zlib-1.2.3.tar.gz
#wget ftp://xmlsoft.org/libxml2/libxml2-2.6.27.tar.gz

6.1.2 Decomprimam zlib si libxml
Code:
#tar -xzvf zlib-1.2.3.tar.gz
#tar -xzvf libxml2-2.6.27.tar.gz

6.1.3 Instalam dependentele care vor fi instalate default in /usr/local/lib
Code:
#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

6.1.4 Verificam unde se afla librariile de care avem nevoiepentru a instala php5, zlib si libxml2 in RedHat
Code:
#rpm -ql zlib | grep /usr/lib
#rpm -ql libxml2 | grep /usr/lib

6.2 Trecem la compilarea 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 cee instalate manual se afla in /usr/local/lib.
Code:
#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.3 Compilam PHP-ul
Code:
#make && make install

6.4 Editam fisierul de configurare apache si adaugam compatibilitatea cu php
Code:
#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

6.5 Restartam Serverul Apache
Code:
#/etc/init.d/httpd restart

6.6 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
6.6.1 Cream fisierul de test
Code:
#vi /usr/local/apache2/htdocs/test.php
<?php
phpinfo
();
?>
6.6.2 Testam in consola Apache si php
Code:
#links http://localhost/test.php

7. Add on
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.

7.1 Instalarea si configurarea PhpMyqdmin
Code:
#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

7.2 Configurarea PhpMyAdmin
Code:
#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
#########################################################################################


Daca aveti sugesti sau comentarii va rog sa le postati in topic






« Last Edit: January 17, 2007, 02:07:59 AM by mudrii » Logged
oblio
Admini
**


WWW
« Reply #1 on: January 15, 2007, 09:11:33 AM »

Aş avea totuşi o īntrebare, de ce Apache 2.0, şi nu 2.2?



Oau! Cred că merge pus la articole, şi chiar şi pe Wiki Smiley

 thumbsup

Pe wiki e avantajos pentru că poate fi modificat/corectat/actualizat uşor, odată ce te obişnuieşti cu sintaxa.
« Last Edit: January 15, 2007, 09:12:39 AM by oblio » Logged

Distribuţie: ubuntu | Localitate: Bucureşti | Vārstă: 24

Oh! Everything has a point, and if it doesn't, then there's a point to it.

Oblio's
sabertooth
Veteran
**

mysql killer


« Reply #2 on: January 15, 2007, 10:03:43 AM »

Si pus si la exemple de cum se face un how to.
Logged

Stercus accidit
Pages: [1]   Go Up
  Print  
 
Jump to: