parabola を deploy するマデの道のり

なんか DRY に反してる感満載なんですが、慣れてないとゆー事でご勘弁を。

適当な所に parabola を co

こんな感じ

$ svn co svn://lotus.aeonblue.dk/parabola/tags/release-0.4

リポジトリの準備

リモートリポジトリなホストに接続して以下。

# svnadmin create parabola
# svn mkdir file:///home/xx/svn/parabola/trunk -m 'mkdir trunk'
# svn mkdir file:///home/xx/svn/parabola/branches -m 'mkdir branches'
# svn mkdir file:///home/xx/svn/parabola/tags -m 'mkdir tags'

ローカルリポジトリの構築

まず、parabola をチェックアウトしたホストから import を実施。

$ ls
parabola
$ svn import parabola svn+ssh://xx@svnrep.com/home/xx/svn/parabola/trunk -m 'import prj'

で、ローカルにリポジトリをコピィ

# svk mirror svn+ssh://xx@svnrep.com/home/xx/svn/parabola/trunk //mirror/parabola
# svk sync //mirror/parabola
# svk cp -p //mirror/parabola //parabola

AP サーバに co

AP サーバ側にて co してみる

# svn co svn+ssh://guest@local/home/guest/.svk/local/parabola parabola
# ls
parabola typo.release-4.0.0
# cp typo.release-4.0.0/vendor/rails parabola/vendor/. -r
# for i in `find parabola/vendor/rails -name '.svn'` ; do rm -rf $i; done
# cd parabola; svn add vendor/rails
# svn ci -m 'install rails1.1'
#

AP サーバでは rails 1.0 が動いてるんでこんな微妙なコトしてます。堪忍して下さい。

AP サーバに feedtools 入れとく

以下。

# gem install feedtools --include-dependencies

rails なナニを ci

  • log 配下を無視
$ svn remove log/*
$ svn ci -m 'rm logfile'
$ svn up
$ svn propset svn:ignore '*.log' log/
$ svn ci -m 'add ignore ./log/*.log'
  • database.yml も無視
svn up
svn move config/database.yml config/database.example.yml
svn ci -m 'move database.yml'
svn up
svn propset svn:ignore 'database.yml' config/
svn ci -m 'add ignore'

ローカルで稼動準備 (注:DRY に反しています。駄目スギです)

う。カレンダ側で migrate 追加してるぞ。ci しとかんと (独り言
# AP サーバに展開する時に svn up して rake migrate が必要。
# てーか、本番環境作る時がまたホネだなっぽい (鬱

で、ローカル環境にはテーブルあるから、先の修正を盛り込み。試験は別途 (こら

$ script/plugin install engines
$ script/plugin install login_engine

で、config/environment.rb の末端に以下を追加 (適当スギんか??

module LoginEngine
  config :salt, "my-salt"
  config :email_from, "webmaster@localhost"
  config :admin_email, "root@localhost"
  config :app_name, "webcalendar"
end

Engines.start :login

次は app/controllers/application.rb ですが、修正点は以下。

  • login_engine の require
  • require_dependency "login_system" をコメントアウト
  • include LoginEngine 追加
  • helper :user 追加
  • include LoginSystem コメントアウト
  • authorize メソドをコメントアウト
require 'login_engine'
#require_dependency "login_system"
require_dependency "misc"

# Filters added to this controller will be run for all controllers in the application.
# Likewise, all the methods added will be available for all controllers.
class ApplicationController < ActionController::Base
  include LoginEngine
  helper :user
#  include LoginSystem
  model :user

  before_filter :reload_settings

#  def authorize
#    unless session[:user]
#      flash[:notice] = "Please log in"
#      redirect_to(:controller => "/account", :action => "login")
#    end
#  end
(以下略)

今度は app/helpers/application_helper.rb ですが、include を追加です。

module ApplicationHelper
  include LoginEngine
  
  def config_value(name)  
(以下略)

ActionMailer はカレンダも config/environments/development.rb にしか設定が無い。忘れるなよ < 自分

ActionMailer::Base.server_settings = {
  :address => "localhost",
  :domain => "localhost",
  :port => 25
}

localhost で exim が動いてる、ってコトで ...

で、後は app/models/user.rb と lib/login_system.rb を削除、と。
その後、before_filter :authorize してるナニを修正。app/controllers で修正かかってるのは以下の模様。(やりながら記録してるんで微妙

  • app/controllers/account_controller.rb (before_filter をコメントアウト)
  • app/controllers/admin/feeds_controller.rb (before_filter をコメントアウト)

あと、生 SQL が tags_feeds になってるのが以下のファイル。

  • app/models/feed.rb
  • app/models/tag.rb

動作確認

一応 OK な模様。これで DRY な作業完了ッスね。(意味不明

ローカルなリポジトリ方面へ ci

rm したり add したり。tmp 配下はスルーで ci。ようやく AP サーバに deploy できる体制になった、と信じたい。

AP サーバ方面へ co して稼動試験

svn co はスルーとして、apache な設定が必要。

  • config/database.yml はカレンダなナニをそのまま使う。
  • /etc/apache2/sites-aveilable なナニもカレンダのソレを流用。

で、起動したら動かん。public/.htaccess 変更してないな。DB か??と思ったら AP サーバ側で rake migrate してるし。DB 見てもテーブルはあるぞ。何故だ。

どーでもええが、ログが長すぎ。しかし端末側では動いてるだけどなぁ。こーゆー時って

よくよくログを見てみると、tmp 配下 (/tmp ではない) のアクセス権限がアレ、という記述を発見。てっきり /tmp だと思っていたら違うんか (ため息
chmod 777 tmp/* したら動きました。このあたりの微妙な挙動の違いは吸収しないと駄目だなぁ。まだまだ勉強が足らん。

cron なナニ

無理矢理手で以下を追加

0,5,10,15,20,24,30,35,40,45,50,55 *     * * *   \ 
root    /var/www/parabola/script/runner -e production \
'Feed.update_all_feeds(:force => true)'

(微妙に改行してます。)

cron ニガテ。

この時点でアルファリリース。

追記

今日は情報多いな。最後にリポジトリの同期を取っています。

# svk push --verbatim //parabola

もの凄ぇたくさんパスワード要求された。ローカルブランチに ci しまくるのもあまり良くないのかなぁ。