読者です 読者をやめる 読者になる 読者になる

vague memory

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

CentOS 6 LAMP環境構築【2015年8月】

CentOSyumを使ってLAMP環境を構築します。
Google先生に聞いてみたのですが、情報が古くなっていてそのままでは入らなかったりしたので2015年版備忘録です。
標準リポジトリのパッケージは古い物になっているので外部リポジトリを使用します。

LAMP.jpg

導入バージョン

極力最新バージョンを使います。

環境

Vagrantを使います。boxファイルは有名所から探します。

CentOS 6.7はまだ提供されていなかったので、Vagrantbox.esの CentOS 6.6 x64 を使用します。

# バージョン確認
$ cat /etc/redhat-release
CentOS release 6.6 (Final)
# リポジトリ更新
$ sudo yum -y upgrade
・・・
$ cat /etc/redhat-release
CentOS release 6.7 (Final)

6.7に更新されました。次にパッケージのバージョンを確認します。

標準リポジトリパッケージバージョン

# Apache バージョン確認
$ sudo yum list | grep httpd
・・・略・・・
httpd.x86_64                             2.2.15-45.el6.centos           base
・・・略・・・
# php バージョン確認
$ sudo yum list | grep php
・・・略・・・
php.x86_64                               5.3.3-46.el6_6                 updates
・・・略・・・
# MySQL バージョン確認
$ sudo yum list | grep mysql
・・・略・・・
mysql.x86_64                             5.1.73-5.el6_6                 base
・・・略・・・

Apache 2.2.x

yumでApache2.2.xの新しいバージョンをインストールするにはCentALTリポジトリを使用するのが定石のようですが、 現在リポジトリのURLはオフラインになっているようです。

CentALT repo is offline.

Jul 15 '14 at 13:05

ミラーサイトを使用すればインストール可能なようですが、それもいつ使えなくなるかわからないようです。 ちなみにCentALTのURLにブラウザでアクセスするとこんなメッセージが出て焦りました。

外部リポジトリ CentALT インストール

ソースからのコンパイルも候補に上がりましたが、今回はあくまでyumでインストールしたいと思いますのでミラーサイトを使います。

# リポジトリインストール
$ sudo rpm -Uvh "http://mirror.sysadminguide.net/centalt/repository/centos/6/x86_64/centalt-release-6-2.noarch.rpm"
$ sudo cat /etc/yum.repos.d/centalt.repo
[CentALT]
name=CentALT Packages for Enterprise Linux 6 - $basearch
mirrorlist = http://mirror.sysadminguide.net/centalt/mirror/6/mirrors-centalt
#mirrorlist = file:///etc/yum.repos.d/mirrors-centalt
#baseurl=http://mirror.sysadminguide.net/centalt/repository/centos/$releasever/$basearch/
enabled=1
gpgcheck=0
#priority=11
$ sudo cat /etc/yum.repos.d/mirrors-centalt
http://mirror.sysadminguide.net/centalt/repository/centos/$releasever/$basearch/
# 平常時は無効に設定
$ sudo vi /etc/yum.repos.d/centalt.repo
# enabled=1をenabled=0に変更
$ grep "enabled" /etc/yum.repos.d/centalt.repo
enabled=0
# Apache バージョン確認
$ sudo yum list --enablerepo=CentALT | grep http
httpd.x86_64                             2.2.27-1.el6                   CentALT

これでバージョン2.2.27をインストールできます。

Apache 2.2.27 インストール

# Apacheインストール
$ sudo yum install --enablerepo=CentALT httpd
# 確認
$ apachectl -V
Server version: Apache/2.2.27 (Unix)
・・・略・・・

MySQL 5.6

公式サイトからインストールします。

# リポジトリインストール
$ sudo rpm -Uvh "http://dev.mysql.com/get/mysql-community-release-el6-5.noarch.rpm"
# MySQLバージョン確認
$ sudo yum list | grep mysql
・・・略・・・
mysql-community-server.x86_64               5.6.26-2.el6                 mysql56-community
・・・
# MySQLインストール
$ sudo yum install mysql-community-server
# 確認
$ mysql -V
mysql  Ver 14.14 Distrib 5.6.26, for Linux (x86_64) using  EditLine wrapper

PHP 5.6

外部リポジトリインストール

RemiPHP 5.6が含まれているので、依存するEPELと併せてインストールします。
蛇足ですがMySQLは5.5.45が含まれていました。

# epelリポジトリインストール
$ sudo yum install epel-release
$ grep "enabled\|url" /etc/yum.repos.d/epel.repo
# remiリポジトリインストール
$ sudo rpm -Uvh "http://rpms.famillecollet.com/enterprise/remi-release-6.rpm"
# remiを有効化し、PHPバージョン確認
$ sudo yum list --enablerepo=remi-php56 | grep php
・・・略・・・
php.x86_64                                5.6.12-1.el6.remi           remi-php56
・・・略・・・

PHP 5.6 インストール

MySQLへの接続にPDOを使うので併せてインストールします。
複数バージョンのphp共存させたい場合、remi-phpXXではなく、remiリポジトリとalternativesで切り替えるようにすると良いようです。今回は共存させないのでremi-php56を使います。

# PHPインストール
$ sudo yum install --enablerepo=remi-php56 php php-pdo php-mysqlnd
# バージョン確認
$ php -v
PHP 5.6.12 (cli) (built: Aug  6 2015 16:28:29)
Copyright (c) 1997-2015 The PHP Group
Zend Engine v2.6.0, Copyright (c) 1998-2015 Zend Technologies

起動確認

Apache起動

# 起動
$ sudo /etc/init.d/httpd status
httpd は停止しています
$ sudo /etc/init.d/httpd start
httpd を起動中: httpd: Could not reliably determine the server's fully qualified domain name, using localhost.localdomain for ServerName
                                                           [  OK  ]
$ sudo /etc/init.d/httpd status
httpd (pid  30031) を実行中...
# 自動起動有効化
$ sudo chkconfig httpd on
$ chkconfig --list httpd
httpd           0:off   1:off   2:on    3:on    4:on    5:on    6:off

MySQL起動

rootユーザーのパスワード無し運用は不味いので、私はmysql_secure_installationを常に実行して設定しています。

$ sudo /etc/init.d/mysqld status
mysqld は停止しています
$ sudo /etc/init.d/mysqld start
・・・略・・・
mysqld を起動中:                                           [  OK  ]
$ sudo /etc/init.d/mysqld status
mysqld (pid  31142) を実行中...
$ sudo /usr/bin/mysql_secure_installation
# 接続確認
$ mysql -u root -p -e "SELECT Host,User FROM mysql.user;"
Enter password:
+-----------+------+
| Host      | User |
+-----------+------+
| 127.0.0.1 | root |
| ::1       | root |
| localhost | root |
+-----------+------+

接続確認

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

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

ブラウザでpdo.phpにアクセスすると、SELECT文結果が表示されます。

pdophpresult.jpg