Django rest API развернуть на Apache - PullRequest
0 голосов
/ 23 января 2019

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

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

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

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

Ответы [ 2 ]

0 голосов
/ 23 января 2019

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

Установка Apache: Вам необходимо установить 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>

Проект Django 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 Sever sudo service apache2 start

Также вам нужно дать разрешение вашей директории проекта sudo chmod -R 777 /path/to/my-project

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

0 голосов
/ 23 января 2019

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

С документацией можно ознакомиться здесь https://docs.djangoproject.com/en/2.1/howto/deployment/wsgi/

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

<VirtualHost *:80>
    ServerName yoursite.com
    ServerAdmin your@site.com

    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)

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