我有一个专用的服务器,我目前正在运行4个PHP网站。 服务器configuration了apache + nginx。 每当我主持php网站,我把文件public_html文件夹,这就是它开始运行。 但是现在我想安装nodejs应用程序。 我只是困惑如何处理server.js文件? 以及如何保持它运行? 我应该使用pm2还是永远保持它在我的Ubuntu主机上永远运行。 另外如何用example.com等域名运行网站
在NodeJS中,你既可以使用预先存在的东西,也可以使用基本的滚动你自己的web服务器,这个让人望而生畏的事实际上是一个简单的nodejs …
var http = require("http"); http.createserver(function(request, response) { response.writeHead(200, {"Content-Type": "text/plain"}); response.write("Hello World"); response.end(); }).listen(3000);
永远和PM2是最好的开始,如果你想保持在您的服务器上运行的服务。 永远已经比PM2更长,但我相信PM2比Forever更富有特色(永远稍微简单一些)。
关于apache或nginx,您可以使用这些转发请求到您的节点进程。 http默认运行在80端口上,howerver端口80将会被你的apache进程使用。 我推荐的是在另一个端口(例如3000)上运行nodejs应用程序,并使用现有的web服务器(apache,ligtthpd,nginx等)作为反向代理,我在下面列出了一些示例设置。
阿帕奇
<VirtualHost example.com:*> ProxyPreserveHost On ProxyPass /api http://localhost:3000/ ProxyPassReverse /api http://localhost:3000/ serverName localhost </VirtualHost>
Lighttpd的
$HTTP["host"] == "example.com" { server.document-root = "/var/www/example.com" $HTTP["url"] =~ "(^\/api\/)" { proxy.server = ( "" => ( ( "host" => "127.0.0.1", "port" => "3000" ) ) ) } }
nginx的
http { ... server { listen 80; server_name example.com; ... location /api { proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Scheme $scheme; rewrite ^/api/?(.*) /$1 break; proxy_pass http://localhost:3000; } ... } }
在上述示例中,任何对http://example.com/api的请求都将被重定向到在端口3000上运行的节点进程。
这里的想法是,你使用Web服务器来提供你的静态文件(例如css)和你的节点进程来提供你的应用程序。