Как запустить веб-приложение Django на портах 443 и 80 linux - Ubuntu или Raspberry PI? - PullRequest
0 голосов
/ 13 сентября 2018

Я довольно новичок в Джанго. Я думаю, что не могу запустить приложение django как sudo, так как все связанные с pip модули установлены для пользователя, а не для пользователя sudo. Итак, это своего рода основной вопрос, например, как мне запустить приложение django, которое может прослушивать порт 80 и порт 443.

Итак, я попробовал следующий вариант - предварительная маршрутизация - NAT

Я запускаю свое приложение, используя следующую команду -

$python manage.py runserver 
Performing system checks...

System check identified no issues (0 silenced).

You have 15 unapplied migration(s). Your project may not work properly until you apply the migrations for app(s): admin, auth, contenttypes, sessions.
Run 'python manage.py migrate' to apply them.

September 13, 2018 - 03:04:41
Django version 2.1.1, using settings 'WebBlogger.settings'
Starting development server at http://127.0.0.1:8000/

Далее, вот мои настройки iptables, но у меня ничего не получалось

sudo iptables -t nat -A ПРЕДУПРЕЖДЕНИЕ -p tcp --dport 80 -j НАПРАВЛЕНО - на порт 8000

$sudo iptables -t nat --line-numbers -n -L
Chain PREROUTING (policy ACCEPT)
num  target     prot opt source               destination         
1    DOCKER     all  --  0.0.0.0/0            0.0.0.0/0            ADDRTYPE match dst-type LOCAL
2    REDIRECT   tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:80 redir ports 8000

Chain INPUT (policy ACCEPT)
num  target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
num  target     prot opt source               destination         
1    DOCKER     all  --  0.0.0.0/0           !127.0.0.0/8          ADDRTYPE match dst-type LOCAL

Chain POSTROUTING (policy ACCEPT)
num  target     prot opt source               destination         
1    MASQUERADE  all  --  172.17.0.0/16        0.0.0.0/0           
2    RETURN     all  --  192.168.122.0/24     224.0.0.0/24        
3    RETURN     all  --  192.168.122.0/24     255.255.255.255     
4    MASQUERADE  tcp  --  192.168.122.0/24    !192.168.122.0/24     masq ports: 1024-65535
5    MASQUERADE  udp  --  192.168.122.0/24    !192.168.122.0/24     masq ports: 1024-65535
6    MASQUERADE  all  --  192.168.122.0/24    !192.168.122.0/24    

Chain DOCKER (2 references)
num  target     prot opt source               destination         
1    RETURN     all  --  0.0.0.0/0            0.0.0.0/0           

Я сделал http: // и я вижу, что соединение отказано. Я понятия не имею, как отлаживать материал NAT независимо от того, работает он на самом деле или нет. Как я могу отладить, а также как найти правильное решение?

Ответы [ 2 ]

0 голосов
/ 13 сентября 2018

Вы не общаетесь с приложением Django напрямую.Хотя у Django есть простой сервер разработки, доступный с помощью команды runserver, он предназначен не для чего-либо, кроме разработки.

Вам нужно настроить сервер WSGI для запуска вашего приложения и веб-сервер для приема реального пользователязапросы и прокси их в WSGI.Обычно используемые WSGI-серверы (не беспокойтесь о том, что такое WSGI) - это gunicorn и uWSGI.Оба могут быть установлены с использованием PIP, и вам не нужно устанавливать их под тем же пользователем, что и ваше приложение.Gunicorn немного проще в использовании, поэтому я бы порекомендовал его.В настоящее время наиболее распространенным веб-сервером является Nginx.

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

Вот несколько устаревшее руководство о том, как это сделать.Это должно быть в основном точно, и это хорошее место для начала https://www.digitalocean.com/community/tutorials/how-to-set-up-django-with-postgres-nginx-and-gunicorn-on-ubuntu-14-04

0 голосов
/ 13 сентября 2018

В идеальном мире вам понадобится веб-служба, чтобы поговорить с вашим Джанго.

Web server (port 80/443) -> gunicorn (wigs) -> Django (port 8000)

А если вы просто хотите, чтобы сервер разработки Django работал на 80, попробуйте

manage.py rumserver 0.0.0.0:80 

и убедитесь, что никакой другой процесс не использует порт 80.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...