スポンサーサイト

0

    一定期間更新がないため広告を表示しています


    • 2014.12.23 Tuesday
    • -
    • -
    • -
    • -
    • -
    • by スポンサードリンク

    phper.jpでSilexを使うための設定

    0
      silex.pharでなくcomposerで管理するようになった版のSilexで動くwebアプリを国産PaaSのphper.jpで動かすことに成功したので、設定などをメモを兼ねて書いておきたいと思います。

      phper.jpは面倒なサーバー構築不要でphp実行環境を使うことができる素敵なサービスですv

      アプリサーバーの設定

      ドキュメントルートはプロジェクトルート=ドキュメントルートの時は空文字列のままでOKのようです。

      アプリサーバー設定直後は503になるようです。もしアプリサーバーを設定してしばらく経っても503のままの時は、何も変更せず再度設定の保存をすると表示できるようになるというレポがありました。
      アプリサーバーを設定しても、設定保存し直してもずーっと503の時、エラーログにNo route to hostというエラーが出ていたら、何をやっても無駄なのでプロジェクトを作成し直したほうが良いです…。←私はこれで丸一日はまりました

      vendorライブラリのインストール(composer.phar install)をアプリサーバー側で実行させる

      通常、composerを使ったSilexのプロジェクトをどこかのサーバーにリリースする場合、サーバー側でcomposer.phar installを実行してvendorライブラリを入れますよね。しかし、phper.jpのアプリサーバーには、VPSや専用サーバーと違い自力でSSH接続をすることはできません。
      かといって、vendorライブラリを全部gitの管理下に置いてpush→デプロイはちょっと面倒です。(まぁ、ほかに手段が無ければやっても良いのですが)

      そこで、phper.jpのデプロイ時スクリプトを利用します。
      http://phper.jp/manual#deploy

      .phper/deployはデプロイごと(=pushごと)なのでcomposer.phar installの実行タイミングとしては多すぎる気もします。(「別に多すぎる気がしない」という方はそのまま.phper/deployに書いてよいと思います)
      私はrequireを足したとき、主要なライブラリがアップデートされたときに手動で実行したいと思ったので、少々用途が違う気もしつつ.phper/initdbに書きました。(後述するようにrsync_exclude.txtがうまく効かなかったので、結局deployに書き直したのですが)

      mod_rewriteを効かせる

      UrlGeneratorServiceProviderを使って生成される内部URLは基本的にmod_rewriteが前提ですね。(index.php付きでアクセスした場合は別ですが)
      つまり、UrlGeneratorServiceProviderを使う場合はmod_rewriteが必要になります。

      apacheの設定は.phper/httpd.confに書けば効きますと書いてあるのですが
      http://phper.jp/manual#deploy
      .phper/httpd.confにmod_rewrite設定を書いてpush→デプロイしてもmod_rewriteは有効になりませんでした。(先にアプリサーバー追加した状態で後からhttpd.confを足したからかも?)
      ダメもとでドキュメントルートに.htaccessを置いたところ正常に動作。
      RewriteEngine On
      RewriteBase /
      RewriteCond %{REQUEST_FILENAME} !-f
      RewriteRule ^ index.php [QSA,L]

      composerでインストールしたvendorライブラリがデプロイ時に消えないようにする

      push時のデプロイはrsyncが--deleteオプション付きで実行されるようなので、.phper/rsync_exclude.txtを置いてvendorライブラリ群を除外します。
      http://phper.jp/manual#deploy
      ※私の書き方が悪いのか公式のドキュメントが古いのか不明ですが、.phper/rsync_exclude.txtで除外したつもりのvendorライブラリがデプロイごとに削除されてしまうため、composer.phar installをデータベース初期化時スクリプトからデプロイ時スクリプトに書き直しました。

      proxy設定する

      proxyが動作するようなのでSilexの公式ドキュメントにある通り、proxyをtrustするようにSilex側の設定をします。
      http://silex.sensiolabs.org/doc/usage.html#bootstrap
      "If your application is hosted behind a reverse proxy and you want Silex to trust the X-Forwarded-For* headers, you will need to run your application like this:"
      Request::trustProxyData(); $app->run();


      スポンサーサイト

      0

        • 2014.12.23 Tuesday
        • -
        • 09:22
        • -
        • -
        • -
        • -
        • by スポンサードリンク

        コメント
        コメントする








           

        PR

        calendar

        S M T W T F S
              1
        2345678
        9101112131415
        16171819202122
        23242526272829
        3031     
        << July 2017 >>

        twitter

        selected entries

        categories

        archives

        recent comment

        • 結局CodeIgniter用汎用Modelクラス&汎用CRUDスクリプトを書きました
          プログラマー
        • icu4.4以上が用意できないサーバーでSymfony2.3以上を使う方法
          よし
        • icu4.4以上が用意できないサーバーでSymfony2.3以上を使う方法
          ななうぇぶ
        • icu4.4以上が用意できないサーバーでSymfony2.3以上を使う方法
          よし
        • icu4.4以上が用意できないサーバーでSymfony2.3以上を使う方法
          よし
        • WindowsのPCで開発するphperがxhprofを使う方法
          ななうぇぶ
        • WindowsのPCで開発するphperがxhprofを使う方法
          川本
        • [バッドノウハウ]Symfony2で別テーブルの集計項目を一覧に含めたいとき
          よし
        • Symfony Advent Calendar JP 2012 day 14 - vendorをcomposerで管理しているプロジェクトにcomposerを使わずにバンドルを追加したときのautoloadの書き方
          77web
        • Symfony Advent Calendar JP 2012 day 14 - vendorをcomposerで管理しているプロジェクトにcomposerを使わずにバンドルを追加したときのautoloadの書き方
          ktz

        recent trackback

        • HTMLの表(TABLE)のセル(TD)に斜線を引くjavascriptライブラリ slash.js 作っちゃいました
          常山日記
        • django対symfony 日本語メール送信(その1 symfony編)
          CPA-LABテクニカル
        • CodeIgniterでユーザー認証
          されどLAMPな日々
        • 久々にdjangoを最新版にしたらHTMLがエスケープされちゃった!!(解決済み)
          常山日記
        • FastCGIを諦めてmod_pythonを使う。Apacheのアップグレード
          サーバー用語集
        • さくらインターネット、sqlite3でdjango@CGI版を使う際の設定メモ
          常山日記
        • さくらインターネット スタンダードプランでdjango使ってる方、DBは?
          mitszoの日記
        • python多次元リストをsort(並べ替え)する方法?
          mitszoの日記
        • フォームから送信した値とrequest.POSTの挙動($_POST@PHPとの比較)
          Humming Via Kitchen
        • 日本語テキストをtruncate@django(Python全般にも??)
          常山日記

        recommend

        links

        profile

        search this site.

        others

        mobile

        qrcode

        powered

        無料ブログ作成サービス JUGEM