Probado hasta Fedora 39!!
Actualmente estoy probando Fedora como distro principal y tenía la necesidad de configurar mi entorno LAMP tal y como lo tenía en Ubuntu.
En Fedora la paquetería difiere un poco, así como algunas configuraciones.
En este artículo vamos a ver cómo:
- Instalar el servidor web (Apache).
- Instalar el gestor de bases de datos MariaDB.
- Instalar PHP.
- Configurar php.ini con los valores óptimos para WordPress.
- Instalar phpMyAdmin para gestionar las bases de datos visualmente.
- Activar el módulo MOD REWRITE para que funcionen las URLs «amigables» en WordPress.
Instalar el servidor web Apache
Nos dirigimos a un terminal y escribimos:
sudo dnf -y install httpd
Los comandos básicos para gestionar el servidor son:
Iniciar:
sudo systemctl start httpd
Parar:
sudo systemctl stop httpd
Habilitar:
sudo systemctl enable httpd
Reiniciar:
sudo systemctl restart httpd
Recargar:
sudo systemctl reload httpd
Una vez instalado, ejecutamos los comandos de habilitar e iniciar:
sudo systemctl enable httpd
sudo systemctl start httpd
Nos dirigimos a un navegador web y entramos en http://localhost
Deberíamos ver una pantalla como esta:
En mi caso, una vez que se habilita e inicia el servidor por primera vez, ya no es necesario hacerlo en cada sesión.
Instalar MySQL (MariaDB)
De vuelta al terminal ejecutamos:
sudo dnf install mariadb-server
Los comandos para gestionar el servicio son muy similares a Apache.
Habilitar:
sudo systemctl enable mariadb
Iniciar:
sudo systemctl start mariadb
Parar:
sudo systemctl stop mariadb
Reiniciar:
sudo systemctl restart mariadb
Al igual que con Apache, en mi caso no es necesario habilitar e iniciar el servicio en cada sesión.
Securizar MySQL
Por defecto, el gestor de bases de datos viene con el usuario root sin contraseña. Vamos a asignar una contraseña ejecutando:
sudo mysql_secure_installation
Nos preguntará si queremos asignar una contraseña al usuario root, contestamos que si:
Set root password? [Y/n] y
New password: *******
Re-enter new password: ******
Password updated successfully!
Nos hará una serie de preguntas sobre si queremos eliminar usuarios anónimos, borrar las tablas de test, etc. Podemos contestar afimartívamente a todo:
Remove anonymous users? [Y/n] y
... Success!
Disallow root login remotely? [Y/n] y
... Success!
Remove test database and access to it? [Y/n] y
- Dropping test database...
... Success!
- Removing privileges on test database...
... Success!
Reload privilege tables now? [Y/n] y
... Success!
Ahora entraremos en mysql:
sudo mysql -u root
Vamos a crear un usuario distinto de root que será el que asignemos a las bases de datos que creemos después:
CREATE USER mi_usuario IDENTIFIED BY 'password';
Creamos una nueva base de datos:
CREATE DATABASE mibase;
Y asignamos nuestro usuario anterior a la nueva base de datos con todos los privilegios:
GRANT ALL PRIVILEGES ON mibase.* TO mi_usuario;
Para nuevas bases de datos el proceso sería el mismo: Crear la base de datos y asignar nuestro usuario con todos los privilegios.
Tras la asignación de nuestro usuario a la nueva base de datos no está de más hacer una limpieza de la caché almacenada con:
FLUSH PRIVILEGES;
Instalar PHP
Vamos a instalar los siguientes paquetes para PHP:
sudo dnf -y install php php-cli php-php-gettext php-mbstring php-mcrypt php-mysqlnd php-pear php-curl php-gd php-xml php-bcmath php-zip
Tras la instalación vamos a comprobar la versión de PHP con el comando:
php -v
En el momento de hacer este artículo, la versión que se instala con Fedora 34 es la 7.4.24.
Crearemos un archivo test.php para comprobar que PHP se ejecuta correctamente bajo Apache.
A mí me gusta usar nano para configurar archivos sencillos mediante la terminal, nos dirigimos a:
sudo nano /var/www/html/test.php
Y dentro pegamos la siguiente línea:
<?php phpinfo(); ?>
Guardamos los cambios con Ctrl+O y salimos con Ctrl+X.
Volvemos al navegador web a la dirección http://localhost/test.php
Debería ejecutarse el script de información de PHP:
Vamos a cambiar algunos parámetros de PHP editando su archivo de configuración (php.ini) para optimizarlo para WordPress.
La ubicación está en /etc/php.ini, por lo que de nuevo con nano, nos dirigimos a:
sudo nano /etc/php.ini
Y editamos los siguiente parámetros:
memory_limit = 128M
post_max_size = 64M
max_execution_time = 180
upload_max_filesize = 64M
max_input_time = 180
max_input_vars = 3000
Tras la edición debemos reiniciar Apache para que los cambios surjan efecto. En mi caso tuve que reiniciar el PC por completo para que se aplicaran.
Instalar phpMyAdmin
Volvemos al terminal y ejecutamos:
sudo dnf install phpmyadmin
Tras la instalación veremos que si accedemos a http://localhost/phpmyadmin nos saldrá un mensaje de error indicando que la ubicación no existe.
Tenemos que editar el archivo de configuración de phpMyAdmin de nuevo con nano:
sudo nano /etc/httpd/conf.d/phpMyAdmin.conf
Hacia la parte final del archivo, añadimos las siguientes líneas:
<Directory /usr/share/phpMyAdmin>
AddDefaultCharset UTF-8
Require all granted
</Directory>
Guardamos con Ctrl+O y salimos con Ctrl+X.
Reiniciamos el servidor con:
sudo systemctl restart httpd
O reiniciamos el equipo si no surje efecto. Ahora podemos acceder a http://localhost/phpmyadmin
Por último vamos a activar el módulo de Apache MOD REWRITE para habilitar las URLs amigables de WordPress que configuramos en los ajustes de Enlaces Permanentes.
Para ello nos dirigimos con nano a:
sudo nano /etc/httpd/conf/httpd.conf
Localizamos la línea:
<Directory "/var/www/html">
Y sustituimos AllowOverride None por AllowOverride All
De nuevo, reinicia Apache o directamente el PC.
Nota final
Si al descargar algún tema/plugin o actualización tienes un error de:
Descarga fallida: cURL error 7
Necesitamos configurar SElinux en modo permisivo. Para ello editamos el siguiente archivo:
sudo nano /etc/selinux/config
Y cambiamos el parámetro SELINUX=permissive
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
# enforcing - SELinux security policy is enforced.
# permissive - SELinux prints warnings instead of enforcing.
# disabled - No SELinux policy is loaded.
SELINUX=permissive
# SELINUXTYPE= can take one of these two values:
# targeted - Targeted processes are protected,
# mls - Multi Level Security protection.
SELINUXTYPE=targeted
Reiniciamos el equipo y eso es todo 😉
Armando dice
Hola, me sirvió el tutorial, como seria si quiero cambiar el directorio por defecto de apache, muchas gracias
Jose dice
¡Hola!,David me sirvió de mucha ayuda tu información pero cuando reinicio el portatil MYSQL Database no se inicia se queda siempre en rojo y no hay manera de poder iniciarlo nuevamente podrías darme alguna idea o ayudarme que es lo que estoy haciendo mal,la primera vez cuando segui tu tutorial al pie de la letra todo funciono y pudo instalar wordpress sin problema pero luego cuando apague el equipo y volvi a encenderlo ya no me funciona el MYSQL,pero si Apache y Proftpd.Muchas Gracias por tu ayuda.Saludos Jose.
Rigol dice
Gracias capo, muy buena guia!