Construcción del entorno lnmp: documentación detallada de implementación manual

1. Información ambiental

Sistema operativo: imagen pública CentOS 7.8 de 64 bits

En la configuración de implementación de este artículo, la versión del servicio es la siguiente: si necesita otras versiones, debe instalarlas y configurarlas por separado.

Nginx版本:Nginx 1.20.1
MySQL版本:MySQL 5.7.36
PHP版本:PHP 7.0.33

2. Construcción del entorno LNMP

2.1 Preparar el entorno de compilación

  • desactivar el cortafuegos

Ejecute el comando systemctl status firewalld para ver el estado del firewall actual

Si el parámetro de estado del cortafuegos está inactivo, el cortafuegos está en estado cerrado; si el parámetro de estado del cortafuegos está activo, el cortafuegos está en estado abierto.

# 临时关闭
systemctl stop firewalld

# 禁止开机自启
systemctl disable firewalld
  • cerrar SELinux

Ejecute el comando getenforce para ver el estado actual de SELinux.

Si el parámetro de estado de SELinux está Desactivado, entonces SELinux está desactivado; si el parámetro de estado de SELinux es Enforcing, entonces SELinux está activado.

# 临时关闭
setenforce 0

# 永久关闭
vi /etc/selinux/config
找到SELINUX=enforcing,按i进入编辑模式,将参数修改为SELINUX=disabled。

2.2 instalación de nginx

  • Instalar Nginx
yum -y install nginx
  • Compruebe la versión de Nginx.
# nginx -v
nginx version: nginx/1.20.1

instalación de mysql 2.3

  • Actualizar fuente Yyum
rpm -Uvh  http://dev.mysql.com/get/mysql57-community-release-el7-9.noarch.rpm
  • Instalar MySQL.

Nota: La versión del kernel del sistema operativo utilizada es el8, y es posible que aparezca el mensaje de error No match for argument. Debe ejecutar el comando yum module disabled mysql para desactivar el módulo MySQL predeterminado antes de instalar MySQL.

yum -y install mysql-community-server --nogpgcheck
  • Ver el número de versión de mysql

Los resultados devueltos son los siguientes, lo que indica que MySQL se instaló correctamente.

# mysql -V
mysql  Ver 14.14 Distrib 5.7.41, for Linux (x86_64) using  EditLine wrapper
  • iniciar mysql
systemctl start mysqld
  • Configurar el arranque para iniciar mysql
systemctl enable mysqld
systemctl daemon-reload

2.4 Instalación PHP

  • actualizar yum fuente
yum install \
https://repo.ius.io/ius-release-el7.rpm \
https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
  • Agregar fuente Webtatic
rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm
  • instalar php
yum -y install php70w-devel php70w.x86_64 php70w-cli.x86_64 php70w-common.x86_64 php70w-gd.x86_64 php70w-ldap.x86_64 php70w-mbstring.x86_64 php70w-mcrypt.x86_64  php70w-pdo.x86_64   php70w-mysqlnd  php70w-fpm php70w-opcache php70w-pecl-redis php70w-pecl-mongodb
  • Compruebe la versión de php.
# php -v
PHP 7.0.33 (cli) (built: Dec  6 2018 22:30:44) ( NTS )
Copyright (c) 1997-2017 The PHP Group
Zend Engine v3.0.0, Copyright (c) 1998-2017 Zend Technologies
    with Zend OPcache v7.0.33, Copyright (c) 1999-2017, by Zend Technologies

2.5 configuración nginx

  • archivo de configuración principal de nginx
user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log;
pid /run/nginx.pid;

include /usr/share/nginx/modules/*.conf;

events {
    worker_connections 1024;
}

http {
    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  /var/log/nginx/access.log  main;

    sendfile            on;
    tcp_nopush          on;
    tcp_nodelay         on;
    keepalive_timeout   65;
    types_hash_max_size 4096;

    include             /etc/nginx/mime.types;
    default_type        application/octet-stream;

    include /etc/nginx/conf.d/*.conf;
}
  • configuración del archivo conf
server {
    listen 80;
    server_name 域名;
    charset utf-8;
     
    location / {
		root   /usr/share/nginx/xxx;
		try_files $uri $uri/ /index.html;
		index index.html index.htm index.php;
    }
    
	location = /50x.html {
		root   /usr/share/nginx/html/xxx;
    }

    location ~ .php$ {
       fastcgi_pass   127.0.0.1:9000;
       fastcgi_index  index.php;
       fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
       include        fastcgi_params;
    }
      access_log /var/log/nginx/xxx.access.log main;
      error_log /var/log/nginx/xxx.error.log warn;

#如果需要http强制跳转至https,则开启
#    rewrite ^(.*)$  https://$host$1 permanent;

}
server {
        listen 443 ssl;
        server_name  域名;
        charset utf-8;
        ssl_certificate /etc/nginx/cert/xxx.pem;
        ssl_certificate_key /etc/nginx/cert/xxx.key;
        ssl_session_timeout 5m;
        ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
        ssl_protocols TLSv1.2;
        ssl_prefer_server_ciphers on;

    location / {
	    root   /usr/share/nginx/xxx;
		try_files $uri $uri/ /index.html;
		index index.html index.htm index.php;
	}
    
	location = /50x.html {
		root   /usr/share/nginx/html/xxx;
    }

    location ~ .php$ {
       fastcgi_pass   127.0.0.1:9000;
       fastcgi_index  index.php;
       fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
       include        fastcgi_params;
    }
      access_log /var/log/nginx/xxx.access.log main;
      error_log /var/log/nginx/xxx.error.log warn;
}
  • Comprobar si el archivo de configuración es correcto
nginx -t
  • Archivo de configuración nginx efectivo
nginx -s reload

2.6 configuración mysql

Consulte el archivo /var/log/mysqld.log para obtener y registrar la contraseña inicial del usuario raíz.

grep 'temporary password' /var/log/mysqld.log
  • Configurar seguridad mysql.
mysql_secure_installation

Introduzca la contraseña inicial de MySQL.

Nota Al ingresar la contraseña, para garantizar la máxima seguridad de los datos, el sistema no repetirá ninguna línea de comando. Simplemente ingrese la información de contraseña correcta y presione Entrar.

Securing the MySQL server deployment.

Enter password for user root: #输入上一步获取的root用户初始密码

Establecer una nueva contraseña para mysql.

The existing password for the user account root has expired. Please set a new password.

New password: #输入新密码。长度为8至30个字符,必须同时包含大小写英文字母、数字和特殊符号。特殊符号包含()` ~!@#$%^&*-+=|{}[]:;‘<>,.?/

Re-enter new password: #确认新密码。
The 'validate_password' plugin is installed on the server.
The subsequent steps will run with the existing configuration
of the plugin.
Using existing password for root.

Estimated strength of the password: 100 #返回结果包含您设置的密码强度。
Change the password for root ? ((Press y|Y for Yes, any other key for No) :Y #您需要输入Y以确认使用新密码。

#新密码设置完成后,需要再次验证新密码。
New password:#再次输入新密码。

Re-enter new password:#再次确认新密码。

Estimated strength of the password: 100
Do you wish to continue with the password provided?(Press y|Y for Yes, any other key for No) :Y #您需要输入Y,再次确认使用新密码。
  • Ingrese Y para eliminar el usuario anónimo
Remove anonymous users? (Press y|Y for Yes, any other key for No) :Y
Success.
  • Ingrese Y para deshabilitar el inicio de sesión remoto en mysql usando el usuario raíz
Disallow root login remotely? (Press y|Y for Yes, any other key for No) :Y
Success.
  • Ingrese Y para eliminar la biblioteca de prueba y el acceso del usuario a la biblioteca de prueba
Remove test database and access to it? (Press y|Y for Yes, any other key for No) :Y
 - Dropping test database...
Success.

 - Removing privileges on test database...
Success.
  • Ingrese Y para recargar el formulario de autorización
Reload privilege tables now? (Press y|Y for Yes, any other key for No) :Y
Success.

All done!

2.7 Configurar PHP

  • Crear archivo phpinfo.php

<directorio raíz del sitio web> es el valor del parámetro raíz configurado entre llaves de ubicación ~ .php$ en el archivo de configuración nginx.conf, como se muestra en la figura a continuación. Directorio raíz del sitio web El directorio raíz del sitio web configurado en este artículo es /usr/share/nginx/html, por lo que debe ejecutar el siguiente comando para crear un nuevo archivo phpinfo.php:

vim /usr/share/nginx/html/phpinfo.php

输入下列内容,函数phpinfo() 会展示PHP的所有配置信息。
<?php echo phpinfo(); ?>
  • iniciar php-fpm
systemctl start php-fpm
  • Configure php-fpm para que se inicie automáticamente al arrancar
systemctl enable php-fpm
  • Prueba de acceso a la página de información de configuración de LNMP

Abra un navegador en el host local de Windows u otros hosts de Windows con capacidades de acceso a la red pública.
Ingrese http://nombre de dominio/phpinfo.php en la barra de direcciones del navegador para acceder.
Si el resultado de acceso es una página de prueba de php, significa éxito

Nota: Después de probar y acceder a la página de información de configuración de LNMP, se recomienda eliminar el archivo phpinfo.php para eliminar el riesgo de fuga de datos.

rm -rf /usr/share/nginx/html/phpinfo.php

3. Preguntas frecuentes

3.1 Instalar otras versiones del servicio nginx

  • Descargar nginx 1.21.3
wget http://nginx.org/download/nginx-1.21.3.tar.gz
  • Instale las dependencias relacionadas con Nginx.
yum install -y gcc-c++
yum install -y pcre pcre-devel
yum install -y zlib zlib-devel
yum install -y openssl openssl-devel
  • Descomprima el paquete de instalación de nginx
tar zxvf nginx-1.21.3.tar.gz
cd nginx-1.21.3
  • Compilar el código fuente
./configure \
 --user=nobody \
 --group=nobody \
 --prefix=/usr/local/nginx \
 --with-http_stub_status_module \
 --with-http_gzip_static_module \
 --with-http_realip_module \
 --with-http_sub_module \
 --with-http_ssl_module
make && make install
  • iniciar nginx
/usr/local/nginx/sbin/nginx

La versión de PHP 3.2 es demasiado baja

En la instalación anterior, la versión instalada predeterminada de php es PHP 7.0.33. En algún momento, la versión de php es demasiado baja, lo que causará muchos problemas en el entorno de LNMP, por lo que debemos actualizar la versión de php.

  • desinstalar php
# 查看当前php已安装的包
rpm -qa|grep php 

会出现很多php相关包,基本只需要卸载几个名为common的包即可,其他同版本依赖会被全部删除,
删除php70w-common,70w版本的依赖包全部会被删除。

yum remove php70w-common
yum remove php74w-common

Instalar PHP7.2

  • Instale el paquete EPEL
yum install epel-release
  • instalar fuente remi
yum install http://rpms.remirepo.net/enterprise/remi-release-7.rpm
  • paquete de extensión yum:
yum install yum-utils

Habilitar el repositorio remi:

yum-config-manager --enable remi-php72
yum update
  • Instalar PHP7.2
yum install php72

Instale php-fpm y algunos otros módulos

yum install php72-php-fpm php72-php-gd php72-php-json php72-php-mbstring php72-php-mysqlnd php72-php-xml php72-php-xmlrpc php72-php-opcache
  • php72 -v Ver resultados de instalación
# php72 -v
PHP 7.2.34 (cli) (built: Dec 19 2022 16:12:02) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.2.0, Copyright (c) 1998-2018 Zend Technologies
    with Zend OPcache v7.2.34, Copyright (c) 1999-2018, by Zend Technologies
  • Configurar inicio automático
systemctl enable php72-php-fpm.service
  • Comandos php-fpm comúnmente utilizados
# 开启服务
systemctl start php72-php-fpm.service
# 停止服务
systemctl stop php72-php-fpm.service
# 查看状态
systemctl status php72-php-fpm.service
  • Establezca php y nginx en el mismo nombre de usuario y grupo de usuarios
egrep '^(user|group)' /etc/nginx/nginx.conf

# 结果示例:
user  nginx;

# 编辑 /etc/opt/remi/php72/php-fpm.d/www.conf,修改执行 php-fpm 的权限:

vim /etc/opt/remi/php72/php-fpm.d/www.conf

# 设置用户和用户组为 nginx:

user = nginx
group = nginx

# 保存并关闭文件,重启 php-fpm 服务:
 systemctl restart php72-php-fpm.service
  • referencia de ruta
# php 安装路径
/etc/opt/remi/php72

# nginx 配置文件
/etc/nginx/nginx.conf

# nginx 默认项目路径
/usr/share/nginx/html

Supongo que te gusta

Origin blog.csdn.net/cljdsc/article/details/128888929
Recomendado
Clasificación