隐藏

前端用node及forever部署

发布:2023/11/12 13:17:16作者:管理员 来源:本站 浏览次数:466

1、启动文件与打包文件的关系


(1)、http-sever.js文件在dist下文件下


   // 配置地址

   const clientPort = '8888'

   // node启动服务

   var http = require('http')

   var fs = require('fs')

   var url = require('url')

   var path = require('path')

   var server = http.createServer(function (request, response) {

       //获取输入的url解析后的对象

       var pathObj = url.parse(request.url, true);

       //static文件夹的绝对路径

       var staticPath = __dirname;

       //获取资源文件绝对路径

       var filePath = path.join(staticPath, pathObj.pathname=='/'?'/index.html':pathObj.pathname)

       //异步读取file

       console.log(filePath);

       fs.readFile(filePath, 'binary', function (err, fileContent) {

           if (err) {

               console.log('404')

               response.end('<h1>404 Not Found</h1>')

           } else {

               console.log('ok')

               response.write(fileContent, 'binary')

               response.end()

           }

       })

   })

   server.listen(clientPort)

   console.log('visit http://localhost:'+clientPort)


(2)、server.js与dist文件的层级不同情况(待添加)


   var express =  require('express')//加载express构造函数

   

   

   var app = express() //生成创建服务的实例

   

   app.use(express.static('dist')) //指定静态资源路径

   

   

   app.listen(8022,function(){

    console.log("启动成功")

   })


2、linux常用命令


   (1)、1 1

   (2)、移动某文件到另外文件

         a、(当前文件)mv 文件名 要去的文件路径下

         b、(指定文件) mv 要移动的文件路径 要去的文件路径下

   (3)、解压某个文件 ubzip

   (4)、运行某个特殊文件 ./hh.sh


linux入门-nodejs的安装及配置


作者:MsgSS

链接:https://www.jianshu.com/p/21e42cd362e7

来源:简书


这里介绍如何通过nodejs官网编译包的形式在linux服务器上安装nodejs。

1、检查是否已安装


对于操作系统而言,不管什么软件或者系统,都是目录结构和文件,特别在linux下目录的概念更加明显,所以可以说安装软件就是复制文件和目录。


尽管大部分服务器不会默认给你安装nodejs,但是也有些镜像比较良心内置了nodejs,所以在在开始安装前我们可检查下是否安装了nodejs(当然顺便也检查下npm),我们远程登陆linux后,在输入以下命令分别检查nodejs和npm是否安装了:


   whereis    nodejs


   whereis   npm


如果系统提示没有找到相关路径,那么这表明没有安装,我们接着往下看


2、下载nodejs编译包


我们在window上是直接下载exe,双击安装就可以了,而在linux上不太一样。我们先打开nodejs下载页面:http://nodejs.cn/download/,选择合适的linux版本编译包


选择linux二进制编译包


点击下载就可以了,这里提供两种方式,第一种是下载到window本机,然后通过pscp.exe上传到服务器,第二种是直接在linux服务器上使用wget下载,推荐使用第二种


如前面拿到下载地址为:https://npm.taobao.org/mirrors/node/v10.13.0/node-v10.13.0-linux-x64.tar.xz


我们远程linux,输入(putty工具右键直接粘贴复制的内容)


   wget   -c   https://npm.taobao.org/mirrors/node/v10.13.0/node-v10.13.0-linux-x64.tar.xz


即可下载,如




使用wget下载文件


查看一下文件


   ls


ls


发现目标文件以及下载完成了,接着我们就要解压文件了


(PS:mysql....rpm是后续安装mysql数据库用的,这里先忽略)


3、解压编译包


前面也说到,软件就是文件和目录的一个集合,所以我们下载的node-v10.13.0-linux-x64.tar.xz解压后就可以正常执行了,当然了,目录也不要随便放,不好维护。


首先我们解压文件到当前目录


   tar    -xvf    node-v10.13.0-linux-x64.tar.xz




解压文件


(PS:说一个小tip,在关于路径和文件名时,主要输入了前面几个字符后,按一下tap键,系统会自动补全,这在window的cmd和一些代码编辑器上也是通用的)


很愉快就把文件解压到了当前目录(/root/),可是我们的软件需要放到合适的地方才好,就像在window下安装软件的时候我们一般都不装在C盘一个意思,所以我们现在把这个文件夹复制或者剪切到另一个目录下。


在linux下有一个目录是专门拿来放软件的,那就是/usr/,注意不是/user/,如果我们去查看它的文件结构我们会注意下面又有几个比较特殊的文件夹,分别是/bin、/local、/sbin等。




查看/usr/目录结构


这几个特殊目录下都是放一下可执行文件的,如


   /usr/bin    系统预设的可执行文件,如开关机在这里,优先级最高


   /usr/local/bin   用户本身相关的可执行文件,如自己安装的软件推荐放在这里,会提升到全局


   /usr/sbin    基本同上


可以把我们刚刚的文件放到/usr/local/bin下,这样就可以直接全局使用,而且不用设置软连接,不过我这里由于习惯问题,我会把文件放到/usr/sbin文件夹下,具体流程是一样的。


我们还是回到刚刚下载解压的文件那里,为了方便,我们先把文件重命名成nodejs


   cd   ~


   mv   node-v10.13.0-linux-x64   nodejs  




重命名nodejs


linux下的重命名命令是(mv   源文件路径   新文件路径),和移动文件move的命令一样


当然机智的你肯定是用tap键自动补全命令的,不要一个字母一个字母这样敲


重命名后我们查看一下nodejs的bin文件夹有什么可执行文件




ls


可以看到有npm、node和npx三个,这三个都是可执行文件


那么重头戏来了,我们需要把/root/nodejs文件夹移动到/usr/sbin/目录下


   mv    /root/nodejs/     /usr/sbin/




移动


推荐使用绝对路径,而不是相对路径。执行完成后root路径下的nodejs文件夹会被移动到/usr/sbin/下。


4、配置软链接


为了使nodejs能够全局使用,我们需要配置一下软链接(类似于快捷方式,如果安装的路径在/usr/local/bin/下不需要这一步操作),当然也是软连接到用户目录下/usr/local/bin/


软链接的命令很简单: ln    -s   源文件   目标路径


   ln -s  /usr/sbin/nodejs/bin/node    /usr/local/bin/


   ln -s  /usr/sbin/nodejs/bin/npm    /usr/local/bin/


上面两句命令就是把node和npm可执行文件链接到/usr/local/bin/目录下,相当在全局环境中加了两个快捷方式(也可以理解成系统变量)


5、检查安装结果


配置了这么久,我们看一下效果怎么样。因为前面我们配的是全局路径,所以应该在任意一个路径执行node或者npm都应该是可行的,我们可以试一下下面两句命令


   node  -v


   npm   -version


查看版本


当然也可以利用whereis   node  查看具体路径(查询出来的是快捷方式的路径)


到这里nodejs的安装就完成了


6、配置淘宝镜像


然鹅~~,对于想要配置淘宝镜像的小伙伴,使用方式可window下的一样,我们需要下载cnpm,命令如下:


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


安装成功后,cnpm可执行文件会下载到nodejs的安装目录下(也就是/usr/sbin/nodejs/bin/)。接着我们把cnpm配置到全局下,也就是创建软链接到/usr/local/bin/下(如果本来就在该目录下不要做软连接)


    ln   -s    /usr/sbin/nodejs/bin/cnpm      /usr/local/bin/  


这时候我们就可以使用cnpm来下载模块了,速度那是杠杠的




cnpm


一般使用第二种方式forever;


forever,forever功能很强大,也很多,此处只列出目前用到的一些基本的


2.1 安装forever


npm install forever -g


   ln -s /usr/sbin/node-v10.13.0-linux-x64/bin/forever  /usr/local/bin/forever(看你安装的什么文件)


2.2 启动服务


   service forever start


此处可能会报一些错误,一般可以不用理会,主要是看它的命令是否执行;


2.3 使用forever 启动js


   forever start app.js


启动完可以跟一句 forever list   查看启动情况


2.4 停止js文件


   forever stop app.js


2.5 输出日志


   forever start -l forever.log -o out.log -e err.log app.js


输出日志的命令,注意日志的文件名不要重复,否则会报错,其中forever.log 会在/root/.forever/目录下;


查看运行情况 使用 tail -f out.log 即可;


其实默认情况下/root/.forever/还是会生成日志文件的,只不过日志的名字是随机字符串,不好管理,只可根据时间做判断;


2.6 带参数启动


   forever start app.js -tu http://127.0.0.1:8181/javaweb/ -lp 3001


   forever start app.js -tu http://127.0.0.1.53003/javaweb/ -lp 3002


自然,参数的具体含义需要在代码中约定好的;


2.7 重启js文件


   forever restart app.js


此命令会重启所有之前启动的服务,且之前启动时的参数保留,日志文件保留


启动结果如下:


非常实用的一个命令;


2.8 查看正在运行的进程


   forever list


   # 作为前台任务启动

   $ forever server.js

   

   # 作为服务进程启动

   $ forever start app.js

   

   # 停止服务进程

   $ forever stop Id

   

   # 重启服务进程

   $ forever restart Id

   

   # 监视当前目录的文件变动,一有变动就重启

   $ forever -w server.js

   

   # -m 参数指定最多重启次数

   $ forever -m 5 server.js

   

   # 列出所有进程

   $ forever list


最后,要开机自启动依赖于代码


   在/etc/rc.d/rc.local 加入运行的shell脚本(即在rc.local中添加如下的代码)


/root/service/app‐start.sh


shell脚本(app-start.sh)



   source /etc/profile

   echo "run monitor============"

   cd /root/service/monitor

   nohup java ‐jar cdmtc.monitor‐1.0.0.jar >monitor.log 2>&1 &

   echo "monitor is starting============"

   

   echo "run sysmanage============"

   cd /root/service/sysmanage

   nohup java ‐jar sysmanage‐0.0.1‐SNAPSHOT.jar > sysmanage.log 2>&1 &

   echo "sysmanage is starting============"

   

   echo "run gateway============"

   cd /root/service/gateway

   nohup java ‐jar cdmtc.qb.gateway‐0.0.1‐SNAPSHOT.jar >gateway.log 2>&1 &

   echo "gateway is starting============"

   

   echo "run eureka============"

   cd /root/service/eureka

   nohup java ‐jar cdmtc.eureka‐1.0.0.jar >eureka.log 2>&1 &

   echo "eureka is starting============"

   

   echo "run textresolver============"

   cd /root/service/textresolver

   nohup java ‐jar cdmtc.textresolver‐1.0.0.jar >textresolver.log 2>&1 &

   echo "textresolver is starting============"

   

   //前端启动

   echo "run dist============"

   cd /root/service/dist

   nohup forever start http-server.js

   echo "dist is starting============"


注意更改权限 chmod +x app-start.sh