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

时间:2014-12-16 20:25:10

标签: node.js ghost-blog joyent smartos

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

我正在[path]/server/public/通过http-server在文件系统上运行[path]/server/public/blog/网站,我想在{{1}}同时在端口80上运行Ghost博客。

这可能吗?我将如何实现它?

3 个答案:

答案 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也是如此。