Window上通过IIS发布Django网站

Window上通过IIS发布Django网站

1、系统信息

Windows7 64位 自带 IIS

python 3.7,Django 3, wFastCGI

2、新建一个项目

我的项目如下

Window上通过IIS发布Django网站

首先确保自己的django网站在服务器上可以通过命令行 runserver 正常运行。

可以通过cmd切换到项目文件下,运行:python manage.py runserver

默认的是8000窗口,如下:

Window上通过IIS发布Django网站

在浏览器输入上图中地址即可访问

3、IIS安装和配置

安装方法自行百度,IIS全部勾选

勾选Internet Information Services下面所有的子目录,需要一个个的勾选

Window上通过IIS发布Django网站

开启IIS后再C盘会有一个C:\inetpub\目录,服务开启后自行新建的,我们可以把自己的项目放进去。

4、python安装wfastcgi模块

用 pip install wfastcgi 进行安装:pip3 install wfastcgi

5、项目文件处理

将项目文件拷贝到 C:\inetpub\wwwroot 目录下,方便管理,同时可以避免引起Windows Server的某些安全问题。

Window上通过IIS发布Django网站

6、复制wfastcgi.py到项目文件夹下

在python的Lib\site-packages目录下,找到wfastcgi.py文件,并将其复制到你的django项目根目录下我的机器是将 C:\Python37\Lib\site-packages\wfastcgi.py 拷贝到 C:\inetpub\wwwroot\ExamOnLine\wfastcgi.py

上图中我已经拷贝过来了

7、添加网站

进入IIS管理器,添加网站

我的电脑-->右键-->管理-->Servies and Application-->Internet Information Services(IIS) Manager

新建网站

Window上通过IIS发布Django网站

根据自己项目情况进行配置

Window上通过IIS发布Django网站

点开测试设置,显示如下

Window上通过IIS发布Django网站

网上有教程,这里可以不用管,如果实在不放心,可以点开连接为。。。

Window上通过IIS发布Django网站

选中特定用户,输入当前系统登录名和密码,警告可以消除。

新建网站以后,配置模块

Window上通过IIS发布Django网站

按上图1,2操作,添加模块映射,如下,填写对应参数

Window上通过IIS发布Django网站

我的填写完毕如下:右侧是请求限制弹出框,不做改变

Window上通过IIS发布Django网站

可执行文件如下:C:\Users\dll\AppData\Local\Programs\Python\Python38\python.exe|C:\inetpub\wwwroot\ExamOnLine\wfastcgi.py

注意这里用分号隔开,前面一个是python执行路径,后面一个是wfastcgi执行路径,我们也可以直接引用python\Lib\site-packages目录下的文件也可以,不过就不可以部署多个Django网站了。

名称可以自定义,我这里已经配置好了,所以不可编辑。

添加后如下:

Window上通过IIS发布Django网站

8、配置FastCGI

Window上通过IIS发布Django网站

按照图中1,2操作

Window上通过IIS发布Django网站

添加应用程序,我的已经配置好了,所以看到第一行已经有了。

Window上通过IIS发布Django网站

按照上面配置信息,右侧是添加的环境变量窗口,前两个参数就不解释了,一个是python程序,一个是wfastcgi模块。

环境变量如下:

get_wsgi_application()方法的位置

  1. Name: WSGI_HANDLER

  1. Value: django.core.wsgi.get_wsgi_application()

项目settings.py文件的位置

Name: DJANGO_SETTINGS_MODULE

Value: HelloWorld.settings(HelloWorld是自己的项目名称)

至此创建完毕,在项目根目录下有一个web.config的文件,不用修改,内容如下

Window上通过IIS发布Django网站

其实就是刚才你配置的信息。

9、修改setting.py文件中的ALLOWED_HOSTS

通过浏览器访问服务器网址,出现访问错误,报错为 Invalid HTTP_HOST header: ‘xxx.xx.xxx.xxx:8080’. You may need to add ‘xxx.xx’ to ALLOWED_HOSTS

解决办法: 修改创建项目时生成的setting.py文件

将ALLOWED_HOSTS = []改为ALLOWED_HOSTS = [‘*‘]

再次运行即可成功访问。

10配置静态文件

在C:\inetpub\wwwroot\ExamOnLine\ExamOnLine\settings.py中配置STATIC_ROOT如下:

STATIC_ROOT = os.path.join(BASE_DIR, ‘static‘)

注意:这里必须是 static ,必须和 C:\inetpub\wwwroot\HelloWorld\HelloWorld\settings.py 中 STATIC_URL = ‘/static/‘ 一致

收集静态文件

命令行跳转到项目目录执行命令 : python manage.py collectstatic

注意:如果提示STATICFILES_DIRS.E002错误,可能是因为你此时指定的static文件夹跟项目中static是同一个文件夹,在路径前加‘/‘,将收集的static放在c盘下即可。

11、胜利就在眼前

至此,你发现网站可以访问,但是静态文件显示不正确,为何?

根本原因是:当我们在开发django应用时如果设置了 DEBUG = True,那么django便会自动帮我们对静态文件进行路由;但是当我们设置DEBUG = False后,这一功能便没有了,此时静态文件就会出现加载失败的情况,想要让静态文件正常显示,我们就需要配置静态文件服务了。

解决方式

首先修改App setting.py文件

?
from django.views import static ##新增
from django.conf import settings ##新增
from django.conf.urls import url ##新增
urlpatterns = [
 path(‘‘, include(‘user.urls‘)),  
 ## 以下是新增
 url(r‘^static/(?P<path>.*)$‘, static.serve,
    {‘document_root‘: settings.STATIC_ROOT}, name=‘static‘),
]

添加静态文件服务

url(r‘^static/(?P<path>.*)$‘, static.serve, {‘document_root‘: settings.STATIC_ROOT}, name=‘static‘),

再次运行,正确显示!

Window上通过IIS发布Django网站

希望对大家有帮助,这周为了这事真的是简直了!!!!



Window上通过IIS发布Django网站

上一篇:深度学习笔记016卷积层基础之前


下一篇:Python IDE安装WordCloud