Instalar Apache Server, PHP y MariaDb en Centos 8
Seguro que alguna vez has pensando en dejar Plesk, en aprender a montar tus propias páginas y disfrutar de la libertad. Para empezar tendrás que tener en cuenta muchas cosas referentes a seguridad, configuraciones, etc. Pero si bien, no es tan complicado montar una web desde un servidor no administrado o sin panel de control. Para ello puedes utilizar plataformas como Clouding.io que te permiten virtualizar VPS de forma rápida, clonarlos, configurarlos a tu gusto y costearlo por horas de uso.
Contenido
Instalación de Apache Server (httpd)
Teniendo en cuenta que trabajas con privilegios, en mi caso con le usuario root. Lo primero que haremos será un update de los repos:
yum update
Una vez este todo actualizado podemos instalar Apache Server:
yum install httpd
Una vez que la instalación se completa, Apache no se inicia automáticamente en CentOS, por lo que deberá iniciar el proceso de Apache de forma manual:
yum start httpd
Para comprobar que esta funcionando correctamente:
status httpd
Consideraciones:
- Verifique que el puerto 80 (http) esta abierto
- Si va a utilizar https recuerde abrir el puerto 433
Puedes encontrar más información en este artículo de digitalocean.com
Configuración de hosts virtuales
Si deseas configurar más de un dominio deberás crear host virtuales, en este tutorial puedes encontrar más información.
Instalar PHP 8.0
Para instalar php lo más recomendable es saber si tenemos instalada alguna versión utilizando yum info, sino puedes añadir el repositorio de remi:
yum install -y https://rpms.remirepo.net/enterprise/remi-release-8.rpm
Siempre después un update:
yum update -y
Desactiva el modulo de la distribución de Centos
yum module disable -y php
Y activa el de la distribución
yum module enable -y php:remi-8.0
Y ya puedes instalar php
yum install -y php
Tras la descarga e instalación del paquete php y sus dependencias se crea un nuevo servicio en nuestro sistema CentOS 8, llamado php-fpm.service, o más brevemente php-fpm.
El servicio php-fpm no se inicia tras la instalación ni está configurado para arrancar automáticamente con cada inicio de CentOS 8, por lo que tendremos que hacer esta primera configuración.
Para arrancar el servicio usaremos systemctl start:
systemctl start php-fpm
Y para que php-fpm inicie automáticamente con CentOS 8 usaremos systemctl enable:
systemctl enable php-fpm
Podemos comprobar que php-fpm está en ejecución y activado con el comando
systemctl status php-fpm
Y por último reinicia apache:
systemctl restart httpd
Puedes ver que funciona php colocando un archivo .php en directorio var/www/html/ con una funcion phpinfo().
Por último tendrás que configurar php a tu gusto editando el archivo /etc/php.ini
Te recomiendo este tutorial de instalación de PHP en Centos para completar tus conocimientos.
Instalar MariaDB
Para instalar MariaDB en Centos8 empezaremos por comprobar que todo esta actualizado, haremos un update. Después podemos comenzar:
yum install -y mariadb-server
En unos instantes se habrán descargado e instalado el paquete mariadb-server y sus dependencias, tras lo que se creará en nuestro sistema CentOS 8 el servicio mariadb.service.
A continuación tendremos que ejecutar el servicio y ponerlo para que se quede en ejecución en caso de reinicio.
systemctl start mariadb
En mi caso me encontré con un error «/usr/libexec/mysql-prepare-db-dir: line 18: /dev/null: Permission denied» al arrancar el servicio (puedes verlo con systemctl status mariadb).
Lo solucione ejecutando:
rm -f /dev/null; mknod -m 666 /dev/null c 1 3
Y después, solo quedará poner enable el servicio para que se reinicie siempre:
systemctl enable mariadb
Muy recomendable este tutorial de instalación de MariaDB en Centos o este otro de DigitalOcean
Acceder a MaribaDB y configurar su acceso remoto
Al instalar MariaDB en CentOS 8 se crea el usuario root sin contraseña, por lo que cualquier usuario puede acceder como administrador de MariaDB sin problemas. Por tanto la primera acción será crear una contraseña.
mysql_secure_installation
- Enter current password for root (enter for none): – Dejaremos en blanco, ya que inicialmente root no tiene contraseña.
- Set root password? [Y/n] – Contestaremos Y, para establecer una contraseña de root. A continuación nos pedirá la contraseña y su confirmación.
- Remove anonymous users? [Y/n] – Aunque la instalación por defecto no incluye usuarios anónimos, contestaremos Y.
- Disallow root login remotely? [Y/n] – Contestaremos afirmativamente para impedir conexiones remotas con el usuario root.
- Remove test database and access to it? [Y/n] – La instalación por defecto tampoco crea bases de datos de pruebas, aun así contestaremos Y.
- Reload privilege tables now? [Y/n] – Siempre que se hacen este tipo de cambios conviene recargar las tablas de privilegios, así que contestaremos Y.
Si nos interesa poder administrar remotamente MariaDB Server usando algún cliente, crea un usuario con suficientes privilegios y acceso remoto.
Usando el cliente mysql puedes acceder como root, pero especificando la contraseña que has creado anteriormente:
mysql -u root -p
Creamos el usuario y ejecutamos el refresco de la tabla de privilegios:
grant all privileges on *.* to alexmedina identified by 'pass' with grant option; flush privileges; exit;
Ahora ya podrás conectarte con el nuevo usuario y por ejemplo crear tu primera base de datos:
mysql -u alexmedina -p CREATE DATABASE db1; use db1; CREATE TABLE ....
Recuerda que para conexiones remotas tendrás que abrir el puerto TCP 3306 del firewall y es altamente recomendable que lo gestiones con un cliente externo como HeidiSQL o si no prefieres abrir conexiones instalar un PhpMyAdmin.
Si quieres configurar MariaDB en CentOS 8 o realizar cualquier ajuste, la configuración del servicio se reparte entre el archivo /etc/my.cnf y el directorio /etc/my.cnf.d/.
nano /etc/my.cnf.d/mariadb-server.cnf
Para que se apliquen los cambios tendrás que hacer un restart del servicio mariabd.