#今回の目的
- 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あたりはお好みで
###補足
今回は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
設定が正しく投入されていれば が2箇所表示される
##最後にプロセスが動作しているか確認
sudo passenger-memory-stats
**Nginx processes
とPassenger processes
**が表示されていれば問題なし。
今回は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;
Redmineだけ別サーバという特殊例の場合は、localhost
を適時置き換えると良いと思います。
##database.ymlの設定
config/database.example.yml をコピーして config/database.yml
cp database.yml.example database.yml
nano database.yml
ここでは、**production:**を書き換えてください。テスト環境の場合はtest:を書き換えてください。
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.logger = Logger.new(Rails.root.join("log",Rails.env + "-ERROR.log"), 3, 10 * 1024 * 1024)
config.logger.level = Logger::ERROR
##RMagickやconvertコマンドが有効にならない
#73行目
imagemagick_convert_command: "/usr/bin/convert"
##メール送信の設定
SendGridを使用する場合
#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'
##Nginxのconf設定
Debian系は設定ファイルの場所が解りやすく個人的に好きです。というと反感を喰らいそうなので先に言います。ゴメンナサイ
今回はわかりやすくredmineというsites用ファイルを作成します。
sudo nano /etc/nginx/sites-available/redmine
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で二重背負していたみたい?
とりあえずいろいろありましたが
##便利そうなプラグイン
Advanced roadmap & milestones plugin
Redmine Absolute Dates plugin
Redmine Enter Cancel plugin
Redmine Issues Summary Graph plugin
#何かあれば
コメントください。励みとか妬みとか。