まず、それが必要な理由と理由を決めましょう。 Redmineが何であるか他に誰も知らない場合 、これはプロジェクト管理とバグ追跡(バグトラッカー)用のWebアプリケーションです。 これは多くのプラグインを備えたかなり人気のあるオープンソースアプリケーションです。
Herokuは、Webアプリケーションホスティングプラットフォームです。 その際立った特徴は、使いやすさ、最小限の構成、必要なサーバーリソースをすばやく変更する機能です(たとえば、habraeffectが予想される場合は、必要な電力をすばやく増やすことができます)。 この記事で興味があるのは、アプリケーションを無料でホストできることです。
なぜこの記事が必要なのですか? Herokuプラットフォームには、VPSホスティングよりも多くの利点がありますが、制限もあります。 この記事では、インストールの問題を明らかにし、平均的な経験のあるユーザーを対象にしています。
Redmineの現在のトランクバージョンをインストールします。 レール2.3.14とruby 1.8.7、1.9.2、1.9.3のいずれかのバージョンが必要です。
今のところあります。
- Gitがインストールされました
- 適切なバージョンのRubyを使用したRVM
- Redmineがすでに動作し、SSHアクセスが可能なVPS
- Herokuアカウント
- Amazon S3アカウント
この例では、Rubyの1.9.2-p180バージョンを使用します。 最初に、新しいgemsetを作成します。
rvm use ruby-1.9.2-p180
rvm gemset create 'redmineheroku'
rvm use ruby-1.9.2-p180@redmineheroku
Redmineの最新バージョンを取得する必要があります。gitリポジトリから取得します。
mkdir redmine_heroku
cd redmine_heroku
git init
git remote add redmine git://github.com/edavis10/redmine.git
git fetch redmine
git merge redmine/master
次に、データベースに接続するための設定を変更する必要があります。 アプリケーションをローカルで実行しませんが、すでにMySqlを使用している既存のRedmineから情報をダウンロードする必要があるため、使用します。 例「/config/database.yml」:
production: adapter: mysql database: redmineheroku host: localhost username: db_user password: db_password encoding: utf8 development: adapter: mysql database: redmineheroku host: localhost username: db_user password: db_password encoding: utf8
現時点では、Redmineのトランクバージョンはrails gemバージョン2.3.14を使用しているため、インストールします。 また、gemをインストールしてデータベースに接続し、空のデータベースを作成します。
gem install rails --version 2.3.14
gem install mysql
rake db:create RAILS_ENV=production
なぜなら 既存のベースがすでにあるので、それをインポートする必要があります。 これを行うには、mysqlクライアントをインストールし、最後のバックアップから取得されたデータベースダンプをインポートします。
sudo apt-get install mysql-client-core-5.1
mysql -udb_user -pdb_password -h127.0.0.1 redmineheroku < ~/mysqldump-file-path.sql
mysqlに短いフラグ(-u、-p、および-h)を使用する場合、次のパラメーターはスペースなしで記述する必要があるという事実に注意を喚起したいと思います。
次に、新しいファイル「/config/initializers/session_store.rb」を作成するsession_keyコマンドを作成します
rake generate_session_store
なぜなら 以前のインストールのsession_keyがすでにある場合は、ファイル「/config/initializers/session_store.rb」で新しく作成されたキーに置き換えます。 これが新規インストールの場合は、何も触れないでください。
Redmineプラグインを使用した場合は、今度はそれらのデータベースもインストールおよび更新します。 これらはありませんので、このステップはスキップします。
RAILS_ENV=production rake db:migrate:upgrade_plugin_migrations
データベースを更新します。
RAILS_ENV=production rake db:migrate
これが新規インストールの場合、コマンドで標準情報をロードします
RAILS_ENV=production rake redmine:load_default_data
フォルダーが存在しない場合は作成し、.gitignoreから「/config/initializers/session_store.rb」を削除します
mkdir tmp public/plugin_assets
sed -i '/\/config\/initializers\/session_store.rb/d' .gitignore
主なステップは終わりました。 すべての変更をgitに追加します。
git add .
git commit -m "Initial configuration"
プラグインをインストールする
RedmineがHerokuで完全に動作しないため、プラグインをインストールする必要があります。 giternalを使用してインストールします。
gem install giternal
新しいファイル「config / giternal.yml」を作成します
redmine_heroku: path: vendor/plugins repo: http://github.com/edavis10/redmine_heroku.git redmine_s3: path: vendor/plugins repo: http://github.com/tigrish/redmine_s3.git
プラグインをインストールしましょう。
giternal update
giternal freeze
次に、redmine_s3プラグインを設定する必要があります。 このプラグインを使用すると、RedmineダウンロードファイルをAmazon S3に保存できます。 したがって、まだAmazonにS3アカウントを持っていない場合は、それを開始する時間です。
ファイル「config / s3.yml」を作成します
production: access_key_id: YOUR_S3_ACCESS_KEY_ID secret_access_key: YOUR_S3_SECRET_ACCESS_KEY bucket: YOUR_S3_REDMINE_PRODUCTION_BUCKET cname_bucket: false development: access_key_id: YOUR_S3_ACCESS_KEY_ID secret_access_key: YOUR_S3_SECRET_ACCESS_KEY bucket: YOUR_S3_REDMINE_DEVELOPMENT_BUCKET cname_bucket: false
.gitignoreから「/ public / plugin_assets」を削除し、変更を構成します。
sed -i '/\/public\/plugin_assets/d' .gitignore
rake heroku:setup
ファイル "/config/initializers/session_store.rb"のsession_keyを再度変更する必要があります。 生成時に変数に置き換えられました。 理想的な世界では、リポジトリにパスワードを保存するべきではありませんが、この記事を簡単にするためにそれを行います。
これで、もう一度停止して変更を保存できます。
git add .
git commit -m "Configure plugins"
ファイルを転送する
なぜなら 既存のインストールを転送します。すべてのダウンロードファイルも転送する必要があります。 これを行うには、VPSからSSHを介してすべての現在のファイルをコピーし、Amazon S3にアップロードします。 S3にコピーすることはできません。なぜなら、 ファイル構造が変更されます。
scp user@123.456.789.000:~/vps_redmine/files/* ~/redmine_heroku/files/
RAILS_ENV=production rake redmine_s3:files_to_s3
サーバーを起動します
gem herokuをインストールします。herokuサーバーでアプリケーションを作成および構成する必要があります。
gem install heroku
「redmine」という新しいherokuアプリケーションを作成します。 名前は一意である必要があるため、存在しない名前に置き換える必要があります。
heroku create redmine
git push heroku master
最後のステップは、ローカルデータベースをherokuサーバーにアップロードすることです。 このコマンドにはジェムタップが必要なので、事前にインストールしてください。
gem install taps
heroku db:push
アプリケーションは、redmine.heroku.comで入手できるはずです。
追加情報
電子メール通知を構成する
たとえば、Google Mailの受信トレイを使用します。 メール設定で「/config/configuration.yml」を作成します。
production: email_delivery: delivery_method: :smtp smtp_settings: tls: true enable_starttls_auto: true address: "smtp.gmail.com" port: '587' domain: "smtp.gmail.com" authentication: :plain user_name: "email_address@gmail.com" password: "email_password"
このファイルをgitignoreから削除し、変更を保存します
sed -i '/\/config\/configuration.yml/d' .gitignore
git add .
git commit -m "email config"
さて、最後に、サーバー上のバージョンを更新します
git push heroku master
セキュリティ設定
前述のように、パスワードをリポジトリに保存することはお勧めできません。 出力として、すべての秘密データをグローバル変数に取り出して、コマンドでherokuに追加できます
config:add key=val [...] # add one or more config vars
唯一の欠点は、場合によってはコードを変更する必要があることです。 詳細はこちらをご覧ください。
性能
無料の料金プランでは、アプリケーションの優先度が低く、リクエストを受信しない場合、最初の次のリクエストで完全に停止および開始します(約10秒かかるため、非常に顕著です)。 複数のユーザーでパフォーマンスをテストするために、 1つのサービスの無料バージョンを使用しました。 正直に言うと、結果はかなり楽観的であり、その正確性はあまり信じていません。 スケジュールを信じて、一度に50人のユーザーがいる場合、ユーザーがサーバーに近い場合、遅延は3秒以内になります。 アプリケーションがインストールされているサーバーはシアトルにあります。 しかし、アプリケーションは非常に迅速に動作し、安価なVPSよりもはるかに高速であると言わなければなりません。
結論として
RedmineアプリをVPSからHerokuに移行した結果、コストと生産性が大幅に向上しました。 Amazon S3の料金を支払う必要があるため、これは理論的には無料のソリューションとは言えませんが、これらのコストはペニーと呼ぶことができます。
この記事はblog.firsthand.ca/2010/10/installing-redmine-on-heroku-with-s3.htmlに記述されています