【问题标题】:Install Python and Django - WHERE?安装 Python 和 Django - 在哪里?
【发布时间】:2015-08-15 05:42:00
【问题描述】:

我已经阅读了大量有关此问题的安装方法并观看了几个 YouTube。它们都很棒,但没有一个能告诉我作为新手,Python/Django 是如何工作的。

第一个问题是:我应该在哪里安装什么?在我的客户端计算机 (Mac) 或我的服务器 (Debian) 上?还是两者兼有?

第二个问题:Django 是什么?服务器还是应用程序?框架一词并没有告诉我它是如何工作的。

第三个问题:而且很多说明都假设你想使用 Apache。如果我想使用 nginx 怎么办?可能吗?

我的猜测是 Apache/nginx 在启动时会加载 Python 语言?并且被 Django 以某种方式使用?

如果以前有人问过这个愚蠢的问题,请道歉,但我在任何地方都没有找到任何线索。

【问题讨论】:

    标签: python django nginx


    【解决方案1】:

    Python、django 和 apache/nginx 应该安装在服务器上。

    在您创建站点时,应该在您的开发计算机上安装 Python 和 django(可选且理想情况下)。然后,这将允许您在开发时对其进行测试。客户端/开发机器上不需要 apache/nginx,因为 django 可以为此运行自己的本地测试服务器

    python和django都不需要安装在客户端电脑上

    Django 允许您为您的网站构建服务器端后端。 HTML/Javascript/CSS 将允许您开发前端(用户在访问网站时看到并与之交互的内容),但 django 处理服务器端的所有内容。在那里处理繁重的计算,连接到数据库,存储/检索数据库信息,网站不同页面之间的路由等。

    Python实际上可以处理所有这些事情,所以从技术上讲你不需要django,但它存在的原因是提供一个统一的“框架”,或者更容易、更紧凑、更高效地完成上述所有工作

    是的,您可以将 django 与 nginx 一起使用。这样的事情会起作用:http://uwsgi-docs.readthedocs.org/en/latest/tutorials/Django_and_nginx.html

    从高层次上回答您的最后一个问题:您的服务器安装了 python。创建一个 django 实例并在特定端口(您指定)上运行,该端口使用该 python 安装。最终,这使服务器/本地机器能够访问您的 django 应用程序/网站。但在现实世界中,您希望其他用户也能够访问您的应用程序/网站。这就是像 apache 或 nginx 这样的 Web 服务器的用武之地。它们为外部世界提供了一种访问您的 django 实例的方式

    你还需要一个叫做 wsgi 服务器的东西。我上面提供的链接使用 uwsgi,替代方案是 gunicorn。此处提供的另一个答案让您很好地了解了它的作用,但它本质上位于 django 和 nginx/apache/您的网络服务器之间,并在两者之间传递信息

    所以你需要在你的服务器上:python、django、wsgi 服务器(uwsgi、gunicorn)、web 服务器(nginx、apache)。 客户不需要任何这些东西 开发机只需要python和django(运行自己的测试服务器)

    【讨论】:

    • 应用服务器怎么样?
    • 刚刚添加了上面的答案
    • 添加了一个简短的解释。您确实需要一个 wsgi 服务器,无论是 uwsgi 还是 gunicorn(或其他)都取决于您
    • 还有 posgresql?所以我至少需要运行 3 台服务器。 Nginx、Gunicorn 和 Posgresql?
    • 如果提到 Apache,你真的应该提到 mod_wsgi。它在 uWSGI 和 gunicorn 之前就已经存在,仍然被广泛认为是目前最稳定的 WSGI 部署方法。
    【解决方案2】:

    一一回答你的问题:

    1) Where do I install what
    

    您应该拥有一台 server 机器,您可以从 Amazon、DigitalOcean 等人质提供商之一获得该机器。 Web 服务器(Apache/Nginx)、应用服务器(Gunicorn)和 Django 必须安装在服务器机器上,以及站点运行所需的数据库插件或其他软件包。

    客户端不需要任何东西,只要一个浏览器,就可以通过 URL 访问应用程序。

    2) Is Django an app or a server
    

    两者都不是。 Django 是一个 Web 框架,它有助于更​​轻松地创建高效且健壮的 Web 应用程序。作为框架的一部分,它还提供了一个测试服务器,我们通过命令来运行它:

    python manage.py runserver
    

    当您在生产环境中运行应用程序时,无法使用此测试服务器,原因如下:

    1) 如果发生任何错误,错误的完整轨迹会显示在客户端的浏览器中,从而暴露关键数据。

    2) 测试服务器有一个接收到的所有请求的日志,与数据库的所有通信等,这在生产环境中可能会浪费太多空间。

    3) Can I use Nginx:
    

    是的,你绝对可以使用 Nginx。

    并为您简要介绍 Nginx 和 Django 的通信方式:

    1) Nginx 被称为 Web 服务器。默认情况下,此 Web 服务器侦听端口 80 以获取 HTTP 请求。 假设我们向 myexample.com 发出请求

    2)我们在文件夹中为该机器托管的每个域都有一个配置文件:

    /etc/nginx/sites-enabled/
    

    在这里,我们指定了当请求到达该特定域时服务器应查找的位置。现在,如果站点只包含普通的 HTML、CSs 页面,我们指定指向该域的索引文件的路径。由于我们的是 django 应用程序,因此我们必须指定 Application Server 运行的端口。

    3) Gunicorn 是应用程序服务器,根据 Nginx 的请求提供 django 模板。 Nginx 根据配置将请求转发到 Gunicorn 运行所在的端口。

    4) Gunicorn 调用特定视图(通过 URL 查找),获取要执行的视图并将视图返回给 Nginx 的任何内容返回。

    5) Nginx 将 Gunicorn 返回的数据返回给客户端。

    希望对你有帮助

    【讨论】:

    • 谢谢!很好的解释。
    • @sibert Gunicorn 仅与 django 通信。 Django 与您配置的任何数据库进行通信
    • 那么 Django 是一个正在运行的应用程序或服务器还是什么?一堆脚本?为了和 Postgresql 通信?
    • @sibert Django 是一个框架。一个 django 项目由一个或多个应用程序组成,这些应用程序包含项目的核心业务逻辑,所有通信都在其中发生。用外行的话来说,你是对的。它只是一堆与数据库通信的脚本
    • 我真的很想接受这两个答案,它们既有帮助又有信息。但我不能同时接受,所以我的决定是随机的。
    猜你喜欢
    • 1970-01-01
    • 2011-10-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-12-13
    • 2015-03-19
    相关资源
    最近更新 更多