Nota: Esta es la “version 2017” de este tutorial, con algunos “arreglos” al tutorial original. Quiero agradecer públicamente a archive.org porque afortunadamente, ellos tienen en su caché de páginas una copia del tutorial original.
¿Qué es LAMP?

Citando a Wikipedia:

LAMP es el acrónimo usado para describir un sistema de infraestructura de internet que usa las siguientes herramientas:

  • Linux, el sistema operativo; En algunos casos también se refiere a LDAP.
  • Apache, el servidor web;
  • MySQL/MariaDB, el gestor de bases de datos;
  • Perl, PHP, o Python, los lenguajes de programación.

La combinación de estas tecnologías es usada principalmente para definir la infraestructura de un servidor web, utilizando un paradigma de programación para el desarrollo.

¿Por que instalar LAMP de esta manera y no mediante un paquete como XAMPP?

Cuando se tiene un entorno de producción (ya sea un servidor dedicado o un VPS), no es buena idea utilizar algunos paquete tipo XAMPP ya que esa no es su intención principal. De acuerdo a lo que se menciona en el foro de XAMPP:

Para administrar un servidor web público, se necesita cierto conocimiento.
Si tienes este conocimiento, podrás instalar Apache, PHP y MySQL de manera independiente y por cuenta propia.
O utiliza un paquete que este hecho para entornos de producción, como Zend Server.
O renta un hosting compartido. Eso te costará unos pocos billetes, ellos se encargarán de la seguridad y la accesibilidad al sitio por ti, para que te enfoques en cosas más importantes.

Con respecto a los desarrolladores, instalar “manualmente” LAMP, les permitira familiarizarse y adquirir el conocimiento que se necesita para trabajar un entorno “real”, sin un panel (como cPanel) de por medio.

Antes de comenzar: Actualizar el sistema

Antes que nada, debemos actualizar los paquetes del sistema. Este paso es de suma importancia, sobre todo cuando el sistema fue instalado recientemente. En una terminal, escribimos:

sudo pacman -Syu

Paso 1: Instalar Apache

Despues de ejecutar la actualización del sistema, llego el turno de instalar y configurar apache. Ejecutamos:

sudo pacman -S apache

Después de la instalación, es necesario configurar algunas pocas cosas. Con nuestro editor de texto favorito (en este ejemplo usaremos Mousepad) abriremos el archivo de configuración de apache:

sudo mousepad /etc/httpd/conf/httpd.conf

Comentamos (en caso de ser necesario) la siguiente linea:

#LoadModule unique_id_module modules/mod_unique_id.so

Y reiniciamos apache:

sudo systemctl restart httpd

 

La carpeta publica del servidor se encuentra en /srv/http/. Para probar la instalación,  podemos crear un archivo HTML, ponerlo en la carpeta /srv/http/, y abrir nuestro navegador web en la direccion 127.0.0.1 o http://localhost:

{img}

Opciones avanzadas

De acuerdo a la documentación de Apache, cuando el servicio es iniciado por el usuario root, el UID del proceso cambia al especificado en el archivo httpd.conf. Las lineas:

User http

Group http

Nos indican a que usuario y a que grupo se realiza este cambio.

Por defecto, apache se puede accesar desde otras computadoras. Esto se puede comprobar accesando a la dirección IP de la computadora donde tenemos nuestra instalación de apache:

Hola windows 😀

Para hacer que apache solo sea accesible de manera local (cuando por ejemplo, queremos nuestra instalación para desarrollar aplicaciones), buscamos la siguiente linea en la configuración de Apache:

Listen 80

Lo cambiamos por:

Listen 127.0.0.1:80

Y reiniciamos apache. Podemos comprobar que apache no acepta conexiones externas cuando visitamos la IP de nuestro servidor en otra computadora:

Oh no 🙁

La linea anterior también sirve para cambiar el puerto que utiliza apache, entre otras cosas.

En las lineas:

Document root “/srv/http”

<Directory “/srv/http”>

Se especifica el directorio en los cuales se guardaran las paginas web de nuestro servidor. En caso de que queramos cambiar el directorio, ambas lineas deben editarse.

En esta misma seccion encontraremos la linea:

AllowOverride None

Que hace que Apache ignore los archivos .htaccess. Se puede cambiar la linea a AllowOverride All, o a cualquiera de las combinaciones especificadas en la documentacion de apache.

Paso 2: Instalar MariaDB

¿Qué es MariaDB?

MariaDB es un sistema de gestión de bases de datos derivado de MySQL con licencia GPL. Es desarrollado por Michael (Monty) Widenius (fundador de MySQL) y la comunidad de desarrolladores de software libre. Introduce dos motores de almacenamiento nuevos: Aria -que reemplaza con ventajas a MyISAM- y llamado XtraDB -en sustitución de InnoDB. Tiene una alta compatibilidad con MySQL ya que posee las mismas órdenes, interfaces, APIs y bibliotecas, siendo su objetivo poder cambiar un servidor por otro directamente.

¿Por que MariaDB y no MySQL?
Esto se debe a que desde 2013, MySQL fue reemplazado en los repositorios de Arch por MariaDB. Cualquier intento de instalar MySQL en Arch (A no ser que se utilize Yaourt, ya que MySQL sigue estando disponible en AUR) derivará en Pacman sugiriendo dos paquetes: MariaDB o Percona Server. Si bien, hay diferencias interesantes entre ambos SGBD (MySQL y MariaDB), en la practica esto no supone un problema: Una aplicación que utilice bases de datos MySQL puede funcionar con MariaDB. Instalaremos el paquete mediante:

sudo pacman -S mariadb

Después de la instalación, se echa a andar el demonio de MariaDB mediante:

sudo systemctl start mysqld

Y ejecutamos la instalación de MariaDB:

sudo mysql_secure_installation

Durante la instalación se nos preguntarán algunas cuantas cosas:

  1. Asignarle contraseña al usuario root.
  2. Desactivar usuarios anonimos.
  3. Desactivar inicio de sesión remoto como usuario root.
  4. Eliminar bases de datos de prueba, asi como el acceso a estas.
  5. Recargar permisos de las tablas.

Lo ideal sería responder si a todas estas preguntas, a no ser que necesitemos alguna de estas caracteristicas. Finalizado este paso, lo úniquo que queda es instalar y configurar PHP.

Paso 3: Instalar PHP

Para instalarlo, escribiremos en el terminal:

sudo pacman -S php php-apache

Despues de esto, debemos configurar Apache para que funcione en conjunto con PHP. Con nuestro editor de textos abrimos el archivo httpd.conf

sudo mousepad /etc/httpd/conf/httpd.conf

Comentamos la linea

#LoadModule mpm_event_module modules/mod_mpm_event.so

Le quitamos el comentario a la siguiente linea (o la agregamos, si fuese necesario):

LoadModule mpm_prefork_module modules/mod_mpm_prefork.so

Posteriormente, al final del mismo archivo, agregamos el siguiente bloque:

# PHP
LoadModule php7_module modules/libphp7.so
AddHandler php7-script php
Include conf/extra/php7_module.conf

Guardamos, cerramos el archivo y reiniciamos Apache:

sudo systemctl restart httpd

Para asegurarnos que todo funciona correctamente, en la carpeta pública de nuestro servidor, creamos un archivo .php que contenga la función phpinfo() y la visitamos con nuestro navegador. Si todo salió correctamente, se desplegará una pantalla similar a esta:

Lo cual significa que la configuración básica de nuestro servidor esta lista. Con esta, tenemos una excelente base para comenzar a desarrollar aplicaciones web.

Si pretendemos usar nuestra instalación en un “entorno de producción”, también hay que fijarnos en la seguridad del servidor. Por aquí les dejo algunos tutoriales para aumentar la seguridad de nuestro servidor web: uno para PHP, y algunos para Apache (aquí y aquí)