CentOS下用pm2对Nuxt项目进行线程守护

楼主系统说明:
系统环境: CentOS7.3 64位
版本工具: svn 1.7.14
nodeJs: 8.9.1
npm: 5.6.0
cnpm: 5.2.0

一. 安装svn客户端
安装命令:

yum install -y subversion

查看subversion版本

svn --version

楼主安装SVN的信息如下(部分输出):

[root@jsyfpre001 ~]# svn --version
svn, version 1.7.14 (r1542130)
   compiled Aug 23 2017, 20:43:38

创建项目svn checkout地址

mkdir -p /data/www/project/shop/yf_mall_v1.0.5

到目录下面

cd /data/www/project/shop/

svn checkout svn中的项目

svn签的svn://ip/p6_web/yf_mall_v1.0.5 ```
项目目录如下


:```
 [root@ jsyfpre001 yf_mall_v1.0.5]#ls -al /data/www/project/shop/yf_mall_v1.0.5 
总108 
drwxr -xr-x 11 root root 4096 Feb 6 12:03。
drwxr-xr-x 5 root root 4096 Feb 6 12:02 .. 
-rw-r  -  r-- 1 root root 1536 Feb 6 12:03 app.html 
drwxr-xr-x 4 root root 4096 Feb 6 12: 03资产
drwxr-xr-x 6 root root 4096 Feb 6 12:03组件
-rw -r  -  r-- 1 root root 207 Feb 6 12:03 .editorconfig 
-rw-r  -  r-- 1 root root 28623 Feb 6 12:03 element-variables.scss 
-rw-r  -  r-- 1 root root 11515 Feb 6 12:03 .eslintrc.js 
-rw-r  -  r-- 1 root root 92 Feb 6 12:03的.gitignore
drwxr-xr-x  2 root root  4096 Feb  6 12:03 layouts
drwxr-xr-x  2 root root  4096 Feb  6 12:03 middleware
-rw-r--r--  1 root root  2551 Feb  6 12:03 nuxt.config.js
-rw-r--r--  1 root root  1150 Feb  6 12:03 package.json
drwxr-xr-x 21 root root  4096 Feb  6 12:03 pages
drwxr-xr-x  2 root root  4096 Feb  6 12:03 plugins
-rw-r--r--  1 root root   391 Feb  6 12:03 README.md
drwxr-xr-x  9 root root  4096 Feb  6 12:03 static
drwxr-xr-x  2 root root  4096 Feb  6 12:03 store
drwxr-xr-x  4 root root  4096 Feb  6 12:03 .svn

注: svn 相关命令用法如下:

svn  checkout  svn://路径(目录或文件的全路径) [本地目录全路径]  --username 用户名
# 例:
svn checkout svn://ip/p6_web/yf_mall_v1.0.5  /data/www/project/shop/yf_mall_v1.0.5 --username hanwuqia

至此svn客户端安装成功, 并checkout了代码

一. 安装nodejs
创建文件目录

mkdir -p /usr/local/software

进入文件目录

cd  /usr/local/software

下载nodeJS

wget https://nodejs.org/dist/v8.9.1/node-v8.9.1-linux-x64.tar.gz  

解压NodeJs文件

tar -zxvf node-v8.9.1-linux-x64.tar.gz -C ../

为nodejs更名

 mv /usr/local/node-v8.9.1-linux-x64/ /usr/local/node8.9.1 
# 软链接指向到node npm
ln -s /usr/local/node8.9.1/bin/node  /usr/local/bin/node
ln -s /usr/local/node8.9.1/bin/npm  /usr/local/bin/npm 

查看软链是否成功

ls -al /usr/local/bin

软链接输出内容

[root@jsyfpre001 bin]# ls -al /usr/local/bin
total 3428
drwxr-xr-x   2 root root    4096 Feb  6 14:09 .
drwxr-xr-x. 32 root root    4096 Feb  6 14:02 ..
lrwxrwxrwx   1 root root      29 Feb  6 14:09 node -> /usr/local/node8.9.1/bin/node
lrwxrwxrwx   1 root root      28 Feb  6 14:09 npm -> /usr/local/node8.9.1/bin/npm

一: 安装vue相相关包

如果vue-cli没有安装,请安装vue-cli

npm install -g vue-cli

到项目目录下

cd /data/www/project/shop/yf_mall_v1.0.5

安装淘宝景象, 因为在国内用npm安装会比较慢, 所有我们使用淘宝镜像安装 也就是cnpm

npm install -g cnpm --registry=https://registry.npm.taobao.org 

建立cnpm软链

ln -s /usr/local/node8.9.1/bin/cnpm  /usr/local/bin/cnpm 

安装vue相关组件

cnpm install

查看是cnpm 是否安装完成

cnpm -v

输出内容包括:
node版本
npm版本
cnpm 版本等信息

[root@jsyfprod001 yf_mall_v1.0.5]# cnpm -v
[email protected] (/usr/local/node8.9.1/lib/node_modules/cnpm/lib/parse_argv.js)
[email protected] (/usr/local/node8.9.1/lib/node_modules/cnpm/node_modules/npm/lib/npm.js)
[email protected] (/usr/local/node8.9.1/bin/node)
[email protected] (/usr/local/node8.9.1/lib/node_modules/cnpm/node_modules/npminstall/lib/index.js)
prefix=/usr/local/node8.9.1 
linux x64 3.10.0-693.5.2.el7.x86_64 
registry=https://registry.npm.taobao.org

一、安装npm:
安装pm2 node进程管理器

进入到yf_mall_v1.0.5目录下安装pm2
注(重要): 楼主在其他目录下安装全局pm2 虽能安装成功 但是执行pm2 list的时间一直失败 在项目目录下成功了 所以才到项目目录下执行安装pm2命令

cd  /data/www/project/shop/yf_mall_v1.0.5
cnpm install -g pm2 

安装信息如下(最后几行):

All packages installed (194 packages installed from npm registry, 1 packages installed from remote url, used 3s, speed 2.13MB/s, json 173(1.43MB), tarball 5.17MB)
[[email protected]] link /usr/local/node8.9.1/bin/pm2@ -> /usr/local/node8.9.1/lib/node_modules/pm2/bin/pm2
[[email protected]] link /usr/local/node8.9.1/bin/pm2-dev@ -> /usr/local/node8.9.1/lib/node_modules/pm2/bin/pm2-dev
[[email protected]] link /usr/local/node8.9.1/bin/pm2-docker@ -> /usr/local/node8.9.1/lib/node_modules/pm2/bin/pm2-docker
[[email protected]] link /usr/local/node8.9.1/bin/pm2-runtime@ -> /usr/local/node8.9.1/lib/node_modules/pm2/bin/pm2-runtime

建立软链接

ln -s /usr/local/node8.9.1/bin/pm2  /usr/local/bin/pm2

Nuxt官方部署教程如下:https://zh.nuxtjs.org/guide/commands
根据教程上提示
需要先后执行以下命令

nuxt build
nuxt start

但是楼主安装的时候提示

[root@jsyfpre001 shop]# nuxt build
-bash: nuxt: command not found

解决方法如下:
把nuxt自带的nuxt命令放到项目的要目录下
执行软链(放到根目录)命令如下:

 ln -s /data/www/project/shop/yf_mall_v1.0.5/node_modules/nuxt/bin/nuxt /data/www/project/shop/yf_mall_v1.0.5/nuxt

此时项目目录为:

[root@jsyfpre001 yf_mall_v1.0.5]# ls -al
total 228
drwxr-xr-x   12 root root   4096 Feb  6 19:14 .
drwxr-xr-x    5 root root   4096 Feb  6 12:02 ..
-rw-r--r--    1 root root   1536 Feb  6 12:03 app.html
drwxr-xr-x    4 root root   4096 Feb  6 12:03 assets
drwxr-xr-x    6 root root   4096 Feb  6 12:03 components
-rw-r--r--    1 root root    207 Feb  6 12:03 .editorconfig
-rw-r--r--    1 root root  28623 Feb  6 12:03 element-variables.scss
-rw-r--r--    1 root root  11515 Feb  6 12:03 .eslintrc.js
-rw-r--r--    1 root root     92 Feb  6 12:03 .gitignore
drwxr-xr-x    2 root root   4096 Feb  6 12:03 layouts
drwxr-xr-x    2 root root   4096 Feb  6 12:03 middleware
drwxr-xr-x 1106 root root 114688 Feb  6 14:18 node_modules
lrwxrwxrwx    1 root root     64 Feb  6 19:14 nuxt -> /data/www/project/shop/yf_mall_v1.0.5/node_modules/nuxt/bin/nuxt #楼主添加: 注意此行
-rw-r--r--    1 root root   2950 Feb 23 14:20 nuxt.config.js
-rw-r--r--    1 root root   1150 Feb 23 14:20 package.json
drwxr-xr-x   24 root root   4096 Feb 23 14:20 pages
drwxr-xr-x    2 root root   4096 Feb 23 14:20 plugins
-rw-r--r--    1 root root   2843 Feb 23 14:20 README.md
drwxr-xr-x    9 root root   4096 Feb 23 14:20 static
drwxr-xr-x    2 root root   4096 Feb 23 14:20 store
drwxr-xr-x    4 root root   4096 Feb 23 14:20 .svn

如果此时还会出现以下错误,:

[root@jsyfpre001 shop]# nuxt build
-bash: nuxt: command not found

把命令修改为以下的命令就OK了

[root@jsyfpre001 shop]# ./nuxt build

注:官方推荐的根目录package.json配置信息如下:

 { 
  “name”:“my-app”,
  “dependencies”:{ 
    “nuxt”:“latest” 
  },
  “scripts”:{ 
    “dev”:“nuxt 
    ”build“:”nuxt build“, 
    ”start“:”nuxt start“
  }
}

我的配置信息如下:

{
  "name": "my-app",
  "dependencies": {
    "next": "latest"
  },
  "scripts": {
    "dev": "nuxt",
    "start": "nuxt start -p $PORT",
    "build": "nuxt build && PORT=8205 npm start"
  }
}

注: 为方便与pm2守护进行结合, 使用更加方便nuxt.js服务端渲染应用部署这样就完成了
官方先后执行 npm run build 、npm start 即可完成部署。
而我这边只要执行 npm run build ,其实我只是把两个合并成一个,并设置了端口以便区别其他应用,避免端口占用!

简单说一下nuxt命令(来自官方):

nuxt 启动一个热加载的Web服务器(开发模式,端口默认3000) localhost:3000。
nuxt build 利用webpack编译应用,压缩JS和CSS资源(发布用)。
nuxt start 以生成模式启动一个Web服务器 (nuxt build 会先被执行)。
nuxt generate 编译应用,并依据路由配置生成对应的HTML文件 (用于静态站点的部署)。

下面启动Nuxt项目
到项目目录下用pm2执行启动Nuxt项目命令

pm2 start npm --name "jsyfShopNuxt" -- run start

pm2 list # 查看当前正在运行的进程
pm2 start all  # 启动所有应用
pm2 restart all  # 重启所有应用
pm2 stop all # 停止所有的应用程序
pm2 delete all # 关闭并删除所有应用
pm2 logs # 控制台显示所有日志

pm2 start 0  # 启动 id为 0的指定应用程序
pm2 restart 0  # 重启 id为 0的指定应用程序
pm2 stop 0 # 停止 id为 0的指定应用程序
pm2 delete 0 # 删除 id为 0的指定应用程序

pm2 logs 0 # 控制台显示编号为0的日志
pm2 show 0  # 查看执行编号为0的进程
pm2 monit jsyfShopNuxt # 监控名称为jsyfShopNuxt的进程

注:
pm2官网: http://pm2.keymetrics.io/
pm2-github: https://github.com/Unitech/pm2

你可能感兴趣的:(vue)