基于Windows10的IIS使用内网穿透搭建让所有人都能访问的Django网站

    技术2026-03-10  7

    文章目录

    一、项目介绍1.1 前情提要1.2 项目环境 二、搭建过程2.1 Python3.7安装2.2 Pycharm2019.3.3安装2.3 Django项目搭建2.4 安装ISS服务2.5 本地部署2.6 外网访问(内网穿透) 三、注意点四、总结

    一、项目介绍

    1.1 前情提要

      示例项目的后台使用Django编写,哪个后台无所谓,主要是在Windows上使用IIS的微软服务器搭建自己的网站,使全球各地的人都能访问到自己搭建的网站。注:在Windows Server端服务器部署

    1.2 项目环境

    Windows10Python3.7Django2.0IISnatappPycharm2019.3.3x64

    二、搭建过程

    2.1 Python3.7安装

    下载地址,点击这个链接选择如下图下载** 勾选Add Python3.7 to PATH,并选择Custoize installation** 默认即可,点击下一步** 选择安装位置,注意:这里一定不要选择默认的安装目录,建议选择除C盘之外的任意盘符,并不要加空格和汉字,否则后面部署会出现授权问题** 最后点击Install安装即可,最后打开cmd输入Python,如出现以下则说明安装成功** 因为我们需要用到Django,所以使用下面命令安装Django即可,至此,Python3.7的环境已经准备完毕** pip install Django==2.0

    2.2 Pycharm2019.3.3安装

    百度网盘下载地址,提取码:kpxu由于Pycharm安装就是一直点击下一步,没有需要注意的点,同时篇幅有限,再次不再赘述,下面是安装之后的效果**

    2.3 Django项目搭建

    创建新项目** 创建项目,如下选择,最后点击Create即可** 启动项目,输入在此目录cmd终端输入:python manage.py runserver,运行如下,运行之后Ctrl+C关闭即可,目的是验证自己的项目可用,出现下图说明项目搭建成功**

    2.4 安装ISS服务

    打开控制面板,选择“程序”** 选择“启用或关闭Windows功能”** 找到“Internet Information Services”,按照我的选择,最后点击确定,等待全部开启即可** 开启之后,在浏览器输入“http://127.0.0.1”,出现下图说明安装成功**

    2.5 本地部署

    安装wfastcgi,注意:使用管理员身份打开cmd** pip install wfastcgi 启动wfastcgi** wfastcgi-enable

    把引号里面的路经复制保存**

    在Django项目的根目录新建web.config配置文件,内容如下:**

    <?xml version="1.0" encoding="UTF-8"?> <configuration> <system.webServer> <handlers> <add name="Python FastCGI" path="*" verb="*" modules="FastCgiModule" scriptProcessor="c:\software\python3.7\python.exe|c:\software\python3.7\lib\site-packages\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:\Software\PythonProject\test02\test02" /> <add key="DJANGO_SETTINGS_MODULE" value="test02.settings" /> </appSettings> </configuration>

            注意:直接按照我的复制即可,但下面三个需要修改         ①:scriptProcessor修改为上一步复制保存的路经,添加即可         ②:PYTHONPATH修改为项目的路经,这里注意要添加到有settings.py那个文件的目录         ③:DJANGO_SETTING_MODULE修改为:项目名.settings

    在Django项目的settings.py中将ALLOWED_HOSTS修改为如下:** ALLOWED_HOSTS = ['*'] 在控制面板搜索“管理工具”打开** 选择第二个打开** 在主界面“网站”右键“添加网站”** 在主界面“网站”右键“添加网站”,打开之后之需要修改三个地方,第一个是网站名称,第二个是Django项目路经,最外层路径即可,最后端口随便填一个,我这里使用8080,然后点击确定 单击创建好的网站,选择“目录浏览”->“打开功能”** 选择“启用”** 这里配置我们的静态资源目录,使图片等正常显示,首先在Django项目static下面新建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的目录路经** 到此位置本地部署已经完成,我们来看一下效果,右键刚刚新建的网站,选择“管理网站”->“浏览”** 出现下图说明本地部署完成。但是外网还不能访问此网站,那么我们就需要内网穿透,让外网可以访问,具体看下面

    2.6 外网访问(内网穿透)

    访问这个网站,注册帐号**

    点击“个人中心”,进行“实名认证”后,选择“购买隧道”,选择免费即可**

    点击“我的隧道”,将“authtoken”复制并记录**

    然后下载客户端**

    解压之后只有一个可执行文件,在这个目录我们新建config.ini,输入内容如下,别的都不需要修改,只需要把authtoken修改为你刚刚保存的即可,保存退出**

    #将本文件放置于natapp同级目录 程序将读取 [default] 段 #在命令行参数模式如 natapp -authtoken=xxx 等相同参数将会覆盖掉此配置 #命令行参数 -config= 可以指定任意config.ini文件 [default] authtoken= 这里输入刚才复制粘贴的authtoken #对应一条隧道的authtoken log=none #log 日志文件,可指定本地文件, none=不做记录,stdout=直接屏幕输出 ,默认为none loglevel=ERROR #日志等级 DEBUG, INFO, WARNING, ERROR 默认为 DEBUG http_proxy= #代理设置 如 http://10.123.10.10:3128 非代理上网用户请务必留空 打开natapp,复制保存红框部分** 使用另一台电脑(或者让你的朋友),打开刚才的红框的复制保存的链接,如下图,说明内网穿透成功**

    三、注意点

    出现HTTP错误500.19-Internal Server Error**   解决方法:打开cmd,依次输入像下面两个命令 %windir%\system32\inetsrv\appcmd unlock config -section:system.webServer/handlers %windir%\system32\inetsrv\appcmd unlock config -section:system.webServer/modules 出现400错误**   解决方法:找到创建的网站,右键->编辑权限,给IIS用户添加修改和写入权限即可 出现HTTP错误500.0-Internal Server Error**   解决方法:代码出错,先用下面命令在Pycharm的cmd下跑一下项目 python manage.py runserver

    四、总结

      整体步骤并不复杂,知识细节需要把握,我只是用Django简单的做一下演示,如果有多个app配置方法和上面一样,因为我个人不太喜欢字太多的教程,所以请各位读者一定要注意我写字的地方,都是需要注意的小细节,整篇教程完毕,如有问题联系我即可

    Processed: 0.035, SQL: 10