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


Publish Subversion Messages to Twitter

by winson, 3 months ago.

把開發團隊的程式碼庫與Twitter訊息中心結合在一起該有多好?新推出的幾個Subversion hosting服務幾乎都有這種整合功能,例如Versionshelf,如此一來可以讓開發團隊成員直接訂閱Twitter即得知最近程式庫有哪些變更。這種做法相當有趣而且簡單:

1. 要擁有一個Subversion repository。 2. 要申請一個Twitter帳號,供團隊成員訂閱。 3. Subversion所在的伺服器必須可以跑curl,我們要利用Twitter的API來送出commit訊息。


  • Posted in Sugar, on Friday, March 28, 2008, at 09:22 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, Gems, 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設定檔:

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