LNMP架构动态网页

LNMP架构一种常用的用来搭建动态网站页面的架构。
L:代表Linux系统;即LNMP架构是在Linux系统上实现的。若是第一次学习部署动态网页的话,最好把selinux和防火墙都关闭
N:代表nginx服务;ngnix服务主要用于处理用户的静态请求
P:代表php服务;一、处理动态的页面请求。二、负责和数据库建立关系
M:代表mysql服务;主要用户存储用户的字符串数据信息。(也可以使用mariadb服务代替)

LNPM工作流程
当客户端通过浏览器访问某个网站时,若是静态请求,那么nginx服务就可以直接产生应答,给用户返回想要的信息数据;若是动态请求,nginx服务则无法处理。但是nginx服务会通过配置的"ngx_http_fastcgi_module"中的fastcgi_pass参数,把动态请求交给php-fpm进程管理池(php-fpm是针对PHP的一种FastCGI进程管理器),php-fpm会让进程池中的一个子进程接收动态请求,然后把请求交给wrapper服务处理。若是此动态请求不涉及数据的存储,那么就不会和mysql进行通信,直接把处理后的结果原路返回,呈现在用户浏览器上即可;若是需要进行数据的存取,php解析器就需要把请求翻译成mysql语言与mysql数据库进行同行,最后再把处理好的请求原路返回。
在这里插入图片描述

LNMP架构部署
实验准备:一台安装Linux系统的主机

  • mysql服务部署:(因为yum安装mysql会很慢,这里推荐mariadb,和mysql都是一个人写的)
    第一步:安装数据库软件
    在这里插入图片描述
    第二步:启动数据库服务
    在这里插入图片描述
    第三步:给数据库服务设置密码、登录数据库
    在这里插入图片描述
    在这里插入图片描述

  • PHP服务的部署:
    第一步:更新yum仓库、删除系统自带的PHP软件;若是不更新yum仓库的话,那么使用yum安装的php服务软件包就是最新的版本,最新的版本有点不稳定,所以更新一下yum仓库,让yum下载是选择旧的版本。我这里下载了7.1版本的;删除系统自带的PHP软件是为了避免影响此次的下载,若是系统里以前的PHP软件没有卸载干净,可能此次下载就会失败。
    在这里插入图片描述

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
#PHP更新rpm软件包管理工具
#因为yum是基于rpm的前端下载、安装工具,yum下载时会先从rpm软件包资源池中查找有无需要的软件包,若没有,则会到配置的yum仓库中寻找。

第二步:安装php软件
在这里插入图片描述

yum install -y 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服务
在这里插入图片描述

  • 实现nginx和php服务建立关系。(nginx服务的部署,我前面的博客有详细的介绍,在此就不再赘述)
    第一步:编写nginx扩展配置文件,并重启nginx服务
    在这里插入图片描述
    注意点:若是不配置fastcgi_param指令,那么使用浏览器浏览动态网站时,返回的就是空白页面;这是因为默认只把URI信息传递给php处理,php处理完后因为不知道URL信息,所以不知道如何返回。所以一定要配置fastcgi_param指令,把document_root变量和fastcgi_script_name变量都传递给php。
    TIP:顺带把fastcgi_param指令的一些参数也介绍一下:
fastcgi_param  SCRIPT_FILENAME    $document_root$fastcgi_script_name;#脚本文件请求的路径
fastcgi_param  QUERY_STRING       $query_string; #请求的参数;如?app=123
fastcgi_param  REQUEST_METHOD     $request_method; #请求的动作(GET,POST)
fastcgi_param  CONTENT_TYPE       $content_type; #请求头中的Content-Type字段
fastcgi_param  CONTENT_LENGTH     $content_length; #请求头中的Content-length字段。

fastcgi_param  SCRIPT_NAME        $fastcgi_script_name; #脚本名称 
fastcgi_param  REQUEST_URI        $request_uri; #请求的地址不带参数
fastcgi_param  DOCUMENT_URI       $document_uri; #与$uri相同。 
fastcgi_param  DOCUMENT_ROOT      $document_root; #网站的根目录。在server配置中root指令中指定的值 
fastcgi_param  SERVER_PROTOCOL    $server_protocol; #请求使用的协议,通常是HTTP/1.0或HTTP/1.1。  

fastcgi_param  GATEWAY_INTERFACE  CGI/1.1;#cgi 版本
fastcgi_param  SERVER_SOFTWARE    nginx/$nginx_version;#nginx 版本号,可修改、隐藏

fastcgi_param  REMOTE_ADDR        $remote_addr; #客户端IP
fastcgi_param  REMOTE_PORT        $remote_port; #客户端端口
fastcgi_param  SERVER_ADDR        $server_addr; #服务器IP地址
fastcgi_param  SERVER_PORT        $server_port; #服务器端口
fastcgi_param  SERVER_NAME        $server_name; #服务器名,域名在server配置中指定的server_name

#fastcgi_param  PATH_INFO           $path_info;#可自定义变量

# PHP only, required if PHP was built with --enable-force-cgi-redirect
#fastcgi_param  REDIRECT_STATUS    200;

在php可打印出上面的服务环境变量
如:echo $_SERVER['REMOTE_ADDR']

第二步:编写动态资源文件(这里只编写一个简单的php文件用于测试)
在这里插入图片描述
第三步:访问测试
在这里插入图片描述

  • 建立php和mysql之间的关系
    第一步:在站点目录下编写php代码文件;php代码文件可通过调用"mysqli_connect()"函数建立php和mysql之间的连接
    在这里插入图片描述
    第二步:进行测试
    在这里插入图片描述

部署搭建网站动态页面
上面介绍了一下LNMP架构的部署,以及它们之间如何建立关系。下面通过一个真正搭建一个动态页面网站更直观的展现LNMP架构。
大家可以通过这个网站https://cn.wordpress.org/ 获取一个开源动态页面网站代码
第一步:将开源代码解压后放进网站的站点目录
在这里插入图片描述
第二步:修改nginx扩展配置文件
在这里插入图片描述
第三步:对数据库进行配置;因为动态页面要和数据库建立关系,用于存储、获取数据。所以先建立一个数据库用于此开源动态页面的存储、获取数据。
在这里插入图片描述
第四步:创建"wordpress"数据的管理用户
在这里插入图片描述
第五步:进行网站页面的初始化
在这里插入图片描述
点击submit完成初始化后,再进入Linux系统的wordpress数据库,就会发现已经创建了很多的表:
在这里插入图片描述

第六步:创建网页的登录用户和密码
在这里插入图片描述
最后点击"install WordPress",就完成一个真实动态页面的网站部署。实际工作中,开发人员会把代码发送给运维人员,运维人员基本就要按照以上的步骤把代码上线部署好。

测试部署的动态页面网站
打开我们部署好的网站的动态页面,发现页面的主题不是自己的菜,所以下面我就测试一下如何更改页面的主题。

  1. 第一步:首先你要到wordpress的官网https://cn.wordpress.org/ 下载一个自己喜欢的主题,在此我就不赘述了。
  2. 把自己下载的主题通过动态页面上传到网站里:
    在这里插入图片描述
    选择好自己要上传的主题后,点击"install Now",发现跳出来下面这个页面:
    在这里插入图片描述
    所以回到扩展配文件中,修改nginx服务允许上传的数据尺寸:
    在这里插入图片描述
    重启nginx服务后,在浏览器中重新"www.cxsnb.com"进入到我们部署的动态页面中上传主题,又会出现下面的问题:
    在这里插入图片描述
    所以还要再修改php的配置文件"/etc/php.ini’:
    在这里插入图片描述
    重启php-fpm服务后,再次进入部署的动态页面进行上传主题,又会出现下面的情况。
    在这里插入图片描述
    这是因为,客户端通过浏览器进入到nginx服务部署的网站后,用户的身份会发生改变。执行操作的用户身份会变成nginx服务worker进程的管理用户(我设置的是www用户),同时为了把nginx服务和php服务建立联系,也要把php的worker进程的管理用户也改为www。所以上传的主题中的"wp-conten"目录对于www这个用户权限不足,也就致使了上面图片中出现的错误。
    在这里插入图片描述
    最后,重新再上传主题,就发现可以上传了:
    在这里插入图片描述
  • 5
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 9
    评论
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值