GNU/Linux >> Tutoriales Linux >  >> OpenSuse

Cómo instalar Nginx, PHP y MySQL (LEMP Stack) en OpenSUSE Leap 42.1

LEMP o Linux, Engine-x, MySQL y PHP es una colección de software instalado en el sistema operativo Linux para poner en funcionamiento sus aplicaciones web basadas en PHP en el rápido servidor web Nginx. La pila LEMP proporciona una base rápida y confiable para alojar aplicaciones web. LEMP es una colección de software de código abierto que tiene un conjunto completo de documentación para que pueda obtener más información sobre las diferentes aplicaciones y la forma en que encajan entre sí.

En este tutorial, le mostraré cómo instalar Nginx, MariaDB y PHP-FPM en openSUSE Leap 42.1. Luego, configuraré el firewall de OpenSUSE con SuSEfirewall2 para permitir el acceso al servidor web Nginx y le mostraré cómo puede agregar una nueva configuración de host virtual en el servidor web Nginx.

Finalmente, instalaremos phpMyAdmin como una herramienta de administración de base de datos fácil de usar y la protegeremos cambiando el directorio web y habilitando la autenticación HTTP para el directorio phpMyAdmin.

requisito previo

  • OpenSUSE Leap 42.1.
  • Privilegios de raíz.
  • Comprender el comando zypper.

Paso 1:instalar y configurar SuSEfirewall2

SuSEfirewall2 es un script que genera reglas de iptables basadas en el archivo de configuración "/etc/sysconfig/SuSEfirewall2". Lo instalaremos y configuraremos para evitar ataques de red en el puerto del servidor.

Instale SuSEfirewall2 con zypper:

zypper in SuSEfirewall2

Cuando termine la instalación, tenemos que abrir algunos puertos para las aplicaciones web y SSH. Abriremos el puerto 22 para el servicio ssh y el puerto 80 y 443 para http y https. Vaya al directorio "/etc/sysconfig/" y edite el archivo "SuSEfirewall2":

cd /etc/sysconfig/
vim SuSEfirewall2

En la línea 253, agregue los números de puerto de los servicios, separados por un espacio en blanco:

FW_SERVICES_EXT_TCP="22 80 443"

Guarde el archivo y salga.

Reinicie SuSEfirewall2 y el servicio SSH, luego pruebe la configuración del puerto conectándose con telnet al servidor.

Reinicie el servicio SuSEfirewall2 y SSH:

/sbin/rcSuSEfirewall2 restart
systemctl restart sshd

Probando la conexión ssh con telnet en el puerto 22:

telnet 192.168.1.101 22

Paso 2:instalar y configurar Nginx

Nginx o motor x es un servidor proxy y HTTP de alto rendimiento con bajo consumo de memoria. Lo utilizan sitios web a gran escala como Netflix, Pinterest, CloudFlare, Github, etc. Nginx tiene una sintaxis de configuración fácil de aprender y también puede actuar como un equilibrador de carga con comprobaciones de estado y proxy inverso con funciones de almacenamiento en caché.

En este paso, instalaremos nginx y lo agregaremos para que comience en el momento del arranque. Instálelo con el comando "zypper in":

zypper in nginx

Inicie nginx y permita que se inicie en el momento del arranque:

systemctl start nginx
systemctl enable nginx

Nginx se inició ahora, pero si intenta acceder a él a través del navegador web, obtendrá un error 403 prohibido. Este error ocurre porque no hay un documento de índice estándar en la carpeta raíz web. Para resolver este problema, cree un nuevo índice html en el directorio web raíz "/srv/www/htdocs". Vaya al directorio y cree el archivo index.html:

cd /srv/www/htdocs/
echo "<h1>This is Nginx OpenSUSE Leap 42.1</h1>" > index.html

Abra su navegador web y escriba la IP de su servidor y obtendrá la página de índice:

http://192.168.1.101/

Paso 3:instalar y configurar MariaDB

MariaDB es un RDBMS (Sistema de gestión de bases de datos relacionales) de código abierto derivado de MySQL bajo la licencia GNU GPL. En este tutorial, instalaremos MariaDB y configuraremos la contraseña raíz para el shell de MariaDB.

Instale MariaDB con el comando zypper:

zypper in mariadb mariadb-client

Inicie MariaDB/MySQL y agréguelo al inicio de arranque con el siguiente comando systemctl:

systemctl start mysql
systemctl enable mysql

A continuación, configure la contraseña de administrador para MariaDBb/MySQL con el comando mysqladmin. Otra opción que puede usar para este propósito es "mysql_secure_installation". En este paso, usaré mysqladmin:

/usr/bin/mysqladmin -u root password 'aqwe123'

Nota:

"aqwe123" es la nueva contraseña para MariaDB/MySQL.

Luego inicie sesión en mysql shell con el usuario root y la contraseña aqwe123:

mysql -u root -p
TYPE PASSWORD 'aqwe123'

Ahora MariaDB/MySQL está instalado y configurado con nuestra nueva contraseña.

Paso 4:instalar y configurar PHP-FPM

PHP-FPM o FastCGI Process Manager es una alternativa para el antiguo PHP FastCGI que proporciona funciones adicionales y mejoras de velocidad. PHP-FPM es adecuado para sitios pequeños y grandes basados ​​en el lenguaje de programación PHP.

En este paso, instalaremos php5-fpm con algunas extensiones adicionales requeridas por phpMyAdmin. Instale php5-fom y las extensiones con zypper:

zypper in php5 php5-mysql php5-fpm php5-gd php5-mbstring

Cuando se haya completado la instalación, vaya al directorio php5-fpm y copie el archivo de configuración:

cd /etc/php5/fpm/
cp php-fpm.conf.default php-fpm.conf

Edite la configuración con el comando vim:

vim php-fpm.conf

Quite el comentario de la línea 32 para habilitar el registro de php-fpm, el prefijo predeterminado es /var y si tiene algún problema con php5-fpm, puede consultar el archivo de registro "/var/log/php-fpm.log".

error_log = log/php-fpm.log

En la línea 148 configuraremos el propietario del proceso nginx al usuario Nginx. Cambiar usuario y grupo de proceso a nginx:

user = nginx
group = nginx

Línea 159:configure php-fpm para que se ejecute en un archivo de socket, no en el puerto. Cambia esa línea así:

listen = /var/run/php-fpm.sock

Y en la línea 170, cambie los permisos para el socket de Unix al usuario y grupo nginx con el modo 0660.

listen.owner = nginx
listen.group = nginx
listen.mode = 0660

Guarde el archivo y salga del editor.

A continuación, vaya al directorio cli de PHP y edite el archivo php.ini con vim:

cd /etc/php5/cli/
vim php.ini

Cambie el valor de cgi.fix_pathinfo a cero por razones de seguridad. línea 178:

cgi.fix_pathinfo=0

guardar y salir.

Copie el php.ini al directorio conf.d:

cp php.ini /etc/php5/conf.d/

La configuración de PHP-FPM se realiza en esta etapa, pero aún necesitamos configurar Nginx. Tenemos que configurar Nginx para que funcione con php-fpm.

Vaya al directorio de configuración de nginx y haga una copia de seguridad del archivo de configuración con el comando cp:

cd /etc/nginx/
cp nginx.conf nginx.conf.backup

Edite nginx.conf con vim:

vim nginx.conf

Agrega index.php en la línea 48:

index index.php index.html index.htm;

Agregue la nueva sección de configuración de php en la línea 68, esta es la configuración para manejar solicitudes de archivos .php.

       location ~ \.php$ {
                root /srv/www/htdocs;
                try_files $uri =404;
                include /etc/nginx/fastcgi_params;
                fastcgi_pass unix:/var/run/php-fpm.sock;
                fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
       }

Guarde el archivo y salga.

A continuación, pruebe la sintaxis del archivo de configuración de nginx para asegurarse de que no haya errores. Luego inicie el demonio php-fpm y reinicie Nginx:

nginx -t
systemctl start php-fpm
systemctl restart nginx

Para asegurarnos de que php-fpm y nginx funcionen correctamente, agregaremos un nuevo archivo de prueba de php. Vaya al directorio DocumentRoot y cree un archivo phpinfo con el nombre info.php:

cd /srv/www/htdocs/
echo "<?php phpinfo(); ?>" > info.php

Abra su navegador web, escriba la dirección IP de su servidor:

http://192.168.1.101/info.php

Nginx y php-fpm ya están funcionando.

Paso 5:configurar un host virtual de Nginx

En este paso, le mostraré cómo agregar una configuración de host virtual para un sitio web. Configuraremos un nuevo dominio "www.example.com" y el directorio webroot en "/srv/www/example/". Reemplace example y example.com con su propio nombre de dominio.

GNginx nginx y cree un nuevo directorio para la configuración del host virtual.

cd /etc/nginx/
mkdir vhosts.d/
cd vhosts.d/

A continuación, cree un nuevo archivo ejemplo.conf para el nombre de dominio "ejemplo.com" virtualhost.

vim example.conf

pegue la configuración de host virtual a continuación:

server {
    server_name example.com;
    return 301 $scheme://www.example.com$request_uri;
}

server {
    listen 80;

    root /srv/www/example;
    index index.php index.html index.htm;

    location / {
        try_files $uri $uri/ =404;
    }

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


}

Guarde el archivo y salga.

Ahora cree el directorio para el sitio "example.com" en el directorio /srv/www/ y cree un nuevo archivo de índice.

mkdir -p /srv/www/example/
cd /srv/www/example/
echo "<h1>This is www.example.com site.</h1>" > index.html
echo "<?php phpinfo(); ?>" > info.php

Ahora abra su navegador web y visite el dominio:

ejemplo.com

Será redirigido al dominio www y ahora acceda al archivo php:

http://www.ejemplo.com/info.php

Paso 6:instalar y configurar phpMyAdmin

PhpMyAdmin es una aplicación basada en PHP para administrar bases de datos MySQL o MariaDB desde un navegador web. En este paso, configuraré phpMyAdmin para que se ejecute bajo php-fpm y luego haré que PHPMyAdmin sea seguro restringiendo el acceso a la página de inicio de sesión de phpMyAdmin.

Instale phpMyAdmin con el comando zypper:

zypper in phpMyAdmin

El comando instalará todos los paquetes que necesita phpMyAdmin, incluido apache2-utils que se requiere para crear el archivo de contraseña.

Ahora tenemos phpMyAdmin instalado en el sistema. A continuación, crearemos un nuevo archivo htpasswd con el comando htpasswd.

crear archivo de contraseña htpasswd:

htpasswd -c /etc/nginx/htpasswd megumi
TYPE YOUR PASSWORD for user megumi

A continuación, tenemos que configurar Nginx para usar la autenticación básica HTTP para el directorio phpmyadmin. Restringiremos el acceso a la página de inicio de sesión de phpMyAdmin con auth_basic, y solo los usuarios que están en el archivo "htpasswd" pueden iniciar sesión en phpMyAdmin.

Vaya al directorio de configuración de Nginx y edite el archivo nginx.conf:

cd /etc/nginx/
vim nginx.conf

Defina el directorio raíz web dentro de la sección del servidor agregando una nueva línea debajo de la línea 40 (nombre_servidor):

        server_name  localhost;
        root /srv/www/htdocs;       #newline config

Luego agregue la configuración de phpMyAdmin para nginx en la línea 60:

    location ~ ^/phpMyAdmin/.*\.php$ {
        auth_basic "Restricted Access";
        auth_basic_user_file  /etc/nginx/htpasswd;
        fastcgi_pass unix:/var/run/php-fpm.sock;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME  $document_root$fastcgi_script_name;
        include   fastcgi_params;
    }

Guarde el archivo y salga del editor.

Pruebe la configuración de nginx y reinicie nginx:

nginx -t
systemctl restart nginx

A continuación, abra su navegador web y visite la URL de phpMyAdmin, se le pedirá un nombre de usuario y una contraseña para la página de inicio de sesión.

http://192.168.1.101/phpMyAdmin/

Luego inicie sesión con su nombre de usuario y contraseña de MySQL.

phpMyAdmin se instaló correctamente y solo el usuario en htpasswd puede iniciar sesión.


OpenSuse
  1. Cómo instalar Nginx con PHP-FPM y MySQL en openSUSE 12.1

  2. Cómo instalar Mysql Server 8 en OpenSUSE Leap 15.3

  3. Cómo instalar y configurar PHP y Apache (pila LAMP) en OpenSUSE Leap 15.3

  4. Cómo instalar y configurar Nginx como proxy OpenSUSE Leap 15.3

  5. Cómo instalar y configurar PHP y Nginx (LEMP) en OpenSUSE Leap 15.3

Cómo instalar la pila LEMP en Ubuntu 20.04

Cómo instalar Nginx, MySQL y PHP (LEMP) en Ubuntu 20.04

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

Cómo instalar PHP 8.0 en openSUSE 15 Leap

Cómo instalar Nginx, MySQL y PHP (LEMP) en un servidor Ubuntu 15.04

Cómo instalar la pila Nginx, MySQL, PHP (LEMP) en un servidor en la nube Debian 8.3