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

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

ただいまの
回答率

87.95%

PHPとnode.jsを同時に使用は可能ですか?

解決済

回答 2

投稿

  • 評価
  • クリップ 3
  • VIEW 10K+

score 186

以前にも何回かnode.jsの件で質問させていただき、助けていただいてる者です。

今考えているのは、下記のお絵かきチャットをコンテンツの1部に入れたサイトの構築です。
お絵かきチャットの参考リンク

サイト自体はよくある[ PHP+MySql ]を使用しユーザー登録して、
ログインして日記書いてコメントつけて・・・みたいな単純なものです。
こういったサイトは過去に作成経験があります。

その中で、上記のようなお絵かきチャットをユーザー登録者限定で使用できるようにしたい!と思い、node.jsの勉強をし、こちらでも手助け頂きました。

なので自分の中ではお絵かきチャットのコンテンツだけは、phpファイルをnode.jsで動かすイメージで作成していたのですが・・・

当方、恥ずかしいことにapacheとnode.jsは同じサーバー用のソフトのため、ポートも異なり共存できないという事実を知らず突き進んでしまいました・・・。

同時に使用することができるのか、いろいろ調べて、これかな?と思うようなものもありましたが、自分の中で理解できる記事が見つからず、藁にもすがる思いでこちらに相談させていただきました。

要望をまとめると以下の通りです。

・php+mysqlで登録したユーザー限定のお絵かきチャットコンテンツ(node.js)を作りたい
・その機能が欲しいのはお絵かきチャットの動かす1ページ(1ファイル)だけで、他はPHP+MySqlを使用したコンテンツ

こういったことができるサイトの構築を目指しています。環境はさくらVPSです。

初心者がそんな難しい機能の実装を目指すな!と言いたくなるような質問ですが、どなたか手助けを頂きたいです。
参考になる助言や、記事URLなど、あれば教えていただけると幸いです。
サーバー構築については、サイト公開までの初期設定ができる程度の初心者なので、
理解に乏しいかもしれませんがご了承ください。
よろしくお願いいたします。
  • 気になる質問をクリップする

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

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

    クリップを取り消します

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

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

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

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

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

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

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

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

    質問の評価を下げる

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

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

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

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

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

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

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

    詳細な説明はこちら

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

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

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

回答 2

+1

nginxであれば、PHPとnode.jsを同じサーバで動かす事はできる様です。
試してはいませんが、以下の様なサイトがありました。

Running both PHP and Node.js on Nginx on the same server
node.js - nginx + nodejs + php - Stack Overflow

PHPとnode.jsを同じサーバで動かすだけで、
連携方法までは書かれていませんが。。。

投稿

  • 回答の評価を上げる

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

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

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

  • 回答の評価を下げる

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

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

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

  • 2015/08/01 15:11

    ご連絡遅れて申し訳ありません。
    回答頂きありがとうございます。
    仕様上、お一人にしかベストアンサーは出来ませんので、心苦しいですが最初に回答頂いた方をベストアンサーにさせていただきました。申し訳ありません。
    また何かございましたらよろしくお願いします。

    キャンセル

checkベストアンサー

0

ぱっと見で思いつくものとしては以下のような構成でしょうか?
(回答者は Node.js でWebサーバを建てたことが無いにわかです(>_<))

まず、Node.js で作ったアプリと Apache+PHP で作ったアプリでユーザーなどのデータを共有する必要があるかと思います。それには、下記の2通りの案が考えられます。

1.
両方が同じデータベースを参照する。

2.
Apache+PHP の方に、Node.js からの各種情報の取得・更新を受け付けるための REST ライクな WebAPI を設けて、Node.js の方でユーザー情報が必要になったときに Apache+PHP の WebAPI を呼ぶ。

「2」の方が、最近バズっているマイクロサービスっぽくて美しいですが、「1」の方がはるかに簡単です。


次に、Node.js で作ったアプリと Apache+PHP で作ったアプリを、共存して動かすための仕組みも必要です。これには、次のような方法が考えられます。

1.
Node.js をフロントに置いて、お絵かきチャット以外のすべてのリクエストを Apache+PHP にリバースプロキシする。(初心者にも上級者にもオススメできません)

2.
WebSocket をプロキシ可能ななにか(nginx でできるという話を聞いたことがある)をフロントに置いて、Node.js や Apache+PHP にリバースプロキシする。

3.
Node.js と Apache+PHP を、別の IP アドレスにして、別のドメインにする。
サーバに複数の IP アドレスを付与して、別々の IP アドレスでリッスンするか、あるいは、複数のサーバを設ける必要があります。

4.
Node.js と Apache+PHP を、別のポートにする。
一番簡単ですが、社内イントラなどの限定的な環境だけであればともかく、コンシューマー向け(一般人向け)だと、標準とは異なるポートを使用するなんてありえないので、現実的ではありません。


いずれにしても、初心者にはオススメできません。

投稿

  • 回答の評価を上げる

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

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

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

  • 回答の評価を下げる

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

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

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

  • 2015/08/01 15:10

    ご連絡遅れて申し訳ありません。
    ご丁寧にいくつかの選択肢も提示下さりありがとうございます。
    お絵かきチャット単独でリリースする方針に変えようと思います。

    キャンセル

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

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

関連した質問

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