I ♥ WordPress

[時間割:サーバ] CentOS5.2 で Ruby on Rails をインストールして、プロジェクト管理ツール『9arrows』を試してみる
2008/11/07 02:40 posted by kunkichi

水曜日は『サーバ』の時間です。今日はちょっと趣向を変えて、「9Arrows」というプロジェクト管理ツールを試してみようということで、それを動かすのに必要な「Ruby on Rails」のインストールにトライしてみたいと思います。でもRailsはさっぱりわからないので、9Allowsが最低限動けばOKとします。環境はもちろん CentOS5.2。OSのインストールからの最短手順を目指します。

OSインストール

  • MacBook上のParallelsにインストール。
  • テキストインストール。
  • パッケージはベースシステムのみの最短構成から。
  • ファイアウォールとSELinuxは停止しておく。
  • インストールが終わったら一旦 yum update で最新の状態にしておく。

epelパッケージインストール
RailsのパッケージがEPELにあるのでこれを使うために、まずepelを使えるようにする。

  • epel-releaseをインストール# wget http://download.fedora.redhat.com/pub/epel/5/i386/epel-release-5-3.noarch.rpm
    # rpm -ivh epel-release-5-3.noarch.rpm

Ruby on Railsパッケージインストール

  • EPELのRailsのパッケージをインストールする。# yum install rubygem-railsこれで必要なパッケージは全部インストールされるっぽい↓Dependencies Resolved
     
    =============================================================================
    Package                 Arch       Version          Repository        Size
    =============================================================================
    Installing:
    rubygem-rails           noarch     2.1.1-2.el5      epel              428 k
    Installing for dependencies:
    ruby                    i386       1.8.5-5.el5_2.5  updates           279 k
    ruby-irb                i386       1.8.5-5.el5_2.5  updates            69 k
    ruby-libs               i386       1.8.5-5.el5_2.5  updates           1.6 M
    ruby-rdoc               i386       1.8.5-5.el5_2.5  updates           136 k
    rubygem-actionmailer    noarch     2.1.1-1.el5      epel              455 k
    rubygem-actionpack      noarch     2.1.1-1.el5      epel              2.1 M
    rubygem-activerecord    noarch     2.1.1-1.el5      epel              1.4 M
    rubygem-activeresource  noarch     2.1.1-1.el5      epel              176 k
    rubygem-activesupport   noarch     2.1.1-1.el5      epel              1.3 M
    rubygem-rake            noarch     0.7.3-2.el5      epel              320 k
    rubygems                noarch     1.2.0-2.el5      epel              617 k
     
    Transaction Summary
    =============================================================================
    Install     12 Package(s)        
    Update       0 Package(s)        
    Remove       0 Package(s)        
     
    Total download size: 8.9 M
    Is this ok [y/N]:
    ただし、rakeのバージョンが低すぎてRailsでエラーになる様子。# rails -v
    /usr/lib/ruby/site_ruby/1.8/rubygems.rb:578:in `report_activate_error': RubyGem version error: rake(0.7.3 not >= 0.8.1) (Gem::LoadError)
    なので、rakeだけはgemsからインストールする。最新版のrakeをインストールしてみる。# gem install rake --version 0.8.3確認# gem list
    *** LOCAL GEMS ***
     
    actionmailer (2.1.1)
    actionpack (2.1.1)
    activerecord (2.1.1)
    activeresource (2.1.1)
    activesupport (2.1.1)
    rails (2.1.1)
    rake (0.8.3, 0.7.3)

その他のパッケージのインストール
9Arrowsが必要とする他のパッケージをインストールする。

  • apache# yum install httpd
    # chkconfig httpd on
    # service httpd on
  • PostgreSQL# yum install postgresql-server ruby-postgres
    # chkconfig postgresql on
    # service postgresql start
    このままだとローカルホストからIDENT認証しかできず結果的にRailsから接続できないので、/var/lib/pgsql/data/pg_hba.confを編集する。# vi /var/lib/pgsql/data/pg_hba.conf
    ---–
    #host    all         all         127.0.0.1/32          ident sameuser
    host    all         all         127.0.0.1/32          password
    ---–
    再起動# service postgresql restart

9arrowsのインストール&設定
では9arrowsをインストール&設定していきます。

  • ソースをダウンロードします。ここではsvnレポジトリから最新版をチェックアウトしてみます。# yum install subversion
    # svn checkout http://9arrows.googlecode.com/svn/trunk/ 9arrows-read-only
  • チェックアウトしたディレクトリを適当なところに設置します。うちの場合は/var/www配下に設置しました。# cp -pir 9arrows-read-only /var/www/9arrows
  • パーミッションを変更します。アーカイブ内のディレクトリは既に755になっているようなので、必要な箇所だけ変更。# cd /var/www/9arrows
    # chmod 777 log public/attach public/javascripts/comp tmp tmp/{cache,pids,sessions,sockets}
  • httpd.confを設定します。# vi /etc/httpd/conf.d/9arrows.conf Railsのチュートリアルを参考に以下のような設定をしました。<VirtualHost *:80>
      ServerName 10.211.55.3
      DocumentRoot /var/www/9arrows/public/
      ErrorLog /var/www/9arrows/log/9arrows_error.log
      CustomLog /var/www/9arrows/log/9arrows_access.log combined
     
      <Directory /var/www/9arrows/public/>
        Options ExecCGI FollowSymLinks
        AddHandler cgi-script .cgi
        AllowOverride all
        Order allow,deny
        Allow from all
      </Directory>
    </VirtualHost>
    終わったらhttpdを再起動します。# service httpd restart
  • 公開ディレクトリである public にアクセスしたときに参照される dispatch.cgi に実行権がついていないのと、dispatch.cgi内のrubyのパス(/usr/local/bin/ruby)がCentOS5.2のruby(/usr/bin/ruby)のパスと異なっているので、シンボリックリンクで対応します。# chmod +x public/dispatch.cgi
    # ln -s /usr/bin/ruby /usr/local/bin/ruby
  • config/environment.rb に記載されている Rails のバージョン(2.1.0)が、パッケージでインストールしたRailsのバージョンと異なるので、パッケージのバージョンに合わせます。# vi config/environment.rb
    RAILS_GEM_VERSION = '2.1.1' unless defined? RAILS_GEM_VERSION
  • データベースの設定を行います。まずユーザとデータベースの作成。# su - postgres
    $ createuser 9arrows -P
    $ createdb 9arrows_test -O 9arrows
    $ createdb 9arrows_production -O 9arrows
    $ createdb 9arrows_development -O 9arrows
    次にconfig/database.ymlを編集してデータベース名・ユーザ名・パスワードを設定する。# vi config/database.yml
    ---–
    development:
      adapter: postgresql
      database: 9arrows_development
      username: 9arrows
      password: 9arrows
      host: localhost
    ---–
    設定ができたら、rakeコマンドでデータベースの初期化を行います。# rake db:migrate
    rake db:fixtures:load

ブラウザからアクセス
ここまでできたら、ブラウザからアクセスしてみます。

  • ログイン画面が出たら以下のIDとPWでログイン。
    ID 9arrows@example.com
    PW 9arrows

ログイン画面が出れば完了です。

今回はParallelsで構築したのでパフォーマンス的にはちょっと難しい感じですが、ちゃんとしたサーバで構築すれば問題ないと思います。あと、とりあえずメールについてはスルーしましたけど、きちんと設定すれば期限が来たらメール送信等もできるみたいですし、他にもAdobe AIRを使用すると、サーバにアクセスできなくてもクライアントだけで編集等もできるようなので、結構使い勝手はよさそうですね。

Rails全く知らなくてもなんとかなるもんですね。なんとなく雰囲気はわかった気がしました。

bloglines復活、、、
2008/09/03 23:40 posted by kunkichi

うーん、判断に悩む、、、

今日も落ちてる、、、
2008/09/03 23:31 posted by kunkichi

ダメだ、、bloglinesまたつながらない、、、乗り換え決定。

とりあえずgoo RSSリーダー試してみるかなぁ。livedoorリーダーどうしても肌に合わん。

大丈夫か?bloglines
2008/09/02 23:26 posted by kunkichi

うーん、なんか最近障害多くない?乗り換えるかなぁ、、、

[続]いまだにphpではなくてperl
2007/10/09 19:47 posted by kunkichi

ご本人が追記されたようで。さらに微妙。

今回のmixiのリニューアルについて - 寺田 あつし : Web制作・クリエイティブ [All About プロファイル]

追記:
ひとつだけ、訂正致します。
回答のうち、perlがphpよりも劣っているかのような印象を与える一節がありますが、これは誤りです。私自身、両方の言語を用います。一長一短があるものです。

ただし、言語の優劣とmixiのエンジニアの方々との問題はまったく別の話です。

開発のスキームに問題があるのは明らかです。開発チームの血を入れ替えるなど、大胆な施策を打たなければ改善は難しいでしょう。

うーん、両方の言語を使う人が、

そもそもせっかくリニューアルといっているのに、いまだにphpではなくperlで動いているあたり。。。

なんてことは言わないと思うのですよ。一長一短ってところが何を指してるのかよくわからないし。それに一長一短とかいうけどさ、どの言語使ってもそんなに変わらないと思うよ。せいぜいPerlだとライブラリが豊富とかエンジニアがPerlが好きだからとか、ざっくりその程度の理由だと思うんだけどな。

言語の優劣?誰もそんなことを言ってるんじゃないと思うんだよなぁ。
なんで突っ込まれたかをご本人が分かってないって感じがちょっと悲しい。

いまだにphpではなくてperl
2007/10/09 16:28 posted by kunkichi

mixiのデザインリニューアルへの批判がにぎやか、
そしてそれに対する専門家の意見へのツッコミはもっとにぎやかw

今回のmixiのリニューアルについて - 寺田 あつし : Web制作・クリエイティブ [All About プロファイル]

そもそもせっかくリニューアルといっているのに、いまだにphpではなくperlで動いているあたり。。。

ってところと、

技術や知識が古く、独自の思考をもった温室エンジニアたちが、

を併せて読むとかなり笑える(笑)
次はgoogleもいまだにpythonとか言われちゃう?言われちゃう?wktk

まあ所詮allaboutだし。会社の宣伝にはなったんじゃない?良くも悪くも。掲載費の元も取れただろし。
つか誰か止めろw

↓釣られたwwwww
目指せZapaブロ〜グ!! - Perlにこだわる奴らは時代遅れ(God寺田)

しかし、こんなんが出てくると、やっぱりWebデザイナーはレベルが低いとかそんな話になりそうな予感。個人的には、綺麗なデザインができる人ってそれだけでもすげーと思うんだけどね。

まじめな話、HTMLで綺麗な静的サイトを作ればそれで終わりだった時代じゃなくなりつつあるから、デザイナーも開発サイドの業務をある程度理解する必要はあるだろうし(逆もまた然り)、そういうスキルを持っていて、最近のサイト開発の動向をちゃんとチェックしているような、まじめなデザイナーも多いと思うんだよね。

この1件で、そういうスキルのあるデザイナーに対して風当たりが強くなったりしないことを望みます。

名前ベースのバーチャルホストでそれぞれの証明書を使う
2007/07/05 01:12 posted by kunkichi

『セキュリティホールMEMO』にこんな記事が載ってました。

■ 2007.07.04

・名前ベースのVirtualHostでそれぞれのSSLサーバ証明書を使う (Web Security Memo, 7/4)。

RFC 3546 - Transport Layer Security (TLS) Extensionsというものがあるのですか。

ということで元記事の『Web Security Memo』。

Web Security Memo : 名前ベースのVirtualHostでそれぞれのSSLサーバ証明書を使う

Name-based SSL virtual hosts』 より、

名前ベースのVirtualHostでSSLを使う場合、以下の方法をとれば、それぞれのVirtualHostごとの証明書を使うことができます。

これは結構驚き。名前ベースのバーチャルホストではSSLが使えないというのが当然だと思ってました。固定概念って怖いね。

(※ 厳密に言うと”SSL”の部分はできなくはないけど、”証明書”があんまり意味をなさなくなる。個人の自宅サーバならともかく、商用サイトではそんなんありえないすね。)

まだちょっと experimental な感じもするし対応しているブラウザも少ないみたいだけど、IPアドレスが節約できるのはいいな、管理も楽になるし。

時間があるうちに試してみようっと。

PHPでリモートデバッグ
2006/12/09 18:19 posted by kunkichi

昨日は仕事を午前休もらって、アシアル株式会社主催のPHPセミナーに行ってきました。もちろん無料セミナー(笑。

で今回のテーマは「PHPで快適デバッグ」

PHPのデバッグ、というかWebアプリのデバッグは、例えばVisual Studioなんかを使ったデバッグとはちょっと違って難しいところがある。例えば、スクリプトのある時点での変数の値を確認したいとする。

Visual Studio だと、

  • 変数に値が入るところでブレークポイントを入れて処理をそこで止める。
  • 確認したい変数にマウスを合わせると値が表示される。

って感じで簡単にできるのだけど、Webアプリケーションとなるとこれが一気に難しくなる。

  • 変数に値が入るところで exit 入れたりして処理を止める。(ループがネストしていると大変、、、)
  • 変数を画面に出力するように print_r やら var_dump で処理を入れる。(後で消すのを忘れて本番にそのままいっちゃったり、、、)

こんな感じでとても原始的な上に後でめんどくさくなるやり方をするパターンが多い。というのもWebアプリでは処理はサーバ側で実行されるので、サーバ側で制御してあげないといけない。ローカルPCで Visual Studio を使うようにはいかないのだな。

ということで、DBG + DBGListener + DBGクライアント(PHPSimpleDebugger) を使った手法の説明がメインでした。簡単な図で表すと、
dbg.jpg

      1. ブラウザからリクエストにデバッグ用変数をくっつけて送信。
      2. デバッグ用変数に含まれているクライアントにデバッグ情報を送信。
      3. DBGListnerがデバッグ情報を受けてDBGクライアントを起動。
      4. DBGクライアントからデバッグ実行。
      5. DBGListener経由でサーバにデバッグ命令を送信。
      6. デバッグ命令を元にブラウザにレスポンスを返す。

試してないのでちょっと間違ってるかもしれないけど、要はサーバとクライアントでデバッグ用のポートを別途用意して、デバッグ情報や制御をそこで行うと。これでIDEライクなデバッグができるという訳。昔DBGを試してみたことはあったのだけど、リモートではうまく動かなかったのでそこで諦めてたんだよね。SSHでトンネル貼れば本番環境でもデバッグできそうだし。早速会社で試してみようっと。

あとDBG以外にもいろいろ面白いのがありました。

  • Pear::Var_dump
    var_dumpの出力結果を奇麗に表示してくれるPEARライブラリ。
  • dbug
    こちらも同じ。JavaScriptで折りたたみとかできるみたい。
  • Xdebug
    DBGと同じぐらい高機能なデバッグモジュール。
  • Gubed
    PHPで書かれたデバッグライブラリ。Firefoxのエクステンションと連動するらしい。
  • WinCacheGrind
    Xdebugで出力されたプロファイリング結果を表示するアプリ。

activeCollabがさくらにインストールできない件について
2006/11/30 23:56 posted by kunkichi

前のエントリでphp5をインストールしたので、やっとactiveCollabを試せると思っていたのに、インストールしてみると、、、

InnoDB storage engine is not supported.

さくらのmysqlってInnoDB非対応なのね、、orz

うーん、どうするかなあ、、、

【追記】
InnoDBじゃなくてMyISAMでは動かないのかなぁと思って、本家サイトのフォーラムをのぞいてみるとFAQ化していた様子、、、自分にorz

It should work, but I strongly recommend using InnoDB because activeCollab uses transaction to keep data in sync and recover from errors. Its that important that I’d say that InnoDB is requirement, but you can use MyISAM at your own risk.

To use MyISAM do what gog said in the previous post (open install/installation/templates/sql/mysql_schema.php and replace every occurance of ENGINE=InnoDB with ENGINE=MyISAM).

うーん、一人で使うつもりだから、とりあえずソースいじって使ってみるかな。

さくらでphp5(pearエラー対応)
2006/11/30 20:01 posted by kunkichi

さくらインターネットでphp5をインストールする手順はたくさんの人が書いているけど、それらを参考にphp-5.2.0をインストールしてみたところ、make installでpearのエラーが発生する。

ということでググってみたところ、琥瑠璃どっとこむ:さくらのレンタルサーバーへPHP5.2.0をインストールでやっぱり指摘されていたので、それに従いインストール。

うちのconfigureオプションはこんな感じ。
# export PHP_PEAR_CACHE_DIR="$HOME/local/php-5.2.0/pear/cache"
 
# ./configure ¥
--prefix=$HOME/local/php-5.2.0 ¥
--program-suffix=5 ¥
--with-pear=$HOME/local/php-5.2.0/share ¥
--with-config-file-path=$HOME/local/etc/php5.ini
--enable-force-cgi-redirect ¥
--enable-mbstring=all ¥
--enable-mbregex ¥
--enable-mbstr-enc-trans ¥
--enable-versioning ¥
--enable-trans-sid ¥
--with-mysql ¥
--with-openssl=/usr ¥
--with-soap=yes ¥
--with-zlib=/usr ¥
--with-gd=/usr/local ¥
--with-jpeg-dir=/usr ¥
--with-freetype-dir=/usr ¥
--with-ttf ¥
--with-png-dir=/usr ¥
--with-curl ¥
--with-iconv=/usr/local

ちょっと冗長なところもありますが、細かいことは気にしないタイプなので、爆。

これでactiveCollabを試してみたいと思います。

このページの先頭へ