• 配置NFS实现nginx动静分离


    案例子任务一、安装配置NFS服务器

    步骤1:使用docker容器配置NFS服务器

    1. 启动centos容器并进入

      docker run -d --privileged centos:v1 /usr/sbin/init

    2. 在centos容器中使用yum方式安装nfs-utils

      #yum install nfs-utils

    3. 保存容器为镜像

      #docker commit 容器ID nfs

    4. 启动容器nfs,设定地址为172.18.0.120

    #docker run -d --privileged --net cluster --ip 172.18.0.120 --name nfs nfs /usr/sbin/init

    1. 进入容器查看nfs配置文件

    # more /etc/nfs.conf

    # more /etc/nfsmount.conf

    1. 启动nfs服务,查看监听端口

      # systemctl start nfs-server

    2. 新建共享目录/var/www/share,设置权限为777

    1. 编辑/etc/exports文件

    /var/www/share 172.18.0.*(rw,sync)

    1. 导出nfs共享目录

      #exportfs -rv

    2. 查看nfs上的共享目录

      #showmount -e IP地址

    步骤1:使用宿主机配置NFS服务器

    1. # yum install nfs-utils //在宿主机安装nfs

    1. 查看nfs配置文件

    # more /etc/nfs.onf

    # more /etc/nfsmount.conf

    1. 启动nfs服务,查看监听端口

      # systemctl start nfs-server

    1. 新建共享目录/var/www/share,设置权限为777

    1. 编辑/etc/exports文件

    /var/www/share 172.18.0.*(rw,sync)

        

    1. 导出nfs共享目录

      #exportfs -rv

    1. 查看nfs上的共享目录

      #showmount -e IP地址

    步骤2:启用APP1和APP2两个容器,挂载共享目录

    1. 启动容器APP1,设定地址为172.18.0.111

    docker run -d --privileged --net cluster --ip 172.18.0.111 --name APP1 php-apache /usr/sbin/init

    1. 启动容器APP2,设定地址为172.18.0.112

    docker run -d --privileged --net cluster --ip 172.18.0.112 --name APP2 php-apache /usr/sbin/init

    1. # yum install nfs-utils //进入容器并安装nfs
    2. #showmount -e 172.18.0.1 //在APP1查看nfs上的共享目录

    1. 共享目录挂在到本地目录

    # mkdir /var/www/share

    # mount 172.18.0.1:/var/www/share /var/www/share

    1. 在APP1的/var/www/share上读写文件,在nfs上查看

    1. APP2按以上步骤配置

     

    案例子任务二、配置nginx1、APP1实现动静分离

    步骤1:在APP1上编写PHP脚本,上传资源文件

    1. 使用任务一中的APP1
    2. # more /etc/httpd/conf/httpd.conf //查看在APP1的lamp环境
    3. vim /var/www/index.php //在APP1上编辑php文件

    <?php

    function serverIp(){ //获取服务器IP地址

    if(isset($_SERVER)){

    if($_SERVER['SERVER_ADDR']){

    $server_ip=$_SERVER['SERVER_ADDR'];

    }else{

    $server_ip=$_SERVER['LOCAL_ADDR'];

    }

    }else{

    $server_ip = getenv('SERVER_ADDR');

    }

    return $server_ip;

    }

    ?>

    <!doctype html>

    <html>

    <head>

    <meta charset="utf-8">

    <title>动静分离测试</title>

    <link rel="stylesheet" type="text/css" href="share/banner.css">

    <script type="text/javascript" src="share/jquery-1.7.2.min.js"></script>

    </head>

    <body>

    <div class="banner">

    <ul>

    <li><img src="share/banner_02.jpg" /></li>

    <li><img src="share/banner_01.gif" /></li>

    </ul>

    </div>

    <div class="main_list">

    <ul>

    <li><a href="#">动静分离测试...</a></li>

    <li><a href="#">动静分离测试...</a></li>

    </ul>

    </div>

     <span><?php echo serverIp(); ?></span>

    </body>

    </html>

    1. 把图片资源文件上传到APP1服务器的 /var/www/share目录

    1. 在宿主机nfs服务器的 /var/www/share目录中检查文件是否存在

    1. 在宿主机使用curl访问http://172.18.0.111/index.php

     

    步骤2:配置nginx反向代理,访问APP1

    1. 启动容器nginx1,设定地址为172.18.0.11,把80端口映射到宿主机8080

    docker run -d --privileged --net cluster --ip 172.18.0.11 -p 8080:80 --name nginx1 nginx-keep /usr/sbin/init

    1. 在nginx1上编辑/etc/nginx/nginx.conf,重启nginx服务

    server {

    listen 80;

    server_name localhost;

    location / {

    proxy_pass http://172.18.0.111;

    }

    1. 在主机使用浏览器访问http://192.168.*.100/index.php

    步骤3:配置nginx反向代理,宿主机nginx,支持动静分离

    1. 在nfs宿主机编辑/etc/nginx/conf.d/ default.conf,启用nginx服务

    server {

    listen 80;

    server_name file.test.com;

    location / {

    root /var/www;

    index index.html index.htm;

    }

    }

    1. 在nginx1上编辑/etc/nginx/nginx.conf,重启nginx服务

    server {

    listen 80;

    server_name localhost;

    location / {

    proxy_pass http://172.18.0.111;

    }

    location /share {

    proxy_pass http://172.18.0.1/share;

    }

    }

    1. 在主机使用浏览器访问http://192.168.*.100/index.php

    步骤4:配置nginx1、APP1、APP2、宿主机nfs和nginx,支持负载均衡动静分离

    1. 容器APP1和宿主机使用上面步骤做好的,不做调整
    2. 仿照步骤1,在APP2上编写PHP脚本,上传资源文件

    1. 在nginx1上编辑/etc/nginx/nginx.conf,重启nginx服务

    server {

    listen 80;

    server_name localhost;

    location / {

    proxy_pass http://APP;

    }

    location /share {

    proxy_pass http://172.18.0.1/share;

    }

    upstream APP {

    server 172.18.0.111;

    server 172.18.0.112;

    }

    }

    1. 在主机使用浏览器访问http://192.168.*.100/index.php

  • 相关阅读:
    PHP程序员应该知道的15个库
    MongoDB、Cassandra 和 HBase 三种 NoSQL 数据库比较
    四种常见的POST提交数据方式
    PHP中获取文件扩展名的N种方法
    【问底】徐汉彬:亿级Web系统搭建——单机到分布式集群(三)
    【问底】徐汉彬:亿级Web系统搭建——单机到分布式集群(二)
    【问底】徐汉彬:亿级Web系统搭建——单机到分布式集群(一)
    ZF框架数据对象映射模式的思考
    概念大集合:单一入口、MVC、ORM、CURD、ActiveRecord...
    有默认参数的函数,默认参数为何需后置
  • 原文地址:https://www.cnblogs.com/jake-jin/p/12885296.html
Copyright © 2020-2023  润新知