LINUX.ORG.RU

Fedora 14 + Apache2 + mod_wsgi-3.3 + Python-3.2 - нужна Ваша помощь


0

1

Здравствуйте,
Недавно перешел на Linux (каких то 3-4 дня назад), и мой выбор пала на Fedora 14 – система хорошая, НО.
С момента выхода python 3.1, на Windows, использую именно 3-ю ветку для построения web-проектов, уж больно мне нравится ветка III. Установив Fedora 14, я обнаружил, что по умолчанию в ней установлен python 2.7 (насколько я понял, просто удалить его не получится – так как система использует это релиз в своих целях).

Пошел я следующим путем:

1. Скачал (http://python.org/ftp/python/3.2/Python-3.2.tgz) и установил python 3.2, во время конфигурирования, как полагается, используя:

./configure –enable-shared

а дальше все как положено.
2. Скачал и установил httpd-2.2.17, все по дефолту.
3. Сначала, по глупости видимо, установил mod_wsgi:
# yum install mod_wsgi

Все прошло на Ура.

Дальше создал проект, создал ВИСКИ интерфейс и попросил вывести в браузер версию Python, которая его обработала – как результат я увидел Python 2.7.
Я попытался изменить запуск по дефолту Python 2.7 на версию Python 3.2
# python –V
>>Python 2.7
# cd /usr/local.bin
# ln python3.2 python
# python –V
>>Python 3.2

Перезапустил сервер, и в ответ та же надпись в браузере: Python 2.7.

Ладно, подумал я – и закосил mod_wsgi:
# yum remove mod_wsgi

Все прошло на Ура.

Теперь я скачал исходники mod_wsgi http://code.google.com/p/modwsgi/downloads/detail?name=mod_wsgi-3.3.tar.gz и приступил к их установке, для начала поставил:
# yum install httpd-devel

Заблаговременно дописал в: /etc/httpd/conf/httpd.conf инструкцию погрузки mod_wsgi
…
LoadModule wsgi_module modules/mod_wsgi.so
…

Конечно, пока что оставил ее закомментированной.

И готов к установке mod_wsgi, сначала извлек из архива и:
# cd /root/Temp/mod_wsgi-3.3/

Да, может быть и важно, я сежу под root’om, после установки Fedora 14 я копонулся в файлах: /etc/pam.d/gdm и /etc/pam.d/gdm-password. Хотя я склонен считать что это не мешает некому. Потому продолжаем.
# ./configure –with-apxs=/usr/sbin/apxs –with-python=/usr/local/lib/python3.2

checking Apache version... 2.2.17
configure: creating ./config.status
config.status: creating Makefile


Makefile создан, продолжаю

# make


/usr/lib/apr -l/build/libtool --silent --mode=compile gcc -prefer-pic -02 -g -pipe -Wall -Wp, -D_FORTIFY_SOURCE2
[i]... (не знаю, как выгрузить содержимое консоли в файл, потому перекнопую вручную (сокращенно).) ...[/i]
mod_wsgi.c:135:20: фатальная ошибка: Python.h: Нет такого файла или каталога
Компиляция прервана.
apxs:Error: Command failed with rc=65536
.
make: *** [mod_wsgi.la] Ошибка 1


Вот, тут то и ошибка… ну, после этого, что я только с этим не делал.
Информацию брал из сообщества Ubuntu, так как редко встретишь описание на Fedora. (Хочу еще раз напомнить что под Linux я всего несколько дней).

И так вопрос: как, ну как, прикрутить Python 3.2 к Apache2 + mod_wsgi в Fedora 14.
Как видите, я искал, я не просто поднял это вопрос потому, что мне лень искать, а потому что я не знаю, что еще можно делать. Помогите!!!!!

(Вот в Windows все было просто, хотя и оказалось, что mod_wsgi самостоятельно не перезапускается при внесении изменений в проект – проблему удалось решить с помощью прямых рук и, разумеется, С++).
Просьба, при ответе учитывайте мой малый опыт работы с Линукс – что бы я потом не флудил. Заранее спасибо.

>Скачал и установил python 3.2

./configure –enable-shared


этим ты превратил сочную федору в слаку

./configure –with-apxs=/usr/sbin/apxs –with-python=/usr/local/lib/python3.2

make



и снова слака

--------no troll---------------

–with-python=/usr/local/lib/python3.2


у тебя есть папка /usr/local/lib/python3.2 ?
если нет - то надо поставить python3-devel
но так как у тебя питон не с репозитория, то и python3-devel ставь не с репы.

Donnie_Darko
()
Ответ на: комментарий от Donnie_Darko

а можно поинтересоваться под с фреймворком ты работаешь?
просто большинство фреймворков идет со своим собственным дев. сервером и такого геммора там нет.

Donnie_Darko
()

>Я попытался изменить запуск по дефолту Python 2.7 на версию Python 3.2

мне кажется, что зря ты это сделал.
если у тебя часть системы перестанет завтра функционировать - то не вини редхат в своих проблемах

Donnie_Darko
()
Ответ на: комментарий от Donnie_Darko

> а можно поинтересоваться под с фреймворком ты работаешь?
> просто большинство фреймворков идет со своим собственным дев. сервером и такого геммора там нет.

Когда работал на ветке 2.х – работал с Django. Сей час у меня «самописный» framework на ветке 3.х.

doorways
() автор топика
Ответ на: комментарий от Donnie_Darko


> мне кажется, что зря ты это сделал.
> если у тебя часть системы перестанет завтра функционировать - то не вини редхат в своих проблемах

Ну и что, зато узнаю что-то новое – гемор, зато не скучно.

doorways
() автор топика
Ответ на: комментарий от Donnie_Darko


> у тебя есть папка /usr/local/lib/python3.2 ?

- Да, есть конечно. Я вить ее для конфигурации использовал!
- Попробую установить python3-devel, о результатах отпишусь.

doorways
() автор топика
Ответ на: комментарий от Donnie_Darko

Скачал (ftp://rpmfind.net/linux/fedora/releases/14/Everything/i386/os/Packages/python3-devel-3.1.2-14.fc14.i686.rpm) и установил python3-devel.

Конфигурирую mod_wsgi так что бы он находил Python.h:

# cd /root/Temp/mod_wsgi-3.3/
# export CFLAGS=’-I/usr/local/include/python3.2m’
# export LDFLAGS=’-L/usr/local/lib/’
# ./configure –with-apxs=/usr/sbin/apxs –with-python=/usr/local/lib/python3.2
> …
# make
> …
> /usr/lib/apr-l/build/libtool –silent –mode=link gcc –o mod_wsgi.la –rpath /usr/lib/apr-l/httpd/modules –module –avoid-version mod_wsgi.lo –L/usr/local/lib/ -WL, -F –framework
> libtool: link: the ‘-framework’ option requires an argument
> libtool: link: Try ‘libtool –help –mode=link’ for more information.
> apxs:Error: Command failed with rc=65536
> .
> make: *** [mod_wsgi.la] ошибка 1

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

- я бы взял VirtualEnv - http://code.google.com/p/modwsgi/wiki/VirtualEnvironments

doorways
() автор топика
Ответ на: комментарий от Donnie_Darko

Верно говоришь, только python3-devel-3.2.х.х.fc14.x (для Fedora 14) я не нашел.. Нашел что то на подобии python3-devel-3.2.х.х.fc16.x (тоже для intel) но он не встал (дело плохо).

Да и решил послушать совет:
> этим ты превратил сочную федору в слаку

> и снова слака


И да, а что такое слака? На сколько я понял это Slackware Linux – так а чем плохо? (можно не отвечать на вопрос – он риторический). Изучу Linux, перейду на gentoo.

на сколько я понял, предложение заключается в том что бы ставить все через yum ?!
Попробую поставить Python-3.1.2 – если все заработает, буду обновлять до Python-3.2.х.
Если нет, будем дальше думать.

И чтобы нечего не помрачало – переустанавливаю Fedora 14 (так сказать – с чистого листа).
О результатах отпишусь.

doorways
() автор топика
Ответ на: комментарий от doorways

И так, пока что – переустановил Linux (Fedora 14) и:
Установка.
1. Устанавливаем python:

# yum install python3

2. Устанавливаем Apache:

# yum install httpd

3. Устанавливаем python3-devel:

# yum install python3-devel

4. Устанавливаем mod_wsgi:

# yum install mod_wsgi

Создаем пример:
1. Создаем каталог для хранения проекта:

# cd /var/www/html/
# mkdir abc.home
# cd abc.home

2. Создаем ВИСКИ приложение:

# vim application.wsgi
~
import sys

def app(environ, start_response):
    " ... "
    message = "You use Python %s" % sys.version[:3]
    start_response("200 OK", [("Content-Type", "text/html")])
    return [message]

application = app
~:w!;:q!

3. Настраиваем httpd.conf:

# vim /etc/httpd/conf/httpd.conf
~
...
# (добавим в конец файла).

NameVirtualHost *:80
Include /etc/httpd/conf/vhosts/abc.home.conf
~:w!;:q!

4. Создаем место хранения конфигураций:

# cd /etc/httpd/conf/
# mkdir vhosts
# cd vhosts
# vim abc.home.conf

~
<VirtualHost *:80>
	ServerName abc.home
	DocumentRoot /var/www/html/abc.home
	WSGIScriptAlias / /var/www/html/abc.home/application.wsgi
</VirtualHost>
~:w!;:q!

5. Активируем созданный проект:

# vim /etc/hosts
~
# (допишем в конец).
127.0.0.1   abc.home
~:w!;:q!

6. Запускаем сервер:

# /etc/init.d/httpd start
# /etc/init.d/httpd restart

7. Смотрим результат:

# firefox http://localhost

А ответ все же не тот, что хотелось бы: You use Python 2.7.
Нужно как то настроить mod_wsgi что бы он не использовал Python 2.7, а искал Python 3.1.2 (который сейчас установлен).
Ладно, копаем дальше…

doorways
() автор топика
Ответ на: комментарий от Donnie_Darko

>python3-devel

Это мэйтейнеры разделяют на runtime и -dev. Если он сам собрал, то все хедеры и тп уже на месте.

uzbl
()
Ответ на: комментарий от trashymichael

> говорили же что на тройке виски нет стандартов бла бла не работает короче, или я проспал?

Честно говоря, не знаю как в Linux (я новичок), но под WindoZ я работал с Apache+mod_wsgi+Python-3.2.

doorways
() автор топика
Ответ на: комментарий от uzbl

>Это мэйтейнеры разделяют на runtime и -dev. Если он сам собрал, то все хедеры и тп уже на месте.

Что то я не понял, не понял, что имеется ввиду – извините за тупость.

doorways
() автор топика
Ответ на: комментарий от doorways

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

trashymichael ★★★
()
Ответ на: комментарий от doorways

>4. Устанавливаем mod_wsgi:

Вот его придётся компилировать, указывая ему питон 3 через --with-python

Остальное пусть будет из пакетов.

P.S. А не проще ли тебе использоваться fastcgi с каким-нибудь nginx или lighttpd. Оно и быстрее, и удобнее апача, и, главное, никакого геморроя с компилянием не будет - просто запускаешь процесс нужным питоном и получаешь счастье.

Кстати, можно и с апачем fastcgi использовать, хоть это и пошло.

anonymous
()
Ответ на: комментарий от anonymous

UPD: если будешь собирать mod_wsgi, то лучше собери пакет, через srpm или как там в федоре, я забыл уже.

anonymous
()
Ответ на: комментарий от anonymous

> А не проще ли тебе использоваться fastcgi с каким-нибудь nginx или lighttpd.

Тут, видимо, дело привычки: мне нравится Apache и WSGI.

>> «4. Устанавливаем mod_wsgi:»

Вот его придётся компилировать, указывая ему питон 3 через --with-python


Так он тои вызывает проблему, я все смог либо скомпилировать из исходников, либо установить с реп’а, а вот только mod_wsgi не смог не как (точнее с реп’а смог, но не так как надо).
Сей час попробовал, когда все уже установлено, собрать с исходников только mod_wsgi (все тот же 3.3), сначала запустил так

# ./configure --with-python=/usr/lib/python3.1


да, python3.1 лежит в другой директории нежели 3.2.. ну то ладно. Ругнулся, мол давай мне команду на apxs. Ладно проверяю наличие apxs по старом пути /usr/sbin/apxsнет такого файла.

(Я вить систему переустановил с нуля, а этот файл толи создался, когда я компилировал httpd толи когда python (именно с исходников)).

Пытаюсь найти через поиск, так сказать, по всем каталогам – ноль.
Ладно… от байды вписал:
# yum install apxs

Что то качает, что то ставит…
Продолжение следует.

doorways
() автор топика
Ответ на: комментарий от anonymous

> если будешь собирать mod_wsgi, то лучше собери пакет, через srpm или как там в федоре, я забыл уже.
Ты уже забыл, а я еще не знаю что это, я вить только день в Linux. :)

doorways
() автор топика
Ответ на: комментарий от doorways

>Тут, видимо, дело привычки: мне нравится Apache и WSGI.

Дело привычки - это хорошо, но я таки рекомендую. У нас куча питоносайтов на разных фреймворках, и всё через FastCGI. Профита от апача в данном случае всё равно нет, его модули не так и нужны.

Ладно проверяю наличие apxs по старом пути /usr/sbin/apxs – нет такого файла.

В некоторых дистрибутивах разделяют скомпилированные файлы и файлы со всякими исходниками и дополнительными вещами. Для экономии места.

Обычно пакеты для сборки имеют суффикс -devel, в них и лежат хедеры и прочее. Вот тебе не хватает либо httpd-devel, либо ещё чего-то.

anonymous
()
Ответ на: комментарий от anonymous

> Обычно пакеты для сборки имеют суффикс -devel, в них и лежат хедеры и прочее. Вот тебе не хватает либо httpd-devel, либо ещё чего-то.
Вероятно, так как первый раз я его ставил (httpd-devel), а второй раз проигнорил и поставил python3-devel.
Сей час вернусь на Fedora, и попробую (я малость отошел – установил Linux Mint, где-то вычитал, что дистрибутив ВахСупер - авно полное, ну лично моетолько мое) мнение, возвращаюсь).

doorways
() автор топика
Ответ на: комментарий от anonymous

> имхо nginx + uwsgi лучше, но это сугубо мои сексуальные предпочтения

http://library.linode.com/web-servers/nginx/python-uwsgi/fedora-14

Почитав, совсем немного, о nginx – он меня заинтересовал. На сколько я понял, как web-сервер он не будет уступать Apche. Потому конечно я его поставлю. К томуже по указанной ссылке все расписано как не можно лучше.
Спасибо!.
Но так же, я попробую добить и эту тему.

Это тема ведется так же и на:
http://forum.sources.ru/index.php?showtopic=331224
http://www.fedoralinux.ru/forum/viewtopic.php?id=6507
Информация надана на правах рекламы :D :D :D

doorways
() автор топика
Ответ на: комментарий от doorways

>На сколько я понял, как web-сервер он не будет уступать Apche.

Естественно не будет. Сейчас вообще не принято приличные проекты хостить только на апаче. Как минимум в виде сервера для отдачи статики ставят nginx или lighttpd, потому что они значительно меньше жрут ресурсов.

В случае с пхп апач всё равно приходится ставить за nginx/lighty, потому что много софта сильно зависит от mod_php и всяких htaccess. А в случае питона апач становится уже немного лишним. Тут уже лучше взять FastCGI/SCGI или что-то типа упомянутого анонимусом uwsgi (впрочем, это и правда на любителя).

anonymous
()
Ответ на: комментарий от doorways

Установка и настройка Apache2 + mod_wsgi-3.2 + Python-3.1.2 в Fedora 14
Все работает, уже проверено.

Огромное спасибо: Donnie_Darko и anonymous.

Настройка входа в систему под root’ом.
Устанавливаю Fedora 14, захожу под пользователем, запускаю терминал:

# su -c "vim /etc/pam.d/gdm"

Ищем строку (возможно третья):
auth required pam_succeed_if.so user != root quiet

и заменяем ее на:
auth required pam_succeed_if.so user quiet

сохраняем, и открываем:

# su -c "vim /etc/pam.d/gdm-password"

ищем строку
auth required pam_succeed_if.so user != root quiet

комментируем ее, устанавливаем в начале строки символ (#).
#auth required pam_succeed_if.so user != root quiet

сохраняем.
Выполняем перезагрузку:
# reboot now

Входим под root’ом.
Кто не хочет сидеть под root – используйте команду «su» для выполнения админских команд.

# yum install python3
# yum install httpd
# yum install python3-devel
# yum install httpd-devel
# yum install gcc

mod_wsgi-3.3 был скачан с http://code.google.com/p/modwsgi/downloads/detail?name=mod_wsgi-3.3.tar.gz, и распакован в /root/Temp/mod_wsgi-3.3.
# cd /root/Temp/mod_wsgi-3.3
# ./configure --with-apxs=/usr/sbin/apxs --with-python=/usr/bin/python3.1
# make
# make install

Дописываем в: /etc/httpd/conf/httpd.conf:

~
...
LoadModule wsgi_module modules/mod_wsgi.so
...
NameVirtualHost *:80
Include /etc/httpd/conf/vhosts/abc.home.conf
~:w!;:q!

Создаем каталог для хранения проекта и ВИСКИ приложение:

# cd /var/www/html/
# mkdir abc.home
# cd abc.home
# vim application.wsgi
~
import sys
 
def app(environ, start_response):
    " ... "
    message = "You use Python %s" % sys.version[:3]
    start_response("200 OK", [("Content-Type", "text/html")])
    return [message]
 
application = app
~:w!;:q!

Создаем место хранения конфигураций:

# cd /etc/httpd/conf/
# mkdir vhosts
# cd vhosts
# vim abc.home.conf
 
~
<VirtualHost *:80>
    ServerName abc.home
    DocumentRoot /var/www/html/abc.home
    WSGIScriptAlias / /var/www/html/abc.home/application.wsgi
</VirtualHost>
~:w!;:q!

Активируем созданный проект:

# vim /etc/hosts
~
...
127.0.0.1   abc.home
~:w!;:q!

Запускаем сервер и cмотрим результат:

# /etc/init.d/httpd start
# firefox http://localhost

В ответ долгожданный: You use Python 3.1

Всем ОГРОМНОЕ спасибо.
ТЕМА ЗАКРЫТА!!!
Все обсуждения Вы можете прочесть на:
http://www.fedoralinux.ru/forum/viewtopic.php?pid=16966#p16966
http://forum.sources.ru/index.php?showtopic=331224&st=0&#entry2888206

doorways
() автор топика
Ответ на: комментарий от doorways

>Входим под root’ом.

Только никогда так больше не делай.

Максимум su, а лучше - sudo. Иначе когда-нибудь случится плохое.

И, пока ты не перестанешь сидеть под рутом, ни в коем случае не запускай «строчку на перле».

anonymous
()
Ответ на: комментарий от ktk

> за работу от рута вообще расстреливать надо.

что за Windows way ?


Осторожно с рекомендациями, я вить тоже стрелять умею, могу кому-то что-то и отстрелить.
А работать или нет с под рута дело личное. Я немного почитал буков — и сделал для себя такой вот выбор. ТОЧКА.

doorways
() автор топика
Ответ на: комментарий от doorways

>А работать или нет с под рута дело личное.

Такое же личное, как личная гигиена. Почему-то никто не любит ходить грязным, а под рутом работают без зазрения совести. Странные люди.

Я немного почитал буков — и сделал для себя такой вот выбор. ТОЧКА.

Очень зря. Впрочем, ваш выбор - ваши проблемы. Одним неграмотным пользователем больше.

anonymous
()
Ответ на: комментарий от anonymous

> Максимум su, а лучше - sudo. Иначе когда-нибудь случится плохое.
Плохое случается у домохозяек и таких же новичков как и я. Но я разберусь уж точно.
Еще раз, всем спасибо.

doorways
() автор топика
Ответ на: комментарий от anonymous

> Одним неграмотным пользователем больше.
А Вы сразу так и научились ходить, говорить и ругаться матом?!
ДА, Я НОВИЧОК, но посмотрите на название поста... А с этим я как нить сам решу, что есть грамотно, а что безграмотно.
Конечно, за рекомендации спасибо.

doorways
() автор топика
Ответ на: комментарий от doorways

Да, я еще раз пересмотрел мнение работы из под рута. К примеру понравился пост: http://linuxforum.ru/viewtopic.php?id=2083
Например высказывания:
Writer: > Был такой дистр Linspire, там по дефолту был root. Никаких страшных последствий не было.
Или
drBatty: в православной Slackware тоже рут. и никаких вопросов нет, вроде «сделайте нового юзера, типа так надо». Просто Патрег делал дистр не для идиотов новичков...

Я вот ставил Мандриву — так там тоже вход из под рута — без проблем. А вот например во FreeBSD, хоть и необходимо создать второго пользователя (иначе не как не удается поднять GNOME), но работа из под рута, иначе смысла нет - сервер подымать с под пользователя :D.
Так что да, я Линукс поставил как альтернативу ВиндовЗ, и в частности хочу его использовать и как Десктоп и как ВоркСтейшин, собственно говоря есть над чем подумать. Если я где то был местами груб — извините, (но мне по%), я упертый.

doorways
() автор топика
Ответ на: комментарий от doorways

Первое правило форума:
> Воздержитесь от развития дискуссии вне изначальной темы.
ТЕМА ЗАКРЫТА, Всем спасибо, решение найдено!

doorways
() автор топика
Ответ на: комментарий от doorways

дело в том что некоторый софт из-под рута не работает
когда-то рано или поздно ты что-то не то запустишь и будешь рвать волосы на голове
в нормальных дистрах еще в начале 21 века под рутом десктоп был красным, пол софта отпадало и режим этот использовался исключительно для администрирования, но не для работы повседневной
впрочем, дело твое, удачных граблей, чем быстрее случится вырывание волос тем лучше для тебя

trashymichael ★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.