Необходимо запустить приложение django в доменном имени без указания порта c - PullRequest
0 голосов
/ 01 февраля 2020

Я новичок ie до Django, недавно я создал приложение Django и загрузил его на сервер. Я назначил ему доменное имя. каждый раз, когда я запускаю сервер, мне нужно набирать xyz.com:8000 , чтобы увидеть мой сайт. Есть ли способ решить эту проблему? Также у меня есть сомнения. Нужно ли вводить python manage.py runserver 0:8000, чтобы запустить сайт, или он просто запускается автоматически, как PHP.

1 Ответ

1 голос
/ 01 февраля 2020

Вы должны настроить веб-сервер! Веб-сервер необходим для работы любого сайта. В настоящее время наиболее популярными являются Apache и NGINX. Это веб-сервер, который отвечает на запросы пользователей. Нам необходимо обеспечить взаимодействие веб-сервера и приложения python. Наиболее популярные решения:

Рассмотрим пример с Nginx и Gunicorn:

Начнем с установки модуля Gunicorn в виртуальной среде:

pip install gunicorn

Сконфигурируйте настройки службы gunicorn для нашего проекта:

sudo nano /etc/systemd/system/gunicorn.service

/ etc / systemd / system / gunicorn.service:

[Unit]
Description=gunicorn daemon
After=network.target

[Service]
User=my_user
Group=www-data
WorkingDirectory=/home/project_dir/project
ExecStart=/home/project_dir/project/venv/bin/gunicorn --access-logfile - --workers 3 --bind unix:/home/project_dir/project/project.sock project.wsgi

[Install]
WantedBy=multi-user.target

Включаем и запускаем службу gunicorn, проверяем ее статус:

sudo systemctl enable gunicorn
sudo systemctl start gunicorn
sudo systemctl status gunicorn

Если все хорошо, установите веб-сервер nginx :

sudo apt install nginx

Настройка параметров сайта проекта:

sudo nano /etc/nginx/sites-available/project

/ etc / nginx / sites-available / project:

server {
    listen 80;
    server_name <server IP or domain name>;

    location = /favicon.ico { access_log off; log_not_found off; }
    location /static/ {
        root /home/project_dir/project;
    }

    location /media/ {
        root /home/project_dir/project;
    }

    location / {
        include proxy_params;
        proxy_pass http://unix:/home/project_dir/project/project.sock;
    }
}

Используем Nginx в качестве прокси для сервера gunicorn Python:

proxy_pass http://unix:/home/project_dir/project/project.sock;

Создать ссылку в папке разрешенных сайтов «/ etc / nginx / sites-enabled»:

sudo ln -s /etc/nginx/sites-available/project/etc/nginx/sites-enabled

Перезапускаем Nginx службы и добавить разрешения для брандмауэра:

sudo systemctl restart nginx
sudo ufw allow 'Nginx Full'

Готово! Вы можете проверить работу нашего сайта, введя IP-адрес сервера в браузере. PS Извините за мой английский sh! Если вы видите ошибку в тексте или коде, пожалуйста, измените меня.

...