1. 程式人生 > 其它 >linux ssh免密部署

linux ssh免密部署

根據如下要求,完成部署過程

1.恢復7、8、9、31、41所有機器的快照

7 8 9     web服務  nginx

172.16.1.xx


nfs-31  提供共享檔案儲存


rsync-41 提供資料備份的機器

2.在61機器,遠端一鍵指令碼化,部署這5臺機器

master-61機器遠端的,操作目標機器,讓它安裝好對應的服務

web-7  
1.安裝軟體

2.修改配置檔案

3.啟動服務

4.掛載nfs



根據服務相關性,需要有先後的部署關係
rsync-41
1.安裝軟體

2.修改配置檔案

3.建立rsync對應的資料目錄,配置檔案,授權

4.啟動服務




nfs-31   +  lrsync實時同步
1.安裝軟體

2.修改配置檔案

3.建立nfs相關的資料目錄,授權

3.啟動服務

4.安裝lsync

5.修改lsync配置檔案

6.啟動服務

3.檢查整體應用可用性

1.從nginx作為入口,nginx預設的網頁根目錄 
/usr/share/nginx/html 寫入資料

2.同步到nfs機器上


3.同步到rsync機器上

Master-61建議登入的別名

alias sshweb7='ssh [email protected] -p 22999'
alias sshweb8='ssh [email protected] -p 22999'
alias sshweb9='ssh [email protected] -p 22999'
alias sshnfs31='ssh [email protected] -p 22999'
alias sshrsync41='ssh [email protected] -p 22999'


[root@master-61 ~]#source  /etc/profile
[root@master-61 ~]#alias 
alias cp='cp -i'
alias egrep='egrep --color=auto'
alias fgrep='fgrep --color=auto'
alias grep='grep --color=auto'
alias l.='ls -d .* --color=auto'
alias ll='ls -l --color=auto'
alias ls='ls --color=auto'
alias mv='mv -i'
alias rm='rm -i'
alias sshnfs31='ssh [email protected] -p 22999'
alias sshrsync41='ssh [email protected] -p 22999'
alias sshweb7='ssh [email protected] -p 22999'
alias sshweb8='ssh [email protected] -p 22999'
alias sshweb9='ssh [email protected] -p 22999'
alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'

windows部分

讓windows可以免密登入master-61機器

1. windows建立公私鑰,在windows中下載一個支援使用linux命令的工具
git-bash工具

生成公私鑰對兒
63556@DESKTOP-KE05A15 MINGW64 ~/Desktop
$ ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/c/Users/63556/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /c/Users/63556/.ssh/id_rsa
Your public key has been saved in /c/Users/63556/.ssh/id_rsa.pub
The key fingerprint is:
SHA256:/A31nX8Gu0USifqnyQcpoXxaHaP0hY5MyGlAOLLF+e4 63556@DESKTOP-KE05A15
The key's randomart image is:
+---[RSA 3072]----+
|   . +.          |
|  . * .      . . |
|   + o o o  o.o  |
|  .   ..= +o+..o.|
|     . oS=oB =+.o|
|      . o.B+*  =.|
|     .   +..o.o =|
|      E .  . +.+.|
|            +..  |
+----[SHA256]-----+


63556@DESKTOP-KE05A15 MINGW64 ~/.ssh
$ ls
id_rsa  id_rsa.pub  known_hosts(存放目標機器的指紋公鑰,意義在於?當你下次連線該目標機器的時候,就無序再確認機器的指紋了)


傳送windows的公鑰,給需要免密登入的機器上,目標機器 git-bash執行

ssh-copy-id (這個命令,等於把本地的公鑰,寫入到目標機器的~/.ssh/)
63556@DESKTOP-KE05A15 MINGW64 ~/.ssh
$ ssh-copy-id [email protected]
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/c/Users/63556/.ssh/id_rsa.pub"
The authenticity of host '10.0.0.61 (10.0.0.61)' can't be established.
ECDSA key fingerprint is SHA256:ZHEB5JjEbyRm1YIMwrA8pLk4jkcZC9GUIk899JDanpQ.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
[email protected]'s password:

Number of key(s) added: 1

Now try logging into the machine, with:   "ssh '[email protected]'"
and check to make sure that only the key(s) you wanted were added.



分別檢查,客戶端,服務端的,金鑰檔案資訊

windows客戶端的,目標機器的公鑰
63556@DESKTOP-KE05A15 MINGW64 ~/.ssh
$ cat known_hosts
10.0.0.61 ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBKupWZ7FEFns/ajVcMsMfzd4nGQ+EFpdPiWXPCAdxzgzV3ZxPXg4cuUNIQ6c3A3LLWtQHU1mBdsT2rzgjNbqrJg=


linux服務端,可以看到windows機器的,公鑰資訊
[root@master-61 ~]#cat ~/.ssh/authorized_keys 
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDcfnzhqCXfO4IV9cslAQJ2stq3k+crMhjr7dkRo+jUNWGC4GyP6El3XirKX4A2mr6wPWz683I9ERTyIXONiQRaVVJ2TtstAKC5S1oZoHa9Nj863arOU5HztXCLhzsByvlNbJX/nhBJqmylzSN3EgEBUzJcCkLlOT2jq7K3FoFJIZc6hJU9tVy+zJzjWjePKqfSyIwf6COw6uL04EmrDHYC+u7T9BNhLDuLHsuHnEJOZtXE4TL4JSpxxvNJsmKmcvxV0T9VcWU++uNEo+dRYRmxtARfK8XXcQCXz6P9IaR7IIRGP8pWyAoD+OiXzI50C5Pp9h+zg78IYIDi4BfOFXPEhpzbeqKLCG0Ww80de9vZnRJPpvQKmBUFaHY9ucAKAdvarePS7Mhq0MYmw/3rWfeWMWGPRg18ImgYgmlHadDSCpDmnIunLmdB+PEyKZ0qqDliTQZIvdQ/G32sTFdE8MK/AOEAXOazMEcWEaenAzMhg/h4AayNqTIwVXU7qTzWC8k= 63556@DESKTOP-KE05A15
這個資訊就和windows的 id_rsa.pub一樣

63556@DESKTOP-KE05A15 MINGW64 ~/.ssh
$ cat id_rsa.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDcfnzhqCXfO4IV9cslAQJ2stq3k+crMhjr7dkRo+jUNWGC4GyP6El3XirKX4A2mr6wPWz683I9ERTyIXONiQRaVVJ2TtstAKC5S1oZoHa9Nj863arOU5HztXCLhzsByvlNbJX/nhBJqmylzSN3EgEBUzJcCkLlOT2jq7K3FoFJIZc6hJU9tVy+zJzjWjePKqfSyIwf6COw6uL04EmrDHYC+u7T9BNhLDuLHsuHnEJOZtXE4TL4JSpxxvNJsmKmcvxV0T9VcWU++uNEo+dRYRmxtARfK8XXcQCXz6P9IaR7IIRGP8pWyAoD+OiXzI50C5Pp9h+zg78IYIDi4BfOFXPEhpzbeqKLCG0Ww80de9vZnRJPpvQKmBUFaHY9ucAKAdvarePS7Mhq0MYmw/3rWfeWMWGPRg18ImgYgmlHadDSCpDmnIunLmdB+PEyKZ0qqDliTQZIvdQ/G32sTFdE8MK/AOEAXOazMEcWEaenAzMhg/h4AayNqTIwVXU7qTzWC8k= 63556@DESKTOP-KE05A15

master-61管理機

1.修改ssh埠為22999
2.關閉使用者名稱密碼登入
3.開啟通過公私鑰登入

被管理機

1.修改ssh埠為22999
2.關閉使用者名稱密碼登入
3.開啟通過公私鑰登入
4.指定監聽內網地址,172.16.1.xx

要求部署效果

1.master-61機器只能通過公私鑰登入,禁止使用者密碼連線
2.所有主機的ssh埠全都是22999
3.被管理的機器只能通過內網、且使用公私鑰連線。

階段2:指令碼部署ssh

階段1的ssh環境部署,是手動操作;

現在需要實現指令碼一鍵部署;

1.管理機自動建立公私鑰
2.管理機自動分發公鑰到備管理機
3.遠端修改被管理機的ssh連線埠為22999,監聽地址是172.16.1.xx
4.遠端修改被管理機不允許密碼登入,只能是金鑰登入
5.修改完畢後,驗證是否生效,遠端檢視所有被管理主機的主機名

批量修改配置檔案

這個sshpass命令只存在master-61機器上即可

實現了公鑰面交互分發的命令如下
在master-61機器上執行 
ssh-copy-id命令,分發公鑰,但是預設需要輸入遠端機器的密碼
使用 sshpass即可面交互輸入密碼
以及面指紋確認的引數 -o StrictHostKeyChecking=no


sshpass -p '123123' ssh-copy-id 172.16.1.${ip} -o StrictHostKeyChecking=no > /tmp/create_ssh.log 2>&1

指令碼建立

安裝sshpass命令
yum install sshpass -y

[root@master-61 ~/install_ssh]#cat install.sh 
#1.管理機自動建立公私鑰
echo "正在建立公私鑰..."
if [ -f /root/.ssh/id_rsa ]
then
  echo "金鑰對已經存在,請檢查! "
else
  ssh-keygen -f /root/.ssh/id_rsa -N '' > /tmp/create_ssh.log 2>&1
fi

echo '================================================='
#2.管理機自動分發公鑰到被管理機
echo "正在分發公鑰中...分發的機器列表是{7,8,9,31,41}"
for ip in {7,8,9,31,41}
do
  sshpass -p '123456' ssh-copy-id 172.16.1.${ip} -o StrictHostKeyChecking=no > /tmp/create_ssh.log 2>&1
  echo "正在驗證免密登入結果中...."
  echo "遠端獲取到主機名: $(ssh 172.16.1.${ip} hostname)"
done
echo '===================================================='

#3.遠端修改被管理機的ssh連線埠為22999,監聽地址是172.16.1.xx
for ip in {7,8,9,31,41}
do
    echo "修改172.16.1.${ip}的ssh埠中..."
    ssh [email protected].${ip} "sed -i '/Port 22/c Port 22999' /etc/ssh/sshd_config"
done

echo '================================================='

#4.遠端修改被管理機不允許密碼登入,只能是金鑰登入
for ip in {7,8,9,31,41}
do
    echo "禁止密碼登入引數修改中...當前操作的機器是172.16.1.${ip}"
    ssh [email protected].${ip} "sed -i '/^PasswordAuthentication/c PasswordAuthentication no' /etc/ssh/sshd_config"
    echo "允許公鑰登入引數修改中...當前操作的機器是172.16.1.${ip}"
    ssh [email protected].${ip} "sed -i '/PubkeyAuthentication/c PubkeyAuthentication yes' /etc/ssh/sshd_config"
done

echo '==================================================='

#5.修改監聽內網地址
for ip in {7,8,9,31,41}
do
    echo "修改監聽地址中...當前操作的機器是172.16.1.${ip}"
    ssh [email protected].${ip} "sed -i '/ListenAddress 0.0.0.0/c ListenAddress 172.16.1.${ip}' /etc/ssh/sshd_config"
done

echo '====================================================='


#6.批量驗證ssh修改情況
for ip in {7,8,9,31,41}
do
    echo "當前檢視的機器是172.16.1.${ip}"
    ssh [email protected].${ip} "grep -Ei '^(port|passwordauthentication|pubkeyauthentication|listenaddress)' /etc/ssh/sshd_config"
done

echo '=================================================='

指令碼執行

[root@master-61 ~/install_ssh]#bash install.sh 
正在建立公私鑰...
=================================================
正在分發公鑰中...分發的機器列表是{7,8,9,31,41}
正在驗證免密登入結果中....
遠端獲取到主機名: web-7
正在驗證免密登入結果中....
遠端獲取到主機名: web-8
正在驗證免密登入結果中....
遠端獲取到主機名: web-9
正在驗證免密登入結果中....
遠端獲取到主機名: nfs-31
正在驗證免密登入結果中....
遠端獲取到主機名: rsync-41
====================================================
修改172.16.1.7的ssh埠中...
修改172.16.1.8的ssh埠中...
修改172.16.1.9的ssh埠中...
修改172.16.1.31的ssh埠中...
修改172.16.1.41的ssh埠中...
=================================================
禁止密碼登入引數修改中...當前操作的機器是172.16.1.7
允許公鑰登入引數修改中...當前操作的機器是172.16.1.7
禁止密碼登入引數修改中...當前操作的機器是172.16.1.8
允許公鑰登入引數修改中...當前操作的機器是172.16.1.8
禁止密碼登入引數修改中...當前操作的機器是172.16.1.9
允許公鑰登入引數修改中...當前操作的機器是172.16.1.9
禁止密碼登入引數修改中...當前操作的機器是172.16.1.31
允許公鑰登入引數修改中...當前操作的機器是172.16.1.31
禁止密碼登入引數修改中...當前操作的機器是172.16.1.41
允許公鑰登入引數修改中...當前操作的機器是172.16.1.41
===================================================
修改監聽地址中...當前操作的機器是172.16.1.7
修改監聽地址中...當前操作的機器是172.16.1.8
修改監聽地址中...當前操作的機器是172.16.1.9
修改監聽地址中...當前操作的機器是172.16.1.31
修改監聽地址中...當前操作的機器是172.16.1.41
=====================================================
當前檢視的機器是172.16.1.7
Port 22999
ListenAddress 172.16.1.7
PubkeyAuthentication yes
PasswordAuthentication no
當前檢視的機器是172.16.1.8
Port 22999
ListenAddress 172.16.1.8
PubkeyAuthentication yes
PasswordAuthentication no
當前檢視的機器是172.16.1.9
Port 22999
ListenAddress 172.16.1.9
PubkeyAuthentication yes
PasswordAuthentication no
當前檢視的機器是172.16.1.31
Port 22999
ListenAddress 172.16.1.31
PubkeyAuthentication yes
PasswordAuthentication no
當前檢視的機器是172.16.1.41
Port 22999
ListenAddress 172.16.1.41
PubkeyAuthentication yes
PasswordAuthentication no
==================================================

還缺少遠端的批量重啟sshd服務,讓sshd_config配置生效

1.批量重啟sshd服務

重啟服務,單獨拆分為了一個指令碼,作用就是重啟服務

[root@master-61 ~/install_ssh]#cat install_restart.sh 
for ip in {7,8,9,31,41}
do
    echo "重啟sshd服務中,當前操作的機器是172.16.1.${ip}"
    ssh [email protected].${ip} "systemctl restart sshd"
    echo '==================================='
done


執行指令碼
[root@master-61 ~/install_ssh]#bash install_restart.sh 
重啟sshd服務中,當前操作的機器是172.16.1.7
===================================
重啟sshd服務中,當前操作的機器是172.16.1.8
===================================
重啟sshd服務中,當前操作的機器是172.16.1.9
===================================
重啟sshd服務中,當前操作的機器是172.16.1.31
===================================
重啟sshd服務中,當前操作的機器是172.16.1.41
===================================


重啟完畢了服務,驗證下修改的結果是否正確,遠端檢視配置檔案資訊

2.遠端檢視主機資訊

這個指令碼,作用就是遠端檢視主機的配置檔案資訊

[root@master-61 ~/install_ssh]#cat show_config.sh 
for ip in {7,8,9,31,41}
do
    echo "遠端獲取主機名,當前操作的機器是172.16.1.${ip}"
    ssh -p 22999 [email protected].${ip} "hostname"
    echo "遠端獲取主機sshd配置資訊,當前操作的機器是172.16.1.${ip}"
    ssh -p 22999 [email protected].${ip} "grep -Ei '^(port|passwordauthentication|pubkeyauthentication|listenaddress)' /etc/ssh/sshd_config"
    echo "遠端檢視sshd埠情況,當前操作的機器是172.16.1.${ip}"
    ssh -p 22999 [email protected].${ip} "netstat -tunlp |grep sshd |grep -v grep"
    echo '========================================='
done



執行指令碼

[root@master-61 ~/install_ssh]#bash show_config.sh 
遠端獲取主機名,當前操作的機器是172.16.1.7
web-7
遠端獲取主機sshd配置資訊,當前操作的機器是172.16.1.7
Port 22999
ListenAddress 172.16.1.7
PubkeyAuthentication yes
PasswordAuthentication no
遠端檢視sshd埠情況,當前操作的機器是172.16.1.7
tcp        0      0 172.16.1.7:22999        0.0.0.0:*               LISTEN      11740/sshd          
=========================================
遠端獲取主機名,當前操作的機器是172.16.1.8
web-8
遠端獲取主機sshd配置資訊,當前操作的機器是172.16.1.8
Port 22999
ListenAddress 172.16.1.8
PubkeyAuthentication yes
PasswordAuthentication no
遠端檢視sshd埠情況,當前操作的機器是172.16.1.8
tcp        0      0 172.16.1.8:22999        0.0.0.0:*               LISTEN      1945/sshd           
=========================================
遠端獲取主機名,當前操作的機器是172.16.1.9
web-9
遠端獲取主機sshd配置資訊,當前操作的機器是172.16.1.9
Port 22999
ListenAddress 172.16.1.9
PubkeyAuthentication yes
PasswordAuthentication no
遠端檢視sshd埠情況,當前操作的機器是172.16.1.9
tcp        0      0 172.16.1.9:22999        0.0.0.0:*               LISTEN      11592/sshd          
=========================================
遠端獲取主機名,當前操作的機器是172.16.1.31
nfs-31
遠端獲取主機sshd配置資訊,當前操作的機器是172.16.1.31
Port 22999
ListenAddress 172.16.1.31
PubkeyAuthentication yes
PasswordAuthentication no
遠端檢視sshd埠情況,當前操作的機器是172.16.1.31
tcp        0      0 172.16.1.31:22999       0.0.0.0:*               LISTEN      11737/sshd          
=========================================
遠端獲取主機名,當前操作的機器是172.16.1.41
rsync-41
遠端獲取主機sshd配置資訊,當前操作的機器是172.16.1.41
Port 22999
ListenAddress 172.16.1.41
PubkeyAuthentication yes
PasswordAuthentication no
遠端檢視sshd埠情況,當前操作的機器是172.16.1.41
tcp        0      0 172.16.1.41:22999       0.0.0.0:*               LISTEN      11763/sshd          
=========================================

此時還剩下master-61機器未修改了

web-7
web-8
web-9

nfs-31
rsync-41
全部完成了 sshd的配置檔案修改了
埠
監聽地址
禁止密碼登入
允許公私鑰登入


修改master-61機
禁止密碼登入,允許公鑰登入

[root@master-61 ~/install_ssh]#grep -Ei '^(port|passwordauthentication|pubkeyauthentication)' /etc/ssh/sshd_config 
Port 22999
PubkeyAuthentication yes
PasswordAuthentication no


重啟sshd服務
[root@master-61 ~/install_ssh]#systemctl restart sshd

此時,master-61,以及所有的目標機器以及全部配置好了ssh環境,可以進行服務安裝 了

階段3:遠端一鍵安裝綜合備份架構

上述的階段2,一鍵搭建好了sshd的安全連線環境

只要編寫一鍵安裝服務的指令碼即可

注意服務的啟動順序

rsync服務(rsync-41機器)

[root@master-61 ~/install_ssh]#cat rsync.sh 
# 1.安裝
yum install rsync -y

#2.修改配置檔案
cat > /etc/rsyncd.conf << 'EOF'
uid = www
gid = www
port = 873
fake super = yes
use chroot = no
max connections = 200
timeout = 600
igonre errors
read only = false
list = false
auth users = rsync_lwj
secrets file = /etc/rsync.lwjpass
log file = /var/log/rsyncd.log
################################################
[lwj]
comment = yuchao.cn about rsync
path = /lwj
EOF

#3.建立使用者
groupadd www -g 666
useradd www -g 666 -u 666 -M -s /sbin/nologin


#4.建立目錄,授權
mkdir -p /lwj
chown -R www.www /lwj


#5.建立密碼檔案,授權
echo 'rsync_lwj:123456' > /etc/rsync.lwjpass
chmod 600 /etc/rsync.lwjpass

#6.啟動服務
systemctl start rsyncd
systemctl enable rsyncd

#7.檢查服務
netstat -tunlp |grep rsync

遠端拷貝,遠端安裝

傳送指令碼到rsync-41機器
[root@master-61 ~/install_ssh]#scp -P 22999 rsync.sh [email protected]:/opt/
rsync.sh                                           100%  780     1.1MB/s   00:00    
遠端執行傳過去的指令碼
[root@master-61 ~/install_ssh]#ssh -p 22999 [email protected] "bash /opt/rsync.sh"


遠端檢查rsync部署操作
[root@master-61 ~/install_ssh]#sshrsync41 "cat /etc/rsync.lwjpass;ls -ld /lwj;id www"
rsync_lwj:123456
drwxr-xr-x 2 www www 6 May  5 16:20 /lwj
uid=666(www) gid=666(www) groups=666(www)

nfs服務(nfs-31機器)

[root@master-61 ~/install_ssh]#cat nfs.sh 
# 1.安裝服務
yum install nfs-utils rpcbind -y

# 2.建立nfs限定的使用者,組
groupadd www -g 666
useradd www -g 666 -u 666 -M -s /sbin/nologin

# 3.建立共享目錄,修改許可權
mkdir /nfs-lwj-nginx
chown -R www.www /nfs-lwj-nginx

# 4.建立配置檔案
cat > /etc/exports << EOF
/nfs-lwj-nginx 172.16.1.0/24(rw,sync,all_squash,anonuid=666,anongid=666)
EOF

# 5.啟動服務
systemctl start nfs

# 6.檢查服務
showmount -e 127.0.0.1

遠端安裝

1.遠端傳送指令碼檔案
[root@master-61 ~/install_ssh]#scp -P 22999 nfs.sh [email protected]:/opt/
nfs.sh                                             100%  450   522.5KB/s   00:00    
2.遠端執行
[root@master-61 ~/install_ssh]#ssh -p 22999 [email protected] "bash /opt/nfs.sh"

nfs+lsyncd服務

[root@master-61 ~/install_ssh]#cat lsyncd.sh 
# 1.安裝服務
yum install lsyncd -y

# 2.生成配置檔案
cat >/etc/lsyncd.conf <<EOF
settings {
    logfile      ="/var/log/lsyncd/lsyncd.log",
    statusFile   ="/var/log/lsyncd/lsyncd.status",
    inotifyMode  = "CloseWrite",
    maxProcesses = 8,
    }

sync {
    default.rsync,
    source    = "/nfs-lwj-nginx",
    target    = "[email protected]::lwj",
    delete= true,
    exclude = {".*"},
    delay=1,
    rsync     = {
        binary    = "/usr/bin/rsync",
        archive   = true,
        compress  = true,
        verbose   = true,
        password_file="/etc/rsync.lwjpass",
        _extra={"--bwlimit=200"}
        }
    }
EOF

# 3.建立密碼檔案
echo "123456" > /etc/rsync.lwjpass
chmod 600 /etc/rsync.lwjpass

# 4.啟動
systemctl start lsyncd

# 5.檢查服務
ps -ef |grep lsyncd |grep -v grep

遠端安裝lsyncd

1.遠端傳送指令碼檔案
[root@master-61 ~/install_ssh]#scp -P 22999 lsyncd.sh [email protected]:/opt/
lsyncd.sh                                          100%  828   946.3KB/s   00:00    

2.遠端執行指令碼
[root@master-61 ~/install_ssh]#ssh -p 22999 [email protected] "bash /opt/lsyncd.sh"

測試rsync+nfs

遠端在31共享目錄下建立一個檔案
[root@master-61 ~/install_ssh]#ssh -p 22999 [email protected] "touch /nfs-lwj-nginx/傑傑666.png"

遠端檢視41機器是否備份
[root@master-61 ~/install_ssh]#ssh -p 22999 [email protected] "ls /lwj"
傑傑666.png

web-7 8 9機器

[root@master-61 ~/install_ssh]#cat nginx.sh 
# 1.安裝服務
yum install nginx -y

# 2.建立配置檔案
cat >/etc/nginx/nginx.conf <<EOF
worker_processes auto;
error_log /var/log/nginx/error.log;
pid /run/nginx.pid;

# Load dynamic modules. See /usr/share/doc/nginx/README.dynamic.
include /usr/share/nginx/modules/*.conf;

events {
    worker_connections 1024;
}
http {
    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  /var/log/nginx/access.log  main;
    sendfile            on;
    tcp_nopush          on;
    tcp_nodelay         on;
    keepalive_timeout   65;
    types_hash_max_size 4096;
    include             /etc/nginx/mime.types;
    default_type        application/octet-stream;


server {
  listen 81;
  server_name localhost;
  location / {
   	root html;
   	index index.html;
 						 }
			}

}
EOF

# 3.啟動服務
systemctl start nginx

# 4.檢查服務
netstat -tunlp |grep nginx

#5.掛載目錄
yum install nfs-utils -y
mount -t nfs 172.16.1.31:/nfs-lwj-nginx /usr/share/nginx/html

遠端部署三臺機器 web-7 8 9

通過指令碼把上一個指令碼一起傳送到三臺機器
[root@master-61 ~/install_ssh]#cat server.sh 
for server in {7,8,9}
do
    scp -P 22999 nginx.sh [email protected].${server}:/opt/
    ssh -p 22999 [email protected].${server} "bash /opt/nginx.sh"
done

檢查三臺機器的掛載情況

[root@master-61 ~/install_ssh]#for web_ip in {7,8,9};do ssh -p 22999 [email protected].${web_ip} "df -h";done
Filesystem                  Size  Used Avail Use% Mounted on
/dev/mapper/centos-root      17G  1.6G   16G  10% /
devtmpfs                    899M     0  899M   0% /dev
tmpfs                       911M     0  911M   0% /dev/shm
tmpfs                       911M  9.6M  902M   2% /run
tmpfs                       911M     0  911M   0% /sys/fs/cgroup
/dev/sda1                  1014M  142M  873M  14% /boot
tmpfs                       183M     0  183M   0% /run/user/0
172.16.1.31:/nfs-lwj-nginx   17G  1.6G   16G   9% /usr/share/nginx/html
Filesystem                  Size  Used Avail Use% Mounted on
/dev/mapper/centos-root      17G  1.6G   16G  10% /
devtmpfs                    899M     0  899M   0% /dev
tmpfs                       911M     0  911M   0% /dev/shm
tmpfs                       911M  9.6M  902M   2% /run
tmpfs                       911M     0  911M   0% /sys/fs/cgroup
/dev/sda1                  1014M  142M  873M  14% /boot
tmpfs                       183M     0  183M   0% /run/user/0
172.16.1.31:/nfs-lwj-nginx   17G  1.6G   16G   9% /usr/share/nginx/html
Filesystem                  Size  Used Avail Use% Mounted on
/dev/mapper/centos-root      17G  1.6G   16G  10% /
devtmpfs                    899M     0  899M   0% /dev
tmpfs                       911M     0  911M   0% /dev/shm
tmpfs                       911M  9.6M  902M   2% /run
tmpfs                       911M     0  911M   0% /sys/fs/cgroup
/dev/sda1                  1014M  142M  873M  14% /boot
tmpfs                       183M     0  183M   0% /run/user/0
172.16.1.31:/nfs-lwj-nginx   17G  1.6G   16G   9% /usr/share/nginx/html

最終測試

1.在共享儲存中,建立網頁資料,提供給所有web機器使用
[root@master-61 ~/install_ssh]#cat >index.html<<EOF
> <meta charset=utf8>
> 部署指令碼的一天,加油年輕人!
> EOF
[root@master-61 ~/install_ssh]#cat index.html 
<meta charset=utf8>
部署指令碼的一天,加油年輕人!


遠端操作傳送到nfs-31機器的共享目錄下
[root@master-61 ~/install_ssh]#scp -P 22999 index.html [email protected]:/nfs-lwj-nginx/
index.html                                         100%   63    91.8KB/s   00:00    

2.檢查資料備份情況
[root@master-61 ~/install_ssh]#sshrsync41 "ls -l /lwj"
total 4
-rw-r--r-- 1 www www 63 May  5 17:45 index.html
-rw-r--r-- 1 www www  0 May  5 17:16 傑傑666.png


[root@master-61 ~/install_ssh]#for nginx_ip in {7,8,9};do ssh -p 22999 172.16.1.${nginx_ip} "netstat -tunlp|grep nginx|grep -v grep";done
tcp        0      0 0.0.0.0:81              0.0.0.0:*               LISTEN      12325/nginx: master 
tcp        0      0 0.0.0.0:81              0.0.0.0:*               LISTEN      2386/nginx: master  
tcp        0      0 0.0.0.0:81              0.0.0.0:*               LISTEN      12081/nginx: master 


瀏覽器訪問
10.0.0.7:81
10.0.0.8:81
10.0.0.9:81

下載靜態圖片到web-9機器
[root@master-61 ~/install_ssh]#sshweb9 wget -O /usr/share/nginx/html/haizei.png  https://tx-free-imgs.acfun.cn/content/2020_10_13/1.6025727344597871E9.jpeg?imageslim


再次修改頁面,檢視資料
[root@master-61 ~/install_ssh]#cat index.html 
<meta charset=utf8>
部署指令碼的一天,加油年輕人!
<img src="haizei.png">


再遠端傳送到nfs-31機器的共享目錄下
[root@master-61 ~/install_ssh]#scp -P 22999 index.html [email protected]:/nfs-lwj-nginx/
index.html                                         100%   86    88.8KB/s   00:00    


瀏覽器檢視web-7 8 9 三臺機器