En este tutorial vamos a hacer una instalación (en este artículo no se tratará la configuración de los servicios) paso a paso de un entorno Linux con Apache, MySQL y PHP.
Seguramente penséis que es una tarea bastante simple, pero si queremos un entorno "actualizado" con versiones tales como Apache 2.4.X PHP7.X y MySQL 5.7 o superior, debemos de habilitar varios repositorios, y han de ser en este riguroso orden:
1 |
sudo yum --setopt=group_package_types=mandatory,default,optional group install "Development Tools" |
1 |
sudo yum update |
1 |
sudo yum install centos-release-scl |
NOTA: Es conveniente instalar el paquete wget para descargar manualmente librerías o paquetes que nos puedan dar error y tengamos que instalarlas a parte. Para instalar wget ejecutamos el comando
1 |
sudo yum install wget |
Y para localizar los paquetes que necesitamos, podemos servirnos de esta web.
Habiendo instalado todos los requistitos previos, procederemos a instalar el servidor Apache. El paquete que instalaremos será apache24 que es la última versión en la fecha de redacción de este tutorial. A su vez, hay que mencionar que el nombre de los paquetes es distinto, y por tanto, también cambia el nombre del servicio. Para instalar el servidor web debemos ejecutar los siguientes comandos:
1 2 3 |
sudo yum install httpd24 #Permitimos que se detecte como aplicación ubicada en otra ubicación el sistema de archivos scl enable httpd24 bash |
El nombre del servicio es httpd24-httpd, con lo que para operar con el servicio usaremos los siguientes comandos:
1 |
systemctl start httpd24-httpd |
1 |
systemctl stop httpd24-httpd |
1 |
systemctl status httpd24-httpd |
1 |
systemctl enable httpd24-httpd |
Finalizada la instalación, debemos agregar la excepción al firewall y la excepción a selinux. La ruta de instalación es /opt/rh/httpd24 y los subdirectorios y archivos quedan tal que así:
1 |
semanage fcontext -a -t httpd_sys_content_t ".../html(/.*)?" |
1 |
semanage fcontext -a -t httpd_cache_t ".../html/cache(/.*)?" |
1 |
semanage fcontext -a -t httpd_log_t ".../html/logs(/.*)?" |
1 2 |
restorecon -Rv /html #Aplica las directivas creadas |
SELINUX=disabled
Debemos reiniciar para aplicar los cambios.
1 2 3 |
sudo firewall-cmd --zone=public --add-service=http sudo firewall-cmd --list-all sudo firewall-cmd --zone=public --permanent --add-service=http |
Una vez arrancado el servicio y comprobado el estado del servicio, pasamos a probar en local si el navegador funciona, y en caso afirmativo continuamos el tutorial.
En esta parte del tutorial llegamos a un punto en el que varían los paquetes a instalar, dado que no todos necesitamos los mismos módulos de PHP.
Si seleccionamos el paquete rh-php71 nos instalará todas las extensiones de PHP. Si queremos instalarlas individualmente, debemos de instalar el paquete rh-php71-fpm y el resto de módulos a parte. Para el paquete completo:
1 2 |
sudo yum install rh-php71 sudo scl enable rh-php71 bash |
La ruta en la que se instala este paquete es /opt/rh/rh-php71/root, y los subirectorios quedan de la siguiente manera:
A continuación, configuramos el fichero /opt/rh/httpd24/root/etc/httpd/conf.d/php.conf añadiendo las siguientes líneas:
Evitamos que se vean archivos .user.ini:
1 2 3 4 |
<Files ".user.ini"> Require all denied </Files> AddType text/html .php |
Añadimos un index.php a la lista de archivos que serán mostrados como índice:
1 |
DirectoryIndex index.php |
Habilitamos la autenticación en las cabeceras http
1 |
SetEnvIfNoCase ^Authorization$ "(.+)" HTTP_AUTHORIZATION=$1 |
Forzamos la ejecución de scripts al backend
1 2 3 |
<FilesMatch \.php$> SetHandler "proxy:fcgi://127.0.0.1:9000" </FilesMatch> |
Una vez guardados los cambios, procedemos a reiniciar apache, e inciamos el servicio de PHP. Para gestionar los servicios:
1 |
sudo systemctl start rh-php77-php-fpm |
1 |
sudo systemctl stop rh-php77-php-fpm |
1 |
sudo systemctl status rh-php77-php-fpm |
1 |
sudo systemctl enable rh-php77-php-fpm |
Tras comprobar que el servicio funciona bien y hacer un script en php de prueba, pasamos a la última parte del tutorial.
En este punto, hay 3 opciones posibles para instalar:
La versión de 8.0 no está en los repositorios de las software collections, así que voy a centrarme en esta versión, por que para las alternativas anteriores basta con seguir los pasos que nos indiquen en la web.
Primero nos descargamos con wget el paquete pertinente:
1 |
wget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-community-server-8.0.12-1.el7.x86_64.rpm |
Después lo instalamos (esta vez se usan las rutas por defecto):
1 |
rpm -ivh mysql-community-server-8.0.12-1.el7.x86_64.rpm |
Por último, arrancamos el servicio mysql, para gestionar los servicios de mysql usaremos los siguientes comandos:
1 |
sudo systemctl start mysqld |
1 |
sudo systemctl stop mysqld |
1 |
sudo systemctl status mysqld |
1 |
sudo systemctl enable mysqld |
1 |
sudo grep 'temporary password' /var/log/mysqld.log |
1 |
sudo mysql_secure_installation |