lnmp工作原理

1.LNMP是什么,为什么采用这种架构,优势有哪些?

  • LNMP是一个基于CentOS/Debian编写的Nginx、PHP、MySQL、PHPMyAdmin、eAccelerator一键安装包
    可以在VPS、独立主机上轻松的安装LNMP生产环境。
LNMP代表的就是:Linux系统下Nginx+MySQL+PHP这种网站服务器架构

Nginx较为稳定、功能丰富、安装配置简单、低系统资源
Nginx既可以在内部直接支持Rails和PHP,也可以支持作为HTTP代理服务器对外进行服务
Nginx用C编写,不论是系统资源开销还是CPU使用效率都比Perlbal好得多

在LNMP中,Nginx本身对脚本不做任何的处理,而是把请求发给fast-cgi管理进程处理,
fast-cgi管理进程选择cgi子进程处理结果并返回,二者是相互独立的,通过管道进程通信

在LAMP中,PHP是Apache的一个模块,具有相同的生命周期,两者通过共享内存的方式通信

两者的PHP环境不相互适用

相比 Apache,Nginx 使用更少的资源,支持更多的并发连接,体现更高的效率

2.lnmp和lamp的工作原理

(1)lnmp的工作原理

原理:浏览器发送http request请求到服务器(Nginx),服务器响应并处理web请求,将一些静态资源(CSS,图片,视频等)保存服务器上,如果是静态文本直接返回。然后将php脚本通过接口传输协议(网关协议)PHP-FCGI(fast-cgi)传输给PHP-FPM(进程管理程序),PHP-FPM不做处理,然后PHP-FPM调用PHP解析器进程,PHP解析器解析php脚本信息。PHP解析器进程可以启动多个,进行并发执行。然后将解析后的脚本返回到PHP-FPM,PHP-FPM再通过fast-cgi的形式将脚本信息传送给Nginx.服务器再通过Http response的形式传送给浏览器。浏览器再进行解析与渲染然后进行呈现。

日pv 千万的lnmp架构 lnmp架构搭建_mysql


Fast-CGI 介绍

fast-CGI是nginx和php之间的一个通信接口,该接口实际处理过程通过启动php-fpm进程来解析php脚本即php-fpm相当于一个动态应用服务器,从而实现nginx动态解析php

本人理解:
nginx—>接口(fast-CGI)–>启动php-fpm进程(调用解释器其中的一个子进程PHP-CGI)–>php

因此,如果nginx服务器需要支持php解析,需要在nginx.conf中增加php的配置
将php脚本转发到fastCGI进程监听的IP地址和端口(php-fpm.conf中指定)
同时,php安装的时候,需要开启支持fastCGI选项,并且编译安装php-fpm补丁/扩展

同时,需要启动php-fpm进程,才可以解析nginx通过fastCGI转发过来的php脚本!!!!!!!

工作原理:
FastCGI进程管理器自身初始化,启动多个CGI解释器进程(可见多个php-cgi)并等待来自Web Server的连接
当客户端请求到达Web Server时,Fast-CGI进程管理器选择并连接到一个CGI解释器
Web server将CGI环境变量和标准输入发送到Fast-CGI子进程php-cgi
Fast-CGI子进程完成处理后将标准输出和错误信息从同一连接返回Web Server
当Fast-CGI子进程关闭连接时,请求便告处理完成

php-fpm:
1、php-fpm是一个完全独立的程序,不依赖php-cgi,也不依赖php。因为php-fpm是一个内置了php解释器的FastCGI服务,启动时能够自行读取php.ini配置和php-fpm.conf配置.

PHP-CGI
php-cgi 是解释PHP脚本的程序,只是个CGI程序,他自己本身只能解析请求,返回结果,不会进程管理

(2)lamp的工作原理

浏览器向服务器发送http请求,服务器 (Apache)
接受请求,由于php作为Apache的组件模块也会一起启动,它们具有相同的生命周期。Apache会将一些静态资源保存,然后调用php去处理模块进行php脚本的处理。脚本处理完后,Apache将处理完的信息通过http
response的方式发送给浏览器,浏览器解析,渲染等一系列操作后呈现整个网页。

日pv 千万的lnmp架构 lnmp架构搭建_mysql_02

什么是 FastCGI

FastCGI是一个可伸缩地、高速地在HTTP server和动态脚本语言间通信的接口。多数流行的HTTP server都支持FastCGI,包括Apache、Nginx和lighttpd等。同时,FastCGI也被许多脚本语言支持,其中就有PHP。

FastCGI是从CGI发展改进而来的。传统CGI接口方式的主要缺点是性能很差,因为每次HTTP服务器遇到动态程序时都需要重新启动脚本解析器来执行解析,然后将结果返回给HTTP服务器。这在处理高并发访问时几乎是不可用的。另外传统的CGI接口方式安全性也很差,现在已经很少使用了。

FastCGI接口方式采用C/S结构,可以将HTTP服务器和脚本解析服务器分开,同时在脚本解析服务器上启动一个或者多个脚本解析守护进程。当HTTP服务器每次遇到动态程序时,可以将其直接交付给FastCGI进程来执行,然后将得到的结果返回给浏览器。这种方式可以让HTTP服务器专一地处理静态请求或者将动态脚本服务器的结果返回给客户端,这在很大程度上提高了整个应用系统的性能。

Nginx+FastCGI运行原理

Nginx不支持对外部程序的直接调用或者解析,所有的外部程序(包括PHP)必须通过FastCGI接口来调用。FastCGI接口在Linux下是socket(这个socket可以是文件socket,也可以是ip socket)。为了调用CGI程序,还需要一个FastCGI的wrapper(wrapper可以理解为用于启动另一个程序的程序),这个wrapper绑定在某个固定socket上,如端口或者文件socket。当Nginx将CGI请求发送给这个socket的时候:

***通过FastCGI接口,wrapper接收到请求,然后派生出一个新的线程,这个线程调用解释器或者外部程序处理脚本并读取返回数据;***接着,wrapper再将返回的数据通过FastCGI接口,沿着固定的socket传递给Nginx;最后,Nginx将返回的数据发送给客户端。这就是Nginx+FastCGI的整个运作过程,如图

日pv 千万的lnmp架构 lnmp架构搭建_php_03

日pv 千万的lnmp架构 lnmp架构搭建_nginx_04


当用户访问一个地址,这个请求会会到负载均衡再交给nginx web服务,web服务通过location判断这是否是.php结尾的请求,如果是,则通过fastcgi_pass调用FastCGI接口,传给php-fpm(php)。如果php能处理的了就直接回应应用,如果处理不了需要调用数据库来处理(用户读取文章或者上传文章等),但是数据库只支持sql语句php服务需要通过解释器php.ini来完成数据库的调用,处理完这个请求后再返回给php-nginx-用户做出回应。

同样,LAMP的架构也与次相似,只不过在这个架构中php是以插件的形式被Apache调用的。

为我们提供的mysql、php等其功能有限,我们自行编译,是为了定制化,可以在编译过程中添加需要的功能模块

yum安装和自己编译安装的区别
如果是yum安装,它会把所有的模块都安装进去,不管你用不用都会给你安装
如果是自己动手编译,安装服务的时候需要安装什么就编译什么模块,公司一般是这样做
需要什么服务就安装什么,这样系统就比较干净

日pv 千万的lnmp架构 lnmp架构搭建_mysql_05

MYSQL数据库的源码编译

mysql

1)解压安装mysql

tar zxf mysql-boost-5.7.17.tar.gz

日pv 千万的lnmp架构 lnmp架构搭建_日pv 千万的lnmp架构_06

日pv 千万的lnmp架构 lnmp架构搭建_php_07

2)安装cmake(相当于configure),用来编译mysql

  • cmake跨平台工具是用来预编译mysql源码的,用于设置mysql的编译参数。如:安装目录、数据存放目录、字符编码、排序规则等
yum install -y cmake-2.8.12.2-4.el6.x86_64.rpm 同时解决依赖性

日pv 千万的lnmp架构 lnmp架构搭建_nginx_08

3)创建预编译环境,可以定制即加上自己所需的安装条件(比如安装位置等等)

cmake -DCMAKE_INSTALL_PREFIX=/usr/local/lnmp/mysql \ #安装目录 
         -DMYSQL_DATADIR=/usr/local/lnmp/mysql/data \  #数据库存放目录
	 -DMYSQL_UNIX_ADDR=/usr/local/lnmp/mysql/data/mysql.sock \ #Unix socket 文件路径
	 -DWITH_MYISAM_STORAGE_ENGINE=1 \  #安装 myisam 存储引擎
	 -DWITH_INNOBASE_STORAGE_ENGINE=1 \ #安装 innodb 存储引擎
	 -DDEFAULT_CHARSET=utf8 \ #使用 utf8 字符
	 -DDEFAULT_COLLATION=utf8_general_ci \ #校验字符
	 -DEXTRA_CHARSETS=all \#安装所有扩展字符集

日pv 千万的lnmp架构 lnmp架构搭建_nginx_09

4)根据提示解决依赖性问题
需要安装包:yum install -y gcc gcc-c++ ncurses-devel

日pv 千万的lnmp架构 lnmp架构搭建_php_10

日pv 千万的lnmp架构 lnmp架构搭建_nginx_11

##报错##
CMake Error at cmake/boost.cmake:81 (MESSAGE):
  You can download it with -DDOWNLOAD_BOOST=1 -DWITH_BOOST=<directory>

  This CMake script will look for boost in <directory>.  If it is not there,
  it will download and unpack it (in that directory) for you.

  If you are inside a firewall, you may need to use an http proxy:

  export http_proxy=http://example.com:80

‘重新编译时,需要清除原来的对象文件和缓存信息’

'make clean;rm -fr CmakeCache.txt'	
注意:每次cmake之前都需要rm -fr CmakeCache.txt'

##解决##

缺少 -DWITH_BOOST=<directory> 参数 -DWITH_BOOST=boost/boost_1_59_0/ (可Tab补齐)

日pv 千万的lnmp架构 lnmp架构搭建_日pv 千万的lnmp架构_12

日pv 千万的lnmp架构 lnmp架构搭建_php_13

后面编译会有一个warning:
CMake Warning at cmake/bison.cmake:20 (MESSAGE):
  Bison executable not found in PATH
Call Stack (most recent call first):
  sql/CMakeLists.txt:514 (INCLUDE)

##解决##
yum install -y bison

日pv 千万的lnmp架构 lnmp架构搭建_mysql_14

5)make && make install (过程较长) ##如果make还有问题,删除原来的目录,重新解压编译

日pv 千万的lnmp架构 lnmp架构搭建_nginx_15

安装完成

日pv 千万的lnmp架构 lnmp架构搭建_日pv 千万的lnmp架构_16

6)进入mysql的解压目录,查找mysql服务的启动脚本
将编译完成的mysql启动脚本复制到系统启动服务的默认目录中
复制启动脚本到/etc/init.d/
[root@server5 support-files]# pwd
/root/mysql-5.7.17/support-files
[root@server5 support-files]# cp mysql.server /etc/init.d/mysqld

日pv 千万的lnmp架构 lnmp架构搭建_日pv 千万的lnmp架构_17

日pv 千万的lnmp架构 lnmp架构搭建_mysql_18

7)进入源码编译目录,再进入mysql安装的位置,将编译完成的默认配置文件放在/etc/my.cnf
将原来的/etc/my.cnf备份,重新拷贝安装包里的过去
[root@server5 etc]# cp my.cnf my.cnf.bak
[root@server5 support-files]# cp my-default.cnf /etc/my.cnf

修改配置:
basedir = /usr/local/lnmp/mysql  ##mysql的安装目录
datadir = /usr/local/lnmp/mysql/data  ##mysql数据存放的位置
socket = /usr/local/lnmp/mysql/data/mysql.sock  ##mysql与外界联系的套接字文件位置

日pv 千万的lnmp架构 lnmp架构搭建_日pv 千万的lnmp架构_19

日pv 千万的lnmp架构 lnmp架构搭建_日pv 千万的lnmp架构_20


日pv 千万的lnmp架构 lnmp架构搭建_日pv 千万的lnmp架构_21

8)对mysql服务进行限制(利用mysql用户)创建mysql组和mysql用户
添加用户和组:
   groupadd -g 27 mysql
   useradd -u 27 -g 27 mysql (id=27是因为rpm默认安装时mysql用户的id为27,并非强制)

   chown mysql.mysql /usr/local/lnmp/mysql -R (修改mysql目录的权限,使其对mysql用户可写,只有这样才可以生成它的数据目录)

日pv 千万的lnmp架构 lnmp架构搭建_nginx_22

9)将mysql命令添加到环境变量
vim ~/.bash_profile
添加:PATH=$PATH:$HOME/bin:/usr/local/lnmp/mysql/bin
生效:source ~/.bash_profile  ##加载.bash_profile文件

日pv 千万的lnmp架构 lnmp架构搭建_日pv 千万的lnmp架构_23

初始化mysql:

生成data目录的同时回给一个数据库的初始密码
mysqld --user=mysql --initialize(以mysql用户身份初始化)
初始化会生成一个临时密码,用于登录mysql(要记住此密码)
#如:'2019-01-03T09:06:09.448851Z 1 [Note] A temporary password is generated for root@localhost: r#9VqAoA/au:'

日pv 千万的lnmp架构 lnmp架构搭建_mysql_24

日pv 千万的lnmp架构 lnmp架构搭建_日pv 千万的lnmp架构_25

可以看到生成了data目录

日pv 千万的lnmp架构 lnmp架构搭建_mysql_26


注意:如果这条命令执行不成功,则进入data目录下,将里面的东西都删掉,再次执行则成功

10)为了安全,再将mysql目录的所有者改为root。
生成data目录之后将权限改回来,只把data目录的权限给mysql

chown root /usr/local/lnmp/mysql -R
chown mysql /usr/local/lnmp/mysql/data -R  ##数据目录所有者必须是mysql,不然mysql用户不能写

日pv 千万的lnmp架构 lnmp架构搭建_php_27


11)启动mysql:/etc/init.d/mysqld start

日pv 千万的lnmp架构 lnmp架构搭建_mysql_28

12)进入mysql:mysql -uroot -pr#9VqAoA/au: #使用刚才的临时密码
执行:show databases; 会报错
需要执行:mysql_secure_installation,然后会提示是否启用密码检测插件,直接回车不启用,否则会要求密码有大小写和特殊字符等要求
剩余全部选 y

mysql安装配置完成

日pv 千万的lnmp架构 lnmp架构搭建_nginx_29

日pv 千万的lnmp架构 lnmp架构搭建_nginx_30

日pv 千万的lnmp架构 lnmp架构搭建_日pv 千万的lnmp架构_31

日pv 千万的lnmp架构 lnmp架构搭建_mysql_32

可以看到数据目录下生成了套节字文件

日pv 千万的lnmp架构 lnmp架构搭建_日pv 千万的lnmp架构_33

php

1)解压:tar jxf php-5.6.35.tar.bz2
yum -y install bzip2

日pv 千万的lnmp架构 lnmp架构搭建_nginx_34

日pv 千万的lnmp架构 lnmp架构搭建_日pv 千万的lnmp架构_35

2)进入解压后的目录,开始编译

./configure --prefix=/usr/local/lnmp/php --with-config-file-path=/usr/local/lnmp/php/etc --with-openssl --with-snmp --with-gd --with-zlib --with-curl --with-libxml-dir --with-png-dir --with-jpeg-dir --with-freetype-dir --with-gmp --with-gettext --with-pear --enable-mysqlnd --with-mysql=mysqlnd --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --enable-inline-optimization --enable-soap --enable-ftp --enable-sockets --enable-mbstring --enable-fpm --with-fpm-user=nginx --with-fpm-group=nginx --with-mcrypt --with-mhash

--with-config-file-path=/etc      指定php.ini位置
--with-MySQL=mysql安装目录,对mysql的支持
--with-MySQLi=mysqli文件目录,优化支持
--enable-fpm
PHP-FPM是一个PHP FastCGI管理器,是只用于PHP的,它其实是PHP源代码的一个补丁,旨在将Fast-CGI进程管理整合进PHP包中。必须将它patch到你的PHP源代码中,在编译安装PHP后才可以使用。新版的PHP已经集成了php-fpm,在./configure的时候带 –enable-fpm参数即可开启PHP-FPM
#以上为php需要编译的模块,把刚才编译mysql的参数要加进来,添加mysqlnd(这是mysql的驱动,php开发的)
--with-freetype-dir  打开对freetype字体库的支持 
--with-zlib 打开zlib库支

#编译时遇到的报错就安装:yum install -y libxml2-devel libcurl-devel 
#没有jpeglib.h文件:yum whatprovides */jpeglib.h
#yum install -y libjpeg-turbo-devel-1.2.1-1.el6.x86_64
#yum install -y libpng-devel-1.2.49-1.el6_2.x86_64
#yum install -y freetype freetype-devel
#yum install -y net-snmp net-snmp-devel

3)编译报错,逐步解决依赖性(rhel7可以向下兼容6的包)
yum install -y re2c-0.13.5-1.el6.x86_64.rpm libmcrypt-2.5.8-9.el6.x86_64.rpm libmcrypt-devel-2.5.8-9.el6.x86_64.rpm (系统镜像没有的3个包)

日pv 千万的lnmp架构 lnmp架构搭建_nginx_36

日pv 千万的lnmp架构 lnmp架构搭建_nginx_37

日pv 千万的lnmp架构 lnmp架构搭建_mysql_38

日pv 千万的lnmp架构 lnmp架构搭建_日pv 千万的lnmp架构_39

日pv 千万的lnmp架构 lnmp架构搭建_nginx_40

日pv 千万的lnmp架构 lnmp架构搭建_日pv 千万的lnmp架构_41

日pv 千万的lnmp架构 lnmp架构搭建_mysql_42

日pv 千万的lnmp架构 lnmp架构搭建_mysql_43

日pv 千万的lnmp架构 lnmp架构搭建_日pv 千万的lnmp架构_44

日pv 千万的lnmp架构 lnmp架构搭建_nginx_45

日pv 千万的lnmp架构 lnmp架构搭建_日pv 千万的lnmp架构_46

日pv 千万的lnmp架构 lnmp架构搭建_日pv 千万的lnmp架构_47

日pv 千万的lnmp架构 lnmp架构搭建_日pv 千万的lnmp架构_48

日pv 千万的lnmp架构 lnmp架构搭建_日pv 千万的lnmp架构_49

日pv 千万的lnmp架构 lnmp架构搭建_php_50

4)make && make install

日pv 千万的lnmp架构 lnmp架构搭建_nginx_51

5)编译时添加了--with-fpm-user=nginx --with-fpm-group=nginx 参数
所以添加l nginx 用户

日pv 千万的lnmp架构 lnmp架构搭建_日pv 千万的lnmp架构_52

6)拷贝更改配置文件
[root@server5 etc]# pwd
/usr/local/lnmp/php/etc
[root@server5 etc]# cp php-fpm.conf.default php-fpm.conf
查看配置文件中以下几项是否开启:
user = nginx  ##保证用户和组都是Nginx
group = nginx
pid = run/php-fpm.pid  ##去掉注释,开启进程pid

日pv 千万的lnmp架构 lnmp架构搭建_mysql_53

日pv 千万的lnmp架构 lnmp架构搭建_日pv 千万的lnmp架构_54

日pv 千万的lnmp架构 lnmp架构搭建_nginx_55

7)拷贝更改php主配置文件
[root@server5 php-5.6.35]# cp php.ini-production /usr/local/lnmp/php/etc/php.ini 
修改时区:date.timezone = Asia/Shanghai

日pv 千万的lnmp架构 lnmp架构搭建_日pv 千万的lnmp架构_56

日pv 千万的lnmp架构 lnmp架构搭建_php_57

8)拷贝php启动脚本至/etc/init.d/
[root@server5 fpm]# pwd
/root/lnmp/php-5.6.35/sapi/fpm
[root@server5 fpm]# cp init.d.php-fpm /etc/init.d/php-fpm 
添加执行权限:chmod +x /etc/init.d/php-fpm 

9)启动php:/etc/init.d/php-fpm start

日pv 千万的lnmp架构 lnmp架构搭建_nginx_58

日pv 千万的lnmp架构 lnmp架构搭建_日pv 千万的lnmp架构_59

nginx

1)解压nginx:tar zxf nginx-1.14.0.tar.gz 

2)进入nginx解压包:
vim src/core/nginx.h
修改:#define NGINX_VER          "nginx/"(将此行末尾显示nginx版本号的配置删除)

vim auto/cc/gcc 
修改:
# debug
#CFLAGS="$CFLAGS -g" (将这2行注释调,关闭debug)

3)编译安装nginx:
./configure --prefix=/usr/local/lnmp/nginx --with-http_ssl_module --with-http_stub_status_module --with-threads --with-file-aio --user=nginx --group=nginx

根据提示解决依赖性	##此处应该还需要安装pcre-devel

4)make && make install

5)修改nginx配置文件,开启php模块
vim 

43  location / {
44             root   html;
45             index  index.php index.html index.htm; (添加php页面)
46         }


65  location ~ \.php$ {
66             root           html;
67             fastcgi_pass   127.0.0.1:9000;
68             fastcgi_index  index.php;
69             #fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
70             include        fastcgi.conf;
71         }

不会可以参考上一篇博客

日pv 千万的lnmp架构 lnmp架构搭建_日pv 千万的lnmp架构_60

配置nginx服务

编辑nginx服务的配置文件
cd /usr/local/lnmp/nginx/conf
vim nginx.conf
加入index.php(现在要做lnmp(把php和nginx关联起来))
开启php模块:注释掉fastcgi_param,把文件写为 fastcgi.conf

日pv 千万的lnmp架构 lnmp架构搭建_php_61

日pv 千万的lnmp架构 lnmp架构搭建_mysql_62

日pv 千万的lnmp架构 lnmp架构搭建_nginx_63

6)将nginx启动脚本链接到/usr/local/sbin/
ln -s /usr/local/lnmp/nginx/sbin/nginx /usr/local/sbin/
[root@server5 ~]# nginx -t	##检测语法
[root@server5 ~]# nginx		##开启nginx

7)尝试访问:http://172.25.0.1	##是nginx默认页面
在nginx默认发布目录添加 index.php。
编写nginx服务的默认发布页面(已经将默认发布页面改为index.php了)
vim /usr/local/lnmp/nginx/html/index.php
<?php
phpinfo()
?>

#可以看到php的默认页面

日pv 千万的lnmp架构 lnmp架构搭建_日pv 千万的lnmp架构_64

日pv 千万的lnmp架构 lnmp架构搭建_mysql_65

8)启动nginx并访问:http://172.25.63.1

nginx安装配置完成  表示nginx和php结合成功

日pv 千万的lnmp架构 lnmp架构搭建_日pv 千万的lnmp架构_66

最后将php、nginx、mysql服务全部开启

搭建:
php部分:
1拷贝压缩包php到server1上
2解压
3编译(其中缺少很多包,按照报错进行安装)
4安装
5建立nginx用户(因为编译的时候指定了php的用户是nginx)
6配置fastcgi的进程管理文件

配置php
cd /usr/local/lnmp/php/进入php目录
ls查看
cd etc/
cp  php-fpm.conf.default  php-fpm.conf复制一份配置文件模版
vim php-fpm.conf     编辑fastcgi的进程管理文件
更改用户和组 开启进程pid
注意用户和组都是nginx
搜user group把用户和组全部改为nginx用户
开启pid=run/php-fpm.pid开启进程pid

.配置php主配置文件
更改时区
cd php-5.6.35
cp php.ini-production /usr/local/lnmp/php/etc/php.ini
cd /usr/local/lnmp/php/etc/
ls
vim php.ini 配置php的主配置文件
将date.timezone改为Asia/Shanghai

配置启动脚本/etc/init.d/php-fpm
启动脚本
查看端口9000端口开启
cd php-5.6.35
cd sapi/
ls
cd fpm/
vim init.d.php-fpm
cp init.d.php-fpm  /etc/init.d/php-fpm 建立php的启动脚本
chmod +x /etc/init.d/php-fpm 给脚本一个权限
/etc/init.d/php-fpm start  开启php服务
netstat -tnlp 默认php服务开启9000端口




nginx部分:
解压----编译---安装---配置
cd /usr/local/lnmp/nginx/conf
vim nginx.conf
加入index.php(现在要做lnmp(把php和nginx关联起来))后面nginx.html...
开启php模块:注释掉fastcgi_param,把文件写为 fastcgi.conf


ln -s /usr/local/lnmp/nginx/sbin/nginx /usr/local/sbin把nginx服务的启动脚本做软连接,方便管理nginx服务
输入nginx可以tab补全
nginx -t检测配置文件的语法是否存在错误
nginx 开启nginx服务

编写nginx服务的默认发布页面(已经将默认发布页面改为index.php了)
pwd
cd /usr/local/lnmp/nginx/html
vim index.php
<?php
phpinfo()
?>
nginx -s reload


(6)测试

在真机的浏览器里面测试:
在浏览器输入:172.25.8.1就可以看到php的页面了(此时nginx和php已经关联起来了)

mysql安装:
在进行mysql的编译安装之前,为了加快安装mysql的速度,我们来调整一下cpu和内存的大小
解压 进入目录 发现需要cmake  从真机传一个cmake的rpm包  yum install
cmake ........

失败,需要解决依赖包问题(号多个)


先删掉刚刚检测生成的文件再进行编译

重新cmake

6.)安装,这个特别慢
进入lnmp目录,可以看到生成了mysql目录
进入mysql的解压目录,查找mysql服务的启动脚本

生成mysql的启动脚本,给权限   /etc/init.d/mysqld
先备份一下mysql服务的配置文件,再复制一份模版 /etc/my.cnf

写入基本信息:主目录、数据目录、套节字文件的目录


建立mysql用户

将mysql主目录的权限变为mysql,只有这样才可以生成它的数据目录

编辑环境文件 加入mysql命令

source使其生效,可以看出有mysql命令了

生成data目录的同时回给一个数据库的初始密码

可以看到生成了data目录

生成data目录之后将权限改回来,只把data目录的权限给mysql

开启mysql服务

利用初始密码登录数据库
发现只有改了密码之后才可以查看数据库

初始化数据库,改数据库的的密码(给root的)

可以看到数据目录下生成了套节字文件

最后将php、nginx、mysql服务全部开启
9000 80 3306