Развертывание приложения django без поддоменов

Я развернул приложение Django на сервере, который у меня есть. Пусть говорят, что его IP 192.168.1.1, Так что я смог получить доступ к любому сайту там с 192.168.1.1/my_site,

Я сейчас развернул Django Приложение, которое представляет собой небольшой API. Я следую этому уроку и использую apache с mod_wsgi и с демоном. Теперь проблема, когда я развернул локально, я смог получить к нему доступ через localhost но все остальные сайты были недоступны из-за изменений в 000-default-000.conf файл.

Поскольку я развертываюсь на сервере, возможно ли получить доступ через ip и не будет конфликтовать с другими проектами в /var/www/html?

1 ответ

Не Django + Apache эксперт, но нашел это в Интернете, посмотрите, работает ли он для вас.

Из проекта Джанго

<VirtualHost *:80>
    # This is name based virtual hosting. So place an appropriate server name
    #   here. Example: django.devsrv.local
    ServerName  [[SERVER_NAME]]
    ServerAdmin webmaster@localhost

    # This alias makes serving static files possible.
    #   Please note, that this is geared to our settings/common.py
    #   In production environment, you will propably adjust this!
    Alias /static/  {{ project_directory }}/run/static/

    # This alias makes serving media files possible.
    #   Please note, that this is geared to our settings/common.py
    #   In production environment, you will propably adjust this!
    Alias /media/  {{ project_directory }}/run/media/

    # Insert the full path to the wsgi.py-file here
    WSGIScriptAlias /   {{ project_directory }}/{{ project_name }}/wsgi.py

    # PROCESS_NAME specifies a distinct name of this process
    #   see: https://code.google.com/p/modwsgi/wiki/ConfigurationDirectives#WSGIDaemonProcess
    # PATH/TO/PROJECT_ROOT is the full path to your project's root directory, 
    #   containing your project files
    # PATH/TO/VIRTUALENV/ROOT: If you are using a virtualenv specify the full
    #   path to its directory.
    #   Generally you must specify the path to Python's site-packages.
    WSGIDaemonProcess   {{ project_name }}  python-path={{ project_directory }}:{{ project_directory }}/../lib/python2.7/site-packages

    # PROCESS_GROUP specifies a distinct name for the process group
    #   see: https://code.google.com/p/modwsgi/wiki/ConfigurationDirectives#WSGIProcessGroup
    WSGIProcessGroup    {{ project_name }}

    # Serving static files from this directory
    #   Please note, that this is geared to our settings/common.py
    #   In production environment, you will propably adjust this!
    <Directory {{ project_directory }}/run/static>
        Options -Indexes
        Order deny,allow
        Allow from all
    </Directory>

    # Serving media files from this directory
    #   Please note, that this is geared to our settings/common.py
    #   In production environment, you will propably adjust this!
    <Directory {{ project_directory }}/run/media>
        Options -Indexes
        Order deny,allow
        Allow from all
    </Directory>

    LogLevel warn

    # PROJECT_NAME is used to seperate the log files of this application
    ErrorLog    ${APACHE_LOG_DIR}/{{ project_name }}_error.log
    CustomLog   ${APACHE_LOG_DIR}/{{ project_name }}_access.log combined
</VirtualHost>

Из металлической жабы

<VirtualHost *:80> 
 ServerName mysite.example.com 
 DocumentRoot /var/www/vhosts/mysite 
 WSGIScriptAlias / /var/www/vhosts/mysite/myproject/wsgi.py 

 # adjust the following line to match your Python path 
 WSGIDaemonProcess mysite.example.com processes=2 threads=15 display-name=%{GROUP} python-home=/var/www/vhosts/mysite/venv/lib/python3.5 
 WSGIProcessGroup mysite.example.com 

 <directory /var/www/vhosts/mysite> 
   AllowOverride all 
   Require all granted 
   Options FollowSymlinks 
 </directory> 

 Alias /static/ /var/www/vhosts/mysite/static/ 

 <Directory /var/www/vhosts/mysite/static> 
  Require all granted 
 </Directory> 
</VirtualHost> 

Metal Toad идет дальше, чтобы показать вам, как настроить ваш wsgi.py чтобы заставить его хорошо работать с apache:

"""
exposes the WSGI callable as a module-level variable named ``application``. 
For more information on this file, see 
https://docs.djangoproject.com/en/1.9/howto/deployment/wsgi/ 
""" 
import os 
import time 
import traceback 
import signal 
import sys 

from django.core.wsgi import get_wsgi_application 

sys.path.append('/var/www/vhosts/mysite') 
# adjust the Python version in the line below as needed 
sys.path.append('/var/www/vhosts/mysite/venv/lib/python3.5/site-packages') 

os.environ.setdefault("DJANGO_SETTINGS_MODULE", "myproject.settings") 

try: 
    application = get_wsgi_application() 
except Exception: 
    # Error loading applications 
    if 'mod_wsgi' in sys.modules: 
        traceback.print_exc() 
        os.kill(os.getpid(), signal.SIGINT) 
        time.sleep(2.5) 

Так что поиграйте с этим и заставьте его служить вам. А Metal Toad говорит, что вы даже можете настроить несколько сайтов:

Второй виртуальный хост настроен очень похоже на первый. Основными отличиями являются имена серверов, пути и расположение файла wsgi.py.

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