昨天成功在aws上搭建了apache + django,然后又想再部署一个bottle,因为配置好了mod_wsgi,所以搭建多个python框架就容易多了,但是在虚拟主机配置上也折腾了一段时间。
首先在主配置文件(httpd.conf)里配置apache支持多虚拟站点。
第一步先激活主配置文件中的相关选项:
LoadModule vhost_alias_module modules/mod_vhost_alias.so
Include conf/extra/httpd-vhosts.conf
因为打算根据端口来访问各个网站,所以删除掉Listen 80这句,然后把昨天配置的内容:
#保留
LoadFile "c:/program files/python/python36/python36.dll"
LoadModule wsgi_module "D:/Program Files/Python/Python36/Lib/site-packages/mod_wsgi/server/mod_wsgi.cp36-win_amd64.pyd"
WSGIPythonHome "D:/Program Files/Python/Python36"
#删掉这句
WSGIPythonPath H:/pythonspace
#剪切到虚拟站点配置文件(httpd-vhosts.conf)里并进行相应的修改
WSGIScriptAlias / C:/pythonspace/mysite/mysite/wsgi.py
<Directory C:/pythonspace/mysite/mysite>
<Files wsgi.py>
Require all granted
</Files>
</Directory>
接下来就是配置虚拟站点文件(httpd-vhosts.conf)了,配置好后是这样的:
Listen 8888
<VirtualHost *:8888>
ServerName 访问地址:8888
DocumentRoot "H:/pythonspace/mybottle"
WSGIScriptAlias / H:/pythonspace/mybottle/app.wsgi
<Directory H:/pythonspace/mybottle>
<Files app.wsgi>
Require all granted
</Files>
</Directory>
#这部分是配置静态文件访问
Alias /static/ H:/pythonspace/mybottle/static/
<Directory H:/pythonspace/mybottle/static>
Require all granted
</Directory>
</VirtualHost>
这样配置好后apache可以顺利启动了,但是!打开网址进行访问时会发现访问出错,查看apache错误日志:
ImportError: No module named ****.settings
网上搜索问题说是找不到项目的路径,要修改项目的wsgi文件,这里不理解,但是照着做,打开app.wsgi文件,添加:
import sys
sys.path.append('H:/pythonspace/mybottle/')
保存,重启apache,成功!
app.wsgi文件全部内容为:
import os
import sys
sys.path.append('H:/pythonspace/mybottle')
os.chdir(os.path.dirname(__file__))
import bottle
import hello #这个就是网站的文件
application = bottle.default_app()
hello.py文件内容为:
from bottle import route
@route('/')
def show():
return "hello world!"
同样的再在文件中添加新的端口指向昨天设置的django站点,这样就能通过端口来访问django或者bottle网站了。
Listen 8889
<VirtualHost *:8889>
DocumentRoot "C:/web/mysite"
ServerName 访问地址:8889
WSGIScriptAlias / c:/web/mysite/mysite/wsgi.py
<Directory c:/web/mysite/mysite>
<Files wsgi.py>
Require all granted
</Files>
</Directory>
</VirtualHost>
注意要在wsgi.py文件里添加上项目路径!