Apache WebServer 上の NodeJS ExpressJS ネットワーク ドメイン

Apache WebServer 上の NodeJS ExpressJS ネットワーク ドメイン

私は LAMP の世界から来たので、Web サーバーから ExpressJS アプリケーションを提供する方法について少し混乱しています。

複数の Apache 仮想ホストがあり、それぞれがさまざまなディレクトリを指し、さまざまなドメイン名を指定しています。それらすべてに、/etc/apache2/sites-available/Ubuntu 上に構成ファイルがあります。

/var/www/とにかく、私は node を使用して ExpressJS インスタンスをインストールしました。これは、他の Web (Apache) のものとともに、自分のディレクトリ内のディレクトリに配置されます。

どうすれば、特定のドメイン名で提供できるのでしょうかIP:3000(ファイアウォールのせいで機能しません)。次のようになります。Apache HTTPD: プロキシとディレクトリエイリアスを使用した仮想ホストの URL 解決しかし、他の場所で、Node のパフォーマンスが低下するため Apache ホストを避けたいと読んだので、それが正しいかどうかはわかりません。ここで最適な回答を探しています。

パフォーマンスへの影響を最小限に抑えながら、ポート 80 を使用し、特定のドメインにマップする必要があります。ノード ファイルで正確に何を指すのかもわかりませんが、ファイルでしょうか/var/www/nodeapp/node_modules/express/index.js?

親切なご支援をありがとうございました!

答え1

リンクをありがとう、マイケル・ハンプトン。今後の参考のために、完全/編集された回答をここに示します。

Apache 仮想ホスト/構成ファイル:

<VirtualHost *:80>
        ServerAdmin webmaster@localhost
        ServerName example.com
        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined

    ProxyPreserveHost On
    ProxyPass "/" "http://localhost:3000"
    ProxyPassReverse "/"= "http://localhost:3000"
</VirtualHost>

注記:上記を機能させるには、Apache のmod_proxyパッケージをインストールするか、Apache のドキュメントを参照するか、次の操作を行う必要があります。

a2enmod proxy
a2enmod proxy_http
a2enmod proxy_ajp
a2enmod rewrite
a2enmod deflate
a2enmod headers
a2enmod proxy_balancer
a2enmod proxy_connect
a2enmod proxy_html

3000設定ファイルでこれが私の Node アプリが実行されている理由です。こちらをご覧ください:

/*!
 * express
 * Copyright(c) 2009-2013 TJ Holowaychuk
 * Copyright(c) 2013 Roman Shtylman
 * Copyright(c) 2014-2015 Douglas Christopher Wilson
 * MIT Licensed
 * index.js
 */

'use strict';

var express = require('./lib/express');
var http = require('http');

var app = express();
var server = http.createServer(app);

app.get('/', function(req, res) {
    res.send("Hello World!");
});

server.listen(3000, 'localhost');
server.on('listening', function() {
    console.log('Express server started on port %s at %s', server.address().port, server.address().address);
});

実行するには、node index.js

コマンドを終了した後も実行を継続するには、&次のように を追加します。

node index.js &

^ は、Unix セッションがアクティブな間のみ実行し続けることに注意してください。たとえば、SSH クライアントを閉じると、 があってもノードの実行は停止します&

永続的に実行するには、ここを参照してください:https://stackoverflow.com/questions/12701259/how-to-make-a-node-js-application-run-permanently

関連情報