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

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

新規登録して質問してみよう
ただいま回答率
87.20%
nginx

nginixは軽量で高性能なwebサーバーの1つです。BSD-likeライセンスのもとリリースされており、あわせてHTTPサーバ、リバースプロキシ、メールプロキシの機能も備えています。MacOSX、Windows、Linux、上で動作します。

CakePHP

CakePHPは、PHPで書かれたWebアプリケーション開発用のフレームワークです。 Ruby on Railsの考え方を多く取り入れており、Railsの高速性とPHPの機動性を兼ね備えています。 MVCやORMなどを「規約優先の考え方」で利用するため、コードを書く手間を省くことができます。 外部のライブラリに依存しないので、単体での利用が可能です。

EC-CUBE

EC-CUBEは、主に日本国内で開発されているECコンテンツ管理システムです。ロックオン社のECKitを元にしてオープンソース化され、商品管理・受注管理・顧客管理・売上集計などECに特化した様々な機能を備えています。

解決済

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

chapter
chapter

総合スコア36

nginx

nginixは軽量で高性能なwebサーバーの1つです。BSD-likeライセンスのもとリリースされており、あわせてHTTPサーバ、リバースプロキシ、メールプロキシの機能も備えています。MacOSX、Windows、Linux、上で動作します。

CakePHP

CakePHPは、PHPで書かれたWebアプリケーション開発用のフレームワークです。 Ruby on Railsの考え方を多く取り入れており、Railsの高速性とPHPの機動性を兼ね備えています。 MVCやORMなどを「規約優先の考え方」で利用するため、コードを書く手間を省くことができます。 外部のライブラリに依存しないので、単体での利用が可能です。

EC-CUBE

EC-CUBEは、主に日本国内で開発されているECコンテンツ管理システムです。ロックオン社のECKitを元にしてオープンソース化され、商品管理・受注管理・顧客管理・売上集計などECに特化した様々な機能を備えています。

3回答

0評価

0クリップ

71閲覧

投稿2018/10/31 15:39

編集2018/11/01 07:38

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

標記の件について、これまで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の設定ファイルは以下のようになっています。

config

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の前に以下を追加した場合

Bash

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のエラーログ追記

Bash

[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 /の前に以下を追加した場合

Bash

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ページの「注目」タブのフィードに表示されやすくなります。

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

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

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

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

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

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

まだ回答がついていません

会員登録して回答してみよう

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

ただいまの回答率
87.20%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

同じタグがついた質問を見る

nginx

nginixは軽量で高性能なwebサーバーの1つです。BSD-likeライセンスのもとリリースされており、あわせてHTTPサーバ、リバースプロキシ、メールプロキシの機能も備えています。MacOSX、Windows、Linux、上で動作します。

CakePHP

CakePHPは、PHPで書かれたWebアプリケーション開発用のフレームワークです。 Ruby on Railsの考え方を多く取り入れており、Railsの高速性とPHPの機動性を兼ね備えています。 MVCやORMなどを「規約優先の考え方」で利用するため、コードを書く手間を省くことができます。 外部のライブラリに依存しないので、単体での利用が可能です。

EC-CUBE

EC-CUBEは、主に日本国内で開発されているECコンテンツ管理システムです。ロックオン社のECKitを元にしてオープンソース化され、商品管理・受注管理・顧客管理・売上集計などECに特化した様々な機能を備えています。