CentOSにyumを使ってphpをインストールします。
Apache2.4をepelリポジトリからインストールする版(俺得)備忘録です。
前回まで2.2版と2.4 IUSリポジトリ版は以下から。
- Apache2.2版
- Apache2.4(IUS)版
環境
前回とほぼ同じですので細かい部分は省きます。MySQLがインストールされているものとします。
- CentOS 6.6
- Vagrantbox.es のCentOS 6.6 x64
Apache 2.4.6
epel-httpd24.repoを使用します。
# リポジトリインストール $ cd /etc/yum.repos.d $ sudo wget https://repos.fedorapeople.org/repos/jkaluza/httpd24/epel-httpd24.repo $ sudo yum install httpd24 $ バージョン確認 $ apachectl -V -bash: apachectl: command not found
apachectlコマンドが見つかりません。探してみると、/opt/rh/httpd24 配下に作成されていました。
2.4のMPMはeventがデフォルトという記述をよく見かけますが、epel-httpd24のパッケージではpreforkになっています。
$ ls /etc/init.d/httpd* /etc/init.d/httpd24-httpd $ grep apachectl /etc/init.d/httpd24-httpd # Path to the apachectl script, server binary, and short-form for messages. apachectl=/opt/rh/httpd24/root/usr/sbin/apachectl # The semantics of these two functions differ from the way apachectl does $apachectl $@ $ /opt/rh/httpd24/root/usr/sbin/apachectl -V ・・・略・・・ Server version: Apache/2.4.6 (Red Hat) ・・・略・・・ Server MPM: prefork ・・・略・・・
/opt/rh/httpd24 ではあまりにも使い難いので、いつも通りのパスにシンボリックリンクを張ります。
$ sudo ln -s /opt/rh/httpd24/root/etc/httpd /etc/httpd $ sudo mkdir /var/www $ sudo ln -s /opt/rh/httpd24/root/var/www/html /var/www/html $ sudo ln -s /opt/rh/httpd24/root/var/log/httpd /var/log/httpd
PHP 5.6 インストール
Remiリポジトリからインストールします。 IUSリポジトリからのインストールと同様にphpをインストールしようとすると、httpd-2.2.15のパッケージとのconflictsとなるので、php-fpmをインストールします。 Apache2.4でPHPを使用するにはFastCGI経由で動かす必要があるそうです。
# epelリポジトリインストール $ sudo yum install epel-release # remiリポジトリインストール $ sudo rpm -Uvh "http://rpms.famillecollet.com/enterprise/remi-release-6.rpm" # phpインストール(失敗) $ sudo yum install --enablerepo=remi-php56 php php-pdo php-mysqlnd file /etc/httpd/conf.d/README from install of httpd-2.2.15-47.el6.centos.x86_64 conflicts with file from package httpd24-httpd-2.4.6-5.el6.x86_64 file /etc/httpd/conf.d/welcome.conf from install of httpd-2.2.15-47.el6.centos.x86_64 conflicts with file from package httpd24-httpd-2.4.6-5.el6.x86_64 file /etc/httpd/conf/httpd.conf from install of httpd-2.2.15-47.el6.centos.x86_64 conflicts with file from package httpd24-httpd-2.4.6-5.el6.x86_64 file /etc/httpd/conf/magic from install of httpd-2.2.15-47.el6.centos.x86_64 conflicts with file from package httpd24-httpd-2.4.6-5.el6.x86_64 file /etc/httpd/logs from install of httpd-2.2.15-47.el6.centos.x86_64 conflicts with file from package httpd24-httpd-2.4.6-5.el6.x86_64 file /etc/httpd/modules from install of httpd-2.2.15-47.el6.centos.x86_64 conflicts with file from package httpd24-httpd-2.4.6-5.el6.x86_64 file /etc/httpd/run from install of httpd-2.2.15-47.el6.centos.x86_64 conflicts with file from package httpd24-httpd-2.4.6-5.el6.x86_64 # php-fpmインストール $ sudo yum install --enablerepo=remi-php56 php-fpm php-pdo php-mysqlnd # バージョン確認 $ php-fpm -v PHP 5.6.12 (fpm-fcgi) (built: Aug 6 2015 17:15:15) Copyright (c) 1997-2015 The PHP Group Zend Engine v2.6.0, Copyright (c) 1998-2015 Zend Technologies
起動確認
$ sudo less /etc/php-fpm.d/www.conf # Listenポート確認 listen = 127.0.0.1:9000 $ sudo /etc/init.d/php-fpm start $ sudo chkconfig php-fpm on # php.confファイルの確認 $ cat /etc/httpd/conf.d/php.conf <FilesMatch \.php$> SetHandler application/x-httpd-php </FilesMatch> ProxyPassMatch ^/(.*\.php(/.*)?)$ fcgi://127.0.0.1:9000/var/www/html/$1 $ sudo /etc/init.d/httpd24-httpd start $ sudo chkconfig httpd24-httpd on
接続確認
- サンプルスクリプト
$ sudo vi /var/www/html/index.php <?php phpinfo(); ?> $ sudo vi /var/www/html/pdo.php <?php try{ $dbh = new PDO("mysql:host=localhost;dbname=mysql;charset=utf8", "root", "yourPassword"); $stmt = $dbh->query("SELECT Host,User FROM mysql.user;"); $rows = $stmt->fetchAll(PDO::FETCH_ASSOC); var_dump($rows); $stmt = null; } catch(PDOException $e){ echo $e->getMessage(); } ?>
- epel版Apache2.4は/opt/rh/httpd24に作成されます
- 管理面考えると非常に厄介なので、シンボリックリンクは必須かと思います