Instalación y configuración del entorno LAMP (Apache + PHP + MySQL) en ArchLinux con systemd

Tuesday 16 de October de 2012, 10:41 am 70 Comments

ArchLinux systemd LAMP

Ahora que las nuevas instalaciones de ArchLinux usan systemd de manera predeterminada, algunas cosas han cambiado, entre ellas, ciertos detalles en la instalación y configuración del entorno LAMP (Linux + Apache + MySQL + PHP).

Aprovechando que hace unos días realicé una instalación limpia en mi equipo de producción, también lo hice con dicha instalación y configuración, misma que comparto con ustedes en el presente tutorial.

[Actualización 2014-03-10] ¡Ha llegado Apache 2.4 a ArchLinux! Es un cambio importante y requiere nuestra intervención manual para hacer que nuestro servidor LAMP vuelva a funcionar sin problemas.

Paso 1. Instalación de los paquetes necesarios

Antes que nada, instalemos los paquetes básicos que necesitaremos.

sudo pacman -S apache php php-apache mysql

Paso 2. Ejecutando Apache

Ejecutemos (vía systemd) nuestro servidor web Apache con las configuraciones predeterminadas:

sudo systemctl start httpd.service

Adicionalmente, para que Apache se ejecute de manera automática en los siguientes booteos, usa:

sudo systemctl enable httpd.service

Ahora bien, ¿cómo se llama tu servidor? Eso lo tienes establecido en dos archivos: /etc/hostname y /etc/hosts. Lo más común es que en ambos tengas localhost. Si no es así, reemplaza “localhost” por tu nombre de servidor en el resto del tutorial.

En tu navegador web favorito, entra a http://localhost/ o http://127.0.0.1/ donde veremos algo similar a la siguiente captura de pantalla.

Apache corriendo en ArchLinux con systemd

¡Muy feo! ¿verdad? Es porque localhost no tiene ningún contenido, ¡así que vamos a solucionarlo!.

Paso 3. Creando nuestro index.html

Antes de crear nuestro index.html, debemos tener en cuenta dos detalles que se encuentran establecidos en /etc/httpd/conf/httpd.conf (el archivo de configuración principal de Apache en ArchLinux):

  • Durante el booteo del sistema, el encargado de ejecutar Apache es root, pero por motivos de seguridad, de inmediato se cambia al usuario http (que a su vez pertenece al grupo http).

  • La carpeta predeterminada para el contenido de localhost es /srv/http, cuyo propietario es root de manera predeterminada.

Debido a lo anterior, debemos realizar algunas acciones para poder empezar a crear contenido en nuestro servidor web local.

  1. Primero, debemos agregar nuestro usuario al grupo http.

    sudo gpasswd -a miusuario http

    Debemos cerrar nuestra sesión actual y volver a loguearnos para que el cambio sea aplicado.

  2. Ahora, debemos ceder la propiedad de root a http (tanto para el usuario como para el grupo) de manera recursiva para /srv/http.

    sudo chown -R http:http /srv/http
  3. Debemos establecer permisos de escritura para el grupo http (al cual nos hemos agregado) para la misma carpeta (y todo su contenido).

    sudo chmod -R g+w /srv/http

Ahora si, ya podemos crear nuestro index.html, el cual puede ser desde una simple línea de texto …

echo 'Hola Mundo!' > /srv/http/index.html

… hasta algo más elaborado (usa tu editor preferido y guardalo como index.html en /srv/http/).

<!DOCTYPE html>
<html lang="es">
<head>
    <meta charset="utf-8">
    <title>¡Bienvenidos a ArchLinux!</title>
    <style>
        body { margin: 0; font-family: Helvetica, Arial, sans-serif; }
        h1 { background: #ccc; margin: 0; padding: 10px; }
        #contenido { margin: 10px auto; padding: 10px; width: 500px; }
    </style>
</head>
<body>
<div id="contenido">
    <h1>¡Bienvenido!</h1>
    <p><strong>Apache</strong> corriendo bajo <strong>ArchLinux</strong> con <strong>systemd</strong>.</p>
</div>
</body>
</html>

index.html en funcionamiento

Paso 4. Configurando PHP

Este paso es el típico de siempre. Vamos a configurar Apache para que reconozca a PHP.

Primero, como root, abre el archivo /etc/httpd/conf/httpd.conf con tu editor favorito. Por ejemplo:

sudo vim /etc/httpd/conf/httpd.conf

Ahí, realiza los siguientes cambios:

  1. En la lista que tiene todos los “LoadModule“, y después de LoadModule dir_module modules/mod_dir.so, agrega la línea:

    LoadModule php5_module modules/libphp5.so
  2. Al final de la lista de todos los “Include“, agrega la línea:

    Include conf/extra/php5_module.conf
  3. Asegúrate que la siguiente línea no esté comentada (que no tenga “#” al inicio) en la sección :

    TypesConfig conf/mime.types
  4. Descomenta (elimina el “#” del inicio) la siguiente línea:

    MIMEMagicFile conf/magic

Ahora, como root, abre el archivo /etc/httpd/conf/mime.types con tu editor preferido (¡seguro que es vim!). Por ejemplo:

sudo vim /etc/httpd/conf/mime.types

Al final de dicho archivo agrega la línea:

application/x-httpd-php5            php php5

¡Listo! Reiniciemos Apache para aplicar los cambios:

sudo systemctl restart httpd.service

Para probar que Apache ya reconoce a PHP, vamos a crear el típico archivo de ejemplo:

echo '<?php phpinfo(); ?>' > /srv/http/info.php

Y finalmente, para verlo entra a tu navegador web, y entra a http://localhost/info.php

PHP reconocido por Apache

Paso 5. Configurando MySQL

Primero, vamos a ejecutar de inmediato el servidor de base de datos MySQL con:

sudo systemctl start mysqld.service

Para que se ejecute en cada booteo, usamos:

sudo systemctl enable mysqld.service

Y antes de que hagamos cualquier otra cosa, debemos establecer la contraseña del usuario “root” de MySQL (no es el mismo que el root del sistema). La forma más sencilla de hacerlo, es ejecutar la siguiente utilería:

mysql_secure_installation

Lo anterior nos preguntará primero la contraseña actual de root, la cual no existe, así que debemos dar [Enter], y entonces escribir (y confirmar) la nueva contraseña. Adicionalmente, la utilería nos preguntará algunos detalles adicionales, a los cuales se sugiere responder las opciones predeterminadas.

Ahora, tenemos que decirle a PHP de la existencia de MySQL. Vamos a abrir el archivo /etc/php/php.ini con tu editor favorito …

sudo vim /etc/php/php.ini

… y descomentar (eliminar el “;” al inicio) las siguientes líneas:

 extension=mysqli.so
 extension=mysql.so

Si deseas realizar alguna modificación en los parámetros de MySQL debes hacerlo editando el archivo /etc/mysql/my.cnf.

Finalmente, reiniciemos Apache y MySQL para aplicar los cambios realizados.

sudo systemctl restart httpd.service
sudo systemctl restart mysqld.service

Comentarios Adicionales

Aunque ya los mencioné, no olviden que los archivos de configuración son:

  • Apache: /etc/httpd/conf/httpd.conf
  • PHP: /etc/php/php.ini
  • MySQL: /etc/mysql/my.cnf

Tampoco olviden que bajo systemd, se utilizan los comandos:

  • Habilitar para cada booteo: sudo systemctl enable <servicio>
  • Ejecutar de inmediato: sudo systemctl start <servicio>
  • Detener de inmediato: sudo systemctl stop <servicio>
  • Reiniciar de inmediato: sudo systemctl restart <servicio>
  • Ver el estado del servicio: sudo systemctl status <servicio>

Donde <servicio> puede ser alguno de los siguientes:

  • Apache: httpd.service
  • MySQL: mysqld.service

Por último, no olviden consultar la documentación oficial para más información:

Share

Post tags