Archivo del sitio

Debian: Cómo instalar un servidor web (Apache + PHP)

feather-small Distro: GNU/Linux Debian “Wheezy” (7.2)

Funciona en: Debian “Etch” (4.0) – Debian “Wheezy” (7.3)

La ventaja de tener un equipo con Debian es que tenemos una gran cantidad de servicios y aplicaciones que podemos instalar directo de los repositorios oficiales, de hecho, la versión “Estable” de Debian está pensada para ser utilizada como servidor. En este post, revisaremos los pasos a seguir para montar Apache (servidor web) y hacer que soporte php5.

Pasos a seguir

1.- Instalaremos el servidor web Apache (como root):

$ su
# aptitude install apache2

Podemos comprobar que el servicio está instalado correctamente si abrimos en el navegador nuestra dirección local: http://127.0.0.1 y vemos el siguiente mensaje:

itWorks

Desde la consola podemos revisar el status del demonio* [status], detenerlo [stop] o reiniciarlo [restart] (para detener o reiniciar un servicio debemos estar loggeados como root) a través de la ruta /etc/init.d, de la siguiente manera:

# /etc/init.d/apache2 status

Nos regresa:

Apache2 is running (pid 2411).

*Entiéndase como demonio, un daemon, o proceso que corre en 2do plano

2.- Una vez instalado Apache debemos cargar el módulo para que soporte php5. Para hacerlo ejecutamos:

# aptitude install libapache2-mod-php5

3.- Por default, al finalizar la instalación de Apache, nuestra carpeta /var/www tendrá permiso y grupo de root, lo cual no nos permitirá poder escribir nuestros archivos en esa ruta a menos que tengamos los permisos pertinentes (esto es, ningún usuario salvo root puede escribir en esa carpeta). Una alternativa que tenemos es utilizar el grupo www-data (al instalarse Apache, creará un usuario y grupo www-data), asignando a éste grupo los usuarios que queremos tengan permisos de escritura en /var/www.

Para hacerlo ejecutaremos en una consola lo siguiente:

1) Agregamos el usuario que queramos al grupo www-data

# usermod -a -G www-data tuNombreDeUsuario

Si quieres que el home del usuario sea /var/www puedes ejecutar:

# usermod -d /var/www tuNombreDeUsuario

2) Definimos que el grupo para /var/www sea www-data

# chgrp -R www-data /var/www

3) Cambiamos los permisos para que podamos escribir sobre el directorio y establecemos el bit setgid (SGID):

# chmod 775 -R /var/www
# chmod g+s /var/www

Nuestros permisos quedarían algo como:

# ls -al /var
drwxrwsr-x  3 root www-data 4096 May 28 08:49 www

3.- Algunos puntos importantes:

– El archivo de configuración de apache se encuentra en /etc/apache2/apache2.conf

– Podemos leer el manual de referencia ejecutando:

# man apache2

– Los archivos de nuestras páginas web, los podremos encontrar/guardar en el directorio: /var/www

– Si tenemos instalado MySQL y queremos que PHP soporte la extensión para conexiones con MySQL podemos ejecutar:

# aptitude install php5-mysql

SOLUCIÓN A POSIBLES PROBLEMAS

– Archivo de configuración principal:
/etc/apache2/apache2.conf
En ese archivo podemos hacer configuraciones globales, contiene un resumen de como podemos administrar nuestro apache, nos presenta la siguiente estructura de directorios:

# /etc/apache2/
# |-- apache2.conf
# | `-- ports.conf
# |-- mods-enabled
# | |-- *.load
# | `-- *.conf
# |-- conf.d
# | `-- *
# `-- sites-enabled

Y nos dice que para dar de alta nuevos módulos nos apoyemos de los comandos: a2enmod/a2dismod, a2ensite/a2dissite, a2enconf/a2disconf.

Veremos un ejemplo de como cargar un módulo en este post.

– Cambiar puerto de escucha:
En mi caso el servidor ya tenía nginx instalado por lo que al terminar de instalar Apache no pudo empezar a correr, por que no podía abrir el socket en el puerto 80. Para cambiar el puerto de escucha modificaremo el archivo:
/etc/apache2/ports.conf

En la línea:

Listen 80

Cambiamos el 80 por el nuevo puerto que ocupamos (mi caso 30100). ports.conf nos recomienda hacer los cambios apropiados para VirtualHost en: /etc/apache2/sites-enabled/000-default.conf

Reiniciamos apache:

# /etc/init.d/apache2 restart

Error: Could not reliably determine the server’s fully qualified domain name, using 127.0.1.1. Set the ‘ServerName’ directive globally to suppress this message

Para resolver este problema, nos vamos al directorio de archivos de configuración:

# cd /etc/apache2/conf-available

Creamos un nuevo archivo y lo daremos de alta como módulo:

# echo "ServerName localhost">servername.conf

Habilitamos el nuevo módulo:

# a2enconf servername.conf

Reiniciamos:

# /etc/init.d/apache2 restart

Como en el caso anterior, modificamos también el archivo /etc/apache2/sites-available/000-default.conf

Ejemplo de mi archivo /etc/apache2/sites-available/000-default.conf

<VirtualHost *:10000>
# The ServerName directive sets the request scheme, hostname and port that
# the server uses to identify itself. This is used when creating
# redirection URLs. In the context of virtual hosts, the ServerName
# specifies what hostname must appear in the request's Host: header to
# match this virtual host. For the default virtual host (this file) this
# value is not decisive as it is used as a last resort host regardless.
# However, you must set it for any further virtual host explicitly.
ServerName localhost

ServerAdmin webmaster@localhost
DocumentRoot /var/www/html

# Available loglevels: trace8, ..., trace1, debug, info, notice, warn,
# error, crit, alert, emerg.
# It is also possible to configure the loglevel for particular
# modules, e.g.
#LogLevel info ssl:warn

ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined

# For most configuration files from conf-available/, which are
# enabled or disabled at a global level, it is possible to
# include a line for only one particular virtual host. For example the
# following line enables the CGI configuration for this host only
# after it has been globally disabled with "a2disconf".
#Include conf-available/serve-cgi-bin.conf

# vim: syntax=apache ts=4 sw=4 sts=4 sr noet
</VirtualHost>



– Archivos de bitácora log (errores y acceso)

Se encontrarán en la ruta: /var/log/apache2

Solamente root puede acceder a éstos archivos, y son dos archivos los que nos interesan access.log y error.log

 

Enlaces de interés:

https://wiki.debian.org/Apache

http://www.rackspace.com/knowledge_center/article/how-to-add-linux-user-with-document-root-permissions

http://es.wikipedia.org/wiki/Chmod

Anuncios