[capistrano]capistrano心得筆記
這是deployment的工具,而且是ruby的。另有Vlad,也是ruby的deploy工具。
##一、安裝:
- ruby (目前我用v1.8)
- gem tool
再用gem tool安裝capistrano
1 |
|
安裝成功時,可以在command line下直接使用cap指令
##二、開始使用
- 新建專案後,先進入專案資料夾,接著輸入
1 | capify . |
執行後會在rails的資料夾中產生以下二個檔案
1 | ./config/deploy.rb |
這樣就可以開始改deploy.rb了!
心得重點:
設定資料需寫在deploy.rb之中,執行的動作也以ruby寫出。
基本執行的時候,會直接將deploy.rb設定的資料直接做處理動作。
執行cap deploy的時候,其deploy不是指檔案名稱,是deploy預設的動作。這個不會出現在deploy.rb的設定中。但可以利用撰寫同名的namespace來設定想要動作的任務。
執行設定主機有localhost會有問題,因為是遠端佈署用工具。都是利用ssh之類做操作。
在執行前,需要先remote server的public key,在做ssh 的時候會比較方便些。
直接在deploy.rb中寫好密碼,密碼有出現符號的部分,最好前、後加上跳脫符號,系統才會認得。
可以自行寫task進行執行,方法如下:
1 | desc "check out project" |
在desc 後,寫下task的名稱(只是標示用),然後task後寫出這個task的名稱,但是這個名稱是到時候執行的時候會認的參數,如上述的程式碼,要執行這段task時,在提示符號下,就需要打上:cap check_out_project 這樣才會執行在這個task撰寫的動作。(上述程式碼上,就會印出check out project)。
如果需要出現二個namespace的區塊,用來放置不同動作分類task時,範例如下:
1 | namespace :checkout do |
- 這樣可以在提示字元下,另用參數來切換要使用那一個指令,如:
1 | cap checkout:default #這個代表用來執行在checkout這個namespace之中default的task |
此外,task可以跨task、namespace呼叫,方法就是在task之中,依上述範例,可寫下如「back.default」,這代表呼叫backup這個namespace中的default這個task。而同namespace的其他task呼叫,依上述範例,在checkout的default這個task之中,只要寫下如「checkout.callbackup」,這代表呼叫checkout的callbackup這個task。
當程式出現了after()這個function時,這代表可以指定那個namespace的task只要執行完之後,就會去執行指定的另個task。如after(:checkout, “backup:backup_project”) 的意思是,當執行了checkout這個namespace之中的task之後,就會去執行backup這個namespace之中的backup_project這個task。
after(“deploy”, “backup:backup_project”)
可以指定如果使用deploy的時候,在執行後會去跑backup這個namespace的backup_project這個task,不過在實作中,deploy需要用namespace再撰寫一次,指定在deploy時會處理的動作。這樣在執行cap deploy的時候,才會在執行後觸發backup的backup_project。在task之中如果想下系統指令:
1
run "ls"
只要如上述將指令寫在run 的後面就可以了。
這個執行是執行server上的執令設定變數
在capistrano中,只要設定好參數,即可帶參數在task之中出現,如:
set :username, ‘myName’
然後,在task程式如下撰寫:1
2
3task :default
puts "hello #{username}"
end
在執行這個task的時候,就會印出hello myName
(#{變數名稱} 會替換成所設定的變數的值)
- 想在deploy中分開production、stagging環境:
在deploy.rb中,只需要寫:
1 | task :production do |
在下指令的時候,只需要像
1 | cap production deploy |
就可以分環境進行任務。
而capistrano針對php做deploy的作法:
- 進入專案資料夾後,直接執行:
1 | capify . |
然後,在專案資料夾下,會產生一個叫Capfile的檔案,還有在config資料夾裡有一個deploy.rb的檔案。
- 只要編輯好deploy.rb這個檔案即可以進行動作。
[capistrano]capistrano心得筆記
https://blog.walile.info/2011/02/21/2011-02-21-about-capistrano/