centos

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.

Instalación de requisitos previos

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. Developer Tools: Este repositorio es oficial, y nos ofrece un conjunto de paquetes que necesitarán los programas que instalaremos después. Para instalarlo:
sudo yum --setopt=group_package_types=mandatory,default,optional group install "Development Tools"

Luego actualizamos los repositorios con el comando:

sudo yum update

Software collections: Este repositorio oficial nos ofrece las últimas versiones estables disponibles. Para instalarlo:

sudo yum install centos-release-scl
  1. Volvemos a actualizar los repositorios, y procedemos a instalar los paquetes necesarios:

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.

sudo yum install wget

Y para localizar los paquetes que necesitamos, podemos servirnos de esta web.

Instalación de Apache

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:

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:

  • Arranque:
systemctl start httpd24-httpd
  • Parada:
systemctl stop httpd24-httpd
  • Estado de servicio:
systemctl status httpd24-httpd
  • Arranque al inicio del sistema:
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í:

Captura-ruta-directorios-apache

  • Expeción para Selinux (hay que cambiar hmtl por el directorio que en el cual se aloja el sitio web):
semanage fcontext -a -t httpd_sys_content_t ".../html(/.*)?"
semanage fcontext -a -t httpd_cache_t ".../html/cache(/.*)?"
semanage fcontext -a -t httpd_log_t ".../html/logs(/.*)?"
restorecon -Rv /html
#Aplica las directivas creadas

Estas directivas permiten la lectura, escritura. Si es un entorno de desarrollo,  Selinux no va a ser necesario, podemos cambiar la directiva pertinente en el archivo /etc/selinux/config  y cambiar los valores a

SELINUX=disabled

Debemos reiniciar para aplicar los cambios.

  • Excepción para el Firewall:
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.

Instalación de PHP 7

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:

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:

Ruta-php

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:

<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:

DirectoryIndex index.php

Habilitamos la autenticación en las cabeceras http

SetEnvIfNoCase ^Authorization$ "(.+)" HTTP_AUTHORIZATION=$1

Forzamos la ejecución de scripts al backend

<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:

  • Arranque
sudo systemctl start rh-php77-php-fpm
  • Parada
sudo systemctl stop rh-php77-php-fpm
  • Estado del servicio
sudo systemctl status rh-php77-php-fpm
  • Arranque al servicio del sistema
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.

Instalación de MySQL

En este punto, hay 3 opciones posibles para instalar:

  • MariaDB, que es un fork libre de MySQL compatible al 99%.
  • MySQL 5.7, que es una versión estable madura.
  • MySQL 8.0, que es la nueva versión de MySQL.

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:

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):

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:

  • Arranque
sudo systemctl start mysqld
  • Parada
sudo systemctl stop mysqld
  • Estado del servicio
sudo systemctl status mysqld
  • Arranque al inicio del sistema
sudo systemctl enable mysqld

Arrancado el servicio, obtenemos la contraseña temporal que MySql ha generado con el comando

sudo grep 'temporary password' /var/log/mysqld.log

Paso opcional: Securizar la instalación con el comando

sudo mysql_secure_installation
  • Este comando nos abrirá un asistente y nos irá guiando.

Bibliografía

 

Fuente: lignux

¿Quién está en línea?

Hay 19284 invitados y ningún miembro en línea