1、系统信息
Windows7 64位 自带 IIS
python 3.7,Django 3, wFastCGI
2、新建一个项目
我的项目如下
首先确保自己的django网站在服务器上可以通过命令行 runserver 正常运行。
可以通过cmd切换到项目文件下,运行:python manage.py runserver
默认的是8000窗口,如下:
在浏览器输入上图中地址即可访问
3、IIS安装和配置
安装方法自行百度,IIS全部勾选
勾选Internet Information Services下面所有的子目录,需要一个个的勾选
开启IIS后再C盘会有一个C:\inetpub\目录,服务开启后自行新建的,我们可以把自己的项目放进去。
4、python安装wfastcgi模块
用 pip install wfastcgi 进行安装:pip3 install wfastcgi
5、项目文件处理
将项目文件拷贝到 C:\inetpub\wwwroot 目录下,方便管理,同时可以避免引起Windows Server的某些安全问题。
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
新建网站
根据自己项目情况进行配置
点开测试设置,显示如下
网上有教程,这里可以不用管,如果实在不放心,可以点开连接为。。。
选中特定用户,输入当前系统登录名和密码,警告可以消除。
新建网站以后,配置模块
按上图1,2操作,添加模块映射,如下,填写对应参数
我的填写完毕如下:右侧是请求限制弹出框,不做改变
可执行文件如下:C:\Users\dll\AppData\Local\Programs\Python\Python38\python.exe|C:\inetpub\wwwroot\ExamOnLine\wfastcgi.py
注意这里用分号隔开,前面一个是python执行路径,后面一个是wfastcgi执行路径,我们也可以直接引用python\Lib\site-packages目录下的文件也可以,不过就不可以部署多个Django网站了。
名称可以自定义,我这里已经配置好了,所以不可编辑。
添加后如下:
8、配置FastCGI
按照图中1,2操作
添加应用程序,我的已经配置好了,所以看到第一行已经有了。
按照上面配置信息,右侧是添加的环境变量窗口,前两个参数就不解释了,一个是python程序,一个是wfastcgi模块。
环境变量如下:
get_wsgi_application()方法的位置
-
Name: WSGI_HANDLER
-
Value: django.core.wsgi.get_wsgi_application()
项目settings.py文件的位置
Name: DJANGO_SETTINGS_MODULE
Value: HelloWorld.settings(HelloWorld是自己的项目名称)
至此创建完毕,在项目根目录下有一个web.config的文件,不用修改,内容如下
其实就是刚才你配置的信息。
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‘),
再次运行,正确显示!
希望对大家有帮助,这周为了这事真的是简直了!!!!