Apache, MySQL y PHP desde código fuente

Hoy en día, una de las distribuciones más utilizadas en el mundo de GNU/Linux, especialmente por usuarios no expertos, es Ubuntu. Sin duda es una opción genial para comenzar una andadura en el software libre, pero nuestros conocimientos no se deben quedar estancados en el uso de una sola distribución ni de un solo entorno.

Es cierto que el sistema de gestión de paquetes APT es muy fácil de utilizar, pero tiene algunos inconvenientes. El primero de ellos, bajo mi punto de vista, es que los paquetes vienen ya compilados y con características que probablemente no vayamos a utilizar nunca, lo que implica una pérdida de rendimiento. El segundo, es que nos acostumbramos a instalar todo a través de este software y nos olvidamos de que no está disponible en todas las distribuciones.

A causa de estos inconvenientes, es muy frecuente encontrarnos con How-to’s que se limitan a utilizar APT cuando lo más genérico es instalar desde el código fuente. Por este motivo en esta entrada vamos a ver cómo instalar Apache, MySQL y PHP desde el código fuente.

1 – Instalación de MySQL

Lo primero que necesitamos para llevar a cabo la instalación, son las fuentes, de modo que nos dirigimos a la www.mysql.com y las descargamos de allí, que para eso es software libre.  A continuación vamos a descomprimir el contenido del paquete en nuestro $HOME:

$ tar xvf mysql-5.0.x.tar.gz

Este sistema de gestión de base de datos está desarrollado en su mayor parte en C. Necesitaremos para llevar a cabo la compilación, obviamente, su compilador que se puede obtener en http://gcc.gnu.org. Además son necesarias las librerías ncurses que se pueden descargar desde su web. En Ubuntu se puede instalar desde el repositorio (que ironía), la instalación en otras distribuciones… no viene a cuento ahora mismo.

$ sudo apt-get install build-essential libncurses5 libncurses5-dev

Existen determinados servicios en los sistemas operativos basados en UNIX que precisan de un grupo y un usuario concretos. Normalmente, al utilizar un gestor de paquetes, la creación de éstos se hace automáticamente; en este caso lo haremos nosotros mismos. El usuario y el grupo para este caso es mysql.

$ groupadd mysql
$ useradd -g mysql mysql

Llegados a este punto nos vamos a nuestro $HOME y entramos en el directorio creado al descomprimir el paquete de código fuente. Vamos a ejecutar el binario configure para preparar la instalación con una configuración determinada; mediante el comando $ ./configure --help podemos listar todas las opciones de configuración de MySQL que se activarán como flags al compilar. Yo utilicé:

  • -prefix= Para indicar la ruta del directorio de instalación.
  • -with-mysqld-user= Para indicar el usuario que arrancará por defecto el demonio msqld. Este usuario será el que hemos creado anteriormente. Además deberá de tener permisos de escritura sobre los directorios de la base de datos.
  • -with-unix-socket-path= La ruta absoluta del socket de UNIX. Cuando las conexiones al servidor son en un ambiente local, MySQL utiliza el socket en lugar de un puerto TCP.

Después de ejecutar configure y con las opciones aclaradas estaremos listos para compilar mediante el comando make y para instalar la aplicación en nuestra máquina con sudo make install. Así pues ejecutaremos:

$ ./configure --prefix=/usr/local/mysql \
--with-mysql-user=mysql \
--with-unix-socket-path=/tmp/mysql.socket \
--enable-assember \
--without-debug
$ make
$ sudo make install

Ahora tenemos que copiar el archivo de configuración que cargará el demonio al ser arrancado al directorio por defecto que es /etc.

$ sudo cp support-files/my-small.cnf /etc/my.cnf

Por último tenemos que ejecutar el script que nos cree las bases de datos mysql, test e information_schema, cambiar los permisos a los directorios pertinentes para que el usuario mysql pueda ejecutar correctamente el demonio y por último daremos un password al usuario “root” después de ser lanzado.

$ cd usr/local/mysql
$ ./bin/mysql_install_db --user=mysql
$ sudo chown -R root .
$ sudo chown -R mysql data
$ sudo chgrp -R mysql .
$ sudo ./bin/mysqld_safe &
$ /usr/local/mysql/bin/mysqladmin -u root password new_password

Una vez hecho esto ya tenemos MySQL instalado, con el demonio corriendo y preparado para conectar al servidor. Podemos probar que funciona consultando las bases de datos actuales:

$ ./bin/mysql -u root -p
mysql> show databases

2 – Instalación de Apache

Ahora que tenemos instalado el servidor de bases de datos, vamos a instalar el servidor web Apache 2. Nos bajamos el código fuente del httpd comprimido en .tar.gz y lo guardamos en $HOME. Una vez hecho esto descomprimimos el contenido por medio del comando:

 $ tar xvf httpd-2.2.8.tar.gz

Los pasos a seguir para la instalación de Apache Server son similares a los anteriores ya que es el mismo proceso de configurar, compilar e instalar. Apache posee gran variedad de opciones de configuración que se pueden ver pasando el argumento --help al binario configure. En nuestro caso vamos a hacer la instalación por defecto activando únicamente la opción --prefix que indica a Apache dónde debe ser instalado y la opción --enable-so que sirve para decirle que active el módulo so que será el que permita cargar otros módulos compartidos, ya que es así como vamos a instalar PHP. Por tanto para configurar e instalar Apache:

 $  cd httpd-2.2.8
 $  ./configure --prefix=/usr/local/apache --enable-so
 $  make
 $  sudo make install

En este momento tenemos instalado Apache y se ha habilitado la carga de módulos compartidos para cuando instalemos posteriormente PHP. Nos vamos a mover al directorio donde hemos instalado el servidor y a modificar el fichero httpd.conf para indicar a Apache qué extensiones de ficheros debe pasar al intérprete PHP.

 $ cd /usr/local/apache
 $ vi ./config/httpd.conf

Las líneas que tenemos que añadir al fichero httpd.conf son las siguientes:

 AddType     application/x-httpd-php   .php3
 AddType     application/x-httpd-php   .php4
 AddType     application/x-httpd-php   .php5
 AddType     application/x-httpd-php   .php
 AddType     application/x-httpd-php   .phtml
 AddType     application/x-httpd-php   .inc

Ahora podemos arrancar Apache y detenerlo. Podemos comprobar que funciona arrancando el demonio y abriendo un navegador en el que escribir en la barra de direcciones localhost; se nos deber ́ mostrar el mensaje “It works!”. Los comandos para arrancar y detener el demonio son:

 $ sudo /usr/local/apache/bin/apachectl start
 $ sudo /usr/local/apache/bin/apachectl stop

3 – Instalación de PHP

Una vez más, el proceso es similar a los anteriores. Nos descargamos el código fuente de PHP desde su web oficial comprimido en formato .tar.gz y lo guardamos en $HOME. Descomprimimos el contenido del fichero por medio del comando:

$ tar xvf php-5.2.5.tar.gz

A continuación vamos a configurar, compilar e instalar PHP. Las opciones de configuración se ven del mismo modo que en los casos anteriores: pasando el argumento --help al binario configure. Las opciones de instalación que debemos usar son las siguientes:

  • –prefix= Indica a PHP el directorio de instalación. Dado que vamos a instalarlo como un módulo compartido de PHP, vamos a ponerlo opcionalmente como /usr/local/apache/php.
  • –with-mysql= Dado que vamos a instalar PHP con soporte para manejar bases de datos MySQL, utilizaremos esta opción. El argumento es la ruta de instalación de MySQL.
  • –with-apxs2= Esta opción dice a PHP que va a ser un módulo compartido de Apache. El argumento es el binario apxs que se encuentra en /usr/local/apache/bin/apxs.

Ahora estamos preparados para realizar la instalación. Además, por seguridad, vamos a salvar el fichero de configuración inicial de PHP una vez instalado:

$ ./configure --prefix=/usr/local/apache/php \
--with-apxs2=/usr/local/apache/bin/apsx \
--with-mysql=/usr/local/mysql
$ make
$ sudo make install
$ sudo cp php.ini-dist /usr/local/lib/php.ini

Apache necesita cargar el módulo PHP para que esta cualidad pueda ser usada. Después de la instalación, en el directorio /usr/local/apache/modules habrá una librería dinámica llamada libphp5.so que es la que tenemos que cargar para dar soporte a PHP. Para comprobarlo nos vamos una vez más al archivo httpd.conf y comprobamos que esté presente, y sin comentar, la siguiente línea:

LoadModule php5 module modules/libphp5.so

4 – Test de Funcionamiento

Para comprobar que toda la instalación ha ido correctamente, creamos el siguiente archivo de prueba en el directorio /usr/local/apache/htdocs con el nombre info.php:

<? php_info() ?>

Ahora podemos ejecutar el demonio de Apache y escribir en el navegador la ubicación del código anterior, es decir, localhost/info.php. Si todo ha ido bien se mostrar información de la configuración de PHP donde podremos comprobar que el soporte para MySQL se encuentra activo.

Si este Howto te ha sido útil o encuentras algún error, deja tu comentario.

Anuncios

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s