LoginSignup
7
8

More than 5 years have passed since last update.

RedmineをApacheのproxy_pass使って公開するまで

Last updated at Posted at 2013-02-06

1. Redmineとは?

「Webベースのプロジェクト管理ソフトウェア」です。

そのテのものは、ふつうにWebサービスとして公開されてそうなもんですが、
Ruby on railsで書かれたプロダクトとして公開されています。

つまり、ダウンロードして、自分のサーバーにデプロイして使う。
ちょっと珍しいケースですね。たぶん。

MovableTypeとかWordPressもそんな感じですが、
Railsの場合は置けば完了! とはいかないので、それなりの手間が必要です。

2. 環境と仕様

今回は、このRedmineを以下の環境にインストールします。

  • さくらのVPS
  • CentOS
  • Apache

そして、Railsをapacheで公開する場合は、
Passengerという仕組みを使うことが多いのですが、

  • この間授業で使って、いまひとつしっくりこなかった
  • 他に公開しているnodeアプリケーションがproxy_pass使っているため、一貫性?

などの理由から、
localhostで起動して、それをapacheのproxy_passで公開する、
という手法を使ってみます。

そろそろ素直にnginxを使うべきだと、自分でも思います。

2. 教科書

3. インストールとトラブルシューティング

まぁともかく、Redmineをサーバー上で起動するところまで行きたい。
MySQLと繋いだり、bundle installを済ませたり。

しかし、Railsアプリの公開は、何かとトラブルが多いのでつらい。
今回もいろいろつっかかったので、それぞれの対処法をば。

CentOSのversionがいくつだったかいつも忘れる

$ cat /etc/redhat-release
CentOS release 6.2 (Final)

/etcはなんでも入ってますね。6.2でした。

rvmが/usr/local/に入ってた

過去の自分ばかやろーう! めんどくさいんじゃー!! と思いつつ再インストール。

rvm seppuku

※あんまり詳しくは書きませんが、権限系の問題で↑だけでは終わらず、地味にめんどくさいです

gem install mysql2 でこける

これもよくあるやつです。が、もう負けない!
mysql-develをインストールすることで回避できるそうです。

CentOSなので以下。

sudo yum install mysql-devel

なおdevelは、developingかなんかの略だったはず。
libxmlのインストールとかでも、このdevelでつっかかることあり。
何らかのインストール失敗時には、頭の隅に置いておきたいですね。

起動時の注意

手動起動するときに、環境変数付けるの忘れずに。
また、bundleに頼り切ったので、bundle execを使う方がいいみたい。

RAILS_ENV=production bundle exec rails server

長い。でも無事に起動できた。

4. unicornに乗ってみる

ようやく本題です。
このRedmineを、外部からアクセスできるように公開しましょう。

調べてみると、unicornというのを使うと、
デーモン化とかやってくれて、かつ速いらしい。

そんなわけで、nginxじゃないけどこれを読む。

Redmineにインストール

ただのgemらしいので、Gemfileに追加してbundle install。

cd redmine
vi Gemfile
Gemfile
gem 'rails', '3.2.11'
gem "jquery-rails", "~> 2.0.2"
gem "i18n", "~> 0.6.0"
gem "coderay", "~> 1.0.6"
gem "fastercsv", "~> 1.5.0", :platforms => [:mri_18, :mingw_18, :jruby]
gem "builder", "3.0.0"

gem "unicorn" # 追加
bundle install
bundle exec unicorn_rails

動いた。えらーでてたけど、まだ設定途中らしいので気にしない。

設定ファイル

config/unicorn.rbというファイルを書くらしい。
起動時にオプションで場所を指定するので、他の場所に書いてもいいみたい。

こんなかんじで。

config/unicorn.rb
# Minimal sample configuration file for Unicorn (not Rack) when used
# with daemonization (unicorn -D) started in your working directory.
#
# See http://unicorn.bogomips.org/Unicorn/Configurator.html for complete
# documentation.
# See also http://unicorn.bogomips.org/examples/unicorn.conf.rb for
# a more verbose configuration using more features.

listen 2007 # by default Unicorn listens on port 8080
worker_processes 2 # this should be >= nr_cpus
pid "/var/www/redmine/log/unicorn.pid"
stderr_path "/var/www/redmine/log/unicorn.log"
stdout_path "/var/www/redmine/log/unicorn.log"

ポートは拾い物をパクって2007にした。これだけは覚えとく。

起動してみよう

bundle exec unicorn_rails -D -E production -c config/unicorn.rb

-Dなくすとデーモンじゃなく起動します。

しかしながい……。ちゃんとした運用をするなら、
起動シェルスクリプトを書くのが懸命ですねーこれは。

ともかくこれで、放っておいてもlocalhost:2007でRedmineが動くようになりました。

5. apacheのproxy設定

さぁ仕上げ、apache通して外と繋ぎます。

ProxyPassの書き方は、nodeで他にもちょいちょいやってるので、
そちらをパクりながら。こんなかんじ。

httpd.conf
<VirtualHost *:80>
    ServerName "redmine.fnobi.com"
    DocumentRoot "/var/www/redmine/public"

    ProxyPass / http://localhost:2007/
    ProxyPassReverse / http://localhost:2007/

    ErrorLog /var/log/httpd/redmine-error.log
    LogLevel warn
    CustomLog /var/log/httpd/redmine-access.log combined
</VirtualHost>

そして再起動。

sudo /etc/init.d/httpd restart

ブラウザで確認、無事動きました。わーい!

6. まとめ

今回で慣れたので、Railsのアプリを公開するのもけっこう気軽にできそう。

しかしデーモン化とかやっぱり、nodeのforeverとかstart-stop-daemonとかの方が優秀だよなぁと思ったり。
(npm startみたいなのが使えないのも惜しい)

まぁともかく、身内系の方で、使いたい人は言って下さい。

7
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
8