![子域名过滤不起作用](https://linux22.com/image/643510/%E5%AD%90%E5%9F%9F%E5%90%8D%E8%BF%87%E6%BB%A4%E4%B8%8D%E8%B5%B7%E4%BD%9C%E7%94%A8.png)
我正在尝试以某种方式配置域,以便我可以使用子域来访问数据库。例如,如果我的域是domain.com
,并且我有数据库demo
和demo2
。那么我应该能够通过写入demo.domain.com
和来访问它demo2.domain.com
。但这些都不起作用。我遵循了以下指南:http://opensourceholic.com/2014/05/09/deploy-openerp-using-mod_proxy-and-mod_wsgi-on-linux-server/
按照指南完成所有操作后,我能够做的是,我只能通过写入来访问 OpenERP(或 Odoo)网站domain.com
,但如果我写入demo.domain.com
,我只会收到此消息This webpage is not available
。
所以我做了:
我的apache2配置文件:
openerp.conf
<VirtualHost *:80>
ServerName domain.com
ServerAlias *.domain.com // Use this if you want dbfillter on subdomain
ErrorLog /var/log/openerp/openerp-error.log
CustomLog /var/log/openerp/openerp-access.log combined
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
ProxyRequests Off
ProxyPass / http://domain.com:8069/
ProxyPassReverse / http://domain.com:8069/
ProxyVia On
LogLevel warn
</VirtualHost>
openerp-wsgi.conf
:
<VirtualHost *:80>
ServerName domain.com
ServerAlias *.domain.com // Use this if you want dbfillter on subdomain
WSGIScriptAlias / /opt/openerp/server/openerp-wsgi.py
WSGIDaemonProcess oe user=user group=oerp processes=2 python-path=/opt/openerp/server/ display-name=apache-openerp
WSGIProcessGroup oe
ErrorLog /var/log/openerp/openerp-error.log
CustomLog /var/log/openerp/openerp-access.log combined
<Directory /opt/openerp/server>
Order allow,deny
Allow from all
</Directory>
</VirtualHost>
我的openerp-wsgi.py
配置:
import openerp
#----------------------------------------------------------
# Common
#----------------------------------------------------------
openerp.multi_process = True # Nah!
# Equivalent of --load command-line option
openerp.conf.server_wide_modules = ['web']
conf = openerp.tools.config
# Path to the OpenERP Addons repository (comma-separated for
# multiple locations)
conf['addons_path'] = '/opt/openerp/server/addons/,/opt/openerp/server/openerp/addons/'
# Optional database config if not using local socket
#conf['db_name'] = 'demo'
conf['db_host'] = '127.0.0.1'
conf['db_user'] = 'user'
conf['db_port'] = 5433
conf['db_password'] = 'password'
#conf['dbfilter'] = '%d'
#----------------------------------------------------------
# Generic WSGI handlers application
#----------------------------------------------------------
application = openerp.service.wsgi_server.application
openerp.service.server.load_server_wide_modules()
#----------------------------------------------------------
# Gunicorn
#----------------------------------------------------------
# Standard OpenERP XML-RPC port is 8069
bind = '0.0.0.0:8069'
pidfile = '.gunicorn.pid'
workers = 4
timeout = 240
max_requests = 2000
即使这样做了,它仍然不起作用,所以我在 /etc/hosts 中添加了这一行:
127.0.0.1 domain.com
然后,我可以在输入 domain.com 地址时访问 OpenERP,但仅此而已。如果我添加建议的过滤器(直接在配置文件中或在 openerp-wsgi.py 文件中),则系统找不到任何数据库,我无法访问任何数据库,即使在列表中也是如此,更不用说我这样做的主要原因了 - 通过子域访问(如示例中所写)。
那么这里到底出了什么问题?
注意。我正在 Odoo v8 (以前称为 OpenERP) 上尝试此操作。
答案1
您有两个虚拟主机文件,用于同一个域和同一个端口。您只需要一个文件即可。选择是否要使用 mod_proxy 或 mod_wsgi 为您的 Odoo 提供服务,但不能同时使用两者。
答案2
我认为我需要手动输入所有子域etc/hosts
,只有这样它才能开始按我预期的方式工作。