MEAN.JS堆栈提出" grunt build"准备生产申请的任务。 不幸的是,缺乏有关后续步骤的信息。实际上,不清楚如何将应用程序部署到生产以及如何启动它。
问题#1 除了config / env / production.js中的更改外,还必须在项目中配置什么?例如。如何使用自定义字体?
问题#2 好。代码部署到Production(通过Git,rsync等)。是否足以将其作为
运行 $NODE_ENV=production node server.js&
答案 0 :(得分:35)
我建议您执行以下步骤以部署到生产环境:
仔细检查/config/env/production.js
配置文件,并将您手动添加的所有资产都包含在/config/env/all.js
中。这是使用缩小版本进行生产的好方法。
(可选)如果你的应用程序中有自定义字体,我建议更新gruntfile.js并添加一个将字体复制到/ public / dist /文件夹的任务。我做了以下更改:
copy: {
main:{
expand: true,
flatten: true,
src: ['public/modules/core/fonts/*'],
dest: 'public/dist/',
filter: 'isFile'
}
},
...
// Build task(s).
grunt.registerTask('build', ['lint', 'loadConfig', 'ngmin', 'uglify', 'cssmin', 'copy']);
复制任务需要安装grunt-copy模块
现在是时候制作单个application.js,application.min.js&用于生产的application.min.css文件(请参阅/public/dist
文件夹)。在app文件夹中运行
$grunt build
将文件复制到生产服务器。我更喜欢使用GIT推送部署。它仅向服务器发送增量更改。如果您使用GIT进行推送部署,则需要将`/ public / dist /'文件夹中的所有文件添加到存储库中。
因为你在项目中使用了express.js,所以使用命令
就足够了$NODE_ENV=production node server.js&
我知道有些开发人员使用永远(node.js模块),但我更喜欢使用UPSTART(基于事件的init守护进程),它默认在Ubuntu上作为系统服务提供。我在/etc/init
文件夹中创建了一个配置文件,例如/etc/init/my-app.conf
。在此之后,我可以启动,停止,重新启动我的应用程序作为服务。例如。
service my-app start | stop | restart
UPSTART将在发生故障时监控并重新启动您的服务(请参阅UPSTART配置中的respawn命令)。 您可以在此处找到有关如何制作UPSTART配置文件的详细解答:upstart script for node.js
(可选,但建议)在nginx
前面安装Node.js
。由于安全原因,建议在非特权用户下运行您的Web应用程序,另一方面,如果您想为您的Web应用程序使用端口80(它是http协议的默认端口)(例如http://my-app-domain.com/而不是{ {3}})这样的配置可能很棘手。因此,我在我的网络应用程序前使用Nginx(端口80),它实际上适用于非特权用户可用的端口(例如3000)
6a上。 您可以使用Varnish