質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

89.87%

nginx上で稼働させているcakePHP2のアプリにEC CUBE3を追加する方法について

解決済

回答 3

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 386

chapter

score 35

いつもお世話になっております。

標記の件について、これまでnginx上で稼働させていたcakePHP2を利用して作ったアプリはそのままで、
同じドメイン上でEC CUBE3の機能を追加したいと考えております。

現在、cakePHP2のアプリでは以下のようなURLでアクセスしております。

http://sample.com/controllers1/action1/
http://sample.com/controllers2/

更にEC CUBE3では以下のようなURLでアクセスするのが目標です。

http://sample.com/payment/

EC CUBEのみサブドメインで管理する方法もありますが、
できれば同じドメイン上で実現したいと考えております。

ファイルの保存先は現在以下のようにしています。

/var/www/html/sample/  cakePHP2のアプリの保存先
/var/www/html/payment/ EC CUBE3の保存先

また、nginxの設定ファイルは以下のようになっています。

server {
    listen      80;
    listen      443  ssl;
    server_name sample.com;

    ssl_certificate      /etc/nginx/certs/sample.com.combined.crt;
    ssl_certificate_key  /etc/nginx/certs/sample.com.key;
    ssl_session_timeout 5m;

    index  index.html index.htm index.php;
    set $root_path '/var/www/html/sample/app/webroot';
    root $root_path;

    location / {
        if (!-e $request_filename) {
            rewrite ^(.+)$  /index.php?url=$1 last;
            break;
        }

        if ($request_uri ~* "\.(gif|jpe?g|png|ico|swf|woff)$") {
            expires 30d;
        }
    }

    location ~ \.php$ {
        fastcgi_pass   127.0.0.1:9000;
        fastcgi_index  index.php;
        fastcgi_intercept_errors on;
        include        fastcgi_params;
        fastcgi_param  SCRIPT_FILENAME  $root_path$fastcgi_script_name;
        fastcgi_param  SERVER_NAME      $host;
    }
}

この設定ファイルに対して、location /paymentに対する設定を追加すればよいかと思いますが、
どのように記述すればEC CUBE3を動かせるようになるか、ご教授いただけると幸いです。


当方にて試してみた内容を以下に追記させていただきます。

1  nginxの設定ファイルを変更しない場合

1.1
http://sample.com/payment/

にアクセスすると、cakePHP2のアプリのデフォルトのURLにリダイレクトされます。

http://sample.com/

1.2
http://sample.com/payment/eccube_install.php
http://sample.com/payment/html/install.php

にアクセスすると、File not found.と表示されます。

2  nginxの設定ファイルのset $root_pathの前に以下を追加した場合

    location /payment {
        set $root_path '/var/www/html/payment/html';
        try_files $uri $uri/ /index.php$uri;
    }

2.1
http://sample.com/payment/

にアクセスすると、cakePHP2のアプリのデフォルトのURLにリダイレクトされます。

http://sample.com/

2.2
http://sample.com/payment/eccube_install.php
http://sample.com/payment/html/install.php

にアクセスすると、File not found.と表示されます。

※nginxのエラーログ追記

[error] 25420#25420: *2886487 FastCGI sent in stderr: "Primary script unknown" while reading response header from upstream, client: ***.***.***.***, server: sample.com, request: "GET /payment/eccube_install.php HTTP/1.1", upstream: "fastcgi://127.0.0.1:9000", host: "sample.com"

[error] 25420#25420: *2886506 FastCGI sent in stderr: "Primary script unknown" while reading response header from upstream, client: ***.***.***.***, server: sample.com, request: "GET /payment/html/install.php HTTP/1.1", upstream: "fastcgi://127.0.0.1:9000", host: "sample.com"

3  nginxの設定ファイルのlocation /の前に以下を追加した場合

    location /payment {
        try_files $uri /index.php$is_args$args;
    }

    location ~ /payment/install/(.*)\.php\/.+$ {
        fastcgi_pass 127.0.0.1:9000;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_param PATH_INFO $fastcgi_script_name;
        include fastcgi_params;
        try_files $uri $uri/ /install.php;

    }

    location ~ /payment/(.*)\.php {
        fastcgi_pass 127.0.0.1:9000;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_param PATH_INFO $fastcgi_script_name;
        include fastcgi_params;
        try_files $uri =404;
    }

3.1
http://sample.com/payment/

にアクセスすると、cakePHP2のアプリのデフォルトのURLにリダイレクトされます。

http://sample.com/

3.2
http://sample.com/payment/eccube_install.php
http://sample.com/payment/html/install.php

にアクセスすると、404 Not Foundと表示されます。

なお、/paymentの箇所を^/paymentに変更しても同じでした。


なお、サーバ環境などは以下になります。

CentOS 6.7
nginx 1.10.0
php 7.0.6
mysql 14.14
cakePHP 2.8.5

それでは、よろしくお願いいたします。

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 3

check解決した方法

0

試しにサブドメインの方でテストしてみたところ、無事にインストールは完了し、
動くことが確認できました。

可能であれば、カート機能のみ使いたかったのですが、少しいじってみたところ、
分離して考えるのは難しそうでしたので、メインドメインのページから注文ボタンを押した際に
サブドメインのEC CUBEの方に遷移させて運用する方が問題なさそうです。

当初の質問内容とは変わってしまいますが、今回はそちらでいくことにしました。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

0

phpの動作環境があれば大丈夫そうなので、変更なくそのままで動くのではないでしょうか。

teratailでは、どうすればいいですか?(いわゆる丸投げ)という質問は好まれないので、

●●をしたくて、▲▲をしたんだけど、期待した動作にならず、■■となってしまった。そのときの手順がこうで、出力されたログはこうなんですけど、わかりますか?

みたいに質問されるといと思います。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/11/01 16:28

    yukky1201さん、ご回答ありがとうございます。

    アドバイスにしたがって、こちらで試した内容を追記させていただきました。

    なお、変更しない場合は正常に動くことはありませんでした。

    キャンセル

0

nginx の振り分けは、ログレベル変えてどのルールにマッチしたかデバッグするといいですよ。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/11/05 15:57

    te2jiさん、アドバイスありがとうございます。
    今後の参考にさせていただきます。

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 89.87%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる