Instalación de un entorno de desarrollo LAMP (Linux + Apache + MySQL + PHP) usando el sistema operativo Debian Wheezy.

Linux

Instalar el sistema básico de Debian Wheezy y elegir las colecciones

  • Servidor SSH
  • Utilidades estándar del sistema

Después de finalizar la instalación y reiniciar el sistema, entrar como usuario root para continuar con la configuración del servidor.

Nombre del servidor

En este ejemplo el nombre del servidor es lamp. Ejecutar los comandos

echo "lamp" > /etc/hostname
hostname -F /etc/hostname

Actualizar los archivos /etc/network/interfaces y /etc/hosts como se muestra abajo. En este ejemplo la dirección IP de la máquina es 192.168.0.100, el nombre del dominio es test.server.

Extracto del archivo: /etc/network/interfaces

# The primary network interface
allow-hotplug eth0
iface eth0 inet static
        address 192.168.0.100
        netmask 255.255.255.0
        gateway 192.168.0.1

Extracto del archivo: /etc/hosts

127.0.0.1         localhost
192.168.0.100     lamp.test.server     lamp

Reiniciar el servidor para asegurarse de que arranca correctamente.

Zona horaria

Ajustar la zona horaria ejecutando

dpkg-reconfigure tzdata

Comprobar la zona horaria con el comando

date

Actualizaciones de software

Instalar las actualizaciones de software disponibles.

aptitude update
aptitude upgrade

Añadir un usuario nuevo

Instalar el paquete sudo.

aptitude install sudo

Crear un usuario y agregarlo al grupo de administradores del sistema (admin). En este ejemplo el nombre del usuario es tester.

adduser tester
usermod -a -G sudo tester

Salir del sistema como usuario root.

logout

Conectarse como el nuevo usuario y comprobar si tiene los derechos de administrador.

sudo bash
[sudo] password for tester: ****
root@lamp:/home/tester#

De aquí en adelante ya no será necesario conectarse como root para administrar el sistema.

Apache

Instalar Apache y activar el módulo rewrite de apache2.

aptitude install apache2
a2enmod rewrite
service apache2 restart

Configuración de Hosting Virtual basado en nombres

Desactivar el host virtual por defecto de apache2.

a2dissite default

Crear una carpeta para almacenar los archivos de cada host virtual. En este ejemplo para drupal.test.server y typo3.test.server.

mkdir -p /srv/www/drupal.test.server/htdocs
mkdir /srv/www/drupal.test.server/logs
mkdir /srv/www/drupal.test.server/tmp

mkdir -p /srv/www/typo3.test.server/htdocs
mkdir /srv/www/typo3.test.server/logs
mkdir /srv/www/typo3.test.server/tmp

Crear un archivo en el directorio /etc/apache2/sites-available/ para cada host virtual.

Archivo: /etc/apache2/sites-available/drupal.test.server

<VirtualHost *:80>
     ServerAdmin webmaster@test.server
     ServerName drupal.test.server
     ServerAlias drupal.test.server
     DocumentRoot /srv/www/drupal.test.server/htdocs
     ErrorLog /srv/www/drupal.test.server/logs/error.log
     CustomLog /srv/www/drupal.test.server/logs/access.log combined
</VirtualHost>

Archivo: /etc/apache2/sites-available/typo3.test.server

<VirtualHost *:80>
     ServerAdmin webmaster@test.server
     ServerName typo3.test.server
     ServerAlias typo3.test.server
     DocumentRoot /srv/www/typo3.test.server/htdocs
     ErrorLog /srv/www/typo3.test.server/logs/error.log
     CustomLog /srv/www/typo3.test.server/logs/access.log combined
</VirtualHost>

Habilitar cada host virtual.

a2ensite drupal.test.server
a2ensite typo3.test.server

Reiniciar Apache para guardar los cambios.

service apache2 restart

MySQL

Instalar MySQL ejecutando el comando

aptitude install mysql-server mysql-client

Introduzca una contraseña para el usuario root de MySQL.

Ejecute el comando mysql_secure_installation para asegurar la instalación de MySQL.

mysql_secure_installation

Siga las instrucciones para eliminar usuarios anónimos, deshabilitar el acceso remoto del usuario root y eliminar la base de datos de prueba.

Creación de base de datos

Iniciar una sesión de MySQL. Introduzca la contraseña del usuario root de MySQL.

mysql -u root -p

Crear una base de datos para el sitio web. En este ejemplo es necesario crear una base de datos para cada host virtual de Apache.

create database drupaldb;
create database typo3db;

Crear un usuario en MySQL y concederle permisos para acceder a la base de datos nueva.

grant all on drupaldb.* to 'drupal_user' identified by '***';
grant all on typo3db.* to 'typo3_user' identified by '***';

Los nombres de usuario y contraseñas de MySQL sólo se utilizan para la conexión a la base de datos y no necesitan (no deberían) ser usuarios reales en el sistema operativo Debian.

Actualizar las tablas de permisos de MySQL.

flush privileges;

Terminar la sesión de MySQL.

quit

PHP

Instalar PHP ejecutando

aptitude install php5 php-pear libapache2-mod-php5 php5-mysql php5-mcrypt

Abrir el archivo de configuración de PHP /etc/php5/apache2/php.ini y verificar que los valores de la configuración correspondan a los que se muestran abajo.

Extracto del archivo: /etc/php5/apache2/php.ini

max_execution_time = 30
memory_limit = 128M
error_reporting = E_ALL
display_errors = On
log_errors = On
error_log = /var/log/php/php_errors.log

Crear el directorio /var/log/php/ y hacerlo accesible a Apache.

mkdir /var/log/php
chown www-data /var/log/php

Reiniciar Apache.

service apache2 restart

Crear el archivo /srv/www/drupal.test.server/htdocs/index.php.

Archivo: /srv/www/drupal.test.server/htdocs/index.php

<?php
phpinfo();
?>

Finalmente, comprobar el funcionamiento del entorno de desarrollo LAMP abriendo el archivo index.php en un navegador (http://drupal.test.server/index.php).

Xdebug

Instalar Xdebug para PHP 5 ejecutando el comando

aptitude install php5-xdebug

Configurar Xdebug para apoyar la depuración remota, por ejemplo desde Eclipse en un cliente Windows. La dirección IP del cliente en este  ejemplo es 192.168.0.155.

Extracto del archivo: /etc/php5/mods-available/xdebug.ini

zend_extension=/usr/lib/php5/20100525/xdebug.so

; Depuración remota
xdebug.remote_enable=1
xdebug.remote_host=192.168.0.155
xdebug.remote_port=9000
xdebug.remote_log=/tmp/xdebug_remote.log

Reiniciar Apache.

service apache2 restart

Para verificar que la instalación de Xdebug se ha realizado correctamente, abrir nuevamente el archivo index.php en un navegador (http://drupal.test.server/index.php) y buscar la sección que se parece a la imagen de abajo.

phpMyAdmin

Instalar phpMyAdmin ejecutando el comando

aptitude install phpmyadmin

Continuar con la instalación como se muestra abajo.

Servidor Web para reconfigurar automáticamente: ninguno

Configuración de base de datos para phpmyadmin con dbconfig-common?: No

Para cada host virtual (en este ejemplo drupal.test.server y typo3.test.server) que requiera acceso a la instalación de phpMyAdmin, crear un enlace simbólico desde el directorio raíz de documentos a la ubicación de la instalación de phpMyAdmin (/usr/share/phpmyadmin).

cd /srv/www/drupal.test.server/htdocs/
ln -s /usr/share/phpmyadmin

cd /srv/www/typo3.test.server/htdocs/
ln -s /usr/share/phpmyadmin

Abrir un navegador y comprobar el acceso a phpMyAdmin para cada host virtual.

http://drupal.test.server/phpmyadmin/

http://typo3.test.server/phpmyadmin/

Utilizar el nombre de usuario y la contraseña creados durante la instalación de MySQL.

A continuación, un ejemplo para el host virtual drupal.test.server y el usuario drupaldbuser de MySQL.

 Si se puede iniciar una sesión, significa que phpMyAdmin ha sido instalado correctamente.

Samba (opcional)

Instalar Samba para acceder a la carpeta raíz de documentos de Apache (/srv/www) desde un cliente remoto, en este ejemplo desde un cliente Windows.

aptitude install samba

Crear una cuenta en Samba para el usuario tester del sistema Linux.

smbpasswd -a tester

New SMB password:
Retype new SMB password:
Added user tester.

Agregarlo al grupo www-data de Apache.

usermod -a -G www-data tester

Cambiar los permisos de la carpeta raíz de documentos de Apache (/srv/www).

chgrp -R www-data /srv/www
chmod -R ug+w /srv/www

Abrir el archivo /etc/samba/smb.conf y añadir la configuración para la carpeta compartida www como se muestra abajo.

Extracto del archivo: /etc/samba/smb.conf

security = user
usershare allow guests = no

#=============== Share Definitions ================
[www]
     comment = Carpeta WWW de Apache en lamp.test.server
     path = /srv/www
     valid users = @www-data
     force group = www-data
     force create mode = 0664
     force directory mode = 0775
     writable = yes
     browseable = yes

Reiniciar Samba.

service samba restart

Asignar a una unidad cualquiera (en este ejemplo W:) del cliente Windows la carpeta compartida www de Apache. Usar para esto la cuenta del usuario tester de Samba.