我已经使用Django设置了一个弹性beanstalk实例,并且我正在尝试使用Apache Solr来索引应用程序中的产品。 Solr作为后台进程按this question运行,但服务器为所有请求返回500错误。查看/ etc / httpd / error_log中的日志,出现错误:
Failed to query Solr using '*:*': Failed to connect to server at 'http://127.0.0.1:8983/solr/select/?facet.query=price...'
('connection aborted.', error(111, 'Connection refused'))
在我的Django settings.py中,我有Solr的haystack设置如下:(来自here)
HAYSTACK_CONNECTIONS = {
'default': {
'ENGINE': 'haystack.backends.solr_backend.SolrEngine',
'URL': 'http://127.0.0.1:8983/solr',
'INCLUDE_SPELLING': True,
},
}
查看github上的Solr代码:
try:
raw_results = self.conn.search(query_string, **kwargs)
except (IOError, SolrError), e:
if not self.silently_fail:
raise
self.log.error("Failed to query Solr using '%s': %s", query_string, e)
raw_results = EmptyResults()
我检查了AWS上的安全组设置,该组接受端口8983上的入站流量(来自该组内)。此外,我进入EC2实例,Solr java进程在后台运行。查看this帖子,似乎Haystack默认为本地数据库设置,而不是AWS Elastic Beanstalk设置。
if 'RDS_DB_NAME' in os.environ:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql_psycopg2',
'NAME': os.environ['RDS_DB_NAME'],
'USER': os.environ['RDS_USERNAME'],
'PASSWORD': os.environ['RDS_PASSWORD'],
'HOST': os.environ['RDS_HOSTNAME'],
'PORT': os.environ['RDS_PORT'],
}
}
else:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql_psycopg2',
'NAME': 'hhwc',
'HOST': 'localhost',
'PORT': '5432',
}
}
什么可能导致此500服务器错误(与Solr的连接错误)?