一、LNMP简介

Linux+Nginx+Mysql+PHP组成的网站架构,常用于中小型网站服务。

二、环境

Debian 6.1.27-1kali1 (2023-05-12)

Nginx/1.22.1

10.11.2-MariaDB(mysql)

PHP 8.2.7

(Debian 6.1.27包含以上包,直接使用即可)

三、Nginx使用
1、服务开启

systemctl start nginx

浏览器输入主机ip直接访问默认页面

2、配置文件

Nginx配置文件在/etc/nginx/目录下,nginx_conf下有events 、http、mail数据块,mail一般不用所以注销掉了

这里讲下主进程号、日志文件和server块配置;

主进程号=>pid /run/nginx.pid

日志文件就access.log(服务日志),error.log(错误日志),在/var/log/nginx目录下

server块主要作用于虚拟主机配置,http块内没有server块,在/etc/nginx/sites-enabled/default文件里配置

含监听端口,默认页面配置

root /var/www/html 可以自定义,主页面index.html也可自定义

这里自定义如下:

root/var/www/html/shiyan

mkdir /var/www/html/shiyan

cd/var/www/html/shiyan

vi index.html

重新访问发现页面发生变化(配置修改,服务需要重启)

四、php使用

1、安装php-fpm

安装的Debian自带php8.2,但是查询没有安装php-fpm,所以自行安装。

apt-cache search php*8.2 | grep fpm–查询需安装的包名称

apt-get install php8.2-fpm

启动php-fpm服务

systemctl start php8.2-fpm

2、配置nginx服务server块

vi /etc/nginx/sites-enabled/default

默认注释,去掉注释“#”就行,注意fastcgi_pass参数只能选一种且需与php-fpm配置一致;

fastcgi_pass参数代表nginx与php-fpm进程通信方式:

–不经过网络,只能用于nginx和php-fpm在同一服务器的场景

fastcgi_pass unix:/run/php/php8.2-fpm.sock;

–通过tcp协议,支持跨服务器

fastcgi_pass 127.0.0.1:9000;

php-fpm配置文件

主:/etc/php/8.2/fpm/php8.2-fpm.conf

子:/etc/php/8.2/fpm/pool.d/www.conf

查看php-fpm配置 /etc/php/8.2/fpm/pool.d/www.conf 默认是采用第一种通信方式

两种参数都尝试下

1>fastcgi_pass unix:/run/php/php8.2-fpm.sock;

创建一个简单测试php文件,看能否正常展示

vi /var/www/html/test.php

重启nginx服务,浏览能输入【ip】/test.php测试

这个时候能看到,php-fpm服务启动没有网络连接,端口开放

2>fastcgi_pass 127.0.0.1:9000;

需要将php-fpm配置文件修改

; listen = /run/php/php8.2-fpm.sock注释掉

换成tcp通信,与nginx配置文件(sites-enabled/default)fastcgi_pass保持一致

listen = 127.0.0.1:9000

重启nginx,php8.2-fpm服务,这时查看tcp监听服务有php8.2-fpm

测试的php文件也正常解析并能访问。

注:php-fpm日志文件在/var/log/php8.2-fpm.log,php-fpm启动不起来,可以从日志里看报错信息

五、Mysql

Debian6.1.27-1kali1自带MySQL数据库

systemctl start mysql

mysql -u root -p

自带的默认登陆不需要密码,直接回车

设置密码并将其配置为需要密码认证

alter user ‘root’@’localhost’ IDENTIFIED BY ‘password’;password<=自定义密码

1、创建数据库实例便于测试

CREATE DATABASE test;

user test;

CREATE TABLE `country` (
`id` int(11) NOT NULL,
`name` varchar(100) DEFAULT NULL,
PRIMARY KEY (`id`)
);

insert into country values (1,’beijing’),(2,’shanghai’);

CREATE USER ‘guest’@’localhost’ IDENTIFIED BY ‘123456’;
GRANT ALL PRIVILEGES ON test.* TO ‘guest’@’localhost’;
FLUSH PRIVILEGES;
EXIT;
2、配置nginx代理

vi /etc/nginx/sites-available/default,添加如下配置

procy_pass为数据库开放端口

3、编写测试php文件

vi index.php

重启nginx服务,浏览器访问,country表数据正常显示

五、总结

LNMP架构简单的搭建测试就完成了,Debian6.1.27系统都包含这些包确实方便,但相应版本都较为高级,许多书籍以及网上教程都是针对一些旧版本的,配置文件都较为老久,所以好多配置都需要自己去理解去摸索,通过一遍遍的探测才知道每条配置的作用。每次服务启动失败的时候时是非常痛苦的,日志文件和配置文件是必看的,只有通过这两个才知道哪里部署有问题。

六、参考文献

1、《零基础Linux从入门到精通》–零壹快学

2、https://www.cnblogs.com/leon2659/p/9409151.html

3、2019-02-14笔记—php-fpm配置_ai_benwoniu的博客-CSDN博客

4、nginx怎么配置mysql数据库_mob649e8167c4a3的技术博客_51CTO博客​​​​​​

5、解决Mariadb无密码也可以登录的问题_mariadb无密码登录_AmandaTai的博客-CSDN博客