У меня есть веб-сайт 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
открыт, поэтому проблема с брандмауэром не должна быть. Итак, есть ли что-то, что может быть причиной проблемы?
Любая помощь приветствуется!