Py学习  »  Django

在apache上部署Django rest API

Gaurav • 5 年前 • 1518 次点击  

我已经创建了一个django应用程序并将其部署到服务器上。我已经通过以下方式运行该应用程序:- python manage.py runserver 8000 &

并通过代理服务器处理apache服务器上的请求

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

但在通过JMeter测试api时,我面临一个问题,当我为10个用户运行一个测试用例时,服务器上的python服务会自动终止。 我做错了什么,或者我需要做什么来解决上面的测试场景,请建议?

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/50027
 
1518 次点击  
文章 [ 2 ]  |  最新文章 5 年前
R.A.Munna
Reply   •   1 楼
R.A.Munna    6 年前

首先,您需要将它部署到其他服务器上,如 apache . 下面我将分享如何像往常一样配置apache2来部署PythonDjango项目。

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的path /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服务器 sudo service apache2 start

您还需要授予项目目录的权限 sudo chmod -R 777 /path/to/my-project

这是apache2与Pythondjango项目的基本配置。希望这将有助于配置任何 linux machine 和你的 python django project

MaximeK
Reply   •   2 楼
MaximeK    6 年前

你不能使用 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 )