标签: django

Nginx、Gunicorn 和 Django 的静态文件权限

我试图设置一个 Nginx 服务器和一个运行 Django 的 Gunicorn WSGI 服务器。

除了我有权限问题之外,所有设置似乎都可以运行。我已将别名设置为 /media 和 /static 目录来提供静态内容,但是除非文件归 nginx 用户所有,否则会生成 403 错误。

Gunicorn 用户上传的文件显然归该特定用户所有,这会导致问题。我可以将 nginx 用户添加到 Gunicorn 用户组,但是我不想授予 nginx 对这些文件的一揽子权限。

通过 Gunicorn/Wsgi/Django 上传或生成文件但允许 nginx 为它们提供服务而不增加安全问题的建议方法是什么。

提前致谢,

nginx django static-files gunicorn

5
推荐指数
1
解决办法
7012
查看次数

Django 应用程序公共 IP 可以工作,但记录更新时出现“400 Bad Request Error”

我使用 nginx 和 Gunicorn 在 Ubuntu 16.04 EC2 实例上部署了 Django 应用程序。

不幸的是,在使用我的公共 IP 成功部署后,使用公共 IP 更新我的 A 记录产生了404 Bad Request在我的域中产生错误 - 即使在等待很长时间以确保 DNS 更改传播之后也是如此。通过公共 IP 访问应用程序仍然有效。我确实联系了我的名称服务器主机,以确认我是否正确设置了 A 记录设置:他们说 DNS 更改似乎成功,但无能为力,因为这似乎是 AWS 方面的问题。

是否有特定原因导致在我的 A 记录中使用我的公共 IP 无法正常工作且未指向我的应用程序?

感谢任何能够帮助我让我的域成功指向我部署的 django 项目的人。目前,通过公共 IP 访问应用程序仍然可以正常工作,A 记录似乎已更新,但任何加载域(而不是直接 IP)的尝试都会呈现 400 Bad Request 错误。

nginx a-record django amazon-ec2 amazon-web-services

5
推荐指数
1
解决办法
3030
查看次数

nginx 找不到 /etc/letsencrypt/options-ssl-ngin.conf 文件

我正在尝试使用 linux 盒子(运行 ubuntu 18.04)和 nginx、gunincorn、letsencrypt 和 docker 来提供 python-django web 应用程序。在学习了许多在线教程之后,我按照本教程http://pawamoy.github.io/2018/02/01/docker-compose-django-postgres-nginx 成功通过端口 80 通过 http 提供了应用程序服务。 html

然而,我现在真的很难通过端口 443 通过 https 进行部署。我想也许我不理解基本的 docker 概念。我运行时遇到的错误sudo docker-compose up如下。

NGINX 错误

nginx_1 | nginx: [emerg] open() "/etc/letsencrypt/options-ssl-nginx.conf" failed (2: No such file or directory) in /etc/nginx/conf.d/local_ssl.conf:28

我相信这是因为我没有链接 docker-compose.yml 文件中的 options-ssl-nginx.conf 文件,也许是通过卷?我不知道这是否正确。我的 docker-compose.yml 文件和 nginx.conf 文件的相关部分如下:

docker-compose.yml

version: '3'

services:

  # database containers
  database1:
    ...

  # web container
  djangoapp:
    ...

  # reverse proxy container (nginx)
  nginx:
    image: …
Run Code Online (Sandbox Code Playgroud)

nginx django docker lets-encrypt docker-compose

5
推荐指数
1
解决办法
2万
查看次数

我应该为 Apache、mod_wsgi、Python、Django、PostgreSQL 部署使用哪个 Linux 发行版?

目前我们正在为我们的生产服务器运行 CentOS。我们正在使用 Apache 2.2、mod_wsgi 和 PostgreSQL 部署 Django 项目。

我们正在将 Python 2.5 设为默认版本。但是,此版本不在标准 CentOS 存储库中。我对 Debian/ubuntu 的了解比 CentOS 多。对于此要求,什么是更好的发行版选择,为什么?

linux deployment python django apache-2.2

4
推荐指数
2
解决办法
1665
查看次数

使用 gentoo,如何将 -9999 ebuild 粘贴到特定的 svn 修订版?

以 django-9999 ebuild 为例,为了匹配开发人员的环境,我需要从主干中检出 R12120。由于包管理的原因,手动安装 Django 不是一个选项。但是对于 1.2 测试版,portage 中也没有 ebuild。

所以我做了以下事情:

ESVN_OPTIONS="-r12120" emerge -1a django
Run Code Online (Sandbox Code Playgroud)

其中从 svn 安装了所需的修订版。但这在某种程度上很麻烦。是否有某种方法可以为每个 ebuild 静态定义它,例如:

DJANGO_SVN_REV="12120"
Run Code Online (Sandbox Code Playgroud)

make.conf。这在我眼里会干净得多。

因为下次无论出于何种原因我需要重建 django 时,我需要记住:“哦,我希望它坚持特定的修订版”,下一个问题将是“错误,f&!#$?%,又是什么?”

去这里的最佳方式是什么?

记住:

  • 在没有包管理器知识的情况下手动安装包是没有选择的
  • 解决手动emerge变量前缀是没有选择的
  • 设置 /etc/portage/package.env 将是一种方法(如此处所述),但这对我来说似乎非常不受支持且笨拙,因此不可取
  • 修改 make.conf 将是一种方法
  • 将 ebuild 保留在覆盖层中将是一种选择

linux package-management django gentoo

4
推荐指数
1
解决办法
2693
查看次数

如何在同一台服务器上运行两个 Django 版本?

我有两个网络应用程序。一个是使用 Django 1.0 开发的,另一个是使用 Django 1.4 开发的。如何使用两个版本的 django 在同一个 apache2 服务器中运行这两个应用程序?有人告诉我一些关于 virtualenv 的事情......我正在使用 mod_wsgi。

谢谢

linux python django mod-wsgi apache-2.2

4
推荐指数
1
解决办法
2639
查看次数

Python,“您无权访问该端口”

我正在服务器上设置我的第一个 Django 项目

当我这样做时python manage.py runserver .0.0.0.0:80,它告诉我

You don't have permission to access that port.

当我这样做时,python manage.py runserver .0.0.0.0:8000它告诉我该端口已被使用。

我正在尝试运行 LAMP 堆栈。

我如何“获得许可”?如何查看哪些进程打开了端口?

python django amazon-ec2 amazon-web-services

4
推荐指数
1
解决办法
8109
查看次数

在 EC2 微实例上安装 WSGI

如何在我的 Amazon AMI EC2 微型实例上安装带有 WSGI 的 Apache?

我试过

sudo yum install httpd libapache2-mod-wsgi
Run Code Online (Sandbox Code Playgroud)

但我收到此错误消息

没有可用的软件包 libapache2-mod-wsgi

Apache 安装成功。我的目标是在这个实例上运行一个 Django 应用程序。提前致谢。

django amazon-ec2

4
推荐指数
1
解决办法
5541
查看次数

Docker 无法访问主机上的 Web 服务器

我正在尝试在 dockerized 环境中设置 pythons django

文件

FROM python:3.5-slim
ENV PYTHONUNBUFFERED 1
RUN mkdir /code
RUN pip install --upgrade pip
WORKDIR /code
ADD requirements.txt /code/
RUN pip install -r requirements.txt
ADD . /code/
EXPOSE 8000
Run Code Online (Sandbox Code Playgroud)

我将此构建为django-app.

docker-compose.yml

django:
  container_name: django
  image: django-app:latest
  ports:
    - "8000:8000"
  volumes:
    - ./config/startup.sh:/startup.sh
    - ./app:/code
  command: /bin/sh /startup.sh
Run Code Online (Sandbox Code Playgroud)

启动文件

#!/bin/sh
cd /code
django-admin.py startproject djagento
echo "Creating Project djagento"
cd djagento
python manage.py runserver
Run Code Online (Sandbox Code Playgroud)

我使用 ubuntu 14.04 LTS 作为我的主机系统

docker exec -it django bash …

django docker

4
推荐指数
1
解决办法
6787
查看次数

如何在 Google App Engine 中执行 manage.py?

我跟着这个教程:

https://codeburst.io/beginners-guide-to-deploying-a-django-postgresql-project-on-google-cloud-s-flexible-app-engine-e3357b601b91

将 Django 应用程序部署到 Google App Engine。它在那里,它正在工作,但我需要运行迁移并创建一个用户。我应该如何manage.py在这些服务器上运行?我找到了如何从 Google Cloud Platform 控制台通过 SSH 连接到它们,但是一旦我进入服务器,我就找不到如何加载正确的 Python 环境和/或运行manage.py.

我还阅读了在 App Engine 柔性环境中运行 Django,它没有解释如何做到这一点,他们的配置文件似乎假设数据库凭据最终会出现在应用程序的 git 存储库中,这是一个很大的问题。我没有这样做,这意味着从我的工作站连接到生产数据库很麻烦。

例如,如果这是 Heroku,我会在我的开发工作站上执行此操作:

heroku run python manage.py migrate
Run Code Online (Sandbox Code Playgroud)

或者

heroku run python manage.py createsuperuser
Run Code Online (Sandbox Code Playgroud)

它会在服务器中执行这些命令。我正在尝试使用 Google App Engine 灵活(以及标准)做同样的事情。

django google-app-engine google-cloud-platform

4
推荐指数
1
解决办法
2088
查看次数