LinuxForum.Fans
Тема

Установка apache2.4 + PHP5.6 (либо Сборка PHP 5.6.1 и проблема в SPEC)

Автор: ufomen 14 сообщений 4597 просмотров
17.10.2014 00:57 · отредактировано #396976

Доброго времени суток. Немного изменил начальное описание проблемы...
Система Centos 6.5 64bit

Задача - Установить последние версии Apache 2.4 и PHP5.6 (на сегодняшний день это apache 2.4.10 и PHP 5.6.1) и подружить их между собой. На текущий момент времени не получилось найти в репозиториях пакеты апача версии 2.4.10 и php версии 5.6.1 которые "дружили" бы друг с другом. По этой причине решено было собирать...

очень мало занимался сборками, а тем более сборками RPM без spec файлов. Но сейчас пришло время заняться.

Прошу помощи в понимании системы сорсов и патчей в SPEC файле.
Исходные данные, есть скачанные с официального сайта PHP исходники http://ru2.php.net/get/php-5.6.1.tar.gz/from/this/mirror
Spec файла внутри этих исходников для сборки RPM пакета нет.

Нашел его пример внутри php-5.6.1-1.fc21.src.rpm Казалось бы, бери смотри, если нужно правь и пользуй, но как-то смущает набор сорцов и патчей...

text
# Need to download official tarball and strip non-free stuff
# wget http://www.php.net/distributions/php-%{version}%{?rcver}.tar.xz
# ./strip.sh %{version}
Source0: php-%{version}%{?rcver}-strip.tar.xz
Source1: php.conf
Source2: php.ini
Source3: macros.php
Source4: php-fpm.conf
Source5: php-fpm-www.conf
Source6: php-fpm.service
Source7: php-fpm.logrotate
Source8: php-fpm.sysconfig
Source9: php.modconf
Source10: php.ztsmodconf
Source11: strip.sh
Source13: nginx-fpm.conf
Source14: nginx-php.conf
# Configuration files for some extensions
Source50: opcache.ini
Source51: opcache-default.blacklist

# Build fixes Patch5: php-5.2.0-includedir.patch Patch6: php-5.2.4-embed.patch Patch7: php-5.3.0-recode.patch Patch8: php-5.4.7-libdb.patch

# Fixes for extension modules # https://bugs.php.net/63171 no odbc call during timeout Patch21: php-5.4.7-odbctimer.patch

# Functional changes Patch40: php-5.4.0-dlopen.patch Patch42: php-5.3.1-systzdata-v10.patch # See http://bugs.php.net/53436 Patch43: php-5.4.0-phpize.patch # Use -lldap_r for OpenLDAP Patch45: php-5.4.8-ldap_r.patch # Make php_config.h constant across builds Patch46: php-5.4.9-fixheader.patch # drop "Configure command" from phpinfo output Patch47: php-5.4.9-phpinfo.patch

# Upstream fixes (100+) Patch100: php-bug68074.patch

# Security fixes (200+)

# Fixes for tests (300+) # Revert changes for pcre < 8.34 Patch301: php-5.6.0-oldpcre.patch # see https://bugzilla.redhat.com/971416 Patch302: php-5.6.0-noNO.patch

Что-то я не могу понять зачем применять патчи php-5.2.0-includedir.patch к исходникам php-5.6.1.tar.gz
Не уж то там все еще нет этих исправлений и их нужно все еще вбивать туда патчем?...
или spec для src.rpm и spec для чистой сборки это разные вещи? Если да, то где нарыть правильный spec для сборки?

Предваряя ответы по поводу rpmbuild --rebuild оно падает с совершенно неясной ошибкой... make install из исходников вроде проходит нормально, но хочется RPM для установки на другие машины,
REMI собрали этот PHP но их сборка не дружит с последним APACHE 2.4.10, а требования именно такие...

17.10.2014 09:20 #396988

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

17.10.2014 10:37 · отредактировано #396998
Marley написал:
Извините за вопрос не по теме.
Вы собираетесь поучиться собирать rpm пакеты или вы не знаете где взять уже скомпилированные?

Отвечаю:
У меня на текущий момент времени не получилось найти в репозиториях пакеты апача версии 2.4.10 и php версии 5.6.1 которые "дружили" бы друг с другом, например тот же пакет php от remi требует apache 2.15.x и не желает работать с 2.4.10 если подскажете как установить именно эти версии ПО работающие друг с другом без сборки при помощи yum install и доп. репозиториев буду очень благодарен. У меня не вышло.
В связи с чем, возникла потребность собрать или пересобрать php 5.6.1 под "свои нужды" апач пересобирается без вопросов, потому как имеет готовый spec, php готового spec не имеет, он создается после выполнения configure с необходимыми параметрами, но получается "недоделанный" и доделать его правильно у меня не вышло.
При помощи make install все устанавливается корректно, но это не правильный для RPM based путь, т.к. при последующем желании обновить версии пакетов можно получить множество геморроя.

17.10.2014 10:53 #397000

Вот как я последний раз ставил.
Может месяц тому назад.

text

// В стандартном репо и в EPEL пока такой версии нет, поэтому # rpm -Uvh http://mirror.webtatic.com/yum/el6/latest.rpm

# yum install -y php56w # yum install -y php56w-pdo # yum install -y php56w-cli # yum install -y php56w-xml # yum install -y php56w-mbstring # yum install -y php56w-intl # yum install -y php-posix

# yum install -y php56w-pecl-xdebug

// APC (accelerator) # yum install -y php56w-opcache

# php --version PHP 5.6.0 (cli) (built: Aug 28 2014 19:25:44) Copyright (c) 1997-2014 The PHP Group Zend Engine v2.6.0, Copyright (c) 1998-2014 Zend Technologies with Zend OPcache v7.0.4-dev, Copyright (c) 1999-2014, by Zend Technologies with Xdebug v2.2.5, Copyright (c) 2002-2014, by Derick Rethans

С remi у меня тоже не заработало из коробки и я не стал разбираться почему.
С webtatic заработало.

17.10.2014 11:27 · отредактировано #397005
Marley написал:
Вот как я последний раз ставил.
Может месяц тому назад.
text

// В стандартном репо и в EPEL пока такой версии нет, поэтому # rpm -Uvh http://mirror.webtatic.com/yum/el6/latest.rpm

# yum install -y php56w # yum install -y php56w-pdo # yum install -y php56w-cli # yum install -y php56w-xml # yum install -y php56w-mbstring # yum install -y php56w-intl # yum install -y php-posix

# yum install -y php56w-pecl-xdebug

// APC (accelerator) # yum install -y php56w-opcache

# php --version PHP 5.6.0 (cli) (built: Aug 28 2014 19:25:44) Copyright (c) 1997-2014 The PHP Group Zend Engine v2.6.0, Copyright (c) 1998-2014 Zend Technologies with Zend OPcache v7.0.4-dev, Copyright (c) 1999-2014, by Zend Technologies with Xdebug v2.2.5, Copyright (c) 2002-2014, by Derick Rethans

С remi у меня тоже не заработало из коробки и я не стал разбираться почему.
С webtatic заработало.

Спасибо, сейчас как раз пробую. Апача 2.4.x в этом репозитории нет, откуда его устанавливали?

text
[root@webatic ~]# yum list --showduplicates httpd
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
 * base: mirror.majorhost.net
 * extras: mirror.majorhost.net
 * updates: mirror.corbina.net
 * webtatic: uk.repo.webtatic.com
Available Packages
httpd.x86_64                                                                           2.2.15-29.el6.centos                                                                            base
httpd.x86_64                                                                           2.2.15-30.el6.centos                                                                            updates
httpd.x86_64                                                                           2.2.15-31.el6.centos                                                                            updates

к тому же похоже что этот PHP тоже требует апача версии 2.2.X

text

[root@webatic ~]# yum deplist php56w |grep httpd
  dependency: httpd-mmn = 20051115
   provider: httpd.x86_64 2.2.15-29.el6.centos
   provider: httpd.x86_64 2.2.15-30.el6.centos
   provider: httpd.x86_64 2.2.15-31.el6.centos
  dependency: httpd
   provider: httpd.x86_64 2.2.15-29.el6.centos
   provider: httpd.x86_64 2.2.15-30.el6.centos
   provider: httpd.x86_64 2.2.15-31.el6.centos
17.10.2014 13:05 #397010
Marley написал:
Для проекта нужен был PHP версии 5.4 и выше.
Последних версий apache не требовалось.

===========
Может быть эта статься подойдет.
http://developerblog.redhat.com/2013/10/24/apache-httpd-2-4-on-red-hat-enterprise-linux-6/

Увы не помогла, установить апач 2.4.10 я могу. Проблема подружить его с имеющимися в различных репозиториях сборках PHP 5.6 потому как все они собираются для апача 2.2
Выходит что нужно собирать PHP под это дело самостоятельно, только вот ПРАВИЛЬНО это сделать пока не выходит...
Все еще нужна помощь. Либо пинок в правильном направлении.

17.10.2014 13:12 #397011

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

1) просто собрать из исходников
2) в remi есть этот пакет
3) под 5.6 spec файлом не помогу, т.к. В продакшене использую пока еще 5.5. Но попробуйте в том spec файле закоментить "левые" патчи и попробуйте собрать пакет. Для сборки они не нужны.

17.10.2014 13:25 · отредактировано #397014
beliy написал:
Уточните пожалуйста конечные цели:
- просто собрать что б работала данная связка на конкретном сервере возможно с нестандартными настройками
- найти репозиторий с данной связкой
- пакеты имеют много нестандартных параметров и патчей, которые нужно ставить на большое количество и нужно создать свой репозиторий

1) просто собрать из исходников
2) в remi есть этот пакет
3) под 5.6 spec файлом не помогу, т.к. В продакшене использую пока еще 5.5. Но попробуйте в том spec файле закоментить "левые" патчи и попробуйте собрать пакет. Для сборки они не нужны.

Цель
установить самые последние STABLE версии apache + php (На текущий момент на официальных сайтах указаны версии apache 2.4.10 и PHP 5.6.1)
Естественно хочется сделать это как можно более простым и естественным путем, чтобы иметь возможность в последующем легко обновляться при необходимсти и не получить еще какими либо граблями по носу... Как итог собирать все это дело самостоятельно хотелось бы в случае сели другого пути не будет.
Как в remi так и webtatic собрали распоследние версии php с зависимостью от apache 2.2 сборку под 2.4 мне пока найти не удается.
Апач как я уже и говорил собирается очень легко, т.к. имеет spec от разработчиков. В исходниках PHP spec файла изначально нет, при ./configure с нужными параметрами, он создает увы достаточно пустой spec (а я уж было обрадовался) который я не смог заставить принять rpmbuild без ругани, со spec дернутым из remi тоже не собирается. Make install отрабатывает и ставит все что необходимо, но это тупиковый путь.

17.10.2014 13:38 #397015
"ufomen" написал:
Как в remi так и webtatic собрали распоследние версии php с зависимостью от apache 2.2

в php впихнули зависимость от жирного индейца? А если я захочу например поставить php и nginx из репо? Бред... мож наоборот или просто в репозитории есть только apache 2.2? Данная зависимость не логична.

"ufomen" написал:
Make install отрабатывает и ставит все что необходимо, но это тупиковый путь.

Если на 1-2 сервера то это быстрее и ничем не хуже чем собирать для него же пакеты;) А порты у BSD систем как ни странно работают по "тупиковому" принципу)

Если серверов очень много то уже писал

"beliy" написал:
попробуйте в том spec файле закоментить "левые" патчи и попробуйте собрать пакет

Должно норм собраться, тот файл скорее всего больше для примера и его содержимое может переноситься без изменений из версии в версию.

17.10.2014 14:02 · отредактировано #397016
beliy написал:
[quote="ufomen"]Как в remi так и webtatic собрали распоследние версии php с зависимостью от apache 2.2

в php впихнули зависимость от жирного индейца? А если я захочу например поставить php и nginx из репо? Бред... мож наоборот или просто в репозитории есть только apache 2.2? Данная зависимость не логична.

"ufomen" написал:
Make install отрабатывает и ставит все что необходимо, но это тупиковый путь.

Если на 1-2 сервера то это быстрее и ничем не хуже чем собирать для него же пакеты;) А порты у BSD систем как ни странно работают по "тупиковому" принципу)

Если серверов очень много то уже писал

"beliy" написал:
попробуйте в том spec файле закоментить "левые" патчи и попробуйте собрать пакет

Должно норм собраться, тот файл скорее всего больше для примера и его содержимое может переноситься без изменений из версии в версию.[/quote]

1) Если я правильно понял, в зависимости там модуль который обеспечивает саму связку апача с php "php5_module", который представлен либой libphp5.so. При установке пакетов он ВИДИМО проверяет, что апач стоит, и как бы модуль устанавливать нужно, но апач для него странной версии... после чего он говорит извиняй чувак "гранаты у тебя не той системы" (Кстати для апача 2.4 рекомендуют использовать PHP-FPM)

2) Ну да, в BSD сборка из портов это обычное дело, но тут все же RPM-based дистрибутив...

3) Не собирает. Буду ковырять конечно почему, но пока тяжело.
С самописным spec который съест rpmbuild собранный пакет скорее всего будет кривым, и нормально потом не обновится ввиду отсутствия необходимых на этот счет инструкций по обновлению, об этом тоже подумать нужно... А то "потомки"или я сам в будущем буду на себя нехорошего гневаться :)


Кстати к вопросу о зависимостях ;)
Сейчас только попробовал накатить "чистоганом" из webtatic один пакет php56w и в деапх он тянет "httpd x86_64 2.2.15-31.el6.centos" как-то так :)

text
]# yum install php56w.x86_64
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
 * base: mirror.majorhost.net
 * extras: mirror.majorhost.net
 * updates: mirror.corbina.net
 * webtatic: uk.repo.webtatic.com
Setting up Install Process
Resolving Dependencies
--> Running transaction check
---> Package php56w.x86_64 0:5.6.1-1.w6 will be installed
--> Processing Dependency: php56w-common(x86-64) = 5.6.1-1.w6 for package: php56w-5.6.1-1.w6.x86_64
--> Processing Dependency: php56w-cli(x86-64) = 5.6.1-1.w6 for package: php56w-5.6.1-1.w6.x86_64
--> Processing Dependency: php56w-cli = 5.6.1-1.w6 for package: php56w-5.6.1-1.w6.x86_64
--> Processing Dependency: httpd-mmn = 20051115 for package: php56w-5.6.1-1.w6.x86_64
--> Processing Dependency: httpd for package: php56w-5.6.1-1.w6.x86_64
--> Running transaction check
---> Package httpd.x86_64 0:2.2.15-31.el6.centos will be installed
--> Processing Dependency: httpd-tools = 2.2.15-31.el6.centos for package: httpd-2.2.15-31.el6.centos.x86_64
--> Processing Dependency: apr-util-ldap for package: httpd-2.2.15-31.el6.centos.x86_64
--> Processing Dependency: /etc/mime.types for package: httpd-2.2.15-31.el6.centos.x86_64
--> Processing Dependency: libaprutil-1.so.0()(64bit) for package: httpd-2.2.15-31.el6.centos.x86_64
--> Processing Dependency: libapr-1.so.0()(64bit) for package: httpd-2.2.15-31.el6.centos.x86_64
---> Package php56w-cli.x86_64 0:5.6.1-1.w6 will be installed
---> Package php56w-common.x86_64 0:5.6.1-1.w6 will be installed
--> Running transaction check
---> Package apr.x86_64 0:1.3.9-5.el6_2 will be installed
---> Package apr-util.x86_64 0:1.3.9-3.el6_0.1 will be installed
---> Package apr-util-ldap.x86_64 0:1.3.9-3.el6_0.1 will be installed
---> Package httpd-tools.x86_64 0:2.2.15-31.el6.centos will be installed
---> Package mailcap.noarch 0:2.1.31-2.el6 will be installed
--> Finished Dependency Resolution

Dependencies Resolved

============================================================================================================================================================================================== Package Arch Version Repository Size ============================================================================================================================================================================================== Installing: php56w x86_64 5.6.1-1.w6 webtatic 2.5 M Installing for dependencies: apr x86_64 1.3.9-5.el6_2 base 123 k apr-util x86_64 1.3.9-3.el6_0.1 base 87 k apr-util-ldap x86_64 1.3.9-3.el6_0.1 base 15 k httpd x86_64 2.2.15-31.el6.centos updates 824 k httpd-tools x86_64 2.2.15-31.el6.centos updates 73 k mailcap noarch 2.1.31-2.el6 base 27 k php56w-cli x86_64 5.6.1-1.w6 webtatic 2.4 M php56w-common x86_64 5.6.1-1.w6 webtatic 1.2 M

Transaction Summary ============================================================================================================================================================================================== Install 9 Package(s)

Total download size: 7.3 M Installed size: 28 M Is this ok [y/N]:

17.10.2014 15:04 #397019
"ufomen" написал:
Если я правильно понял, в зависимости там модуль который обеспечивает саму связку апача с php "php5_module", который представлен либой libphp5.so. При установке пакетов он ВИДИМО проверяет, что апач стоит, и как бы модуль устанавливать нужно, но апач для него странной версии... после чего он говорит извиняй чувак "гранаты у тебя не той системы"

Ситуация никак не знакома, возможно потому что для себя давно похоронил интейца. Тот же nginx детскими болезнями не болеет и там совместимость с любыми версиями из коробки. :)

"ufomen" написал:
Кстати для апача 2.4 рекоммендуют использовать PHP-FPM

И не только для апача - он уже давно стал стандартом для тех кто хочет рационально расходовать память сервера как собственно и отказ от морально устаревшего жирного индейца. :)

"ufomen" написал:
Ну да, в BSD сборка из портов это обычное дело, но тут все же RPM-based дистрибутив

И что из-за этого лучше собирать rpm пакет для 1 сервера чем установить из исходников? Где выигрыш?) Другое дело если обслуживаемых систем сотни и пакеты из стандартных репо не подходят, в силу каких либо причин. Тогда без собственного репозитория сложновато.

"ufomen" написал:
С самописным spec который съест rpmbuild собранный пакет скорее всего будет кривым, и нормально потом не обновится ввиду отсутствия необходимых на этот счет инструкций по обновлению, на этот счет тоже подумать нужно... А то "потомки"или я сам в будущем буду на себя нехорошего гневаться ab

Подойдите ответственно к этому вопросу и соберите spec согласно документациям и не будет проблем ни у вас ни у потомков.

17.10.2014 15:08 · отредактировано #397020
"ufomen" написал:
пакет php56w

Может приставка w там не стпроста? :)
Они гвощдями его туда прибили походу.

Contained in the php56w package, this SAPI integrates into Apache Httpd 2.2.

Возможно не зря я никогда не пользовался этим репозиторием)
С remi чистая установка тоже тянет апач?

17.10.2014 16:04 · отредактировано #397022

Ну что ж я получил ответ от REMI
http://forums.famillecollet.com/viewtopic.php?pid=7316

With apache 2.4.10 you don't need php package (mod_php) simply use php-fpm and take benefit of SetHandler to proxy [1]
Else you need to also rebuild PHP.
Notice: it will have be simpler to installe a fresh CentOS 7 which already have httpd 2.4.

Those patches are old, yes, but still needed.

[1] http://blog.famillecollet.com/post/2014/03/28/PHP-FPM-and-HTTPD-2.4-improvement

и еще ccылка
http://blog.famillecollet.com/post/2012/04/02/PHP-FPM-and-HTTPD-2.4
https://wiki.apache.org/httpd/PHP-FPM

Щас будем разбираться ;)

Войдите или зарегистрируйтесь, чтобы ответить.