Как развернуть приложение 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 = ['*']

Испробованы следующие методы:

  1. , используя django-extensions как:

python manage.py runserver_plus --cert certname 0.0.0.0:8000

  1. , используя django-sslserver как:

python manage.py runsslserver 0.0.0.0:8000

Приложение запускается обоими этими методами только локально на http://192.xxx.xx.xxx:8000/django_app/home, но ни один из них не работает с публичного IP.

Подскажите, пожалуйста, как развернуть или настроить это приложение Django для работы за пределами локальной сети?

я бы развернул django следующим образом:

  1. установите uwsgi в свой virtualenv

    pip install uwsgi

  2. создайте конфигурационный файл 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
    
  3. установите 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
         }
    }
    
  4. Скачайте и скопируйте uwsgi_params в вашу директорию https://github.com/nginx/nginx/blob/master/conf/uwsgi_params

  5. symlink config из /etc/nginx/sites-enabled

    .

    sudo ln -s /etc/nginx/sites-available/mysite_nginx.conf /etc/nginx/sites-enabled/

  6. Запустите uwsgi и nginx

    .

    uwsgi --ini mysite_uwsgi.ini

    sudo service nginx restart

не забудьте collectstatic, чтобы эти файлы можно было обслуживать.

мы добавили файлы mysite_uwsgi.ini и uwsgi_params в наш репозиторий

Вернуться на верх