Ну, вы знаете, как создавать виртуальные хосты, чтобы вы знали, как обслуживать несколько сайтов.
Ниже приведен шаблон шаблона для виртуального хоста, на котором запущен объект wsgi - тот, который вы найдете в проекте django.
У этого есть псевдоним для моей статической папки, которую я назвал «общедоступной», и ссылки на фактическую папку «static».
На settings.py
# The static alias
STATIC_URL = '/public/'
# The actual static folder
STATIC_ROOT = 'static'
Просто убедитесь, что пользователь апаша «WWW-данные» имеют право доступа и письма по папкам, которые можно использовать, например, «средства массовой информации», чтобы загрузить файлы.
<VirtualHost *:80>
WSGIDaemonProcess yourproject display-name=%{GROUP}
WSGIProcessGroup yourproject
DocumentRoot /var/www/public_html/youproject/src/
ServerName youproject.com
ErrorLog ${APACHE_LOG_DIR}/youproject.log
LogLevel warn
CustomLog ${APACHE_LOG_DIR}/youproject_access.log combined
WSGIScriptAlias//var/www/public_html/youproject/src/project/wsgi.py
<Directory "/var/www/public_html/youproject/src/project/">
<Files wsgi.py>
Allow from all
Order deny,allow
</Files>
</Directory>
Alias /public /var/www/public_html/youproject/src/static
<Directory /var/www/public_html/youproject/src/static>
Order allow,deny
Allow from all
</Directory>
</VirtualHost>
Вы можете запустить Джанго проект с выше, но если вы хотите иметь различные пакеты на сервере, вы можете рассмотреть возможность запуска virtualenv по каждому проекту и передать, что окр к WSGI.
Таким образом вы можете использовать независимые пакеты для каждого проекта.
Структура папки Пример:
-env (virtualenv)
-src (django files)
---- project
----- ----- settings
----- ----- ----- production.py
----- ----- ----- development.py
----- ----- ----- default.py
----- ----- wsgi.py
----- ----- urls.py
---- apps (Your apps)
---- static
---- media
---- manage.py
Джанго wsgi.py
import os
import sys
import site
# Setting python paths
project_path = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
git_path = os.path.dirname(project_path)
# Adding the site-packages of the chosen virtualenv to work with
virtual_env_path = os.path.join(git_path, 'env')
virtual_env_lib_path = os.path.join(virtual_env_path, 'lib', 'python2.7', 'site-packages')
# Adding the site-packages of the chosen virtualenv to work with
site.addsitedir(virtual_env_path)
# Adding directories to PYTHON PATH
sys.path.append(project_path)
sys.path.append(os.path.join(project_path, 'project'))
# Choosing which settings the project will use - production/development
# from project.config import server
# os.environ.setdefault("DJANGO_SETTINGS_MODULE", server.DJANGO_SETTINGS)
# Lets just select the production settings for now
os.environ.setdefault("DJANGO_SETTINGS_MODULE", 'project.settings.production')
# Activating virtual env
activate_env = os.path.expanduser(os.path.join(virtual_env_path, 'bin', 'activate_this.py'))
execfile(activate_env, dict(__file__=activate_env))
from django.core.wsgi import get_wsgi_application
application = get_wsgi_application()
Если вы проверяете выше, есть комментировал часть, чтобы выбрать settings.py файл.
Обычно я запускаю 2 файла - производство и разработку, поэтому вы можете также подумать об этом.
Почему вы не читаете документацию, где все это полностью объяснено? –