大毛研究的nginx怎么玩???LNMP架构超详细解析!

1.nginx介绍

#Nginx WEB特点
1) Nginx处理静态网页并发性能5w/s,相当于Apache WEB性能的5-10倍;
2)可以实现负载均衡、反向代理功能;
3)消耗操作系统内存,CPU极低
4)对后端服务健康检测的功能
5)支持PHP-CGI和FastCGI协议(PHP-FPM解释器);
6)可以做为缓存服务器,邮件代理服务器;
7)Nginx配置文件比较简洁、容易理解、上手。

#Nginx web工作原理
1)Ngin是由Ngin core内核和各个模块组成的;
2)其中Nginx core内核设计非常小,代码简洁,器用途将用户的请求跟nginx配置文件匹配;
3)匹配配置文件中的Location配置段,Location其 后接访问的URI路径;
4)如果匹配成功的话,则调用location配置段各个指令对应的模块完成相应的工作。

#静态网页和动态网页区别
1)静态网页是跟后端数据库不发生交互的网页,网页内容很少更新、网页文件后缀命名.htm、 . html、.xml; ( . jpglpngljpeglgifIcssljs|txt)
2)动态网页跟后端数据库发生交互的网页,网页内容经常更新、或者随着后端数据库内容变化而更新,网页文件后缀命名.asp、 . jsp、 . php;
#LNMP WEB架 构原理

#Nginx编译部署核心步骤
1)预编译; 
. /configure --prefix=/usr/ local/ nginx/ --user=www -- g roup=www --with-http_stub_status_module
作用:主要是检测Linux系统安装该所需的依赖环境、库文件,检测Linux系统是否存在GCc编译环境、
指定软件服务部署的路径,自定义软件服务特定模块、功能、参数、
最终会产生Makefile编译引导文件。
2)编译;
make
作用:主要是通过make编译工具,去读取第步预编译产生的Makefile文件,调用Linux系统下GCC编译器、将软件包中的源代码文件编译生成二进制文件Makefile文件用途,告知make编译工具在编译源代码文件时从哪个源码文件开始编译至哪个源码文件结束编译,以及记录编译时所需的依赖关系。
3)安装;
make instal l
作用:主要是将第二步编译产生的二进制文件,拷贝或者安装至Linux系统指定的安装日录--prefix=/usr/ local/nginx/。
#Nginx YUM部署核心步骤
1)要求Linux系统能够上外网;
2)默认Centos base源中服务器上是不存在Nginx软件包;
3)添加第三方的Epel-release扩展源;
4)通过yum install -y nginx即可从扩展源中安装Nginx;
5) systemctl restart nginx. service启动服务即可。
#LNMP WEB 架构原理
1 ) PHP动态网页Nginx是不能直接处理、解析的;
2) PHP网页程序交于PHP-FPM解释器解析,PHP-FPM可以将动态PHP文件解析为静态内容;
3) PHP-FPM不是WEB软件,不能对外发布;
4)借助Nginx+PHP-FPM整合起来,当用户访问index. php文件,Nginx发 现是动态网页;
5) Ng inx将index . php请求通过FastCGI协议转发给后端PHP-FPM解释器;
6)由PHP-FPM解释器将动态页面index.php进行解析,如果index.php页面连接后端数据库;
7)PHP程序如果需要连接后端MYSQL数据库,需要有连接驱动PHP-MYSQL。

2.LNMP架构

2.1LNMP用途

LNMP是一个服务器架构,通过在Linux系统上部署Nginx,Mysql,PHP这三个组件来实现一些以LNMP为环境架构的软件的发布。

2.2工作原理

client(客户端)发送请求给nginx服务器,如果是静态请求(.html,.xml,.htm),nginx会直接解析,如果是动态请求(php,jsp等)则会由nginx转发给php-ftp来进行解析,然后会调用数据库的相应数据运算返回。

2.3实战部署LNMP

A.PHP版本5.4

A2.3.1安装nginx

官网地址:nginx news

1)下载源码包解压

root@zzp113 ~]# wget -c https://nginx.org/download/nginx-1.22.1.tar.gz -P /usr/src/
[root@zzp113 ~]# cd /usr/src/
[root@zzp113 src]# ls
debug  kernels  nginx-1.22.1.tar.gz
[root@zzp113 src]# tar xzvf nginx-1.22.1.tar.gz 
[root@zzp113 src]# cd nginx-1.22.1/
[root@zzp113 nginx-1.22.1]# ll
总用量 804
drwxr-xr-x. 6 1001 1001   4096 12月 13 20:33 auto
-rw-r--r--. 1 1001 1001 317399 10月 19 16:02 CHANGES
-rw-r--r--. 1 1001 1001 485035 10月 19 16:02 CHANGES.ru
drwxr-xr-x. 2 1001 1001    168 12月 13 20:33 conf
-rwxr-xr-x. 1 1001 1001   2590 10月 19 16:02 configure
drwxr-xr-x. 4 1001 1001     72 12月 13 20:33 contrib
drwxr-xr-x. 2 1001 1001     40 12月 13 20:33 html
-rw-r--r--. 1 1001 1001   1397 10月 19 16:02 LICENSE
drwxr-xr-x. 2 1001 1001     21 12月 13 20:33 man
-rw-r--r--. 1 1001 1001     49 10月 19 16:02 README
drwxr-xr-x. 9 1001 1001     91 12月 13 20:33 src
[root@zzp113 src]# ls -l os/unix/ngx_					###.c 为源码文件,.h为引导文件
ngx_alloc.c                    ngx_freebsd_config.h           ngx_process_cycle.c            ngx_solaris_sendfilev_chain.c
~

2)预编译-----产生makefile引导文件

yum install -y gcc pcre-devel zlib-devel    ###部署环境
 ./configure --prefix=/usr/local/nginx/ --user=www --group=www --with-http_stub_status_module      ##预编译
####预编译--检查依赖环境,指定属组属主,指定服务部署路径
[root@zzp113 nginx-1.22.1]# ./configure --prefix=/usr/local/nginx/ --user=www --group=www --with-http_stub_status_module																			
checking for OS
 + Linux 3.10.0-957.el7.x86_64 x86_64
checking for C compiler ... not found						####缺少gcc,c语言编译器

./configure: error: C compiler cc is not found

[root@zzp113 nginx-1.22.1]# yum install gcc -y						####安装gcc
####二次预编译
[root@zzp113 nginx-1.22.1]# ./configure --prefix=/usr/local/nginx/ --user=www --group=www --with-http_stub_status_module
checking for OS										
~				####报错:
./configure: error: the HTTP rewrite module requires the PCRE library.				####缺少pcre库文件
You can either disable the module by using --without-http_rewrite_module
option, or install the PCRE library into the system, or build the PCRE library
statically from the source with nginx by using --with-pcre=<path> option.
[root@zzp113 nginx-1.22.1]# find / -name libpcre*.so			####查找pcre库文件
find: ‘/proc/78172’: 没有那个文件或目录
[root@zzp113 nginx-1.22.1]# yum install pcre-devel -y					####安装pcre库文件
####三次预编译
[root@zzp113 nginx-1.22.1]# ./configure --prefix=/usr/local/nginx/ --user=www --group=www --with-http_stub_status_module
###报错:
./configure: error: the HTTP gzip module requires the zlib library.   ###缺少gzip库,作用:nginx-web服务自压缩功能,节省带宽,减少传输时间
You can either disable the module by using --without-http_gzip_module
option, or install the zlib library into the system, or build the zlib library
statically from the source with nginx by using --with-zlib=<path> option.
[root@zzp113 nginx-1.22.1]# yum install -y zlib-devel					####安装gzib库文件
[root@zzp113 nginx-1.22.1]# find / -name libz.so			####查看gzib库文件
/usr/lib64/libz.so
###四次预编译
[root@zzp113 nginx-1.22.1]# ./configure --prefix=/usr/local/nginx/ --user=www --group=www --with-http_stub_status_module
####成功,预编译完成,产生makefile引导文件

3)make编译 --生成二进制文件,这里存放的就是nginx的所有功能,.config则是指定开启哪些功能

[root@zzp113 nginx-1.22.1]# make   ###编译
make -f objs/Makefile
make[1]: 进入目录“/usr/src/nginx-1.22.1”
cc -c -pipe  -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g  -I src/core -I src/event -I src/event/modules -I src/os/unix -I objs \
	-o objs/src/core/nginx.o \
	src/core/nginx.c
~
sed -e "s|%%PREFIX%%|/usr/local/nginx/|" \                            ###nginx目录
	-e "s|%%PID_PATH%%|/usr/local/nginx//logs/nginx.pid|" \
	-e "s|%%CONF_PATH%%|/usr/local/nginx//conf/nginx.conf|" \								####配置文件,控制nginx开启的功能
	-e "s|%%ERROR_LOG_PATH%%|/usr/local/nginx//logs/error.log|" \						####错误日志
	< man/nginx.8 > objs/nginx.8
make[1]: 离开目录“/usr/src/nginx-1.22.1”

4)安装---将二进制文件objs/nginx拷贝到/usr/local/nginx/sbin

[root@zzp113 nginx-1.22.1]# make install							####安装
make -f objs/Makefile install				
make[1]: 进入目录“/usr/src/nginx-1.22.1”
test -d '/usr/local/nginx/' || mkdir -p '/usr/local/nginx/'
test -d '/usr/local/nginx//sbin' \
	|| mkdir -p '/usr/local/nginx//sbin'
test ! -f '/usr/local/nginx//sbin/nginx' \
	|| mv '/usr/local/nginx//sbin/nginx' \
		'/usr/local/nginx//sbin/nginx.old'
cp objs/nginx '/usr/local/nginx//sbin/nginx'			###其实就是将二进制文件objs/nginx拷贝到/usr/local/nginx/sbin/nginx
[root@zzp113 nginx-1.22.1]# md5sum objs/nginx
abea76669d0523107e795fad8e09f209  objs/nginx
[root@zzp113 nginx-1.22.1]# md5sum /usr/local/nginx/sbin/nginx 
abea76669d0523107e795fad8e09f209  /usr/local/nginx/sbin/nginx

5)启动nginx服务

[root@zzp113 nginx-1.22.1]# useradd -s /sbin/nologin www -M			###创建www用户,指定不可ssh登录,不创建家目录
[root@zzp113 nginx-1.22.1]# /usr/local/nginx/sbin/nginx 			###启动服务
[root@zzp113 nginx-1.22.1]# ps -ef|grep nginx				###查看进程
root      86163      1  0 22:07 ?        00:00:00 nginx: master process /usr/local/nginx/sbin/nginx
www       86164  86163  0 22:07 ?        00:00:00 nginx: worker process
root      86197  76088  0 22:08 pts/1    00:00:00 grep --color=auto nginx
[root@zzp113 nginx-1.22.1]# 

6)访问测试

7)发布百度网站

[root@zzp113 nginx-1.22.1]# cd /usr/local/nginx/html/					###网站发布目录
[root@zzp113 html]# ls
50x.html  index.html
[root@zzp113 html]# rm -rf *
[root@zzp113 html]# rz                                                                            
[root@zzp113 html]# ls
index.html

A2.3.2LNMP整合

8)安装php解析器,启动

php解释器php-fpm将动态php页面解析为静态发送给nginx,这样就nginx就可以解析php文件了

[root@zzp113 html]# yum remove php*
已加载插件:fastestmirror, langpacks
参数 php* 没有匹配
不删除任何软件包
[root@zzp113 html]# yum install php php-devel php-fpm -y   ###安装
[root@zzp113 html]# systemctl start php-fpm				###启动
[root@zzp113 html]# ps -ef|grep php
root      89177      1  0 22:57 ?        00:00:00 php-fpm: master process (/etc/php-fpm.conf)
apache    89178  89177  0 22:57 ?        00:00:00 php-fpm: pool www
apache    89179  89177  0 22:57 ?        00:00:00 php-fpm: pool www
apache    89180  89177  0 22:57 ?        00:00:00 php-fpm: pool www
apache    89181  89177  0 22:57 ?        00:00:00 php-fpm: pool www
apache    89182  89177  0 22:57 ?        00:00:00 php-fpm: pool www
root      89196  76088  0 22:58 pts/1    00:00:00 grep --color=auto php
[root@zzp113 html]# cd /usr/local/nginx/conf/    ###进入nginx配置文件
[root@zzp113 conf]# ls
fastcgi.conf          fastcgi_params.default  mime.types          nginx.conf.default   uwsgi_params
fastcgi.conf.default  koi-utf                 mime.types.default  scgi_params          uwsgi_params.default
fastcgi_params        koi-win                 nginx.conf          scgi_params.default  win-utf
[root@zzp113 conf]# vim nginx.conf				###编辑配置文件
nginx.conf修改内容:

location ~ \.php$ {
            root           /usr/local/nginx/html;
            fastcgi_pass   127.0.0.1:9000;
            fastcgi_index  index.php;
            fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;  
            include        fastcgi_params;
        }
[root@zzp113 conf]# /usr/local/nginx/sbin/nginx -t			###测试文件修改是否有错
nginx: the configuration file /usr/local/nginx//conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx//conf/nginx.conf test is successful
[root@zzp113 conf]# /usr/local/nginx/sbin/nginx -s reload				###重启生效
[root@zzp113 conf]# 
创建index.php测试页面

[root@zzp113 conf]# cd /usr/local/nginx/html/
[root@zzp113 html]# ls
index.html
[root@zzp113 html]# vim index.html 
[root@zzp113 html]# mv index.html  index.php

测试文件内容:

<?php
phpinfo();
?>

B.PHP版本7.2

B2.3.2安装PHP-fpm7.2

1)卸载PHP旧版本;

yum remove php* -y

2)安装PHP 7.x源;

rpm -ivh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm

3)安装PHP7.2相关软件包;

yum install php72w php72w-cli php72w-common php72w-devel php72w-embedded php72w-fpm php72w-gd php72w-mbstring php72w-mysqlnd php72w-opcache php72w-pdo php72w-xml -y

4)查看PHP版本信息;

php -v

5)启动php-fpm服务;

systemctl restart php-fpm.service

6)查看PHP服务进程;

ps -ef|grep php-fpm

7)安装php-mysql

yum install -y php-mysql

B2.3.2LNMP整合

7)Nginx.conf配置文件代码如下:

worker_processes  1;
events {
    worker_connections  1024;
}
http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;
    server {
        listen       80;
        server_name  localhost;
        location / {
            root   /usr/local/nginx/html;
            index  index.php index.html index.htm;
        }
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
        location ~ \.php$ {
            root           /usr/local/nginx/html;
            fastcgi_pass   127.0.0.1:9000;
            fastcgi_index  index.php;
            fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
            include        fastcgi_params;
        }
    }
}

9)重新启动nginx

[root@zzp113 html]# /usr/local/nginx/sbin/nginx -t				
nginx: the configuration file /usr/local/nginx//conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx//conf/nginx.conf test is successful
[root@zzp113 html]# /usr/local/nginx/sbin/nginx -s reload

8)测试

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

醉里看星辰

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值