当前位置: 首页 > Web前端 > vue.js

node+ejs+pm2发布

时间:2023-03-31 23:03:18 vue.js

项目介绍一个需要seo的小网站,不考虑nuxt或者ssr;业务不复杂,直接node+ejs;前端使用node将请求转发给真正的后端接收数据,完成前后分离;在线使用nginx代理,使用pm2创建进程管理目录创建一个空文件夹,在这个cmd中进行如下操作。请注意一定不能使用powershell,否则windows会报express的安全策略错误。npminstallexpressexpress-generator-g//如果已经安装则忽略express-emyapp//使用express-generator快速生成项目//启动项目cdmyappnpminstallnpmstart基本配置1、package.json的配置做没关系,主要是修改scripts字段,配置启动端口和启动方式;"scripts":{"start":"node./bin/www","dev":"setNODE_ENV=development&&setPORT=4747&&node./bin/www",},2,pm2的配置。config.js在项目根目录下创建一个pm2.config.js文件,这个文件主要是对pm2module.exports={apps:[{name:"demo",script:'./bin/www',exec_mode:“集群”,实例:1,error_file:“./logs/err.log”,out_file:“./logs/out.log”,merge_logs:true,log_date_format:“YYYY-MM-DDHH:mm:ss",ignore_watch:'logs',env:{NODE_ENV:'production',PORT:4747}}]}在本地启动项目时,使用node进行正常的npmrundev启动;如果在线只需使用pm2启动;在控制台使用pm2startpm2.config.js--envproduction--watch启动;最终得到这样一个目录转发请求,需要转发到app.js中的真实后台;varquerystring=require('querystring');//提供解析和格式化URL查询字符串的实用工具console.log(myTrim(process.env.NODE_ENV))//myTrim是去除前后空格的函数,在这里折腾了很久varmyhost='';if(myTrim(process.env.NODE_ENV)=="development"){//可以简单判断环境设置界面地址myhost="520.131.4.1"//本地后台地址}else{myhost="110.119.120.520"//在线后台}//web为后台接口统一前缀app.all(/\/web/,function(req,res){if(req.url.indexOf('/web')!=-1&&req.method!=="GET"){varstrData=querystring.stringify(req.body)letoptions={host:myhost,//local,后台请求地址port:5222,path:req.url,方法:'POST',};deletereq.headers['content-length'];options.headers=req.headers;//options.headers=Object.assign(options.headers,req.headers);//带上客户端请求头(包括cookie之类的东西)lethttpRequest=http.request(options,函数(res){让_data='';关于s.on('data',function(chunk){_data+=chunk;});res.on('end',function(){sendData(_data);});});//httpRequest.write(strData);//向请求体写入数据httpRequest.write(strData);httpRequest.end();函数sendData(数据){res.send(数据);}}else{res.redirect(302,'/404');返回;}});up服务和nginx配置使用xftp工具将除node_modules以外的所有目录上传到自己服务器的指定目录,然后使用npminstall重新安装。安装完成后,使用pm2startpm2.config.js--envproduction--watch启动项目;如果一切正常,你会得到这样的提示,那么恭喜你,你成功了。现在获取节点后配置nginx;nginx.conf配置文件server{listen80;字符集utf-8;服务器名my.server.com120.119.114.911;位置/{proxy_passhttp://localhost:4747;#这里其实就是用nginx把80端口的服务转给自己的节点服务proxy_set_headerHost$host;proxy_set_headerX-Real-IP$remote_addr;proxy_set_headerX-Forwarded-For$proxy_add_x_forwarded_for;}}配置完成后,使用nginx-c/etc/nginx/nginx.conf-sreload刷新nginx。如果一切正常,您可以使用您配置的域名或地址访问