Как использовать 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 должны существовать в созданной виртуальной среде.