IIS 部署Django网站流程

很多刚接触Django 的同学们,刚刚用Django写了个网站,在本地Django集成的服务器上已经运行起来了,接下来要将网站部署到生产环境中却满头雾水,不知如何下手,我也曾遇到这样的问题,也是只能搜索摸索部署,现在我就已IIS为服务器说明Django网站的部署过程

假设您的服务器是从阿里云新购置的,无任何配置,具体的部署流程大体可概括为:1、配置Django运行环境。2、配置网站 。3、配置IIS服务器,接下来我将一一介绍流程

一、配置运行环境

在服务上安装IIS,注意必须安装CGI

安装Python 环境

DjangoPython下的一个网站开发框架,所以要先在服务器上配置Python运行环境,Python环境建议使用 AnacondaAnaconda安装方便,可以随时虚拟出你想要的Python运行环境,使用非常简单。

直接官网下载,下一步,下一步安装即可,安装完打开Anaconda发现 Anaconda默认给你创建了一个Python 的运行环境并且已经安装的常用的一些库比如PIP

同时也有了命令行工具

安装wfastcgi模块(我已经安装过了这里不再显示安装)

至此Python的运行环境已经配置好了,

如网站需要数据库请安装数据库

二、配置网站

运行环境已经搭建好了下一步就是配置网站了

第一步 上传网站 ,到底上传网站的那些文件到服务器呢,很简单:上传 manage.py文件所在的目录到服务器即可(上传整个目录),最好上传到wwwroot目录中,方便权限设置

注意上传前最好 pip freeze >requirement.txt 一下,创建网站的依赖库

复制wfastcgi.py到网站目录

wfastcgi模块我们上面已经安装,复制wfastcgi.py到网站目录,wfastcgi所在目录为

上传后的样子

Anaconda的命令行工具(注意先切换到网站所在目录)运行 pip install -r requirements.txt 在服务上安装网站需要的库

运行 python manage.py migrate 初始化数据库

经过以上步骤 应该可以 python manage.py runserver 端口 运行网站了

三、配置IIS

IIS中添加网站,绑定域名,这里和部署其他网站一样,就不在一一阐述了,注意阐述IIS配置的部分

进入你建立的站点,选择处理程序映射。请注意,必须进入你指定的网站里面,再添加模块映射,否则,映射会添加到你所有的网站里

添加模块映射。模块选择FastCgiModule,如果前面没有安装这个模块,请先安装哦。可执行文件对于本项目来说,实际上是必填的。此例中,C:\ProgramData\Anaconda3\python.exe|C:\inetpub\wwwroot\rizhaodarkmatter\wfastcgi.py。前面是python的路径,后面是wfastcgi.py文件的路径。实际上,如果wfastcgi.py文件路径直接引用python\Lib\site-packages目录下的文件也可以,不过就不可以部署多个Django网站了。

填写完参数后,选择请求限制,设置如图

确认添加后,程序映射添加成功

返回主页,进入FastCGI设置

选中新建的FastCGI应用程序,修改环境变量

需要添加的变量有3个:

Name: WSGI_HANDLER

Value: django.core.wsgi.getwsgiapplication()

Django项目目录

Name: PYTHONPATH

Value: C:\inetpub\wwwroot\rizhaodarkmatter

项目settings.py文件的位置

Name: DJANGOSETTINGSMODULE

Value: rizhaodarkmatter.settings

settings.py文件

至此,一个不带static静态文件的Django项目就可以在服务器上运行啦!!!

运行 python manage.py collectstatic 采集一下静态文件,这样在项目的跟目录会出现 static文件夹 这样一个包含静态文件的Django项目就运行起来了

但是运行后发现网站并没有加载静态文件,可是static 文件夹已经包含了所有静态文件呀,别着急 在静态文件所在目录(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> 

OK ,大功告成~~~~~~

文档信息

版权声明:可自由转载(请注明转载出处)-非商用-非衍生

发表时间:2018年3月28日 10:44