在阿里云服务器windows server2012r iis上部署Django项目
环境:window server 2012R
python 3.7
mysql 5.6.49
Django 3.0.2
第一步 安装IIS和CGI
概念:
IIS是Internet Information Services的缩写,意为互联网信息服务,是由微软公司提供的基于运行Microsoft Windows的互联网基本服务。
IIS是一种Web(网页)服务组件,其中包括Web服务器、FTP服务器、NNTP服务器和SMTP服务器,分别用于网页浏览、文件传输、新闻服务和邮件发送等方面,它使得在网络(包括互联网和局域网)上发布信息成了一件很容易的事。
CGI(Common Gateway Interface)公共网关接口,是外部扩展应用程序与 Web 服务器交互的一个标准接口。服务器端与客户端进行交互的常见方式多,CGI 技术就是其中之一。
实操步骤:
安装IIS
打开服务器管理器,选择添加角色和功能,选择要添加的服务器角色(WEB服务器IIS),然后安装



安装CGI
再次选择添加角色和功能,找到之前安装的WEB服务器IIS,点击它。

在展开的选项里找到WEB服务器,点击它,找到应用程序开发点击在展开的列表里找到CGI,勾选,然后下一步,安装它。
安装好CGI之后,我们在浏览器里输入http://127.0.0.1 访问IIS,如果出现如下页面,说明IIS安装成功

安装wfastcgi
在Windows下,我们没法使用uwsgi,但我们可以使用wfastcgi替代它,打开CMD窗口,输入命令安装wfastcgi:
pip install wfastcgi
启动:wfastcgi-enable 把里面生成的路径记录下来 上面的路径,是由Python解释器的路径和“|”以及“wfastcgi.py”文件路径组成。

如果你执行wfastcgi-enable时出现错误:
ERROR ( message:新 application 对象缺少必需的属性。在组合的密钥属性“fullPath, arguments”分别设置为“c:\python37\python.exe, c:\python37\lib\site-packages\wfastcgi.py”时,无法添加类型为“application”的重复集合项。 )
An error occurred running the command:
说明你安装的有问题,但最可能的原因是,wfastcgi已经启动过了,所以再次启动就报错。
若报错,则可以执行wfastcgi-disable来停止wfastcgi服务。然后再开启就可以了
部署环境
用 pip freeze>requirements.txt 命令把项目环境的软件包信息和依赖软件导出到文件里。
然后打开CMD切换到项目文件夹路径,输入下面命令,安装项目所需要依赖:
pip install -r requirements.txt
<?xml version="1.0" encoding="UTF-8"?>
<configuration> <system.webServer> <handlers> <add name="Python FastCGI" path="*" verb="*" modules="FastCgiModule" scriptProcessor="<Path to Python>\python.exe|<Path to Python>\lib\site-packages\wfastcgi.py" resourceType="Unspecified" requireAccess="Script"/> </handlers> </system.webServer> <appSettings> <add key="WSGI_HANDLER" value="django.core.wsgi.get_wsgi_application()" /> <add key="PYTHONPATH" value="<Path to Django App>" /> <add key="DJANGO_SETTINGS_MODULE" value="<Django App>.settings" /> </appSettings> </configuration> 
打开计算机管理


右键创建应用程序池存放我们自己的应用程序
网站右键添加网站


双击网站后 找配置编辑器查看配置是否正确


给静态资源添加虚拟目录
网站能访问了,但我们的前端样式显示有问题。那是因为我们没有在IIS里指定我们的静态资源目录,我们给它添加上虚拟目录就能解决。


添加虚拟目录时,别名放与你settings里设置的一致,比如'static',物理路径就是静态资源的实际目录。
在static里新建一个web.config文件,然后写入下面的内容:
<?xml version="1.0" encoding="UTF-8"?>
<configuration> <system.webServer> <!-- this configuration overrides the FastCGI handler to let IIS serve the static files --> <handlers> <clear/> <add name="StaticFile" path="*" verb="*" modules="StaticFileModule" resourceType="File" requireAccess="Read" /> </handlers> </system.webServer></configuration>IIS启动 net start w3svc
IIS停止 net stop w3svc

浙公网安备 33010602011771号