LoginSignup
8
10

More than 5 years have passed since last update.

Nginx & Passenger & Redmine(もしくはRails系導入)

Last updated at Posted at 2015-10-22

今回の目的

  • Nginx & Passenger & Redmineでリバースプロキシー建てなくても良い状態にする。
  • 複数のRailsアプリケーションをわざわざポートを開かずに実行できるようにする。
  • Thinとかも使っていろいろ試してみたものの、すでに組み込みになる方が再起動時の安心感を持つことができるようにする。
  • 今後自分が同じことをするときにサイトを行ったり来たりしないためのログとして残す。
  • 今後自分が一切困らないように細かく残す。(長いです)

実践

passengerやruby2系のレポジトリを追加する

sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 561F9B9CAC40B2F7
sudo apt-get install -y apt-transport-https ca-certificates
sudo sh -c 'echo deb https://oss-binaries.phusionpassenger.com/apt/passenger trusty main > /etc/apt/sources.list.d/passenger.list'
sudo add-apt-repository -y ppa:brightbox/ruby-ng

レポジトリを追加したらupdateとupgrade

必要ならばrebootかけましょう。
sudo apt-get update
sudo apt-get upgrade
sudo reboot

ビルド系に必要なもののインストール

sudo apt-get install build-essential make
今後必要ななることが多いと思いますので
makeが入ってないとbigdecimalのgem updateで引っかかります

gem install railsでのnokogiriエラー対策

sudo apt-get install zlib1g-dev libxslt1-dev

Ruby2.1とruby2.1-devのインストール

sudo apt-get install ruby2.1 ruby2.1-dev
sudo apt-get install ruby2.1 ruby2.1-dev
正しくは半角スペースです。

使用するSQLサーバの選定

今回はMySQL5.5を使用。最新が良いならばmysql-server-5.6を指定する
以下のコマンドの場合(2015/10/22現在)5.5がインストールされる。
MySQLのインストール方法は省略といいつつも、rootパスワード設定するだけです。
sudo apt-get install mysql-server libmysqlclient-dev

Passengerのインストール

Nginxは以下のコマンドで自動インストールされる。
sudo apt-get install nginx-extras passenger

Nginx設定

sudo nano /etc/nginx/nginx.conf
本題の63行目の>passenger_rootとpassenger_rubyをアンコメントする。
55行目近辺のGzip Settingsあたりはお好みで
1.PNG

補足

今回はruby2.1なのでpassenger_rubyは、/usr/bin/ruby2.1を指定する。
passenger_rootは、passenger-config --rootで確認可能
passenger_rubyを指定しない場合、Nginxで明示的に記載しないと動かない可能性があります。
この2箇所は、デフォルト値のような設定だと考えていただければ良いと思います。
何故ならNginxのconfでも設定可能だからだと推測しています。

Nginx + Passengerが正常動作しているか確認

sudo service nginx restart
sudo passenger-config validate-install
設定が正しく投入されていれば :heavy_check_mark: が2箇所表示される
2.jpg

最後にプロセスが動作しているか確認

sudo passenger-memory-stats
Nginx processesPassenger processesが表示されていれば問題なし。
3.jpg
今回はNginxが対象なのでApache processesは無視します
今後チューニングしていく楽しみが増えそうな項目がたくさんありますね

最後にupdateとupgrade

sudo apt-get update
sudo apt-get upgrade
こちらを参照ください
これをしないと、Nginx系のPassengerが有効にならない。

Ruby On Railsのセットアップ

sudo gem update
sudo gem update --system
sudo gem install rails
時間がかかるのでお茶でも飲んでのんびりしてください

Redmineのインストール

今回のターゲットディレクトのは/home/自分とする
ここからは、Redmineのインストールより引用続きです。

homeディレクトリなので一部sudo不要ですのでご注意

本家Redmineダウンロードサイト
最新版をwgetするもよしgitするもよしで。

2015/10/22現在の場合
wget http://www.redmine.org/releases/redmine-3.1.1.tar.gz
tar xzvf redmine-3.1.1.tar.gz
rm redmine-3.1.1.tar.gz
mv redmine-3.1.1 redmine

RedmineのガントチャートをPNGで出力したい場合のパッケージ

sudo apt-get install imagemagick libmagickwand-dev ruby-rmagick

ここからはMySQLの場合…

SQLiteのほうが手軽ですが、今回はWordPressも同居させたいのでMySQLを選択しました。
mysql -u root -pでMySQLにログインする。
パスワードはMySQLインストール時に設定したものを入力する。

create database redmine character set utf8;
create user 'redmine'@'localhost' identified by 'my_password';
grant all privileges on redmine.* to 'redmine'@'localhost';

my_passwordは自分でパスワードを設定してください。
私はよくこのサイトで【強力】でお世話になっています。

Redmineの名前は別に識別しやすい名前にすれば良いでしょう。
ただし、database.ymlを正しく変更しましょう。ハマリポイント

念のため本当にredmineアカウントが登録されたか確認する。
SELECT host,user FROM mysql.user;
キャプチャ.PNG
Redmineだけ別サーバという特殊例の場合は、localhostを適時置き換えると良いと思います。

database.ymlの設定

config/database.example.yml をコピーして config/database.yml
cp database.yml.example database.yml
nano database.yml
ここでは、production:を書き換えてください。テスト環境の場合はtest:を書き換えてください。
4.PNG
username: redmine ←create userの時のユーザー名(画像は変更前)
password: "my_password" ←create userの時のパスワード(画像は変更前)

gemのインストール

設定が終わり次第、1階層戻り必要なrails標準以外のgemをインストールします。
cd ../
念のため/home/hogehoge/redmineかpwdで確認すると尚良。
Redmineの階層に戻ったらbundle instalをしますが、development環境、test環境、postgresql、sqliteのgemは使用しないのでwithoutします。
bundle install --without development test postgresql sqlite3

MariaDBの場合以下でライブラリが揃い通ります。
sudo apt-get install libmariadbclient-dev

初期データの投入

rakeでMySQLにテーブル生成とRAILS_ENVでアカウントとデフォルトデータを投入します。
rake generate_secret_token
RAILS_ENV=production rake db:migrate
RAILS_ENV=production rake redmine:load_default_data
Select languageではお好みに応じて設定してください。私は基本的に日本語を読みたいのでjaにしました。

権限設定

tmpフォルダがなければ作りましょう。あれば各種にNginxからアクセスできるように権限を与えてください。
mkdir tmp public/plugin_assets←たぶんあるよって言われる
sudo chown -R www-data:www-data files log tmp public/plugin_assets
sudo chmod -R 755 files log tmp public/plugin_assets

Redmine系ログや他の設定

ログ

Redmineのログは標準でRailsに準拠しているため、以外に大量に吐かれます。
必要に応じてログレベルの調整をしてください。
以下は、10Mごとに3ファイルERRORログを保管するという設定

config/additional_environment.rb
config.logger = Logger.new(Rails.root.join("log",Rails.env + "-ERROR.log"), 3, 10 * 1024 * 1024)
config.logger.level = Logger::ERROR

RMagickやconvertコマンドが有効にならない

config/configuration.yml
#73行目
imagemagick_convert_command: "/usr/bin/convert"

この設定で、説明通りインストールしていれば :heavy_check_mark: がつきます。
setting.PNG

メール送信の設定

SendGridを使用する場合

config/configuration.yml
#27行目~35行目
#ymlの注意はご存知かと思いますが、インデントに注意してください
#までを消すという考えで編集すれば問題ありません。
#587は推奨ポートです
  email_delivery:
    delivery_method: :smtp
    smtp_settings:
      address: "smtp.sendgrid.net"
      port: 587
      authentication: :login
      domain: 'domain'
      user_name: 'user_name'
      password: 'password'

SengGridのSMTP接続情報

Nginxのconf設定

Debian系は設定ファイルの場所が解りやすく個人的に好きです。というと反感を喰らいそうなので先に言います。ゴメンナサイ :raised_hands:
今回はわかりやすくredmineというsites用ファイルを作成します。
sudo nano /etc/nginx/sites-available/redmine

/etc/nginx/sites-available
server {
  listen  80; #ポート指定。ここで8080とか別ポートにするのもいいかもしれません。
  server_name hoge.hogehoge.com; #Redmineを動かすサーバのドメインを入力します。
  root /home/hoge/redmine/public; #redmineのpublicまでのフルパスを入力します。
  passenger_enabled on; #passengerをONにする。デフォルトではOFFになっています。
  client_max_body_size 10M; #Redmineのファイルのアップロード最大サイズを10Mにします。
  #passenger_ruby /usr/bin/ruby2.1; #Nginx.confで設定していない場合はここで設定します。
}

sites-enabled向けてシンボリックリンクを張り、Nginxをreloadします。
sudo ln -s /etc/nginx/sites-available/redmine /etc/nginx/sites-enabled
sudo service nginx reload

今回の教訓

gem install passengerとかpassenger-install-nginx-moduleとか…
古くはないんだろうけど、この近辺で痛手を負いました。
なぜ動かないのかなぁと考え再度モジュールチェックで以下のようなエラー発見。
どうやらgemで二重背負していたみたい?
とりあえずいろいろありましたが

5.jpg

6.jpg

7.jpg

便利そうなプラグイン

Advanced roadmap & milestones plugin
Redmine Absolute Dates plugin
Redmine Enter Cancel plugin
Redmine Issues Summary Graph plugin

何かあれば

コメントください。励みとか妬みとか。

8
10
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
8
10