2014年11月28日金曜日

Redmine2.xをなんとかして最近のさくらのレンタルサーバー(スタンダード)に導入した話

お久しぶりです。
最近は何かとばたばたしていたせいで、ブログなんて書いてる余裕、どこにもありませんでした。

さて、今年はCakePHPでチーム開発を実際に経験したり、大学のプログラムでオセロゲームを作って某ゲーム開発バイトをしているEさんや、院生の先輩NさんとAIでやり合ったりと、なかなか充実した日々を過ごしていた次第です。最近はFPGA始めました。
高校からずっとそうですが相変わらず数学はできません。

ところで、CakePHPを使ってチーム開発をしていたとき、BitbucketのIssueを使っていたんですが、どうも超不定期活動という僕らのスタイルにBitbucketのIssueはとても面倒だと感じたメンバーが多かったようで、大変不評でした。

ツールを変えるのもそれはそれで面倒だったのでそのときは廃れていくBitbucket Issueを眺めていたわけですが、次のチーム開発や、自分用にRedmineとかあったら捗るだろうなあと思った次第です。

というわけで、やってみました。
自分用の記録的要素がとても強いので、完全に殴り書きです。ごめんね。


僕自身、さくらのレンタルサーバのスタンダードプランを月500円ちょっとで借りていて大変捗っているので、それを使ってみようと思い、やってみました。

さくらのレンタルサーバーは、最近Xeonのサーバーに変わるなどして大幅なスペックアップがされた上、Apache1xや、Ruby1.xもボツったみたいで、前々からお試ししてみたかったこともあり、いい機会だと思い、サーバーはさくらを使います。

Overview

- Ruby2.x
- Rails4.x
- Redmine2.x
この構成でとりあえずやってみます。
また、Gitは個人でインストールしている環境を想定しています。やっていない人は適当にググればmake installの方法くらい載っているのでググってください。

がりがりインストール

1)rbenv+rubybuildのインストール
標準のRubyは何かと面倒な香りがした上、ネットに転がっている情報は古すぎて使い物にならなかったので、とりあえずRubyを入れるところから始めます。
とりあえず、今回はお手軽にrbenvでも使ってみることにします。

$mkdir local
$cd local
$git clone https://github.com/sstephenson/rbenv.git
$mkdir rbenv/plugins; cd rbenv/plugins
$git clone https://github.com/sstephenson/ruby-build.git

Ruby-buildまで入ったところで、パスを通したり環境変数を定義しておきます。
とりあえず標準設定のままなので、.cshrcをいじります。

===~/.cshrc(追記事項)===
setenv RBENV_ROOT $HOME/local/rbenv
setenv  TMPDIR $HOME/tmp
setenv  MAKE make
setenv RB_USER_INSTALL true
setenv PATH $RBENV_ROOT/bin:$RBENV_ROOT/shims:${PATH}
rbenv rehash
======
ポイントは、RB_USER_INSTALLです。忘れないように。
あと、TMPDIRは、標準設定だとnoexecなディレクトリに飛んでいってしまうため、その対策です。

さて、続きます。
$source ~/.cshrc
$rbenv --version
これで、しっかりバージョンが表示できればおk。

2)Rubyのインストールwith rbenv
$setenv MAKE gmake
一時的にgmakeを使うようにしておきます。こうしておかないと、あとでbundleでGemをほげほげするときにコケます。
$rbenv install -l
使えるRubyバージョンを確認。
んで、オプション指定しておきます。
$set CONFIGURE_OPTS="--with-openssl-dir=/usr/local --with-readline-dir=/usr/local --with-iconv-dir=/usr/local"
$rbenv install 2.0.0-p594
$rbenv rehash
$rbenv global  2.0.0-p594
$which ruby
これで、システムじゃないHOME以下のパスが表示されればおk。
インストールしたRubyが有効になってます。

このまま作業する前に、もう一度
$source ^/.cshrc
しておくと、gmakeとかの関連でエラーが出なくなるので、やっておくといい。

3)Redmineのインストール
やっとRedmineだよ!
とりあえず、今回は~/www/pjmanage/redmineの下にインストールして、バーチャルドメインを張っている想定でいきます。
$mkdir ~/www/pjmanage cd ~/www/pjmanage
$wget http://rubyforge.org/frs/download.php/77138/redmine-2.3.3.tar.gz
$tar zxvf redmine-2.3.3.tar.gz
$mv redmine-2.3.3 redmine
$cd redmine
$mkdir -p tmp tmp/pdf public/plugin_assets
$chmod -R 757 files log tmp public/plugin_assets
$cd ~/www/pjmanage/redmine/config
$cp database.yml.example database.yml
$vim database.yml
db設定をいじります。
===database.yml===
production:
adapter: mysql2
database: DBユーザー名
host: DBサーバー名
username: DBユーザー名
password: "DBパスワード"
encoding: utf8
======

$cd ~/www/pjmanage/redmine
$bundle install --path vendor/bundle

終わったら動作確認。
$bundle exec rails -v
シークレットキー作って、DBのマイグレーションしておきます。
$bundle exec rake generate_secret_token
$set RAILS_ENV=production
$bundle exec rake db:migrate
$bundle exec rake redmine:load_default_data
Languageはもちろんjaで。

設定をつくります。
$cd ~/www/pjmanage/redmine/config
$cp -p configuration.yml.example configuration.yml
$vim boot.rb
===boot.rb(追記)===
ENV['RAILS_ENV'] ||= 'production'
======

4)CGIモード動作のためのあれこれ
dispatcher.fcgiをcgi向けに書き換えて、使えます。

とりあえず、boot.rbにさらに追記します。
===boot.rb===
#ruby lib 関連
$LOAD_PATH.push('/home/アカウント名/local/rbenv/versions/2.0.0-p594/lib/ruby/2.0.0')
$LOAD_PATH.push('/home/アカウント名/local/rbenv/versions/2.0.0-p594/lib/ruby/site_ruby/2.0.0')
$LOAD_PATH.push('/home/アカウント名/local/rbenv/versions/2.0.0-p594/lib/ruby/gems/2.0.0')
$LOAD_PATH.push('/home/アカウント名/local/rbenv/versions/2.0.0-p594/lib/ruby')
$LOAD_PATH.push('/home/アカウント名/local/rbenv/versions/2.0.0-p594/lib')

#PATHにさくらアカウントのbinを追加
ENV['PATH'] += ':/home/アカウント名/bin'
ENV['PATH'] += ':/home/アカウント名/local/bin'

#GEM_HOME指定
ENV['GEM_HOME'] ||= '/home/アカウント名/local/rbenv/versions/2.0.0-p594/lib/ruby/gems/2.0.0'
======

おなじみ.htaccessを書きます。
$cd ~/www/pjmanage/redmine/public
$cp htaccess.fcgi.example .htaccess
===.htaccess===
関連 コメントアウト
関連 コメントアウト
Options +FollowSymLinks +ExecCGI コメントアウト
関連 コメントアウト
関連 コメントアウト
RewriteRulesの前にRewriteBase / を追記
======
だから、たぶんこんな感じになると思う。
===.htaccess(Example)===
RewriteEngine On
RewriteBase /
RewriteRule ^$ index.html [QSA]
RewriteRule ^([^.]+)$ $1.html [QSA]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ dispatch.cgi [QSA,L]
======

次、.dispatch.fcgiを、dispatch.cgiに書き換えます。
$cp dispatch.fcgi.example dispatch.cgi
$vim dispatch.cgi
最終行付近のFastCGIと、実行パスを書き換えます。
===dispatch.cgi===
#!/home/アカウント名/local/rbenv/versions/2.0.0-p594/bin/ruby
Rack::Handler::CGIに書き換え
======

これで、バーチャルドメインを~/www/pjmanage/redmine/publicに張れば、完成です。
とりあえず、~/www/pjmanageに.htaccessで、対象ドメインでアクセスしてないと、はじくおまじないとか入れておくと捗ると思います。

5)起動
Webrickでやる場合
$bundle exec rails server

CGIモードでやる場合
コマンドはたたかず、バーチャルドメインをたたきます。

運用上で注意しなきゃならないこと

1)CGIモードはとてもとても重い
RoRのCGIモードは、さくらで動かすとFastCGIなんてガン無視で動きますので、大変重たいです。レスポンスに10秒とかもうなめてんのかと。

2)さくらではDeamon禁止
さくらは、規約でDeamonなどの常駐プログラムが禁止されています。つまり、FastCGIはおろか、Webrickでさえ怒られます(そもそもWebrickはテスト環境での動作のみ推奨されていて、productionで使うものでもない)
なんで、必要なときだけWebPACKをたたく運用も考えましたが、なんかやっぱり面倒だし、びみょーだなと。

結論:さくらでインストールはできるけど、運用はとても実用性皆無。

*あと、ここで書いた方法だとSUBURIに対応してません。Referencesを参考にあれこれやると対応できる気がする。

総括

とりあえず、インストールはできたものの、使えたものじゃありません。
適当なPaaSサービスにでもインストールしてみるかなあ…
あと、ブログのデザインよくないね。Syntaxhilightとかももっとお手軽にやりたいし、WordPressに移行しようかなあ…

References:

メモ帳;さくらレンタルサーバーにRedmine2.3を入れる
http://xelalko.blogspot.jp/2013/10/redmine23.html

0 件のコメント:

コメントを投稿