如何在一台服务器上部署 nodejs api 和 vuejs 应用程序

Sam*_*dha 7 javascript amazon-ec2 web-deployment node.js vue.js

我已经开发了 node rest api 和 vuejs Web 应用程序,我试图将这两个项目部署到一个运行 ubuntu 的 aws 服务器中。两个应用程序都有不同的端口,域我尝试为 api 配置 api.example.com,为 vue 应用程序配置 example.com。在 SSH 中运行命令后,我可以运行这两个应用程序一次,但我需要它们永远运行它。我做了什么,

  1. 单独部署到应用程序
  2. 应用程序可以通过端口访问

我需要他们访问

  1. api.example.com
  2. 例子.com

要做什么步骤,任何更改主机文件。

小智 9

我找到了另一种无需使用 PM 即可在一台服务器上部署 vue app 和 express/nodejs 的方法。这是我所做的

  1. 使用npm run build命令构建你的 vue 代码。这将创建一个文件夹dist,该文件夹应该包含index.html文件和static文件夹。
  2. dist文件夹复制到您的服务器代码存储库中。在我来说,我创建的文件夹public和移动dist文件夹内public
  3. app.js之前正确的文件module.exports=app行,复制下面的代码行

    //These 2 lines make sure that vue and express app are coming from the same server. app.use('/static', express.static(path.join(__dirname,"../public/dist/static/"))); app.get('/', function(req,res) { res.sendFile('index.html', { root: path.join(__dirname, '../public/dist/') }); });

第一行确保该/static文件夹可访问,第二行将index.html在您运行节点服务器时提供该文件。组件之间的路由将由 vue 处理。


Mar*_*ons 4

这就是我们从同一服务器运行 VueJS UI 和 ExpressJS REST API 的方式。

我们使用PM2管理我们的服务。

VueJS(开发环境,您可以将相同的设置添加到生产环境)

package.jsonadd中"start": "HOST='0.0.0.0' PORT=80 npm run dev",,其中 80 是 VueJS 正在侦听数组的端口"scripts": {..}。然后,安装 PM2 后,(对于开发人员)我们可以使用cd /location/of/vue/root; sudo pm2 start npm run dev --name Vue -- start. (确保 Apache 未运行)。

请注意,将 HOST 设置为 0.0.0.0 很重要。请勿将其设置为 LocalHost 或您的服务器 IP 地址,否则您可能会遇到问题。

ExpressJS

/location/of/express/app.js文件底部添加类似于: 的内容 app.listen(process.env.PORT || 8081),其中 8081 是您的 REST API 应侦听的端口。然后我可以开始它sudo pm2 start /location/of/express/app.js --name Express

此时,VueJS 应在 www.example.com(隐含端口 80)上可用,而 REST API 将在 www.example.com:8081 上可用。

如果您想让 api.example.com/ 指向 API,您需要确保您的 DNS 将“api”子域指向所需的端口,或者您可能必须将端口添加到上面的 URL 中。

此外,您还可以通过 PM2 以及pm2 logs APPNAME --lines 100.