Apache2 не перезапустится после установки Graphite версии 1.2
Я только что установил Graphite (версия 1.2.0), но я не могу снова запустить Apache2. Это журнал ошибок, который я получаю:
* The apache2 configtest failed.
Output of config test was:
[Thu Jan 18 20:12:39.906483 2018] [so:warn] [pid 2356] AH01574: module wsgi_module is already loaded, skipping
AH00526: Syntax error on line 56 of /etc/apache2/sites-enabled/apache2-graphite.conf:
WSGI process group not yet configured.
Action 'configtest' failed.
The Apache error log may have more information.
Вот мой apache2-graphite.conf
файл:
LoadModule wsgi_module modules/mod_wsgi.so
WSGISocketPrefix /var/run/wsgi
Listen 80
<VirtualHost *:80>
DocumentRoot /var/www/html
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /var/www/html>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
</Directory>
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
<Directory "/usr/lib/cgi-bin">
AllowOverride None
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all
</Directory>
ErrorLog /var/log/apache2/error.log
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn
CustomLog /var/log/apache2/access.log combined
Alias /doc/ "/usr/share/doc/"
<Directory "/usr/share/doc/">
Options Indexes MultiViews FollowSymLinks
AllowOverride None
Order deny,allow
Deny from all
Allow from 127.0.0.0/255.0.0.0 ::1/128
</Directory>
</VirtualHost>
<VirtualHost *:3020>
WSGIDaemonProcess graphite-web processes=5 threads=5 display-name='%{GROUP}' inactivity-timeout=120 user=_graphite group=_graphite
WSGIProcessGroup graphite-web
WSGIImportScript /opt/graphite/conf/graphite.wsgi process-group=graphite-api application-group=%{GLOBAL}
WSGIScriptAlias /graphite /opt/graphite/conf/graphite.wsgi/graphite
Alias /graphite/static /opt/graphite/webapp/content
Alias /content/ /usr/share/graphite-web/static/
<Location "/content/">
SetHandler None
</Location>
<Location "/server-status">
SetHandler server-status
Require all granted
</Location>
ErrorLog ${APACHE_LOG_DIR}/graphite-web_error.log
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn
CustomLog ${APACHE_LOG_DIR}/graphite-web_access.log combined
</VirtualHost>
Я действительно не знаю, как исправить эту ошибку. Я не знаю, где должна быть настроена группа процессов. Буду признателен за любую подсказку.
Мы используем Python 2.7 и mod_wsgi 2.7 в Ubuntu 14.04. Наша версия Apache2 - 2.4.7.
Заранее спасибо!
РЕДАКТИРОВАТЬ: я заметил что-то странное, я не знаю, может ли это быть связано. В Apache2 error.log я нашел следующую строку:
[Thu Jan 18 18:00:38.112219 2018] [mpm_prefork:notice] [pid 30731] AH00163: Apache/2.4.7 (Ubuntu) PHP/5.5.9-1ubuntu4.20 OpenSSL/1.0.1f mod_wsgi/3.4 Python/2.7.6 configured -- resuming normal operations
Он показывает, что mod_wsgi настроен на версию 3.4, но на самом деле, когда я запускаю ls -l /usr/lib/apache2/modules | grep wsgi
Я считаю, что машина работает на версии 2.7.
lrwxrwxrwx 1 root root 15 Nov 19 2014 mod_wsgi.so -> mod_wsgi.so-2.7
-rw-r--r-- 1 root root 170216 Nov 19 2014 mod_wsgi.so-2.7
2 ответа
1.2 еще не выпущен, лучше использовать 1.1.1
WSGIScriptAlias /graphite /opt/graphite/conf/graphite.wsgi/graphite
должно быть:
WSGIScriptAlias /graphite /opt/graphite/conf/graphite.wsgi
Это дает эту ошибку, потому что имя, которое вы дали WSGIImportSript
неправильно и не соответствует тому, что WSGIDaemonProcess
был определен с. Вы также пропустили WSGIApplicationGroup
Директива с тем, как вы пытались настроить его. Во всяком случае, лучше не использовать WSGIImportScript
,
Так что у тебя есть:
WSGIDaemonProcess graphite-web processes=5 threads=5 display-name='%{GROUP}' inactivity-timeout=120 user=_graphite group=_graphite
WSGIProcessGroup graphite-web
WSGIImportScript /opt/graphite/conf/graphite.wsgi process-group=graphite-api application-group=%{GLOBAL}
WSGIScriptAlias /graphite /opt/graphite/conf/graphite.wsgi/graphite
Вы должны использовать:
WSGIDaemonProcess graphite-web processes=5 threads=5 display-name='%{GROUP}' inactivity-timeout=120 user=_graphite group=_graphite
WSGIScriptAlias /graphite /opt/graphite/conf/graphite.wsgi/graphite process-group=graphite-web application-group=%{GLOBAL}
/graphite
должен быть добавлен только в конце пути к файлу сценария WSGI, если правила маршрутизации в графите всегда ожидают путь, который он включает /graphite
в начале, но вы не можете смонтировать его в корне сайта, но нужно иметь его по дополнительному URL, потому что другие вещи выполняются на том же имени хоста.