我到底如何使用 nginx 和 Gunicorn 为 Django 应用程序提供静态文件服务器?

2023-11-25

现在,我正在尝试遵循本教程:

http://honza.ca/2011/05/deploying-django-with-nginx-and-gunicorn

模板网站加载正确,但图像未加载。这是我的应用程序的 config.py 文件的一部分:

# Absolute filesystem path to the directory that will hold user-uploaded files.
# Example: "/home/media/media.lawrence.com/media/"
MEDIA_ROOT = ''

# URL that handles the media served from MEDIA_ROOT. Make sure to use a
# trailing slash.
# Examples: "http://media.lawrence.com/media/", "http://example.com/media/"
MEDIA_URL = ''

# Absolute path to the directory static files should be collected to.
# Don't put anything in this directory yourself; store your static files
# in apps' "static/" subdirectories and in STATICFILES_DIRS.
# Example: "/home/media/media.lawrence.com/static/"
STATIC_ROOT = '/home/lilo/textImageSite/imageSite/static/' 

# URL prefix for static files.
# Example: "http://media.lawrence.com/static/"
STATIC_URL = '/static/' 

# Additional locations of static files
STATICFILES_DIRS = (
    # Put strings here, like "/home/html/static" or "C:/www/django/static".
    # Always use forward slashes, even on Windows.
    # Don't forget to use absolute paths, not relative paths.
)

我的 nginx 配置文件(位于 /etc/nginx/sites-enabled ):

server {
listen 80;
server_name xxx.xx.xx.xx; #the actual IP of the server; it has a public IP address

access_log /home/lilo/textImageSite/access.log;
error_log /home/lilo/textImageSite/error.log;

location /static {
    root /home/lilo/textImageSite/imageSite;
}

location / {
    proxy_pass http://127.0.0.1:8888;
}
}

我的gunicorn配置文件:

bind = "0.0.0.0:8888"
logfile = "/home/lilo/textImageSite/gunicorn.log"
workers = 3

现在在我的模板中,这就是我访问图像的方式:

<img src="{{STATIC_URL}}{{ choice.image_location}}" /> <br />

生成的 HTML 如下所示:

<img src="/static/street_sign2.jpg" /> <br />

抱歉,文字墙很长,但我不知道我的设置出了什么问题......


结果我解决了自己的问题...误解了 Nginx 的工作原理。 :D

server {
listen 1234; //port that Nginx listens on
server_name xxx.xx.xx.xx; #the actual IP of the server; it has a public IP address

access_log /home/lilo/textImageSite/access.log;
error_log /home/lilo/textImageSite/error.log;

location /static {
    root /home/lilo/textImageSite/imageSite;
}

location / {
    proxy_pass http://127.0.0.1:8888; //the port that Gunicorn uses 
}
}

因此,就我而言,如果我的 Gunicorn 实例在端口 8888 上运行,则转到 xxx.xxx.xx.x:8888/textImageSite 将加载页面,但没有任何静态内容。如果我使用 xxx.xxx.xx.x:1234 访问它,那么页面将加载静态内容(图像、CSS 样式表等)。这是我第一次使用 Gunicorn 和 Nginx(也是第一次编写 Django 应用程序),所以希望这能帮助那些感到困惑的人:)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

我到底如何使用 nginx 和 Gunicorn 为 Django 应用程序提供静态文件服务器? 的相关文章

随机推荐

  • 如何删除名称以“-”开头的分支

    在尝试创建跟踪分支时 我设法创建了一个名为 t 的本地分支 我无法删除分支 因为分支名称也是一个参数 这是在 Windows 机器上 git branch D t fatal branch name required 逃避也无济于事 git
  • jQuery和prototype.js冲突,如何保持jQuery为$?

    所以我正在开发一个同时使用 jQuery 和prototype js 的网站 但是它们是冲突的 我进行了相当多的研究 发现人们解决这个问题的唯一方法是使用
  • 无状态类仿函数什么时候可以代替 C 风格函数?

    我在 SO 上找到了一些很好的函子示例 例如this一 所有令人信服的例子似乎都在定义的类中使用了状态operator 我在一本书中遇到一个例子 它定义了没有状态的函数调用运算符 我不禁觉得这是一种尴尬的用法 并且普通风格的函数指针会比使用
  • LocationManager 返回旧的缓存“Wifi”位置和当前时间戳

    我正在尝试获取当前位置 为此 我实现了一个 LocationListener 并将其注册到网络和 GPS 提供商 locationManager requestLocationUpdates LocationManager GPS PROV
  • 将 Objective-C 应用程序链接到 C++ 静态库

    我正在尝试使用 Xcode 构建一个链接到静态 C 库的 Objective C 桌面应用程序 我正在使用苹果的 clang 编译器 我收到以下链接器错误 Apple clang version 3 0 tags Apple clang 2
  • 使用 GroovyShell 从 Gradle 运行 Groovy 脚本:线程“main”中出现异常 java.lang.NoClassDefFoundError:org/apache/commons/cli/ParseException

    我想从我的 Gradle 构建脚本运行一个 groovy 命令行脚本 我在 Gradle 脚本中使用此代码 def groovyShell new GroovyShell groovyShell run file script groovy
  • 覆盖电子

    我想知道是否可以将电子制作的应用程序覆盖在游戏上 本质上类似于游戏中蒸汽覆盖的方式 我想要这个 因为我们已经制作了一个计时器网络应用程序来计时任务 并正在讨论如果可能的话将其作为覆盖层 为游戏中重复发生的某些事件计时 我不知道这是否可以实现
  • cassandra将数据从一个列族复制到另一个列族

    我是卡桑德拉的新手 我需要将数据从一个columnFamily复制到cassandra中同一键空间中的另一个columnFamily 比如说 我们在键空间K1中有一个A1columnFamily 所以现在我需要在同一键空间K1中创建colu
  • DN 的 JavaScript 正则表达式

    我想要一个正则表达式来验证所有类型的可能 DN 我创建了一个 但效果不太好 A z0 9 1 A z0 9 1 and 其他一些改变它 但徒劳无功 可能的 DN 可以是 CN abcd CN abcd O abcd C us CN abcd
  • 获取函数调用者的范围

    我有一个函数在 ExtJS 第 1433 行的某个地方中断 var createDelayed function h o scope console log arguments logs undefined all round return
  • 使用 jfeinstein10 库的滑动菜单

    我创建了一个示例应用程序来测试滑动菜单的工作原理 下面的屏幕截图显示的是我现在得到的 但是 当我单击类别按钮 如下图所示 时 我应该会看到一个二级菜单 如下面 zomato 应用程序的屏幕截图所示 我怎样才能做到这一点 我是否以正确的方式进
  • pandas read_csv 删除空白行

    我正在读取 CSV 文件作为DataFrame同时定义每列的数据类型 如果 CSV 文件中有空行 此代码会出错 如何读取没有空白行的 CSV dtype material id object location id object time
  • Python标准库真的标准吗?

    Python 标准库是标准吗 如果安装了 Python 那么标准库也会安装吗 The 文档 reads 对于类 Unix 操作系统 Python 通常作为包的集合提供 因此可能需要使用操作系统提供的打包工具来获取部分或全部可选组件 标准库i
  • PHP 会话的安全性

    我知道这个问题已经被问了数十亿次 但我对我的编码安全性非常偏执 强迫症 我正在做一个小项目 会话数据将仅包含 user id 1 用户名我的用户名 登录 true csrf token87cc51ee94178df79cccce2aebc4
  • 在线程应用程序中准确计时一行代码,C#

    假设应用程序是多线程的 在 C 中对线程或一行代码进行计时的最准确方法是什么 亲切的问候 计时线程 到底是什么意思 要精确计算 以实际时间 某件事需要多长时间 请使用 System Diagnostics Stopwatch 我不相信有任何
  • PHP 中的动态常量名称

    我正在尝试动态创建一个常量名称 然后获取该值 define CONSTANT 1 Some value try to use it dynamically constant number 1 constant name CONSTANT c
  • 在 ASP.Net Boilerplate 中,从应用程序服务层调用 SignalR Hub 是一种不好的做法吗?

    我将 Asp Net 样板模板与 ASP Net Core 2 1 一起使用 我在 Web Core 程序集中实现了一个集线器并创建了一个控制器 我可以从任何客户端使用我的集线器订阅 通知数据 这不是我的问题 我想在应用程序服务层中使用此集
  • 如何解组 JSON?

    我正在尝试将 JSON 解组为结构 但是 该结构有一个带有标签的字段 使用反射 我尝试查看标签中是否包含字符串 json 如果是这样 那么要解组的 json 应该简单地作为字符串解组到字段中 Example const data I 3 S
  • 使用 jQuery 更新 flashvars 并重新加载 flash

    我想更新 flashvars 值参数以观看另一个视频
  • 我到底如何使用 nginx 和 Gunicorn 为 Django 应用程序提供静态文件服务器?

    现在 我正在尝试遵循本教程 http honza ca 2011 05 deploying django with nginx and gunicorn 模板网站加载正确 但图像未加载 这是我的应用程序的 config py 文件的一部分