GNU/Debian se ha convertido en mi única distribución y es la que sufro y disfruto en todas las máquinas que administro. Dejo aquí una entrada de cómo instalar un sistema de servidor web basado en lighttp, PHP y MySQL sobre GNU/Debian wheezy.

1.- Instalación base

Hacemos una instalación de un sistema base de GNU/Debian, con las únicas herramientas que las básicas, sin sistema de escritorio.

2.- Instalación de algunos programas útiles desde consola

Mis aplicaciones favoritas para usar desde consola, las puedes consultar aquí

# apt-get install vim vim-nox mc rsync htop screen minicom mutt

Yo utilizo conexiones a través de los puertos RS232, si no es tu caso no necesitarás minicom.

3.- Instalación del servicio de SSH

# apt-get install ssh openssh-server

4.- Configuración de la red

Editamos el archivo de configuración de la red

# vim /etc/network/interfaces

Comentamos las dos líneas que finales que configuran por defecto la consulta del DHCP y añadimos una configuración con IP estática:

# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
# The loopback network interface
auto lo
iface lo inet loopback
# The primary network interface
# allow-hotplug eth0
# iface eth0 inet dhcp
auto eth0
iface eth0 inet static
        address 192.168.1.88
        netmask 255.255.255.0
        network 192.168.1.0
        broadcast 192.168.1.255
        gateway 192.168.1.1

Reiniciamos la configuración de la red, si hacemos esto desde SSH, tendremos que volver a ingresar en la nueva IP que hemos configurado:

# /etc/init.d/networking restart

Después editamos los hosts y añadimos la IP de nuestro servidor:

# vim /etc/hosts

Quedaría algo así:

127.0.0.1       localhost.localdomain   localhost
192.168.1.88    miservidor.midominio.es       miservidor
# The following lines are desirable for IPv6 capable hosts
::1     localhost ip6-localhost ip6-loopback
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters

Ahora ejecutamos:

# echo miservidor.midominio.es > /etc/hostname
# /etc/init.d/hostname.sh start

Después de esto, al ejecutar los dos comandos que siguen, deberíamos obtener el nombre y dominio de nuestra máquina (miservidor.midominio.es):

# hostname
# hostname -f

5.- Mantener sincronizada la hora de nuestro servidor

Instalamos el servicio NTP:

# apt-get install ntp ntpdate

6.- Instalamos el servidor My SQL 5

Para hacer esto ejecutamos el siguiente comando y definimos la contraseña del usuario root:

# apt-get install mysql-server mysql-client

7.- Instalamos el servidor web

Una vez terminado este comando podremos consultar la página que trae por defecto el servidor web (http://192.168.1.88/index.lighttpd.html):

# apt-get install lighttpd

Esta página por defecto se encuentra en la carpeta /var/www, y el archivo de configuración del servidor web es /etc/lighttpd/lighttpd.conf. Además se puede encontrar alguna configuraciones adicionales en los archivos que hay en las carpetas /etc/lighttpd/conf-available - Estas configuraciones pueden cambiarse con el comando lighttpd-enable-mod que genera enlaces simbólicos entre el directorio  /etc/lighttpd/conf-enabled y el archivo apropiado de configuración en /etc/lighttpd/conf-available. También se pueden deshabilitar configuraciones con el comando lighttpd-disable-mod.

8.- Instalación y configuración de PHP 5

PHP 5 se ejecuta en lighttp a través de un demonio que ejecuta FastCGI en el socket /var/run/php5-fpm.sock. Esto podemos instalarlo con el comando:

# apt-get install php5-fpm php5

Después tenemos que editar el archivo php.ini

# vim /etc/php5/fpm/php.ini

y suprimir el carácter que comenta la línea cgi.fix_pathinfo=1 Aproximadamente es la línea 765

[...]
; cgi.fix_pathinfo provides *real* PATH_INFO/PATH_TRANSLATED support for CGI.  PHP's
; previous behaviour was to set PATH_TRANSLATED to SCRIPT_FILENAME, and to not grok
; what PATH_INFO is.  For more information on PATH_INFO, see the cgi specs.  Setting
; this to 1 will cause PHP CGI to fix its paths to conform to the spec.  A setting
; of zero causes PHP to behave as before.  Default is 1.  You should fix your scripts
; to use SCRIPT_FILENAME rather than PATH_TRANSLATED.
; http://php.net/cgi.fix-pathinfo
cgi.fix_pathinfo=1
[...]

El archivo de configuración de Lighttp para PHP /etc/lighttpd/conf-available/15-fastcgi-php.conf está preparado para usar spawn-fcgi, sin embargo tenemos que cambiarlo para que use PHP-FPM, para hacer esto creamos una copia de seguridad de este archivo (15-fastcgi-php-spawnfcgi.conf) y modificamos 15-fastcgi-php.conf como sigue:

# cd /etc/lighttpd/conf-available/
# cp 15-fastcgi-php.conf 15-fastcgi-php-spawnfcgi.conf
# vim 15-fastcgi-php.conf

 

# -*- depends: fastcgi -*-
# /usr/share/doc/lighttpd/fastcgi.txt.gz
# http://redmine.lighttpd.net/projects/lighttpd/wiki/Docs:ConfigurationOptions#mod_fastcgi-fastcgi
## Start an FastCGI server for php (needs the php5-cgi package)
fastcgi.server += ( ".php" =>
        ((
                "socket" => "/var/run/php5-fpm.sock",
                "broken-scriptfilename" => "enable"
        ))
)

Ahora activamos el fastcgi con los siguientes comandos:

# lighttpd-enable-mod fastcgi
# lighttpd-enable-mod fastcgi-php

Esto creará los enlaces  /etc/lighttpd/conf-enabled/10-fastcgi.conf que apunta a /etc/lighttpd/conf-available/10-fastcgi.conf y /etc/lighttpd/conf-enabled/15-fastcgi-php.conf que apunta a /etc/lighttpd/conf-available/15-fastcgi-php.conf:

# ls -l /etc/lighttpd/conf-enabled
root@miservidor:/etc/lighttpd/conf-available# ls -l /etc/lighttpd/conf-enabled
total 0
lrwxrwxrwx 1 root root 33 Jul  1 20:45 10-fastcgi.conf -> ../conf-available/10-fastcgi.conf
lrwxrwxrwx 1 root root 37 Jul  1 20:45 15-fastcgi-php.conf -> ../conf-available/15-fastcgi-php.conf
root@server1:/etc/lighttpd/conf-available#

Después reiniciamos Lighttp:

# /etc/init.d/lighttpd force-reload

Para comprobar que PHP funciona creamos el archivo:

# vim /var/www/info.php

Y después abrimos la página con un navegador (ej. http://192.168.1.88/info.php). Tenemos que buscar la línea Server API y comprobar que corre con FPM/FastCGI

9.- Instalación de My SQL 5 y phpmyadmin

Para instalar My SQL 5  con xcache para optimizar la cache de páginas PHP, ejecutamos:

# apt-get install php5-mysql php5-curl php5-gd php5-intl php-pear php5-imagick php5-imap php5-mcrypt php5-memcache php5-ming php5-ps php5-pspell php5-recode php5-snmp php5-sqlite php5-tidy php5-xmlrpc php5-xsl php5-xcache

Ahora reiniciamos PHP-FPM:

# /etc/init.d/php5-fpm reload

Comprobamos nuevamente el archivo info.php, dando a reload y comprobamos que aparece el modulo de mysql.

Instalamos phpmyadmin ejecutando el comando:

# apt-get install phpmyadmin

Elige el servidor web Lighttp y responde no a la pregunta "Configure database for phpmyadmin with dbconfig-common?". Si te da un error y no se instala bien vuelve a ejecutar el comando de instalación.

Referencias