我使用emerge (在Amazon EC2上)在Gentoo上安装了Apache,Django和mod_wsgi。
我知道mod_wsgi是在/etc/apache2/modules.d/70_mod_wsgi.confconfiguration的:
<IfDefine WSGI> LoadModule wsgi_module modules/mod_wsgi.so </IfDefine> # vim: ts=4 filetype=apache
所以在我的/etc/conf.d/apache添加了WSGI模块:
APACHE2_OPTS="-D DEFAULT_VHOST -D INFO -D SSL -D SSL_DEFAULT_VHOST -D LANGUAGE -D WSGI"
但是,当我尝试列出加载的模块,mod_wsgi没有列出。
root ~ # apache2 -M | grep wsgi Syntax OK
我也知道mod_wsgi没有正确加载,因为Apacheconfiguration文件不能识别WSGIScriptAlias 。
顺便Django的工作,我需要包括一个自定义的Apacheconfiguration文件。 我应该在哪里插入下面的行?
Include "/var/www/localhost/htdocs/mysite/apache/apache_django_wsgi.conf"
我目前在httpd.conf文件中有这个,但是我觉得那个文件在我升级Gentoo或者相关软件包的时候会被重置。
编辑:它似乎mod_wsgi文件位于/usr/lib64/apache2/modules/mod_wsgi.so 。
这里是我详细的Apache设置:
root@ip-99-99-99-99 /usr/portage/eclass # apache2 -V Server version: Apache/2.2.21 (Unix) Server built: Mar 7 2012 06:52:30 Server's Module Magic Number: 20051115:30 Server loaded: APR 1.4.5, APR-Util 1.3.12 Compiled using: APR 1.4.5, APR-Util 1.3.12 Architecture: 64-bit Server MPM: Prefork threaded: no forked: yes (variable process count) Server compiled with.... -D APACHE_MPM_DIR="server/mpm/prefork" -D APR_HAS_SENDFILE -D APR_HAS_MMAP -D APR_HAVE_IPV6 (IPv4-mapped addresses enabled) -D APR_USE_SYSVSEM_SERIALIZE -D APR_USE_PTHREAD_SERIALIZE -D APR_HAS_OTHER_CHILD -D AP_HAVE_RELIABLE_PIPED_LOGS -D DYNAMIC_MODULE_LIMIT=128 -D HTTPD_ROOT="/usr" -D SUEXEC_BIN="/usr/sbin/suexec" -D DEFAULT_PIDLOG="/var/run/httpd.pid" -D DEFAULT_SCOREBOARD="logs/apache_runtime_status" -D DEFAULT_LOCKFILE="/var/run/accept.lock" -D DEFAULT_ERRORLOG="logs/error_log" -D AP_TYPES_CONFIG_FILE="/etc/apache2/mime.types" -D SERVER_CONFIG_FILE="/etc/apache2/httpd.conf"
如果在你的vhostconfiguration文件中Include "/var/www/localhost/htdocs/mysite/apache/apache_django_wsgi.conf"这一行,如果它不是默认的vhostconfiguration文件,它将不会被apache更新覆盖。
或者如果你想把它放到httpd.conf你应该记得在apache更新之后。 因为如果gentoo软件包中的httpd.conf发生更改,则必须使用etc-update或dispatch-conf将您的httpd.conf与新的httpd.conf合并。 在这样做的时候,你不得不说要保持这个界限,而这应该是全部。