2017-05-07 49 views
0

我已經建立了我的第一個應用,平均堆棧(蒙戈,快速,角2/4,節點),但它只能通過納克服務工作在「本地enviorment」 我開始客戶端(前端)的一部分,它的作品上本地主機:4200在自己的服務器(Debian)和nginx上部署我的MEAN應用程序?

而且我通過節點server.js啓動服務器的一部分,它適用於 本地主機:4000

也開始MongoDB的。

所有作品完美,但在本地主機上。

如何將我自己的服務器上部署應用到生產,我不希望任何託管像Heroku的等

我已經安裝的debian +蒙戈和節點。

這是我server.js文件

require('rootpath')(); 
var express = require('express'); 
var app = express(); 
var cors = require('cors'); 
var bodyParser = require('body-parser'); 
var expressJwt = require('express-jwt'); 
var config = require('config.json'); 

app.use(cors()); 
app.use(bodyParser.urlencoded({ extended: false })); 
app.use(bodyParser.json()); 

// use JWT auth to secure the api 
app.use(expressJwt({ secret: config.secret }).unless({ path: ['/users/authenticate', '/users/register'] })); 

// routes 
app.use('/users', require('./controllers/users.controller')); 

// start server 
var port = process.env.NODE_ENV === 'production' ? 80 : 4000; 
var server = app.listen(port, function() { 
    console.log('Server listening on port ' + port); 
}); 

config.json

{ 
    "connectionString": "mongodb://localhost:27017/mymean", 
    "apiUrl": "http://localhost:4000", 
    "secret": "TOP SECRET" 
} 

我如何開始我自己的機器上?

回答

1

至於前端,如果你仍然想任何DEV-功能,您可以使用

ng serve --host=somedomain/ip --port=80 

綁定到任何IP /端口你想(0.0.0.0也應努力)。如果你只是想要的文件,那麼你應該使用使用ng buildng build --environment="production"。 (後者會觸發一些來自webpack的額外優化。)構建您的應用程序將生成一個dist-文件夾(無論如何默認),並且內容是簡單的html/javascript文件,所以您需要通過其他方式提供該文件夾(可能是nginx) 。

我使用nginx的,使我的API(服務器端)公開可用。

server { 
    listen 80; 

    # Web 
    root /var/www/myapp/dist 
    location/{ 
     try_files $uri /index.html; 
    } 

    # Api 
    location /api { 
     proxy_pass http://127.0.0.1:4000; 
    } 
} 

而且,很多使用的東西,以保持服務器進程活着:作爲一個nginx的配置可以很簡單。而不是僅僅NODE_ENV=production node server.js,有喜歡nodemonforeverpm2工具。我偏向pm2,但它都非常主觀。如果您在某些VPS上運行服務器,那麼這些進程管理器非常方便。如果你在自己的機器上運行它,可能會少一些。 (node server.js也不錯)。

+0

謝謝,我會試試這個。 – Defus

+0

還有一個問題,我應該在哪裏放置我的服務器部分? – Defus

+1

你真的喜歡的地方。在/ usr似乎很受歡迎,或您的家庭文件夾。或者,如果它是你的網絡項目的一部分,那麼我想/ var/www/project /子文件夾是好的。也許有一些這樣的事情的最佳做法! (對不起!)一旦運行,nginx的proxy_pass關心的唯一事情就是端口。 – ippi

相關問題