Windows下利用Apache部署多个Django项目

10 篇文章 6 订阅
4 篇文章 0 订阅

由于工作需要,最近要在一台windows Server2012 R2服务器上运行多个项目,过程中踩了一些坑,再此记录一下。

本文默认读者已经在能Apache中部署了单个项目,有一定经验,前期准备工作已经完成。

wsgi_mod使用的是python的一个库,没有使用网上的方式:LoadModule wsgi_module modules/mod_wsgi.so

LoadFile "d:/python3/python36.dll"
LoadModule wsgi_module "d:/python3/lib/site-packages/mod_wsgi/server/mod_wsgi.cp36-win_amd64.pyd"
WSGIPythonHome "d:/python3"

 

整体流程

  1. 配置需要监听的端口
  2. 开启虚拟路由并加载文件
  3. 配置虚拟路由映射文件
  4. 在Django项目的wsgi.py中添加项目路径
  5. 启动Apache服务

配置需要监听的端口

  1. 打开Apache配置文件(Apache安装目录下:conf/httpd.conf)

  2. 找到#Listen 12.34.56.78:80

  3. 在下方添加需要监听的端口,以8111,8222为例

    Listen 127.0.0.1:8111
    Listen 127.0.0.1:8222
    

    若要让局域网内其他用户可以访问:

    Listen 0.0.0.0:8111
    Listen *:8222
    # 以上两种方法均可
    

开启虚拟路由

  1. 找到#LoadModule vhost_alias_module modules/mod_vhost_alias.so,建议直接搜索
  2. 将行首的#删除,取消注释,使其生效
  3. 找到#Include conf/extra/httpd-vhosts.conf
  4. 同样将行首的#删除,使其生效,包含这个配置文件,接下来我们就是去编辑该文件。

配置项目映射

  1. 打开httpd-vhosts.conf文件(Apache安装目录下conf/extra/httpd-vhosts.conf)
  2. 打开文件后,文件下面有一些类似下面这样的配置
    <VirtualHost *:80>
    ServerName xxxx.example.com
    ServerAlias www.xxxx.example.com
    ...
    </VirtualHost>
    
  3. 删除原有配置
  4. 编写自己的配置进去
    • 第一个服务使用8222端口
    • 第二个服务使用8111端口
    # 第一个服务,使用8222端口,这个端口必须是在前面的文件中添加了监听的端口。
    <VirtualHost *:8222>
        # 这里填写域名,没有域名随便填写即可
    	ServerName test.com
    	ServerAlias a.test.com
    
        # 项目的wsgi.py文件,注意目录前有`/`和空格
    	WSGIScriptAlias / [有空格] D:/PythonSpace/QualitySystem/QualitySystem/wsgi.py
    	<Directory D:/PythonSpace/QualitySystem>
    	<Files wsgi.py>
    		Require all granted
    	</Files>
    	</Directory>
        
        # 静态文件路径
    	Alias /static D:/PythonSpace/QualitySystem/static_dist
    	<Directory D:/PythonSpace/QualitySystem/static_dist>
    		AllowOverride None
    		Options None
    		Require all granted
    	</Directory>
    	
    	# 项目根路径,经测试,这个写到项目所在文件夹或者直接进入文件夹内都可以
    	DocumentRoot "D:/PythonSpace/QualitySystem"
    	<Directory "D:/PythonSpace/QualitySystem">
    		Options Indexes FollowSymLinks
    		AllowOverride None
    		Require all granted
    	</Directory>
    	
    	# 错误日志记录文件
    	ErrorLog "logs/access_ate.log"
    </VirtualHost>
    
     # 第二个服务,使用8111端口
    <VirtualHost *:8111>
        # 域名信息
    	ServerName allot.com
    	ServerAlias www.allot.com
    
    	# 项目wsgi.py文件路径
    	WSGIScriptAlias / d:/PythonSpace/Allot/Allot/wsgi.py
    	<Directory d:/PythonSpace/Allot/Allot>
    	<Files wsgi.py>
    		Require all granted
    	</Files>
    	</Directory>
        
        # 静态文件路径
    	Alias /static D:/PythonSpace/Allot/static_dist
    	<Directory D:/PythonSpace/Allot/static_dist>
    		Require all granted
    	</Directory>
    	
    	# 项目根目录,这个值写到了包含该项目的目录
    	DocumentRoot "D:/PythonSpace"
    	<Directory "D:/PythonSpace">
    		Options Indexes FollowSymLinks
    		AllowOverride None
    		Require all granted
    	</Directory>
    	ErrorLog "logs/access_allot.log"
    </VirtualHost>
    

在wsgi.py中添加项目路径

  1. 打开项目的wsgi.py文件
  2. 添加两行(项目所在路径为:D:\PythonSpace\Allot)
    import sys
    
    sys.path.append('D:\PythonSpace\Allot')
    
  3. 完成后的效果
    import os
    import sys
    
    from django.core.wsgi import get_wsgi_application
    
    sys.path.append('D:\PythonSpace\Allot')
    os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'Allot.settings')
    
    application = get_wsgi_application()
    
  4. 注意:这里的项目路径必须写到项目文件夹,只到包含项目的文件夹是不行的
  5. 同样修改另一个项目的wsgi.py文件即可

启动Apache

  1. 按照上面的修改完成后,启动Apache服务即可

  2. 如果启动Apache失败,则需要使用命令行查看原因,常见由于配置文件写错导致的启动错误

  3. 进入Apache目录下的bin目录,打开命令行工具,执行:

    httpd.exe -t 

  4. 根据提示的错误信息修改配置文件,再次启动Apache服务即可

  • 1
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值