edit · print · PDF

Please note that all the SIEpedia's articles address specific issues or questions raised by IAC users, so they do not attempt to be rigorous or exhaustive, and may or may not be useful or applicable in different or more general contexts.

Instalación local de un servidor Apache con PHP y MySQL

Apache es el servidor HTTP más popular de internet. Un servidor Apache, con un lenguaje de servidor (como el más popular, PHP) y un sistema de bases de datos (como la más popular, MySQL) es la herramienta perfecta para desarrollo de aplicaciones web modernas.

Con este HowTo explicamos cómo instalar un servidor Apache con el módulo para PHP y también un sistema de bases de datos MySQL, también llamado LAMP (Linux+Apache+MySQL+PHP) actualmente indispensable para crear aplicaciones web complejas. Todo el software necesario es Open Source y posee una gran comunidad de usuarios y una amplia documentación.

Software necesario

Necesitaremos el servidor Apache, el módulo PHP, las librerías jpeg-6b para poder manipular imágenes jpeg on PHP y servidor MySQL:

Nos bajamos todo esto y lo guardamos en el directorio temporal cualquiera de un scratch, que llamaremos install. En él (e.g. /scratch/japp/install) tendremos (más o menos):

 [japp@anayansi install]$ ls -l
    -rw-r--r--  1 japp users  6,1M 2006-08-16 12:31 httpd-2.2.3.tar.gz
    -rw-r--r--  1 japp users  599K 2006-08-16 19:42 jpegsrc.v6b.tar.gz
    -rw-r--r--  1 japp users   45M 2006-07-27 20:14 mysql-standard-5.0.24-linux-i686.tar.gz
    -rw-r--r--  1 japp users  7,8M 2006-08-16 12:31 php-5.1.4.tar.gz

y después de descomprimir cada paquete:

 [japp@anayansi install]$ ls -l
   drwxr-xr-x 12 japp users  1,4K 2006-08-16 13:09 httpd-2.2.3
   -rw-r--r--  1 japp users  6,1M 2006-08-16 12:31 httpd-2.2.3.tar.gz
   drwxr-xr-x  3 japp users  8,6K 2006-08-16 19:46 jpeg-6b
   -rw-r--r--  1 japp users  599K 2006-08-16 19:42 jpegsrc.v6b.tar.gz
   -rw-r--r--  1 japp users  45M  2006-07-27 20:14 mysql-standard-5.0.24-linux-i686.tar.gz
   drwxr-xr-x 18 japp users  2,7K 2006-08-17 16:07 php-5.1.4
   -rw-r--r--  1 japp users  7,8M 2006-08-16 12:31 php-5.1.4.tar.gz

todo el software lo instalaremos en un directorio del scratch, por ejemplo: /scratch/japp/local/

Compilación del servidor Apache

Apache tiene muchos módulos que según se vayan a usar, se incorporan en la línea configure. Como nuestro servidor será para pruebas, compilaremos todos los módulos, que luego podremos cargar o no en el archivo de configuración de Apache.

Entramos en httpd-2.2.3/

 [japp@anayansi httpd-2.2.3]$ ./configure --prefix=/scratch/japp/local/apache --enable-mods-shared=all
 [japp@anayansi httpd-2.2.3]$ make
 [japp@anayansi ]$ make install

así queda instalado el servidor apache en /scratch/japp/local/apache. En él, los directorios importantes son:

  • bin/ donde están los ejecutables
  • htdocs/ donde se guardan las páginas web que creemos
  • conf/ donde están los archivos de configuración

Antes de ver si funciona, hay que cambiar algunos detalles de la configuracion de Apache, que está en conf/httpd.conf. Con un editor, lo abrimos y buscamos la línea donde pone:

 Listen 80

y ponemos:

 Listen 8080

esto es porque sólo el usuario root puede usar el puerto 80, por defecto para HTTP y como pretendemos arrancar el servidor como usuario normal, usamos uno mayor que 1024. Una vez hecho, guardamos y arrancamos el sevidor Apache:

  [japp@anayansi apache]$ bin/apachectl start

Ahora abrimos el navegador apuntando a http://localhost:8080/ y comprobamos si funciona. Otros comandos de apache son:

 [japp@anayansi apache]$ bin/apachectl stop          # Detiene el servidor
 [japp@anayansi apache]$ bin/apachectl restart       # Reinicia el servidor

Ahora apagamos el servidor y continuamos con la instalación.

Compilando jpg-6d

Son las librerías para manipular imágenes jpeg con PHP. Entramos en jpg-6d/ y ahí hacemos:

 [japp@anayansi jpg-6d]$ ./configure --prefix=/scratch/japp/local/jpeg-6d --enable-static --enable-shared
 [japp@anayansi jpg-6d]$ make
 [japp@anayansi jpg-6d]$ strip rdjpgcom wrjpgcom .libs/{cjpeg,djpeg,jpegtran}
 [japp@anayansi jpg-6d]$ mkdir -p /scratch/japp/local/jpeg-6d/{bin,include,lib,man/man1}
 [japp@anayansi jpg-6d]$ make install
 [japp@anayansi jpg-6d]$ cp jversion.h /scratch/japp/local/jpeg-6d/include

si todo va bien, las librerías quedarán instaladas en /scratch/japp/local/jpeg-6b.

Compilando PHP5

Hacemos como antes para el Apache, sólo que en la línea de configure hay que ponerle dónde estará el MySQL y pedirle que compile con algunos módulos que nos interesan. Una configuración típica podría ser:

  [japp@anayansi ~]$ cd /scratch/japp/install/php-5.1.4
  [japp@anayansi php-5.1.4> ./configure --prefix=/scratch/japp/local/php5 
 --with-mysql=/scratch/japp/local/mysql/bin/mysql --with-apache2=/scratch/japp/install/httpd-2.2.3 
 --with-apxs2=/scratch/japp/local/apache/bin/apxs --with-config-file-path=/scratch/japp/local/php5 --with-zlib
  --with-gd --with-jpeg-dir=/scratch/japp/local/jpeg-6b --enable-calendar --enable-bcmath --enable-gd-native-ttf 
  --enable-magic-quotes --enable-mbstr-enc-trans --enable-mbstring --with-freetype-dir=/usr/include/freetype
  [japp@anayansi ~]$ make
  [japp@anayansi ~]$ make install

Ahora copiamos el php.ini por defecto de la instaclaión al directorio de binarios (--with-config-file-path=/scratch/japp/local/php5):

  [japp@anayansi php-5.1.4]$ cp php.ini-recomended /home/japp/local/php5/php.ini

Editamos el httpd.conf de Apache (el que está en local/apache/conf/httpd.conf):

Modifico el DirectoryIndex:

 DirectoryIndex index.html index.htm index.php

Comprobamos que el Apache carga el módulo de php5 y si no está esa línea en la lista de módulos cargado lo ponemos (en principio no hará falta):

 LoadModule php5_module        modules/libphp5.so 

Finalmente añadimos el tipo de aplicación php:

 AddType application/x-compress .Z
 AddType application/x-gzip .gz .tgz
 AddType application/x-httpd-php .php

Ya está todo con php. Para comprobar que ya funciona el php en el servidor, creamos un fichero de texto en el directorio raíz del servidor, /scratch/japp/local/apache/htdocs llamado phpinfo.php con el siguiente contenido:

 <?php
      phpinfo();                  ## Da informacion sobre la configuracion del PHP del servidor
  ?>

Arrancamos de nuevo el servidor apache y apuntamos el navegador a http://localhost:8080/phpinfo.php; deberá apacerer una tabla larga azul y púrpura sobre la configuración del php.

Instalando de MySQL

Usamos la versión estática la web de MySQL (Linux Standard Static) que descomprimos en /home/japp/local/. Esta versión ya viene compilada y sólo tenemos que descomprimirla, instalar unsas tablas iniciales y darle un password al usuario root.

Por comodidad, creamos un enlace al directorio con un nombre más simple:

 japp@anayansi:~/local> ln -s mysql-standard-5.0.24-linux-i686/ mysql

Instalamos las tablas de mysql con el script de instalación que trae:

  japp@anayansi:~/mysql> ./scripts/mysql_install_db 

y arrancamos el servidor con:

 japp@anayansi:~/mysql> ./bin/mysqld_safe & 

Ahora le damos una clave al usuario root (de MySQL, no de linux!):

  japp@anayansi:~/mysql> ./bin/mysqladmin -u root password 'new-password'
  japp@anayansi:~/mysql> ./bin/mysqladmin -u root -h anayansi password 'new-password' # puede fallar por el DHCP, pero se puede ignorar

en principio es todo, así debería funcionar sin problemas. Para conectarnos por ejemplo con una aplicación php podemos crear un usuario distinto con los permisos adecuados.

Para parar el servidor MySQL:

  japp@anayansi:~/mysql> ./bin/mysqladmin -u root -p shutdown

Para saber más

Documentación oficial en:

Si instalas el servidor en tu ordenador personal o en uno en que tengas acceso como root, podrás hacerlo todo en los sitios por defecto y usar el puerto 80. Estas guías te pueden ayudar:

¡Ah! ¿que no sabes php ni MySQL? estas guías te pueden valer:

Section: HOWTOs

edit · print · PDF
Page last modified on October 02, 2012, at 01:10 PM