Я новичок во всем веб-сайте... Был бы очень признателен, если бы вы могли помочь здесь...
Я хочу разместить проект Django на удаленном сервере (красная шляпа, выпуск CentOS 6.5).
Я тестировал проект на удаленном сервере, используя сервер разработки и порт 8000:
python manage.py runserver *.*.*.*:8000 --insecure
В этом случае веб-сайт работает нормально и доступен с других компьютеров.
0 errors found
September 04, 2014 - 08:13:03
Django version 1.6.4, using settings 'mysite.settings'
Starting development server at http://*.*.*.*:8000/
Quit the server with CONTROL-C.
Теперь я хочу запустить его в производство, и я решил использовать http-сервер Apache и mod_wsgi. У меня установлены и активированы httpd и wsgi. Я изменил файл конфигурации httpd.conf на:
Listen *:80 (I've also tried Listen *:8000 and Listen (IP address):8000)
#DocumentRoot "/var/www/html"
DocumentRoot "/testsite" (I put a plan html file under the directory just for test)
ServerName <here is the url of the site,with no port number>
Однако, когда я пытаюсь открыть веб-страницу, у меня всегда возникает ошибка 503:
Service Temporarily Unavailable
The server is temporarily unable to service your request due to maintenance downtime
or capacity problems. Please try again later.
Apache/2.2.3 (CentOS) Server at <site url> Port 80
Я попробовал пару вещей (1) проверил, что использует порт 80:
~# sudo lsof -i :80
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
httpd 28732 root 4u IPv6 19802111 0t0 TCP *:http (LISTEN)
httpd 28734 apache 4u IPv6 19802111 0t0 TCP *:http (LISTEN)
httpd 28735 apache 4u IPv6 19802111 0t0 TCP *:http (LISTEN)
httpd 28736 apache 4u IPv6 19802111 0t0 TCP *:http (LISTEN)
httpd 28737 apache 4u IPv6 19802111 0t0 TCP *:http (LISTEN)
httpd 28738 apache 4u IPv6 19802111 0t0 TCP *:http (LISTEN)
httpd 28739 apache 4u IPv6 19802111 0t0 TCP *:http (LISTEN)
httpd 28740 apache 4u IPv6 19802111 0t0 TCP *:http (LISTEN)
httpd 28741 apache 4u IPv6 19802111 0t0 TCP *:http (LISTEN)
~# service httpd status
httpd (pid 28732) is running...
(2) перезапустите сервер apache:
service httpd restart
Stopping httpd: [ OK ]
Starting httpd: [ OK ]
(3) поместил простой .html в /var/www/html/testsite, каталог DocumentRoot для тестирования.
(4) Я пытался запустить django на другом порту (например, 8008, 8001 и 80)
e.g. python manage.py runserver *.*.*.*:8008 --insecure
0 errors found
September 04, 2014 - 07:56:18
Django version 1.6.4, using settings 'mysite.settings'
Starting development server at http://*.*.*.*:8008/
Quit the server with CONTROL-C.
Как показано выше, в терминале все работает, но я даже не могу получить доступ к веб-сайту с удаленных компьютеров, даже используя сервер разработки. Я пробовал разные номера портов, но можно использовать только порт 8000. Но почему я могу открыть веб-страницу на локальном хосте, когда я меняю номер порта? например 127.0.0.1:8008 или 127.0.0.1:8080 будет работать.
Я предполагаю, что это может быть настройка брандмауэра, затем я пошел в /etc/sysconfig/iptables, я нашел в веб-разделе там была только одна строка:
-A INPUT -m state --state NEW -m tcp -p tcp --dport 8000 -j ACCEPT
Затем я добавил еще одну строку для тестирования:
-A INPUT -m state --state NEW -m tcp -p tcp --dport 8001 -j ACCEPT
Затем снова попробовал разработку с портом 8001. Опять же, похоже, что он работает на удаленном сервере, но недоступен с удаленных компьютеров.
Извините, если я сделал это запутанным, и если я спросил что-то действительно глупое. Теперь у меня есть три вопроса, которые я действительно не понимаю. Во-первых, меня очень раздражает ошибка 503. Даже он показывает, что сервер apache работает (перезапуск httpd в порядке), на самом деле ничего не отображается ... Во-вторых, при использовании сервера разработки, почему я могу использовать только порт 8000, но не любой другой? Наконец, в сообщении об ошибке 503 показано, что apache работает на порту 80 даже после того, как я изменил порт прослушивания на 8000 в файле конфигурации, почему это так?
Заранее спасибо за любую помощь!