簡體   English   中英

運行Ghost博客作為在節點http-server上運行的網站的子文件夾

[英]Run Ghost blog as subfolder of website running on node http-server

首先,請原諒我對Joyent的智能機器實例缺乏了解。 我正在為這種情況運行NodeJS的免費開發層smartmachine實例。

我通過http-server在文件系統的[path]/server/public/上運行一個網站,我想同時在端口80的[path]/server/public/blog/上運行一個Ghost博客。

這可能嗎? 我怎么做到這一點?

使用express設置一個瘦的包裝器可能是一個很好的解決方案(正如保羅建議的那樣),但是如果你以一個帶有很多“不同服務”的大型應用程序結束,那么可能會很麻煩。

相反,我會在我的所有服務之上找代理(例如NGINX)。

使用此解決方案,如果服務失敗,則其余為否,因為它們是分離的。

您可以在端口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 / with http-server提供靜態內容。

我的解決方案是使用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也是如此。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM