IP HOSTNAME SERVICE SYSTEM
192.168.131.132 proxy-nfs nginx+nfs-server CentOS 7.6
192.168.131.131 nginx01 nginx+nfs-client CentOS 7.6
192.168.131.130 nginx02 nginx+nfs-client CentOS 7.6

环境准备

[root@localhost ~]# cat /etc/redhat-release
CentOS Linux release 7.6.1810 (Core)
[root@localhost ~]# sestatus
SELinux status: disabled
[root@localhost ~]# systemctl status firewalld.service
● firewalld.service - firewalld - dynamic firewall daemon
Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled)
Active: inactive (dead)
Docs: man:firewalld(1)
[root@localhost ~]# hostnamectl --static set-hostname porxy-nfs
[root@localhost ~]# hostnamectl --static set-hostname nginx01
[root@localhost ~]# hostnamectl --static set-hostname nginx02

部署nginx-proxy

[root@porxy-nfs ~]# vim install_nginx_proxy.sh
#!/usr/bin/bash
if [ -e /etc/nginx/nginx.conf ]
then
echo 'Already installed'
exit 0
else
/usr/bin/yum -y install epel* && /usr/bin/yum -y install nginx
fi if [ -f /etc/nginx/nginx.conf ];then
proxy="upstream nfs-share { server 192.168.131.131 weight=8;server 192.168.131.130 weight=6;}"
/usr/bin/sed -ri "/^http/a $proxy" /etc/nginx/nginx.conf
/usr/bin/sed -ri "/^ *location \/ \{$/a proxy_pass http://nfs-share\;" /etc/nginx/nginx.conf
fi /usr/sbin/nginx -t
if [ $? -ne 0 ]
then
echo "config error"
exit 2
else
echo "config success "
fi /usr/bin/systemctl enable nginx --now
/usr/bin/ps -ef | /usr/bin/grep [n]ginx if [ $? -eq 0 ]
then
echo 'Start nginx successful'
else
echo 'Start nginx faild please check again'
fi
[root@porxy-nfs ~]# sh install_nginx_proxy.sh
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
config success
Created symlink from /etc/systemd/system/multi-user.target.wants/nginx.service to /usr/lib/systemd/system/nginx.service.
root 13283 10234 0 09:07 pts/0 00:00:00 sh install_nginx_proxy.sh
root 13589 1 0 09:07 ? 00:00:00 nginx: master process /usr/sbin/nginx
nginx 13590 13589 0 09:07 ? 00:00:00 nginx: worker process
Start nginx successful

部署nfs-server

[root@porxy-nfs ~]# vim install_nfs_server.sh
#!/usr/bin/bash
test -s /etc/exports
if [ $? -eq 0 ]
then
/usr/bin/yum -y install rpcbind nfs-utils
echo "/share 192.168.131.132/24 (rw,sync,root_squash,sid=0)" > /etc/exports
mkdir -p /share
chmod -R o+w /share
systemctl enable rpcbind.service --now && systemctl enable nfs-server.service --now
iptables -F && iptables -X
share=`showmount -e`
access_IP=`awk '{print $2}' /etc/exports`
echo "NFS was successfully installed. The directory you shared with us is: $share $access_IP"
exit
else
echo "NFS was installed"
exit
fi
[root@porxy-nfs ~]# sh install_nfs_server.sh
NFS was successfully installed. The directory you shared with us is: 192.168.131.132/24

部署nginx01&nginx02

[root@nginx01 ~]# vim install_nginx.sh
#!/usr/bin/bash
if [ -e /etc/nginx/nginx.conf ]
then
echo 'Already installed'
exit 0
else
/usr/bin/yum -y install epel* && /usr/bin/yum -y install nginx
fi /usr/sbin/nginx -t
if [ $? -ne 0 ]
then
echo "config error"
exit 2
else
echo "config success "
fi /usr/bin/systemctl enable nginx --now
/usr/bin/ps -ef | /usr/bin/grep [n]ginx if [ $? -eq 0 ]
then
echo 'Start nginx successful'
else
echo 'Start nginx faild please check again'
fi
[root@nginx01 ~]# sh install_nginx.sh
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
config success
Created symlink from /etc/systemd/system/multi-user.target.wants/nginx.service to /usr/lib/systemd/system/nginx.service.
root 22300 7245 0 09:28 pts/0 00:00:00 sh install_nginx.sh
root 23036 1 0 09:30 ? 00:00:00 nginx: master process /usr/sbin/nginx
nginx 23037 23036 0 09:30 ? 00:00:00 nginx: worker process
Start nginx successful

部署nfs-client

[root@nginx01 ~]# vim install_nfs_client.sh
#!/usr/bin/bash
iptables -F && iptables -F
yum -y install rpcbind nfs-utils
systemctl enable rpcbind.service --now && systemctl enable nfs-server.service --now
showmount -e 192.168.131.132
if [ $? -eq 0 ]
then
mount -t nfs 192.168.131.132:/share /usr/share/nginx/html
echo "mount -t nfs 192.168.131.132:/share /usr/share/nginx/html" > ~/.bashrc
else
mount fiald !
exit 1
fi
[root@nginx01 ~]# sh install_nfs_client.sh
Redirecting to /bin/systemctl start rpcbind.service
Redirecting to /bin/systemctl start nfs.service
Export list for 192.168.131.132:
/share (everyone)

测试nfs共享nginx网站目录

# 只要更新了nfs的共享目录,nginx的web页面也会马上更新
[root@porxy-nfs ~]# echo "hello world" > /share/test.html
[root@porxy-nfs ~]# curl 192.168.131.132/test.html
hello world
[root@porxy-nfs ~]# echo "linux" > /share/test.html
[root@porxy-nfs ~]# curl 192.168.131.132/test.html
linux
# 基于负载均衡,查看后端nginx日志,都有访问日志,轮询也没有问题
[root@nginx01 ~]# tail /var/log/nginx/access.log
192.168.131.132 - - [10/Aug/2020:10:02:45 +0800] "GET /test.html HTTP/1.0" 200 12 "-" "curl/7.29.0" "-"
[root@nginx02 ~]# tail /var/log/nginx/access.log
192.168.131.132 - - [10/Aug/2020:10:02:39 +0800] "GET /test.html HTTP/1.1" 200 12 "-" "curl/7.29.0" "-"

NFS共享Nginx网页根目录(自动部署)的更多相关文章

  1. 解决vuejs应用在nginx非根目录下部署时访问404的问题

    以往部署vuejs应用都是直接在nginx的location为/下直接部署,这次遇到要将vue应用部署在/vuejs-admin的非根下,使用以往部署方案直接访问就会404,这时修改步骤如下: 1.修 ...

  2. 自动部署Nginx和nfs并架设Nginx集群脚本

    本人经过多次尝试,简单完成了自动部署Nginx和nfs脚本,并且能够自动部署web反向代理集群,下面详细的阐述一下本人的思路.(以下脚本本人处于初学阶段,写的并不是很完善,所以需要后期进行整理和修正, ...

  3. linux基础 -nginx和nfs代理 开发脚本自动部署及监控

    开发脚本自动部署及监控 1.编写脚本自动部署反向代理.web.nfs: (1).部署nginx反向代理三个web服务,调度算法使用加权轮询:  (2).所有web服务使用共享存储nfs,保证所有web ...

  4. 010-- 开发脚本自动部署nginx_web和nfs及监控内存

    1.编写脚本自动部署反向代理.web.nfs: #!/bin/bash #检测安装nginx function detection_nginx(){ if [ -f /etc/nginx/nginx. ...

  5. NFS共享存储服务部署

    第1章 NFS介绍 1.1 NFS基本概述 NFS(Network File System)网络文件系统 主要功能是通过局域网络让不同的主机系统之间可以共享文件或目录. NFS系统和Windows网络 ...

  6. 使用URLOS在linux系统中极速部署NFS共享存储服务

    如何在linux系统里搭建NFS服务?其实我们只需要安装一个URLOS面板,然后就能在3分钟内将NFS服务部署完成.近日,URLOS在应用市场中上架了一款NFS应用,它可以让我们的节点主机在3分钟内极 ...

  7. Cluster基础(一):配置iSCSI服务、编写udev规则、配置并访问NFS共享、部署Multipath多路径环境

    一.配置iSCSI服务 目标: 本案例要求先搭建好一台iSCSI服务器,并将整个磁盘共享给客户端: 虚拟机添加新的磁盘 将新添加的磁盘分区并创建两个逻辑卷 逻辑卷名称分别为:/dev/myvg/isc ...

  8. Jenkins+Github+Nginx实现前端项目自动部署

    前言 最近在搭建一个自己的网站,网站框架搭好了要把项目放到服务器运行,但是每次更新网站内容就要手动部署一次,实在很麻烦,于是就想搭建一套自动化部署的服务.看了一些案例最后选用现在比较主流的Jenkin ...

  9. 部署YUM仓库及NFS共享服务

    部署YUM仓库及NFS共享服务 目录 部署YUM仓库及NFS共享服务 一.YUM仓库服务 1. YUM概述 2. 部署YUM软件仓库 (1)准备安装源 ①YUM仓库的种类 ②RPM软件包的来源 ③构建 ...

随机推荐

  1. 实验 2 :Mininet 实验 —— 拓扑的命令脚本

    实验2: Mininet 实验--拓扑的命令脚本 一.实验目的 掌握 Mininet 的自定义拓扑生成方法:命令行创建.Python 脚本编写 二 .实验任务 通过使用命令行创建.Python 脚本编 ...

  2. iframe页面总是提示需要重新登录怎么办

    原文链接:iframe页面二次登录问题 生产问题 问题背景 由于历史原因,公司内部系统有一些页面是基于iframe嵌入的其他系统的页面,之前一直运行正常,最近不知什么原因接连出现访问所有iframe页 ...

  3. Zookeeper绍二(分布式锁介)

    一.为什么会有分布式锁? 在多线程环境下,由于上下文的切换,数据可能出现不一致的情况或者数据被污染,我们需要保证数据安全,所以想到了加锁. 所谓的加锁机制呢,就是当一个线程访问该类的某个数据时,进行保 ...

  4. 为什么char类型输入遇空格会结束,int类型必须要空格才能输出

    char类型与int类型输入时的区别: 在C语言的规则中,规定了scanf函数在接收字符串时--遇到空格或回车就认为前面的输入已经完成且有效! 而对于int类型:表示整数,输入时需要用空格隔开,以确认 ...

  5. 02-JS中的数据类型及类型转换

    02-JS中的数据类型及类型转换 一.数据类型 JS中的值,无论是字面量还是变量,都有明确的类型. (一)概述 1.基本类型5种 number 数字类型 string 字符串类型 boolean 布尔 ...

  6. RHCSA 第七天

    1.创建文件,并赋予权限611(两种方式,一种guoa,一种nnn) 2.创建目录,并赋予权限755(两种方式,一种guoa,一种nnn) 3.创建文件,并将文件的属主和属组修改其他用户 4.设置su ...

  7. 【C++】类-基础知识

    类-基础知识 目录 类-基础知识 1. 语法定义 2. 类的实现 3. 三个基本的函数 3.1 构造函数 功能 形式 调用时机 默认构造函数 3.2 复制构造函数 功能 形式 调用时机 3.3 析构函 ...

  8. 【记录一个问题】linux+opencv+cuvid解码1080P视频,当使用CUDA核函数的时候,必然崩溃

    崩溃的信息如下: 1 OpenCV(4.1.0-dev) Error: Gpu API call (invalid configuration argument) in videoDecPostPro ...

  9. ROS Kinetic 使用PocketSphinx进行语音识别报错

     已解决,重启电脑,装环境把声卡驱动那些似乎死机了 ROS Kinetic 使用PocketSphinx进行语音识别教程 https://www.ncnynl.com/archives/201701/ ...

  10. 从零开始, 开发一个 Web Office 套件 (1): 富文本编辑器

    这是一个系列博客, 最终目的是要做一个基于HTML Canvas 的, 类似于微软 Office 的 Web Office 套件, 包括: 文档, 表格, 幻灯片... 等等. 富文本编辑器 万里长征 ...