新闻资讯  快讯  焦点  财经  政策  社会
互 联 网   电商  金融  数据  计算  技巧
生活百科  科技  职场  健康  法律  汽车
手机百科  知识  软件  修理  测评  微信
软件技术  应用  系统  图像  视频  经验
硬件技术  知识  技术  测评  选购  维修
网络技术  硬件  软件  设置  安全  技术
程序开发  语言  移动  数据  开源  百科
安全防护  资讯  黑客  木马  病毒  移动
站长技术  搜索  SEO  推广  媒体  移动
财经百科  股票  知识  理财  财务  金融
教育考试  育儿  小学  高考  考研  留学
您当前的位置:首页 > IT百科 > 站长技术 > 服务器

Nginx实现基础Web架构

时间:2019-08-13 10:38:24  来源:  作者:

LNMP架构概述

什么是LNMP

LNMP是一套技术的组合,L=linux、N=Nginx、M~=MySQL、P~=php


LNMP架构是如何工作的

首先Nginx服务是不能处理动态请求,那么当用户发起动态请求时, Nginx又是如何进行处理的。

当用户发起http请求,请求会被Nginx处理,如果是静态资源请求Nginx则直接返回,如果是动态请求Nginx则通过fastcgi协议转交给后端的PHP程序处理,具体如下图所示

Nginx实现基础Web架构

 


Nginx与Fast-CGO详细工作流程

Nginx实现基础Web架构

 

1.用户通过http协议发起请求,请求会先抵达LNMP架构中的Nginx

2.Nginx会根据用户的请求进行判断,这个判断是有Location进行完成

3.判断用户请求的是静态页面,Nginx直接进行处理

4.判断用户请求的是动态页面,Nginx会将该请求交给fastcgi协议下发

5.fastgi会将请求交给php-fpm管理进程, php-fpm管理进程接收到后会调用具体的工作进程warrap

6.warrap进程会调用php程序进行解析,如果只是解析代码php直接返回

7.如果有查询数据库操作,则由php连接数据库(用户 密码 IP)发起查询的操作

8.最终数据由*mysql->php->php-fpm->fastcgi->nginx->http->user

LNMP架构环境部署

使用官方仓库安装Nginx

[root@nginx ~]# cat /etc/yum.repos.d/nginx.repo 
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/7/$basearch/
gpgcheck=0
enabled=1
 
#安装Nginx
[root@nginx ~]# yum install nginx -y

修改nginx用户

[root@nginx ~]# groupadd www -g 666
[root@nginx ~]# useradd www -u 666 -g 666 -s /sbin/nologin -M
#修改nginx配置文件
[root@nginx ~]# sed -i '/^user/c user www;' /etc/nginx/nginx.conf

启动Nginx加入开机自启

[root@nginx ~]# systemctl start nginx
[root@nginx ~]# systemctl enable nginx

使用第三方扩展源安装php7.1

# rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
# rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm
[root@nginx ~]# yum remove php-mysql-5.4 php php-fpm php-common
#配置第三方源
[root@nginx ~]# vim /etc/yum.repos.d/php.repo
[php-webtatic]
name = PHP Repository
baseurl = http://us-east.repo.webtatic.com/yum/el7/x86_64/
gpgcheck = 0
[root@nginx ~]# yum -y install php71w php71w-cli php71w-common php71w-devel php71w-embedded php71w-gd php71w-mcrypt php71w-mbstring php71w-pdo php71w-xml php71w-fpm php71w-mysqlnd php71w-opcache php71w-pecl-memcached php71w-pecl-redis php71w-pecl-mongodb

配置php-fpm用户与Nginx的运行用户保持一致

[root@nginx ~]# sed -i '/^user/c user = www' /etc/php-fpm.d/www.conf 
[root@nginx ~]# sed -i '/^group/c group = www' /etc/php-fpm.d/www.conf

启动php-fpm加入开机自启

[root@nginx ~]# systemctl start php-fpm
[root@nginx ~]# systemctl enable php-fpm

安装Mariadb数据库

[root@nginx ~]# yum install mariadb-server -y

启动Mariadb加入开机自动

[root@nginx ~]# systemctl start mariadb
[root@nginx ~]# systemctl enable mariadb

给Mariadb配置登陆密码

[root@nginx ~]# mysqladmin password 'Zls123.com'
[root@nginx ~]# mysql -uroot -pZls123.com

LNMP架构环境配置

在将Nginx与PHP集成过程中,需要先了解Fastcgi代理配置语法

1.设置fastcgi服务器的地址,该地址可以指定为域名或IP地址,以及端口

Syntax: fastcgi_pass address;
Default: —
Context: location, if in location
 
#语法示例
fastcgi_pass localhost:9000;
fastcgi_pass unix:/tmp/fastcgi.socket;

2.设置fastcgi默认的首页文件,需要结合fastcgi_param一起设置

Syntax: fastcgi_index name;
Default: —
Context: http, server, location

3.通过fastcgi_param设置变量,并将设置的变量传递到后端的fastcgi服务器

Syntax: fastcgi_param parameter value [if_not_empty];
Default: —
Context: http, server, location
 
#语法示例
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /code$fastcgi_script_name;

4.通过图形方式展示fastcgi_index与fastcgi_param作用

Nginx实现基础Web架构

 

Nginx实现基础Web架构

 

5.最终Nginx连接Fastcgi服务器配置如下

[root@nginx ~]# cat /etc/nginx/conf.d/php.conf 
server {
 listen 80;
 server_name php.driverzeng.com;
 location / {
 root /code;
 index index.php index.html;
 }
 location ~ \.php$ {
 root /code;
 fastcgi_pass 127.0.0.1:9000;
 fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name
 }
}

6.在/code目录下创建info.php文件,测试能否通过浏览器访问,访问成功如下图

[root@nginx ~]# cat /code/info.php
<?php
 phpinfo();
?>
Nginx实现基础Web架构

 

按照刚才的配置,页面打开一片空白。

[root@nginx ~]# cat /etc/nginx/conf.d/php.conf 
server {
 listen 80;
 server_name php.driverzeng.com;
 location / {
 root /code;
 index index.php index.html;
 }
 location ~ \.php$ {
 root /code;
 fastcgi_pass 127.0.0.1:9000;
 fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
 include fastcgi_params;
 }
}
Nginx实现基础Web架构

 

7.在/code目录下创建mysqli.php文件,填入对应的数据库IP、用户名、密码

[root@nginx ~]# cat /code/mysqli.php
<?php
 $servername = "localhost";
 $username = "root";
 $password = "Zls123.com";
 // 创建连接
 $conn = mysqli_connect($servername, $username, $password);
 // 检测连接
 if (!$conn) {
 die("Connection failed: " . mysqli_connect_error());
 }
 echo "小哥哥,php可以连接MySQL...";
?>
<img style='width:100%;height:100%;' src=https://www.driverzeng.com/zenglaoshi/php_mysql.png>
Nginx实现基础Web架构

 

部署博客产WordPress

1)配置Nginx虚拟主机站点,域名为blog.driverzeng.com

#1.nginx具体配置信息
[root@nginx ~]# cat /etc/nginx/conf.d/wordpress.conf
server {
 listen 80;
 server_name blog.driverzeng.com;
 root /code/wordpress;
 index index.php index.html;
 
 location ~ \.php$ {
 root /code/wordpress;
 fastcgi_pass 127.0.0.1:9000;
 fastcgi_index index.php;
 fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
 include fastcgi_params;
 }
}

2)重启nginx服务

[root@nginx ~]# systemctl restart nginx

3)获取wordpress产品,解压并部署wordress

[root@nginx ~]# mkdir /code
[root@nginx ~]# cd /code
[root@nginx code]# wget https://cn.wordpress.org/wordpress-5.0.3-zh_CN.tar.gz
#永远下载最新版
[root@nginx code]# wget https://cn.wordpress.org/latest-zh_CN.tar.gz
[root@nginx ~]# tar xf wordpress-5.0.3-zh_CN.tar.gz
[root@nginx ~]# chown -R www.www /code/wordpress/

4)由于wordpress产品需要依赖数据库,所以需要手动建立数据库

[root@nginx ~]# mysql -uroot -pZls123.com
mysql> create database wordpress;
mysql> exit

5)通过浏览器访问wordpress,并部署该产品

Nginx实现基础Web架构

 

Nginx实现基础Web架构

 

Nginx实现基础Web架构

 

Nginx实现基础Web架构

 

Nginx实现基础Web架构

 

Nginx实现基础Web架构

 

Nginx实现基础Web架构

 

Nginx实现基础Web架构

 


思考问题:上传文件报错413,如何解决?

提示:nginx上传大小的限制


部署知乎产品Wecenter

1.配置Nginx虚拟主机站点,域名为zh.driverzeng.com

#1.nginx具体配置信息
[root@http-server ~]# cat /etc/nginx/conf.d/zh.conf
server {
 listen 80;
 server_name zh.driverzeng.com;
 root /code/zh;
 index index.php index.html;
 
 location ~ \.php$ {
 root /code/zh;
 fastcgi_pass 127.0.0.1:9000;
 fastcgi_index index.php;
 fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
 include fastcgi_params;
 }
}
 
 
#2.重启nginx服务
[root@http-server ~]# systemctl restart nginx

2.下载Wecenter产品,部署Wecenter并授权

官方下载地址:TP

[root@web02 ~]# wget http://ahdx.down.chinaz.com/201605/WeCenter_v3.2.1.zip
[root@web02 ~]# unzip WeCenter_3-2-1.zip
[root@web02 ~]# mv WeCenter_3-2-1/ /code/zh
[root@web02 ~]# chown -R www.www /code/zh/

3.由于wecenter产品需要依赖数据库, 所以需要手动建立数据库

#1.登陆数据库
[root@http-server ~]# mysql -uroot -pZls123.com
 
#2.创建wordpress数据库
MariaDB [(none)]> create database zh;
MariaDB [(none)]> exit

3.通过浏览器访问网站

http://zh.driverzeng.com/install/

Nginx实现基础Web架构

 

Nginx实现基础Web架构

 

Nginx实现基础Web架构

 

Nginx实现基础Web架构

 

Nginx实现基础Web架构

 

Nginx实现基础Web架构

 

Nginx实现基础Web架构

 

当然除了这些产品,还有很多我们可以尝试着搭建的:

phpmyadmin

zblog

discuz

edusoho



Tags:Nginx Web架构   点击:()  评论:()
声明:本站部分内容来自互联网,内容观点仅代表作者本人,如有任何版权侵犯请与我们联系,我们将立即删除。
▌相关评论
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表
▌相关推荐
首先Nginx服务是不能处理动态请求,那么当用户发起动态请求时, Nginx又是如何进行处理的。...【详细内容】
2019-08-13   Nginx Web架构  点击:(0)  评论:(0)  加入收藏
推荐资讯
相关文章
栏目更新
栏目热门