2015年04月19日

Ubuntu14.10+Redmine3.0環境の作成過程

今あるRedmineは自分の細かいプロジェクトを運用している、でも新しいプラグインとか試してみたいし・・・という目的のため、virtualboxで新しいubuntu環境を作ってそこにRedmine導入してみた。
久しぶりだったんで思いの外苦戦したんで、その過程をメモして未来の自分にプレゼントしておこう。




まずはOSインストール

現在のUbuntu Serverの最新は14.10らしいんで、torrentからサクっとダウンロードする。

初回インストールの際にある程度のパッケージを導入してくれるらしいんで、
  • LAMP Server : apache2,mysql,phpのセット
  • OpenSSH Server : sshログイン
  • Samba file Server : windowsとのファイル共有
ここらへんを一括でインストールしとく
mysqlのrootのパスワードは空文字。こっちのがあとでめんどくさくないので。

便利ツール・ファイルを次々コピー

puttyでいつものようにログインしてzshでいつものように操作できないとストレスがマッハなので
sambaで適当なフォルダ(/var/shareあたり)を共有、id_rsa.pubと.zshrcをコピーし、$HOMEのしかるべきところに配置しておく。
そのほか
sudo aptitude install zsh git subversion ruby
sudo gem install bundler
こいつらを実行し、定番ツールを抑えておく。

いよいよredmineのインストール

これまではubuntuでサーバ作る場合に必ずやる作業なんだけど、これからがredmineに特化した作業だ。
まずは最新のredmineのダウンロード。


あれ?今見たら3.0.1が最新じゃん。まあいいか。
そしてここからテンポよくDBのコンフィグをコピー
cp config/database.yml.sample config/database.yml
コンフィグの中身はDBがmysql、ユーザroot、パスワードなしなので、現状のmysqlの状況と同じ
あとはmysqlでredmineデータベースを作成するだけで事足りる。
そして必要なgemをインストールする

bundle install --without development test rmagick --path vendor/bundle

が、失敗。

ヘッダ不足祭り

何かjson1.8.2がインストールできないらしい。エラーコード見てみると

mkmf.rb can't find header files for ruby at /usr/lib/ruby/include/ruby.h

とか書かれてる。何のことかわからないからぐぐってみたら、rubyのヘッダが足りないらしい。
sudo aptitude install ruby-dev ruby2.1-dev

これで対処できるとか。
んまあひとまずググる先生の言うとおりインストールするじゃん?最初突破できるじゃん?でも次からまたbundle install失敗するじゃん?
大体全部ヘッダが足りないんだよね。これrubyインストールするときデフォルトで入れてもらうとかできないの?
足りなかったのはこいつら。
  • build-essential : ネイティブ拡張をビルドする時何かにつけ必要
  • zlib1g-dev : nokogiri -v 1.6.6.3(htmlスクレイパー)をインストールづるとき必要
  • libmysqld-dev : mysql -v 0.3.18のインストールに必要。

ここまでやって、やっとのことでbundle install成功!
あとはredmineのインストール説明のとおりに実行して問題なかった。

http://redmine.jp/guide/RedmineInstall/

create database redmine character set utf8;
bundle exec rake generate_secret_token
bundle exec rake db:migrate RAILS_ENV=production
bundle exec rake redmine:load_default_data RAILS_ENV=production

サイト見えない祭り

さて、ここまで難関を突破すると残りはweblicで動作確認だ
bundle exec rails s -e production
外部からアクセスすると、見えません

なんでだよー。ひとまず2つの方法を試す。

  • ローカルでwget localhost:3000実行 → index.htmlが落とせる
  • 外部からポート80のトップページ見る → ubuntu apache2のデフォルト画面が見える

これらから、何かファイアウォールみたいなのが標準で有効になっているのがわかる。
どうにかしてファイアウォール突破しようと試行錯誤して1時間(諦め早!)
weblicとかどうでもいいから早々にpassenger導入してポート80から見えるようにする方向性に切り替えていくことにした。

passengerとapache2のインストールはいつもやってるやつなんで特に迷うことはない。

sudo gem install passenger
sudo passenger-install-apache2-module
passenger-install-apache2-moduleではこんなこと言われるので、言われるままにインストールすればOK

 * To install Curl development headers with SSL support:
   Please run apt-get install libcurl4-openssl-dev or libcurl4-gnutls-dev, whichever you prefer.

 * To install OpenSSL development headers:
   Please install it with apt-get install libssl-dev

 * To install Apache 2 development headers:
   Please install it with apt-get install apache2-threaded-dev

 * To install Apache Portable Runtime (APR) development headers:
   Please install it with apt-get install libapr1-dev

 * To install Apache Portable Runtime Utility (APU) development headers:
   Please install it with apt-get install libaprutil1-dev

→ sudo aptitude install libcurl4-openssl-dev libssl-dev apache2-threaded-dev libapr1-dev libaprutil1-dev

問題は次。最後にapacheのhttpd.confにこの行を足せって言われるんだけど、

Please edit your Apache configuration file, and add these lines:

   LoadModule passenger_module /var/lib/gems/2.1.0/gems/passenger-5.0.6/buildout/apache2/mod_passenger.so
   <IfModule mod_passenger.c>
     PassengerRoot /var/lib/gems/2.1.0/gems/passenger-5.0.6
     PassengerDefaultRuby /usr/bin/ruby2.1
   </IfModule>
ubuntuってsites-availableとかmods-availableとかに色々分散して書き足すじゃん。どこに足せばいいの?
よくわからないから/etc/apache2/sites-enable/000-defaultにこんなの足した

PassengerDefaultUser www-data
LoadModule passenger_module /var/lib/gems/2.1.0/gems/passenger-5.0.6/buildout/apache2/mod_passenger.so
<IfModule mod_passenger.c>
  PassengerRoot /var/lib/gems/2.1.0/gems/passenger-5.0.6
  PassengerDefaultRuby /usr/bin/ruby2.1
  RailsBaseURI /redmine
  PassengerResolveSymlinksInDocumentRoot on
</IfModule>

そしたら動いたは動いたんだけど、なんか違うよな・・・・

時間を空けて色々調べた結果、mods-availableにこんな感じの物をかけばいいらしい

[/etc/apache2/mods-available/rails.load]に↓の内容を書く
PassengerDefaultUser www-data
LoadModule passenger_module /var/lib/gems/2.1.0/gems/passenger-5.0.6/buildout/apache2/mod_passenger.so

[/etc/apache2/mods-available/rails.conf]に↓の内容を書く
PassengerRoot /var/lib/gems/2.1.0/gems/passenger-5.0.6
PassengerDefaultRuby /usr/bin/ruby2.1
RailsBaseURI /redmine
PassengerResolveSymlinksInDocumentRoot on

これで、sudo a2enmod railsすれば反映!よかった!
posted by LoyalTouch at 21:38| Comment(0) | TrackBack(0) | インフラ | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

この記事へのトラックバックURL
http://blog.seesaa.jp/tb/417565082

この記事へのトラックバック