Cómo instalar Apache, PHP 7.3 y MySQL en CentOS 7.6
Este tutorial muestra cómo instalar un servidor web Apache en un servidor CentOS 7 con PHP (mod_php) y una base de datos MySQL. El acrónimo LAMP es la abreviatura de Linux, Apache, MySQL, PHP.
Este tutorial actualizado muestra la instalación de las últimas versiones de PHP (7.0, 7.1, 7.2 y 7.3) en CentOS 7.6.
1 Nota preliminar
En este tutorial, utilizo el nombre de host servidor1.ejemplo.com con la IP p 192.168.0.100. Estas configuraciones pueden ser diferentes en tu caso, por lo que deberás sustituirlas cuando corresponda.
Añadiré aquí el repo de EPEL para instalar la última versión de phpMyAdmin de la siguiente manera:
rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY*
yum -y install epel-release
Para editar archivos en el shell, instalaré el editor nano. Si prefieres vi para la edición de archivos, salta este paso.
yum -y install nano
2 Instalación de MySQL / MariaDB
MariaDB es un fork de MySQL del desarrollador original de MySQL, Monty Widenius. MariaDB es compatible con MySQL y he elegido utilizar MariaDB aquí en lugar de MySQL. Ejecuta este comando para instalar MariaDB con yum:
yum -y install mariadb-server mariadb
A continuación, creamos los enlaces de inicio del sistema para MySQL (para que MySQL se inicie automáticamente cada vez que el sistema arranque) e iniciamos el servidor MySQL:
systemctl start mariadb.service
systemctl enable mariadb.service
Establece las contraseñas para la cuenta raíz de MySQL:
mysql_secure_installation
[root@server1 ~]# mysql_secure_installation
NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB
SERVERS IN PRODUCTION USE! PLEASE READ EACH STEP CAREFULLY!
In order to log into MariaDB to secure it, we'll need the current
password for the root user. If you've just installed MariaDB, and
you haven't set the root password yet, the password will be blank,
so you should just press enter here.
Enter current password for root (enter for none): <--ENTER
OK, successfully used password, moving on...
Setting the root password ensures that nobody can log into the MariaDB
root user without the proper authorisation.
Set root password? [Y/n]
New password: <--yourmariadbpassword
Re-enter new password: <--yourmariadbpassword
Password updated successfully!
Reloading privilege tables..
... Success!
By default, a MariaDB installation has an anonymous user, allowing anyone
to log into MariaDB without having to have a user account created for
them. This is intended only for testing, and to make the installation
go a bit smoother. You should remove them before moving into a
production environment.
Remove anonymous users? [Y/n] <--ENTER
... Success!
Normally, root should only be allowed to connect from 'localhost'. This
ensures that someone cannot guess at the root password from the network.
Disallow root login remotely? [Y/n] <--ENTER
... Success!
By default, MariaDB comes with a database named 'test' that anyone can
access. This is also intended only for testing, and should be removed
before moving into a production environment.
Remove test database and access to it? [Y/n] <--ENTER
- Dropping test database...
... Success!
- Removing privileges on test database...
... Success!
Reloading the privilege tables will ensure that all changes made so far
will take effect immediately.
Reload privilege tables now? [Y/n] <--ENTER
... Success!
Cleaning up...
All done! If you've completed all of the above steps, your MariaDB
installation should now be secure.
Thanks for using MariaDB!
[root@server1 ~]#
3 Instalación de Apache
CentOS 7 viene con Apache 2.4. Apache está disponible directamente como paquete de CentOS 7, por lo que podemos instalarlo así:
yum -y install httpd
Aquí una captura de pantalla del proceso de instalación.
Ahora configura tu sistema para que inicie Apache en el arranque…
systemctl start httpd.service
systemctl enable httpd.service
Para poder acceder al servidor web desde el exterior, tenemos que abrir los puertos HTTP (80) y HTTPS (443) en el cortafuegos. El cortafuegos por defecto en CentOS es firewalld, que se puede configurar con el comando firewalld-cmd.
firewall-cmd --permanent --zone=public --add-service=http
firewall-cmd --permanent --zone=public --add-service=https
firewall-cmd --reload
Ahora dirige tu navegador a la dirección IP de tu servidor, en mi casohttp://192.168.0.100, y deberías ver la página del marcador de posición de Apache:
4 Instalación de PHP
La versión de PHP que viene por defecto con CentOS es bastante antigua (PHP 5.4). Por lo tanto, en este capítulo te mostraré algunas opciones para instalar versiones más nuevas de PHP, como PHP 7.0 a 7.3, desde el repositorio de Remi.
Añade el repositorio Remi CentOS.
rpm -Uvh http://rpms.remirepo.net/enterprise/remi-release-7.rpm
Instala yum-utils ya que necesitamos la utilidad yum-config-manager.
yum -y install yum-utils
y ejecuta yum update
yum update
Ahora tienes que elegir qué versión de PHP quieres utilizar en el servidor. Si quieres utilizar PHP 5.4, pasa al capítulo 4.1. Para instalar PHP 7.0, sigue los comandos del capítulo 4.2, para PHP 7.1 el capítulo 4.3, para PHP 7.4 utiliza el capítulo 4.4 y para PHP 7.3 sigue el capítulo 4.5. Sigue sólo uno de los capítulos de la versión 4.x y no todos, ya que sólo puedes utilizar una versión de PHP a la vez con Apache mod_php.
4.1 Instalar PHP 5.4
Para instalar PHP 5.4, ejecuta este comando:
yum -y install php
4.2 Instalar PHP 7.0
Podemos instalar PHP 7.0 y el módulo PHP 7.0 de Apache de la siguiente manera:
yum-config-manager --enable remi-php70
yum -y install php php-opcache
4.3 Instalar PHP 7.1
Si quieres utilizar PHP 7.1 en su lugar, utiliza:
yum-config-manager --enable remi-php71
yum -y install php php-opcache
4.4 Instalar PHP 7.2
Si quieres utilizar PHP 7.2 en su lugar, utiliza:
yum-config-manager --enable remi-php72
yum -y install php php-opcache
4.5 Instalar PHP 7.3
Si quieres utilizar PHP 7.3 en su lugar, utiliza:
yum-config-manager --enable remi-php73
yum -y install php php-opcache
En este ejemplo y en la máquina virtual descargable, utilizaré PHP 7.3.
Debemos reiniciar Apache para aplicar los cambios:
systemctl restart httpd.service
5 Probando PHP / Obteniendo detalles sobre tu instalación de PHP
La raíz del documento del sitio web por defecto es /var/www/html. Crearemos un pequeño archivo PHP (info.php) en ese directorio y lo llamaremos en un navegador para probar la instalación de PHP. El archivo mostrará muchos detalles útiles sobre nuestra instalación de PHP, como la versión de PHP instalada.
nano /var/www/html/info.php
<?php phpinfo();
Ahora llamamos a ese archivo en un navegador (por ejemplo, http://192.168.0.100/info.php):
Como ves, PHP 7.3 está funcionando, y lo hace a través del Manejador Apache 2.0, como se muestra en la línea de la API del servidor. Si te desplazas más abajo, verás todos los módulos que ya están habilitados en PHP. MySQL no está en la lista, lo que significa que todavía no tenemos soporte para MySQL en PHP.
6 Obtener soporte para MySQL en PHP
Para conseguir soporte para MySQL en PHP, podemos instalar el paquete php-mysqlnd. Es una buena idea instalar también otros módulos de PHP, ya que podrías necesitarlos para tus aplicaciones. Puedes buscar los módulos de PHP5 disponibles así:
yum search php
Elige los que necesites e instálalos así:
yum -y install php-mysqlnd php-pdo
En el siguiente paso instalaré algunos módulos PHP comunes que requieren los sistemas CMS como WordPress, Joomla y Drupal:
yum -y install php-gd php-ldap php-odbc php-pear php-xml php-xmlrpc php-mbstring php-soap curl curl-devel
Ahora reinicia el servidor web Apache:
systemctl restart httpd.service
Ahora vuelve a cargar http://192.168.0.100/info.php en tu navegador y desplázate de nuevo hasta la sección de módulos. Ahora deberías encontrar un montón de módulos nuevos como curl, etc:
Si ya no necesitas la salida de información de PHP, elimina ese archivo por razones de seguridad.
rm /var/www/html/info.php
7 Instalación de phpMyAdmin
phpMyAdmin es una interfaz web a través de la cual puedes gestionar tus bases de datos MySQL.
phpMyAdmin se puede instalar ahora de la siguiente manera:
yum -y install phpMyAdmin
Ahora configuramos phpMyAdmin. Cambiamos la configuración de Apache para que phpMyAdmin permita conexiones no sólo desde localhost (comentando la estrofa <RequireAny> y añadiendo la línea ‘Require all granted’):
nano /etc/httpd/conf.d/phpMyAdmin.conf
[...]
Alias /phpMyAdmin /usr/share/phpMyAdmin Alias /phpmyadmin /usr/share/phpMyAdmin <Directory /usr/share/phpMyAdmin/>
AddDefaultCharset UTF-8
<IfModule mod_authz_core.c>
# Apache 2.4
# <RequireAny>
# Require ip 127.0.0.1
# Require ip ::1
# </RequireAny>
Require all granted
</IfModule>
<IfModule !mod_authz_core.c>
# Apache 2.2
Order Deny,Allow
Deny from All
Allow from 127.0.0.1
Allow from ::1
</IfModule>
</Directory>
<Directory /usr/share/phpMyAdmin/> Options none AllowOverride Limit Require all granted </Directory>
[...]
Reinicia Apache para aplicar los cambios de configuración:
systemctl restart httpd.service
Después, podrás acceder a phpMyAdmin en http://192.168.0.100/phpmyadmin/:
8 Descarga como máquina virtual
Esta configuración está disponible como descarga de máquina virtual en formato ova/ovf (compatible con VMWare y Virtualbox) para los suscriptores de howtoforge.
Datos de acceso a la VM
- La contraseña de root de Linux es: howtoforge.
- La contraseña raíz de MySQL es: howtoforge
Por favor, cambia ambas contraseñas en el primer inicio de sesión.
- La dirección IP de la máquina virtual es 192.168.0.100
9 Enlaces
Apache: http://httpd.apache.org/
PHP: http://www.php.net/
MySQL: http://www.mysql.com/
CentOS: http://www.centos.org/
phpMyAdmin: http://www.phpmyadmin.net/