Web開発におけるローカル開発環境は、以前よりXAMPPやMAMPを使ってきましたが、現在の主流はVagrantやDocker。
インフラ関係は全くの素人なので、主流とはいえそれらの利用を避けてきました。
しかし、今後必要になるであろうと、VagrantでのLAMP開発環境導入についてまとめました。
僕自身、白い画面(Mac:ターミナル)や黒い画面(Win:コマンドプロンプト)が苦手なため、GUIで可能な箇所はGUIで行っているので、エンジニアではない方でもおそらくできるのではないかと思います。
今回構築する構成は、以下となります。
CentOS7 + PHP7 + Apace2.4 + MySQL5.6
用意するもの
- Vagrant
1.8.4
公式サイト – Vagrant
こちらから古いバージョンをダウンロードできます。 - VirtualBox
5.0.X
公式サイト – VirtualBox
こちらから古いバージョンをダウンロードできます。 - エディタ
- SSHクライアント(Winのみ)
- FTPクライアント
Vagrantは1.8.5にはバグがあるとのことで、1.8.4を推奨です。
また、それに付随して、Vagrant 1.8.4はVirtualBox 5.1で動かないため、VirtualBoxは5.0.Xを推奨です。
Vagrant 1.8.5のバグは、1.8.6にて解消されました。
Vagrant 1.8.6 + VirtualBox 5.1.6 + macOS Sierraにて動作することを確認しました。
VagrantとVirtualBoxのインストールは簡単なので割愛しています。
Vagrantの構築
Vagrant構築ディレクトリの作成
MacならFinder、Winならエクスプローラでディレクトリを事前に作成しておきます。
僕の場合はMacなので、以下のようにしています。
/Users/ユーザーネーム/Vagrant/lamp7
ここからは、ターミナル(Mac)またはコマンドプロンプト(Win)にて進めます。
cd Vagrant
cd lamp7
上記コマンドを入力して、作成したディレクトリに移動します。
pwd
上記コマンドを入力して、きちんと移動できたか確認します。
/Users/ユーザーネーム/Vagrant/lamp7
などのように、事前に作成したディレクトリが表示されたら問題ありません。
Boxの準備
今回はCentOS7を使いますので、以下URLより有志の方が作成されたBoxをありがたく使わせていただきます。
vagrant box add centos7 https://github.com/holms/vagrant-centos7-box/releases/download/7.1.1503.001/CentOS-7.1.1503-x86_64-netboot.box
上記コマンドを入力して、VagrantにBoxを準備します。
Boxをダウンロードするので、少し時間がかかります。
※エラーが出たら、もう一度同じコマンドを入力します。
Vagrantfileの作成と編集
vagrant init centos7
上記コマンドを入力して、Vagrantfileを作成します。
# config.vm.network "private_network", ip: "192.168.33.10"
↓
config.vm.network "private_network", ip: "192.168.33.10"
/Users/ユーザーネーム/Vagrant/lamp
ここに作成されたVagrantfileをエディタで開いて、29行目のコメントアウトを外します。
Vagrantの起動
vagrant up
上記コマンドを入力して、Vagrantを起動します。
VagrantへSSH接続
SSH接続
vagrant ssh
Macならターミナルで問題ありませんが、WinならSSHクライアントを使用して、上記コマンドでVagrantへSSH接続をします。
開発環境の構築
VagrantにLAMPの Apache / MySQL / PHP をインストールしていきます。
インストールをするにあたり、権限の高いrootユーザーとしてログインする必要があります。
su
上記コマンドを入力します。
パスワード:
パスワードを聞かれるので「vagrant」と入力します。
※入力しても表示されませんが入力できています。
表示されているユーザー名が [vagrant@localhost ~] から [root@localhost vagrant] に変更されていれば、問題ありません。
yumのアップデートと必要なパッケージ・リポジトリのインストール
yum -y update
上記コマンドを入力して、yumをアップデートします。
アップデートを大量にダウンロードしてインストールするので、少し時間がかかります。
問題なく終わると「完了しました!」が表示されます。
yum -y install yum-plugin-priorities
上記コマンドを入力して、プラグインをインストールします。
問題なく終わると「完了しました!」が表示されます。
yum -y groupinstall "Base" "Development tools" "Japanese Support"
上記コマンドを入力して、必要なパッケージをインストールします。
問題なく終わると「完了しました!」が表示されます。
yum -y install epel-release
上記コマンドを入力して、EPELリポジトリをインストールします。
問題なく終わると「完了しました!」が表示されます。
rpm -ivh http://rpms.famillecollet.com/enterprise/remi-release-7.rpm
上記コマンドを入力して、Remiリポジトリをインストールします。
特に完了などの表示はありません。
Apacheのインストール
yum -y install httpd
上記コマンドを入力して、apacheをインストールします。
問題なく終わると「完了しました!」が表示されます。
systemctl stop firewalld
上記コマンドを入力して、ファイアウォールを停止します。
特に完了などの表示はありません。
systemctl disable firewalld
上記コマンドを入力して、ファイアウォールの自動起動を停止します。
特に完了などの表示はありません。
systemctl start httpd
上記コマンドを入力して、apacheを起動します。
特に完了などの表示はありません。
systemctl enable httpd.service
上記コマンドを入力して、apacheの自動起動を設定します。
特に完了などの表示はありません。
MySQLのインストール
yum -y install http://dev.mysql.com/get/mysql-community-release-el7-5.noarch.rpm
上記コマンドを入力して、MySQLをインストールします。
問題なく終わると「完了しました!」が表示されます。
yum -y install mysql-community-server
上記コマンドを入力して、MySQLをインストールします。
問題なく終わると「完了しました!」が表示されます。
systemctl start mysqld.service
上記コマンドを入力して、MySQLを起動します。
特に完了などの表示はありません。
systemctl enable mysqld.service
上記コマンドを入力して、MySQLの自動起動を設定します。
特に完了などの表示はありません。
PHPのインストール
yum --enablerepo=remi-php70 -y install php php-mbstring php-pear php-fpm php-pdo php-intl
上記コマンドを入力して、PHPをインストールします。
問題なく終わると「完了しました!」が表示されます。
phpMyAdminのインストール
yum --enablerepo=remi-php70 -y install phpMyAdmin php-mcrypt
上記コマンドを入力して、phpMyAdminをインストールします。
問題なく終わると「完了しました!」が表示されます。
Vagrantの稼働を確認
ひと通りインストールが完了したので、このあたりでVagrantがきちんと稼働しているか確認します。
exit
上記コマンドを入力して、rootユーザーからログアウトします。
exit
さらに上記コマンドを入力して、VagrantのSSH接続を解除します。
vagrant reload
上記コマンドを入力して、Vagrantを再起動します。
http://192.168.33.10/
上記URLにアクセスしてこのような画面が表示されたら問題ありません。
phpMyAdminの初期設定とphp.iniの編集
phpMyAdminの初期設定をするために、通常であればターミナルやコマンドプロンプトにてvimを使用して編集するのですが、vimに慣れていない方でも編集できるよう、FTPクライアントやエディタで設定を行います。
FTPクライアントでVagrantへ接続
プロトコル | SFTP |
ホスト | 192.168.33.10 |
ユーザー | root |
パスワード | vagrant |
上記接続情報でrootユーザーとして、VagrantへFTPクライアントにて接続します。
phpMyAdmin.confの編集
/etc/httpd/conf.d/phpMyAdmin.conf をローカルにダウンロードして、エディタで追記します。
19行目 </RequireAny> の直下に以下の2行を追記します。
AllowOverride all
Require all granted
<Directory /usr/share/phpMyAdmin/>
AddDefaultCharset UTF-8
<IfModule mod_authz_core.c>
# Apache 2.4
<RequireAny>
Require ip 127.0.0.1
Require ip ::1
</RequireAny>
</IfModule>
↓
<Directory /usr/share/phpMyAdmin/>
AddDefaultCharset UTF-8
<IfModule mod_authz_core.c>
# Apache 2.4
<RequireAny>
Require ip 127.0.0.1
Require ip ::1
</RequireAny>
AllowOverride all
Require all granted
</IfModule>
ファイルを保存し、FTPクライアントにて同ファイルを上書きします。
config.inc.phpの編集
/etc/phpMyAdmin/config.inc.php をローカルにダウンロードして、エディタで編集します。
※ファイルが見当たらない場合は、FTPクライアントを接続し直してみてください。
84行目に対する85行目の設定を編集します。
$cfg['Servers'][$i]['AllowNoPassword']
= FALSE;
↓
$cfg['Servers'][$i]['AllowNoPassword']
= TRUE;
ファイルを保存し、FTPクライアントにて同ファイルを上書きします。
php.iniの編集
/etc/php.ini をローカルにダウンロードして、エディタで編集します。
462行目を編集します。
display_errors = Off
↓
display_errors = On
877行目を編集します。
;date.timezone =
↓
date.timezone = "Asia/Tokyo"
1465行目を編集します。
;mbstring.language = Japanese
↓
mbstring.language = Japanese
ファイルを保存し、FTPクライアントにて同ファイルを上書きします。
Apacheの再起動
ファイルの編集がひと通り終わったので、このあたりでApacheを再起動します。
vagrant ssh
上記コマンドでVagrantへSSH接続をします。
su
上記コマンドを入力し、パスワード「vagrant」でrootユーザーとしてログインします。
systemctl restart httpd
上記コマンドを入力し、Apacheを再起動します。
Vagrantの稼働を最終確認
phpinfoを表示させる
<?php echo phpinfo(); ?>
と記述したindex.phpを作成し、FTPクライアントで /var/www/html に配置します。
http://192.168.33.10/
上記URLにアクセスしてこのような画面が表示されたら問題ありません。
phpMyAdminにアクセス
http://192.168.33.10/phpMyAdmin/phpMyAdmin
のURLはこちら。何かしらのユーザー名のみの入力でログインできます。
まとめ
このように、Vagrantを使えばLAMP開発環境が簡単に構築できます。
シンボリックリンクを設定すれば、ローカルのフォルダを編集してVagrantにそのまま反映させる、といったことも可能です。
Vagrantはさぞ難しいだろうと思っていましたが、やってみると意外と簡単で面白かったです。
連休二日間かけて色々試したり勉強した甲斐がありました。
LAMP開発環境が手軽に作れるので、いろんなCMSを試しに使ってみたりと、遊べそうですね。
ちなみに、このようにせっせと個別でインストールしなくても、Scotch Boxを使えば一発なので、用途に合わせてどうぞ。
公式サイト – Scotch Box
Vagrantコマンド簡易一覧
boxの追加
vagrant box add [BOX_NAME] [URL]
追加済みboxの確認
vagrant box list
boxの削除
vagrant box remove [BOX_NAME]
仮想マシンの初期化
vagrant init [BOX_NAME]
仮想マシンの起動
vagrant up
仮想マシンに接続
vagrant ssh
仮想マシンの状態確認
vagrant status
仮想マシンの保留
vagrant suspend
仮想マシンの停止
vagrant halt
仮想マシンの破棄
vagrant destroy
参考記事
VagrantにCentOS7&PHP7のLAMP環境を構築する – 株式会社ユニオンネット
vagrantを使ったLAMP環境をローカルに作る手順① ~Vagrantfileを作成しよう!~ – Qiita
コメント