新版本Django在Windows和Linux下的部署

本文介绍了如何在Windows(使用IIS和wfastcgi)和Linux(使用nginx和uwsgi)环境下部署新版本的Django框架。在Windows中,详细阐述了从安装IIS、配置web.config到设置自动重启的过程。而在Linux中,重点讲解了安装nginx、配置uwsgi以及解决静态文件权限问题的步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

原帖地址:https://zhuanlan.zhihu.com/p/27690113

伴随着人工智能和深度学习的火热发展,Python也成为了一门非常热门的语言。我们可以看到热门的深度学习框架都提供Python的接口,有些甚至只有Python的接口,这一定程度上推动了Python的普及。当然,在我们完成模型的训练之后,我们总是要搭建一个演示的平台,要么开放给用户使用,要么是内部进行测试。
虽然说Python是著名的胶水语言,可以和很多语言和框架进行互操作,但是要是能直接使用Python编写的框架进行服务器的部署的话,则可以简化程序的编写过程。Python下最著名的网站框架就是Django了,因此今天就介绍下新版本Django的部署方法,主要以Windows和Linux为例。那为何要写这篇呢?因为Django这几年也变化了很多,然而网上有很多陈旧的部署教程,会对我们的部署过程进行干扰,所以我觉得有这个必要好给你们传授下一些部署的经验。当然,部署前请用python manage.py runserver检查一下服务器是否正常工作。

我们先看看Windows下怎么进行Django的部署,我借助的是Azure中的Django模板中所使用wfastcgi库以及微软自己的服务器平台IIS。过程如下:

  1. 安装IIS,请务必勾选服务器技术中的CGI。
    这里写图片描述

  2. 安装wfastcgi

    pip install wfastcgi
  3. 执行指令,获得FastCGI的Handler参数。

    wfastcgi-enable

    会获得一串类似c:\anaconda2\python.exe|c:\anaconda2\lib\site-packages\wfastcgi.pyc的字符串,其实就是python的路径和handler的路径用|进行连接而成的字符串,记录下来,后面会用到。

  4. 在网站根目录下新建一个web.config,填入以下内容

    <configuration>
      <system.webServer>
        <handlers>
          <add name="Python FastCGI"
               path="*"
               verb="*"
               modules="FastCgiModule"
               scriptProcessor="C:\Python36\python.exe|C:\Python36\Lib\site-packages\wfastcgi.py"
               
### Django 项目部署Linux 服务器的最佳实践 #### 准备工作 为了成功将 Django 项目部署Linux 服务器,需先准备好云服务器并确保能够通过 SSH 工具(如 Xshell)连接该服务器[^4]。 #### 配置环境 在服务器上安装必要的软件包依赖项。对于 Python 应用程序来说,推荐使用虚拟环境来隔离项目的依赖关系。创建一个新的虚拟环境可以防止不同版本库之间的冲突: ```bash python3 -m venv myvenv source myvenv/bin/activate pip install django mysqlclient gunicorn ``` 这里不仅包含了 Django 的安装,还加入了 MySQL 数据库驱动 `mysqlclient` 应用服务器 Gunicorn 的安装,以支持更稳定的生产环境运行[^1]。 #### 设置 Web Server 虽然可以直接利用 Django 自带的开发服务器进行测试性的发布,但对于正式上线的应用而言,建议采用 Nginx 或 Apache 结合 Gunicorn 来提供服务。Gunicorn 是一个 WSGI HTTP 服务器,专为 Python web应用程序设计;而Nginx 则作为反向代理处理静态资源请求以及负载均衡等功能[^2]。 启动 Gunicorn 并将其设置为后台进程执行可保证即使关闭终端窗口后也能继续正常运作: ```bash nohup gunicorn --workers=3 --bind=unix:/tmp/guni.sock projectname.wsgi & ``` 此命令中的参数指定了三个工作线程数(`--workers`)及绑定地址(`--bind`),其中 `/tmp/guni.sock` 表示 Unix 域套接字路径用于与 Nginx 进行通信。 #### 构建 Nginx 反向代理配置文件 编辑位于 `/etc/nginx/sites-available/projectname.conf` 中的内容如下所示: ```nginx server { listen 80; server_name yourdomain.com; location /static/ { alias /path/to/static/; } location /media/ { alias /path/to/media/; } location / { proxy_pass http://unix:/tmp/guni.sock; include proxy_params; } } ``` 上述配置定义了一个监听于端口 80 上的服务实例,并针对不同的 URL 路径设置了相应的响应策略。特别是当访问根目录下的页面时,则会转发给由 Gunicorn 提供的服务接口处理。 #### 启动与维护 完成以上步骤之后,重启 Nginx 让新的配置生效即可让网站对外公开访问。另外需要注意的是,在实际操作过程中可能会遇到权限不足等问题,这时可以通过调整文件夹读写属性等方式加以解决[^3]。 最后提醒一点,尽管有简便快速的方式可以让初学者迅速搭建起自己的在线平台,但从长远来看掌握完整的流程有助于更好地理解优化整个系统的性能表现。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值