Как использовать Python 3 и Django с Apache? - PullRequest
10 голосов
/ 09 мая 2011

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

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

Ответы [ 5 ]

14 голосов
/ 09 мая 2011

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

11 голосов
/ 01 марта 2014

Эти ответы больше не верны для 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/+archive/deadsnakes

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

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

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

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

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

sudo apt-get install apache2 apache2-threaded-dev

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

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

У меня не было проблем с настройкой, сборкой или установкой. Убедитесь, что вы скомпилировали его в вашей среде, активированной 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

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

5 голосов
/ 09 мая 2011

Вы не можете снять python3 с django.Из Django FAQ: 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 и должен выполняться постепенно).2.x релизы будут поддерживаться и снабжаться исправлениями ошибок и обновлениями безопасности командой разработчиков Python, поэтому дальнейшее использование релиза Python 2.x во время перехода не должно представлять какого-либо риска.

3 голосов
/ 18 марта 2017

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

gedit myproject/settings.py

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

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

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

./manage.py collectstatic

Вам нужно будет подтвердить операцию.Статические файлы будут помещены в каталог, называемый статическим, в каталоге вашего проекта.

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

sudo apt-get install libapache2-mod-wsgi sudo a2enmod wsgi вам потребуется адаптер mod-wsgi.

4) В нижней части файла /etc/apache2/sites-available/000-default.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.

2 голосов
/ 16 апреля 2015

Я столкнулся с подобной проблемой, и вот как я ее решил: Для установки лампы:

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

...