django在IIS7的部署配置

需求:有个django项目是在windows环境开发的,最终还需要部署在windows环境下,django自带的runserver毕竟太简陋了,只能用于开发测试,还是需要有个稳定的web服务器。

解决方案:在网上找了好久,最终是使用 IIS + wfastcgi。

wfastcgi:https://pypi.org/project/wfastcgi/

一、wfastcgi安装

这个简单,直接下载源码包安装或者使用pip方式安装

# 源码包安装
python setup.py install

# pip方式安装
pip install wfastcgi

二、IIS安装

windows 7以上系统都自带了IIS的安装包,不过需要我们手工去启用,这也比较简单,把该装上的都打勾安装:
django在IIS7的部署配置_第1张图片

三、IIS + wfastcgi配置

本想按照链接中的教程配置,谁知因我的安装目录存在空格,导致配置出错。
python2.7的安装目录是:D:\Program Files\Python27
wfastcgi的安装目录是:D:\Program Files\Python27\Lib\site-packages\wfastcgi-3.0.0-py2.7.egg

这整整花费我一个下午时间,开始还以为是wfastcgi-3.0.0不支持python2.7,最终才确实是空格的原因导致wfastcgi-enable新建的wfastcgi一直出错,还找不到原因,幸亏最终解决了,只想说声 草:

# 因安装目录有空格,所以不能通过这种方式启用wfastcgi
wfastcgi-enable

# wfastcgi-disable

所以,直接手工配置,不再选用web.config文件方式:

1、新建IIS网站

新建个网站 myweb,把django项目sky直接复制到IIS的wwwroot目录,配置好myweb路径,免得考虑其它

django在IIS7的部署配置_第2张图片
django在IIS7的部署配置_第3张图片

2、配置FastCgiModule

顺便把wfastcgi.py文件也复制到sky项目根目录,这样可以配置多个django项目。

django在IIS7的部署配置_第4张图片
django在IIS7的部署配置_第5张图片

就是这可执行文件配置中最坑,如果路径有空格就提交不了,所以得加双引号""
格式为:aaaa|bbbb (中间是 | 无空格)
aaaa:是python.exe的路径,有空格需加双引号""
bbbb:是wfastcgi.py文件路径
所以我这里的配置是:“D:\Program Files\Python27\python.exe”|C:\inetpub\wwwroot\sky\wfastcgi.py

3、FastCGI配置

点击IIS服务器,设置FastCGI
django在IIS7的部署配置_第6张图片

要能看到这个,并且路径不能有双引号"":
django在IIS7的部署配置_第7张图片

双击,配置三个django项目相关的环境变量
django在IIS7的部署配置_第8张图片

# django handler照写
WSGI_HANDLER:django.core.wsgi.get_wsgi_application()
# 项目目录
PYTHONPATH:C:\inetpub\wwwroot\sky
# django项目名称.settings
DJANGO_SETTINGS_MODULE:sky.settings

最终会生成的就是这样子的web.config:


    <configuration>
        <system.webServer>
            <handlers>
                <add name="Python_FastCGI" 
                     path="*" 
                     verb="*" 
                     modules="FastCgiModule" 
                     scriptProcessor="D:\Program Files\Python27\python.exe|C:\inetpub\wwwroot\sky\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="C:\inetpub\wwwroot\sky" />
            <add key="DJANGO_SETTINGS_MODULE" value="sky.settings" />
        appSettings>
    configuration>

4、static目录配置(静态文件)

这样配置完,网站就可以访问了,但是都无css,即静态文件访问不了。
解决方法:在static目录下放置一个文件web.config:


<configuration>
  <system.webServer>
    <handlers>
      <remove name="Python_FastCGI" />
    handlers>
  system.webServer>
configuration>

name=“Python_FastCGI” 要与前面配置FastCGI名字相同

5、admin css无效

把django项目部署到IIS上后,admin css无法找到,解决方法是:

在settings.py中配置:

STATIC_ROOT = os.path.join(BASE_DIR, 'static')
STATIC_URL = '/static/'

然后调用命令:

# 这会在static目录生成 django admin 后管的所有静态文件,这样就可以获取到了
python manage.py collectstatic

6、设置网站用户权限

我不是很懂IIS,但如果项目需要调用cmd命令,或者访问共享文件夹等,反正就是会不成功,原因是默认网站用户权限不足。我最终的解决方法是:在这里配置系统的管理员用户
django在IIS7的部署配置_第9张图片
django在IIS7的部署配置_第10张图片

结束!!!!!!!

参考:

https://blog.csdn.net/gzlaiyonghao/article/details/70243639/
http://kronoskoders.logdown.com/posts/1074588-running-a-django-app-on-windows-iis
https://blog.csdn.net/lsysafe/article/details/79148767

你可能感兴趣的:(django)