部署(Deployment)

概述

在部署之前

在你启动任何网页应用程序前,你应该问自己几个问题:

  • 你预期的流量为何?
  • 你的合约是否要求满足任何正常执行时间保证,如服务层级协议(SLA)?
  • 哪种前端应用程序会触及你的网页应用程序?
    • Android 应用程序
    • iOS 应用程序
    • 桌面版网页浏览器
    • 行动版网页浏览器(平板电脑、电话、iPad mini?)
    • 电视、手表、烤面包机…?
  • 以及它们会要求什么东西?
    • JSON?
    • HTML?
    • XML?
  • 你会利用 Socket.io 的即时发布订阅功能?
    • 例如聊天、即时分析、应用程序内通知/讯息
  • 你是如何追踪崩溃与错误?
    • 看看 Sails 的日志设置

部署在单一服务器

Node.js 非常快速。对于许多应用程序,在一开始一台服务器就足够处理预期的流量。

设置
  • 所有生产环境设置都储存在 config/env/production.js
  • 设置应用程序执行于连接埠 80(如果不是在如 nginx 之类的代理之后)。如果你使用的是 nginx,一定要对其设置中继 WebSocket 到应用程序。你可以在 nginx 文件 WebSocket proxying 找到指南。
  • 设置「正式」环境,让所有的 css/js 被打包,且内部服务器被切换到适当的环境(需要连接器)。
  • 务必确认资料库已设置在正式服务器。更重要的一点是,如果你使用的是关联式资料库如 MySQL,当执行于生产环境时, Sails 会设置所有的模型为 migrate:safe,这代表启动应用程序时不会进行自动移转。你可以用以下方法设置资料库:
    • 在服务器上建立资料库,使用正式服务器作为资料库,然后在本地使用 migrate:alter 设置执行 Sails 应用程序。这样就自动设置好了。
    • 如果你无法远端连线服务器,你可以倒出在本地端的结构,并将其汇入到资料库服务器。
  • 启用 CSRF 来保护 POST、PUT 及 DELETE 请求
  • 启用 SSL
  • 如果你使用 SOCKETS:
部署

在生产环境中,你会想要使用 forever 或 PM2 来取代 sails lift,以确保即使应用程序崩溃了也会继续运作。

  • 安装 forever:sudo npm install -g forever
  • 或安装 PM2:sudo npm install pm2 -g --unsafe-perm
  • 从你的应用程序目录,使用 forever start app.js --prodpm2 start app.js -x -- --prod 启动服务器
    • 这和 sails lift --prod 所做的事相同,但是当服务器崩溃时,它会自动重新启动。