いわマン備忘録

備忘録とちょっとした設定メモや小ネタをUPしたいと思っております。

PHPのインストール

###
### phpのインストールと設定
###

動かすアプリケーション、環境などで大きく変わると思うので参考までに。パッケージはwingさんのものを使っております。ソースやrpm自作という方法もありますが、汎用的にということと、保守・管理する人が複数居ることを想定してます。

# まずは必要なものをインストール
yum -y install libXaw autoconf automake libjpeg libpng freetype-devel libtidy libtidy-devel

# パッケージDL
wget http://wing-net.ddo.jp/wing/6/x86_64/php54-5.4.30-1.el6_27.wing.x86_64.rpm
wget http://wing-net.ddo.jp/wing/6/x86_64/php54-bcmath-5.4.30-1.el6_27.wing.x86_64.rpm
wget http://wing-net.ddo.jp/wing/6/x86_64/php54-cli-5.4.30-1.el6_27.wing.x86_64.rpm
wget http://wing-net.ddo.jp/wing/6/x86_64/php54-common-5.4.30-1.el6_27.wing.x86_64.rpm
wget http://wing-net.ddo.jp/wing/6/x86_64/php54-devel-5.4.30-1.el6_27.wing.x86_64.rpm
wget http://wing-net.ddo.jp/wing/6/x86_64/php54-gd-5.4.30-1.el6_27.wing.x86_64.rpm
wget http://wing-net.ddo.jp/wing/6/x86_64/php54-mbstring-5.4.30-1.el6_27.wing.x86_64.rpm
wget http://wing-net.ddo.jp/wing/6/x86_64/php54-mcrypt-5.4.30-1.el6_27.wing.x86_64.rpm
wget http://wing-net.ddo.jp/wing/6/x86_64/php54-mysql-5.4.30-1.el6_27.wing.x86_64.rpm
wget http://wing-net.ddo.jp/wing/6/x86_64/php54-mysqlnd-5.4.30-1.el6_27.wing.x86_64.rpm
wget http://wing-net.ddo.jp/wing/6/x86_64/php54-pdo-5.4.30-1.el6_27.wing.x86_64.rpm
wget http://wing-net.ddo.jp/wing/6/x86_64/php54-process-5.4.30-1.el6_27.wing.x86_64.rpm
wget http://wing-net.ddo.jp/wing/6/x86_64/php54-tidy-5.4.30-1.el6_27.wing.x86_64.rpm
wget http://wing-net.ddo.jp/wing/6/x86_64/php54-xml-5.4.30-1.el6_27.wing.x86_64.rpm
wget http://wing-net.ddo.jp/wing/6/x86_64/php54-fpm-5.4.28-1.el6_25.wing.x86_64.rpm

# その他必要なもの
wget http://wing-net.ddo.jp/wing/6/x86_64/pcre-8.21-1.el6_0.wing.x86_64.rpm
wget http://wing-net.ddo.jp/wing/6/x86_64/pcre-devel-8.21-1.el6_0.wing.x86_64.rpm
wget http://wing-net.ddo.jp/wing/6/x86_64/mysql56-libs-5.6.19-1.el6_16.wing.x86_64.rpm
wget http://wing-net.ddo.jp/wing/6/x86_64/mysqlclient16-5.1.73-3.el6_3.wing.x86_64.rpm
wget ftp://ftp.pbone.net/mirror/ftp.scientificlinux.org/linux/scientific/6.1/x86_64/os/Packages/libtool-ltdl-2.2.6-15.5.el6.x86_64.rpm
wget ftp://ftp.pbone.net/mirror/download.fedora.redhat.com/pub/fedora/epel/6/x86_64/libmcrypt-2.5.8-9.el6.x86_64.rpm
wget ftp://ftp.pbone.net/mirror/ftp.scientificlinux.org/linux/scientific/6.1/x86_64/updates/security/libxslt-1.1.26-2.el6_3.1.x86_64.rpm
wget ftp://ftp.pbone.net/mirror/ftp.scientificlinux.org/linux/scientific/6.1/x86_64/updates/security/t1lib-5.1.2-6.el6_2.1.x86_64.rpm

# DLしたパッケージをインスコ
yum -y remove mysql-libs
rpm -ivh mysql56-libs-*.rpm
rpm -ivh mysqlclient16-*.rpm
rpm -ivh libmcrypt-*.rpm
rpm -Uvh libxslt-*.rpm
rpm -ivh libtool-*.rpm
rpm -ivh t1lib-*.rpm
rpm -Uvh pcre-*.rpm
rpm -ivh php54-*.rpm

# rpm保存用ディレクトリ作成(後のことを考え)
# ディレクトリはとりあえずrootにしてます
mkdir /root/php54_wing

mv php54-*.rpm /root/php54_wing
mv pcre-*.rpm /root/php54_wing
mv t1lib-*.rpm /root/php54_wing
mv libtool-*.rpm /root/php54_wing
mv libxslt-*.rpm /root/php54_wing
mv libmcrypt-*.rpm /root/php54_wing
mv mysqlclient16-*.rpm /root/php54_wing
mv mysql56-libs-*.rpm /root/php54_wing

# php-apcのインストール
yum -y install enablerepo=epel php-pear

# Enterで進む。本当はきちんとそれぞれの項目を理解しましょう
# ちょっとはしょってます
pecl install APC

vi /etc/php.ini

# 最後の方に下記を追加
[APC]
extension=apc.so

# php-pcntlのインストール
# 並列処理をさせる際に使いますが、この方法では内部的な処理にしか
# 使えなかったので注意が必要。導入したphpのバージョンに合わせること
cd /usr/local/src
wget http://jp1.php.net/get/php-5.4.30.tar.gz/from/this/mirror

tar -zxvf php-5.4.30.tar.gz
cd php-5.4.30/ext/pcntl

# ビルド開始
phpize
./configure
make install

# httpd再起動
service httpd restart

# info.phpの作成
mkdir /var/www/dev
vi /var/www/dev/info.php

mkdir /var/www/html/dev
vi /var/www/html/dev/info.php

# 下記をコピー
<?php

phpinfo()

?>

# phpMyAdminをダウンロード。新しいバージョンをDLしてください
wget http://sourceforge.net/projects/phpmyadmin/files/phpMyAdmin/4.2.5/phpMyAdmin-4.2.5-all-languages.tar.gz
mv phpMyAdmin-4.2.5-all-languages.tar.gz /usr/local/src
cd /usr/local/src

tar xvzf phpMyAdmin-4.2.5-all-languages.tar.gz

# コピー先① .htaccessの兼ね合いとかでhtml配下が使えない場合
cp -a /usr/local/src/phpMyAdmin-4.2.5-all-languages /var/www/pma
cp /var/www/pma/config.sample.inc.php /var/www/pma/config.inc.php

# コピー先② 通常はこちらで良いでしょう
cp -a /usr/local/src/phpMyAdmin-4.2.5-all-languages /var/www/html/pma
cp /var/www/html/pma/config.sample.inc.php /var/www/html/pma/config.inc.php

# config.inc.phpの編集
vi /var/www/pma/config.inc.php
vi /var/www/html/pma/config.inc.php

# .htaccessの作成
# 外部サーバの場合
vim /var/www/dev/.htaccess
vim /var/www/pma/.htaccess

vim /var/www/html/dev/.htaccess
vim /var/www/html/pma/.htaccess

# >>> from access check <<< #
order deny,allow
deny from all

### Office
allow from 192.168.0.0/24

### local host
allow from 127.0.0.1

### 事務所
allow from 123.456.789.0

# >>> index on <<< #
#Options +Indexes

# deny response is
ErrorDocument 404 /error/HTTP_NOT_FOUND.html.var

# php.iniの編集
datetime=`date '+%Y%m%d%H%M%S'`
cp /etc/php.ini /etc/php.ini."$datetime"

# ZendFrameworkの場合、クラスが相対パスで記述されている為パフォーマンスが落ちる
# その為pathcacheサイズを増やし高速化する
sed -i '342s%;realpath_cache_size = 16k%realpath_cache_size = 128k%' /etc/php.ini
#sed -i '348s%;realpath_cache_ttl = 120%realpath_cache_ttl = 120%' /etc/php.ini

sed -i '375s%expose_php = On%expose_php = Off%' /etc/php.ini
sed -i '384s%max_execution_time = 30%max_execution_time = 1200%' /etc/php.ini

sed -i '401s%; max_input_vars = 1000%max_input_vars = 4000%' /etc/php.ini
sed -i '405s%memory_limit = 128M%memory_limit = 2048M%' /etc/php.ini
sed -i '461s%error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT%error_reporting = E_ALL | E_STRICT%' /etc/php.ini
sed -i '504s%log_errors_max_len = 1024%log_errors_max_len = 4096%' /etc/php.ini
sed -i '586s%;error_log = syslog%error_log = /var/log/php_errors.log%' /etc/php.ini
sed -i '672s%post_max_size = 8M%post_max_size = 126M%' /etc/php.ini
#sed -i '692s%;default_charset = "UTF-8"%default_charset = "UTF-8"%' /etc/php.ini

# 必要な場合は使用してください!
#sed -i '706s%;include_path = ".:/php/includes"%include_path = ".:/php/includes:/var/lib/php/cake:/usr/share/pear:/var/lib/php/jpgraph"%' /etc/php.ini

# 不要な場合はOff
#sed -i '792s%file_uploads = On%file_uploads = On%' /etc/php.ini

sed -i '804s%upload_max_filesize = 2M%upload_max_filesize = 16M%' /etc/php.ini
sed -i '807s%max_file_uploads = 20%max_file_uploads = 30%' /etc/php.ini
sed -i '882s%;date.timezone =%date.timezone = Asia/Tokyo%' /etc/php.ini

# JavaScriptでセッションIDを利用しない場合はかならず1に設定する。
sed -i '1391s%session.cookie_httponly =%session.cookie_httponly = 1%' /etc/php.ini

sed -i '1426s%session.gc_maxlifetime = 1440%session.gc_maxlifetime = 43200%' /etc/php.ini

# 0でMD5, 1でSHA1が利用されます。弱いハッシュ関数を利用する意味や必要性があるアプリケーションはほとんどなし。
sed -i '1509s%session.hash_function = 0%session.hash_function = 1%' /etc/php.ini

sed -i '1656s%;mbstring.language = Japanese%mbstring.language = Japanese%' /etc/php.ini
sed -i '1662s%;mbstring.internal_encoding = UTF-8%mbstring.internal_encoding = UTF-8%' /etc/php.ini
sed -i '1666s%;mbstring.http_input = UTF-8%mbstring.http_input = pass%' /etc/php.ini
sed -i '1671s%;mbstring.http_output = pass%mbstring.http_output = pass%' /etc/php.ini
sed -i '1689s%;mbstring.substitute_character = none%mbstring.substitute_character = none%' /etc/php.ini

# phpモジュールの重複エラー回避
# 下記をコメントアウト
vi /etc/php.d/mysql.ini
vi /etc/php.d/mysqli.ini
vi /etc/php.d/pdo_mysql.ini

service httpd restart