capistrano2.0基本使用步驟是:
1.install capistrano
???gem?install?capistrano??
2.進入rails工程根目錄執行
??
???capify?.??
? 這個命令會生成兩個文件,一個是Capfile文件,在應用的根目錄下,另一個是deploy.rb文件,在應用的config目錄下
? 可以用cap -T 查看所有task, cap -e deploy 解釋deploy任務的詳情? 。
3.修改config/deploy.rb文件
set?:application,?"dcrm2"??
set?:repository,??"svn://10.200.106.168/crm2/trunk"??
set?:svn_username,?"username"?
?set?:svn_password,?"password"??
set?:use_sudo,false??
set?:deploy_to,?"/usr/local/apache22/htdocs/#{application}"??
set?:user,?"username"??
set?:password,?"password"??
depend?:local,?:command,?"convert"??
depend?:remote,?:command,?"iconv"??
#?If?you?aren't?using?Subversion?to?manage?your?source?code,?specify??
#?your?SCM?below:??
#?set?:scm,?:subversion??
role?:app,?"www.derbysoft.com"??
role?:web,?"www.derbysoft.com"??
role?:db,??"www.derbysoft.com",?:primary?=>?true??
task?:create_file_link,?:roles?=>?:web?do???
??run?"ln?-s?#{deploy_to}/shared/files/?#{deploy_to}/current/public/files"???
end??
task?:chmod,?:roles?=>?:web?do??
??run?"chmod?-fR?755?#{deploy_to}/current/script/*"??
end??
after?"deploy:symlink",?:chmod,?:create_file_link??
其中
application:Rails應用名
repository:版本管理系統(默認svn)的鏈接URL
svn_username:svn用戶名
svn_password:svn密碼
把use_sudo設為false是不用sudo
deploy_to:應用部署的路徑
user:ssh用戶名
password:ssh用戶名
depend:檢查某些依賴
app:應用服務器列表
web:web服務器名列表
db:數據庫服務器列表
create_file_link和chmod是自己定義的task,我在這里定義create_file_link是建一個link而使public文件夾下的files目錄不受版本控制的影響,因為files目錄下是用戶自己上傳的一些東西,不方便放在版本控制里面。定義chmod是為了改變服務器上某些文件的權限,主要是為了給script目錄下的文件加上可執行權限,要不然默認是不可執行的。這兩個task會在deploy:symlink任務執行完畢之后執行(執行cap deploy命令時會先執行一些任務,依賴的其中最后一個task是deploy:symlink)
4.創建spin文件
在應用的script文件夾下創建一個spin文件(沒有后綴名)
如果用Mongrel方式啟動應用,內容大概是這樣子的:
/usr/local/apache22/htdocs/dcrm2/current/script/process/spawner?-p?3000?-i?1??
用cap deploy命令部署應用時,會調用spin文件啟動/重啟服務
5.初始化服務器上的運行環境???
????cap?deploy:setup??
???這一步會連上服務器,創建一些目錄:
??
??
??
?
??
??
releases目錄里面會存放所有的發布版本
shared目錄是為了共享文件,比如log文件,還可以自己定義共享的文件,比如我前面定義了一個files共享文件夾
在第一此部署后還會產生一個current鏈接,它會自動指向releases目錄里面最新的版本
6.deploy
? 執行cap deploy命令,部署完成(貌似第一次要先執行cap deploy:start,要不重啟服務會失敗)。
? 如果部署的時候要遷移數據,執行cap deploy:migrations完成遷移和部署