1. ホーム
  2. apache

[解決済み] ApacheとNode.jsを同じサーバーで使う

2022-03-24 12:05:28

質問

Nodeを使いたい理由は、swiftで、クライアント側で使っているのと同じ言語を使っていて、定義上ノンブロッキングだからです。 しかし、ファイル処理(保存、編集、名前の変更、ダウンロード、アップロードなど)のプログラムを書くために雇った人は、apacheを使いたいと言っています。 だから、私はそうしなければならない。

  1. Nodeを使うように説得する(彼はそれについてはほとんど譲歩していない)

  2. nodeでファイルをアップロード、ダウンロード、リネーム、保存などする方法を把握したり

  3. apacheとnodeを同じサーバーにインストールしなければなりません。

どちらが有利な状況で、どのように実装すればいいのでしょうか?

どのように解決するのか?

素晴らしい質問です。

PHPで実装された多くのウェブサイトや無料のウェブアプリがApache上で動作しており、多くの人がそれを使っているので、かなり簡単に何かをマッシュアップすることができますし、さらに、静的コンテンツを提供する方法としては文句のつけようがないでしょう。Nodeは高速で、パワフルで、エレガントで、V8の生のパワーと内蔵の依存関係のないフラットスタックを持つセクシーなツールです。

また、Apacheの簡単さと柔軟性、そしてNode.JSの厳しさとエレガンスが欲しいです。 なぜ両方を手に入れることができないのか ?

幸いなことに プロキシパス ディレクティブの httpd.conf を使えば、特定のURLのすべてのリクエストをNode.JSアプリケーションにパイプするのはそれほど難しいことではありません。

ProxyPass /node http://localhost:8000

また、http リクエストをリルートするための正しいプロキシとサブモジュールを取得するために、以下の行がコメントアウトされていないことを確認してください。

LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_http_module modules/mod_proxy_http.so

そして、ポート8000でNodeアプリを実行します。

var http = require('http');
http.createServer(function (req, res) {
  res.writeHead(200, {'Content-Type': 'text/plain'});
  res.end('Hello Apache!\n');
}).listen(8000, '127.0.0.1');

そして、すべてのNode.JSのロジックにアクセスするために /node/ のパスで、残りの部分は Apache に任せて、既存の PHP ページをホストすることができます。

あとは、ホスティング会社を説得して、この構成で実行させるだけです!!!