gutocarvalho.net

Tecnologia, cotidiano e vida geek.

módulo puppetlabs-apache no centos 6 com php54 scl

| Comments

Se você viu o post anterior sobre pacotes do repositório SCL, e se você utiliza o Puppet para gerenciar seu apache e php, provavelmente deve estar pensando em como integrar as duas coisas.

O módulo puppetlabs-apache trabalha com o pacote php padrão do CentOS 6, neste caso esse php encontra-se na versão 5.3.3. Manter os dois PHPs no ambiente não é problema, o conflito só vai ocorrer no carregamento do php para uso do apache, o módulo puppetlabs-apache cria os arquivos /etc/httpd/conf.d/php5.conf e /etc/httpd/conf.d/php5.conf que fazem referência ao PHP 5.3.3 em seu sistema, isso vai conflitar com o arquivo php54.conf que o pacote php54-php cria no mesmo diretório.

Para resolver essa questão, a primeira coisa a fazer é a atualização do seu módulo puppetlabs-apache do puppet para versão mais recente, esta versão aceita parametrização nos módulos do apache, com ele poderemos passar como parâmetro o nome do pacote do php e o path para o arquivo .so que desejamos utilizar.

puppet module upgrade puppetlabs-apache

Depois disto remova a linha abaixo na configuração do seu node no puppet

include apache::mod::php

Agora adicione o bloco de código abaixo no lugar acertando corretamente os valores para os atributos package_name e path.

1
2
3
4
class {'apache::mod::php':
  package_name => "php54-php",
  path         => "/opt/rh/php54/root/usr/lib64/httpd/modules/libphp5.so",
}

Remova qualquer outro arquivo que carregue o php5 no diretório /etc/httpd/conf.d mantendo apenas php5.conf e php5.load que são gerenciados pelo puppet, rode o puppet no node diretamente.

puppet agent -t

Com isso seu puppet continua gerenciando os pacotes do apache e do php e você continua utilizando as versão 5.4 do PHP através do repositório SCL do CentOS.

[s]
Guto

Instalando PHP 5.4 com pacotes SCL do CentOS 6

| Comments

No CentOS existe um repositório chamado SCL (Software Collections) que nos oferece alguns conjuntos de pacotes de softwares em versões mais recentes para instalação em nosso CentOS 6, o PHP 5.4 é um deles.

Veja as coleções disponíveis no SCL

  • Ruby 1.9.3 (ruby193)
  • Python 2.7 (python27)
  • Python 3.3 (python33)
  • PHP 5.4 (php54)
  • Perl 5.16.3 (perl516)
  • Node.js 0.10 (nodejs010)
  • MariaDB 5.5 (mariadb55)
  • MySQL 5.5 (mysql55)
  • PostgreSQL 9.2 (postgresql92)

O SCL tem um funcionamento bastante particular, não basta apenas instalar o pacote é necessário saber utilizar o SCL para usar as versões mais novas de sofwares, acompanhe o passo a passo para entender o processo.

Para instalar esse repositório e habilitá-lo rode o comando abaixo

yum install centos-release-SCL

Depois de habilitar pesquise pelos pacotes que deseja instalar

yum search php54

Acompanhe a saída

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
============================================================ N/S Matched: php54 =============================================================
php54.x86_64 : Package that installs php54
php54-runtime.x86_64 : Package that handles php54 Software Collection.
php54-apc-panel.noarch : APC control panel
php54-build.x86_64 : Package shipping basic build configuration
php54-php.x86_64 : PHP scripting language for creating dynamic web sites
php54-php-bcmath.x86_64 : A module for PHP applications for using the bcmath library
php54-php-cli.x86_64 : Command-line interface for PHP
php54-php-common.x86_64 : Common files for PHP
php54-php-dba.x86_64 : A database abstraction layer module for PHP applications
php54-php-devel.x86_64 : Files needed for building PHP extensions
php54-php-enchant.x86_64 : Enchant spelling extension for PHP applications
php54-php-fpm.x86_64 : PHP FastCGI Process Manager
php54-php-gd.x86_64 : A module for PHP applications for using the gd graphics library
php54-php-imap.x86_64 : A module for PHP applications that use IMAP
php54-php-intl.x86_64 : Internationalization extension for PHP applications
php54-php-ldap.x86_64 : A module for PHP applications that use LDAP
php54-php-mbstring.x86_64 : A module for PHP applications which need multi-byte string handling
php54-php-mysqlnd.x86_64 : A module for PHP applications that use MySQL databases
php54-php-odbc.x86_64 : A module for PHP applications that use ODBC databases
php54-php-pdo.x86_64 : A database access abstraction module for PHP applications
php54-php-pear.noarch : PHP Extension and Application Repository framework
php54-php-pecl-apc.x86_64 : APC caches and optimizes PHP intermediate code
php54-php-pecl-apc-devel.x86_64 : APC developer files (header)
php54-php-pecl-memcache.x86_64 : Extension to work with the Memcached caching daemon
php54-php-pgsql.x86_64 : A PostgreSQL database module for PHP
php54-php-process.x86_64 : Modules for PHP script using system process interfaces
php54-php-pspell.x86_64 : A module for PHP applications for using pspell interfaces
php54-php-recode.x86_64 : A module for PHP applications for using the recode library
php54-php-snmp.x86_64 : A module for PHP applications that query SNMP-managed devices
php54-php-soap.x86_64 : A module for PHP applications that use the SOAP protocol
php54-php-tidy.x86_64 : Standard PHP module provides tidy library support
php54-php-xml.x86_64 : A module for PHP applications which use XML
php54-php-xmlrpc.x86_64 : A module for PHP applications which use the XML-RPC protocol

Depois podemos instalar o php54 e suas dependências conforme necessidade de seu projeto

yum install php54.x86_64 php54-php-ldap.x86_64 php54-php-gd.x86_64 php54-php-pear.noarch

Veja que se rodarmos o comando abaixo veremos que o php ainda continua na versão 5.3.

php -v

Acompanhe a saída

1
2
3
PHP 5.3.3 (cli) (built: Dec 11 2013 03:29:57)
Copyright (c) 1997-2010 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2010 Zend Technologies

Para utilizarmos um software SCL precisamos chamá-lo da seguinte forma

scl enable php54 "php -v"

Acompanhe a saída

1
2
3
PHP 5.4.16 (cli) (built: Dec 11 2013 16:55:27)
Copyright (c) 1997-2013 The PHP Group
Zend Engine v2.4.0, Copyright (c) 1998-2013 Zend Technologies

Contudo, caso deseje que o PHP54 seja realmente o PHP default de sua sessão rode este comando

source /opt/rh/php54/enable

Agora verifique

php -v

Acompanhe a saída

1
2
3
PHP 5.4.16 (cli) (built: Dec 11 2013 16:55:27)
Copyright (c) 1997-2013 The PHP Group
Zend Engine v2.4.0, Copyright (c) 1998-2013 Zend Technologies

Isso só vai valer para sua sessão portanto você precisa configurar suas variáveis de ambiente para chamar esse comando durante o logon ou inicialização de algum serviço.

No caso do apache tem um jeito mais fácil, podemos instalar o pacote abaixo

yum install php54-php.x86_64

Após instalar o pacote, remova os arquivo php5.conf e php5.load do diretório /etc/httpd/conf.d mantendo apenas o arquivo php54-php.conf neste diretório, após o ajuste reinicie o apache.

service httpd restart

Com isso você estará rodando seu site com o php 5.4.16 em seu CentOS 6 com pacotes oficiais.

[s]
Guto