Развертывание приложения 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.