Django rest API развертывается на apache

Я создал приложение django и развернул его на сервере. Я запустил приложение через: - python manage.py runserver 8000 &

и обрабатывать запросы на сервере apache через прокси

ProxyPass "/" "http://www.example.com/" ProxyPassReverse "/" "http://www.example.com/".

Но есть проблема, с которой я сталкиваюсь при тестировании API через JMeter, когда я запускаю тестовый пример для 10 пользователей, моя служба python на сервере автоматически отключается. Что я делаю неправильно или что мне нужно сделать, чтобы разрешить описанный выше тестовый сценарий, подскажите, пожалуйста?

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
0
3 157
2

Ответы 2

Вы не можете использовать python manage.py runserver 8000 на сервере, это ТОЛЬКО для разработки.

Документацию можно посмотреть здесь https://docs.djangoproject.com/en/2.1/howto/deployment/wsgi/

Базовая конфигурация для Apache будет:

<VirtualHost *:80>
    ServerName yoursite.com
    ServerAdmin [email protected]

    Alias /media/ /path/to/django-app/media/

    <Directory /path/to/django-app/media/>
        Require all granted
    </Directory>

    WSGIScriptAlias / /path/to/django-app/conf/wsgi.py

    <Directory /path/to/django-app/conf/>
    <Files wsgi.py>
        Require all granted
    </Files>
    </Directory>
</VirtualHost>

Вам нужно адаптировать это для вашего проекта.

Если вам нужно установить mod_wsgi: https://modwsgi.readthedocs.io/en/develop/user-guides/quick-installation-guide.html

Для меня я бы использовал https://docs.djangoproject.com/en/2.1/howto/deployment/wsgi/uwsgi/, так удобнее (pip install uwsgi)

не могли бы вы предложить мне способ его развертывания на сервере amazon (aws) linux?

Gaurav 23.01.2019 11:49

Привет, вы можете найти много руководств в Google, я могу дать вам один с ngix: medium.com/@charlesthk/…

MaximeK 23.01.2019 15:12

Прежде всего, вам нужно развернуть его на другом сервере, таком как apache. Ниже я рассказываю, как обычно настроить apache2 для развертывания проекта python django.

Установка Апача: Вам нужно установить apache, если он еще не установлен. Здесь я показываю установку apache2 и некоторые другие установки, которые нам нужны.

sudo apt-get update
sudo apt-get install apache2
sudo a2enmod wsgi
sudo apt-get install python3-pip apache2 libapache2-mod-wsgi-py3

конфигурация файла 000-default.conf: Обычно apache2 находится в linux m по пути /etc/apache2/sites-available/000-default.conf. И файл конфигурации может понравиться.

<VirtualHost *:80>
     ServerName www.something.com

    # this is the document root of your project
    DocumentRoot /path/to/my-project
    # The directory which you can access with base path EX: www.something.com/static/images/image.png
    Alias /static /path/to/my-project/static

    <Directory /path/to/my-project/static>
        Require all granted
    </Directory>

    <Directory /path/to/my-project/my-project>
        <Files wsgi.py>
        Header set Access-Control-Allow-Origin "*"
            Require all granted
        </Files>
    </Directory>

    WSGIDaemonProcess my-project python-home=/path/to/my_env python-path=/path/to/my-project
    WSGIProcessGroup my-project
    WSGIScriptAlias / /path/to/my-project/my-project/wsgi.py

    ErrorLog /path/to/my-project/logs/error.log
    CustomLog /path/to/my-project/logs/access.log combined3
</VirtualHost>

Джанго-проект wsgi.py: Созданный вами проект django имеет wsgy.py, и этот файл может выглядеть так.

python_home = '/path/to/my_env'

import sys
import site

sys.path.append('/path/to/my-project')
sys.path.append('/path/to/my_env/bin')
sys.path.append('/path/to/my_env/lib/python3.6/site-packages')

# Calculate path to site-packages directory.

python_version = '.'.join(map(str, sys.version_info[:2]))
site_packages = python_home + '/lib/python%s/site-packages' % python_version

# Add the site-packages directory.

site.addsitedir(site_packages)

import os

from django.core.wsgi import get_wsgi_application

os.environ.setdefault("DJANGO_SETTINGS_MODULE", "my-project.settings")

application = get_wsgi_application()

После этого вы можете запустить сервер apache2 sudo service apache2 start.

Также вам необходимо дать разрешение на каталог вашего проекта sudo chmod -R 777 /path/to/my-project.

Это базовая конфигурация apache2 с проектом python django. Надеюсь, это поможет настроить любой linux machine с вашим python django project.

Другие вопросы по теме