#!/bin/bash
log_file=/root/$(date +"%Y-%m-%d")"open-platfrom-install.log"
function log_print()
{
time=$(date +"%Y-%m-%d %H:%M:%S")
write_str="$time $* "
echo "nfs.sh >> "$write_str
echo "nfs.sh >> "$write_str >> $log_file
}
executable_user=root
if [ $(whoami) != $executable_user ]; then
log_print "ERROR:请登陆 $executable_user 用户执行此脚本"
exit 1
fi
inc_dir=$(cd "$(dirname "$0")";cd ..; pwd)
conf_file=$inc_dir/etc/env
# 设置读取配置文件的方法
function get_config()
{
param=$1
value=$(sed -E '/^#.*|^ *$/d' $conf_file | awk -F "${param}=" "/${param}=/{print \$2}" | tail -n1)
echo $value
}
dir=$(
cd "$(dirname "$0")"
pwd
)
# 获取服务器部署方式
deployment_mode=$(get_config deploymentMode)
if [[ $deployment_mode != "Distributed" ]];then
log_print "WARN:只有分布式部署才需要安装NFS,跳过安装"
exit 0
fi
nfs_server_ip=""
# 获取softs的ip
server_count=$(get_config serverCount)
for ((n=1; n<=server_count; n++))
do
server_ip=$(get_config serverIP$n)
server_mode=$(get_config serverModule$n)
if [[ $server_mode = *"softs"* ]];then
nfs_server_ip=$server_ip
fi
done
log_print "nfs挂载的nfs-server-ip:$nfs_server_ip"
if [ -z $nfs_server_ip ] ;then
log_print "ERROR:nfs的nfs-server-ip 为空"
exit 1
fi
nfs_mode=$1
log_print "nfs安装输入的mode:$nfs_mode"
rpm -Uvh $dir/nfs/rpms/*.rpm --nodeps --force
# 检测安装rpcbind
log_print "检测安装 rpcbind 开始"
rpcbind_res=$(rpm -qa|grep rpcbind |wc -l)
if [ $rpcbind_res -eq 0 ]; then
rpm -Uvh $dir/nfs/rpcbind-0.2.0-49.el7.x86_64.rpm
else
echo "INFO:跳过rpcbind安装过程!"
fi
log_print "检测安装 rpcbind 结束"
# 检测安装 nfs-utils
log_print "检测安装 nfs-utils 开始"
nfs_utils_res=$(rpm -qa|grep nfs-utils |wc -l)
if [ $nfs_utils_res -eq 0 ]; then
rpm -Uvh $dir/nfs/nfs-utils-1.3.0-0.68.el7.x86_64.rpm
else
echo "INFO:跳过nfs-utils安装过程!"
fi
log_print "检测安装 nfs-utils 结束"
if [ $nfs_mode == "nfs-server" ];then
log_print "nfs-server 安装开始"
# 设置NFS服务开机启动
systemctl enable rpcbind
systemctl enable nfs
# 启动NFS服务
systemctl start rpcbind
systemctl start nfs
# 防火墙需要打开rpcbind 和 nfs服务
firewall-cmd --zone=public --permanent --add-service={rpc-bind,mountd,nfs}
firewall-cmd --reload
log_print "nfs-server 安装结束"
log_print "设置允许连接/etc/exports 开始"
created=$(cat /etc/exports | grep js_open/upload | wc -l)
if [ $created -eq 1 ]; then
log_print "WARN:连接/etc/exports 已经设置过,跳过"
else
IFS=$'\n'
for line in `cat $inc_dir/bin/install.d/tmp/sed_nfs_client`; do
log_print "$line >> /etc/exports"
echo "/home/seekcy/js_open/upload/ $line(rw,sync,no_root_squash,no_all_squash)" >> /etc/exports
done
systemctl restart nfs
fi
log_print "设置允许连接/etc/exports 结束"
fi
if [ $nfs_mode == "nfs-client" ];then
log_print "nfs-client 安装开始"
# 设置NFS服务开机启动
systemctl enable rpcbind
# 启动NFS服务
systemctl start rpcbind
log_print "nfs-client 安装结束"
log_print "nfs-client 挂载开始"
mountpoint -q /home/seekcy/js_open/upload
mflag=`echo $?`
if [ $mflag != 0 ];then
log_print "当前服务器的/home/seekcy/js_open/upload未挂载,现在进行挂载"
mount -t nfs $nfs_server_ip:/home/seekcy/js_open/upload /home/seekcy/js_open/upload
sleep 5
mountpoint -q /home/seekcy/js_open/upload
mflag=`echo $?`
if [ $mflag != 0 ];then
log_print "ERROR:当前服务器的/home/seekcy/js_open/upload挂载失败"
exit 1
else
log_print "/home/seekcy/js_open/upload挂载成功"
fi
fi
log_print "nfs-client 挂载结束"
log_print "nfs-client 设置自动挂载 开始"
created=$(cat /etc/fstab | grep js_open/upload | wc -l)
if [ $created -eq 1 ]; then
log_print "WARN:自动挂载已经设置过,跳过"
else
echo "$nfs_server_ip:/home/seekcy/js_open/upload /home/seekcy/js_open/upload nfs defaults 0 0" > /etc/fstab
systemctl daemon-reload
fi
log_print "nfs-client 设置自动挂载 结束"
fi
log_print "全部执行结束"
exit 0