关于pm2:PM2-优雅退出

在日常开发过程中,常常会用到 pm2 来起到服务,甚至会用 watch 来实现热更新。 但下面这种模式并不适宜用在生产环境中,因为 pm2 零延时重启,会导致正在解决的申请间接被销毁,如果数据库没加事务,间接就会导致数据库的数据不残缺。 解决办法是延时 kill,参数是--kill-timeout。 在启动的app.js中增加SIGINT的监听,并在回调中用残余的timeout工夫解决数据。 process.on('SIGINT', function() { db.stop(function(err) { process.exit(err ? 1 : 0) })})启动形式如下: pm2 start app.js --kill-timeout 3000重载就会触发。 pm2 reload理论问题个别应用 pm2,咱们是心愿 pm2 给咱们提供负载平衡,每次 pull 好代码,reload 一下就能降级到最新的服务,而不须要从 Nginx 上下手。然而默认状况下 pm2 间接重启会导致正在解决的申请失落。所以咱们心愿 PM2 在重启前,能够先告诉 App,并给足够的工夫让 App 解决完正在解决的申请,并且不再接管新的申请,而后再重启服务。 咱们能够把下面的例子改成这样。 process.on('SIGINT', function() { global.app.running = false; db.stop(function(err) { process.exit(err ? 1 : 0) })})global.app.running为整个服务的全局变量,只有服务启动就赋值为true,并且在所有理由拦截器中减少判断逻辑:只有true时才接管申请,这样就能保障当global.app.running为false时,正在解决的申请不会被销毁,所有起初进入的申请都失败,从而保障数据库完整性。 然而这种拦挡形式太过于粗犷,只是保障数据库残缺,然而仍然达不到平滑,平滑降级还有很多路要走。 参考链接Graceful Stop

January 5, 2022 · 1 min · jiezi

关于pm2:PM2让Nodejs项目在服务器崩溃重启后能自启动

一、问题简介当服务器意外解体重启后,Node.js要可能自启动,复原服务。 二、解决方案1、三步实现# 1、创立启动脚本 pm2 startup# 2、下面命令会输入相似如下提醒,依照提醒执行[PM2] You have to run this command as root.Execute the following command: sudo su - c "env PATH=$PATH:/home/unitech/.nvm/versions/node/v14.3/bin pm2 startup <distribution> -u <user> --hp <home-path> # 3、保留正在运行的利用到启动脚本 pm2 save# 当初能够重启服务器,看看 node.js 我的项目是否能自启动2、其余# 复原上一次保留的自启动列表 pm2 resurrect# 勾销自启动 pm2 unstartup# 当 node.js 版本更新时,请肯定要卸载并新建 自启动脚本 pm2 unstartup pm2 startup三、参考文档PM2让Node.js我的项目在服务器解体重启后,能自启动!

November 26, 2021 · 1 min · jiezi

关于pm2:PM2用配置文件管理多个Nodejs项目

一、问题简介有多个 Node.js 过程须要一起治理时,各自须要的参数也不同时,创立一个配置文件来治理是最好的计划。 二、解决方案1、生成根底版本配置文件pm2 init simple :能够生成根底版本的配置文件:ecosystem.config.js // ecosystem.config.jsmodule.exports = { apps: [{ name: "app1", script: "./app.js" }]}2、生成简单版本的配置文件pm2 init 等同于 pm2 ecosystem ,能够生成带有 deploy 属性的配置文件:ecosystem.config.js module.exports = { apps: [{ script: 'index.js', watch: '.' }, { script: './service-worker/', watch: ['./service-worker'] }], deploy: { production: { user: 'SSH_USERNAME', host: 'SSH_HOSTMACHINE', ref: 'origin/master', repo: 'GIT_REPOSITORY', path: 'DESTINATION_PATH', 'pre-deploy-local': '', 'post-deploy': 'npm install && pm2 reload ecosystem.config.js --env production', 'pre-setup': '' } }};此版本配置适宜近程配置服务器应用,实例查看这里!3、应用配置文件启动、进行、重启、重载、删除配置文件中所有我的项目 ...

November 26, 2021 · 1 min · jiezi

关于pm2:PM2用监控模式实时更新Nodejs项目

一、问题简介监控目录下所有文件,只有有文件更新就立即重启。 二、解决方案1、--watch监控我的项目目录下所有文件,任意文件有改变,就主动重启 node.js 我的项目。 # 1、装置 pm2 npm install pm2 @latest -g # or yarn global add pm2# 2、转到 node.js 我的项目根目录下 cd < 我的项目根目录 ># 3、用 pm2 启动 node.js 我的项目,我的项目目录下有文件改变就重启 pm2 start app.js--watch# 当初就能够失常拜访 node.js 我的项目了,且能够查看我的项目状态 pm2 list pm2 log2、--ignore-watch能够去除一些不须要监控的目录或文件。 # 监控除了 node_modules 目录以外文件 pm2 start app.js --watch --ignore-watch="node_modules"3、配置文件中设置监控的办法状况1:监控和疏忽具体文件 module.exports = { script: "app.js", // 监控这两个文件夹 watch: ["server", "client"], // 监控工夫距离 watch_delay: 1000, // 疏忽这两个文件夹 ignore_watch: ["node_modules", "client/img"],}状况2:监控我的项目目录下所有文件 module.exports = { script: "app.js", watch: true}三、restart 与 reload 区别restart 会杀掉现有过程 并 启动新过程,服务会中断;reload 不会杀掉现有过程,在现有过程从新加载,服务不会中断; ...

November 26, 2021 · 1 min · jiezi

关于pm2:PM2用环境变量隔离Nodejs项目的开发与生产环境

一、问题简介develop 和 production 运行的环境有很大差异,譬如两个环境下的数据库地址、用户名等都是不一样的,硬编码这些参数不是好的抉择,通过环境变量能够很好解决。 二、解决方案1、生成配置文件pm2 init simple // 生成默认配置文件:ecosystem.config.jsmodule.exports = { apps : [{ name : "app1", script : "./app.js" }]}2、增加环境变量配置// ecosystem.config.jsmodule.exports = { apps: [{ name: "app1", script: "./app.js", env: { "ip": "192.168.1.2", "NODE_ENV": "development" }, env_production: { "ip": "192.168.1.1", "NODE_ENV": "production", } env_develop: { "ip": "192.168.1.2", "NODE_ENV": "develop", } }]}3、调用环境变量env 默认环境变量,只有启动利用:pm2 start ecosystem.config.js ,那么 ip 变量就会被传递给利用 app1env_production 对应调用形式是:pm2 start ecosystem.config.js --env productionenv_develop 对应调用形式是:pm2 start ecosystem.config.js --env develop规定是 :配置文件中定义 env_ 结尾的属性,那么就用 --env 参数调用。4、--update-env : 更新环境变量NODE_ENV=production pm2 restart web-interface --update-env三、参考文档PM2用环境变量隔离Node.js我的项目的开发与生产环境!

November 26, 2021 · 1 min · jiezi

关于pm2:PM2用Cluster-Mode不用修改代码即可提升Nodejs项目性能

一、问题简介cluster mode 就是在单台服务器上,开启多个雷同 node.js我的项目 过程,独特解决网络申请服务,让 node.js我的项目 解决并发和响应速度达到最高性能。 二、解决方案法一:命令启动 # 启动多个 node.js我的项目过程(过程数量 = cpu核数量) pm2 start app.js -i 0法二:配置文件启动 // 1、配置文件(processes.json),设置如下module.exports = { apps: [{ script: "api.js", instances: "max", exec_mode: "cluster", // 开启过程间的负载平衡模式 }]}# 2、用配置文件启动 node.js 我的项目 pm2 start processes.json三、其余重要阐明1、-i 前面的数字阐明0/max :开启过程数量 == cpu核数量-1:过程数量 == cpu核数量 - 1四、参考文档PM2用Cluster Mode,不必批改代码即可晋升Node.js我的项目性能!

November 26, 2021 · 1 min · jiezi

关于pm2:PM2实时查看Nodejs项目的输出日志

一、问题简介只有通过PM2 启动的Node.js我的项目,能够十分不便的查看其输入日志。 二、解决方案1、常用命令# 显示所有利用的实时日志 pm2 logs# 显示 api 利用的日志 pm2 logs api# json格局显示所有利用的日志 pm2 logs --json# 显示1000行 big-api 的日志 pm2 logs big-api --lines 1000 # 用仪表盘显示所有利用 pm2 monit2、让输入日志加上工夫pm2 start app.js --timepm2 restart app --time3、默认日志的门路HOME/.pm2/logs4、查看日志命令的可用选项pm2 logs -h5、启动利用时,怎么初始化日志相干信息pm2 start app.js [OPTIONS]-l --log [path] specify filepath to output both out and error logs-o --output <path> specify out log file-e --error <path> specify error log file--time prefix logs with standard formated timestamp--log-date-format <format> prefix logs with custom formated timestamp--merge-logs 实用 cluster mode6、cluster mode 中,让所有过程日志都写进同一个日志# 命令启动,加上选项 pm2 start app.js -i max --merge-logs <具体日志文件># 配置文件中,设置属性: merge_logs: true7、不须要输入日志module.exports = { apps: [{ name: 'Business News Watcher', script: 'app.js', instances: 1, out_file: "/dev/null", error_file: "/dev/null", cron_restart: '0 0 * * *', [...] }]}8、革除日志# 革除所有利用的日志 pm2 flush# 革除 api 利用的日志 pm2 flush <api>9、日志文件的大小,以及日志保留多久等性能须要额定插件反对:pm2 install pm2-logrotatepm2-logrotate - 官网阐明三、参考文档PM2实时查看Node.js我的项目的输入日志!

November 26, 2021 · 1 min · jiezi

关于pm2:PM2安装方式及其常用命令

一、PM2 的基本操作命令1、pm2 装置pm2 的装置须要 node.js 的环境,npm 是 node.js 内置利用,怎么装置 node.js ,看这里!。 npm install pm2@latest -g# oryarn global add pm2# 更新 PM2 pm2 update2、pm2 装置目录# pm2装置目录 HOME/.pm2 # pm2运行日志,能够查看程序运行谬误 HOME/.pm2/pm2.log HOME/.pm2/pm2.pid# pm2 治理利用的日志目录 HOME/.pm2/logs # PM2 配置文件 HOME/.pm2/conf.js 3、启动利用# 反对不同文件格式 pm2 start app.js pm2 start bashscript.sh pm2 start python-app.py pm2 start binary-file pm2 start "npm run start" pm2 start "ls -la" pm2 start app.py# 设置启动利用的显示名称 pm2 start app.js --name <app_name># 监控利用目录,一旦有文件产生更改就立即重启利用 pm2 start app.js --watch# 设置利用重启时,能应用内存的最大值 pm2 start app.js --max-memory-restart <200MB># 启动时,传递参数给 app 利用 pm2 start app.js -- arg1 arg2 arg3# 禁止主动重启利用 pm2 start app.js --no-autorestart4、重启、重载、进行、删除pm2 restart app_name|app_id|allpm2 reload app_name|app_id|allpm2 stop app_name|app_id|allpm2 delete app_name|app_id|allpm2 restart app.jspm2 restart app1 app3 app4# 重置 restart 的计时器 pm2 reset all 5、查看运行状态# 查看所有过程信息(app_name、app_id等) pm2 [list|ls|status] # 对利用进行排序查看 pm2 list --sort name:desc # Or pm2 list --sort [name|id|pid|memory|cpu|status|uptime][:asc|desc] # 查看某个利用详情 pm2 describe app_name|app_id pm2 show api6、显示仪表盘在终端上显示仪表盘,展现所有利用的信息:cpu、内存、日志、运行状态等。 ...

November 26, 2021 · 1 min · jiezi

关于pm2:PM2变为文件共享服务器

一、问题简介用 pm2 能够起送开启一个文件服务器,共享文件。首先须要装置 pm2。pm2装置,看这里! 二、解决方案1假如 ~/test 目录下有一个 test.txt 文件 # 开启文件服务器,默认端口是8080,能够依据须要批改pm2 serve ~/test 8080# 浏览器拜访http://localhost:8080/test.text三、解决方案2假如 ~/test 目录下有一个 test.txt 文件 # 1、切换到共享目录cd ~/test# 2、新建配置文件 : ecosystem.config.jspm2 init simple# 3、批改配置文件为如下内容module.exports = { apps: [{ name: "serve", script: "serve", env: { PM2_SERVE_PATH: '.', PM2_SERVE_PORT: 8080 } }]}# 4、启动服务pm2 start ecosystem.config.js #或者pm2 start# 5、浏览器拜访http://localhost:8080/test.text四、解决方案3假如共享目录有index.html 文件,文件内容如下。访问共享目录时,默认关上 index.html <!DOCTYPE html><html><head> <meta charset="utf-8"> <title>pm2 serve</title></head><body> <h1>Welcome</h1> <p>这是 pm2 服务器!</p></body></html>法一:命令启动 # 1、切换到共享目录cd ~/test# 2、启动服务pm2 serve --spa# 3、拜访http://localhost:8080法二:配置文件启动 # 1、切换到共享目录 cd ~/test# 2、新建配置文件 : ecosystem.config.js pm2 init simple# 3、批改配置文件为如下内容module.exports = { apps: [{ name: "serve", script: "serve", env: { PM2_SERVE_PATH: '.', PM2_SERVE_PORT: 8080, PM2_SERVE_SPA: 'true' } }]}# 4、启动服务 pm2 start ecosystem.config.js #或者 pm2 start# 5、浏览器拜访 http://localhost:8080五、解决方案4应用用户名和明码来拜访服务。 ...

November 26, 2021 · 1 min · jiezi

关于pm2:学习PM2从这里开始

一、PM2是什么?PM2是 node.js我的项目 的过程管理工具,罕用性能如下: 让 node.js我的项目 能在文件更新时主动重启;让 node.js我的项目 能在服务器异样重启后也能主动启动;能够试试查看 ndoe.js我的项目 的输入日志,曾经批改调整日志输入格局,加上工夫前缀等;让 node.js我的项目 部署在多台近程服务器上,且能实现我的项目版本自动更新公布等自动化操作;让 node.js我的项目 不扭转代码的状况下,开启多个过程晋升服务性能,还能让过程间实现负载平衡;二、一个简略实例1、怎么用 pm2 命令启动 node.js 我的项目?pm2 的装置须要用到 node.js 环境。怎么装置 node.js 看这里! # 1、装置 pm2 npm install pm2@latest -g# 2、转到 node.js 我的项目根目录下 cd <我的项目根目录># 3、用 pm2 启动 node.js 我的项目 pm2 start app.js # 当初可用浏览器失常拜访 node.js 我的项目了,且能够查看我的项目状态 pm2 list pm2 log三、具体应用场景1、PM2 常用命令装置、启动、进行、查看过程信息等罕用操作阐明。详情,看这里! 2、查看日志查看 pm2 治理的 Node.js 过程,输入的日志信息(包含谬误日志)。详情,看这里! 3、配置文件治理利用用配置文件治理多个 Node.js 我的项目,轻松不便!详情,看这里! 4、进步 Node.js 性能不必批改代码,就能够进步 Node.js 我的项目解决并发和响应速度的性能。详情,看这里! 5、近程自动化部署一句命令,能够让多台服务器同时下载git仓库代码 并编译更新,主动公布 Node.js 我的项目。详情,看这里! ...

November 26, 2021 · 1 min · jiezi

局域网-pm2-离线安装

大家习惯了公网下边安装pm2,速度还是蛮快的,也不用去担心安装后是否可以正常使用,按照网上大部分方法安装都可正常使用;但是局域网下安装确实少见,但是有些特殊情况下还需要本地部署。针对无公网本地怎么部署到服务器,记录一下我的部署过程。 1、 首先在公网下正常安装pm2,这就很简单了。npm install pm2 -g //全局安装2、 将pm2打包下载到本地A、到安装好的文件包找到pm2, 路径 node/lib/node_modules/ //你会看到安装的文件 pm2B、打包 tar czvf pm2.tar.gz pm2/ //将pm2打包到node/lib/node_modules/下C、下载到本地 到此准备工作完成,下一步是部署到局域网服务器。 3、部署到局域网服务器首先安装node到目录/usr/local/下,具体方法这里不再过多讲述。下边重点来了。A、将打包文件上传服务器目录/usr/local/node/lib/node_modules/目录下,可以看到npm文件包,你就放置对了。 B、解压压缩包 tar xvf pm2.tar.gz到这一步你可以尝试使用一下pm2命令/usr/local/node/lib/node_modules/pm2/bin/pm2 C、使用总不能每次搞大串代码来启东程序吧,太不人性化,添加一个链接到服务区全局环境中,方法: 第一步,添加到node环境中 /usr/local/node/bin目录下: ln -s /usr/local/node/lib/node_modules/pm2/bin/pm2 /usr/local/node/bin/pm2ln -s /usr/local/node/lib/node_modules/pm2/bin/pm2-dev /usr/local/node/bin/pm2-devln -s /usr/local/node/lib/node_modules/pm2/bin/pm2-docker /usr/local/node/bin/pm2-dockerln -s /usr/local/node/lib/node_modules/pm2/bin/pm2-runtime /usr/local/node/bin/pm2-runtime第二步:添加到linux全局环境下, 也就是/usr/local/bin目录下 ln -s /usr/local/node/bin/pm2 /usr/local/bin/pm2测试一下,直接输入pm2,出现以下场景,可以宣布大功告成,祝贺一下。 (原创文章,装在注明出处,谢谢合作)

July 16, 2019 · 1 min · jiezi

pm2-发布-node-配置文件ecosystemjson

背景最近在搭建一个node+koa+vue的项目使用到了pm2发布这里简单的记录一下在根目录新建文件ecosystem.json { "apps": [ { "name": "ant-help-center", "script": "./bin/www", //启动脚本 "env": { "COMMON_VARIABLE": "true" }, // 测试服务器 "env_development": { "NODE_ENV": "development", "PORT": 8087 }, // 生产环境 "env_production": { "NODE_ENV": "production", "PORT": 8087 } } ], "deploy": { // 生产环境 "production": { "user": "root", //Nginx服务器上的username "host": ["xxx.xxx.xxx.xxx"], // 服务器地址 "port": "22", "ref": "origin/master", //从指定的分支拉取代码 "repo": "git@gitee.com:xxx/xxxx.git", // 使用 "path": "/www/website/production", //发布到服务器指定的目录下 "ssh_options": "StrictHostKeyChecking=no", //构建在发布 "post-deploy": "npm install && pm2 startOrRestart ecosystem.json --env production", "env": { "NODE_ENV": "production" } }, // 测试环境 "development": { "user": "root", //Nginx服务器上的username "host": ["xxx.xxx.xxx.xxx"], // 服务器地址 "port": "22", "ref": "origin/master", //从指定的分支拉取代码 "repo": "git@gitee.com:xxx/xxxx.git", "path": "/www/website/development", //发布到服务器指定的目录下 "ssh_options": "StrictHostKeyChecking=no", //构建在发布 "post-deploy": "npm install && pm2 startOrRestart ecosystem.json --env development", "env": { "NODE_ENV": "development" } } }}需要注意点:一:repo参数要使用git ssh的地址二:先在服务器创建path 目录目录要有权限 ...

May 15, 2019 · 1 min · jiezi

M2实现Nodejs项目自动部署

PM2实现Nodejs项目自动部署首先简单说下思路:本地git仓库与远程仓库关联(github、码云等平台),然后pm2按照指定配置登录服务器,拉取远程仓库的代码更新,再执行一些指定的命令(如打包等)。 创建本地项目并关联到远程仓库本地新建名为web的项目,进入项目并创建一个简单的Nodejs文件app.js,mkdir web && cd webvi app.js文件内容编辑如下,完成后保存退出:wq!。 // app.sconst http = require('http');const homePage = `<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>Document</title> <style type="text/css"> * { padding: 0; margin: 0; } body { padding: 30px 0; text-align: center; font-size: 16px; background-color: #333; } h1,h2 { color: #fff; } nav { margin-top: 20px; } a { color: #ccc; cursor: pointer; } a:hover { text-decoration: underline; } </style></head><body> <h1>Nodejs部署示例项目</h1> <h2>项目部署上线示例</h2> <nav> <ul> <li><a>列表</a></li> </ul> </nav></body></html>`http.createServer((req,res) => { res.statusCode = 200; res.setHeader('Content-Type','text/html'); res.end(homePage);}).listen(3000, () => { console.log('Sever Running On 3000:');})把本地项目放到远程仓库,可选Github或者码云等平台。首先查看本地是否生成过.ssh目录及目录下是否有私钥及公钥文件ls ~/.ssh如果存在,跳到下一步。如果不存在id_rsa、id_rsa.pub文件,需要先生成一下:"youemail"填写你的邮箱ssh-keygen -t rsa -C "youremail"查看本地公钥的内容并复制内容添加到远程仓库cat ~/.ssh/id_rsa.pub本地仓库关联远程仓库的其他操作这里就不赘述。服务器从远程仓库拉取项目服务器环境:阿里云的ecs,系统是Ubuntu 14.06这一步后面是不需要手动操作的,但我们要做好配置,这里可以先手动拉取远程代码测试一下是否配置成功。 ...

May 3, 2019 · 1 min · jiezi

pm2如何使用

1.安装 建议全局安装 npm i pm2 -g2.生成配置文件ecosystem.config.js 安装完pm2,执行 pm2 init3.配置文件如下,具体参数含义详见官网文档 module.exports = { apps : [{ name: 'xxx', //服务名称 script: './bin/www', // Options reference: https://pm2.io/doc/en/runtime/reference/ecosystem-file/ // args: '', instances: 1, autorestart: true, watch: false, output: './output.log', error: './error.log', env: { NODE_ENV: "local", }, env_dev: { NODE_ENV: "dev", }, env_test: { NODE_ENV: "test", }, env_production: { NODE_ENV: "production", }, max_memory_restart: '1G', wait_ready: true, merge_logs: true }]};4.启动pm2,根据配置文件,--env 传参数对应就是配置文件配置的NODE_ENV的值 pm2 start ecosystem.config.js // 默认传node环境变量是localpm2 start ecosystem.config.js --env dev // 默认传node环境变量是dev5.pm2常用命令: pm2 start|reload|logs|ps|stop|delete ...

April 30, 2019 · 1 min · jiezi

pm2常用指令

1、node守护进程比较1.)node守护进程比较nodemon:开发环境使用,修改后自动重启。 forever:管理多个站点,每个站点访问量不大,不需要监控。 pm2:网站访问量比较大,需要完整的监控界面。2.)pm2主要特性内建负载均衡(使用Node cluster 集群模块) 后台运行 0秒停机重载 开机自启动脚本 停止不稳定的进程(避免无限循环) 控制台检测 提供远程控制和实时的接口API (允许和PM2进程管理器交互)2、pm2常用命令1.)安装$ npm install -g pm2若pm2 -v 不起作用,把node目录下bin添加到PATH路径里2.)单个启动$ pm2 start app.js # 启动$ pm2 start app.js -i 4 # 启动4个应用实例,自动负载均衡$ pm2 start app.js –watch # 启动并监听项目文件变化3.)批量启动新建.json文件如server.json,配置如下:{ “apps”: [{ “name”: “appA”, “script”: “./appA.js”, “watch”: false }, { “name”: “appB”, “script”: “./appB.js”, “watch”: false }]}———————————-# 再执行:$ pm2 start server.json批量启动是以restart模式启动,可以多次执行4.)重启$ pm2 restart app_name|app_id # 重启$ pm2 restart all # 重启所有进程,相当stop+start$ pm2 reload all # 0秒停机重载进程 (用于不间断进程)5.)查看$ pm2 list # 查看进程$ pm2 logs # 查看日志$ pm2 show app_name|app_id # 查看进程详情$ pm2 monit # 查看CPU和内存资源占用6.)停止$ pm2 stop app_name|app_id$ pm2 stop all # 停止所有7.)删除$ pm2 delete app_name|app_id # 从列表中删除指定的进程$ pm2 delete all # 从列表中删除全部进程$ pm2 kill # 杀死守护进程8.)开机自启动$ pm2 startup # 创建开机自启动命令$ pm2 save # 保存当前应用列表$ pm2 resurrect # 重新加载保存的应用列表$ pm2 unstartup # 移除开机自启动9.)pm2更新$ pm2 save # 保存当前应用列表$ npm install pm2 -g$ pm2 update ...

April 3, 2019 · 1 min · jiezi

Docker安装与应用

一、docker安装1、快捷安装快捷安装参考:https://get.daocloud.io/#inst…curl -sSL https://get.daocloud.io/docker | sh2、手动安装1.)先查看内核,更新yum包docker要求CentOS系统的内核版本>3.10$ uname -r$ sudo yum update2.)安装依赖包$ sudo yum install -y yum-utils device-mapper-persistent-data lvm23.)设置国内docker镜像源$ sudo yum-config-manager –add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo4.)如果安装过,卸载旧版本$ sudo yum remove docker docker-common docker-selinux docker-engine5.)查看仓库中所有docker,安装$ yum list docker-ce –showduplicates | sort -r$ sudo yum install docker-ce$ docker -v # 测试3、启动/关闭docker服务**$ sudo systemctl start docker$ sudo systemctl stop docker# 加入随机启动$ sudo systemctl enable docker二、docker常用命令每次使用docker命令都需要sudo,比较麻烦,可以通过以下命令添加当前用户到docker附属组:$ sudo usermod -aG docker 当前用户名 # 需要注销后登录生效1.)查看容器/镜像$ docker ps # 查看本地容器$ docker images # 查看本地镜像# 查看容器详情$ docker inspect xxx# 查看容器top进程$ docker top xxx# 查找远程镜像$ docker search xxx2.)新建容器最少参数的创建# -d:表示后台运行,-it:表示以交互的方式创建,可视化时可通过console打开$ docker run -d -it –name 容器名 –restart always 镜像名更多参数:映射端口、dns、持久存储卷、初始化进程防容器退出# -p:映射端口,–dns:有些容器默认dns解析服务配置不对(/etc/resolv.conf),-v:映射路径(可重复多个),/bin/sh:保持一个进程运行,否则容器会退出$ docker run -dit -p 宿主端口:容器端口 –dns=8.8.8.8 –name 容器名 -v 宿主路径:容器路径 –restart always 镜像:标签 /bin/sh3.)启动/停止容器$ docker start | restart xxx # 启动/重启$ docker stop xxx # 停止容器$ docker kill xxx # 强行终止,关闭进程4.)进入容器# 多窗口同时进入,会同步显示,容易窗口阻塞,适合本地开发$ docker attach xxx# 或者,docker在1.3.X版本,新命令$ docker exec -it xxx /bin/bash5.)删除容器/镜像# 删除容器前,先停止$ docker stop xxx $ docker rm xxx# 删除镜像$ docker rmi xxx # -f 强制删除6.)镜像改名$ docker tag 原镜像 新镜像 # 会生成一个新名,镜像id一样$ docker rmi 原镜像三、镜像构建1、手动构建镜像用基础镜像创建一个容器,手动安装好一切,然后用容器生成镜像:$ docker commit 容器名 新镜像名2、自动构建镜像:Dockerfile1.)Dockerfile配置新建Dockerfile并配置相关内容,下面以配置一个基于alpine的pm2安装并运行node应用为例:# 基础镜像源FROM alpine# 创建者信息MAINTAINER hoby <w.hoby@qq.com># RUN命令:构建过程中执行,常用于安装软件包RUN echo ’nameserver 8.8.8.8’ >> /etc/resolv.conf \ && apk update \ && apk add bash \ && apk add nodejs && apk add npm \ && npm config set registry https://registry.npm.taobao.org \ && npm i -g pm2# 指定工作目录,用绝对WORKDIR /app# 从宿主机copy到容器#COPY ./www.js /app# 与COPY类似,但ADD自带解压功能#ADD ./x.tar.xz /app# 定义环境变量ENV NODE_ENV=production# 配置entrypoint入口脚本RUN echo ‘console.log(“this is node web!”)’ > ./www.js \ && echo ‘#!/bin/bash’ > ./entrypoint.sh \ && echo ‘pm2 start /app/www.js’ >> ./entrypoint.sh \ && echo ‘/bin/sh’ >> ./entrypoint.sh \ && chmod a+x ./entrypoint.sh# 容器启动后执行的命令,且不可被docker run提供的参数覆盖ENTRYPOINT ["/bin/sh", “./entrypoint.sh”]# 容器启动后默认执行的命令,可被docker run后面的参数代替#CMD ["/bin/sh"]# 暴露端口EXPOSE 80运行构建命令:$ docker build -t myimage:latest . # 镜像名需小写# 新建并启动容器$ docker run -dit -p 8000:80 –dns=8.8.8.8 –name 容器名 –restart always myimage:latest2.)Dockerfile构建总结a. 构建时下载不了软件包,说明容器dns不对,需修改/etc/resolv.conf b. alpine镜像默认sh终端,需安装bash c. 建议一个容器只运行单个应用,多个应用见下文compose部署 d. Docker镜像构建是分层,将多个RUN指令合并 e. -v持久化路径时,若宿主机路径是新建的,容器路径内容会被清空 f. 当ENTRYPOINT与CMD使用exec参数时需双引号g. 添加.dockerignore,提高编译速度:.git/node_modules/四、多个应用容器部署Docker Compose是一个管理多容器应用的工具1、docker-compose安装Compose下载地址: https://get.daocloud.io/#inst...curl -L https://get.daocloud.io/docker/compose/releases/download/1.24.0/docker-compose-`uname -s-uname -m` > /usr/local/bin/docker-composechmod +x /usr/local/bin/docker-compose2、docker-compose文件配置新建docker-compose.yml,下面以nginx单容器配置为例:version: “3"services: web: image: nginx volumes: - ./nginx.conf:/etc/nginx/conf.d/actor.conf - ./actor:/app/actor container_name: actor ports: - “18000:8000” command: [“nginx”,"-g”,“daemon off;”] redis: image: “redis:alpine"在docker-compose.yml同目录下,创建启动/更新容器:$ docker-compose up -d # -d后台运行3、docker-compose常用命令在docker-compose.yml同一目录下# 创建并启动容器$ docker-compose up -d# 重启容器$ docker-compose restart# 查看yml配置$ docker-compose config# 停止容器$ docker-compose stop# 停止并移除容器$ docker-compose down五、可视化容器管理工具Portainer是一个轻量级的Docker环境UI界面管理系统1、快速部署$ docker volume create portainer_data # 在宿主机创建持久化目录$ docker run -d -p 9000:9000 –name portainer –restart always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer2、相关问题1.) 可视化创建容器时,Advanced container settings -> Console 记得勾选 Interactive & TTY (-i -t),否则无法使用控制台2.) portainer中volume默认在/var/lib/docker/volumes下,貌似不能自定义目录,可通过手动命令行创建时-v指定 ...

April 3, 2019 · 2 min · jiezi

Vue项目部署(阿里云+Nginx代理+PM2)

最近部署一个Vue项目到阿里云ECS上,因为项目涉及一些跨域请求,所以采用了Nginx代理请求本地的node服务(利用pm2做进程管理)。node服务借助axios设置headers的referer、host转发请求,解决跨域请求问题。先交代下在阿里云ECS里安装的部署环境:phpstudy(php调试运行大礼包,里面包含nginx、mysql等,还能监控端口占用情况)、pm2(node服务进程管理工具)、node、git等等。部署过程拉去GitHub项目代码至root目录下(找到安装phpstudy的WWW目录),构建项目修改nginx-conf的代理配置、root项配置(指向项目项目的dist目录下)启动pm2(项目中,事先已写好服务端逻辑prod.server.js)启动phpstudy访问项目构建项目构建项目前,要修改项目confing目录下的index.js,主要是build部分的端口、目录,具体如下:build: { port: 9001, // 因为我是用PHPStudy做web服务器的,此时php.cgi会占9000端口,所以改用9001 // Template for index.html index: path.resolve(__dirname, ‘../dist/index.html’), // Paths assetsRoot: path.resolve(__dirname, ‘../dist’), assetsSubDirectory: ‘static’, assetsPublicPath: ‘’, …….}主要有两部分修改端口,跟代理端口一致port: 9001修改assetsPublicPathassetsPublicPath: ‘’nginx-conf配置利用phpstudy,可以很方便的进行nginx相关设置、host修改、端口监控等等。先来说说nginx-conf的配置。先找到nginx-conf配置入口修改ngin-confupstream my_project { server 127.0.0.1:9001; keepalive 64;}server { listen 80; server_name my_project; #charset koi8-r; #access_log logs/host.access.log main; root “C:/phpStudy/PHPTutorial/WWW/project/dist”; location / { index index.php index.html index.htm; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $http_host; proxy_set_header X-NginX-Proxy true; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection “upgrade”; proxy_max_temp_file_size 0; proxy_pass http://my_project/; proxy_redirect off; proxy_read_timeout 240s; }}注意事项root配置,指向构建后目录 root “C:/phpStudy/PHPTutorial/WWW/project/dist”;设置代理端口时,避免端口占用!!upstream my_project { server 127.0.0.1:9001; keepalive 64;}开始部署时,使用的是9000端口,一直运行不起来,后面发现phpstudy启动是php-cgi.exe默认就使用了9000端口。关于端口使用情况,phpstudy也提供了工具。启动pm2关于pm2的介绍、常规使用自行了解。在项目目录下事先已经写好了转发请求的逻辑。pro.server.jsvar axios = require(‘axios’)const bodyParser = require(‘body-parser’)var config = require(’./config/index’)var express = require(’express’)var app = express()var apiRoutes = express.Router()apiRoutes.get(’/api/getdata’, function(req, res) { var url = ‘https://a.com’ axios.get(url, { headers: { referer: ‘https://b.com’, host: ‘b.com’ }, params: req.query }).then((response) => { …. }).catch((e) => { console.log(e) })})app.use(’/’, apiRoutes)app.use(express.static(’./dist’))var port = process.env.PORT || config.build.portmodule.exports = app.listen(port, function (err) { if (err) { console.log(err) return } console.log(‘Listening at http://localhost:’ + port + ‘\n’)})这里只是简单的借助axios可以设置referer和host,实现代理转发的功能。运行prod.server.jsprod.server.js是在根目录下,所以运行命令如下:pm2 start prod.server.js进程列表:pm2 start list查看进程详情pm2 show 0总结整个部署过程涉及比较多的知识点,nginx代理,node开发部署,端口管理等等。在端口占用这个点上卡了一段时间。不过目前只是实现构建部署、访问。但维护成本还是比较高,先得从GitHub拉取代码,本地构建。项目完成以后,研究下持续性集成流程。 ...

March 26, 2019 · 1 min · jiezi

使用pm2快速将项目部署到远程服务器

使用背景当我们需要将项目部署到远程线上服务器时;传统的方法可能就是:将本地代码通过ssh、ftp等方式上传到服务器;然后通过ssh登入到服务器,配置好环境;手动启动应用。太过手动化,麻烦,操作繁琐。现代自动化部署环境:本地(Mac);远程服务器(CentOS)使用工具:Git、pm2、node;需知概念:ssh秘钥登陆;Github添加Deploy Keys1、服务器环境部署基本工具安装:git、pm2、node2、ssh服务器免密登陆服务器生成秘钥对ssh-keygen -t rsa -C ‘1285227393@qq.com’-t 指定密钥类型,默认即 rsa ,可以省略-C 设置注释文字,比如邮箱,可以省略由于使用的是百度云服务器,里面可以直接界面生成秘钥对,然后下载到本地的是一个xxx.txt文件. 此时登陆可以使用ssh -i xxx.txt[下载的公钥路径] name@domain报错:@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ WARNING: UNPROTECTED PRIVATE KEY FILE! @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@Permissions 0644 for ‘server-key.txt’ are too open.It is required that your private key files are NOT accessible by others.This private key will be ignored.Load key “server-key.txt”: bad permissions大概意思就是,私钥文件不能被其他人所访问。可能考虑到如果被别人获取到,就可能对服务器安全造成影响,所以需要从新设置下秘钥文件的权限重新设置秘钥文件权限:chmod 600 server-key.txt,取消其他用户Read权限但是,使用ssh name@domain形式还是没法直接登入;追其原因,发现因为不是本地直接生成的秘钥对;所以需要使用ssh-add -K ~/.ssh/xxx.txt[下载公钥文件](-K表示永久存储式,如果不使用者每次开机后需要重新ssh-add),就像是本地生成秘钥对然后部署到服务器需要将秘钥追加到ssh认证文件一个道理;ssh name@domain可以正常免密登陆啦!(配置这种形式登陆后面pm2需要使用)配置快捷登录(附加) 1. 进入ssh目录:cd ~/.ssh 2. 创建config文件: touch config 3. 进入config配置文件配置:vi config Host lwh #快捷别名 HostName host #ssh服务器ip或domain Port port #ssh服务器端口,默认为22 User root #ssh服务器用户名 IdentityFile ~/.ssh/server-key.txt #下载的私钥文件 4. :wq!保存退出 5. 完成后可以直接使用:ssh lwh 登陆在Github上添加Deploy Keys服务器生成秘钥# 生成ssh keyssh-keygen -t rsa# 查看公钥内容cat /.ssh/id_rsa.pub复制秘钥内容,添加到Github上对应的项目仓库Settings下的Deploy keys中配置Deploy keys,使得服务器可以通过ssh拉取项目仓库;配置pm2配置ecosystem.config.js;具体pm2配置及基本使用介绍,戳~使用pm2配置生产环境module.exports = { apps: [ { name: ‘back-Api’, //应用名 script: ‘./server/start.js’, //应用文件位置 env: { //PM2_SERVE_PATH: “./apidoc”, //静态服务路径 PM2_SERVE_PORT: 8080, //静态服务器访问端口 NODE_ENV: ‘development’ //启动默认模式 }, env_production : { PM2_SERVE_PORT: 8080, NODE_ENV: ‘production’ //使用production模式 pm2 start ecosystem.config.js –env production }, instances:“max”, //将应用程序分布在所有CPU核心上,可以是整数或负数 instance_var: “INSTANCE_ID”, exec_mode: “cluster”, min_uptime: “30s”, max_restarts: 10, //cron_restart: “40”, watch:[ “server”, ], //监听模式,不能单纯的设置为true,易导致无限重启,因为日志文件在变化,需要排除对其的监听 merge_logs: true, //集群情况下,可以合并日志 } ], deploy: { production : { //配置没法提供密码,所以前面需要配置ssh免密码登录服务器 user: ‘root’, //ssh 登陆服务器用户名 host: ‘100.12.102.198’, //ssh 地址服务器domain/IP ref: ‘origin/master’, //Git远程/分支 repo: ‘git@github.com’, //git地址使用ssh地址 path: ‘/liwenhui/www’, //项目存放服务器文件路径 “post-deploy”: ’npm install && pm2 reload ecosystem.config.js –env production’ //部署后的动作 } }};开始部署开始部署pm2 deploy ecosystem.config.js production报错appledeMBP:back-server-api apple$ pm2 deploy ecosystem.config.js production–> Deploying to production environment–> on host 106.12.132.188 ○ deploying origin/master ○ executing pre-deploy-local ○ hook pre-deploybash: 第 0 行💿 /lwh/www/source: 没有那个文件或目录 ○ fetching updates ○ full fetchbash: 第 0 行💿 /lwh/www/source: 没有那个文件或目录 fetch failedDeploy failed1需要先初始化服务器应用:pm2 deploy ecosystem.config.js production setup,然后:pm2 deploy ecosystem.config.js production其他pm2日志配置使用详情使用pm2配置生产环境本地连接远程mongodb配置服务器(CentOS)安装配置mongodb“积跬步、行千里”—— 持续更新中,喜欢的话留下个赞和关注哦!往期经典好文:团队合作必备的Git操作谈谈Js前端模块化规范Koa日志中间件封装开发(log4js) ...

March 11, 2019 · 2 min · jiezi

解决 宝塔 使用pm2部署nuxt2.0时,图片、css显示不出来的问题

在配置修改中,删除那几行代码即可

January 26, 2019 · 1 min · jiezi

一台阿里云主机 + one-sys脚手架 秒搭建自己的系统(博客、管理)

项目地址https://github.com/fanshyiis/…本脚手架主要致力于前端工程师的快速开发、一键部署等快捷开发框架,主要目的是想让前端工程师在一个阿里云服务器上可以快速开发部署自己的项目。本着前端后端融合统一的逻辑进行一些轮子的整合、并加入了自己的一些脚手架工具,第一次做脚手架的开发,如有问题,请在issue上提出,如果有帮助到您的地方,请不吝赐个star技术栈选择前端整合:vue-cli3.0、axios、element等命令行工具整合:commander、chalk、figlet、shelljs等后端整合:node、 koa2、koa-mysql-session、mysql等服务器整合:nginx、pm2、node等基本功能模块实现聚合分离所谓聚合分离,首先是‘聚合’,聚合代码,聚合插件,做到一个项目就可完成前端端代码的编写,打包上线等功能的聚合。其后是‘分离’。前后端分离。虽然代码会在同一个项目工程中但是前后端互不干扰,分别上线,区别于常规的ejs等服务端渲染的模式,做到前端完全分离一键部署基于本地的命令行工具,可以快速打包view端的静态文件并上传到阿里云服务器,也可快速上传server端的文件到服务器文件夹,配合pm2的监控功能进行代码的热更新,无缝更新接口逻辑快速迭代提供基本的使用案例,包括前端的view层的容器案例与组件案例,组件的api设定以及集合了axios的中间件逻辑,方便用户快速搭建自己的项目,代码清晰,易于分析与修改,server端对mysql连接池进行简单的封装,完成连接后及时释放,对table表格与函数进行分层,代码分层为路由层、控制器层、sql操作层基本模块举例1.登录页面登录 -正确反馈 错误反馈 登录成功后session的设定注册 -重名检测 正确反馈 错误反馈主要模块功能模块增删查改基本功能的实现后台koa2服务模块配合koa-mysql-session进行session的设定储存checkLogin中间件的实现cors跨域白名单的设定middlewer 中间件的设定mysql连接池的封装等等。。。服务端nginx 的基本配置与前端端分离的配置pm2 多实例构建配置文件的配置文件 pm2config.json使用流程本地调试安装mysql (过程请百度)// 进入sql命令行$ mysql -u root -p// 创建名为nodesql的数据库$ create database nodesql安装pm2 (过程请百度)拉取项目代码git clone https://github.com/fanshyiis/ONE-syscd ONE-sys// 安装插件cnpm i 或 npm i 或者 yarn add// 安装linksudo npm link// 然后就能使用命令行工具了one start// 或者不愿意使用命令行的同学可以yarn run serve主要代码解析代码逻辑serverbinone -h启动效果启动项目yarn run v1.3.2$ pm2 restart ./server/index.js && vue-cli-service serveUse –update-env to update environment variables[PM2] Applying action restartProcessId on app [./server/index.js](ids: 0,1)[PM2] index ✓[PM2] one-sys ✓┌──────────┬────┬─────────┬─────────┬───────┬────────┬─────────┬────────┬─────┬───────────┬───────────┬──────────┐│ App name │ id │ version │ mode │ pid │ status │ restart │ uptime │ cpu │ mem │ user │ watching │├──────────┼────┼─────────┼─────────┼───────┼────────┼─────────┼────────┼─────┼───────────┼───────────┼──────────┤│ index │ 0 │ 0.1.0 │ fork │ 77439 │ online │ 2640 │ 0s │ 0% │ 15.4 MB │ koala_cpx │ disabled ││ one-sys │ 1 │ 0.1.0 │ cluster │ 77438 │ online │ 15 │ 0s │ 0% │ 20.2 MB │ koala_cpx │ disabled │└──────────┴────┴─────────┴─────────┴───────┴────────┴─────────┴────────┴─────┴───────────┴───────────┴──────────┘ Use pm2 show &lt;id|name&gt; to get more details about an app INFO Starting development server… 98% after emitting CopyPlugin DONE Compiled successfully in 10294ms16:31:55 App running at: - Local: http://localhost:8080/ - Network: http://192.168.7.69:8080/ Note that the development build is not optimized. To create a production build, run yarn build.页面展示线上调试阿里云服务器文件存放目录[root@iZm5e6naugml8q0362d8rfZ ]# cd /home/[root@iZm5e6naugml8q0362d8rfZ home]# lsdist server test[root@iZm5e6naugml8q0362d8rfZ home]#阿里云nginx配置 location ^ /api { proxy_pass http://127.0.0.1:3000; } location ^ /redAlert/ { root /home/dist/; try_files $uri $uri/ /index.html =404; } location ^~ /file/ { alias /home/server/controller/public/; } location / { root /home/dist/; index index.html index.htm; }其他方面如同本地配置有问题可以加群联系最后请star一个吧~~~ ...

January 15, 2019 · 2 min · jiezi

ONE-sys 整合前后端脚手架 koa2 + pm2 + vue-cli3.0 + element

项目地址https://github.com/fanshyiis/…本脚手架主要致力于前端工程师的快速开发、一键部署等快捷开发框架,主要目的是想让前端工程师在一个阿里云服务器上可以快速开发部署自己的项目。本着前端后端融合统一的逻辑进行一些轮子的整合、并加入了自己的一些脚手架工具,第一次做脚手架的开发,如有问题,请在issue上提出,如果有帮助到您的地方,请不吝赐个star技术栈选择前端整合:vue-cli3.0、axios、element等命令行工具整合:commander、chalk、figlet、shelljs等后端整合:node、 koa2、koa-mysql-session、mysql等服务器整合:nginx、pm2、node等基本功能模块实现聚合分离所谓聚合分离,首先是‘聚合’,聚合代码,聚合插件,做到一个项目就可完成前端端代码的编写,打包上线等功能的聚合。其后是‘分离’。前后端分离。虽然代码会在同一个项目工程中但是前后端互不干扰,分别上线,区别于常规的ejs等服务端渲染的模式,做到前端完全分离一键部署基于本地的命令行工具,可以快速打包view端的静态文件并上传到阿里云服务器,也可快速上传server端的文件到服务器文件夹,配合pm2的监控功能进行代码的热更新,无缝更新接口逻辑快速迭代提供基本的使用案例,包括前端的view层的容器案例与组件案例,组件的api设定以及集合了axios的中间件逻辑,方便用户快速搭建自己的项目,代码清晰,易于分析与修改,server端对mysql连接池进行简单的封装,完成连接后及时释放,对table表格与函数进行分层,代码分层为路由层、控制器层、sql操作层基本模块举例1.登录页面登录 -正确反馈 错误反馈 登录成功后session的设定注册 -重名检测 正确反馈 错误反馈主要模块功能模块增删查改基本功能的实现后台koa2服务模块配合koa-mysql-session进行session的设定储存checkLogin中间件的实现cors跨域白名单的设定middlewer 中间件的设定mysql连接池的封装等等。。。服务端nginx 的基本配置与前端端分离的配置pm2 多实例构建配置文件的配置文件 pm2config.json使用流程本地调试安装mysql (过程请百度)// 进入sql命令行$ mysql -u root -p// 创建名为nodesql的数据库$ create database nodesql安装pm2 (过程请百度)拉取项目代码git clone https://github.com/fanshyiis/ONE-syscd ONE-sys// 安装插件cnpm i 或 npm i 或者 yarn add// 安装linksudo npm link// 然后就能使用命令行工具了one start// 或者不愿意使用命令行的同学可以yarn run serve主要代码解析代码逻辑serverbinone -h启动效果启动项目yarn run v1.3.2$ pm2 restart ./server/index.js && vue-cli-service serveUse –update-env to update environment variables[PM2] Applying action restartProcessId on app [./server/index.js](ids: 0,1)[PM2] index ✓[PM2] one-sys ✓┌──────────┬────┬─────────┬─────────┬───────┬────────┬─────────┬────────┬─────┬───────────┬───────────┬──────────┐│ App name │ id │ version │ mode │ pid │ status │ restart │ uptime │ cpu │ mem │ user │ watching │├──────────┼────┼─────────┼─────────┼───────┼────────┼─────────┼────────┼─────┼───────────┼───────────┼──────────┤│ index │ 0 │ 0.1.0 │ fork │ 77439 │ online │ 2640 │ 0s │ 0% │ 15.4 MB │ koala_cpx │ disabled ││ one-sys │ 1 │ 0.1.0 │ cluster │ 77438 │ online │ 15 │ 0s │ 0% │ 20.2 MB │ koala_cpx │ disabled │└──────────┴────┴─────────┴─────────┴───────┴────────┴─────────┴────────┴─────┴───────────┴───────────┴──────────┘ Use pm2 show &lt;id|name&gt; to get more details about an app INFO Starting development server… 98% after emitting CopyPlugin DONE Compiled successfully in 10294ms16:31:55 App running at: - Local: http://localhost:8080/ - Network: http://192.168.7.69:8080/ Note that the development build is not optimized. To create a production build, run yarn build.页面展示线上调试阿里云服务器文件存放目录[root@iZm5e6naugml8q0362d8rfZ ]# cd /home/[root@iZm5e6naugml8q0362d8rfZ home]# lsdist server test[root@iZm5e6naugml8q0362d8rfZ home]#阿里云nginx配置 location ^ /api { proxy_pass http://127.0.0.1:3000; } location ^ /redAlert/ { root /home/dist/; try_files $uri $uri/ /index.html =404; } location ^~ /file/ { alias /home/server/controller/public/; } location / { root /home/dist/; index index.html index.htm; }其他方面如同本地配置有问题可以加群联系最后请star一个吧~~~ ...

January 14, 2019 · 2 min · jiezi

解决Linux下使用pm2运行nuxt2.0,IP+端口访问不了

使用pm2运行nuxt2.0pm2 start –name ‘blog-nuxt’ npm – run start运行了nuxt的程序,然后使用IP+端口,发现访问不了。然后查看了日志,看运行是否成功宝塔查看日志查看对应进程名字blog-nuxt的日志发现运行是没问题的,但使用IP+端口就是访问不了解决方法:一: 可以使用nginx代理127.0.0.1:3000端口,进行访问.在这里不多说nginx反向代理,可以自行百度二:修改nuxt启动文件【推荐】把server/index.js,里的host修改成0.0.0.0,默认是127.0.0.1。然后在Linux重新打包运行。最后是0.0.0.0:3000,发现IP+端口是可以访问的

January 8, 2019 · 1 min · jiezi