Instalación y configuración del entorno LAMP (Apache + PHP + MySQL) en ArchLinux con systemd
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.
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.

¡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.
-
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.
-
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
-
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> |

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:
-
En la lista que tiene todos los “
LoadModule“, y después deLoadModule dir_module modules/mod_dir.so, agrega la línea:LoadModule php5_module modules/libphp5.so -
Al final de la lista de todos los “
Include“, agrega la línea:Include conf/extra/php5_module.conf
-
Asegúrate que la siguiente línea no esté comentada (que no tenga “#” al inicio) en la sección
: TypesConfig conf/mime.types -
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

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:




Pingback: LAMP (Apache + PHP + MySQL) en ArchLinux con systemd (válido para Manjaro) « Deb Linux
Pingback: Siguiendo la telaraña 42/2012 - Thalskarth's Maëlstrom
Pingback: Bitacoras.com
Pingback: Como instalar OwnCloud en Archlinux | Solo GNU/Linux
Pingback: Integrando MongoDB y PHP en ArchLinux - Obux