GNU/Linux >> Tutoriales Linux >  >> Fedora

Cómo instalar Nginx con PHP y MariaDB (LEMP Stack) en Fedora 31

La pila de software LEMP es un grupo de software de código abierto que se instalan juntos para permitir que un servidor aloje sitios web y aplicaciones. Es un acrónimo de L entrada, E Servidor Nginx, M ySQL (usando MariaDB aquí) y P HP.

En esta guía, instalará una pila LEMP en un servidor basado en Fedora 31. También instalaremos PHPMyAdmin, Redis y Opcache.

Requisitos

  • Un servidor que ejecuta Fedora 31.

  • Un usuario sudo no root.

  • Asegúrate de que todo esté actualizado.

    $ sudo dnf upgrade
    
  • Pocos paquetes que tu sistema necesita.

    $ sudo dnf install wget curl nano -y
    

    Es posible que algunos de estos paquetes ya estén instalados en su sistema.

  • Deshabilitar SELinux.

    $ sudo setenforce 0
    

Configurar cortafuegos

El primer paso es configurar el cortafuegos. El servidor Fedora viene con el cortafuegos Firewalld preinstalado.

Compruebe si el cortafuegos se está ejecutando.

$ sudo firewall-cmd --state

Deberías obtener el siguiente resultado.

running

Configure la zona predeterminada del cortafuegos como pública.

$ sudo firewall-cmd --set-default-zone=public

Verifique los servicios/puertos permitidos actualmente.

$ sudo firewall-cmd --zone=public --permanent --list-services

Debería mostrar el siguiente resultado.

dhcpv6-client mdns ssh

Permitir puertos HTTP y HTTPS.

$ sudo firewall-cmd --zone=public --permanent --add-service=http
$ sudo firewall-cmd --zone=public --permanent --add-service=https

Vuelva a comprobar el estado del cortafuegos.

$ sudo firewall-cmd --zone=public --permanent --list-services

Debería ver un resultado similar.

dhcpv6-client http https mdns ssh

Vuelva a cargar el cortafuegos.

$ sudo systemctl reload firewalld

Instalar PHP

Fedora 31 viene por defecto con PHP 7.3. Pero queremos instalar PHP 7.4 para lo cual necesitamos agregar el repositorio REMI.

Instale el repositorio REMI, que es el repositorio oficial de Fedora para instalar paquetes PHP.

$ sudo dnf -y install https://rpms.remirepo.net/fedora/remi-release-31.rpm

Habilitar el remi y remi-php74 repositorios y deshabilite el remi-modular repositorio. Esto habilita el repositorio requerido para instalar paquetes de PHP 7.4.

$ sudo dnf config-manager --set-enabled remi
$ sudo dnf config-manager --set-enabled remi-php74
$ sudo dnf config-manager --set-disabled remi-modular

Instale PHP 7.4 junto con algunos paquetes adicionales.

$ sudo dnf install -y php-cli php-fpm php-mysqlnd

Compruebe si PHP funciona correctamente.

$ php --version

Debería ver un resultado similar.

PHP 7.4.3 (cli) (built: Feb 18 2020 11:53:05) ( NTS )
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies

Instalar MariaDB

MariaDB es un reemplazo directo de MySQL, lo que significa que los comandos para ejecutar y operar MariaDB son los mismos que para MySQL.

Fedora 31 viene por defecto con MariaDB 10.3, pero también podemos instalar la última versión 10.4 (disponible en el momento de escribir este tutorial). Para esto necesitamos agregar el repositorio oficial de MariaDB.

Crear MariaDB.repo en el /etc/yum.repos.d/ directorio.

$ sudo nano /etc/yum.repos.d/MariaDB.repo

Agregue el siguiente código en él.

# MariaDB 10.4 Fedora repository list
# http://downloads.mariadb.org/mariadb/repositories/
[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.4/fedora31-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1

Guarde el archivo presionando Ctrl + X e ingresando Y cuando se le solicite.

Para instalar MariaDB emita los siguientes comandos

$ sudo dnf install MariaDB-server -y

Fíjese en el comando. Si desea instalar la copia (10.3) en el repositorio de Fedora, debe usar sudo dnf install mariadb-server pero para la versión 10.4, estamos usando sudo dnf install MariaDB-server .

Compruebe si MariaDB se instaló correctamente.

$ mysql --version

Debería ver el siguiente resultado.

mysql  Ver 15.1 Distrib 10.4.12-MariaDB, for Linux (x86_64) using  EditLine wrapper

Habilite e inicie el servicio MariaDB.

$ sudo systemctl enable mariadb
$ sudo systemctl start mariadb

Ejecute el siguiente comando para realizar la configuración predeterminada, como proporcionar una contraseña de root, eliminar usuarios anónimos, prohibir el inicio de sesión de root de forma remota y descartar tablas de prueba.

$ sudo mysql_secure_installation

Con MariaDB 10.4, ahora se le preguntará entre usar la contraseña de root o el complemento unix_socket. El complemento unix_socket le permite iniciar sesión en MariaDB con sus credenciales de usuario de Linux. Se considera más seguro, aunque necesitará un nombre de usuario/contraseña tradicional para usar aplicaciones de terceros como PhpMyAdmin. Nos limitaremos a usar el complemento unix_socket para este tutorial. Todavía puede usar PhpMyAdmin a través de cualquier usuario que cree para sus bases de datos.

Al pulsar Intro se elige la opción predeterminada (la que está en mayúsculas, Y en este caso).

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
haven't set the root password yet, you should just press enter here.

Enter current password for root (enter for none): [PRESS ENTER]
OK, successfully used password, moving on...

Setting the root password or using the unix_socket ensures that nobody
can log into the MariaDB root user without the proper authorisation.

You already have your root account protected, so you can safely answer 'n'.

Switch to unix_socket authentication [Y/n] [PRESS ENTER]
Enabled successfully!
Reloading privilege tables..
 ... Success!

You already have your root account protected, so you can safely answer 'n'.

Change the root password? [Y/n] [ANSWER n]

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] [PRESS 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] [PRESS 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] [PRESS 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] [PRESS 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!

Eso es todo. La próxima vez que desee iniciar sesión en MySQL, use el siguiente comando

$ sudo mysql

Introduzca su contraseña raíz cuando se le solicite.

Instalar Nginx

Fedora 31 viene por defecto con la versión estable de Nginx (1.16.1). Si desea instalar la versión principal de Nginx, siga nuestra guía para compilar Nginx desde el origen. Asegúrese de obtener la última versión de Nginx y las dependencias mencionadas en el tutorial. El resto de las instrucciones seguirán siendo las mismas (cambie los nombres de las rutas en consecuencia durante ./configure dominio). Para este tutorial, nos quedaremos con la versión estable de Nginx.

Instale el servidor Nginx.

$ sudo dnf install nginx -y

Compruebe si funciona correctamente.

$ nginx -v

Debería ver el siguiente resultado.

nginx version: nginx/1.16.1

Inicie y habilite Nginx.

$ sudo systemctl start nginx
$ sudo systemctl enable nginx

Abra la dirección IP de su servidor en un navegador para ver la siguiente página. Significa que Nginx funciona correctamente.

Configurar Nginx

Configure directorios donde vivirán los bloques del servidor.

$ sudo mkdir /etc/nginx/sites-available
$ sudo mkdir /etc/nginx/sites-enabled

Cree el directorio donde vivirá su sitio.

$ sudo mkdir /var/www/example.com/html -p

Usando la -p directiva crea directorios principales que no existían antes.

Ejecute el siguiente comando para agregar un archivo de configuración para su sitio.

$ sudo nano /etc/nginx/sites-available/example.com.conf

Pegue el siguiente código en el editor.

server {
  listen          *:80;
  server_name     example.com;
  root            /var/www/example.com/html;
  index           index.php index.html;

  location / {
    try_files   $uri $uri/ =404;
  }
    
  access_log /var/log/nginx/example.com.access.log;
  error_log /var/log/nginx/example.com.error.log;

  location ~ \.php$ {
    try_files $uri =404;
    fastcgi_pass  unix:/run/php-fpm/www.sock;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    fastcgi_index index.php;
    include  fastcgi_params;
  }
}

Este archivo asume que alojaremos example.com en el directorio /var/www/html . Si no va a utilizar ningún dominio y va a configurar su servidor para que sea accesible solo a través de la dirección IP/host local, deberá eliminar la configuración de bloqueo del servidor correspondiente de nginx.conf de lo contrario, interferirá con el bloque del servidor que creará.

Active este archivo de configuración vinculándolo a sites-enabled directorio.

$ sudo ln -s /etc/nginx/sites-available/example.com.conf /etc/nginx/sites-enabled/

Abra el /etc/nginx/nginx.conf archivo para editar.

$ sudo nano /etc/nginx/nginx.conf	

Pegue las siguientes líneas después de la línea include /etc/nginx/conf.d/*.conf

include /etc/nginx/sites-enabled/*.conf;
server_names_hash_bucket_size 64;

Cambia el valor de types_hash_max_size de 2048 a 4096.

types_hash_max_size 4096;

Presiona Ctrl + X para cerrar el editor y presiona Y cuando se le solicite guardar el archivo. Pruebe la configuración de Nginx.

$ sudo nginx -t

Debería ver el siguiente resultado que indica que su configuración es correcta.

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Vuelva a cargar el servicio Nginx.

$ sudo systemctl reload nginx

Configurar PHP-FPM

Abra el archivo /etc/php-fpm.d/www.conf .

$ sudo nano /etc/php-fpm.d/www.conf

Necesitamos configurar el usuario/grupo de procesos PHP de Unix en nginx . Encuentra el user=apache y group=apache líneas en el archivo y cámbielas a nginx.

...
; Unix user/group of processes
; Note: The user is mandatory. If the group is not set, the default user's group
;       will be used.
; RPM: apache user chosen to provide access to the same directories as httpd
user = nginx
; RPM: Keep a group allowed to write in log dir.
group = nginx
...

Además, configure los permisos de propiedad para el socket de Unix en nginx y elimine el ; frente a ellos.

listen.owner = nginx
listen.group = nginx

Guarde el archivo presionando Ctrl + X e ingresando Y cuando se le solicite.

Reinicie el proceso PHP-fpm.

$ sudo systemctl restart php-fpm

Para probar su configuración de PHP, cree un archivo test.php en el html carpeta.

$ sudo nano /var/www/example.com/html/test.php

Agregue el siguiente contenido y guarde el archivo presionando Ctrl + X e ingresando Y cuando se le solicite.

<?php phpinfo();

Inicie http://<yourserverip>/test.php en su navegador web y debería ver lo siguiente.

Conclusión

Eso es todo por este tutorial. Su configuración de LEMP está completa y puede comenzar a crear y alojar sus sitios web y aplicaciones.


Fedora
  1. Cómo instalar Nginx con PHP y MySQL (LEMP Stack) en CentOS 7

  2. Cómo instalar Pagekit CMS con Nginx en Fedora 29

  3. Cómo instalar Nginx con PHP y MySQL (LEMP Stack) en Ubuntu 18.04

  4. Cómo instalar Phorum con Nginx en Fedora 30

  5. ¿Cómo instalar WordPress con LEMP (Nginx, MariaDB y PHP) en Rocky Linux 8?

Cómo instalar Nginx, MariaDB, PHP (LEMP Stack) en Debian 11

Cómo instalar Linux, Nginx, MariaDB, PHP (LEMP Stack) en Linux Mint 19

Cómo instalar LEMP Stack (Nginx, MariaDB y PHP) en AlmaLinux 8

Cómo instalar LEMP Stack en Fedora 35

Cómo instalar Linux, Nginx, MariaDB y PHP (LEMP) en Fedora 22

Cómo instalar LEMP (Nginx, MariaDB, PHP) en Centos 7