这应该是全网最详细的IIS部署Django项目流程了

本文从0开始介绍IIS上部署Django项目的整体流程,以及可能会遇到的一些坑等等

1.首先打开服务器管理器,点击添加角色和功能。勾选Web服务器(IIS),并IIS下所有功能 全部勾选,之后进行安装。安装可能会遇到以下问题:

(1)由角色权限所导致安装失败。

  • 首先将虚拟内存调整到2048M或以上
  • 运行 services.mscRemote Registry打开
  • 重启服务器

(2)由功能缺失导致安装失败

  • 下载对应的sxs文件windows_server_2012 sxs.手动指定该路径进行安装

1.首先在IIS上创建网站。输入网站名称,物理路径和指定端口号。安装Python解释器。

2.配置虚拟环境,这里提供两种方法:
(1)使用 workon(需要将一个Python解释器设置到环境变量)

  • 安装workon pip install virtualenvwrapper (若没有设置镜像,下载慢可使用豆瓣源 -i https://pypi.douban.com/simple/)
  • 使用命令 mkvirtualenv 虚拟环境名称 创建虚拟环境
  • 使用命令 workon 虚拟环境名称 激活虚拟环境

(2)直接创建环境

3.安装 wfasttcgi (需要已经激活现有的虚拟环境)

  • 安装 pip install wfastcgi
  • 使用命令 wfastcgi-enable 初始化 FastCGI。
  • 在IIS主页的FastCGI中会自动生成FastCGI的指向,
  • 编辑改设置,添加三个环境变量的属性
  • Name: WSGI_HANDLER , Value: django.core.wsgi.get_wsgi_application()
  • Name: PYTHONPATH , Value: 项目根目录
  • Name: DJANGO_SETTINGS_MODULE , Value: 项目根目录路径下的settings路径

4.在项目根目录下放入 web.config文件,内容如下:

<?xml version="1.0" encoding="UTF-8"?>
    <configuration>
        <system.webserver>
            <handlers>
                <add name="Python FastCGI" path="*" verb="*" modules="FastCgiModule" scriptprocessor="&#x865A;&#x62DF;&#x73AF;&#x5883;&#x4E0B;Python&#x89E3;&#x91CA;&#x5668;&#x8DEF;&#x5F84;|C:\Users\Administrator\Envs\&#x865A;&#x62DF;&#x73AF;&#x5883;&#x540D;&#x79F0;\lib\site-packages\wfastcgi.py" resourcetype="Unspecified" requireaccess="Script">
            </add></handlers>
        <httpprotocol>
            <customheaders>
                <remove name="Access-Control-Allow-Origin">
            </remove></customheaders>
        </httpprotocol>
        </system.webserver>
        <appsettings>
            <add key="WSGI_HANDLER" value="django.core.wsgi.get_wsgi_application()">
            <add key="PYTHONPATH" value="E:\&#x9879;&#x76EE;\">
            <add key="DJANGO_SETTINGS_MODULE" value="&#x9879;&#x76EE;.settings">
        </add></add></add></appsettings>
    </configuration>

5.点击所建立的网站,找到功能 处理映射程序,看是否有Python FastCGI这个模块映射。

(1)若没有,点击添加模块映射,配置如下:

  • 请求路径: *
  • 模块: FastCgiModule
  • 可执行文件: &#x865A;&#x62DF;&#x73AF;&#x5883;&#x4E0B;Python&#x89E3;&#x91CA;&#x5668;&#x8DEF;&#x5F84;|C:\Users\Administrator\Envs\&#x865A;&#x62DF;&#x73AF;&#x5883;&#x540D;&#x79F0;\lib\site-packages\wfastcgi.py
  • 名称: Python FastCGI
  • 之后点击请求限制,把映射的勾去掉,将谓词设置为全部

(2)若有,确认配置和上方一样。

6.项目主目录点击编辑权限,编辑 &#x7EC4;&#x6216;&#x7528;&#x6237;&#x540D;,点添加按钮,输入 e之后点击检查名称,添加Everyone到用户中,并勾选完全控制。

7.启动项目

(1) 因为 IIS 7 采用了更安全的 web.config 管理机制,默认情况下会锁住配置项不允许更改。运行命令行

C:\windows\system32\inetsrv\appcmd unlock config -section:system.webServer/handlers

其中的 handlers 是错误信息中红字显示的节点名称。如果modules也被锁定,可以运行

C:\windows\system32\inetsrv\appcmd unlock config -section:system.webServer/modules

注意:cmd.exe要以管理员身份启动,在c:\windows\system32下找到cmd.exe,右键管理员启动,输入上面的命令即可。

(2) 若上方无法解决问题,可以检查IIS的功能是否全部勾选,若未勾选完,则按照上边安装IIS的步骤勾选完再安装即可。

这个问题很复杂,我把处理步骤进行一个划分,出现这个问题,按照我提供的顺序往下走。

(1)首先确保自己的项目可以正常启动。cmd虚拟环境下进入项目根目录使用命令 python manage.py runserver 确保程序可以正常启动。

(2)在IIS的应用程序池中找到当前项目所使用的应用程序池。右键选择高级设置,找到 &#x8FDB;&#x7A0B;&#x6A21;&#x578B; -> &#x6807;&#x8BC6;,将标识设置为 内置账户 LocalSystem。之后重启网站,看是否解决。

(3)若上方配置已完成还无法解决,确定自己的Python版本不是python3.7。python的整个3.7版本就是一个BUG版本,可以看我之前博文有说过,python3.7的坑特别多,包括这个FastCGI意外退出的问题,都是这个版本导致,建议Python版本升为python3.8.5,点此下载。很多人说pytho3.6的兼容性是最好的,其实在我个人的使用以及体验上来看,python3.8是要优于3.6的。

(4)若python版本升级为3.8之后都无法解决问题,请在虚拟环境下使用命令 wfastcgi-enable确保fastcgi没有问题。之后检查web.config的路径是否有填写正确。

Celery在Windows上的坑,多到其实根本数不过来。我这里给出以下几个问题解决的思路(仅是个人的思路)。

(1)Celery在Windows上确实很难去处理,本身兼容性就不是很好,在服务器上部署就更难,所以这里的第一个方案是将Celery和项目分离开进行部署,找打一台Linux服务器或者直接使用云服务器装好celery和flower以及supervistor。只需要在IIS上的项目可以将异步任务放进Redis就OK了。

(2)若果真的只有一台服务器,只能在Windows上部署,那么就只能使用cmd命令挂起一个窗口了。但是这样是很不安全的,这里推荐使用vbs和bat脚本结合的办法,用bat脚本启动celery和flower之后,使用vbs脚本隐藏掉窗口即可。

这个问题其实算是比较常见的一个,首先跨域你得清楚,请求跨域说明你的请求已经成功的到达了服务端,服务端已经返回了当前请求的响应。其次得清楚一下两点:

(1)服务端的提示信息(按F12 控制台的打印信息),信息内容提示你没有设置 Access-Control-Allow-Origin的时候。你需要在IIS当前网站的HTTP响应头中设置 Access-Control-Allow-Origin:*

(2)服务端的提示信息内容找那个提示,你的 Access-Control-Allow-Origin一共返回了两个,这个的意思是你在项目中已经设置过了跨域(b比如安装了django-cors-headers且在settings中设置了允许跨域),并且也在IIS的HTTP响应头中设置了 Access-Control-Allow-Origin:*。出现了重复设置的情况,你只需要将IIS的HTTP响应头中 Access-Control-Allow-Origin:*删调即可。

Original: https://blog.csdn.net/qq_41141246/article/details/120080396
Author: 紫一。
Title: 这应该是全网最详细的IIS部署Django项目流程了

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/735388/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球