您当前的位置:首页 > 电脑百科 > 站长技术 > 服务器

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架构   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除,谢谢。
▌相关推荐
首先Nginx服务是不能处理动态请求,那么当用户发起动态请求时, Nginx又是如何进行处理的。...【详细内容】
2019-08-13  Tags: Nginx Web架构  点击:(216)  评论:(0)  加入收藏
▌简易百科推荐
阿里云镜像源地址及安装网站地址https://developer.aliyun.com/mirror/centos?spm=a2c6h.13651102.0.0.3e221b111kK44P更新源之前把之前的国外的镜像先备份一下 切换到yumcd...【详细内容】
2021-12-27  干程序那些事    Tags:CentOS7镜像   点击:(1)  评论:(0)  加入收藏
前言在实现TCP长连接功能中,客户端断线重连是一个很常见的问题,当我们使用netty实现断线重连时,是否考虑过如下几个问题: 如何监听到客户端和服务端连接断开 ? 如何实现断线后重...【详细内容】
2021-12-24  程序猿阿嘴  CSDN  Tags:Netty   点击:(12)  评论:(0)  加入收藏
一. 配置yum源在目录 /etc/yum.repos.d/ 下新建文件 google-chrome.repovim /etc/yum.repos.d/google-chrome.repo按i进入编辑模式写入如下内容:[google-chrome]name=googl...【详细内容】
2021-12-23  有云转晴    Tags:chrome   点击:(7)  评论:(0)  加入收藏
一. HTTP gzip压缩,概述 request header中声明Accept-Encoding : gzip,告知服务器客户端接受gzip的数据 response body,同时加入以下header:Content-Encoding: gzip:表明bo...【详细内容】
2021-12-22  java乐园    Tags:gzip压缩   点击:(9)  评论:(0)  加入收藏
yum -y install gcc automake autoconf libtool makeadduser testpasswd testmkdir /tmp/exploitln -s /usr/bin/ping /tmp/exploit/targetexec 3< /tmp/exploit/targetls -...【详细内容】
2021-12-22  SofM    Tags:Centos7   点击:(7)  评论:(0)  加入收藏
Windows操作系统和Linux操作系统有何区别?Windows操作系统:需支付版权费用,(华为云已购买正版版权,在华为云购买云服务器的用户安装系统时无需额外付费),界面化的操作系统对用户使...【详细内容】
2021-12-21  卷毛琴姨    Tags:云服务器   点击:(6)  评论:(0)  加入收藏
参考资料:Hive3.1.2安装指南_厦大数据库实验室博客Hive学习(一) 安装 环境:CentOS 7 + Hadoop3.2 + Hive3.1 - 一个人、一座城 - 博客园1.安装hive1.1下载地址hive镜像路径 ht...【详细内容】
2021-12-20  zebra-08    Tags:Hive   点击:(9)  评论:(0)  加入收藏
以下是服务器安全加固的步骤,本文以腾讯云的CentOS7.7版本为例来介绍,如果你使用的是秘钥登录服务器1-5步骤可以跳过。1、设置复杂密码服务器设置大写、小写、特殊字符、数字...【详细内容】
2021-12-20  网安人    Tags:服务器   点击:(7)  评论:(0)  加入收藏
项目中,遇到了一个问题,就是PDF等文档不能够在线预览,预览时会报错。错误描述浏览器的console中,显示如下错误:nginx代理服务报Mixed Content: The page at ******** was loaded...【详细内容】
2021-12-17  mdong    Tags:Nginx   点击:(7)  评论:(0)  加入收藏
转自: https://kermsite.com/p/wt-ssh/由于格式问题,部分链接、表格可能会失效,若失效请访问原文密码登录 以及 通过密钥实现免密码登录Dec 15, 2021阅读时长: 6 分钟简介Windo...【详细内容】
2021-12-17  LaLiLi    Tags:SSH连接   点击:(16)  评论:(0)  加入收藏
最新更新
栏目热门
栏目头条