前言 :
为什么要手动安装而不是不用脚本或者面板?
了解到 LNMP 一键脚本有投毒事件,且宝塔面板存在后门情况,博主希望自己足够隐私,不希望收到老大哥监管,因此自力更生从零开始。
一、环境准备
OS:Debian 10
Nginx:nginx-1.14.2
MySQL:mysql-5.7.36
PHP:php-7.3.31
1. 安装 Nginx
运行以下命令即可安装,查看版本。
apt install nginx
nginx -v
返回结果为
nginx version: nginx/1.14.2
安装路径为
/etc/nginx
2. 安装 Mysql
运行以下命令即可安装,查看版本。
apt install mysql-server
mysql -V
mysql Ver 14.14 Distrib 5.7.36, for Linux (x86_64) using EditLine wrapper
返回结果为
安装路径为
/etc/mysql
3. 安装 PHP
运行以下命令即可安装,查看版本。
apt install php
apt install php-fpm
php -v
返回结果为
PHP 7.3.31-1~deb10u5 (cli) (built: Sep 4 2023 21:49:25) ( NTS ) Copyright (c) 1997-2018 The PHP Group Zend Engine v3.3.31, Copyright (c) 1998-2018 Zend Technologies with Zend OPcache v7.3.31-1~deb10u5, Copyright (c) 1999-2018, by Zend Technologies
安装路径为
/etc/php/7.3/
二、修改 Nginx 配置文件以支持 PHP
1. 检查 nginx 和 php 的运行用户
运行一下指令查看两者的运行用户
ps aux | grep nginx
ps aux | grep php
博主检查时候发现 nginx 默认为 nobody
用户运行,php 为 www-data
用户运行,用户不一致就不能正确指向,所以需要修改为一致,博主选择修改 nginx 的配置文件。
ps aux | grep nginx
root 4205 0.0 0.0 8428 760 ? Ss 16:44 0:00 nginx: master process /usr/sbin/nginx -g daemon on; master_process on; nobody 4206 0.0 0.3 8828 3280 ? S 16:44 0:00 nginx: worker process root 5915 0.0 0.0 4832 828 pts/0 R+ 17:04 0:00 grep nginx
ps aux | grep php
root 1125 0.0 1.5 193612 15188 ? Ss 16:21 0:00 php-fpm: master process (/etc/php/7.3/fpm/php-fpm.conf)
www-data 1127 0.0 0.6 193612 6684 ? S 16:21 0:00 php-fpm: pool www
www-data 1128 0.0 0.6 193612 6684 ? S 16:21 0:00 php-fpm: pool www
root 5911 0.0 0.0 4832 884 pts/0 S+ 17:04 0:00 grep php
2. 确保 nginx 和 PHP 的端口一致
切换 PHP 安装目录进入配置文件:
cd /etc/php/7.3/fpm/pool.d/
vim www.conf
在里面可以看到监听的端口为:
user = www-data
gurop = www-data
...#中间没用到的信息省略
listen = /run/php/php7.3-fpm.sock
如果是这样情况,就要把 Nginx 配置里面 location ~ \.php
中的 fastcgi_pass
对应的值改成 unix:/run/php/php 7.3-fpm.sock
3. 编译 nginx 配置文件
上述已经总结了两点问题,用户和端口,除此之外还需加上 php 的支持。
切换 nginx 安装目录进入配置文件:
cd /etc/nginx/
vim nginx.conf
按 i 进入编辑模式,在 server
大括号内添加 index.php
到 location /
配置:
location / { index index.php index.html index.htm; }
添加端口内容,地址内容到 location ~ \.Php
location ~* \.php$ { fastcgi_index index.php; fastcgi_pass unix:/run/php/php 7.3-fpm.sock; include fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; #fastcgi_param SCRIPT_NAME $fastcgi_script_name; }
注意这里$document_root的用法,它是一个变量,代表当前配置文件中的root,所以root要在$ document_root外层定义,通常写在 server 头部。如果root只写在 location /内容块中,PHP-FPM是读不到root路径里面的文件,会报错 File not found
。如果不想用$document_root,也可将其替换为根目录绝对路径/usr/share/nginx/html$ fastcgi_script_name
。
root 路径为/usr/share/nginx/html 替换为您的网站根目录,本文使用/usr/share/nginx/html 作为网站根目录。
在文件最上方,添加内容
user www-data;
work_processes 1;
以下为博主的 nginx 配置改动文件
user www-data; work_processes 1; ...#省略未改动信息 http{ server{ listen 80; server_host localhost; root /usr/share/nginx/html; ... location \{ # root html; index index.php index.html index.htm; } ... error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } ... location ~* \.php$ { fastcgi_index index.php; fastcgi_pass unix:/run/php/php 7.3-fpm.sock; include fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; #fastcgi_param SCRIPT_NAME $fastcgi_script_name; } } }
按 Esc
键,输入 :wq
,按 Enter
键关闭并保存配置文件。
运行以下命令,启动 Nginx 服务。
sudo systemctl start nginx
运行以下命令,设置Nginx服务开机自启动。
sudo systemctl enable nginx
三、配置测试
新建并编辑 phpinfo.php
文件,用于展示 PHP 信息。
运行以下命令,新建 phpinfo.php
文件。“`
sudo vim <网站根目录>/phpinfo.php
<网站根目录>_是在nginx.conf
配置文件中location ~ .php$
大括号内,配置的root
参数值,本文配置的网站根目录为/usr/share/nginx/html
,因此需要运行以下命令新建phpinfo.php
文件:
sudo vim /usr/share/nginx/html/phpinfo.php
按 i
进入编辑模式,输入下列内容,函数 phpinfo()
会展示 PHP 的所有配置信息。
<?php echo phpinfo(); ?>
按Esc
键后,输入:wq
并回车,保存关闭配置文件。
运行以下命令,启动 PHP-FPM。
sudo systemctl start php7.3-fpm
运行以下命令,设置 PHP-FPM 开机自启动。
sudo systemctl enable php7.3-fpm
在浏览器的地址栏输入http://IP地址/phpinfo.php
进行访问。
0