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.
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.
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/
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:
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.
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.
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:
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.
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
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: