不知为何,当使用Supervisor以非root用户执行deno命令时,会因npm缓存权限问题报错
大家好,我是无能。
当使用Supervisor以非root权限启动时,可以通过user=指定用户,但不知为何报错了。
这是因为,似乎是缓存方面出了问题,当通过Supervisor启动时,环境变量仍然是root用户的,所以需要传递环境变量,但是执行命令是deno,那么它使用的是哪个缓存呢?通过这个方法确认了。./node_modules不仅仅是这个,所以在使用deno命令时,我几乎忘记了deno也在使用npm资产。
$ npm config get cache
/home/haturatu/.npm
那么,这个环境变量可以通过这种方式一起传递。
environment=DENO_INSTALL="/home/haturatu/.deno",PATH="/home/haturatu/.deno/bin:/home/haturatu/.cargo/bin:/home/haturatu/.npm-global/bin:$PATH",HOME="/home/haturatu"
因为是用于deno的CMS。虽然不需要传递cargo的信息,但因为在其他地方也想使用这个环境变量设置,所以保留了下来。结果就变成了这样。
[program:adminblog]
command=deno task lume cms --location=http://localhost:3001
user=haturatu
directory=/var/www/html/soulmining
autostart=true ; 在服务器启动时自动启动进程
autorestart=true ; 如果进程终止则自动重启
stderr_logfile=/var/log/adminblog.err.log ; 标准错误日志文件位置
stderr_logfile_maxbytes=1MB ; 日志文件的最大大小
stdout_logfile=/var/log/adminblog.out.log ; 标准输出日志文件位置
stdout_logfile_maxbytes=1MB ; 日志文件的最大大小
stdout_logfile_backups=0 ; 不保留旧的日志文件
stderr_logfile_backups=0 ; 不保留旧的错误输出日志文件
environment=DENO_INSTALL="/home/haturatu/.deno",PATH="/home/haturatu/.deno/bin:/home/haturatu/.cargo/bin:/home/haturatu/.npm-global/bin:$PATH",HOME="/home/haturatu"
顺便说一下,我对directory感到有些不妥,但这只是创建这个服务器时留下的痕迹,所以没办法。
如果正确设置的话,应该是/var/www/soulmining吧。
那么。
下次再见。