0

Rails、Apache、Passenger の開発環境のセットアップに数日を費やした結果、私の頭は混乱から爆発しそうです。

私が持っている質問は次のとおりです。

  1. 開発環境にパッセンジャーが必要ですか? 代わりに pow.cx で開発できますか? -答えは 99.99% ないと確信しています (開発にパッセンジャーを使用していません)。
  2. 展開するときは、Passenger のみを使用しますよね?つまり、展開するまで乗客には触れません。
  3. 私の開発環境は正しいですか?
  4. プロダクションデプロイメントは、Passenger と Apache VHOST を組み合わせた影響下で Rails アプリケーションを移動するだけですか?

背景(読むことをお勧めします):

Web 上のすべての情報は、物事がどのように機能するかを詳細に説明するのではなく、自分が何をしているかを既に知っている人々に説明することに関心があるようです。開発環境をセットアップし、RoR アプリケーションを正しく展開する方法など、この長い質問はご容赦ください。

過去 3 日間、私は自分の Macbook Pro に開発環境をセットアップしようとしてきましたが、これは Apache のインストールに関する Apple のばかげた制限によって破壊されません。Apache を実行し、PHP などを 5.5 に簡単にアップグレードできるように、カスタム Apache インストールを (Ruby スタックを使用して bitnami から。Server.app の使用を拒否したため) インストールしました。

私は RoR に参加しようとしていますが、これまでのところ苦労しており、あきらめる準備ができています。

サーバーが要求を一度に 1 つずつではなく同時に処理できるように、Rails アプリケーションにサービスを提供するには Apache が必要であり、Thin などのさまざまなインターフェイスが存在することを理解しています。乗客を強くお勧めします。

彼らの指示に従って Passenger をインストールし、Mac OS X のデフォルトの Apache ではなく、Bitnami パッセンジャー インストール用にコンパイルするためにいくつかのハッカーを実行しました。Apache を起動して実行するとpassenger-memory-stats、インストール ガイドから予想される結果が得られるため、パッセンジャーが実行されていることがわかります。

しかし、単純な Hello World Rails アプリケーションをデプロイしようとすると、大量の「申し訳ありません...」というメッセージが表示されるか、結果がまったく表示されず、空白のページが表示されます。

私の開発環境は正しいと確信しています。この最後のビットを除いて、すべてが機能します。開発が pow.cx サーバーで行われていることを想像できます。デプロイの準備ができたら、Rails アプリケーションをコピーし、Apache の VHOST を構成して、デプロイ可能なアプリを指すようにし、Passenger が残りを処理しますが、それは正しいですか?

Postgress.app 経由で PostgresSQL を使用しています。サーバーは正常に動作し、接続できます。

私はgem 'pg'自分のGemfileに持っています。

私はすでに読んで、次のSOの質問から考えられるすべての解決策を試しましたが、結果が得られないか、ログが空であり、控えめに言っても腹立たしいです:

以上のことから、以下を使用して、この Hello World アプリケーション (標準的な Rails サーバーで動作する) をデプロイしようとしています。

アプリケーションの呼び出し:

http://dmarket.local:8081/

仮想ホスト:

<VirtualHost *:8081>

    PassengerEnabled on

    RailsEnv production
    ErrorLog /Applications/rubystack/apache2/htdocs/helloworld/project_error.log
    CustomLog /Applications/rubystack/apache2/htdocs/helloworld/project_error.log combined

    ServerName dmarket.local:8081
    ServerAlias www.dmarket.local:8081
    DocumentRoot "/Applications/rubystack/apache2/htdocs/helloworld/public"

    PassengerPreStart http://dmarket.local:8081

    <Directory "/Applications/rubystack/apache2/htdocs/helloworld/public">

        Allow from all
        Options -MultiViews

    </Directory>

</VirtualHost>

ホストファイル:

127.0.0.1   dmarket.local
127.0.0.1   www.dmarket.local

DATABASE.YML (開発、テスト、本番で同じ):

  adapter: postgresql
  encoding: unicode
  host: 127.0.0.1
  port: 5432
  database: tsujp
  pool: 5
  username: tsujp
  password: 
4

2 に答える 2

1

開発に Passengerは必要ありません。実際、開発モードでは、apache さえ必要ありません。組み込みの Webrick サーバー ( $ rails server) を使用してアプリを実行できます。はい。Pow は良いツールです。私はいつも使用しています。

生産には、複数のオプションもあります。そのうちの 1 つが Apache+Passenger です。ただし、それらの前に Nginx を配置する必要があります (Apache は低速のクライアントをうまく処理できないため)。nginx がある場合は、apache+passenger を別のものに置き換えることができます。長い間、Unicorn (github の ruby​​ Web サーバー) を使用してきました。最近のお気に入りはプーマです。ユニコーンよりも使用するリソースは少なくなりますが、コードに対する要件が多くなります (puma はスレッド化されたサーバーであるため、スレッドセーフであることが望ましいです)。

ここで、開発と本番の不一致について説明します。デプロイ時のリスクを最小限に抑えるため、開発はできるだけ本番に似ている必要があることが知られています。したがって、私の提案は次のとおりです。どこでもユニコーンを使用します(開発と本番の両方)。本番環境でのみ nginx を前に置きます。

また、

実際にデプロイを実行するには、Capistrano を調べてください。Rails アプリをデプロイするための業界標準になりました (ただし、PHP、静的ファイルなどもデプロイできます)。

于 2013-11-06T09:29:08.367 に答える