lunes, 20 de septiembre de 2010

Instalación de un servidor LAMP


En esta ocasión vamos a ver cómo crear un servidor LAMP (Linux, Apache, MySQL, PHP) a partir del código fuente, para esto vamos a utilizar un servidor Linux, en mi caso, voy a emplear Ubuntu en su versión Server 10.04.1, esta distro según DistroWatch es la más popular.

Previamente, instalé el paquete build-essential por medio del aptitude:

hajarami@ubuntu:~$ sudo aptitude install build-essential
Este paquete incluye el gcc, g++, libstdc y make; los cuales, son esenciales para compilar.

Después de esto, instalé un servidor Apache HTTP, esta instalación es igual a la que realice para un servidor Solaris en una entrada anterior.

hajarami@ubuntu:~/lab/httpd-2.2.16$ ./configure --prefix=/usr/local/apache --enable-so --enable-ssl=shared
hajarami@ubuntu:~/lab/httpd-2.2.16$ make
hajarami@ubuntu:~/lab/httpd-2.2.16$ sudo make install
Seguido de esto, instalé un servidor MySQL, en mi caso, lo hice a partir de compilar el archivo fuente que corresponde a Linux Genérico ya que mi intención es mostrar la forma más genérica, sin embargo, el fabricante recomienda utilizar los binarios que corresponden a la distro que se vaya a emplear.

Después de bajar el archivo mysql-5.1.50.tar.gz lo descomprimí en el subdirectorio lab que creé con ese propósito.

hajarami@ubuntu:~/lab$ tar xvzf ../mysql-5.1.50.tar.gz
También instalé 2 paquetes que nos recomiendan, el libtool y el libncurses5-dev

hajarami@ubuntu:~$ sudo aptitude install libtool libncurses5-dev
Se crea una cuenta y un grupo para administrar la aplicación

hajarami@ubuntu:~$ sudo groupadd mysql
hajarami@ubuntu:~$ sudo useradd -g mysql mysql
De acuerdo a la documentación, es recomendable configurar de la siguiente forma:

hajarami@ubuntu:~/lab/mysql-5.1.50$ CFLAGS="-O3" CXX=gcc CXXFLAGS="-O3 -felide-constructors \
> -fno-exceptions -fno-rtti" ./configure --prefix=/usr/local/mysql --enable-assembler \
> --with-mysqld-ldflags=-all-static
Se compila y se instala:

hajarami@ubuntu:~/lab/mysql-5.1.50$ make
hajarami@ubuntu:~/lab/mysql-5.1.50$ sudo make install
Como último paso se procede a configurar el servidor y arrancarlo, desde la cuenta de root hice lo siguiente:

root@ubuntu:~/lab/mysql-5.1.50# cp support-files/my-medium.cnf /etc/my.cnf
root@ubuntu:~/lab/mysql-5.1.50# cp include/my_compiler.h /usr/local/mysql/include/mysql
root@ubuntu:~/lab/mysql-5.1.50# cd /usr/local/mysql
root@ubuntu:/usr/local/mysql# chown -R mysql:mysql .
root@ubuntu:/usr/local/mysql# bin/mysql_install_db --user=mysql
root@ubuntu:/usr/local/mysql# chown -R root .
root@ubuntu:/usr/local/mysql# chown -R mysql var
root@ubuntu:/usr/local/mysql# bin/mysqld_safe --user=mysql &
Nota: En realidad, la documentación de MySQL no indica que deba copiarse el archivo my_compiler.h, sin embargo, la falta de este archivo provoca un error de compilación en el PHP, por lo que estoy recomendando su copia en forma manual. En la actualidad, casi todo el software libre se compila de la misma manera: config, make y make install; sin embargo, dependiendo de la plataforma, en ocasiones se presentan errores de lo más extraño, es por eso que el compilar se podría considerar un "arte", aquí en este caso se solucionó resolviendo una dependencia no documentada, pero hay veces en la que es necesario incluso el revisar el código que genera error.

Si hasta aquí todo ha salido bien, estamos listos para compilar e instalar el PHP, bajamos el archivo php-5.3.3.tar.gz, en mi ejemplo, instalé un PHP con soporte para zlib y gd, además del soporte a MySQL mejorado.

Lo primero que hice fue instalar los paquetes libpng12-dev y libjpeg62-dev para activar la extensión gd, también instalé el libxml2-dev ya que por default, el PHP instala la extensión XML, después de esto, procedí a configurar, compilar e instalar de la siguiente manera:

hajarami@ubuntu:~/lab/php-5.3.3$ ./configure --prefix=/usr/local/apache2 \
> --with-config-file-path=/usr/local/apache2/conf --with-apxs2=/usr/local/apache2/bin/apxs \
> --with-mysqli=/usr/local/mysql/bin/mysql_config --with-zlib --with-gd
hajarami@ubuntu:~/lab/php-5.3.3$ make
hajarami@ubuntu:~/lab/php-5.3.3$ sudo make install
Copié el archive de configuración recomendado para un ambiente de desarrollo

hajarami@ubuntu:~/lab/php-5.3.3$ sudo cp php.ini-development /usr/local/apache2/conf/php.ini
Agregué al archivo /usr/local/apache2/conf/httpd.conf la siguiente línea:

AddType application/x-httpd-php .php .phtml
Inicié el servidor Apache

hajarami@ubuntu:~/lab/php-5.3.3$ sudo /usr/local/apache2/bin/apachectl start
Y finalmente probé el servidor con una página muy simple en la ruta /usr/local/apache2/htdocs/phpinfo.php

<?php
        phpinfo();
?>

No hay comentarios.: