首先,请原谅我对Joyent的智能机器实例缺乏了解。我正在为这种情况运行NodeJS的免费开发层智能机实例。
我正在[path]/server/public/
通过http-server在文件系统上运行[path]/server/public/blog/
网站,我想在{{1}}同时在端口80上运行Ghost博客。
这可能吗?我将如何实现它?
答案 0 :(得分:8)
使用express设置一个瘦的包装器可能是一个很好的解决方案(正如保罗建议的那样),但如果你以一个带有大量“不同服务”的大型应用程序结束,可能会很麻烦。
相反,我会在我的所有服务之上找代理(例如NGINX)。
使用此解决方案,如果服务失败,则其余为否,因为它们已解耦。
您可以在端口80上侦听并在内部代理每个服务:端口。
类似的东西:
0.0.0.0:80 ---> Proxy
└──path: / ─── localhost:3000 (Main Web)
└──path: /blog ─── localhost:4000 (Ghost)
...
答案 1 :(得分:3)
如果您的其他网站是基于express
的网站,最简单的方法可能是将您的ghost应用程序包含在同一源代码树中(可能在子文件夹中)。 Express应用程序可以作为中间件安装到其他快递应用程序,因此您可以添加到主站点的路由,如:
var ghost = require('./path/to/ghost');
app.use('/blog', ghost);
答案 2 :(得分:2)
假设您已从https://github.com/tryghost/Ghost跟随“从zip安装(最快和最适合博客)”,并且您正在使用http-server从/ public /提供静态内容。
我的解决方案是使用Ghost的Express服务器来提供您的内容:
下载Ghost.zip并在[path]/server/
打开Ghost的config.js文件,将开发中的网址从http://localhost:2368更改为http://localhost:2368/blog/
现在打开同一目录中的index.js文件并添加以下内容:
parentApp.use(express.static(__dirname + '/public'));
后:
parentApp = express();
其中'/ public'是包含静态内容的目录。
现在,如果您转到:http://localhost:2368,您会发现您的网站和博客位于http://localhost:2368/blog/
要更改为制作,您需要进行适当的更改并从NODE_ENV=production npm start
开始。要更改为端口80,您只需要更改config.js中的端口,这将在80上同时为您的站点和博客提供服务。这显然会给您足够的权限问题,并且有大量的教程向您展示如何设置端口80上的Node.js也是如此。