python 運維發佈代碼

3 代碼發佈

步驟,流程
1 獲取代碼
	程序員提交代碼到代碼服務器

	獲取代碼:權限 打包代碼:tar 傳輸代碼:scp

	停止應用:先近後遠 解壓代碼:tar 放置代碼:先備後放

	開啓應用:先遠後近 檢查效果:瀏覽器+端口 對外開放

2 打包代碼(代碼服務器執行)
	方便傳輸
	tar zcf 壓縮文件名 待壓縮內容
	tar xf 壓縮文件名
	zcat 壓縮文件名  (查看壓縮包內容)
				
3 傳輸代碼
	線上服務器--獲取---》代碼服務器代碼
	scp 遠程主機:絕對路徑 目標路徑
	先登錄後拷貝

	將本地文件推送到遠程主機:scp python.tar.gz [email protected]:/root/
	將遠程主機的文件拉取到本地:scp [email protected]:/root/python.tar.gz ./

z:指定壓縮文件的格式爲 tar.gz
c:	壓縮
v:  顯示詳細過程
f:	指定壓縮文件
x:	解壓
文件的壓縮:壓縮格式:tar zcvf 壓縮後的文件名 將要壓縮的文件
文件的解壓:解壓格式:tar xf 壓縮後的文件名

	
	
4 關閉應用
	先關離用戶近的,後關離用戶遠的

5 解壓代碼

6 放置代碼
	先備份後放置
	備份加時間戳
	mv tar_code.tar.gz ~/tar_code.tar.gz`date +%Y%m%d%H%M%S`

顯示當前日期:date +%F  2017-09-28
顯示當前時間:date +%T  03:06:3
顯示當前日期:date +%Y%m%d  20170928
顯示當前時間:date +%H%M%S  030643
年月日時分秒:date +%Y%m%d%H%M%S

複製備份:cp nihao nihao-$(date +%Y%m%d%H%M%S)
移動備份:mv nihao nihao-$(date +%Y%m%d%H%M%S)

7 開啓應用
	先開離用戶遠,在開離用戶近的
	
8 檢查
	netstat -ntl | grep 80

4 基礎目錄環境

	mkdir /data/{server,logs,backup,softs,virtual,scripts,codes} -p
	一步創建所有目錄--》父目錄不存在一併創建

5 主機網絡環境(跨主機免密碼認證的原理)

	1 客戶端生成密鑰對(在線上服務器運行) 
		ssh-keygen -t rsa
		公鑰放在:/root/.ssh/id_rsa.pub
	2 將公鑰傳給服務器(傳給代碼服務器)
		在代碼服務器中/etc/ssh/sshd_config定義了祕鑰存儲文件(AuthorizedKeysFile	%h/.ssh/authorized_keys)
		echo “公鑰”>> authorized_keys 
	3 重啓ssh服務 (在代碼服務器執行)
	sudo service ssh restart	

6 Django安裝

	1 虛擬環境安裝
		1 進入虛擬環境
		export WORKON_HOME=/data/virtual/
		source /usr/local/bin/virtualenvwrapper.sh
		mkvirtualenv -p python3 django
	2 sz rz(xshell)
	3 安裝django
		1 查看INSTALL
		2 python setup.py build(可選)
		3 python setup.py install
	4 配置django
		1 創建項目
			django-admin startproject itcast
		2 創建應用
			python manage.py startapp test1
			修改test1/views.py
		3 註冊應用
			修改 itcast/settings.py
		4 關聯URL
			修改 itcast/urls.py
		5 啓動django
			python manage.py runserver > /dev/null 2>&1 &

7 nginx 安裝

	1 pcre插件安裝(nginx依賴舊版本pcre)
		./configure && make && make install
		./configure 裁剪軟件 定製安裝路徑
		make 編譯
		make install 安裝
		
2 nginx安裝
	./configure --prefix=/data/server/nginx --without-http_gzip_module
	(指定安裝路徑在/data/server/nginx,裁剪gzip模塊)
	make && make install
	
	動態庫鏈接失敗
	ldd 查找搜索路徑
	ln -s  /usr/local/lib/libpcre.so.1 /lib/x86_64-linux-gnu/libpcre.so.1
	(創建軟連接)
	
	配置代理:
		http配置段server段增加location配置
		location /hello/ {
			proxy_pass http://127.0.0.1:8000;
		}

8 手工代碼發佈

1 獲取代碼
	

2 打包代碼(代碼服務器執行)
	cd /home/dev/data/codes
	tar zcf tar_code.tar.gz test1/					
3 傳輸代碼
	cd /data/codes
	scp [email protected]:/home/dev/data/codes/tar_code.tar.gz .
4 關閉應用
	cd /data/server/nginx/sbin
	./nginx -s stop
	kill `lsof -ti :8000`
5 解壓代碼
	cd /data/codes
	tar xf tar_code.tar.gz
6 放置代碼
	cd /data/server/itcast/test1
	mv views.py /data/backup/views.py-`date +%Y%m%d%H%M%S`
	cd /data/codes/test1
	mv views.py /data/server/itcast/test1/
7 開啓應用
	export WORKON_HOME=/data/virtual/
	source /usr/local/bin/virtualenvwrapper.sh
	workon django
	cd /data/server/itcast
	python manage.py runserver > /dev/null 2>&1 &
	cd /data/server/nginx/sbin
	./nginx
8 檢查
	netstat -ntl | grep 80

9 簡單腳本編寫

	1 命令羅列
	2 固定內容變量化(方便修改)
	3 功能函數化(方便擴展)

遠程執行命令:
	ssh 遠程主機登錄用戶名@遠程主機ip地址 “命令”

10 大型腳本編寫

1 搭建框架(將步驟變成函數)
2 命令填充(將命令寫到函數內)
3 日誌功能:
	1 定義寫日誌函數(將時間日期步驟等信息重定向追加到文件)
	2 在各個函數內調用寫日誌函數
	
4 鎖文件功能:
	1 編寫加鎖解鎖函數---》創建和刪除文件
	2 在所有步驟之前先調用加鎖函數,所有步驟完畢後調用解鎖函數
	3 在腳本執行前先判斷文件是否存在
	
5 功能參數化
	case判斷腳本參數是否是當前支持的功能
	增加參數個數安全性的判斷

11 腳本調試

bash -n 腳本名 檢查語法
bash -v 腳本名 先打印一遍腳本內容再執行
bash -x 腳本名 打印一句執行一句
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章