Эта проблема:
Я получаю ошибку 404 при попытке связаться с localhost: 80.
[root@alarmpi public_html]# tail -n 1 /var/log/httpd/error_log
[Sat Jun 04 23:09:50.235251 2016] [wsgi:error] [pid 2323:tid 1973417008] [client ::1:45230] Target WSGI script not found or unable to stat: /home/alarm/public_html/hamstergangster.eu/hamstergangster/hamstergangster/apache/wsgy.py
Система:
Использование новой установки Arch Arm на Raspberry Pi 2.
[root@alarmpi alarm]# apachectl -V
AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using fe80::ba27:ebff:fed4:595a. Set the 'ServerName' directive globally to suppress this message
Server version: Apache/2.4.20 (Unix)
Server built: Apr 18 2016 12:41:21
Server's Module Magic Number: 20120211:57
Server loaded: APR 1.5.2, APR-UTIL 1.5.4
Compiled using: APR 1.5.2, APR-UTIL 1.5.4
Architecture: 32-bit
Server MPM: event
threaded: yes (fixed thread count)
forked: yes (variable process count)
Server compiled with....
-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 SINGLE_LISTEN_UNSERIALIZED_ACCEPT
-D APR_HAS_OTHER_CHILD
-D AP_HAVE_RELIABLE_PIPED_LOGS
-D DYNAMIC_MODULE_LIMIT=256
-D HTTPD_ROOT="/etc/httpd"
-D SUEXEC_BIN="/usr/bin/suexec"
-D DEFAULT_PIDLOG="/run/httpd/httpd.pid"
-D DEFAULT_SCOREBOARD="logs/apache_runtime_status"
-D DEFAULT_ERRORLOG="logs/error_log"
-D AP_TYPES_CONFIG_FILE="conf/mime.types"
-D SERVER_CONFIG_FILE="conf/httpd.conf"
[root@alarmpi hamstergangster.eu]#apachectl -k restart
[root@alarmpi hamstergangster.eu]# tail -n 5 /var/log/httpd/error_log
[Sat Jun 04 22:19:50.348445 2016] [mpm_event:notice] [pid 327:tid 1995890688] AH00494: SIGHUP received. Attempting to restart
AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using fe80::ba27:ebff:fed4:595a. Set the 'ServerName' directive globally to suppress this message
[Sat Jun 04 22:19:50.403560 2016] [lbmethod_heartbeat:notice] [pid 327:tid 1995890688] AH02282: No slotmem from mod_heartmonitor
[Sat Jun 04 22:19:50.409304 2016] [mpm_event:notice] [pid 327:tid 1995890688] AH00489: Apache/2.4.20 (Unix) mod_wsgi/4.4.22 Python/3.5.1 configured -- resuming normal operations
[Sat Jun 04 22:19:50.409539 2016] [core:notice] [pid 327:tid 1995890688] AH00094: Command line: '/usr/bin/httpd'
[root@alarmpi hamstergangster.eu]# source venv/bin/activate
(venv) [root@alarmpi hamstergangster.eu]# python
Python 3.5.1 (default, Mar 6 2016, 10:14:04)
[GCC 5.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import django
>>> django.VERSION
(1, 9, 6, 'final', 0)
Конфигурация:
/home
и /home/alarm
иметь 777 разрешений /home/alarm/public_htmml
и все внутри тоже есть 777 разрешений; не проблема с разрешением.
TL; DR стандартный новый проект Django в виртуальной среде. Точные команды:
mkdir -p /home/alarm/public_html/hamstergangster.eu
cd /home/alarm/public_html/hamstergangster.eu
virtualenv venv -p python3.5
source venv/bin/activate
pip install django
django-admin startproject hamstergangster
cd hamstergangster
django-admin startapp helloapp #configuring helloapp to take care of / and return HttpResponse("Hello World")
./manage.py makemigrations
./manage.py migrate
Прекрасно работает на сервере разработки.
/home/alarm/public_html/hamstergangster.eu/hamstergangster/hamstergangster/apache
__init__.py override.py wsgi.py
Не думаю, что нужно содержимое wsgi.py, так как он вообще не загружается.
/etc/httpd/conf/httpd.conf
#Lines lines lines...
LoadModule wsgi_module modules/mod_wsgi.so
#Lines lines lines...
<VirtualHost *:80>
ServerName localhost
WSGIScriptAlias / /home/alarm/public_html/hamstergangster.eu/hamstergangster/hamstergangster/wsgy.py
<Directory /home/alarm/public_html/hamstergangster.eu/hamstergangster/hamstergangster/apache/">
<Files wsgi.py>
Require all granted
</Files>
</Directory>
</VirtualHost>
Все внутри одного большого httpd.conf (по умолчанию)
Учебники, которые я пробовал: http://pastebin.com/NTSC1Kj3 Я получил представление о том, как использовать virtualenvs из официальной документации django
Итак, что мне нужно сделать, чтобы мой любимый «Hello World» появился на моем экране Lynx? Обратите внимание, что я разработчик, а не системный администратор, и я упускаю из виду кое-что довольно очевидное.
Я проверил /home/alarm/public_html/hamstergangster.eu/hamstergangster/hamstergangster/apache/wsgi.py
существование и для разрешений на каждой части пути (установив их на 777).
Если ошибка говорит, что файл не может быть найден
Target WSGI script not found or unable to stat: /home/alarm/public_html/hamstergangster.eu/hamstergangster/hamstergangster/apache/wsgy.py
, пытаться cat
это
cat /home/alarm/public_html/hamstergangster.eu/hamstergangster/hamstergangster/apache/wsgy.py
Это помогло мне заметить грамматическую ошибку, которую я сделал - это wsgi.py
не wsgy.py
. Я не заметил этого, когда cd
в каталог: D