我在网上看到过很多帖子来说明nuxt.js部署到iis上面,不过我觉得都不是很适合我这种第一次接触nuxt.js的新手。
所以我自己经过一顿折磨的摸索,把自己部署的整过过程分享出来。
首先我先说明以下我的服务器搭建环境:
windows server 2008 r2
IIS(我的服务器已经有其他发布过的网站,所以我不想再去装其他的反向代理服务器,如nginx)
ARR(Application Request Routing)下载地址
node.js下载地址
一、nuxt.js发布
执行命令:
npm run build
打开项目目录复制以下文件夹到服务器:.nuxt、static、nuxt.config.js、package.json、assets(根据自己项目文件存放情况选择)
我的服务器网站文件夹里面的文件为以下内容:
二、服务器部署环境搭建
1、安装node.js下载地址
我是全部默认下一步的,安装成功之后运行命令查看是否安装成功
如果没有出现版本号,可能是安装出了问题,请根据情况自行解决。
2、安装ARR(Application Request Routing)
三、项目运行
1、服务器运行nuxt
cmd进入nuxt项目文件夹目录,安装依赖
运行命令:
npm install
安装完成后,会多出一个文件夹
接下来,我们先运行一下nuxt项目,看看是否能正常运行:
npm run start
然后浏览器输入网址看看是否能正常运行,我监听的端口是3001,所以输入:http://127.0.0.1:3001
如果能够正常运行,那进入下一步
2、安装pm2(node.js进程守护)
用管理员启动cmd,全局安装pm2:
npm i pm2 -g
然后设置pm2开机自启动 :
(1)安装并配置:
npm i -g pm2-windows-service
安装完成后重启服务器
(2)添加系统环境变量: PM2_HOME= C:\Users\***\.pm2 (具体路径可用 pm2 -v 查看)
(3) 以管理员权限打开新的cmd命令行窗口,执行以下命令来安装服务:
pm2-service-install
提示Perform environment setup ? 选 n, 继续,此时, PM2服务已安装成功并已启动, 可以通过 [win + r] - [services.msc] 来查看,服务名称为PM2
npm start启动站点 新开cmd,进入对应应用目录:
pm2 start npm --name "你要取得名称" -- run start
如果你的运行状态为:online,说明正常。
如果你运行后状态为:stopped,说明没有正常启动,百度搜索了以下,有人说是node.js没有权限操作cmd控制台。
于是我跟着操作,问题解决:
安装依赖:
npm install node-cmd
然后在项目根目录创建一个:start.js,内容如下:
const cmd=require('node-cmd');
cmd.run('npm start');
然后在cmd执行:
pm2 start start.js
发现运行成功,但是有个小黑框,关掉后无法运行网站就无法访问。
但是我无意间发现,重启一下服务器,此问题得到解决。
3、nxut网站运行正常之后,将其添加到开机启动
pm2 save
然后重启服务器,cmd执行
pm2 ls
查看当前托管运行的网站是否正常:
四、IIS发布网站
打开IIS->选中服务器名称->双击 右侧功能视图 IIS 节点下的Application Request Routing Cache->点击 右侧操作视图Proxy节点下的Server Proxy Settings->勾选上Enable Proxy前面的复选框
添加网站test,目录选择nuxt项目文件夹,配置自己的项目域名
然后选中刚刚发布test网站,选中url重写,添加规则
模式:^(.*)
条件:{HTTP_HOST} ^www.xxxx.com(你的域名)$
重写url:http://127.0.0.1:3000/{R:1} 你nuxt项目配置的地址和端口
到此你的网站就通过iis发布成功了!