Как использовать Python 3 и Django с Apache?

моя цель-настроить Python 3 с Apache. Моя самая большая проблема - это приобретение mod_python.Итак. За всю жизнь я нашел только один сайт, где его можно было скачать (http://www.modpython.org/) и то, что я получил, было кучей файлов сборки и установки.

Я не могу найти руководства, объясняющего, как настроить Python 3 с Apache. Поэтому, если кто-то может провести меня через это сейчас, интернет, наконец, будет содержать решение!

5 ответов


Django 1.6+ и mod_wsgi 3.4+ необходимы для использования Python 3 с Apache. Более подробно см. ответ шотландца.


эти ответы больше не верны для Django 1.6-он поддерживает python3. На странице mod_wsgi говорится, что версия 3.4 поддерживает python 3. https://code.google.com/p/modwsgi/

не знаю, работает ли все это на данный момент (я вернусь и отредактирую, когда узнаю)!

ответ-да, это работает!

у меня есть экземпляр AWS EC3 Ubuntu под управлением Python3, Django 1.5.6, Apache2.2 и mod_wsgi 3.4

Python 3.3.4:

sudo add-apt-repository ppa:fkrull/deadsnakes
sudo apt-get install python3.3
sudo apt-get install python3.3-dev python3.3-doc idle-python3.3

ppa:fkrull / deadsnakes является apt РЕПО имеет несколько версий python доступны-см https://launchpad.net / ~fkrull / + архив / deadsnakes

затем я добавил pip, используя инструкции на странице pip;http://pip.readthedocs.org/en/latest/installing.html. (помните, что ваш python, вероятно, находится на вашем пути как " python3.3 "в этот момент простой "python" будет указывать на python 2.x!)

после этого, virtualenv. Затем я виртуализировал установку python. После активации и добавления bin/ directory среды в $PATH у меня теперь есть чистый python3.

затем, после того, как я активировал виртуальный env, я сделал "pip Django" и все мои другие необходимые пакеты (которых было довольно много). У меня есть Django версии 1.6.2 (я разрабатывал на этом и работал под python 3.3.3 на моем Mac без проблем).

больше всего проблем у меня было установка lxml, потому что она требует libxml2 и libxslt для установки с apt-get (это обертка вокруг кода C), и мне потребовалось несколько попыток понять, что они еще не были установлены (компиляция lxml терпит неудачу).

после броска о получении моего экземпляра базы данных RDS и работает и доступен (postgresql, остерегайтесь mysql под python3, вы получите много боли драйвера python db! но большинство моих проблем были вызваны тем, что я пытался понять безопасность AWS конфигурация), это было относительно простое плавание:

sudo apt-get install apache2 apache2-threaded-dev

это устанавливает apache - и вам нужны пакеты dev для следующего бита.

и в этот момент я попытался использовать пакет apt для mod_wsgi, но решил, что лучше всего скомпилировать и установить его самостоятельно, следуя инструкциям здесь -https://code.google.com/p/modwsgi/wiki/InstallationInstructions

у меня не было проблем с configure, make или make install. Делать конечно, вы компилируете его в своей среде, активированной virtualenv.

вы должны вручную добавить конфигурацию в конфигурацию Apache:

# wsgi module
LoadModule wsgi_module /usr/lib/apache2/modules/mod_wsgi.so
# now configure it
<Directory /my/app/path>
 <Files wsgi.py>
  Order deny,allow
  Allow from all
 </Files>
</Directory>
WSGIScriptAlias / /my/app/path/wsgi.py
WSGIPythonPath /my/app:/path/to/the/virtual/env/lib/python3.3/site-packages

и в самом широком смысле, это все теперь работает.


вы не можете unser python3 с django. Из FAQ Django: http://docs.djangoproject.com/en/dev/faq/install/#can-i-use-django-with-python-3

могу ли я использовать Django с Python 3?

в данный момент нет. Python 3.0 представил ряд обратно несовместимых изменений в языке Python, и хотя эти изменения, как правило, хороши для будущего Python, пройдет некоторое время, прежде чем большинство программ Python догонит и сможет работать на Python 3.0. Для более крупного программного обеспечения на основе Python, такого как Django, переход, как ожидается, займет не менее года или двух (поскольку он включает в себя отказ от поддержки старых версий Python и поэтому должен выполняться постепенно).

тем временем, Python 2.X релизы будут поддерживаться и снабжаться исправлениями ошибок и обновлениями безопасности командой разработчиков Python, поэтому продолжая использовать Python 2.выпуск X при переходе не представляет никакой опасности.


1) Первое, что мы должны сделать с нашими вновь созданные файлы проекта-изменить настройки. Открыть файл настроек с помощью текстового редактора:

gedit myproject/settings.py

в нижней части файла мы добавим строку для настройки этого каталога. Django использует параметр STATIC_ROOT для определения каталога, куда должны идти эти файлы. Мы будем использовать немного Python, чтобы сказать ему использовать каталог под названием "static" в главном проекте каталог:

STATIC_ROOT = os.path.join(BASE_DIR, "static/")

2) мы можем собрать все статическое содержимое в каталог, мы настроены команды:

./manage.py collectstatic

вам придется подтвердить операцию. Статические файлы будут помещены в каталог static в каталоге проекта.

3) вам нужен адаптер mod-wsgi для настройки Django в Apache установите WSGI lib, как показано ниже.

sudo apt-get install libapache2-mod-wsgi sudo a2enmod wsgi

4)в нижней части файла, /etc/apache2 / sites-available / 000-по умолчанию.conf

WSGIPythonPath /var/www/html/myproject/ 
WSGIProcessGroup myproject
WSGIScriptAlias / /var/www/html/myproject/myproject/wsgi.py


  Alias /static /var/www/html/myproject/static/

<Directory /var/www/html/myproject/static>
    Require all granted
</Directory>

<Directory /var/www/html/myproject/myproject>
    <Files wsgi.py>
         Order deny,allow
        Require all granted
    </Files>
</Directory>

Alias /media/ /var/www/html/myproject/media/
<Directory /var/www/html/myproject/media>
Require all granted
</Directory> 
WSGIDaemonProcess myproject python-path=/var/www/html/myproject/

5)перезапустите сервер apache2:

sudo service apache2 restart

6)теперь переходим к localhost в:

Бинго! Вы все настроены на Django с apache.


я сталкивался с подобной проблемой и вот как я ее решал: Чтобы установить LAMP:

   sudo apt-get install lamp-server^
 // then do more from here:
   //https://help.ubuntu.com/community/ApacheMySQLPHP
 // If you will run python services then : 
       apt-get install python-mysqldb 
//and for python 3 install: 
   sudo apt-get install python3-pip python-dev build-essential
   pip3.4 install mysqlclient  // for mysql       connection 
   sudo apt-get install build-essential python-dev libmysqlclient-dev

   pip3 install virtualenvwrapper
   sudo nano ~/.bash_profile
  //Set location of virtualenvs by pasting this in above: 
   export WORKON_HOME=$HOME/.virtualenvs 
   source /usr/local/bin/virtualenvwrapper.sh
//Reload startup file:
  source ~/.bash_profile
   mkvirtualenv -p /usr/bin/python3 myprojectenv
   workon myprojectenv
//then you can install packages you want using pip
//and copy myproject here

для развертывания приложения Django 1.7 на сервере Ubuntu 14.04 LTS с python3 и apache:

   sudo apt-get install libapache2-mod-wsgi-py3
 //then configure your apache virtualhosts( here our project is   //myproject    and environment is myprojectenv):

настроить виртуальный хост в режиме демона, который рекомендуется использовать:

<VirtualHost *:80>
    ServerName yourdomain.com
    ServerAdmin youradmin@yourdomain.com

    DocumentRoot /home/user/.virtualenvs/myprojectenv/public_html


    <Directory /home/user/.virtualenvs/myprojectenv/myproject/myproject>

     <Files wsgi.py>
     Require all granted
    </Files>
    </Directory>

    ErrorLog /home/user/.virtualenvs/myprojectenv/logs/error.log
    CustomLog /home/user/.virtualenvs/myprojectenv/logs/access.log  combined
    WSGIScriptAlias /  /home/user/.virtualenvs/myprojectenv/myproject/myproject/wsgi.py

    WSGIDaemonProcess myproject python- path=/home/user/.virtualenvs/myprojectenv/prisec:/home/user/.virtualenvs/m yprojectenv/lib/python3.4/site-packages

    WSGIProcessGroup myproject
    Alias /static /home/user/.virtualenvs/myprojectenv/public_html/static

    <Directory /home/user/.virtualenvs/myprojectenv/public_html/static>
     Require all granted
    </Directory>
     Alias /media
  /home/user/.virtualenvs/myprojectenv/public_html/media
       <Directory        /home/user/.virtualenvs/myprojectenv/public_html/media>
     Require all granted
    </Directory>

Перезапустить Apache . каталоги в файле конфигурации virtualhost должны существовать в созданной виртуальной среде.