首先我是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)就都已经完成了。