新しい小さなベンチャー、必要に応じてPOCを開始しています。Railsアプリケーションを無料でどこかにデプロイします。Herokuがあることがわかりました。別のオプションはありますか?
これは私がこのテーマで見つけたとても良い投稿です
http://blog.sudobits.com/2013/02/15/heroku-alternatives-for-deploying-Rails-applications
私はそこでオプションを1つずつ検討しましたが、私の考えでは、OpenShiftは、少なくともPOC\Prototypeの開発と作成の最初の段階では、中小規模のWebサイトに最適なオプションです。
なぜそれが良いのですか?
デメリットはありますか?
このドキュメントの下のGemfileセクション https://www.openshift.com/blogs/converting-an-existing-Rails-app-to-run-on-openshift でこの問題を解決できる可能性があります...後で試します
既存のアプリケーションをOpenshiftにデプロイするために必要な手順は何ですか?
多くの場所で、作成とデプロイの方法についての説明を見つけました新しいアプリケーションですが、既存のアプリケーションをOpenShiftに配置する方法を理解するのは少し困難でした
これが私が説明したい理由です
前提条件-アプリケーションはすでにgitで制御されています-そのパスは/ home/dev/MyAppです-現在/ home/devの下にいます
rhc domain-create <domain name>
実行してOpenShiftでアプリケーションを作成します
rhc app-create -a MyApp -t Ruby-1.9 --no-git
-aはOpenShiftでアプリケーション名を設定します-あなたのRailsアプリケーション名とは完全に異なるものにすることができます
-tはアプリケーションタイプを設定します-今のところRuby 1.9がサポートされている最も高いバージョンです)
--no-gitはgitを作成しないように指示します-すでに取得しているため
DBを設定する
呼び出して、OpenShiftアプリケーションに適切なDBカートリッジをインストールします
rhc cartridge add <DB cartridge type> -a <Application Name>
例えば :
rhc cartridge add mysql-5.1 -a MyApp
MongoDBとPostgreSQLもサポートします
(こちらをご覧ください https://www.openshift.com/developers/technologies )
OpenShiftデータベースに関連するようにdatabase.ymlを変更します。OpenShiftが環境変数として多くの設定を取得し、必要な場所で簡単に使用できるため、これは非常に簡単です。次に例を示します。
production: adapter: mysql encoding: utf8 database: <%=ENV['OPENSHIFT_APP_NAME']%> pool: 5 Host: <%=ENV['OPENSHIFT_MYSQL_DB_Host']%> port: <%=ENV['OPENSHIFT_MYSQL_DB_PORT']%> username: <%=ENV['OPENSHIFT_MYSQL_DB_USERNAME']%> password: <%=ENV['OPENSHIFT_MYSQL_DB_PASSWORD']%> socket: <%=ENV['OPENSHIFT_MYSQL_DB_SOCKET']%>
すべてがローカルで機能していることを確認してください
Git-OpenShiftリポジトリをリモートリポジトリの1つとして追加し、それをプッシュする
rhc app-show <application name>
-アプリケーションに関するすべての情報が表示されます-Git URLをコピーしますgit remote add openshift <OpenShift repo URL>
マージすることでOpenShiftが追加するものは何でも
実行:git merge openshift/master -s recursive -X ours
変更をコミットします:git commit -am 'adding OpenShift files
git Push openshift
以上で、アプリケーションをOpenShiftにデプロイできるようになりました
展開したWebサイトを開くにはどうすればよいですか?
rhc app-show <application name>
コマンドを使用すると、WebサイトのURLを確認できます
通常はhttp://<application name>-<domain name>.rhcloud.com
です
自分のドメインに変更するのはとても簡単です
rhc alias add <app name> <your domain>
を実行するだけですhttp://<application name>-<domain name>.rhcloud.com
を指すようにCNAMEの「www」定義を編集しますOpenShiftマシンに接続するにはどうすればよいですか?
繰り返しますが、rhc app-show <application name>
を使用すると、SSHアドレスを確認できます。接続するには、ssh <SSH address>
を実行するだけです
デプロイ時に移行とシードを自動的に実行するにはどうすればよいですか?
OpenShiftのすばらしい点の1つは、デプロイメントのさまざまな段階でトリガーされるカスタムアクション(アクションフック)を追加できることです。
詳しくはこちら https://www.openshift.com/developers/deploying-and-building-applications
ここでは、デプロイアクションフックについてのみ説明します
deploy
という名前のファイルを作成しますchmod +x deploy
それにいくつかのコードを入れます
例えば:
#!/ bin/bash
エコー "展開の開始"
pushd $ {OPENSHIFT_REPO_DIR}>/dev/null
echo "ディレクトリを$ {OPENSHIFT_REPO_DIR} publicに変更します"
cd $ {OPENSHIFT_REPO_DIR}
cDパブリック
echo "$ {OPENSHIFT_DATA_DIR} uploadsという名前のアップロードへのソフトリンクを作成しています"
ln -s $ {OPENSHIFT_DATA_DIR} uploads uploads
echo "バンドルexec rake db:migrate Rails_ENV = productionを実行しています"
バンドルexec rake db:migrate Rails_ENV = "production"
echo "バンドルexec rake db:seed Rails_ENV = productionを実行しています"
バンドルexec rake db:seed Rails_ENV = "production"
popd>/dev/null
git add deploy
(もちろんフォルダー内から)ファイルをアップロードしてOpenShiftで保存できるようにCarrierwaveを統合するにはどうすればよいですか?
2点あります
保存パスの設定:
Initializers\carrierwave.rbファイルを次のように設定します
CarrierWave.configure do |config|
if Rails.env.production?
config.storage = :file
config.enable_processing = true
config.root = ENV['OPENSHIFT_DATA_DIR']
config.cache_dir = config.root + 'uploads'
end
end
アップローダーをデフォルトのままにしておく、つまりstorage :file
そして
def store_dir
「uploads /#{model.class.to_s.underscore} /#{linked_as} /#{model.id}」
終わり
$ OPENSHIFT_DATA_DIRフォルダーを使用すると、ファイルを書き込むことができ、そこにとどまることが確認されます
ルーティングがファイルを見つけることを確認する:
そのトリックを思い付くのにしばらく時間がかかりました(多すぎない、ほんの数時間)
Railsルーティングは、アプリケーションフォルダーの下にあるフォルダーのみを関連付ける方法を知っています-soo、OpenShiftマシンでは、$ {OPENSHIFT_REPO_DIR} \の下でアップロードされたファイルフォルダー(この場合はuploads
)を探しますパブリックフォルダー、ここでdeployファイルに挿入したソフトリンクが便利になります-システムをだまして、アプリケーションフォルダーの下にないフォルダーからそれらのファイルを取得するだけです
これらの問題やデプロイの方法などに関する投稿がたくさんあることは知っていますが、それに何らかの順序を付けたかっただけです。
もちろん、すべての手順を文書化したわけではないので、私が書いた内容には間違いや不正確な点があるかもしれませんが、覚えていることからだけでも、細部に誤りがある場合は遠慮なく訂正してください。
最高のソースの1つはOpenShiftのドキュメントです
私はそれらが人々を助け、あなたの時間とお金を節約することを願っています
楽しい