运行Ghost博客作为节点http-server上运行的网站的子文件夹

首先,请原谅我对Joyent的智能机器事件缺乏了解。 我正在这种情况下运行NodeJS的免费开发层smartmachine实例。

我正在通过http-server在文件系统上的[path]/server/public/上运行一个网站,并且我希望在端口80上同时在[path]/server/public/blog/上运行一个Ghost博客。

这可能吗? 我将如何完成它?

       

网上收集的解决方案 "运行Ghost博客作为节点http-server上运行的网站的子文件夹"

使用express来设置一个简单的包装器可能是一个很好的解决scheme(正如Paul所build议的那样),但是如果以一个大型的“不同服务”的应用程序结束,可能会变得很糟糕。

相反,在我所有的服务之外,我们都会去代理(例如NGINX)。

有了这个解决scheme,如果一个服务失败了,其他的没有,因为它们是分离的。

您可以侦听端口80,并在每个服务端口的内部进行代理。

就像是:

 0.0.0.0:80 ---> Proxy └──path: / ─── localhost:3000 (Main Web) └──path: /blog ─── localhost:4000 (Ghost) ... 

如果您的其他网站是基于express的网站,最简单的事情可能是将您的Ghost应用程序包含在同一个源代码树中(也许在一个子文件夹中)。 Express应用程序可以作为中间件安装到其他快速应用程序,所以你可以添加一个路线到你的主站点,如:

 var ghost = require('./path/to/ghost'); app.use('/blog', ghost); 

假设您已经从https://github.com/tryghost/Ghost按照“从zip安装(最快和最好的博客)”,并从/ public / http服务器提供静态内容。

我的解决scheme是使用Ghost的Express服务器来为您的内容提供服务:

下载Ghost.zip并在[path]/server/

打开您的Ghost的config.js文件,并将开发中的url从http:// localhost:2368更改为http:// localhost:2368 / blog /

现在打开打开相同目录中的index.js文件,并添加以下内容:

parentApp.use(express.static(__dirname + '/public'));

after: parentApp = express();

其中“/ public”是包含静态内容的目录。

现在,如果你去: http:// localhost:2368你会发现你的网站和你的博客将在http:// localhost:2368 / blog /

要更改生产,您需要进行适当的更改,并从NODE_ENV=production npm start 。 要更改为端口80,您只需要更改config.js中的端口,这将为您的网站和80上的博客。这显然会给你没有足够的权限问题,并有大量的教程,告诉你如何设置在端口80上的Node.js如此。