Vlad the Deployer #3

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要做的就是,每當遠端程式更新完畢之後,處理一些圖檔目錄相關的動作,於是往後更新版本,都可以保留使用者上傳的所有個人圖像。


  • Posted in Deployment, on Sunday, April 06, 2008, at 12:29 AM.

Piston

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。

  • Posted in Deployment, on Saturday, March 22, 2008, at 08:52 PM.

Using Mongrel Cluster

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設定檔:

  • Posted in Deployment, on Saturday, March 22, 2008, at 08:36 AM.

Vlad the Deployer #2

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
看到沒?上述三個疑問一下解決掉,包括不同主機位置、不同執行環境與不同的網頁伺服器!!


  • Posted in Deployment, on Saturday, March 08, 2008, at 07:36 AM.

Vlad the Deployer

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可以幫助我們做什麼?


  • Posted in Deployment, on Tuesday, November 06, 2007, at 09:28 PM.