vague memory

うろ覚えを無くしていこうともがき苦しむ人の備忘録

CentOS 6 LAMP環境構築【2015年(Apache2.4epel)版】

CentOSyumを使ってphpをインストールします。
Apache2.4をepelリポジトリからインストールする版(俺得)備忘録です。

LAMP2.jpg

前回まで2.2版と2.4 IUSリポジトリ版は以下から。

環境

前回とほぼ同じですので細かい部分は省きます。MySQLがインストールされているものとします。

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

接続確認

phpを実行し、MySQLへ接続可能かを確認します。

$ 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();
}
?>

phpinfo_5.6.12.jpg

pdophpresult.jpg


  • epel版Apache2.4は/opt/rh/httpd24に作成されます