当前位置: 首页 > 后端技术 > PHP

如何在Windows10环境下部署配置一键启动Homestead+Laravel+vue+PM2项目

时间:2023-03-30 01:17:43 PHP

如何在Windows10环境下部署配置一键启动Homestead+Laravel+vue+PM2项目环境我写这个是为了在homesteadProject中启动node,我使用pm2来运行和管理node项目。使用pm2的好处是方便调试和部署项目。但是homestead中并没有内置pm2的功能,只能自己安装了。进入homestead虚拟机(使用vagrantssh或者使用shell工具,我推荐使用finalshell,这是一个非常强大的免费工具)安装pm2npminstallpm2@latest-g这个时候会报错npmWARNcheckPermissionsMissingwrite访问/usr/local/lib/node_modules/pm2npmWARNcheckPermissions缺少对/usr/local/lib/node_modules/pm2/node_modules的写入权限npmWARNcheckPermissions缺少对/usr/local/lib/node_modulesnpm的写入权限ERR!路径/usr/local/lib/node_modules/pm2npm错误!代码EACCESnpm错误!错误号-13npm错误!系统调用accessnpm错误!错误:EACCES:权限被拒绝,访问'/usr/local/lib/node_modules/pm2'npmERR!{[错误:EACCES:权限被拒绝,访问'/usr/local/lib/node_modules/pm2']npmERR!堆栈:npm错误!'错误:EACCES:权限被拒绝,访问\'/usr/local/lib/node_modules/pm2\'',npmERR!错误号:-13,npm错误!代码:'EACCES',npm错误!系统调用:'访问',npm错误!路径:'/usr/local/lib/node_modules/pm2'}npm错误!错误!操作被拒绝你的操作系统.npmERR!您可能没有作为当前用户npmERR访问此文件的权限!错误!如果您认为这可能是权限问题,请仔细检查thenpmERR!文件及其包含目录的权限,或尝试运行npmERR!再次以root/Administrator身份执行命令(尽管不推荐这样做)。npmERR!可以在以下位置找到此运行的完整日志:npmERR!/home/vagrant/.npm/_logs/2018-08-30T01_48_01_688Z-debug.log由于homestead默认登录为vagrant用户,运行npminstallpm2@latest-g会报无权限的错误。切换到root用户或使用sudonpminstallpm2@latest安装。我以前是切换root用户的,但是homestead没有给root设置密码,所以我们需要先设置root用户的密码sudopasswdroot然后用新设置的密码登录root用户安装pm2。安装完成后,初始化pm2pm2init会生成配置文件ecosystem.config.js,设置项目配置文件。启动项目pm2startecosystem.config.js然后就可以访问节点项目了。但是有一个问题就是每次启动homestead都得去虚拟机启动pm2。还是很麻烦的。幸运的是,homestead有相关的解决方案。homestead目录下有after.shshell脚本,用于启动homestead后执行相关的shell。操作。我在里面添加内容#!/usr/bin/envbash#如果你想做一些额外的配置,你可以#添加你想要的任何命令到这个文件,它们将#在配置Homestead机器后运行。#开关进入root用户suroot-c"root"#启动微课后台前端项目npminstallpm2@latest-g#启动微课后台前端项目pm2start~/onlineducation.config.jsrestarthomestead将报告错误homestead:su:mustberunfromaterminalhomestead:npmWARNcheckPermissionsMissingwriteaccessto/usr/local/lib/node_modules/pm2homestead:npmWARNhomestead:checkPermissionsMissingwriteaccessto/usr/local/lib/node_modules/pm2/node_moduleshomestead:npmWARNcheckPermissions缺少对/usr/local/lib/node_moduleshomestead的写访问:npmERR!路径/usr/local/lib/node_modules/pm2homestead:npmERR!代码EACCES家园:npmERR!errno宅基地:-13宅基地:npm宅基地:错误!宅基地:系统调用宅基地:访问宅基地:npmERR!错误:EACCES:权限被拒绝,access'/usr/local/lib/node_modules/pm2'家园:npm错误!家园:{[错误:EACCES:权限被拒绝,访问'/usr/local/lib/node_modules/pm2']家园:npmERR!宅基地:堆栈:宅基地:npm宅基地:错误!'错误:EACCES:权限被拒绝,访问\'/usr/local/lib/node_modules/pm2\'',宅基地:npm宅基地:错误!宅基地:errno:-13,宅基地:npmERR!宅基地:代码:'EACCES',宅基地:npmERR!系统调用:'访问',家园:npmERR!路径:'/usr/local/lib/node_modules/pm2'}宅基地:npm宅基地:错误!宅基地:宅基地:npmERR!您的操作系统拒绝了该操作。家园:npm错误!您可能没有权限以当前用户homestead的身份访问此文件:npmERR!家园:npm错误!homestead:如果您认为这可能是权限问题,请仔细检查homestead:npmERR!允许文件及其包含目录的s,或尝试运行homestead:npmhomestead:ERR!homestead:再次以root/Administrator身份执行命令(尽管不推荐这样做)。家园:npm家园:错误!可以在以下位置找到此运行的完整日志:homestead:npmERR!/home/vagrant/.npm/_logs/2018-08-30T01_35_38_735Z-debug.loghomestead:[PM2]SpawningPM2daemonwithpm2_home=/home/vagrant/.pm2sucommandcanonlybefoundinTheterminalisrunning,似乎只能使用其他方法切换用户修改after.sh脚本并使用expect将其更改为可以远程执行的脚本#!/usr/bin/envbash#如果你想做一些额外的配置你可以#添加你想要的任何命令到这个文件它们将在配置Homestead机器后运行。#installexpectsudosnapinstallexpect#installpm2sudonpminstallpm2@latest-g#switchtorootuserexpect-c"spawnsu-rootexpect\":\"send\"root\r\"expect\":\"send\"cd\/home\/vagrant\r\"expect\":\"send\"pm2startonlineducation.config.js\r\"expect\":\"interact"如果expect无法安装,可以先进入虚拟机安装,然后重启homestead。