egg nginx mysql_Nginx实现基础Web架构

LNMP架构概述

什么是LNMP

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

LNMP架构是如何工作的

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

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

Nginx与Fast-CGO详细工作流程

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作用

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

phpinfo();

?>

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

[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;

}

}

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

[root@nginx ~]# cat /code/mysqli.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...";

?>

php_mysql.png

部署博客产WordPress

#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,并部署该产品

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

提示:nginx上传大小的限制

部署知乎产品Wecenter

#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.通过浏览器访问网站

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

phpmyadmin

zblog

discuz

edusoho

同一ip(都是80端口)可以绑定无数个域名 配置简单 里面包含一个配置文档:配置文档.doc 看一遍 大部分人都会设置了。 内容如下: NGNIX配置文档 1.解压文件到相应文件夹下(我解压到D:/下) (这里是图片) 目录结构如上 2.在D:\nginx\目录下用记事本新建一个文本文档改名为 proxy.conf。 proxy.conf里面的内容格式如下: server { listen 80; server_name www.*****.com; location / { proxy_pass http://192.168.45.1:8045; proxy_redirect off; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } } (完整拷贝上面的内容server_name www.*****.com; 这里面的域名即是来访域名 proxy_pass http://192.168.45.1:8045; 这里面的域名(http://192.168.45.1:8045)即是内部跳转的地址,将该内容拷贝多份实现不同来访域名的跳转) 如下: 3.找到D:\nginx\conf下nginx.conf文件用记事本打开 在文段末尾大括号前加上 include proxy.conf;(就是加载刚刚新建的那个文件(注意路径)) 4.进入cmd 进入D盘: d: 进到nginx文件夹下:cd nginx 启动nginx.exe:start nginx Cmd窗口会闪一下 进程里面会多了个 浏览器里面输入:http://127.0.0.1 将出现: Nginx的欢迎界面。 注: nginx -s stop // 停止nginx nginx -s reload // 重新加载配置文件 nginx -s quit // 退出nginx nginx-1.3.9.zip(这个版本) (1分钟搞定只是夸张说法啦,给你增加信心的啦,真正的操作起来,因人而异,没搞定的耐心再试试,自己xp系统亲测成功,不喜欢的无拍砖哦,实在搞不定的加我qq852208555 一起研究下 谢谢!)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值