Symfoware

Symfowareについての考察blog

FreeBSD 10.0でRedmine 2.5の環境構築(Nginx+Unicorn+PostgreSQL)

FreeBSD 10.0にRedmine 2.5が動作する環境を構築してみます。

Webサーバー:Nginx
アプリケーションサーバー:Unicorn
データベース:PostgreSQL
を使ってみます。



PostgreSQL 9.3



PostgreSQLはpkg installでインストールしました。
FreeBSD 10.0にPostgreSQL 9.3.2をインストール(pkg install使用)

手順の概略は以下の通り。

pkg installでPostgreSQLをインストール


# pkg install postgresql93-server




/etc/rc.confに「postgresql_enable="YES"」を追記。
PostgreSQLの起動を許可します。


# vi /etc/rc.conf

keymap="jp.106.kbd"
ifconfig_em0="inet 192.168.1.102 netmask 255.255.255.0"
defaultrouter="192.168.1.1"
sshd_enable="YES"
postgresql_enable="YES"

# Set dumpdev to "AUTO" to enable crash dumps, "NO" to disable
dumpdev="AUTO"




initdbを実行してデータベースの初期化を行います。


# /usr/local/etc/rc.d/postgresql initdb




PostgreSQL起動


# service postgresql start





稼働確認も兼ねて、Redmineで使用するデータベースを作成しておきます。
データベース名は「redmine」としました。


# su - pgsql
$ createdb -E UTF8 redmine




合わせて、接続用に「pgadmin」というユーザーを作成しておきました。


$ createuser --pwprompt --interactive pgadmin
Enter password for new role: [パスワードを入力]
Enter it again: [パスワードを再入力]
Shall the new role be a superuser? (y/n) y








Rubyのインストール



portsからRubyGemsをインストールしました。
RubyGemsをインストールすると、対応するRubyのバージョンが
同時にインストールされます。


# cd /usr/ports/devel/ruby-gems
# make




途中、いくつかmakeオプションを尋ねられます。
全てデフォルトのままOKしました。

357_01.png

357_02.png

357_03.png

357_04.png

357_05.png

357_06.png


makeが終わったらmake install


# make install




Rubyは1.9.3


# ruby -v
ruby 1.9.3p484 (2013-11-22 revision 43786) [amd64-freebsd10]




gemは1.8.29がインストールされました。


# gem -v
1.8.29






Redmineのインストール



こちらから最新バージョンのRedmineをダウンロードします。
http://www.redmine.org/projects/redmine/wiki/Download

ファイルはwgetで取得しました。
wgetがインストールされていない場合は、

# pkg install wget


でインストールしておきます。


Redmineの設定中、ImageMagickが必要になります。
pkg installでインストールしておきました。


# pkg install ImageMagick




以下のコマンドでbundlerをインストールしておきます。


# gem install bundler --no-rdoc --no-ri





これで準備が整ったので、Redmineのファイルを取得し、設定していきます。


# cd /usr/src/
# wget http://www.redmine.org/releases/redmine-2.5.0.tar.gz
# tar zxf redmine-2.5.0.tar.gz




今回は、/usr/local/www/redmineに配置することにしました。


# mv /usr/src/redmine-2.5.0 /usr/local/www/redmine
# cd /usr/local/www/redmine/




config/database.ymlを新規に作成します。


# vi config/database.yml




内容は以下のとおり。


production:
adapter: postgresql
database: redmine
host: localhost
username: pgadmin
password: "P@ssw0rd"
encoding: utf8




最終的にはUnicornで動作させたいので、「Gemfile.local」というファイルを作成。
「gem "unicorn"」と記載しておきます。
これで、bundle installした時にunicornをインストールしてくれるようです。


# vi Gemfile.local
gem "unicorn"




bundle installでRedmineに必要なパッケージをインストールします。



# bundle install --without development test mysql sqlite
Fetching gem metadata from https://rubygems.org/.........
Fetching additional metadata from https://rubygems.org/..
Resolving dependencies...
Installing rake (10.1.1)
Installing i18n (0.6.9)
(略)
Installing rmagick (2.13.2)
Installing unicorn (4.8.2)
Your bundle is complete!
Gems in the groups development, test, mysql and sqlite were not installed.
Use `bundle show [gemname]` to see where a bundled gem is installed.
Post-install message from rdoc:
Depending on your version of ruby, you may need to install ruby rdoc/ri data:

<= 1.8.6 : unsupported
= 1.8.7 : gem install rdoc-data; rdoc-data --install
= 1.9.1 : gem install rdoc-data; rdoc-data --install
>= 1.9.2 : nothing to do! Yay!



ちゃんとunicornがインストールされました。


後はRedmineの初期化を行います。
db:migrateで、データベースにテーブルの作成。
redmine:load_default_dataで、デフォルトのデータをロードします。


# rake generate_secret_token
# rake db:migrate RAILS_ENV=production
# rake redmine:load_default_data RAILS_ENV=production
Select language: ar, az, bg, bs, ca, cs, da, de, el, en, en-GB,
es, et, eu, fa, fi, fr, gl, he, hr, hu, id, it, ja, ko, lt, lv,
mk, mn, nl, no, pl, pt, pt-BR, ro, ru, sk, sl, sq, sr, sr-YU,
sv, th, tr, uk, vi, zh, zh-TW [en] ja
====================================
Default configuration data loaded.




ここで一旦webrickでRedmineが起動するかチェック


# ruby script/rails server webrick -e production




ブラウザで「http://[サーバーIP]:3000/」に接続し確認します。

357_07.png






Nginxのインストール



Nginxはportsからインストールしました。


# cd /usr/ports/www/nginx
# make



オプションはデフォルトのままOKしました。

357_08.png


makeが終わったらインストール実行。


# make install




「/etc/rc.conf」に「nginx_enable="yes"」を追加して、
Nginxの起動を許可します。


# vi /etc/rc.conf

keymap="jp.106.kbd"
ifconfig_em0="inet 192.168.1.102 netmask 255.255.255.0"
defaultrouter="192.168.1.1"
sshd_enable="YES"
postgresql_enable="YES"
nginx_enable="yes"

# Set dumpdev to "AUTO" to enable crash dumps, "NO" to disable
dumpdev="AUTO"




Nginxを起動してみます。


# service nginx start




ブラウザで「http://[サーバーIP]/」を表示するとこんな画面になるはずです。

357_09.png






NginxとUnicornの設定



まず、unicornを起動するための設定ファイルを作成します。


# cd /usr/local/www/redmine/
# vi config/unicorn.rb




内容はこんな感じです。


@dir = "/usr/local/www/redmine"
worker_processes 1
working_directory @dir

listen "/var/run/unicorn.sock"
pid "/var/run/unicorn.pid"

preload_app true

stdout_path File.expand_path("log/unicorn.stdout.log", @dir)
stderr_path File.expand_path("log/unicorn.stderr.log", @dir)




unicornを起動。


# unicorn_rails -c config/unicorn.rb -E production -D




こんなプロセスが起動するはずです。


# ps auxf | grep unicorn | grep -v grep
root 55796 10.0 5.1 251292 105976 - S    10:03AM 0:02.59 ruby19: unicorn
root 55798 10.0 5.1 251296 105948 - S    10:03AM 0:00.01 ruby19: unicorn




停止はプロセスをkillします。


# kill -9 `cat /var/run/unicorn.pid`





次にNginxの設定を行います。


# vi /usr/local/etc/nginx/nginx.conf




編集箇所の抜粋です。

upstreamで、unicornのunixソケットを指定。
locationではupstreamにリクエストを転送するよう指定します。


http {
    include     mime.types;
    default_type application/octet-stream;

    #log_format main '$remote_addr - $remote_user [$time_local] "$request" '
    #                 '$status $body_bytes_sent "$http_referer" '
    #                 '"$http_user_agent" "$http_x_forwarded_for"';

    #access_log logs/access.log main;

    sendfile        on;
    #tcp_nopush     on;

    #keepalive_timeout 0;
    keepalive_timeout 65;

    #gzip on;
    #ここを追加
    upstream redmine {
        server unix:/var/run/unicorn.sock;
    }

    server {
        listen     80;
        server_name localhost;
        
        #charset koi8-r;

        #access_log logs/host.access.log main;

        location / {
            #root /usr/local/www/nginx;
            #index index.html index.htm;
            # ここを追加
            if (-f $request_filename) { break; }
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header Host $http_host;
            proxy_pass http://redmine;
        }




編集が終わったら、Nginxを再起動します。


# service nginx restart




ブラウザで「http://[サーバーIP]」を表示すると、Redmineの画面が表示されます。

357_10.png






サブティレクトリで動かす



他のコンテンツも動いているから、「http://[サーバーIP]/redmine」で動かしたいという場合は、
ちょっと手を加えてやる必要があります。


まず、redmineの設定ファイルconfig.ruを編集します。


# vi /usr/local/www/redmine/config.ru




  1. # This file is used by Rack-based servers to start the application.
  2. require ::File.expand_path('../config/environment', __FILE__)
  3. # ここをコメント
  4. #run RedmineApp::Application
  5. # 以下を追記
  6. if ENV['RAILS_RELATIVE_URL_ROOT']
  7. map ENV['RAILS_RELATIVE_URL_ROOT'] do
  8.     run RedmineApp::Application
  9. end
  10. else
  11. run RedmineApp::Application
  12. end




unicorn起動時、--path [サブディレクトリパス]のオプションをつけて起動します。
この--pathで指定した値が、ENV['RAILS_RELATIVE_URL_ROOT']に設定されるようです。


# unicorn_rails -c config/unicorn.rb -E production -D --path /redmine




次にNginxの設定ファイルを編集します。

# vi /usr/local/etc/nginx/nginx.conf




locationの部分を微調整。


        location / {
            root /usr/local/www/nginx;
            index index.html index.htm;
        }


        location /redmine/ {
            if (-f $request_filename) { break; }
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header Host $http_host;
            proxy_pass http://redmine;
        }




Nginxを再起動します。


# service nginx restart




「http://[サーバーIP]」でアクセスするとNginxのデフォルト。

357_11.png


「http://[サーバーIP]/redmine」でアクセスするとRedmineの画面。

357_12.png


複数のRedmineを動かしたい場合は、各々の{redmine}/config/unicorn.rbを定義して、
unicornを複数起動。
もちろん、unixソケットは各々別のファイルを指定する。

nginxの設定ファイルには、起動したいRedmineの数分
・upstream
・location
の定義を追加する。という設定になるようです。





【参考URL】

Redmine を Nginx + Unicorn で動かす

sinatra with ruby1.9 + gems on FreeBSD

Redmineのインストール(Nginx+unicornでRedmineを動かす)

CentOS 6.3にRails実行環境を構築する(Nginx+Rails+Unicorn+PostgreSQL)

関連記事

テーマ:サーバ - ジャンル:コンピュータ

  1. 2014/03/09(日) 10:36:45|
  2. 備忘録
  3. | トラックバック:0
  4. | コメント:0
  5. | 編集
<<PythonからREST API経由でRedmineにチケットを登録する(XML,JSON使用) | ホーム | FreeBSD 10.0にPython 2.7、easy_installをインストールする(pkg install使用)>>

コメント

コメントの投稿


管理者にだけ表示を許可する

トラックバック

トラックバック URL
http://symfoware.blog68.fc2.com/tb.php/1320-9e7b4965
この記事にトラックバックする(FC2ブログユーザー)