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を使いたいとき) […]

comment

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

関連記事

no image

AWSのSNSについて

AWSについてここ2年ぐらい触っていますが、以前の現場ではリーダーの方が色々やられたおかげで根本的なところが理解できておらず、家でアカウントを作ってコツコツとやってます。 今回はSNSについて。 基本 …

no image

S3 commandPoolについて

S3のcommandPoolに関して。 S3にファイルをアップロード、ダウンロードするときに、1つ1つファイルをアップロード、ダウンロードすることが一般的かと思いますが、ファイル数が多くなるとなかなか …

no image

サーバーの過負荷の発見 メモリ使用率の調査&抽出、置換(awk,sed)コマンドについて

前回、サーバーの負荷調査について記事を書いたので、それに関するスクリプトを。 Contents1 仕様2 ソース3 解説3.1 freeコマンド3.2 awk3.3 sed 仕様 日付とメモリ使用率、 …

no image

PHPのコマンドライン+隠しファイルも含めたcpコマンド

超小ネタを2つほど phpにrオプションを入れるとPHPコードを実行できます。

cp コマンドですが、隠しファイルも含めてコピーしたい …

no image

dockerインストール

ansibleに続いてdockerについて書いていこうと思います。 Contents1 dockerとは?1.1 インストール1.2 イメージ取得&コンテナ作成1.3 commit1.4 参考リンク …

アーカイブ