原始文档位于https://github.com/developerw...现在移动到这里。学习Next.js:入门学习Next.js:在页面之间导航学习Next.js:使用共享组件学习Next.js:创建动态内容学习Next.js:使用路由掩码创建干净的URL学习Next.js:服务器支持干净的URL学习Next.js:GetdataLearnNext.js:DeployDeploy要部署一个Next.js应用,当然我们首先需要一个可部署的、开发好的应用。下面以Next.js开发的小博客为例,说明如何部署一个Next.js应用。gitclonehttps://github.com/developerworks/next.js-blog.gitcdnext.js-blogyarnbuildyarnstart这样我们就实现了一个Next.js应用的部署。简单的。然而实际的生产环境并没有那么简单,需要解决的问题很多,比如:操作系统重启自动启动Next.js应用。这里我们使用PM2来管理我们的Next.js进程。首先,我们使用以下命令启动Next.js应用程序。#CustomExpressServer#https://github.com/zeit/next.js/tree/master/examples/custom-server-expressNODE_ENV=productionpm2start./server.js--interpreter./node_modules/.bin/babel-node--watchsrc--namenext-blog#默认的Next.js内置方法NODE_ENV=productionpm2startnpm--name"next-blog"--start接下来运行pm2save保存进程启动信息,最后运行pm2startup创建系统启动服务。以Ubuntu16.04为例,它会创建一个名为pm2-www.service的SYSTEMD服务。可以通过systemctlstatuspm2-www.service查看pm2管道理的Next.js应用程序状态。?~systemctlstatuspm2-www.service●pm2-www.service-PM2processmanager启用)活动:活动(运行)自星期四2017-08-3115:17:30CST;3天前文档:https://pm2.keymetrics.io/进程:695ExecStart=/usr/local/lib/node_modules/pm2/bin/pm2resurrect(code=exited,status=0/SUCCESS)MainPID:1195(PM2v2.6.1:God)CGroup:/system.slice/pm2-www.service├─1195PM2v2.6.1:GodDaemon(/home/www/.pm2)├─1215node./node_modules/.bin/babel-node/usr/local/lib/node_modules/pm2/lib/ProcessContainerFork.js├─1221节点./node_modules/.bin/babel-node/usr/local/lib/node_modules/pm2/lib/ProcessContainerFork.js├──1234节点./node_modules/.bin/babel-node/usr/local/lib/node_modules/pm2/lib/ProcessContainerFork.js.......8月31日15:17:30iZwz99do2ak2kdy3324r6bZsystemd[1]:启动PM2进程管理器。到这里儿子,Next.js应用程序已部署。如何指定运行的端口?默认情况下,Next.js应用程序在端口3000上运行。如果我们运行一个门户网站,那么我们需要将端口绑定到80或者443端口注意:$PORT在1024以下,需要ROOT权限,建议用sudo启动Nginx,让Ngnix监听80或者443端口作为Next的反向代理,Next监听其他端口。而为HTTPS配置Nginx的证书比Next要简单的多,可以作为通用的HTTPS方案来降低后端应用服务器的复杂度。首先配置package.json,修改scripts为:"scripts":{"start":"nextstart-p$PORT"}然后在项目目录下启动:PORT=8000yarnstart使用Nginx反向代理当然你也可以不直接指定端口,让Next.js应用程序在Nginx反向代理后面运行。location/{#默认端口,如果你使用next和自定义服务器proxy_passhttp://localhost:3000可以更改;proxy_http_version1.1;proxy_set_header升级$http_upgrade;proxy_set_header连接“升级”;proxy_set_header主机$host;proxy_cache_bypass$http_upgrade;#如果你喜欢this_file,将它从我们的块中删除#否则下一个应用程序将无法正常工作#try_files$uri$uri/=404;}
