IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> Django+Windows+IIS,避坑实录 -> 正文阅读

[Python知识库]Django+Windows+IIS,避坑实录

????????打算将Django项目部署在服务器上(Windows环境),前面试图使用Apache,结果无论怎么试都不行(从查阅的资料猜测应该是跟python版本和VC版本有关),所以才有了这篇文章。

? ? ? ? 不管外面对IIS的评价怎么样,但对我这么一个新手来说,部署起来真是相当简单友好。

? ? ? ? 部署的过程大概就是三部分:安装相应版本Python,打包上传项目,开启IIS,设置网站。这个过程非常简单,我将步骤整理如下。

? ? ? ?本文结构:

?????????????????一、安装对应版本Python;

????????????????二、打包上传项目;

????????????????三、开启IIS;

????????????????四、设置网站;

????????????????五:常见问题解决方法

一、安装对应版本Python

? ? ? ? 1、查看自己Windows是多少位系统操作。可以通过我的电脑--右键--属性进行查看。我的是64位。

? ? ? ? 2、去官网下载对应版本Python。我下载的是Python3.9.6(64位)

? ? ? ? ?3、建一个文件夹来存放Python(这一步可选,即使不建也没关系)。我建的是一个名为python的文件夹,路径是‘C:\python’

? ? ? ? 4、安装Python。这里要注意两点,一个是把添加系统变量给勾选上,而是选择location。

?勾选

选择自己的location?

?????????5、检查是否安装成功。方法是打开cmd,输入python并回车,如果安装成功如下图所示

?二、打包上传项目(你的项目在本地测试应该是成功)

????????1、上传前先获取项目依赖包。方法,在本地项目路径下使用pip freeze > requirements.txt命令获取项目的requirements.txt文件(它自动生成在项目路径里,不要动它),里面存的都是项目所依赖的包。

????????2、上传项目。方法:将已经生成过requirements.txt文件的项目文件夹复制粘贴到服务器的里。具体粘贴到哪里有你自己确定。我这里是粘贴到了C盘。

????????3、安装项目依赖包。方法:在你粘贴的项目文件夹里打开cmd,执行pip install?-r requirements.txt命令。执行完如下图:

如果使用的是Mysql数据库,请自行安装Mysql和导入数据,我这里用的是Django自带的sqlite3,文件直接在项目文件夹里,不用安装和导入数据库数据了。?

三、开启IIS

????????1、安装IIS。从Windows里搜索到iis,然后点击它

?之后会出现以下页面,根据页面进行点击即可。我的已经安装好了,下面这几张图是从网上搜到的,过程基本一致。

?????????请注意,在这一步之后,版本的不同,有的会出现让选择配置?,不用管,一致下一步,最后会出现下面这个页面:

点击结束即可。

????????2、安装CGI。方法是再次选择添加角色和功能,找到之前安装的WEB服务器IIS,点击它,就会如下图所示:

然后在展开的选项里找到Web服务器,点击它,找到应用程序开发点击在展开的列表里找到CGI,勾选,然后下一步,安装它?,如下图:

最后结束的画面如下图:

????????关闭即可。此时就可测试一下iis服务器是否开启成功。测试方法是在浏览器输入http://127.0.0.1,然后回车,如果页面如下图,即是开启成功?:

?四、设置网站(这个是重头戏,非常关键)

????????1、在IIS里添加网站(也就是你的项目),如下图,可依次照着设置。

这时项目就出现在网站列表里,如下图:

至此,我们服务器上有了项目,也有了网站。因为在Windows下,我们没法使用uwsgi,所以我们还需要一个桥梁把它们连接起来——wfastcgi。

????????2、下载wfastcgi。方法是在打开CMD窗口里,输入命令pip install?wfastcgi,如下图

????????3、启动wfastcgi。方法是使用命令wfastcgi-enable?,如下图

?

特别注意:箭头指到的方框里的内容要复制下来,后面要用,它说的是python和?wfastcgi的位置。

????????4、设置配置文件web.config(目的是让网站能够找到加载项目)

这个web.config文件应该放在项目的根目录里,也就是跟manage.py平级。配置文件内容如下,请按照实际进行修改:

代码如下:

<?xml version="1.0" encoding="UTF-8"?>
    <configuration>
        <system.webServer>
            <handlers>
                <add name="Python FastCGI"
                     path="*"
                     verb="*"
                     modules="FastCgiModule"
                    scriptProcessor="c:\python\python38\python.exe|c:\python\python38\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:\script" />#此处需要修改
            <add key="DJANGO_SETTINGS_MODULE" value="script.settings" />#此处需要修改
        </appSettings>
    </configuration>

?到这里就可以看到你通过“公网IP:8000”,在浏览器看到你的网页。这里有个注意事项,就是你的把debug设置为False,ALLOWED_HOSTS设置为你的公网IP,才能显示网站。

五:常见问题解决方法

说说几种错误出现时的处理方法:

一、网站静态文件(样式什么的)加载不出来

解决办法:

????????1、添加虚拟目录,在IIS找选中网站项目名,右键--添加虚拟路径

6.jpg

7.jpg

添加虚拟目录时,别名放与你settings里设置的一致,比如'static',物理路径就是静态资源的实际目录。

????????2、在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,访问网站,前端就能正常显示。

?二、网站media文件(视频图片什么的)加载不出来

?????????方法:跟第一种问题的解决方法一模一样,唯一的区别是把web.config文件里的第七行中的name="StaticFile"换成name="MediaFile",其他内容不变,然后把这个web.config文件放到media文件夹中。

三、用户无法登录,出现500错误。

????????错误的原因是数据库文件没有权限(所谓的777权限),所以只需要给它权限即可。如下图:

四、

(下面这几种错误我并没出现过,但是其他人出现了,所以我把它们也收集到这里,供大家参考):

如果访问IIS出现如下错误

4.jpg

HTTP 错误 500.19 Internal Server Error

出现这样的情况是因为IIS7之后的版本都采用了更安全的 web.config 管理机制,默认情况下会锁住配置项不允许更改。我们把它解锁了就OK。

打开CMD,在里面依次输入下面两个命令:

1

2

3

%windir%\system32\inetsrv\appcmd unlock config -section:system.webServer/handlers

%windir%\system32\inetsrv\appcmd unlock config -section:system.webServer/modules

5.jpg

解除了锁定之后,再访问网站就能正常显示了。

还有种情况:有时候访问页面,或者单独访问网站后台出现400错误,这个时候可能是因为没有给网站权限的原因。我们打开IIS,找到网站,右键,编辑权限,给IIS用户添加修改和写入权限。就能正常访问。

1.png

管理后台样式丢失解决

正常情况下,部署的时候管理后台样式是不能正常显示的,我们需要收集这些样式到项目里去,才能正常显示。

步骤:

1、在settings.py里添加STATIC_ROOT配置指定收集路径如:

#指定样式收集目录,路径一般为项目里的static文件夹
STATIC_ROOT  = os.path.join(BASE_DIR, 'static')
#或(这里根据自己的实际路径去改)
STATIC_ROOT = 'C:\python\mysite\static'

然后CMD下运行如下面命令,进行样式采集:

python manage.py collectstatic

采集完成之后,刷新页面。后台样式成功显示

?如果感觉对你有帮助,就点赞收藏吧!

  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2021-07-27 16:10:51  更:2021-07-27 16:11:42 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/8 7:23:14-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码