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. vue注册全局组件

    在项目开发中能不能自己写一个组件可以像iview或者element那样可以不必引用就可以直接用呢?答案是可以的. 首先,写一个组件mainHeader. 接着在vue中注册这个组件,代码如下: Vue ...

  2. 《剑指offer》面试题18. 删除链表的节点

    问题描述 给定单向链表的头指针和一个要删除的节点的值,定义一个函数删除该节点. 返回删除后的链表的头节点. 注意:此题对比原题有改动 示例 1: 输入: head = [4,5,1,9], val = ...

  3. Go语言测试:testing

    学习参考来源:https://www.liwenzhou.com/posts/Go/16_test/ go test工具 必须导入包: import "testing" go te ...

  4. spring 事务失效的几种场景

    以下场景是基于mysql数据库,InnoDB的存储引擎. 一.没有添加@Transactional注解 二.方法声明是private或者static 三.没有抛出异常而是try catch了异常 下面 ...

  5. Cesium入门9 - Loading and Styling Entities - 加载和样式化实体

    Cesium入门9 - Loading and Styling Entities - 加载和样式化实体 Cesium中文网:http://cesiumcn.org/ | 国内快速访问:http://c ...

  6. vuecli学习01 - 环境搭建

    到这个链接下载nvm的安装包:https://github.com/coreybutler/nvm-windows/releases. 然后点击一顿下一步,安装即可! 安装完成后,还需要配置环境变量. ...

  7. golang中结构体标签在json中的应用

    package main import ( "encoding/json" "fmt" "reflect" ) type Movie str ...

  8. golang中接口类型小案例

    1.  在项目中实现注册成功之后,向用户发送邮件.微信提醒 package main import "fmt" type IMessage interface { send() b ...

  9. Redis入门及环境搭建

    一:Redis简介 Redis(Remote Dictionary Server 远程字典服务)是一个开源的(BSD许可的)内存数据结构存储,用作数据库.高速缓存和消息队列代理. Redis提供五大基 ...

  10. List<Integer>里有可能存String类型元素吗?

    这其实是我遇到的一个线上bug,在这里分享给大家. 如果是用反射,那就很简单了,毕竟泛型只是在编译期进行约束,对运行期是无能为力的. 想想看,如果不使用反射,有没有办法做到呢? 问题起因 在我们公司的 ...