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

FastCGIに関して

nginxについて学習してきましたが、今回はphp-fpmについてです。 Contents1 そもそもの構成2 CGIのメカニズム3 FastCGI4 nginxでの設定に関して4.1 fastcgi …

no image

ログ抽出コマンド特集 その1 cat+grep+sort

先日、メモリ使用率の調査に関して記事をかいたのですが、今度はそのログの収集や抽出をおこなってみようかと思います。 やりたいこと yyyy/MM/dd-HH:mm:ss  メモリ使用率(少数2桁まで)  …

no image

SSH鍵認証について+CakePHP2でのセッション切れ

鍵認証の設定をしたのでその際のメモなどを。 Contents1 SSH鍵認証2 CakePHP2セッション切れ SSH鍵認証 サーバーで公開鍵・秘密鍵を作成 サーバーで公開鍵を登録 クライアント側で秘 …

no image

vagrant share

実はvagrantを使って仮想環境を一時的ではありますが、webから見ることができます。 1 まずはhttps://atlas.hashicorp.com/account/newにてアカウント登録。そ …

no image

linuxでのherokuのインストール&パスの通し方

linuxでのherokuのインストールやパスの通し方について 原則としてruby入ってないとダメっぽいです。(しかもruby1.8系だと2016年6月現在エラーが出ますので最新バージョンをインストー …