Назад | Перейти на главную страницу

Apache не обслуживает статические файлы из правильного каталога

На самом деле я не уверен, действительно ли название темы является источником моей проблемы, но для этого есть серьезные указания. Я не эксперт по серверам приложений, таким как apache, поэтому приветствую любую помощь.

Я успешно установил приложение Django на облачную виртуальную машину Google (Ubuntu 16.04 со статическим IP-адресом). Я могу получить доступ к странице, но CSS не загружен, отсутствуют файлы javascript (например, jquery) и несколько 500 внутренних ошибок сервера.

Чтобы лучше понять ошибки, прилагаю скриншот

Первое, что я подумал, это то, что я не поместил статические файлы в правильную папку для сервера приложений (www /../). Но это было не так.

Тогда я подумал, что, может быть, у папки www нет нужных разрешений. Но это было не так. Пользователь был правильно настроен на: www-data.

Моя папка с поддержкой сайтов apache2 включает мой файл project.conf.

Затем я попытался запустить эту команду:

     /usr/sbin/apache2 -S

и я получил это обратно:

VirtualHost configuration:
*:80                   localhost (/etc/apache2/sites-enabled/geonode.conf:3)
ServerRoot: "/etc/apache2"
Main DocumentRoot: "/var/www/html"
Main ErrorLog: "/var/log/apache2/error.log"
Mutex proxy: using_defaults
Mutex default: dir="/var/lock/apache2" mechanism=fcntl 
Mutex watchdog-callback: using_defaults
PidFile: "/var/run/apache2/apache2.pid"
Define: DUMP_VHOSTS
Define: DUMP_RUN_CFG
User: name="www-data" id=33 not_used
Group: name="www-data" id=33 not_used

Как видите, основной корень документа находится в следующей папке: «/ var / www / html». Мне было интересно, может ли это быть причиной. Каким-то образом apache пытается читать файлы из неправильного каталога (правильный / var / www / project).

Я попытался изменить основной DocumentRoot, изменив параметры в файле apache.conf, но всякий раз, когда я тестирую изменения (/ usr / sbin / apache2 -S), я все равно получаю старый каталог.

Я даже не уверен, что это могло быть проблемой. Есть идеи, что здесь происходит?

Примечание 1: я пробовал установку на локальную виртуальную машину и работает нормально. Примечание 2: я пытался установить другую удаленную виртуальную машину, и у меня возникла та же проблема. РЕДАКТИРОВАТЬ

Это файл apache error.log:

[Fri Jun 01 03:42:58.356938 2018] [wsgi:error] [pid 32199:tid 140244594628352] 
Internal Server Error: /favicon.ico
[Fri Jun 01 03:42:58.357214 2018] [wsgi:error] [pid 32199:tid 140244594628352] 
Traceback (most recent call last):
[Fri Jun 01 03:42:58.357347 2018] [wsgi:error] [pid 32199:tid 140244594628352]   
File "/usr/lib/python2.7/dist-packages/django/core/handlers/base.py", line 
108, in get_response
[Fri Jun 01 03:42:58.357402 2018] [wsgi:error] [pid 32199:tid 140244594628352]     
response = middleware_method(request)
[Fri Jun 01 03:42:58.357450 2018] [wsgi:error] [pid 32199:tid 140244594628352]   
File "/usr/lib/python2.7/dist-packages/django/middleware/common.py", line 62, 
in process_request
[Fri Jun 01 03:42:58.357496 2018] [wsgi:error] [pid 32199:tid 140244594628352]     
host = request.get_host()
[Fri Jun 01 03:42:58.357556 2018] [wsgi:error] [pid 32199:tid 140244594628352]   
File "/usr/lib/python2.7/dist-packages/django/http/request.py", line 94, 
inget_host
[Fri Jun 01 03:42:58.357603 2018] [wsgi:error] [pid 32199:tid 140244594628352]     
if domain and validate_host(domain, allowed_hosts):
[Fri Jun 01 03:42:58.357651 2018] [wsgi:error] [pid 32199:tid 140244594628352]   
File "/usr/lib/python2.7/dist-packages/django/http/request.py", line 571, in 
validate_host
[Fri Jun 01 03:42:58.357696 2018] [wsgi:error] [pid 32199:tid 140244594628352]     
pattern = pattern.lower()
[Fri Jun 01 03:42:58.357762 2018] [wsgi:error] [pid 32199:tid 140244594628352] 
AttributeError: 'NoneType' object has no attribute 'lower'

РЕДАКТИРОВАТЬ

Вот так выглядит мой файл конфигурации в папке с сайтами:

WSGIDaemonProcess geonode user=www-data threads=15 processes=2

<VirtualHost *:80>
  Servername localhost
  ServerAdmin webmaster@localhost

  LimitRequestFieldSize 32760
  LimitRequestLine 32760

  ErrorLog /var/log/apache2/error.log
  LogLevel warn
  CustomLog /var/log/apache2/access.log combined

  WSGIProcessGroup geonode
  WSGIPassAuthorization On
  WSGIScriptAlias / /var/www/geonode/wsgi/geonode.wsgi

  <Directory "/var/www/geonode/">
    Order allow,deny
    Options -Indexes
  ]   Allow from all
    Require all granted 
  </Directory>

  Alias /static/ /var/www/geonode/static/
  Alias /uploaded/ /var/www/geonode/uploaded/
  Alias /robots.txt /var/www/geonode/robots.txt

 <Directory "/var/www/geonode/uploaded/documents/">
   Order allow,deny
   Deny from all
 </Directory>

 <Directory "/var/www/geonode/uploaded/layers/">
   Order allow,deny
   Deny from all
 </Directory>

 <Directory "/var/www/geonode/static_root/">
    Order allow,deny
    Options Indexes FollowSymLinks
    Allow from all
    Require all granted
    IndexOptions FancyIndexing
 </Directory>

 <Directory "/var/www/geonode/uploaded/thumbs/">
    Order allow,deny
    Options Indexes FollowSymLinks
    Allow from all
    Require all granted
    IndexOptions FancyIndexing
 </Directory>

 <Directory "/var/www/geonode/uploaded/avatars/">
    Order allow,deny
    Options Indexes FollowSymLinks
    Allow from all
    Require all granted
    IndexOptions FancyIndexing
 </Directory>

 <Directory "/var/www/geonode/uploaded/people_group/">
    Order allow,deny
    Options Indexes FollowSymLinks
    Allow from all
    Require all granted
    IndexOptions FancyIndexing
</Directory>

<Directory "/var/www/geonode/uploaded/group/">
    Order allow,deny
    Options Indexes FollowSymLinks
    Allow from all
    Require all granted
    IndexOptions FancyIndexing
</Directory>

<Proxy *>
  Order allow,deny
  Require all granted 
  Allow from all
</Proxy>

  ProxyPreserveHost On
  ProxyPass /geoserver http://localhost:8080/geoserver
  ProxyPassReverse /geoserver http://localhost:8080/geoserver
</VirtualHost>

Попробуйте установить DocumentRoot как это:

<VirtualHost *:80>
    DocumentRoot /var/www/project
</VirtualHost>