by winson, 3 months ago.
當您在程式中提供小人頭圖像上傳功能時,搭配Vlad the Deployer八成會出問題,因為Vlad the Deployer會從SVN下載新的版本,並把舊版本整個換掉,亦即使用者的個人圖像統統會消失。
為解決這問題,我們可以善用Vlad the Deployer的語法,首先要做的就是把原先上傳到Rails public目錄的圖檔整個搬移到Web server的目錄下:
mv /your_rails_app/public/user /var/www/user
接著修改該目錄的權限:
sudo chmod -R mongrel:mongrel /var/www/user
於是,我們可以在Vlad the Deployer的設定檔中,增加一個新的Remote task,負責幾件事情:
- 砍掉空的圖像目錄
- 做symbolic link連到/var/www/user
請在您的deploy.rb檔案中,加入以下語法:
namespace :vlad do
def sudo(command)
run [sudo_cmd, sudo_flags, command].join(' ')
end
desc "Setup user photos."
remote_task :setup_photo do
user_path = "#{current_path}/public/user"
sudo "rm -r #{user_path}"
sudo "ln -s /var/www/user #{user_path}"
end
end
這個setup_photo要做的就是,每當遠端程式更新完畢之後,處理一些圖檔目錄相關的動作,於是往後更新版本,都可以保留使用者上傳的所有個人圖像。
by winson, 3 months ago.
在Rails底下使用外掛是很方便沒錯,問題是這些第三方的外掛常常在更新。我們當然可以很簡單地使用以下指令安裝外掛:
cd /myrails
plugin install http://some_where_to_my_favorite_plugin
這種直接安裝外掛的問題在於第三方的外掛更新時,我們並不知道。
或者也可以用以下指令安裝外掛:
plugin install -x http://some_where_to_my_favorite_plugin
這種安裝外掛的方式,是將外掛以svn co的方式安裝,每次我們svn ci更新遠端程式碼時,系統就會先去問第三方外掛的svn看看有沒有更新,有更新會先更新外掛之後,才把修改過的程式以及更新的外掛送到遠端的svn repository。
by winson, 3 months ago.
要是你採用了Vlad Deployer,基本上可以簡化相當多Mongrel cluster的設定,但有關啟動Mongrel cluster的帳號或開機時一併啟動Mongrel cluster等等,還需要花點工夫。
首先,請在之前提過的deploy.rb設定檔做如下設定,安排好Mongrel的帳號、幾部Mongrel伺服器以及啟動的port、啟動的環境等等:
set :mongrel_user, "mongrel"
set :mongrel_group, "www-data"
set :mongrel_servers, 18
set :mongrel_port, 9000
set :mongrel_environment, "development"
設定好之後,按以下指令就可以產生Mongrel設定檔:
by winson, 4 months ago.
Vlad the Deployer這玩意兒簡單又好用,就算有一百台主機分散在全世界,我想透過它來部署、更新系統也是輕而易舉。
但是在實務操作面,還是有幾個問題:
第一、它預設使用Apache,那麼頗受好評的輕量級網頁伺服器lighttpd怎麼辦呢?
第二、它預設執行環境為Production,那麼我要如何在Development環境下跑呢?
第三、每一台主機位址都不同,要在哪裡設定呢?
最簡單的方式是用namespace,如下:
namespace :macmini do
task :settings do
set :domain, "tw.myrails.com"
set :rails_env, "development"
set :web_command, "/etc/init.d/lighttpd"
end
setup_tasks
end
namespace :macpro do
task :settings do
set :domain, "us.myrails.com"
set :rails_env, "production"
end
setup_tasks
end
看到沒?上述三個疑問一下解決掉,包括不同主機位置、不同執行環境與不同的網頁伺服器!!
by winson, 8 months ago.
Ruby on Rails對全世界最大的貢獻不在於產生多少容易維護的程式碼,而在於把簡潔易用的觀念深植人心。
因為程式員透過簡單易用的Ruby on Rails開發各種程式,於是創造出Twitter、Radiant、Mephisto等傑出的應用,而Vlad the Deployer則是另一個強調簡單易用的傑出工具。
相較於威力強大的Capistrano,Vlad the Deployer是一套極為簡單的自動化部署工具,特別是當您使用Mongrel, Apache, Subversion環境時,更是輕鬆愉快。
那麼,Vlad the Deployer可以幫助我們做什麼?