¿En qué podemos ayudarte?
En esta guía veremos los pasos para instalar PHP, MySQL y Apache en un servidor con Ubuntu. El objetivo final es tener un servidor web plenamente operativo y funcional sobre el que podamos implementar diferentes plataformas y servicios.
Requisitos previos
- Servidor con Ubuntu - Aquí encontraremos las instrucciones para implementarlo en AWS. Hemos seguido las intrucciones de esa guía para instalar una intancia t3.small de EC2 con Ubuntu Bionic 18.0
- Conocimientos básicos de la consola de comandos - Necesarios para instalar y configurar los diferentes paquetes en el servidor
Instalación del servidor Apache
Nos conectamos a la instancia por SSH e instalamos el paquete de Apache 2
sudo apt update
sudo apt upgrade
sudo apt install apache2
El proceso de instalación tomará algunos segundo y tendremos nuestro servidor Apache funcionando. Podemos comprobarlo con el comando sudo service apache2 status en la consola. Tambien podemos acceder a la IP de nuestro servidor y veremos la página por defecto del Apache.
El comando sudo service <nombre-del-servicio> <parámetro>, es uno de los que utilizaremos con bastante frecuencia, sus parámetros son
- nombre-del servicio: Servicio a gestionar
- parámetro: Usaremos
- start - Arrancar el servicio
- stop - Detener el servicio
- restart - Reiniciar el servicio
- status - Comprobar el estado del servicio
Una vez comprobado el correcto funcionamiento del servidor Apache, pasamos al siguiente elemento, la base de datos.
Instalación de MySQL/MariaDB
MySQL y MariaDB son motores de base de datos gratuitos y totalmente compatibles. La elección de uno u otro motor es posiblemente una cuestion de preferencia personal. En nuestro caso usaremos MySQL, procedemos a su instalación:
sudo apt install mysql-server mysql-client
Con este comando, instalamos tanto el servidor de la base de datos, como el cliente de consola para gestionar el servidor desde la interfaz de comandos. Sin embargo, como veremos más adelante, suele ser habitual gestionar el servidor desde una interfaz gráfica, como phpmyadmin.
Si preferimos utilizar MariaDB el comando a utilizar será sudo apt install mariadb-server mariadb-client. Sea cual sea el motor instalado, los pasos siguientes son válidos para ambos.
Lo primero que debemos hacer es reforzar la seguridad de la base de datos. Para ello utilizaremos el comando sudo mysql_secure_installation, el cual lanzará un asistente que nos guiará durante el proceso mediante preguntas:
- Configurar el plugin VALIDATE PASSWORD - Respondemos que sí y seleccionamos el nivel de fortaleza para las contraseña de los usuarios de la base de datos. Cada caso es diferente, aunque yo suelo escoger MEDIUM (+8 caracteres incluendo: mayúsculas, minúsculas, números y símbolos)
- Establecemos una contraseña para el usuario root. Esta contraseña será evaluada contra el nivel de seguridad establecido en el paso anterior
- ¿Eliminar usuarios anónimos? - Respondemos que sí
- ¿Prohibir el acceso remoto del usuario root? - Respondemos que sí. El acceso del administrador principal debe hacerse desde el propio servidor
- ¿Eliminamos la base de datos de pruebas? Respondemos que sí
- Respondemos que sí a la última pregunta para activar los cambios
A partir de la versión 5.7 MySQL en servidores Ubuntu, el usuario root de MySQL no se autentifica mediante contraseña. Podemos cambiar este comportamiento, pero yo prefiero crear otro usuario con derechos de administración y utilizarlo en el día a día. Parar ello ejecutamos sudo mysql y una vez en la shell del cliente mysql, ejecutaremos los siguientes comandos:
mysql> CREATE USER 'nombre-de-usuario'@'localhost' IDENTIFIED BY 'contraseña';
mysql> GRANT ALL PRIVILEGES ON * . * TO 'nombre-de-usuario'@'localhost';
mysql> FLUSH PRIVILEGES;
mysql> SELECT user,authentication_string,plugin,host FROM mysql.user;
Si todo ha ido bien deberiamos ver algo similar a:
El nuevo usuario administrador será el que usaremos en el día a día y, por ejemplo, para instalar: wordpress, phpmyadmin u otros paquetes que accedan a MySQL. Salimos de mysql con QUIT y comprobamos que podemos acceder con el usuario recién creado:
mysql -u nombre-de-usuario -p
se nos pedirá la contraseña y si todo ha ido bien, estaremos dentro
Ya podemos pasar al último paquete
Instalar PHP
El comando instalar PHP es sudo apt install php libapache2-mod-php php-mysql. Este comando instalará la ultima versión disponible en el repositorio, junto con los módulos para Apace y MySQL. Podemos comprobar la versión instalada con php -v
Para comprobar el funcionamiento PHP en el Apache crearemos un pequeño archivo en la carpeta /var/www/html. Esta es la carpeta utilizada por defecto para servir los archivos web. Es comando a utilizar es sudo nano /var/www/ html/inform.php. El archivo contendrá una sola línea:
<?php phpinfo();
Guardamos las modificaciones y accedemos a nuestro servidor en http://ip_publica/inform.php, veremos información detallada sobre los módulos instalados y la configuración de nuestro servidor.
No conviene dejar el archivo disponible, pues revela información interna de nuestro servidor, por tanto una vez comprobado que todo va bien, lo eliminamos: sudo rm /var/www/html/inform.php
Al instalar PHP, es habitual que demos preferencia al archivo index.php cuando se le solicita el contenido de una carpeta. Para ello ejecutamos el comando sudo nano /etc/apache2/mods-enabled/dir.conf y movemos index.php al inicio de la lista. El resultado final será
<IfModule mod_dir.c>
DirectoryIndex index.php index.html index.cgi index.pl index.xhtml index.htm
</IfModule>
Guardamos las modificaciones y comprobamos que no hemos cometido errores al modificar la configuracion:
apachectl configtest
Si no hay errores reniciamos el servidor Apache sudo service apache2 restart
Por último, podemos ampliar las funcionalidades de PHP mediante la instalación de módulos adicionales. Para ello usaremos el comando sudo apt install e indicaremos los nombres de los módulos a instalar separados por espacios.
Ya tenemos un servidor web totalmente operativo que podemos utilizar en nuestros proyectos.