windows2008R2+IIS部署python Django的web环境

前言:为了部署这个环境,断断续续的弄了半个月,半个月期间整个人都心情都是非常糟糕的。(小厂出的语言看来支持的文章都不是很多),期间遇到各种坑,度娘出来的好多文章都有问题,或者写的含糊不清。真是坑人啊。在这里我想说的是,既然没人写那么清楚,我就来个写个清楚点的。但有一点,强烈建议参考此文章的同学最好用我列出的各个模块或程序的版本去安装,否则可能会出幺蛾子,别到时候又来喷我。

(学个东西真不容易,我是一个保安在自学python,希望大家支持下,在这里我贴上我的淘宝和微信,愿意鼓励的金额不限)

windows2008R2+IIS部署python Django的web环境_第1张图片

下面进入正题,请仔细认真的看每个字,以免跳坑。

一、平台

windows2008R2 Enterprise with sp1中文版、python3.7.3 for windows、Django2.2.1、wfastcgi 3.0.0

二、目标

在windows2008R2上安装设置IIS对python的Django web支持。

或者说是叫,windows2008R2 sp1 + IIS7.0 + Python3.7 + Django 2.2.1 + wfastcgi 3.0.0的web环境部署。

三、windows基础环境部署

1.操作系统:

        操作系统我使用的是windows 2008 R2 Enterprise sp1,感觉std 和datacenter版也可以,只是必须装sp1补丁,否则python无法安装。(这是坑1,不要尝试我不装sp1,找办法去安装Python3.7,没必要浪费这个时间,因为我找几天没找到)

windows2008R2+IIS部署python Django的web环境_第2张图片

2.IIS添加:

具体添加IIS步骤此处省略,但要点要说一下。就是在添加IIS角色时,能选的都选上(特别是那个叫CGI的,我们要用到必须勾选),FTP完全没必要选。

windows2008R2+IIS部署python Django的web环境_第3张图片

安装完成IIS后最好重启一下windows,别问为什么,作为一个保安,我感觉这样做有必要的。

windows2008R2+IIS部署python Django的web环境_第4张图片

四、Python基础环境部署

1.下载Python:

去Python官网https://www.python.org/下载一个windows版的安装程序。

现在下载页面是https://www.python.org/downloads/release/python-373/   (或许你看到这篇文章时python已经出到了3.8或更高版本了,自己找下载路径吧)

windows2008R2+IIS部署python Django的web环境_第5张图片

下载完成后的样子

windows2008R2+IIS部署python Django的web环境_第6张图片

2.安装Python

双击执行python-3.7.3-amd64.exe安装程序,

勾选最下面的复选框添加的环境变量,然后点Customize installation。

windows2008R2+IIS部署python Django的web环境_第7张图片

下一步。

勾选Install for users, 写上安装路径,这亥建议写在某个磁盘的根目录。值得提醒的是,绝不要装在默认路径下C:\Program Files\Python37。以多年的保安经验来看,空格这玩意十分危险,空格带电。

windows2008R2+IIS部署python Django的web环境_第8张图片

等待安装完成。

3.测试Python:

使用windows命令行工具,敲上python回车,如果能看到版本号,并且带有>>>三个尖角号的样子,说明已经把python3.7.3安装好了。如图:

windows2008R2+IIS部署python Django的web环境_第9张图片

五、Django、WfastCGI安装

1.在windows 2008r2sp1的命令行执行pip install django安装DJango。(如果你看到这个帖子较晚,可以指定django版本安装,命令pip install django==2.2.1)

2.在windows 2008r2sp1的命令行执行pip install wfastcgi来安装wfastcgi插件。同样,如果你看到这个帖子时间已经超过2019年6月4日很久,可以指定版本来安装wfastcgi3.0.0.命令pip install wfastcgi==3.0.0

(啰嗦下,安装软件前把各种杀毒、管家都暂时关闭了)

3.验证两个插件是否安装成功。执行windows cmd命令 pip list可以看到安装了哪些python模块

windows2008R2+IIS部署python Django的web环境_第10张图片

4.如果你安装时版本有问题,则可以通过命令pip uninstall django和pip uninstall wfastcgi将错误的版本给卸载掉,然后再指定版本安装。

六、Django项目部署

1.在windows 2008的C盘根目录创建一个www文件夹(根据喜好随意放在哪里),用于存放django web项目文件

2.将事先已做好的django项目打包放到c:\www文件夹下。

windows2008R2+IIS部署python Django的web环境_第11张图片

 

七、IIS django站点搭建

1.依次点击【开始、管理工具、Internet 信息服务(IIS)管理器】。打开它。(也把它添加到桌面快捷方式,便于以后用)

windows2008R2+IIS部署python Django的web环境_第12张图片

2.打开IIS控制台后,找到最左侧的属性菜单,找到【网站、Default web Site】,右键单击它、管理网站、停止。

(做这一步的目的是为了让我们即将新建的django web站点使用80端口。)

windows2008R2+IIS部署python Django的web环境_第13张图片

3.右键单击【网站】,添加网站...。

随意写上网站名称。写上放置django项目的存放路径。切记、切记,这个根目录我写的是C:\www\djangoSqlite 。djangoSqlite就是我编写django项目的根目录,可以看下根目录下必定有一个文件叫manage.py文件。搞错了的话就无法继续往下进行了。

windows2008R2+IIS部署python Django的web环境_第14张图片windows2008R2+IIS部署python Django的web环境_第15张图片

*4.其实还可以给这个站点添加主机名,即域名,听老司机说只要去阿里云买个域名后,就可以填写个网址写在这里了,然后我们就能在互联网上访问我们的django WEB了,我是保安,也听不懂老司机们说的是啥意思,你肯定能听懂的。这一步啰嗦了,老司机们略过,可有可无的不影响本教程。

八、启动wfastcgi

1.在windows 2008 R2 SP1的命令行界面执行命令 wfastcgi-enable回车。

2.把里面生成的路径记录下来“c:\python37\python.exe|c:\python37\lib\site-packages\wfastcgi.py”,注意c:\python37\python.exe后面有个管道符|连接。等会我们会用到这个东西。如果你的python安装路径或版本和我的不一样,那么你的生成的这个字符串也是不一样的,不可以照搬照抄。切记

windows2008R2+IIS部署python Django的web环境_第16张图片

3.啰嗦下,我问了我的保安师傅说这个wfastcgi-enable就是用来启动wfastcgi插件的,他负责来执行我们的django web程序。以后我们的django项目部署完毕后,随意重启服务器,这个wfastcgi会默认跟随windows一起启动。

4.上面如果执行正确了,请忽略本条,如果你执行wfastcgi-enable时出现错误:

ERROR ( message:新 application 对象缺少必需的属性。在组合的密钥属性“fullPath, arguments”分别设置为“c:\python37\python.exe, c:\python37\lib\site-packages\wfastcgi.py”时,无法添加类型为“application”的重复集合项。 )
An error occurred running the command:

windows2008R2+IIS部署python Django的web环境_第17张图片

说明你安装的有问题,但最可能的原因是,wfastcgi已经启动过了,所以再次启动就报错。

若报错,则可以执行wfastcgi-disable来停止wfastcgi服务。

停止成功后,再执行wfastcgi-enable来开启服务。

九、本次例子的django项目的简单介绍

1.项目名字叫djangoSqlite。

windows2008R2+IIS部署python Django的web环境_第18张图片

十、配置django项目

1.在django项目的根目录下,创建一个文件叫web.config 注意名字必须是这个,不要个性化。

写上如下内容:


    
        
            
                
            
        
        
            
            
            
        
    

什么?怎么写?新建个记事本,复制粘贴进去。然后名字改成web.config,记得将.txt删掉。

不可完全照抄我写的,看下面的分析。

2.分析web.config

第一条

是运行wfastcgi-enable时我们记录的那条路径,你的python安装路径和版本要是和我都不一样,这里不要复制了,根据你生成的粘贴到这里。

scriptProcessor="c:\python37\python.exe|c:\python37\lib\site-packages\wfastcgi.py" 

第二条

是写的django web项目的根目录,也是iis站点设定的根目录。不要忘记带双引号。

第三条

这是个大坑。不要复制我的,我下面图上写的很清楚这里怎么写。我就在这里翻车了半个月。我写的这个djangoSqlite.settings,其中djangoSqlite是指的是项目根目录下放置settings.py文件的文件夹名。后面跟着的是.settings 注意不带.py哈。千万不要写错了,写错了就去球了。

windows2008R2+IIS部署python Django的web环境_第19张图片

十一、Django静态文件夹static的添加支持

神马?这还要单独设置?我不是再写django项目时已经设置好了吗,还要搞?没错你没看错,还需要再做些设定,才能访问static文件夹。

1.修改settings.py文件

a.顺路就将其他东西也设置了,改ALLOWED_HOSTS = ['*']。原来是空,现在*代表任意ip都能访问我们的web。

b.在最底部添加上以下三行固定写法。我不确定写的是否多余,但我这么写是没问题的,我的保安师傅也没告诉我太多信息。我照抄就是了。

STATIC_URL = '/static/'
STATICFILES_DIRS = (os.path.join(BASE_DIR, "static"),)
STATIC_ROOT  = os.path.join(BASE_DIR, 'static')

c.这里在啰嗦下,我的测试项目本身就自己在项目根目录下建了个static文件夹,并且又再它下面放置了相应app的js文件、图片文件等。

d.在去项目根目录下的static文件夹下新建一个web.config文件。复制粘贴下面这段代码,保存。(如果你根目录下没有这个文件夹,那就去你的项目根目录下新建这个文件夹static吧。名字不能自定义哈,只能叫static,叫别的名字就不灵了)


    
      
      
      
        
	
   
     
   

e.在windows 2008R2 sp1的cmd命令行下进入django 项目根目录,比如我的是c:\www\djangoSqlite>,

执行命令

python manage.py collectstatic

windows2008R2+IIS部署python Django的web环境_第20张图片

这是干嘛的?我是保安我也不知道这是敢什么的,从字面意思上能看出是在搜集静态资源。

十二、站点文件夹权限设置

这也是个小坑。为啥要设置介个文件夹权限呢,因为好多时候我们会通过python程序写入数据库东西,所以没有写入权限,做毛的web程序啊。

1.打开存放web的根目录,比如我的是c:\www\djangoSqlite。

2.右键单击djangoSqlite文件夹,点属性、安全、编辑、添加。将IIS_IUSRS用户组添加进来,并给完全控制权限即可。

windows2008R2+IIS部署python Django的web环境_第21张图片

3.啰嗦下,这样设置完成后,django admin后台样式丢失的问题就能解决,也能解决因为权限问题无法进入django后台的问题。

到此我们的设定就结束了。

十三、测试效果

打开浏览器输入127.0.0.1看效果

windows2008R2+IIS部署python Django的web环境_第22张图片

十四、我用到的django项目源码下载

链接:https://pan.baidu.com/s/1k8W-Yh7BoFxvasutovbyVA   提取码:hync 

windows2008R2+IIS部署python Django的web环境_第23张图片

支持保安兄弟一把吧,坑了我大半个月,又写了大半天了。

你可能感兴趣的:(python,运维)