Сайт Django, обслуживаемый на сервере Apache, не работает, журналы не содержат ошибок - PullRequest
0 голосов
/ 03 мая 2019

У меня есть веб-сайт Django, расположенный по адресу /home/rohit/django-site/infer на сервере. apache2 и wsgi уже установлены и работают правильно. Чтобы увидеть это:

$ systemctl status apache2.service 
● apache2.service - The Apache HTTP Server
   Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset: enabled)
  Drop-In: /lib/systemd/system/apache2.service.d
           └─apache2-systemd.conf
   Active: active (running) since Fri 2019-05-03 19:12:34 IST; 31min ago
  Process: 9354 ExecStop=/usr/sbin/apachectl stop (code=exited, status=0/SUCCESS)
  Process: 9364 ExecStart=/usr/sbin/apachectl start (code=exited, status=0/SUCCESS)
 Main PID: 9368 (apache2)
    Tasks: 24 (limit: 4915)
   CGroup: /system.slice/apache2.service
           ├─9368 /usr/sbin/apache2 -k start
           ├─9370 /usr/sbin/apache2 -k start
           ├─9371 /usr/sbin/apache2 -k start
           ├─9372 /usr/sbin/apache2 -k start
           ├─9373 /usr/sbin/apache2 -k start
           ├─9374 /usr/sbin/apache2 -k start
           └─9375 /usr/sbin/apache2 -k start

Вот содержание /var/log/apache2/error.log:

[Fri May 03 17:04:03.885793 2019] [mpm_prefork:notice] [pid 24349] AH00163: Apache/2.4.29 (Ubuntu) mod_wsgi/4.5.17 Python/3.6 configured -- resuming normal operations
[Fri May 03 17:04:03.885868 2019] [core:notice] [pid 24349] AH00094: Command line: '/usr/sbin/apache2'
[Fri May 03 19:12:34.361607 2019] [mpm_prefork:notice] [pid 24349] AH00169: caught SIGTERM, shutting down
[Fri May 03 19:12:34.480584 2019] [mpm_prefork:notice] [pid 9368] AH00163: Apache/2.4.29 (Ubuntu) mod_wsgi/4.5.17 Python/3.6 configured -- resuming normal operations
[Fri May 03 19:12:34.480660 2019] [core:notice] [pid 9368] AH00094: Command line: '/usr/sbin/apache2'

Глядя на это, я понимаю, что все в порядке.

/var/log/apache2/access.log пусто, что означает, что все запросы, сделанные мной на сайт, даже не достигли сервера. Это похоже на проблему с брандмауэром.

Firewall

Брандмауэр специально разрешил доступ к порту 8000 из внешнего мира. Это означает, что даже порт 80 (http) не может быть доступен из внешнего мира.

Чтобы проверить это, я запустил ./manage.py runserver 0.0.0.0:8000 с сервера и успешно зашел на сайт со своего ноутбука, посетив <ip-of-server>:8000. Это означает, что порт 8000 доступен снаружи.

Теперь, чтобы убедиться, что apache работает на этом порту, я отредактировал файл /etc/apache2/sites-available/000-default.conf, который теперь выглядел так:

<VirtualHost *:8000>
        ServerAdmin webmaster@localhost
        DocumentRoot /var/www/html
        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined

        Alias /static /home/rohit/django-site/infer/static
        <Directory /home/rohit/django-site/infer/static>
                Require all granted
        </Directory>
        <Directory /home/rohit/django-site/infer/infer>
                <Files wsgi.py>
                        Require all granted
                </Files>
        </Directory>
        WSGIDaemonProcess infer python-path=/home/rohit/django-site/infer python-home=/home/rohit/django-site/inferenv
        WSGIProcessGroup infer
        WSGIScriptAlias / /home/rohit/django-site/infer/infer/wsgi.py
</VirtualHost>

Итак, после всего этого, когда я помещаю адрес <ip-of-server>:8000 в браузер, я получаю сообщение об ошибке «невозможно подключиться». Плюс, пустой access.log означает, что запрос никогда не достиг сервера. Но порт 8000 открыт, поэтому проблема с брандмауэром не должна быть. Итак, есть ли что-то, что может быть причиной проблемы?

Любая помощь приветствуется!

1 Ответ

0 голосов
/ 03 мая 2019

Как прокомментировал Даниэль Роузман , я добавил Listen 8000 к /etc/apache2/sites-available/000-default.conf.

Мне также нужно было разрешить доступ к домашнему каталогу моего проекта.Поэтому я добавил следующее к /etc/apache2/apache2.conf, как предложено MaximeK

<Directory /home/rohit/django-site/infer>
        Options Indexes FollowSymLinks Includes ExecCGI
        AllowOverride All
        Order deny,allow
        Allow from all
</Directory>

Затем я изменил разрешения для /home/rohit/django-site/infer, как подсказал этот ответ, по:

sudo chmod -R 755 <site_top_folder>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...