2015-03-25 2 views
-1

8 лет назад Я отлично работал над проектами PHP, где работает новый веб-сайт, немного прост и прост, просто скопируйте свои файлы, создайте виртуальный хост & запустите свой сайт.Конфигурировать Django вместе с Apache

В то время как я был каким-то образом вовлечен в создание проекта с использованием Python, поэтому некоторые копания я обнаружил, что Django является самой подходящей структурой, снова ищущей, как запустить приложение Django, чтобы начать разработку, и я следую некоторым учебникам на youtube & я нашел следующее:

[примечание: мои рабочие среды являются Mac OSX 10.10, Ubuntu 14,04]

  1. питон интегрированы на оба моих зева
  2. я должен установить PIP [установить easy_install первый]
  3. Установить virtualenv
  4. создание нового virtualenv & включение его.
  5. Установка Django с помощью PIP
  6. Start Джанго сервер & запустить, то я получить IP [127.0.0.1:8000]

после всего этого я должен следить за учебники, чтобы приступить к разработке, но Я сгруппирован с некоторыми вопросами, где является:

  1. Как я мог использовать Apache + mod_wsgi, чтобы создать виртуальный хост для моих Джанго сайтов, как я привык делать, используя MAMP PRO или встроенные в апаче на UBUNTO, так что я нашел немного сложно управлять несколькими сайтами django на моей разработке enviro nment.
  2. Как должен быть сконфигурирован производственный сервер для запуска моего сайта django, так как я также буду администратором RedHat
  3. Я знаю, что меня немного путают с разницей, с которой должен работать Python.
+0

Почему вы не читаете документацию, где все это полностью объяснено? –

ответ

0

Ну, вы знаете, как создавать виртуальные хосты, чтобы вы знали, как обслуживать несколько сайтов.

Ниже приведен шаблон шаблона для виртуального хоста, на котором запущен объект 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 файла - производство и разработку, поэтому вы можете также подумать об этом.

+0

Я хотел бы сначала узнать, как установить mod_wsgi на MAMP Pro & ubuntu 14.04, так как я знаю, что это поддерживаемый модуль для запуска проектов python на apache – ahmedsaber111

+0

для ubuntu, вы можете сделать это легко с помощью «sudo aptitude install libapache2-mod-wsgi " – brunofitas

+0

Я не знаю о MAMP ... – brunofitas

Смежные вопросы