在Windows上部署django

首先我是Windows server2012的腾讯云服务器,通过IIS+wfastcgi进行部署。python的版本是3.7.0,使用的mysql版本是8.0。

在开始之前,先说明一下GDAL这个包的问题。本来我在主机上使用的是GDAL3.4.1的版本,但是如果在服务器上也用这个版本就会出现下图这个错误。

所以后来又下载了GDAL3.0.4的版本,安装完成后即可正常使用。顺便一提,在ubuntu18.04上想要安装GDAL库在不使用conda的时候确实是比较麻烦。如果一定要使用django且GDAL不可或缺,采用Windows进行部署是一个不错的选择。

下面正式开始进行部署。首先打开你的服务器,选择添加服务和功能。

然后一直下一步,直到出现这个界面,我这里是安装了IIS,最开始打开的时候应该是要选中它的。之后打开会有一个服务器角色功能,在那个界面上选中应用程序,展开后选中CGI,再点击安装就好。记得安装IIS的管理工具

然后打开IIS的管理工具,选择添加网站。

此时可以开始进行wfastcgi的安装,我没有选择安装在虚拟环境中,而是安装在了外面。

 安装完成后,找到你wfastcgi.py这个文件的位置,将它复制粘贴到你的project(你的名字可能跟我的不一样)目录下,

 完成这一步后即可以开始添加网站。网站名称可以自己取,物理路径如下:

C:\inetpub\wwwroot\cesium_project

也就是你的项目所在的根目录(有manage.py的那个)。

IP地址最好是分配一个,不分配应该也没有关系。

 完成这一步后,开始下一步,点击处理程序映射

 打开之后按照下面的填写。

那个可执行文件是这样的:

C:\cesium_venv\Scripts\python.exe|C:\inetpub\wwwroot\cesium_project\wfastcgi.py

 |之前的是你的虚拟环境中python.exe的文件所在位置,后面的是你刚刚复制粘贴的wfastcgi.py的位置。

将请求限制的勾去掉。

完成后在你的项目根目录下新建web.config文档,里面的内容如下:

<configuration>
  <appSettings>
    <!-- Required settings -->
    <add key="WSGI_HANDLER" value="django.core.wsgi.get_wsgi_application()" />
    <add key="PYTHONPATH" value="C:\inetpub\wwwroot\cesium_project" />
    <add key="DJANGO_SETTINGS_MODULE" value="cesium_project.settings" />

    <!-- Optional settings -->
    <add key="WSGI_LOG" value="C:\inetpub\wwwroot\cesium_project\wsgi.log" />
    <add key="WSGI_RESTART_FILE_REGEX" value=".*((\.py)|(\.config))$" />
  </appSettings>
</configuration>

红色方框里的内容需要更改,特别注意那个wsgi.log,提前在你的文件夹中建立好该文件,然后更改它的权限。

 将选中IIS那个用户,将写入权限勾上,点击确定即可。

一般安装到这里,你打开你的网址就已经可以访问你的django项目了。(记得在IIS中重新启动你的网站)。如果出现500,可以看本文最后一部分。

接下来介绍static文件的处理办法,在网上有很多的方法,我试了一下好像都行不大通。附上我自己的方法:

首先现在你的项目根目录里面建立static_collected文件夹,然后打开你的项目中的settings文件,添加下面这句话:

然后打开你的urls文件,添加这三句话:

 现在你的项目根目录应该长这样:

 然后打开CMD进入虚拟环境,cd到你的项目根目录,输入命令python manage.py collectstatic,开启静态文件收集,完成后你的静态文件就都保存到你刚刚新建的static_collected文件夹里了。

打开此界面,添加虚拟目录

别名一般取static,物理路径就是你的static_collected目录。 

 

现在重启网站,再访问的时候应该就能够正常打开了。由于我没有meida目录的需求,所以这里不做介绍了。有知道的朋友可以在评论区告诉我一下。

最后,填一下我遇到的坑:

如果访问网站出现500……Fastcgi意外终止的错误,打开你的IIS的应用程序池,点击高级设置

 确保你的这个地方是LocalSystem

 如果不是,更改之后再重启网站,应该就可以正常访问了。

到这里所有的步骤(除了media)就都已经完成了。

猜你喜欢

转载自blog.csdn.net/XFIRR/article/details/125093942