部署,在我看來是讓**在真實的伺服器上跑起來,能夠對外提供期望的服務和功能。
例如簡單的web專案:單台伺服器, 資料庫和web伺服器都在一台機器上。
只需要將**copy到伺服器上,保證**裡的資料庫配置和伺服器上的web配置正確。
再開啟瀏覽器,訪問該應用, 能夠正常訪問和使用,部署就結束了。
部署到這裡真的結束了嗎?
**公升級,重新copy**,忘記修改配置檔案,導致服務無法訪問怎麼辦?
訪問量增加,專案需要部署到n臺機器,難道還手工copy?
開發流程完善,需要有本地環境,測試環境,qa測試環境,線上環境等多個不同環境配置,
每個都要人工修改配置不累死?
**出了問題,怎麼回滾?
多機器檔案同步
多環境配置
**回滾
支援pear
,composer
,phar
安裝。可以根據開發機已經部署哪種包管理程式來選擇。參考官網安裝說明
如果是通過composer, 安裝到當前專案下,那麼執行./vendor/phing/phing/bin/phing -h
,便會出現幫助列表。
輸出 helloworld:
phing
通過 xml 檔案配置執行任務, 建立deploy.xml
檔案,內容如下:
<?xml version="1.0" encoding="utf-8"?>
定義了乙個project
,預設執行dist
任務,dist
任務通過target
標籤定義,
而echo
標籤只是簡單的輸出msg
屬性中的值
執行./vendor/phing/phing/bin/phing -f ./deploy.xml
, 便可看到如下輸出:
buildfile: /project/phing/./deploy.xml
helloworld > dist:
[echo] hello world!
build finished
total time: 0.0666 seconds
將helloworld放入配置檔案
將常見變數放入單獨的配置檔案,便於維護。建立deploy.properties
檔案,定義乙個變數:string
,檔案內容只有一行:string=echo helloworld by config file
。
修改deploy.xml
,新增標籤,便可讀取外部配置檔案作為變數:
<?xml version="1.0" encoding="utf-8"?>
那麼,針對不同環境讀取不同配置檔案,只需要將不同環境使用的配置檔名作為變數輸入即可:
注:input
標籤,會在執行 phing 命令後,等待繼續輸入, 輸入內容作為變數env
值
phing
支援ftp
和scp
上傳檔案
使用scp
, 需要php安裝ssh2.so
擴充套件
例如: scp 乙個目錄
加速scp
:本地壓縮
先使用 tar壓縮檔案,再執行scp
, 最後通過ssh
在遠端伺服器上解壓檔案。
注: 一次ssh
只能執行一次命令。 批量執行需要通過其他方式,例如 bash script
不同環境使用不同的配置檔案,可以使用讀取環境變數(前文已經說明)或者
-d
引數指定變數,./vendor/phing/phing/bin/phing -d env=dev -f phing.xml
每次部署**時,建立個新目錄,保證目錄名不重複,可以是時間戳或版本號。
web根目錄通過軟鏈結指向最新目錄, 例如:/var/www -> /deploy_dir/1423432343
其中$deploy_dir
和$back_link
分別是/var/www
/var/back
,可以寫入單獨配置檔案
簡單易用,但是不能支援連續回滾
phing 官方示例文件
linux中部署自己的系統核心
pc機bios韌體是固化在pc機主板上的rom晶元中,斷電也能儲存,pc機上電後的第一條指令就是在bios韌體中,它負責檢測和初始化cpu 記憶體和主機板平台,然後載入引導裝置 大概率是硬碟 中的第乙個扇區資料,到0x7c00位址開始的記憶體空間,再跳轉到0x7c00處執行指令。這裡是grub引導程...
自建cdn搭建 如何自己架設部署CDN?
關於企業是否需要部署自己的cdn,這個需要結合最優的價效比 自身的需求和業務規模以及自身的能力等綜合因素來衡量,市場上也有眾多的優異的cdn可供選擇!cdn的網路架構 簡單說下 cdn網路架構主要由兩大部分,分為中心和邊緣兩部分,中心指cdn網管中心和dns重定向解析中心,負責全域性負載均衡,裝置系...
部署自己的聊天系統 DuckChat(鴨信)
演示位址 含web體驗 android客戶端 ios客戶端 github位址 官方 duckchat官方 以下是官網 功能完善 duckchat聊天系統具備完整的功能,如單聊 群聊 通訊錄 免打擾 後台管理等。對於伺服器端程式,還提供豐富多樣的api介面,方便你在伺服器端呼叫各類功能,如代發訊息等。...