一、LNMP
LNMP是指一组通常一起使用来运行动态网站或者服务器的自由软件名称首字母缩写。L指Linux,N指Nginx,M一般指MySQL,也可以指MariaDB,P一般指PHP,也可以指Perl或Python。
LNMP代表的就是:Linux系统下Nginx+MySQL+PHP这种网站服务器架构。
Linux是一类Unix计算机操作系统的统称,是目前最流行的免费操作系统。代表版本有:debian、centos、ubuntu、fedora、gentoo等。
Nginx是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP代理服务器。
Mysql是一个小型关系型数据库管理系统。在Linux上为MariaDB
PHP是一种在服务器端执行的嵌入HTML文档的脚本语言。
这四种软件均为免费开源软件,组合到一起,成为一个免费、高效、扩展性强的网站服务系统。
二、部署LNMP环境
1.流程
- 1)安装部署Nginx、MariaDB、PHP、PHP-FPM;
- 2)启动Nginx、MariaDB、FPM服务;
- 3)并测试LNMP是否工作正常。
2.对应软件包
LNMP(Linux、Nginx、MySQL、PHP)
在RHEL7系统中,源码安装Nginx,使用RPM包安装MariaDB、PHP、PHP-FPM软件。
操作过程中需要安装的软件列表如下:
- nginx
- mariadb、mariadb-server、mariadb-devel
- php、php-fpm、php-mysql
备注:mariadb(数据库客户端软件)、mariadb-server(数据库服务器软件)、mariadb-devel(其他客户端软件的依赖包)、php(解释器)、php-fpm(进程管理器服务)、php-mysql(PHP的数据库扩展包)。
3.安装php
- [root@proxy ~]# yum -y install php php-mysql php-fpm
- [root@proxy ~]# system restart php-fpm
- [root@proxy ~]# system enable php-fpm
4.安装mariadb
- [root@proxy ~]# yum -y install mariadb mariadb-server mariadb-devel
- [root@proxy ~]#systemctl restart mariadb
- [root@proxy ~]#systemctl enable mariadb
5.安排nginx
[nginx安装详解]https://blog.csdn.net/ck784101777/article/details/98775059
- [root@proxy ~]# useradd -s /sbin/nologin nginx
- [root@proxy ~]# tar -xvf nginx-1.12.2.tar.gz
- [root@proxy ~]# cd nginx-1.12.2
- [root@proxy nginx-1.12.2]# ./configure \
- > --user=nginx --group=nginx \
- > --with-http_ssl_module
- [root@proxy ~]# make && make install
6.补充:关闭http服务
这里需要注意的是,如果服务器上已经启动了其他监听80端口的服务软件(如httpd),则需要先关闭该服务,否则会出现冲突。
- [root@proxy ~]# systemctl stop httpd //如果该服务存在则关闭该服务
- [root@proxy ~]# /usr/local/nginx/sbin/nginx //启动Nginx服务
- [root@proxy ~]# netstat -utnlp | grep :80
- tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 32428/nginx
三、搭建LNMP平台
0.流程:
- 配置Fast-CGI支持PHP网页
- 创建PHP测试页面,测试使用PHP连接数据库的效果
[Fast-CGI详解]https://blog.csdn.net/ck784101777/article/details/99327125
使用2台RHEL7虚拟机,其中一台作为LNMP服务器(192.168.4.5)、另外一台作为测试用的Linux客户机(192.168.4.10),如图所示。
Nginx结合FastCGI技术即可支持PHP解析架构,如图
1.创建php测试页面
在服务器上创建一个php后缀的测试网页
- [root@proxy ~]# vim /usr/local/nginx/html/test.php
-
- $i="hello";
- echo $i;
- ?>
2.修改Nginx配置文件并启动服务
在修改配置文件之前,我们nginx是怎么样处理php网页的
- [root@client ~]#echo "nameserver 192.168.4.5" >> /etc/resolv.conf //在客户机上进行测试,配置dns
- [root@client ~]#firefox 192.168.4.5/test.php
可以看到nginx会把他当做一个文件来看,询问你是否下载
在服务器proxy上修改配置文件
- [root@proxy ~]# vim /usr/local/nginx/conf/nginx.conf
- .....
- location / {
- root html;
- index index.php index.html index.htm;
- #设置默认首页为index.php,当用户在浏览器地址栏中只写域名或IP,不说访问什么页面时,服务器会把默认首页index.php返回给用户
- }
- location ~ \.php$ { #匹配以php结尾的请求
- root html;
- fastcgi_pass 127.0.0.1:9000; #将请求转发给本机9000端口,PHP解释器
- fastcgi_index index.php;
- #fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
- include fastcgi.conf; #加载其他配置文件
- }
- [root@proxy ~]# /usr/local/nginx/sbin/nginx //开启服务
3.经过php解析器
配置好php解析文件后,用客户机进行测试
- [root@client ~]#firefox 192.168.4.5/test.php
做好解析后内容如下
4.加入mariadb
在nginx目录下新建一个带数据库的网址,将密码该为mariadb的登录密码即可,如果没有设置默认为空'',网址的内容不是重点,理解mariadb是如何参与进来的即可
- [root@proxy ~]# vim /usr/local/nginx/html/mysql.php
-
- $mysqli = new mysqli('localhost','root','密码','mysql');
- //注意:root为mysql数据库的账户名称,密码需要修改为实际mysql密码,无密码则留空即可
- //localhost是数据库的域名或IP,mysql是数据库的名称
- if (mysqli_connect_errno()){
- die('Unable to connect!'). mysqli_connect_error();
- }
- $sql = "select * from user";
- $result = $mysqli->query($sql);
- while($row = $result->fetch_array()){
- printf("Host:%s",$row[0]);
- printf("");
- printf("Name:%s",$row[1]);
- printf("");
- }
- ?>
- ......
- [root@proxy ~]# firefox 192.168.4.5/mysql.php
效果如下,这里是查看mariadb默认的数据库mysql下的表user
5.LNMP排错
Nginx的默认访问日志文件为/usr/local/nginx/logs/access.log
Nginx的默认错误日志文件为/usr/local/nginx/logs/error.log
PHP默认错误日志文件为/var/log/php-fpm/www-error.log
如果动态网站访问失败,可用参考错误日志error.log,查找错误信息。
查看当天的错误信息可以这样,显示8月13当天所有的错误信息
grep '^2019/08/13' /usr/local/nginx/logs/error.log
或者详细到某个时间段,显示8月13,10点的所有错误
grep '^2019/08/13 10' /usr/local/nginx/logs/error.log