目录
零之前言
1.小前言
弄了三个下午,终于成功的Win Server上的IIS上部署跑通了我的Django。
2.环境
服务器是阿里云的Win Server 2012 R2;使用了宝塔Windows版;python版本3.6.6;Django版本2.1.5;MsSQL 2008;IIS是使用宝塔安装的IIS8.5
3.准备样例代码
为了验证Django,所以就随便的简单写了一个views:
一.设置IIS
这一步我也不知道具体要怎么弄,我也不知道要开通哪些插件/服务,但是还是能用就行了。
①打开添加角色功能
首先打开服务器管理器,找到IIS(如果你用宝塔下载了IIS8.5的话):
②设置添加角色功能
就是下面这一步,我也不知道要选哪些东西,但是根据绝大多数其他人的教程来说,确保勾选住CGI就行。
这一步我还是不知道选什么,除了进去默认帮你选好的,我还多选了: IIS可承载Web核心,网络负载平衡,简单的TCP/IP服务。
简单的等待后,确保安装成功。
③验证IIS服务器设置
想办法找到你的IIS管理器(控制面板/系统安全/管理工具)
接下来选中两项目录,确保我们有如图的东西,因为这是我们等会儿设置的关键。
确保我们有FastCgiModule这个模块,否则我们后面是不成功的。
然后我们在Win Server上用浏览器测试一下,IIS服务器是否配置成功,虽然阿里云的内网地址不是127.0.0.1,但是我们任然可以用localhost访问我们的主页:(因为默认的是80端口,请确保阿里云和宝塔面板的80端口是放行了的)(当然一般都是默认放行的)
如果出现了以上界面,说明了我们目前来说是成功的,如果没有成功,那就检查检查步骤,或者看看其他大佬的文章试试吧。
二.准备wfastcgi模块
①打包项目至服务器
我们的宝塔在安装IIS的时候,为我们在C盘根目录下创建了一个wwwroot目录,我们可以把东西放在里面,或者如果自己搭建的IIS,就自己创一个文件吧。
然后把我们的项目复制到我们的网站目录下,我取名的时候项目就叫Django,所以在wwwroot目录下tree是这个亚子:
②安装 wfastcgi
pip install wfastcgi
安装完后,我们需要使用还需要在cmd里获取模块和python的目录(当然如果你知道这些路径也可以不用),但最好还是在cmd里输入这个命令试试吧,免得出现什么玄学状态:
wfastcgi-enable
出现如下字段,那我们就还是复制一下吧:
""c:\program files\python\python.exe"|"c:\program files\python\lib\site-packages\wfastcgi.py"" can now be used as a FastCGI script processor
主要是提取这个格式的信息:
"xxxx\python.exe"|"xxxx\wfastcgi.py"
"c:\program files\python\python.exe"|"c:\program files\python\lib\site-packages\wfastcgi.py"
注意:IIS8.0和wfastcgi-3.0.0并不需要引号,填入仅需要:
c:\program files\python\python.exe|c:\program files\python\lib\site-packages\wfastcgi.py
然后我们再去wfastcgi.py的目录下把它拷贝至我的项目文件下(就是和manage.py在同一级目录下),再tree一下我们的wwwroot:
三.新建网站并设置
初步检查一下吧:
添加一下三个环境变量:
1.get_wsgi_application()方法的位置 #这个就是一模一样的了
Name: WSGI_HANDLER
Value: django.core.wsgi.get_wsgi_application()
2.Django项目目录 #这个要根据自己的项目目录来确定
Name: PYTHONPATH
Value: C:\wwwroot\Django
3.项目settings.py文件的位置 #这个也要根据自己的项目名来确定
Name: DJANGO_SETTINGS_MODULE
Value: Django.settings
然后我们来访问一下:
鸭儿哦,啥子回事?那就是没有设置权限。
四.设置文件权限
我们找到我们的项目文件,或者网站根目录:右键 -> 属性 -> 安全
再来访问一下呢?!!!!NICE!!! Debug模式界面!
这不就完事了吗?!
五.静态资源设置
对,Django中设置了静态资源,在服务器里我们还要再设置一次。(但是我没有用静态资源,所以我就大概写个流程)
我就搬运大佬的文章吧:地址:https://www.cnblogs.com/happyAzhan/p/11304696.html
如果项目包含静态文件,则需要配置静态文件
配置静态文件,在项目目录调用python manage.py collectstaic命令(如之前的运行runserver方法一致)将app下static中的静态文件全部拷贝到 settings.py 中设置的 STATIC_ROOT 文件夹中
命令运行结束后在项目的具体app路径下的static文件夹>>admin>>新建一个文件web.config
在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管理器
你添加的网站>>右键菜单>>添加虚拟目录
名称:一般使用static
路径:选择web.config所在的目录
最后重新启动下网站就行了
但是我觉得吧那个<ckear/>不知道哪儿来的,我们的项目文件夹里也有一个web.config,其中包含了我们的设置:
其中代码如下:上面的代码不行的话,参考这个结构来试一试
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<handlers>
<add name="djangomodule" path="*" verb="*" modules="FastCgiModule" scriptProcessor="c:\program files\python\python.exe|"c:\program files\python\lib\site-packages\wfastcgi.py"" resourceType="Unspecified" />
</handlers>
</system.webServer>
</configuration>
六.后记小结-以及Debug
1.wfastcgi问题
wfastcgi只能enable一次,否则会出现问题。若出现此问题,最好删掉所有的FastCGI的程序和创建的关于FastCgiMoudle程序映射后重新wfastcgi-enable
2.服务器500
在确保前面的服务创建没有问题的情况下,可能是由于环境问题导致的django未启动,并非CGI问题。所以可以通过django自带的服务器python manage.py runserver进行测试。比如出现了如下错误:(因为python包没有下载完全)