【发布时间】:2016-03-31 23:28:36
【问题描述】:
我正在尝试从 Latex 模板生成 PDF 文件。我已经在开发环境中完成了它(直接从 eclipse 运行 python manage.py)......但我无法让它在使用 cherokee 和 uwsgi 运行的服务器中工作。
我们已经意识到 open(filename) 创建了一个拥有根(也是根组)的文件。这不是在开发环境中发生的......但是关于这个问题最奇怪的是我们在代码的其他地方创建了一个文本文件(乳胶使用也是一个文本文件),但它是使用用户 cherokee 创建的应该使用,而不是root!
发生了什么?我们该如何解决?
我们在 ubuntu linux 和开发和生产的虚拟环境中运行此代码。
我们开始按照一些说明使用 python 的临时文件和文件夹创建功能来完成它,但我们认为这可能与它们有关,并“手动”创建它们以尝试解决这个问题......但是没用。
【问题讨论】:
-
当然,我们已经在服务器上安装了所有必要的软件包(并证明它有效)。
-
你能说明你是如何启动服务器和你的 uWSGI 配置文件(如果有的话)吗?
-
我已经设法知道这个问题会发生什么。它根本与 uwsgi 无关,而是与 supervisord 无关。 Supervisord 正在使用不存在的用户执行,因此在尝试运行 latexpdf 命令时它会更改为用户 root。我已将执行用户更改为 supervisord 的配置文件,但似乎不接受此更改。很陌生的东西,不是吗?
-
注意:latexpdf 在子进程中被调用,该子进程在 celery 进程中执行,以提高速度。
标签: python django permissions uwsgi cherokee