windows server Apache部署Django

时间:2024-03-07 19:02:40

1.使用说明

  本人需要将一个简单的Django web项目部署到服务器上,并需要公网ip访问。申请了学生版的轻量级腾讯云服务器(阿里云学生服务器过期了),通过查阅发现,若需要域名,根据国家法规,则需要到腾讯云备案(阿里也是),备案需要10天左右,故采用公网ip地址访问,使用iis部署Django web项目未能成功,改用apache部署。

2.配置环境

  python:python3.7

  服务器操作系统:windows server 2012 (64位)

  Django版本:3.1.6

  VC编译器:Microsoft Visual C++2015-2019 Redistributable(x64)-14.28.29325(代表VC14,64位)

  mod_wsgi:mod_wsgi-4.7.1-cp37-cp37m-win_amd64.whl(表示用于python3.7, 64位)

  apache版本:apache2.

  说明:mod_wsgi的版本要与VC版本对应,此处对应VC14。另外,Django版本也要与python版本对应,以下是python与Django对应版本。4(具体是httpd-2.4.27-ossl11-x64-vc14,表示对应VC14版本,64位)

Django版本 python版本
1.8 2.7,3.2,3.3,3.4,3.5
1.9,1.10 2.7,3.4,3.5
1.11 2.7,3.4,3.5,3.6
2.0 3.5,3.6
2.1,3.1 3.5,3.6,3.7

3.下载地址与说明

       python下载:官网下载,这里提供本文的python3.7 64位百度网盘地址:       

        链接:https://pan.baidu.com/s/1pKlWQv5-WwJ3jQorTgHd1w
        提取码:2u9c

  Django安装:使用pip安装,pip install Django==版本号 -i https://pypi.tuna.tsinghua.edu.cn/simple

              例子:pip install Django==3.1.6 -i https://pypi.tuna.tsinghua.edu.cn/simple

              (-i https://pypi.tuna.tsinghua.edu.cn/simple为清华镜像,装包速度快)

  VC编译器下载:可以通过官网下载对应版本,或者百度搜索,这里提供本人使用的版本VC14百度网盘地址:

               链接:https://pan.baidu.com/s/1kPFDQW9HW9_O3J5Ue8s8LQ
               提取码:6v9j

  mod_wsgi下载地址:https://www.lfd.uci.edu/~gohlke/pythonlibs/#mod_wsgi

       打开网页后选择自己需要的文件点击下载,ap24与vc14分别表示对应apache2.4,vc14cp37-cp37m对应python3.7。

       win32与amd64为系统位数,本文选择mod_wsgi-4.7.1-cp37-cp37m-win_amd64.whl也能用于vc14(从图中看不出vc版本)

      

   apache下载地址:去官网https://www.apache.org/下载,这里提供别人博客的windows版本的apache下载链接地址:

        https://blog.csdn.net/zhangxiaocc/article/details/80994362

        如果与本人相同,可以选择百度网盘下载(32位与64位都有):                                         

        链接:https://pan.baidu.com/s/134JhTMor40qxBHXYn-o4PQ
        提取码:kgpq

4.软件包安装

python安装:直接双击双击打开,勾上添加路径到环境变量,选择Install Now直接安装,如下图:

                           

Django安装:pip install Django==3.1.6 -i https://pypi.tuna.tsinghua.edu.cn/simple(上面有,使用命令pip show Django可判断是否成功)

VC编译器安装:首先查询自己又有装VC14(本文的是VC14),查询方法如下,本文已经安装,所以显示,没安装可下载安装。

                           

 

 

 mod_wsgi安装:找到mod_wsgi下载后的路径,在cmd中切换到该目录下,然后使用pip install xxxx.whl 安装,本文放在python的Scripts目                              录下,进入该目录后使用pip install mod_wsgi-4.7.1-cp37-cp37m-win_amd64.whl安装,安装完成后,输入mod_wsgi-                                    express module-config命令,会得到三行提示如下,后面要用这三个配置信息,另外会看到此时Script文件多了个                                          mod_wsgi-express.exe,暂时不用管,至此,mod_wsgi安装成功。

LoadFile "c:/users/administrator/appdata/local/programs/python/python37/python37.dll

LoadModule wsgi_module "c:/users/administrator/appdata/local/programs/python/python37/lib/site-                                           packages/mod_wsgi/server/mod_wsgi.cp37-win_amd64.pyd"

WSGIPythonHome "c:/users/administrator/appdata/local/programs/python/python37"

Apache安装:直接将下载后的解压,无需安装。

5.服务器部署与配置

  Apache测试:打开Apache的conf目录,找到httpd.conf文件,用记事本打开它,找到Define SRVROOT这一行,修改为自己Apache地址,本文这里为Define SRVROOT "C:\appache\httpd-2.4.27-ossl11-x64-vc14\Apache24",保存然后启动apache的bin/httpd.exe程序,如果没有问题,通过浏览器输入localhost会得到apache的一个测试页面如图,代表安装成功,如果有问题,可以看看配置路径有没有弄错或是端口(默认80端口)有没有被占用或是防火墙等。

                             

 

   配置Apache与Django项目:仍然是编辑apache中conf目录下httpd.conf文件,在文件最后面添加如下内容:

LoadFile "c:/users/administrator/appdata/local/programs/python/python37/python37.dll"
LoadModule wsgi_module "c:/users/administrator/appdata/local/programs/python/python37/lib/site-packages/mod_wsgi/server/mod_wsgi.cp37-win_amd64.pyd"
WSGIPythonHome "c:/users/administrator/appdata/local/programs/python/python37"

#设置项目中的wsgi路径

WSGIScriptAlias / "C:\inetpub\wwwroot\MyApplication\MyApplication\wsgi.py"

#设置项目路径

WSGIPythonPath "C:\inetpub\wwwroot\MyApplication"

#设置wsgi路径

<Directory "C:\inetpub\wwwroot\MyApplication\MyApplication">

<Files wsgi.py>
Require all granted
</Files>

</Directory>

#设置静态文件路径

Alias /static "C:\inetpub\wwwroot\MyApplication\static"

<Directory "C:\inetpub\wwwroot\MyApplication\static">

AllowOverride None

Options None

Require all granted

</Directory>

  说明:前面几行是上面提到过输入mod_wsgi-express module-config得到的,后面的有注释,应该能看懂,MyApplication是本文的的Django项目,放在了服务器的C:\inetpub\wwwroot\目录下。wsgi.py这个文件了解下,wsgi是python web开发的标准,类似于协议。它是服务器程序和应用程序的一个约定,规定了各自使用的接口和功能,以便二和互相配合。

  这里给出权限配置的含义:

Require all granted 允许所有主机访问
Require all denied 拒绝所有主机访问
Require local 仅允许本地主机访问
其它 其它

  配置Django的settings:实现公网ip的访问,配置Django项目的settings.py文件如下:

                                                            

 

 

  启动测试:不要忘记必须再次启动服务,也就是httpd.exe,然后用另外一台电脑测试输入你服务器的公网ip,注意不是私网ip(计算机本地ip),然后在浏览器中输入你的url(你的urls中有地址映射),出现了网页(亲测有用,如果有问题查查端口与防火墙)。

  补充:建议先用hello,wolrd的Django项目先测试,含有图片等资源需要另外在settins.py中配置如下(不知道还要不要配置其它的):

STATIC_URL = \'/static/\'
STATIC_ROOT = os.path.join(os.path.dirname(__file__),\'static\')
STATICFILES_DIRS = (
BASE_DIR,\'static/\',
)