Как развернуть приложение Django на сервере Centos с доменом, защищенным SSL?
У меня есть Django App, которое я хочу развернуть на Centos Linux server
, имеющем global/public IP
, который назначен на domain
и является secured with SSL
.
Конфигурация системы следующая:
centos-release-6-10.el6.centos.12.3.x86_64
Apache/2.2.15 (CentOS)
Когда я запускаю сервер, используя:
python manage.py runserver 0.0.0.0:8000
,
тогда он доступен только из браузера, передав локальный IP, скажем
http://192.xxx.xx.xxx:8000/django_app/home
Но я хочу получить доступ к нему с публичного/глобального IP, но он выдает ошибку, когда я заменяю локальный IP на глобальный/публичный IP или домен, назначенный на публичный IP, как:
105.168.296.58 took too long to respond.
Try:
Checking the connection
Checking the proxy and the firewall
Running Windows Network Diagnostics
ERR_CONNECTION_TIMED_OUT
Когда я просто ввожу этот публичный IP в браузер как https://105.168.296.58
, он перенаправляет браузер на приложение/сайт https://mywebsite.com/home
, который работает на порту 80 на Apache, и показывает назначенный домен вместо IP, так что IP работает нормально.
в settings.py: все хосты разрешены как ALLOWED_HOSTS = ['*']
Испробованы следующие методы:
- , используя
django-extensions
как:
python manage.py runserver_plus --cert certname 0.0.0.0:8000
- , используя
django-sslserver
как:
python manage.py runsslserver 0.0.0.0:8000
Приложение запускается обоими этими методами только локально на http://192.xxx.xx.xxx:8000/django_app/home
, но ни один из них не работает с публичного IP.
Подскажите, пожалуйста, как развернуть или настроить это приложение Django для работы за пределами локальной сети?
я бы развернул django следующим образом:
установите
uwsgi
в свой virtualenvpip install uwsgi
создайте конфигурационный файл uwsgi (все внутри
)<>
должно быть отредактировано под ваши нужды# mysite_uwsgi.ini file [uwsgi] # Django-related settings # the base directory (full path) chdir = </path/to/your/project> # Django's wsgi file module = <project>.wsgi # the virtualenv (full path) home = </path/to/virtualenv> # process-related settings # master master = true # maximum number of worker processes processes = 10 # the socket (use the full path to be safe socket = </path/to/your/project/mysite.sock> # ... with appropriate permissions - may be needed # chmod-socket = 664 # clear environment on exit vacuum = true
установите nginx и создайте следующий конфиг
# mysite_nginx.conf # the upstream component nginx needs to connect to upstream django { server unix:///<path/to/your/mysite/mysite.sock>; } # configuration of the server server { # the port your site will be served on listen 80; # the domain name it will serve for server_name <example.com;> # substitute your machine's IP address or FQDN charset utf-8; # max upload size client_max_body_size 75M; # adjust to taste # Django media location /media { alias </path/to/your/mysite/media;> # your Django project's media files - amend as required } location /static { alias </path/to/your/mysite/static>; # your Django project's static files - amend as required } # Finally, send all non-media requests to the Django server. location / { uwsgi_pass django; include </path/to/your/mysite/uwsgi_params;> # the uwsgi_params file you installed } }
Скачайте и скопируйте uwsgi_params в вашу директорию https://github.com/nginx/nginx/blob/master/conf/uwsgi_params
symlink config из
./etc/nginx/sites-enabled
sudo ln -s /etc/nginx/sites-available/mysite_nginx.conf /etc/nginx/sites-enabled/
Запустите uwsgi и nginx
.uwsgi --ini mysite_uwsgi.ini
sudo service nginx restart
не забудьте collectstatic
, чтобы эти файлы можно было обслуживать.
мы добавили файлы mysite_uwsgi.ini
и uwsgi_params
в наш репозиторий