sk51.log

The Averageman's web log.

Vagrant と VirtualBoxでPHPの開発環境(LAMP)を構築するまでの最短設定


2015年11月16日 Web制作 , ,

VagrantとVirtualBoxで、PHPの開発環境を構築するまでの最短設定をまとめました。
ここでは、VagrantとVirtualBoxを使用し、典型的なLAMP環境(WebサーバーにApach(httpd)、RDBMSにMariaDB(MySQL)、プログラミング言語にPHP)を構築します。
なお、VagrantとVirtualBoxはインストール済みとして進めます。
以下、構築内容です。

  • 構築内容

    • 1. CentOS7のインストール・起動

    • 2. CentOSにSSHで接続

    • 3. 日本語の設定

    • 4. httpd(Apache)のインストール・設定とファイアウォールの設定

    • 5. PHPのインストール

    • 6. MariaDB(MySQL)のインストール・初期設定

    • 7. 共有フォルダの設定

    • #. まとめ

1. CentOS7のインストール

まずは、VagrantにCentOS7のBoxを追加します。

$ vagrant box add {title} {url}

{title}には任意の名前をつけます。
{url}はBoxのURL、もしくはダウンロードしているのであればローカルのパスを指定します。
例えば、以下のようにです。

$ vagrant box add CentOS7_0 https://github.com/tommy-muehle/puppet-vagrant-boxes/releases/download/1.1.0/centos-7.0-x86_64.box

Boxは、Vagrantbox.esなどから探せます。
A list of base boxes for Vagrant – Vagrantbox.es

Boxの追加が終了したら、作業フォルダを作成・移動し、そこで初期化と起動を行います。

$ mkdir dev
$ cd dev
$ vagrant init CentOS7_0
$ vagrant up

これで、CentOSのインストール・起動は終了です。

2. CentOSにSSHで接続

次に作業するために、SSHで接続します。
SSHでの接続先は、vagrant up時にコンソールに表示されるのでそれを元に接続しますが、以下のようにすれば接続できるはずです。
初期状態のままであれば、SSHのポートは2222番、ipアドレスは127.0.0.1で、アカウント・パスワードは、vagrantです。

$ vagrant ssh (もしくは、ssh -p 2222 vagrant@127.0.0.1)
vagrant@127.0.0.1's password: vagrant

3. 日本語の設定

CentOSを日本語化します。

[vagrant@localhost ~]$ sudo localectl set-locale LANG=ja_JP.UTF8
[vagrant@localhost ~]$ sudo localectl set-keymap jp106

設定を反映させるには再起動が必要です。

[vagrant@localhost ~]$ logout
Connection to 127.0.0.1 closed.
$ vagrant reload
$ vagrant ssh (もしくは、ssh -p 2222 vagrant@127.0.0.1)

補足ですが、localetestで現在の設定を確認を、list-localesを指定すると、設定可能なリストが表示されます。

[vagrant@localhost ~]$ localectl
[vagrant@localhost ~]$ localectl list-locales | grep "ja"

4. httpdのインストール・設定

Webサーバーのhttpdをインストールします。
yumでインストールしますが、最新の状態に更新してから、httpdをインストールします。

[vagrant@localhost ~]$ sudo yum upgrade
[vagrant@localhost ~]$ sudo yum install httpd

次に、ブラウザでアクセスできるように、Vagrantfileを編集します。
以下の部分がコメントアウトされていますので、コメントアウトを外します。

[vagrant@localhost ~]$ vim /vagrant/vagrantfile
config.vm.network "private_network", ip: "192.168.33.10"

ログアウトし再起動、再度SSH接続し、httpdを起動します。
ただし、このままではファイアーウォールによってhttp://192.168.33.10/にアクセスしても弾かれてしまいますので、httpを許可します。

[vagrant@localhost ~]$ logout
$ vagrant reload
$ vagrant ssh (もしくは、ssh -p 2222 vagrant@127.0.0.1)
[vagrant@localhost ~]$ sudo systemctl start httpd
[vagrant@localhost ~]$ sudo firewall-cmd --add-service=http --permanent
[vagrant@localhost ~]$ sudo firewall-cmd --reload

http://192.168.33.10/にブラウザからアクセスすると、以下のページが現れます。

testing123

次に、httpdのDocumentRootを共有フォルダに変更します。
共有フォルダは、/vagrant に自動的に作成されます。
/home/vagrantではないので注意が必要です。
ここではDocumentRootの値を変更するのではなく、/vagrant/www/htmlという構成を作り、/var/www/htmlにシンボリックリンクを貼ります。
/vagrant/www/htmlのフォルダ構成は任意です。

[vagrant@localhost ~]$ sudo rm -rf /var/www/html
[vagrant@localhost ~]$ mkdir -p /vagrant/www/html
[vagrant@localhost ~]$ sudo ln -fs /vagrant/www/html /var/www/html

今後は、/vagrant/www/htmlでWeb開発を行うようになります。
例えば、ここにindex.htmlを作成すると、http://192.168.33.10/でアクセスした時に、そのページが表示されるようになります。

5. PHPのインストール

PHPのインストールと同時に、マルチバイトを扱えるように拡張モジュールもインストールします。

[vagrant@localhost ~]$ sudo yum install php php-mbstring

php.iniにmbstringの設定をします。
以下の部分のコメントアウトを外し、環境に応じて値を変更します。

[vagrant@localhost ~]$ sudo vim /etc/php.ini
[PHP]
error_reporting = E_ALL | E_STRICT
display_errors on

[Date]
date.timezone="Asia/Tokyo"

[mbstring]
mbstring.language = Japanese
mbstring.internal_encoding = UTF-8
mbstring.http_input = auto
mbstring.http_output = UTF-8
mbstring.encoding_translation = On
mbstring.detect_order = auto

6. MariaDB(MySQL)のインストール

CentOS7から、デフォルトのRDBMSがMySQLからMariaDBへ変更されました。
MariaDBは、MySQLから派生したRDBMSですが、MySQLと互換があるのでMySQLと同じように使用できます。
大変紛らわしいですが、各所にMySQLの文字が出てきますが気にせずにそのまま進めます。
また、MariaDBではなく、MySQLを使用することもできますが、MySQLの場合は公式サイトから手動でインストールしなくてはならないため、通常はMariaDBの方を使用します。
同時に、PHPからMariaDBを扱えるようにphp-mysqlもインストールします。
その後、MariaDBの初期設定を行います。

[vagrant@localhost ~]$ sudo yum install mariadb mariadb-server mariadb-devel php-mysql
[vagrant@localhost ~]$ mysql_secure_installation
/usr/bin/mysql_secure_installation: 行 379: find_mysql_client: コマンドが見つかりません

NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB
      SERVERS IN PRODUCTION USE!  PLEASE READ EACH STEP CAREFULLY!

In order to log into MariaDB to secure it, we'll need the current
password for the root user.  If you've just installed MariaDB, 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 MariaDB
root user without the proper authorisation.

Set root password? [Y/n] Y
New password: 
Re-enter new password: 
Password updated successfully!
Reloading privilege tables..
 ... Success!


By default, a MariaDB installation has an anonymous user, allowing anyone
to log into MariaDB 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] Y
 ... 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] Y
 ... Success!

By default, MariaDB 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] Y
 - 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] Y
 ... Success!

Cleaning up...

All done!  If you've completed all of the above steps, your MariaDB
installation should now be secure.

Thanks for using MariaDB!

[vagrant@localhost ~]$ sudo systemctl start mariadb

#. まとめ

以上で、最低限の設定は終わりになります。

まとめです。

$ vagrant box add {title} {url}
$ vagrant init {title}
$ vagrant up
$ vagrant ssh (もしくは、ssh -p 2222 vagrant@127.0.0.1)
[vagrant@localhost ~]$ sudo localectl set-locale LANG=ja_JP.UTF8
[vagrant@localhost ~]$ sudo localectl set-keymap jp106
[vagrant@localhost ~]$ logout
$ vagrant reload
$ vagrant ssh (もしくは、ssh -p 2222 vagrant@127.0.0.1)
[vagrant@localhost ~]$ sudo yum upgrade
[vagrant@localhost ~]$ sudo yum install httpd
[vagrant@localhost ~]$ vim /vagrant/vagrantfile
[vagrant@localhost ~]$ logout
$ vagrant reload
$ vagrant ssh (もしくは、ssh -p 2222 vagrant@127.0.0.1)
[vagrant@localhost ~]$ sudo systemctl start httpd
[vagrant@localhost ~]$ sudo firewall-cmd --add-service=http --permanent
[vagrant@localhost ~]$ sudo firewall-cmd --reload
[vagrant@localhost ~]$ sudo rm -rf /var/www/html
[vagrant@localhost ~]$ mkdir -p /vagrant/www/html
[vagrant@localhost ~]$ sudo ln -fs /vagrant/www/html /var/www/html
[vagrant@localhost ~]$ sudo yum install php php-mbstring
[vagrant@localhost ~]$ sudo vim /etc/php.ini
[vagrant@localhost ~]$ sudo yum install mariadb mariadb-server mariadb-devel php-mysql
[vagrant@localhost ~]$ mysql_secure_installation
[vagrant@localhost ~]$ sudo systemctl start mariadb

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

*

*

CAPTCHA