CentOS6.5の初期設定をやろう~その3-LAMPを入れよう(PHP5.5.7を動かす)

Apache2.4.7のデフォルトMPMで動かしPHP 5.5.7を動かす(仮)
PHPを使いたい場合ApacheはPreforkでつかえ(旧)な資料ばかり
いざ入れるとなるとオフィシャルの資料も・・・ん?なので備忘録

お世話になったところ
http://www.kakiro-web.com/linux/php-install.html
http://blog.loadlimits.info/2013/08/ubuntu%E3%81%A7apache-2-4-6event-mpmphp-5-4fastcgi%E3%82%92%E4%BD%BF%E3%81%86/
http://ja.phptherightway.com/


依存関係
Apacheは2.4系入れたので2.2系でビルドされている普通のリポジトリ提供のパッケージは使えないようで
自分のとこの環境に合わせてビルドしなおさないといけないっぽい
なお、毎度おなじみのremiよりソースもらってきて入れる

postfixまたはsendmailを入れる(rootメール読めるように設定済みなので割愛)
その他
# yum -y install libcurl-devel bzip2-devel pam-devel libedit-devel libtool-ltdl-devel \
systemtap-sdt-devel libc-client-devel net-snmp-devel t1lib-devel gmp-devel gdbm-devel \
tokyocabinet-devel libtidy-devel recode-devel

以下のはバージョン縛りあり
libxslt-devel >= 1.0.18
aspell-devel >= 0.50.0
enchant-devel >= 1.2.4
でもbaseでいけるっぽいのでそのまま入れる
# yum -y install libxslt-devel aspell-devel enchant-devel

# yum --enablerepo=epel install firebird-devel libmcrypt-devel
# yum --enablerepo=remi install gd-last-devel libicu-last-devel

# mkdir /usr/local/src/php
# cd /usr/local/src/php
# wget http://rpms.famillecollet.com/SRPMS/php-5.5.7-1.remi.src.rpm
# rpmbuild --rebuild --clean php-5.5.6-1.remi.src.rpm

しかしエラーで落ちるので
以下修正
# vim /root/rpmbuild/SPEC/php-55.spec
%{!?_httpd_apxs: %{expand: %%global _httpd_apxs %%{_sbindir}/apxs}}

%{!?_httpd_apxs: %{expand: %%global _httpd_apxs %%{_bindir}/apxs}}

リトライ
# cd /root/rpmbuild/SPEC
# rpmbuild -bb --clean php55.spec

# cd /root/rpmbuild/RPMS/x86_64/
# ls
php-5.5.7-1.el6.x86_64.rpm php-mbstring-5.5.7-1.el6.x86_64.rpm
php-bcmath-5.5.7-1.el6.x86_64.rpm php-mcrypt-5.5.7-1.el6.x86_64.rpm
php-cli-5.5.7-1.el6.x86_64.rpm php-mssql-5.5.7-1.el6.x86_64.rpm
php-common-5.5.7-1.el6.x86_64.rpm php-mysqlnd-5.5.7-1.el6.x86_64.rpm
php-dba-5.5.7-1.el6.x86_64.rpm php-odbc-5.5.7-1.el6.x86_64.rpm
php-debuginfo-5.5.7-1.el6.x86_64.rpm php-opcache-5.5.7-1.el6.x86_64.rpm
php-devel-5.5.7-1.el6.x86_64.rpm php-pdo-5.5.7-1.el6.x86_64.rpm
php-embedded-5.5.7-1.el6.x86_64.rpm php-pgsql-5.5.7-1.el6.x86_64.rpm
php-enchant-5.5.7-1.el6.x86_64.rpm php-process-5.5.7-1.el6.x86_64.rpm
php-fpm-5.5.7-1.el6.x86_64.rpm php-pspell-5.5.7-1.el6.x86_64.rpm
php-gd-5.5.7-1.el6.x86_64.rpm php-recode-5.5.7-1.el6.x86_64.rpm
php-gmp-5.5.7-1.el6.x86_64.rpm php-snmp-5.5.7-1.el6.x86_64.rpm
php-imap-5.5.7-1.el6.x86_64.rpm php-soap-5.5.7-1.el6.x86_64.rpm
php-interbase-5.5.7-1.el6.x86_64.rpm php-tidy-5.5.7-1.el6.x86_64.rpm
php-intl-5.5.7-1.el6.x86_64.rpm php-xml-5.5.7-1.el6.x86_64.rpm
php-ldap-5.5.7-1.el6.x86_64.rpm php-xmlrpc-5.5.7-1.el6.x86_64.rpm

インストール(要注意)
依存がどえらく面倒に絡まり合ってるので出来た玉から順番に依存関係無視で放り込んでいく
# rpm -Uvh --nodeps php-5.5.7-1.el6.x86_64.rpm php-cli-5.5.7-1.el6.x86_64.rpm \
php-common-5.5.7-1.el6.x86_64.rpm php-devel-5.5.7-1.el6.x86_64.rpm \
php-xml-5.5.7-1.el6.x86_64.rpm php-process-5.5.7-1.el6.x86_64.rpm

php-pearのインストール
http://rpms.famillecollet.com/SRPMS/repoview/php-pear.htmlから最新のバージョンのリンクをゲット
# cd /usr/local/src/php
# wget http://rpms.famillecollet.com/SRPMS/php-pear-1.9.4-23.remi.src.rpm
# ls /var/lib/pear ←なければOK。あったら削除
# rpmbuild --rebuild --clean php-pear-1.9.4-23.remi.src.rpm
# rpm -Uvh /root/rpmbuild/RPMS/noarch/php-pear-1.9.4-23.el6.noarch.rpm

php-pecl-jsoncのインストール
# wget http://rpms.famillecollet.com/SRPMS/php-pecl-jsonc-1.3.3-1.remi.src.rpm
# rpmbuild --rebuild --clean php-pecl-jsonc-1.3.3-1.remi.src.rpm
# cd /root/rpmbuild/RPMS/x86_64
# rpm -Uvh php-pecl-jsonc-1.3.3-1.el6.5.5.x86_64.rpm php-pecl-jsonc-devel-1.3.3-1.el6.5.5.x86_64.rpm

php-pecl-zipのインストール
# cd /usr/local/src/php
# wget http://rpms.famillecollet.com/SRPMS/php-pecl-zip-1.12.3-1.remi.src.rpm
# rpmbuild --rebuild --clean php-pecl-zip-1.12.3-1.remi.src.rpm
# rpm -Uvh /root/rpmbuild/RPMS/x86_64/php-pecl-zip-1.12.3-1.el6.5.5.x86_64.rpm


その他
# rpm -Uvh php-mbstring-5.5.7-1.el6.x86_64.rpm php-mcrypt-5.5.7-1.el6.x86_64.rpm \
php-fpm-5.5.7-1.el6.x86_64.rpm php-mysqlnd-5.5.7-1.el6.x86_64.rpm php-pdo-5.5.7-1.el6.x86_64.rpm

phpの設定
# vim /etc/php.ini
コメントを外し修正
date.timezone =Asia/Tokyo
mbstring.language = Japanese
mbstring.internal_encoding = UTF-8
mbstring.http_input = UTF-8
mbstring.http_output = pass
mbstring.encoding_translation = Off
mbstring.detect_order = auto
mbstring.substitute_character = none

エラー表記
*)テスト環境であったり環境構築中の時などエラー内容がわからんと手がだせないため表示とする
なお、おわったら直しておかないと全世界に恥ずかしいところを晒すことに・・・(エラー内容グーグル検索したらサイトがヒット・・・これは恥ずかしい
1)テスト環境用
display_errors = On
display_startup_errors = On
error_reporting = -1
log_errors = On

2)本番環境用
display_errors = Off
display_startup_errors = Off
error_reporting = E_ALL
log_errors = On

php-mpmの設定
http://www.php.net/manual/ja/install.fpm.configuration.php
# vim /etc/php-fpm.d/www.conf
以下修正
;listen.owner = nobody

listen.owner = apache

;listen.group = nobody

listen.group = apache

;listen.mode = 0666

listen.mode = 0666

Apacheの設定
confファイルのロード
# vim /etc/httpd/conf/httpd.conf
コメント化
#LoadModule mpm_prefork_module lib64/httpd/modules/mod_mpm_prefork.so
コメント外し
LoadModule mpm_event_module lib64/httpd/modules/mod_mpm_event.so
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so
Include /etc/httpd/conf/extra/httpd-mpm.conf
追記
Include /etc/httpd/conf.d/*.conf


# vim /etc/httpd/conf.d/php.conf
以下修正
<IfModule prefork.c>
LoadModule php5_module modules/libphp5.so
↓変更
LoadModule php5_module lib64/httpd/modules/libphp5.so
</IfModule>


<IfModule !prefork.c>
LoadModule php5_module modules/libphp5-zts.so
↓変更
LoadModule php5_module lib64/httpd/modules/libphp5-zts.so
</IfModule>

# service php-fpm start
# chkconfig php-fpm on
これで一応PHPが動くはず
なおデフォルトのmod_proxy使ったけどロードバランサーでNginxを使うのがトレンドらしいが次の機会に

/*------------------------
http://www.php.net/manual/ja/migration55.deprecated.php
PHP5.5から仕様がかわりpreg_replace()に/e修飾子が使われていると既存のコード内でエラーになるようで
preg_replace_callback()に適宜置き換えていかないといけないらしい
ログがエラーの嵐 orz
------------------------*/
[PR]

  by innocenceflower | 2013-12-30 11:12 | 備忘録

<< ffmpeg放り込んで活用・・... CentOS6.5の初期設定を... >>

SEM SKIN - DESIGN by SEM EXE