SVN+Rsync+Sersync自動同步到公網服務器
概述:
部署過程的每一個步驟都自動化,可以帶來包括效能在內的顯著的好處。你可以手工做這些事情,但是很耗時。二者的生產率差異真的很大。
對於習慣於開發和部署本地應用的組織來說,設置自動部署工具的確給軟件開發引進了一個新的步驟,需要一個學習的過程,還要有相關的投入。但是見效很快,因爲每進行一輪開發,你都可以快速地部署到雲上然後進行測試過程,第一次把東西設好是個挑戰,但這完全是值得的。(扯這麼多就是爲了偷懶,這纔是重點)
應用場景:
當新的項目部署到線上之後,後期可能還會有小的調試修改,新增、刪除、修改等等操作;現有狀況是開發人員提交代碼給運維人員,在由運維去手動執行,有些項目文件的名稱相差不大時,經常會出錯。
#####如果還有更好的自動化工具歡迎留言,試過jenkins+gitlab持續集成但是速度太慢了,有時候一天改動不下於50次,Jenkins+svn又還沒來弄出來;
工作原理:
- 開發人員在本地提交代碼到SVN;
- SVN通過Commit自動更新到內網服務器;
- 內網服務器使用Rsync+Sersync監控源代碼文件變化;
- 檢測到文件發生變化之後同步數據到公網服務器上;
工具介紹:
SVN:SVN是Subversion的簡稱,是一個開放源代碼的版本控制系統;
Commit:屬於SVN裏面的一個插件,用來提交完成時觸發事務;
Rsync:用來做數據備份,文件實時同步的工具;
Sersync:自己去百度一下Rsync+Sersync就知道了;
服務器信息:
主機名 |
IP |
所屬區域 |
系統 |
擔任角色 |
Source |
192.168.100.125/24 |
內網 |
Centos 7.4 |
源代碼存放 |
Destination |
47.91.235.62/32 |
外網 |
Centos 7.4 |
線上服務器 |
Svn+Commit環境配置鏈接:
https://blog.csdn.net/qq_32731747/article/details/82262716
本次實驗只部署rsync+sersync,應用到實際環境上。
Destination配置:
[root@destination ~]# yum -y install rsync #安裝rsync工具
[root@destination ~]# vim /etc/rsyncd.conf
uid = root
gid = root
use chroot = yes
max connections = 10
strict modes = yes
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsyncd.lock
log file = /var/run/rsyncd.log
[www]
#模塊名稱
path= /www/wwwroot/47_91_235_62/
#數據存放目錄,這裏爲我網站的根目錄
comment= analyse
read only = no
hosts allow = *
[root@destination ~]# /usr/bin/rsync --daemon /etc/rsyncd.conf #啓動服務
Source配置:
[root@source ~]# yum -y install rsync
[root@source ~]# mkdir test #先創建一個測試文件夾
[root@source ~]# touch ./test/abcd.txt #創建測試數據
[root@source ~]# ssh-keygen #使用root用戶免交互登陸
Generating public/private rsa key pair. #回車
Enter file in which to save the key (/root/.ssh/id_rsa): #回車
Enter passphrase (empty for no passphrase): #回車
Enter same passphrase again: #回車
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:l7pPzaWl4vs1urARAJMBcBa7pGmTnpD62l/sBBIzs9U root@source
The key's randomart image is:
+---[RSA 2048]----+
| ..=o+o |
| o o.o |
| = + E . |
| . % . . . |
|o O o S + o |
|.+ + o o + = |
|. o + . = = o |
| o + + = o . |
|..o.. . ..=o+. |
+----[SHA256]-----+
[root@source ~]# ssh-copy-id [email protected] #將公鑰給目標服務器
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/root/.ssh/id_rsa.pub"
The authenticity of host '47.91.235.62 (47.91.235.62)' can't be established.
ECDSA key fingerprint is SHA256:1MqJ2HF1oUToNzdCzoRfRpXJA71/hW4X2sLCJeFbXa0.
ECDSA key fingerprint is MD5:e2:de:46:35:ca:a6:f8:d1:f3:6a:b0:92:52:19:5b:f7.
Are you sure you want to continue connecting (yes/no)? yes
[email protected]'s password: #輸入目標服務器root密碼
[root@source ~]# ssh [email protected] #測試登陸
[root@source ~]# rsync -avzP /root/test/ [email protected]::www/
#測試數據是否同步成功
切換到目標服務器查看同步是否成功:
安裝sersync :
#wget https://sersync.googlecode.com/files/sersync2.5.4_64bit_binary_stable_final.tar.gz
鏈接: https://pan.baidu.com/s/1gioP_p8pyNh0KtKKkuyYvw 提取碼: 5a8q
[root@source ~]# tar xf sersync2.5.4_64bit_binary_stable_final.tar.gz #解壓
[root@source ~]# mv GNU-Linux-x86/ /usr/local/sersync
[root@source ~]# cd !$
cd /usr/local/sersync
[root@source sersync]# vim confxml.xml #編輯配置文件
原:
24 <localpath watch="/opt/tongbu">
25 <remote ip="127.0.0.1" name="tongbu1"/>
31 <auth start="false" users="root" passwordfile="/etc/rsync.pas"/>
32 <userDefinedPort start="false" port="874"/><!-- port=874 -->
修改後:
24 <localpath watch="/www/wwwroot/192.168.100.125">
<!—-設置監控的目錄-->
25 <remote ip="47.91.235.62" name="www"/>
<!—設置目標服務器的IP和”模塊名在目標服務器/etc/rsyncd.conf 裏面” -->
31 <auth start="true" users="root" passwordfile="/etc/rsync.pas"/>
<!—-設置同步的用戶名和密碼文件-->
32 <userDefinedPort start="false" port="873"/><!-- port=874 -->
<!—-設置rsync的端口,要和目標服務器那邊開啓的端口一致-->
[root@source ~]#/usr/local/sersync/sersync2 -r -d -o /usr/local/sersync/confxml.xml
#啓動服務
查看結果:
新增
刪除:
源服務器上執行# rm –rf s* && rm –rf p*
修改源文件內容:
#執行 echo '1234567890' > why
總結:
目標服務器:
只需要安裝rsync,修改/etc/rsyncd.conf配置文件
源服務器:
安裝rsync工具
安裝Sersync工具
編輯Sersync 配置文件