1、Node环境搭建
关于node环境搭建请参考文章
安装之后通过命令node -v
来检查node是否安装成功,通过命令npm -v
来检查npm是否安装成功。
2、全局安装pm2
执行命令:
npm i pm2 -g
3、初步了解pm2
pm2是nodeJS 进程守护工具,相似的工具还有forever
等,当我们在服务器上开启一个命令提示符窗口时候,我们可以去启动我们的vue项目,但是当我们关闭提示符窗口时,进程也就随之结束了。所以我们需要一个工具来进行进程守护,在这里简单的写到几个pm2的命令:
pm2启动进程
pm2 start app.js
pm2 start app.py
pm2 start npm -- start
pm2 start [app-name]
pm2 start all
pm2进程列表
pm2 list
pm2重启进程
pm2 restart [app-name]
pm2 restart all
pm2停止进程
pm2 stop [app-name]
pm2 stop all
pm2的进程日志
pm2 logs
pm2 logs [app-name]
关于pm2的命令详细文档请 参考pm2官网
pm2启动nuxt项目
我们都知道,nuxt.js的项目启动命令,先执行npm run build
,在执行npm run start
,pm2也支持参数的传递,也有大神说pm2启动nuxt只需要执行pm2 start npm -- run start
,到目前为止,表示项目没有这样启动成功过。
所以我们要知道package.json
这个文件,当我们执行npm run dev
的时候,其实使用npm去启动了./node_modules/nuxt/bin/nuxt
这个文件。当我们cd到我们的项目目录之后,我们最终可以执行如下命令来启动:
pm2 start ./node_modules/nuxt/bin/nuxt -- start
这里需要注意的是,后面的
start
参数是一定要传的,否则启动的是dev
开发者模式。这样导致我们网站的加载速度非常慢,我们也可以修改./node_modules/nuxt/bin/nuxt
文件(如下图),并通过pm2 logs
来查看日志:
2018-12-05更新
后来我们通过官方文档发现可以直接通过pm2 start npm -- run srart
来启动项目,如果需要启动多个npm
项目并使用不同的名字,则可以通过pm2 start npm -- run start --name obj1
(需要注意双横线之间的空格)。
1、 pm2 启动失败怎么办?
1、首先确认在你的项目目录下,能通过npm run ...
正常启动你的项目,在切换到pm2
中启动,如果出现失败,则可以通过pm2 log
命令来查看在pm2
的错误,通常情况下会是因为你的一些全局包加载不到而导致的错误,这是只需要安装你的全局包即可,在mac OS
或者Linux
系统下有可能需要加上管理员权限sudo pm2 start npm -- run xxx
。
2、 如何修改启动端口?
要知道pm2
只是守护我们的进程,所以核心的启动不分依然是我们项目的自身结构,修改端口只需要修改package.json
文件中的scripts
选项即可,案例如下:
"scripts": {
"dev": "PORT=3336 nuxt",
"build": "nuxt build",
"start": "PORT=8802 nuxt start",
"generate": "nuxt generate",
"lint": "eslint --ext .js,.vue --ignore-path .gitignore .",
"precommit": "npm run lint"
}
我们也可以增加HOST
的选项,例如配置"dev": "HOST=0.0.0.0 PORT=3336 nuxt"
,则可以直接通过本机ip+端口号
在指定的网络中访问。
3、服务器上如何开机自动启动?
在服务器端,在项目都通过pm2
启动成功之后,(可以通过命令pm2 ls
进行查看)我们希望直接通过服务器重启之后能自动启动,可以通过pm2 save
命令将当前的启动项保存起来,下次重启系统就可以自动启动了。