您当前的位置: 首页 >  centos

知其黑、受其白

暂无认证

  • 0浏览

    0关注

    1250博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

在CentOS使用宝塔使用pm2部署node的express项目

知其黑、受其白 发布时间:2021-02-02 19:06:56 ,浏览量:0

宝塔按钮pm2后,node就装好了。

对于前端开发人员来说,配置后端服务器的工作都是脑瓜疼的,好在宝塔这种可视化工具还是挺好用

在部署上线前,假设你的项目已经写好的了。

1. 在宝塔上添加新的站点

在这里插入图片描述

2. 打包你的项目到站点目录下(我的放在根目录下)

在这里插入图片描述

3. 安装pm2

pm2是一个带有负载均衡功能的Node应用的进程管理器。当你要把你的独立代码利用全部的服务器上的所有CPU,并保证进程永远都活着,0秒的重载, PM2是完美的。

PM2是开源的基于Nodejs的进程管理器,包括守护进程,监控,日志的一整套完整的功能,基本是Nodejs应用程序不二的守护进程选择,事实上它并不仅仅可以启动Nodejs的程序,只要是一般的脚本的程序它同样可以胜任。

主要特性:

内建负载均衡(使用Node cluster 集群模块) 后台运行 0秒停机重载(这项功能允许你重新载入代码而不用失去请求连接。) 具有Ubuntu和CentOS 的启动脚本 停止不稳定的进程(避免无限循环) 控制台检测 提供 HTTP API 远程控制和实时的接口API ( Nodejs 模块,允许和PM2进程管理器交互 ) 在这里插入图片描述

4.点击设置打开pm2配置环境

在这里插入图片描述

4.1选择node的版本跟安装依赖

在这里插入图片描述

5.配置nginx(因为我的宝塔安装的是Nginx)

在nginx站点配置文件下添加(后面的端口号是node设置的那个)

 location / {
	proxy_pass http://127.0.0.1:3033;
 }

在这里插入图片描述

项目配置实例

在这里插入图片描述 在这里插入图片描述 在这里插入图片描述 在这里插入图片描述 查看状态 在这里插入图片描述

在这里插入图片描述 在这里插入图片描述 在这里插入图片描述

node.js留言板代码

目录结构

|--Leavingamessage
|----img
|----|--fyz.jpg
|----public
|----|--css
|----|--js
|----vew
|----|--404.html
|----|--msgadd.html
|----|--msgimdex.html
|----app.js
app.js
//引入文件模块
var fs=require('fs');
//引入http模块
var http=require('http');
//创建web服务器
var server=http.createServer();
//引入URL模块
var url=require('url');
//引入post模块get不需要
var querystring = require('querystring');

var msgs=[
    {name:'张三',content:'我是张三',create_at:'2017-11-14 10:30:32'},
    {name:'李四',content:'我是李四张三',create_at:'2017-11-14 11:30:32'},
    {name:'王五',content:'我是王五张三',create_at:'2017-11-14 12:30:32'}
];

//监听请求 req - request请求 res - response 响应
server.on('request', function(req, res) {
	
    if(req.url=='/'){
        fs.readFile('./vew/msgindex.html','utf8',function(err,data){
            if(err) res.end('404 Not fund');
            //遍历数据拼接数据 jq $.each 也可以通过js的 数据foreach
            var html='';
            msgs.forEach(function(item){
                html+=`
                
  • ${item.name}说:${item.content}日期${item.create_at}
  • `; }); console.log(html,12212) //将拼接的视图里面的笑脸替换成遍历数据 var data=data.replace('^_^',html); console.log(data) res.write(data); res.end(); }); }else if(req.url=='/add'){ fs.readFile('./vew/msgadd.html','utf8',function(err,data){ if(err) res.end('404 Not fund'); res.write(data); res.end(); }); }else if(req.url.indexOf('/action')==0){ console.log(123) if(req.method=='POST'){ //post提交数据过大所以需要分片获取 var postData=''; req.on('data',function(chunk){ postData+=chunk; }); //end事件等于数据传输完毕 req.on('end',function(){ //通过querystring模块将字符串数据转化为对象 parpost=querystring.parse(postData); console.log(parpost,121212); var date = new Date(); var year = date.getFullYear(); //获取当前年份 var mon = date.getMonth()+1; //获取当前月份 var da = date.getDate(); //获取当前日 var day = date.getDay(); //获取当前星期几 var h = date.getHours(); //获取小时 var m = date.getMinutes(); //获取分钟 var time2=year+'年'+mon+'月'+da+'日'+'星期'+day+' '+h+':'+m; var msg={name:parpost.name,content:parpost.content,create_at:time2}; msgs.push(msg); console.log(msgs,232323); res.statusCode=302; res.setHeader('Location','/'); res.end(); }); }else{ //1.接收数据 //2.入库(压入数据到数组 push pop) //3.跳转 var par=url.parse(req.url,true).query; //console.log(par); var date = new Date(); var year = date.getFullYear(); //获取当前年份 var mon = date.getMonth()+1; //获取当前月份 var da = date.getDate(); //获取当前日 var day = date.getDay(); //获取当前星期几 var h = date.getHours(); //获取小时 var m = date.getMinutes(); //获取分钟 var time2=year+'年'+mon+'月'+da+'日'+'星期'+day+' '+h+':'+m; var msg={name:par.name,content:par.content,create_at:time2}; msgs.push(msg); console.log(msgs,121212); res.statusCode=302; res.setHeader('test.cc','/'); res.end(); } }else if(req.url.indexOf('/public')==0){ fs.readFile('./'+req.url,'utf8',function(err,data){ if(err) res.end('404 Not fund'); res.write(data); res.end(); }); }else if(req.url.indexOf('/img')==0){ fs.readFile('./'+req.url,'utf8',function(err,data){ if(err) res.end('404 Not fund'); //res.write(data); //设置请求的返回头type,content的type类型列表见上面 res.setHeader("Content-Type", 'image/jpg'); //格式必须为 binary 否则会出错 var content = fs.readFileSync('./'+req.url,"binary"); res.writeHead(200, "Ok"); res.write(content,"binary"); //格式必须为 binary,否则会出错 res.end(); }); }else{ fs.readFile('./vew/404.html','utf8',function(err,data){ if(err) res.end('404 Not fund'); res.write(data); res.end(); }); } }); //启动服务 server.listen(6800,function(){ console.log("服务启动成功,访问:http://test.cc:6800"); });
    msgindex.htm
    
    
      
        
        
        
    
        
        
        
        
        留言板列表
      
      
        留言板列表
        
            ^_^
        
        
        
        
        
        
      
    
    
    msgadd.html
    
    
      
        
        
        
    
        
        
        
        
        留言板列表
      
      
        留言板添加数据
        
            
              用户名
              
            
            
              内容
              
            
            提交
    
          
        
        
        
        
        
      
    
    

    此时项目配置好后即可运行。

    关注
    打赏
    1665558895
    查看更多评论
    立即登录/注册

    微信扫码登录

    0.0499s