Django2:Web项目开发入门笔记(15)

355次阅读
没有评论

这一篇教程,我们一起来了解如何将Django2的Web项目部署到基于IIS的Web服务器。

很多学习Python的用户,都是在使用Windows系统,当使用Django完成一个Web项目,想在本机进行测试,又不想额外安装Web服务器的话,可以考虑使用Windows自带的IIS进行部署。

IIS(Internet Information Services:互联网信息服务)是Web服务组件,其中包括Web服务器、FTP服务器、NNTP服务器和SMTP服务器,分别用于网页浏览、文件传输、新闻服务和邮件发送等方面。

如果想使用IIS部署Django项目,需要先在Window系统中添加IIS功能并开启CGI应用程序支持,大家可以参考之前发布的教程《练习项目11:在线编辑文件(上)》中的第一部分内容,进行添加与设置。

提示:教程中是以Windows7系统下的IIS7.5为例,不同版本的Windows或IIS的添加与设置都比较相近。

但是,仅有这些是不行的。

因为IIS支持FastCGI,不支持WSGI,而Django2全面使用WSGI,不再使用FastCGI。

MMP,这是有多大仇?

所以,要想让两个仇家能合作,需要有个中间人。

这个中间人是Python的第三方库wfastcgi。

了解了以上内容,我们就可以开始部署工作了。

提示:本篇教程以Window7为例。

一、安装启用wfastcgi

在系统目录中找到CMD命令行终端,路径为:C:\Windows\system32\cmd.exe

也可以在桌面左下角,点击开始按钮,在【搜索程序和文件】的输入框中输入CMD进行查找。

但是,不要急于打开,在程序图标上点击鼠标右键选择【以管理员身份运行】;否则,启用wfastcgi会失败。

执行命令:

pip install wfastcgi

wfastcgi-enable

启用成功后会显示:

已经在配置提交路径“MACHINE/WEBROOT/APPHOST”向“MACHINE/WEBROOT/APPHOST”的“sy stem.webServer/fastCgi”节应用了配置更改”C:\Users\Administrator\AppData\Local\Programs\Python\Python36\python.exe|C:\Users\Administrator\AppData\Local\Programs\Python\Python36\lib\site-packages\wfastcgi-3.0.0-py3.6.egg\wfastcgi.py” can now be used as a FastCGI script processor

注意上面的标红的路径,是由Python解释器的路径和“|”以及“wfastcgi.py”文件路径组成,后面会用得到。

如果需要部署多个项目,大家可以把“wfastcgi.py”文件从上面的路径中复制到Django项目的根目录下。

Django2:Web项目开发入门笔记(15)

另外,如果想卸载wfastcgi,需要先禁用再卸载。

禁用命令:wfastcgi-disable

卸载命令:pip uninstall wfastcgi

二、创建网站

打开Internet信息服务(IIS)管理器,【控制面板】-【管理工具】-【Internet信息服务(IIS)管理器】。

在窗口左侧的【网站】图标上点击鼠标右键,选择【添加网站】。

站点名称可以和项目名称保持一致,然后物理路径选择项目目录,绑定设置使用默认设置,主机名留空。

Django2:Web项目开发入门笔记(15)

三、添加处理程序映射

点中我们新建的网站。

注意:不要点中左侧列表的根目录,根目录中的处理程序映射是对所有网站有效的。

窗口中部找到【处理程序映射】,双击打开之后,在窗口右侧找到【添加模块映射】,点击打开后依次进行设置:

  • 请求路径:*
  • 模块:FastCgiModule
  • 可执行文件:Python解释器的路径|wfastcgi.py文件路径
  • 名称:MyFastCGI(自定义名称)

提示:可执行文件填写的内容就是之前标红的路径,如果将wfastcgi.py文件复制到了项目目录中的话,可以使用项目中的文件路径。

例如:C:\Users\Administrator\AppData\Local\Programs\Python\Python36\python.exe|D:\MyWeb\wfastcgi.py

Django2:Web项目开发入门笔记(15)

另外,还要点击上图中的【请求限制】按钮,打开的窗口中取消【仅当请求映射至以下内容时才调用处理程序】的勾选。

提示:IIS7.5默认是不够选的,但是有些IIS版本会默认勾选,导致网站无法正常访问,例如:IIS10。

做完以上设置,点击【确定】,此时会弹出创建FastCGI应用程序的提示,点击【是】,完成创建。

四、添加应用程序

Internet信息服务(IIS)管理器左侧点中根目录,窗口中部找到【FastCGI设置】,双击进入。在打开的窗口中,双击我们创建的记录打开【编辑FastCGI应用程序】的窗口。

Django2:Web项目开发入门笔记(15)

FastCGI属性列表中,找到【环境变量】,点击后方的【…】按钮进入【EnvironmentVariables集合编辑器】,左侧成员列表下方点击添加按钮,添加3个变量。

Django2:Web项目开发入门笔记(15)

第1个变量是WSGI_HANDLER,以及它的实例。

在Django项目的“wsgi.py”文件中有一句代码:from django.core.wsgi import get_wsgi_application

导入的方法“get_wsgi_application”,它的返回值就是一个WSGIHandler()。

Name: WSGI_HANDLER

Value: django.core.wsgi.get_wsgi_application()

第2个变量是项目目录,Python代码文件的所在路径。

Name: PYTHONPATH

Value: D:\MyWeb

第3个变量是项目中“settings.py”文件的路径。

Name: DJANGO_SETTINGS_MODULE

Value: MyWeb.settings

点击确定按钮,保存退出。

网上的很多教程到这里就会说:当我们完成以上步骤,重新启动网站,就能够访问了。

事实上还不行,继续完成下面的设置。

五、修改项目的设置文件

打开项目中的“settings.py”文件,找到“ALLOWED_HOSTS ”,进行修改。

示例代码:

ALLOWED_HOSTS = ['*'] # *表示不限制,也可以在列表中添加站点绑定的域名

如果之前已经做过这项设置,此步骤可以略过。

六、添加目录权限

需要增加权限的目录包括Python安装目录项目目录,缺一不可。

修改内容是将这些目录都添加指定用户组的控制权限。

这里,我们给指定用户组都赋予“完全控制”的权限。

Django2:Web项目开发入门笔记(15)

提示:如果还不能访问,尝试将“IIS_IUSRS”用户组的权限也添加上。

到这里,就可以通过本机、局域网或者外网进行访问了。

打开浏览器,输入访问地址:

  • 本机:127.0.0.1或者localhost
  • 局域网:192.168.X.X
  • 外网:本机所在网络的外网IP地址

提示:如果本机通过路由器联网,需要路由器上做端口映射(转发),也可以通过启用DMZ来实现外网的访问。

问:如果局域网内可以访问,外网仍然无法访问,怎么办?

答:首先,找宽带服务商将IP地址转为公网IP,作者是电信宽带,打完热线要求更改后不到24小时就可以访问了。

问:如果转成公网IP依旧无法访问本机服务器,怎么办?

答:可能存在很多原因,有可能是防火墙问题,也有可能是IIS问题等等,需要进行排查才能确定。Django项目在IIS上部署,本来就是以测试为目的,我建议不要耗费太多精力在这个问题上,除非是真正在生产环境下需要如此进行部署。

最后,对于项目中的静态文件我们还需要进行相应的设置。 七、处理静态文件 1、打开项目中的“settings.py”文件,找到“STATIC_URL”,进行修改。

示例代码:

STATIC_URL = 'static/'  # 注意只有后面有“/”,否则会目录不正确。

2、打开项目中的“urls.py”文件,增加代码。

示例代码:

from django.conf import settings
from django.conf.urls.static import static

urlpatterns = [
                  ...省略URL分发配置...
              ] + static(settings.STATIC_URL, document_root=settings.STATIC_URL)

3、在项目文件夹中添加静态文件的文件夹。例如:static

4、Internet信息服务(IIS)管理器点中我们创建的网站,点击鼠标右键,选择添加虚拟目录,填写别名(例如:static),然后将这个虚拟目录指向静态文件目录的物理路径,点击确定保存。

Django2:Web项目开发入门笔记(15)

到这里,我们就完成了Django2项目在IIS上的部署。

神龙|纯净稳定代理IP免费测试>>>>>>>>天启|企业级代理IP免费测试>>>>>>>>IPIPGO|全球住宅代理IP免费测试

相关文章:

版权声明:wuyou2023-01-03发表,共计3579字。
新手QQ群:570568346,欢迎进群讨论 Python51学习