skillup

技術ブログ

サーバー・ネットワーク

nginxインストール(サブディレクトリでcakePHPを使いたいとき)

投稿日:2016年1月14日 更新日:

以前nginxのインストールを行いましたが、理解が浅かったようで今回すげーはまりました(汗)

ガチンコ塾でもいっていますが、覚え始めの時はコピペでもいいですが(最初から100%の理解は非現実的)、慣れてきたら理論的なことを少しずつ覚えてきたいですね。

以前のリンク

nginxの設定

nginx上でのcakePHP

今回はバーチャルホストではなく、1つのドメインのサブディレクトリでcakePHPを使うケースでした。

example.comというホストの下に

example.com/hoge/
example.com/foo/
example.com/bar/

といったようなサービスが存在しており、1つ1つが別のサービスというケースです。

今回新しいURlとしてexample.com/sample/というURLでcakeを使いたいケースです。

環境

  • nginx 1.9.3
  • cake 2.7.7
  • php 5.4.16
  • MariaDB  5.5.44
  • ディレクトリを/var/nginx/sampleに設置

ソース

/etc/nginx/conf.d/default.conf

実際の流れ

大事な考え方として、こういう場合、いきなりcakeを一気に表示することは目指さないほうがいいでしょう。

いきなりゴールにたどり着こうとすると、エラーが起こってもどこで起きているかがわかりにくいため、最初はなるべく一番単純なパターンではじめ、徐々にゴールに近づけていくのがポイントです。

今回のケースでは下記のようにすすめていくのがいいでしょう。

  1. まずはnginxのディフォルトのページを出す
  2. hello,worldだけを表示するような簡単なページを出す
  3. cakeのindex.phpを表示する
  4. cakeの任意のページを出力する
  5. cssやjsなども正常に表示する

一見遠回りに見えますが、こちらのほうが近道です。

なんでこんなことを力説するかというと今回php-fpmのの問題だったのに、cakeの問題だと勘違いして2時間ぐらい無駄にしたからです(汗)

1.まずはnginxのディフォルトのページを出す

まずはhttp://ドメイン名でアクセス正常にnginxが動いているかを確認します。下記ページが表示されればOKです。
ダウンロード

2 hello,worldだけを表示するような簡単なページを出す

/var/nginx以下にhoge.phpを置いてブラウザからhttp://domain/hoge.phpが動くかを確認します。

php-fpmが動いていれば正常に出力されますが、そうでないとファイルのダウンロードが始まったり、404になったりします。

ちなみに動いていない場合はソース下記の部分を参考に。

3 cakeのindex.phpを表示する

通常のphpファイルが正常に表示されたら、cakeのなかのページの表示を行います。

ブラウザからhttp://domain/sample/index.php あるいはhttp://domain/sample/でアクセスしてみましょう。

ちなみにこの部分はソースの下記の部分が動いています。

4 cakeの任意のページを出力する

cakeは通常 http://domain/アプリ名/コントローラー名/アクション名/といった形式でアクセスを行います。

このようなファイルはありませんが、URLの書き換えを行っていますので、上記のようなURLでアクセスできるわけです。

こちらに相当するのが上記のソースの

の部分です。

5 cssやjsなども正常に表示する

上記のままだとcssやjs、画像ファイルが正常に出力されていないと思います。

これらのファイルに関してはwebrootを起点ということを知らせたいので下記のように記述します。

参考リンク

nginx上でサブディレクトリのCakePHPアプリを動作させる

ちなみにapacheでは下記のリンクを。

cakePHPでのサブディレクトリ(apache)

-サーバー・ネットワーク
-,

執筆者:


  1. […] 以前nginxでの使用法については下記に書きました。 nginxインストール(サブディレクトリでcakePHPを使いたいとき) […]

cakePHPでのサブディレクトリ(apache) – skillup へ返信する コメントをキャンセル

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連記事

no image

herokuネタ(頻出コマンドなど)

10月末ぐらいから使っているPaasのherokuについてよく使うコマンドについて Contents1 アカウント開設&スタート2 基本的な使い方 アカウント開設&スタート http://skill- …

no image

vueの環境構築に関して(モジュールバンドラの比較やvue-cliコマンドなど)

vueをビルドする場合、一般的にはwebpackなどのモジュールバンドラを使うかと思います。少しまとめて置こうかと思います。 Contents1 モジュールバンドラ1.1 webpack1.2 lar …

no image

CIツールを使ったオートデプロイに関して

gitlabをあるプロジェクトで使っていますが、自動デプロイについて色々調べなんとかできたのでメモしておきます。 結論から書きますと下記のような手順でいけます。 1.まずデプロイしたいサーバーに鍵認証 …

no image

SAM(AWSのサーバーレスフレームワーク)について

LambdaやAPIGatewayをちょこちょこいじってますが、goなどを使っているとローカルでの開発時にはAPIなどと直接連携したりすることはできません。 またデプロイ自体が面倒で画面からポチポチや …

no image

SQSのキュー登録とworkコマンドに関して

SQSでのキューの登録に関して以前やりましたが、再度扱うことがあったので、調査を。 リンク SQSについて Queueの登録と実際の処理に関して Contents1 キューの登録2 キューの監視 キュ …

アーカイブ