资讯专栏INFORMATION COLUMN

【eggjs】部署egg时碰到的日志权限问题

waterc / 3133人阅读

摘要:前两天将一个部署到服务器时,用就是启动不了,错误信息为无权限创建目录。查看工作目录权限,当前用户是有权限的,看了源码,原来是用的包的问题。首先,在生产环境下的启动是通过启动的。

前两天将一个egg部署到服务器时,用npm start就是启动不了,错误信息为无权限创建log目录。查看工作目录权限,当前用户是有权限的,看了源码,原来是用的npm包的问题。这里简单记录下解决过程。

首先,在生产环境下的启动是通过egg-script 启动的。在启动时,终端会有如下输出:

Save log file to /XXX/XXX

我们查看egg-script的源码,在他的start命令中,找到Save log file,如下


下一步,找到这个logDir变量声明的地方,往前看就能找到,如下代码:

const HOME = homedir();
const logDir = path.join(HOME, "logs");

那么这个homeDir()是什么呢?它是npm包node-homedir,它的方法体如下:

const os = require("os");

module.exports = () => {
  if (process.env.MOCK_HOME_DIR) return process.env.MOCK_HOME_DIR;
  if (os.userInfo && os.userInfo().homedir) {
    return os.userInfo().homedir;
  } else if (os.homedir) {
    return os.homedir();
  }
  return process.env.HOME;
};

这就很清楚了,我的服务器是centos,登录账户的userInfo最终返回的homedir就是系统根目录,"/",而不是我的项目工作目录,由于运维设置,我没有权限在系统/logs下写权限,所以出现了一开始提到的错误。

找到原因后就很好办了,按上面的源码,在启动脚本里,先创建个MOCK_HOME_DIR的环境变量,并指定到项目目录即可。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/93334.html

相关文章

  • Eggjs小试

    摘要:项目都很小,但为了进一步了解,特意选择了作为框架基础开发后端服务。能将请求限制在同源网站,即只有拥有专有令牌的网站发送请求才会正确响应。项目生产静默部署,启动使用,停止使用。不足工具函数的访问需要自己手动添加扩展另没有写测试,希望下次补上。 前言 这段时间,用Eggjs作为后端服务框架开发了几个项目。项目都很小,但为了进一步了解Eggjs,特意选择了Eggjs作为框架基础开发后端服务。...

    waltr 评论0 收藏0
  • node端统一错误处理

    摘要:好吧且不说抽象统一处理的事,解决问题才是目的。确实把整个错误处理可以完整的抽象出来。当然可以在中注入更多统一处理函数,也可以通过函数名做一些判断,比如对所有名字中包含的函数进行单独的日志处理。 起因 在之前的项目中我发现每个控制器大约都是这样写的 async function findId (id) { let res; try{ res = await...

    kaka 评论0 收藏0
  • Eggjs下Restful API实现

    摘要:今天就简要说说下的实现。主要的原因是的文档写的不太清楚,方便新人快速上手。导致我们一目十行去扫文档的时候,有时总会觉得有些莫名,的实现就是其中之一。其实这和我本身对的了解不深入有关,但是也没有文档和我说实现啊。 这两天真的是宅的骨头都发霉了,春困秋乏夏打盹,也是醉了。今天就简要说说eggjs下Restful API的实现。主要的原因是egg的文档写的不太清楚,方便新人快速上手。话说eg...

    linkin 评论0 收藏0
  • eggjs和dubbo结合,egg-dubbo-plugin开发

    摘要:由于中的都是服务,所以需要一个插件来调用服务。可以看到,只是一个封装,真正对工作委托给了也就是。在里,我们进行了方法的绑定,这样在里,就可以像调用方法一样,调用服务了。完成后,补齐单元测试,发布到库里就可。 由于MVC中的M都是dubbo服务,所以需要一个插件来调用dubbo服务。个人推荐这个包node-zookeeper-dubbo 我们所需要的只是把他封装成一个插件,使用方式则类似...

    hoohack 评论0 收藏0
  • jwt前后端整合方案

    摘要:到这里,基于的前后端分离实现方案就搞定啦四关于的一些思考实际上,在使用的过程中有一个比较致命的缺点,就是一旦签发了,在到期之前就会始终有效,除非服务器部署额外的逻辑。结语以上是关于基于的前后端分离实现方案的总结和思考。 一、jwt是什么 JWT全称, JSON Web Token,是一个以JSON为基准的标准规范。 举例:服务器认证以后,生成一个 JSON 对象,发回给用户,就像下...

    nevermind 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<