站点图标 江湖人士

Debian10 系统VPS主机LEMP教程

Debian10 系统VPS主机LEMP教程,LEMP 指的是 Linux + Nginx (发音 engine x 所以这里是 E 而不是 N) + MySQL + PHP 的简称,国内有些地方叫做 LNMP (因为 LNMP 没法读出来,而 LEMP 可以直接发音,所以今后本站教程一律都会写 LEMP)。

VPS主机LEMP教程

以下教程适用于Debian10 系统但是我们尽量推荐使用最新的操作系统,以免旧系统软件版本过低有漏洞的可能

更新库

apt update
apt list --upgradable

安装nginx

apt install nginx -y        #安装

#nginx 的使用命令
systemctl start nginx       #启动
systemctl restart nginx     #重启
systemctl stop nginx        #停止
systemctl reload nginx      #平滑重启
systemctl status nginx      #查看状态

设置防火墙(阿里云主机,可以忽烈此项)

#接下来,如果您运行UFW防火墙 (默认情况下通常禁用),则需要打开端口80(HTTP)和443(HTTPS)以允许Nginx上的传入流量。
ufw allow 80    #开启80端口
ufw allow 443   #开启443端口
ufw status      #查看状态
ufw deny 80     #禁用80端口

在Debian 10上安装MariaDB 。【Debian 10默认支持MariaDB ,作为MySQL的直接替代品。】

apt install mariadb-server -y   #安装

#mariadb 的使用命令
systemctl status mariadb     #查看状态
systemctl start mariadb      #启动 
systemctl restart mariadb    #重启 
systemctl stop mariadb       #停止 
systemctl reload mariadb     #平滑重启

mariadb 安全设置

mysql_secure_installation    #执行此命令

#按提示根据实际情况进行设置
Enter current password for root (enter for none):    #初次运行直接回车
Set root password? [Y/n]    #是否设置root用户密码,输入y并回车或直接回车
New password:     #设置root用户的密码
Re-enter new password:   #再输入一次你设置的密码
Remove anonymous users? [Y/n]   #是否删除匿名用户
Disallow root login remotely? [Y/n]   #是否禁止root远程登录
Remove test database and access to it? [Y/n]   #是否删除test数据库
Reload privilege tables now? [Y/n]   #是否重新加载权限表

#其他设置
mysql    #进入mysql

#创建用户命令
mysql>create user  'username'@'localhost' identified by 'password'; 
   
#直接创建用户并授权的命令
mysql>grant all on *.* to 'username'@'localhost' indentified by 'password';    

#授予外网登陆权限 
mysql>grant all privileges on *.* to 'username'@'%' identified by 'password';
    
#授予权限并且可以授权
mysql>grant all privileges on *.* to 'username'@'hostname' identified by 'password' with grant option;

mysql> show variables like "%character%";  #MariaDB查看字符集
mysql>show variables like "%collation%";  #MariaDB查看字符集

在Debian 10上安装PHP , PHP-FPM(快速进程管理器)。

Debian10 系统VPS主机LEMP教程

Apache和其他Web服务器不同, Nginx不提供对PHP的本机支持,因为它使用PHP-FPM来处理PHP页面的请求。 PHP-FPMPHP的另一种FastCGI守护程序,它允许网站通过使用工作进程处理请求来处理高负载。

要安装PHP-FPM版本7.3和PHP模块以与MariaDB / MySQL数据库系统通信,请运行以下命令。

#安装的时候,可以不带版本号。例如 php7.3 可以直接 php
apt install php php-fpm php-mysqli -y    #安装, php/php-fpm/php-mysqli


#php-fpm 的使用命令, 使用的时候,一定要带版本号。debian10 默认是php7.3
systemctl status php7.3-fpm        # 查看状态
systemctl start php7.3-fpm         # 启动    
systemctl restart php7.3-fpm       # 重启
systemctl stop php7.3-fpm          # 停止
systemctl reload php7.3-fpm        # 平滑重启

安装php其它插件/扩展

apt-get install mcrypt php-redis php-cli php-common php-curl php-gd php-mysql php-opcache php-xml php-xmlrpc php-sqlite3 php-mbstring -y

接下来,您需要通过在配置文件/etc/php/7.3/fpm/php.ini中进行一些更改来保护PHP-FPM ,如下所示。

vim /etc/php/7.3/fpm/php.ini

#在 793行处理
;cgi.fix_pathinfo=1 
#改为以下内容
cgi.fix_pathinfo=0

配置 nginx 与 php 结合

默认情况下, PHP-FPM配置为监听/etc/php/7.3/fpm/pool.d/www.conf配置文件中定义的UNIX soxket /run/php/php7.3-fpm.sock 。 如果要处理和提供PHP页面,则必须配置所有服务器块(或虚拟主机 )以使用此套接字。

您可以使用Nginx默认服务器块配置文件/ etc / nginx / sites-available / default来测试它。

vim /etc/nginx/sites-available/default 

#找到,并去掉以下这几行的注解
location ~ \.php$ 
{
   include snippets/fastcgi-php.conf;
   fastcgi_pass unix:/run/php/php7.3-fpm.sock;
}

接下来,就重启服务

systemctl restart php7.3-fpm   #重启php
systemctl restart nginx        #重启nginx

done , 快去写个 phpinfo 测试吧

补充: nginx 配置主机信息如下:

server {
	listen 80;
	
	root /var/www/zounianxiao_memberpay/public;
        index index.php index.html index.htm;
	server_name 47.119.161.55;
	
	#这里的if , 是针对 thinkphp rewrite 规则的。非thinkphp框架,可以删除
	if (!-e $request_filename){
            rewrite  ^(.*)$  /index.php?s=$1  last;
            break;
   	}	

	# pass PHP scripts to FastCGI server
	#
	location ~ \.php$ {
		include snippets/fastcgi-php.conf;
	
		# With php-fpm (or other unix sockets):
		fastcgi_pass unix:/run/php/php7.3-fpm.sock;
	#	# With php-cgi (or other tcp sockets):
	#	fastcgi_pass 127.0.0.1:9000;
	}
}

安全补充:修改php安全设置

vim /etc/php/7.3/fpm/php.ini

#disable_functions 增加以下设置。注意是在原来的基础增加。不是替换。不是替换。不是替换。
disable_functions = phpinfo,eval,passthru,exec,system,chroot,chgrp,chown,ini_alter,ini_alter,ini_restore,dl,pfsockopen,openlog,syslog,readlink,symlink,popepassthru,stream_socket_server,fsocket,fsockopen,shell_exec,popen,

#php运行内容改大一点,默认是 128M
memory_limit = 1024M

Debian10 系统VPS主机LEMP教程

退出移动版