はじめに
前回の記事では、LAMP環境を構築する仮想環境の構築方法について、解説しました。第2回は、作成した仮想環境にLAMP環境を構築する方法について解説します。
構築するLAMP環境
LAMP開発環境として、下記のソフトウエアをインストールします。
ソフトウエア | パッケージバージョン/リポジトリ | 最新バージョン |
---|---|---|
Apache | 2.2.15/base | 2.4.7 |
MySQL | 5.5.35/remi | 5.6.15 |
PHP | 5.4.24/remi | 5.5.8 |
リポジトリのインストール
CentOS公式サイトでは、提供されないパッケージをインストールするため、サードパーティリポジトリをインストールします。
今回インストールするリポジトリは、開発者に必須とも言えるリポジトリです。
- リポジトリのダウンロード
$ sudo yum -y install wget $ wget -q ftp://ftp.kddilabs.jp/Linux/distributions/fedora/epel/6/i386/epel-release-6-8.noarch.rpm $ wget -q http://rpms.famillecollet.com/enterprise/remi-release-6.rpm $ wget -q http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.3-1.el6.rf.i686.rpm
[vagrant@lamp ~]$ sudo yum -y install wget Loaded plugins: fastestmirror Determining fastest mirrors Including mirror: ftp.riken.jp Including mirror: mirror.fairway.ne.jp Including mirror: ftp.tsukuba.wide.ad.jp Including mirror: www.ftp.ne.jp Including mirror: ftp.nara.wide.ad.jp Including mirror: ftp.jaist.ac.jp Including mirror: ftp.iij.ad.jp * base: ftp.riken.jp Including mirror: ftp.riken.jp Including mirror: mirror.fairway.ne.jp Including mirror: ftp.tsukuba.wide.ad.jp Including mirror: www.ftp.ne.jp Including mirror: ftp.nara.wide.ad.jp Including mirror: ftp.jaist.ac.jp Including mirror: ftp.iij.ad.jp * extras: ftp.riken.jp
[vagrant@lamp ~]$ wget -q ftp://ftp.kddilabs.jp/Linux/distributions/fedora/epel/6/i386/epel-release-6-8.noarch.rpm [vagrant@lamp ~]$ wget -q http://rpms.famillecollet.com/enterprise/remi-release-6.rpm [vagrant@lamp ~]$ wget -q http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.3-1.el6.rf.i686.rpm [vagrant@lamp ~]$
- リポジトリのインストール
ダウンロードしたリポジトリをインストールします。
$ sudo rpm --upgrade --verbose --hash epel-release-6-8.noarch.rpm $ sudo rpm --upgrade --verbose --hash remi-release-6.rpm $ sudo rpm --upgrade --verbose --hash rpmforge-release-0.5.3-1.el6.rf.i686.rpm
[vagrant@lamp ~]$ sudo rpm --upgrade --verbose --hash epel-release-6-8.noarch.rpm warning: epel-release-6-8.noarch.rpm: Header V3 RSA/SHA256 Signature, key ID 0608b895: NOKEY Preparing... ########################################### [100%] 1:epel-release ########################################### [100%] [vagrant@lamp ~]$ sudo rpm --upgrade --verbose --hash remi-release-6.rpm warning: remi-release-6.rpm: Header V3 DSA/SHA1 Signature, key ID 00f97f56: NOKEY Preparing... ########################################### [100%] 1:remi-release ########################################### [100%] [vagrant@lamp ~]$ sudo rpm --upgrade --verbose --hash rpmforge-release-0.5.3-1.el6.rf.i686.rpm warning: rpmforge-release-0.5.3-1.el6.rf.i686.rpm: Header V3 DSA/SHA1 Signature, key ID 6b8d79e6: NOKEY Preparing... ########################################### [100%] 1:rpmforge-release ########################################### [100%] [vagrant@lamp ~]$
- リポジトリの設定変更
インストールしたリポジトリを、パッケージインストール時に明示的に指定して利用するため、デフォルトで使用しないに設定します。
$ for repo in remi epel rpmforge; do cat /etc/yum.repos.d/$repo.repo | sed 's/^enabled.*$/enabled = 0/' > /tmp/repo; sudo cp -p /etc/yum.repos.d/$repo.repo /etc/yum.repos.d/$repo.repo.old; sudo cp /tmp/repo /etc/yum.repos.d/$repo.repo; rm -f /tmp/repo; done
Apache環境の構築
Apacheをbaseリポジトリからインストールし、設定を行います。
- Apacheのインストール
Apacheを、baseリポジトリからインストールします。
$ sudo yum -y install httpd
[vagrant@lamp ~]$ sudo yum -y install httpd Loaded plugins: fastestmirror Loading mirror speeds from cached hostfile Including mirror: ftp.riken.jp Including mirror: mirror.fairway.ne.jp Including mirror: ftp.tsukuba.wide.ad.jp Including mirror: www.ftp.ne.jp Including mirror: ftp.nara.wide.ad.jp Including mirror: ftp.jaist.ac.jp Including mirror: ftp.iij.ad.jp * base: ftp.riken.jp Including mirror: ftp.riken.jp Including mirror: mirror.fairway.ne.jp Including mirror: ftp.tsukuba.wide.ad.jp Including mirror: www.ftp.ne.jp Including mirror: ftp.nara.wide.ad.jp Including mirror: ftp.jaist.ac.jp Including mirror: ftp.iij.ad.jp * extras: ftp.riken.jp
- Apacheの設定
Apache設定ファイルを、下記のとおり編集します。
$ sudo vi /etc/httpd/conf/httpd.conf ServerAdmin root@lamp.vagrantup.com ServerName lamp.vagrantup.com
編集が終了したら、設定ファイルのチェックを行います。
$ httpd -t
- Apacheの起動
Apacheを起動し、正常起動を確認後、自動起動設定を行います。
$ sudo service httpd start $ sudo chkconfig httpd on
ブラウザでアクセスすると、デフォルトページが表示されます。
MySQL環境の構築
MySQLをインストールし、MySQLの設定を行います。
- MySQLのインストール
MySQLを、remiリポジトリからインストールします。
$ sudo yum -y install --enablerepo=remi mysql-server
[vagrant@lamp ~]$ sudo yum -y install --enablerepo=remi mysql-server Loaded plugins: fastestmirror Loading mirror speeds from cached hostfile Including mirror: ftp.riken.jp Including mirror: mirror.fairway.ne.jp Including mirror: ftp.tsukuba.wide.ad.jp Including mirror: www.ftp.ne.jp Including mirror: ftp.nara.wide.ad.jp Including mirror: ftp.jaist.ac.jp Including mirror: ftp.iij.ad.jp * base: ftp.riken.jp Including mirror: ftp.riken.jp Including mirror: mirror.fairway.ne.jp Including mirror: ftp.tsukuba.wide.ad.jp Including mirror: www.ftp.ne.jp Including mirror: ftp.nara.wide.ad.jp Including mirror: ftp.jaist.ac.jp Including mirror: ftp.iij.ad.jp * extras: ftp.riken.jp
- MySQLの設定
MySQL設定ファイル(/etc/my.cnf)を、下記のとおり編集します。
$ sudo vi /etc/my.cnf
[mysqld] character-set-server=utf8 [mysql] default-character-set=utf8
- MySQLの起動
MySQLを起動し、正常起動を確認後、自動起動設定を行います。
$ sudo service mysqld start $ sudo chkconfig mysqld on
[vagrant@lamp ~]$ sudo service mysqld start Initializing MySQL database: Installing MySQL system tables... OK Filling help tables... OK To start mysqld at boot time you have to copy support-files/mysql.server to the right place for your system PLEASE REMEMBER TO SET A PASSWORD FOR THE MySQL root USER ! To do so, start the server, then issue the following commands: /usr/bin/mysqladmin -u root password 'new-password' /usr/bin/mysqladmin -u root -h lamp.vagrantup.com password 'new-password' Alternatively you can run: /usr/bin/mysql_secure_installation which will also give you the option of removing the test databases and anonymous user created by default. This is strongly recommended for production servers. See the manual for more instructions. You can start the MySQL daemon with: cd /usr ; /usr/bin/mysqld_safe & You can test the MySQL daemon with mysql-test-run.pl cd /usr/mysql-test ; perl mysql-test-run.pl Please report any problems with the /usr/bin/mysqlbug script! [ OK ] Starting mysqld: [ OK ] [vagrant@lamp ~]$ sudo chkconfig mysqld on [vagrant@lamp ~]$
MySQLのデフォルト文字コードを含む、ステータスを表示します。
$ mysql -e status
[vagrant@lamp ~]$ mysql -e status -------------- mysql Ver 14.14 Distrib 5.5.35, for Linux (i686) using readline 5.1 Connection id: 2 Current database: Current user: vagrant@localhost SSL: Not in use Current pager: stdout Using outfile: '' Using delimiter: ; Server version: 5.5.35 MySQL Community Server (GPL) by Remi Protocol version: 10 Connection: Localhost via UNIX socket Server characterset: utf8 Db characterset: utf8 Client characterset: utf8 Conn. characterset: utf8 UNIX socket: /var/lib/mysql/mysql.sock Uptime: 1 min 30 sec Threads: 1 Questions: 5 Slow queries: 0 Opens: 33 Flush tables: 1 Open tables: 26 Queries per second avg: 0.055 -------------- [vagrant@lamp ~]$
- MySQLのセキュリティ設定
デフォルトインストールのMySQLでは、テスト用データベースや匿名ユーザーが登録されていますので、これらのデータを削除し、セキュアな設定を行います。
$ sudo mysql_secure_installation
[vagrant@lamp ~]$ sudo mysql_secure_installation NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MySQL SERVERS IN PRODUCTION USE! PLEASE READ EACH STEP CAREFULLY! In order to log into MySQL to secure it, we'll need the current password for the root user. If you've just installed MySQL, and you haven't set the root password yet, the password will be blank, so you should just press enter here. Enter current password for root (enter for none): OK, successfully used password, moving on... Setting the root password ensures that nobody can log into the MySQL root user without the proper authorisation. Set root password? [Y/n] New password: Re-enter new password: Password updated successfully! Reloading privilege tables.. ... Success! By default, a MySQL installation has an anonymous user, allowing anyone to log into MySQL without having to have a user account created for them. This is intended only for testing, and to make the installation go a bit smoother. You should remove them before moving into a production environment. Remove anonymous users? [Y/n] ... Success! Normally, root should only be allowed to connect from 'localhost'. This ensures that someone cannot guess at the root password from the network. Disallow root login remotely? [Y/n] ... Success! By default, MySQL comes with a database named 'test' that anyone can access. This is also intended only for testing, and should be removed before moving into a production environment. Remove test database and access to it? [Y/n] - Dropping test database... ... Success! - Removing privileges on test database... ... Success! Reloading the privilege tables will ensure that all changes made so far will take effect immediately. Reload privilege tables now? [Y/n] ... Success! Cleaning up... All done! If you've completed all of the above steps, your MySQL installation should now be secure. Thanks for using MySQL!
コマンドを実行すると、ウィザード形式で下記の質問がありますが、全てエンターキーを入力します。
ただし、Set root password? では、rootユーザーのパスワード設定を行いますので、MySQLのrootユーザーのパスワードを入力します。Enter current password for root (enter for none) Set root password? [Y/n] Remove anonymous users? [Y/n] Disallow root login remotely? [Y/n] Remove test database and access to it? [Y/n] Reload privilege tables now? [Y/n]
PHP環境の構築
- PHPのインストール
サードパーティリポジトリから、PHP本体および、関連パッケージをインストールします。
$ sudo yum -y install --enablerepo=remi php $ sudo yum -y install --enablerepo=remi php-mysql php-gd php-pdo php-pear phppgsql $ sudo yum -y install --enablerepo=remi php-mbstring php-devel $ sudo yum -y install --enablerepo=epel,remi,rpmforge php-mcrypt
[vagrant@lamp ~]$ sudo yum -y install --enablerepo=remi php Loaded plugins: fastestmirror Loading mirror speeds from cached hostfile Including mirror: ftp.riken.jp Including mirror: mirror.fairway.ne.jp Including mirror: ftp.tsukuba.wide.ad.jp Including mirror: www.ftp.ne.jp Including mirror: ftp.nara.wide.ad.jp Including mirror: ftp.jaist.ac.jp Including mirror: ftp.iij.ad.jp * base: ftp.riken.jp Including mirror: ftp.riken.jp Including mirror: mirror.fairway.ne.jp Including mirror: ftp.tsukuba.wide.ad.jp Including mirror: www.ftp.ne.jp Including mirror: ftp.nara.wide.ad.jp Including mirror: ftp.jaist.ac.jp Including mirror: ftp.iij.ad.jp * extras: ftp.riken.jp
[vagrant@lamp ~]$ sudo yum -y install --enablerepo=remi php-mysql php-gd php-pdo php-pear phppgsql Loaded plugins: fastestmirror Loading mirror speeds from cached hostfile Including mirror: ftp.riken.jp Including mirror: mirror.fairway.ne.jp Including mirror: ftp.tsukuba.wide.ad.jp Including mirror: www.ftp.ne.jp Including mirror: ftp.nara.wide.ad.jp Including mirror: ftp.jaist.ac.jp Including mirror: ftp.iij.ad.jp * base: ftp.riken.jp Including mirror: ftp.riken.jp Including mirror: mirror.fairway.ne.jp Including mirror: ftp.tsukuba.wide.ad.jp Including mirror: www.ftp.ne.jp Including mirror: ftp.nara.wide.ad.jp Including mirror: ftp.jaist.ac.jp Including mirror: ftp.iij.ad.jp
[vagrant@lamp ~]$ sudo yum -y install --enablerepo=remi php-mbstring php-devel Loaded plugins: fastestmirror Loading mirror speeds from cached hostfile Including mirror: ftp.riken.jp Including mirror: mirror.fairway.ne.jp Including mirror: ftp.tsukuba.wide.ad.jp Including mirror: www.ftp.ne.jp Including mirror: ftp.nara.wide.ad.jp Including mirror: ftp.jaist.ac.jp Including mirror: ftp.iij.ad.jp * base: ftp.riken.jp Including mirror: ftp.riken.jp Including mirror: mirror.fairway.ne.jp Including mirror: ftp.tsukuba.wide.ad.jp Including mirror: www.ftp.ne.jp Including mirror: ftp.nara.wide.ad.jp Including mirror: ftp.jaist.ac.jp Including mirror: ftp.iij.ad.jp * extras: ftp.riken.jp
[vagrant@lamp ~]$ sudo yum -y install --enablerepo=epel,remi,rpmforge php-mcrypt Loaded plugins: fastestmirror Loading mirror speeds from cached hostfile epel/metalink | 5.1 kB 00:00 Including mirror: ftp.riken.jp Including mirror: mirror.fairway.ne.jp Including mirror: ftp.tsukuba.wide.ad.jp Including mirror: www.ftp.ne.jp Including mirror: ftp.nara.wide.ad.jp Including mirror: ftp.jaist.ac.jp Including mirror: ftp.iij.ad.jp * base: ftp.riken.jp Including mirror: ftp.tsukuba.wide.ad.jp Including mirror: ftp.jaist.ac.jp Including mirror: ftp.iij.ad.jp * epel: ftp.tsukuba.wide.ad.jp Including mirror: ftp.riken.jp Including mirror: mirror.fairway.ne.jp Including mirror: ftp.tsukuba.wide.ad.jp Including mirror: www.ftp.ne.jp Including mirror: ftp.nara.wide.ad.jp Including mirror: ftp.jaist.ac.jp Including mirror: ftp.iij.ad.jp
- PHPの設定
PHP設定ファイル(/etc/php.ini)を、下記のとおり編集します。
$ sudo vi /etc/php.ini
date.timezone = Asia/Tokyo
- Apache再起動
PHP設定ファイルの編集が終了したら、Apacheを再起動します。
$ sudo service httpd restart
- PHP動作確認
下記の内容を含んだPHPファイルを作成し、DocumentRoot(/var/www/html)にphpinfo.phpとして保存します。
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> phpinfo</title> </head> <body> <?php phpinfo(); ?> </body> </html><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> phpinfo</title> </head> <body> <?php phpinfo(); ?> </body> </html>
ブラウザでアクセスすると、PHPの設定情報が表示されます。
まとめ
ここまで、仮想環境を構築し、LAMP環境の構築方法について解説しました。開発環境は、さまざまなプラットフォームに、さまざまなパッケージをインストールして環境を構築しますが、Vagrantを使用した環境構築では、必要なプラットフォームを簡単にインストールし、本来の開発環境の構築を直ぐに始めることができます。今回は、最小限のLAMP環境を構築しましたが、環境をベースに必要となるパッケージをインストールして下さい。