はじめに
Laravelでの開発にあたり、自PC上にvagrantで仮想環境を構築します。
既に世の中にたくさん情報がありますが、途中でエラーが発生したり、
複数の情報を合わせて見なければならなかったりだったので、自分用のメモです。
環境
インストールするもの
- CentOS 6.7
- Apache2
- MySQL5.7
- PHP7
- Composer1.4
Vagrantfileについて
Vagrantfile
と shell
は以下のURLに登録しているものを使用します。
https://gist.github.com/ayayan-z/e09730a3cb4ef54ff4016f54a9a6d4fc
-
Vagrantfile
内のbox名は、必要に応じて書き換えてください。config.vm.box = "centos6.7"
- 基本的に上記以外の書き換えは不要です。
-
lamp.sh
によって、上記の「インストールするもの」 全てがインストールされます。
手順
1. vagrantを起動する
$ vagrant up
2. vagrantにssh接続する
$ vagrant ssh
3. local と vagrant 間でファイル共有できるようにする
3-1. Vagrantfile
の 以下の部分のコメントアウトを外す
config.vm.synced_folder "./", "/var/www/html",
:owner => "apache",
:group => "apache",
:mount_options => ["dmode=777,fmode=775"]
※ Laravelプロジェクト作成後に 権限関連をごにょごにょしなくて良いように、上記のように設定しました。
3-2. vagrantを再起動する
$ vagrant halt
$ vagrant up
3-X. 再起動でエラーが発生した場合...
Failed to mount folders in Linux guest. This is usually because
the "vboxsf" file system is not available. Please verify that
the guest additions are properly installed in the guest and
can work properly. The command attempted was:
mount -t vboxsf -o uid=`id -u apache`,gid=`getent group apache | cut -d: -f3`,dmode=777,fmode=775 vagrant /vagrant
mount -t vboxsf -o uid=`id -u apache`,gid=`id -g apache`,dmode=777,fmode=775 vagrant /vagrant
The error output from the last command was:
/sbin/mount.vboxsf: mounting failed with the error: No such device
下記の記事で解決できました。
http://qiita.com/osamu1203/items/10e19c74c912d303ca0b
3-4. 確認
以下のようにインストールされました。(2017.07.06 現在)
$ vagrant ssh
[vagrant@localhost vagrant]$ httpd -v
Server version: Apache/2.2.15 (Unix)
Server built: Mar 22 2017 06:52:55
[vagrant@localhost vagrant]$ mysqld --version
mysqld Ver 5.7.18 for Linux on x86_64 (MySQL Community Server (GPL))
[vagrant@localhost vagrant]$ php -v
PHP 7.0.21 (cli) (built: Jul 5 2017 14:45:27) ( NTS )
Copyright (c) 1997-2017 The PHP Group
Zend Engine v3.0.0, Copyright (c) 1998-2017 Zend Technologies
with Zend OPcache v7.0.21, Copyright (c) 1999-2017, by Zend Technologies
with Xdebug v2.5.5, Copyright (c) 2002-2017, by Derick Rethans
[vagrant@localhost vagrant]$ composer --version
Composer version 1.4.2 2017-05-17 08:17:52
4. Laravelインストール & プロジェクト作成
インストール、プロジェクト作成、一気にやります。
[vagrant@localhost vagrant]$ cd /vagrant
[vagrant@localhost vagrant]$ composer create-project --prefer-dist laravel/laravel laravel_app
/var/www/html
ではなく、 /vagrant
で実行するのがポイント
( /var/www/html
だとエラーになる。なぜ。。。)
以下のバージョンがインストールされました。(2017.07.06 現在)
[vagrant@localhost laravel_app]$ cd /vagrant/laravel_app/
[vagrant@localhost laravel_app]$ php artisan --version
Laravel Framework 5.4.28
5. Apacheの設定
5-1. httpd.conf
を編集する
[vagrant@localhost vagrant]$ sudo vi /etc/httpd/conf/httpd.conf
この部分を...
DocumentRoot "/var/www/html"
# ...
# ...
<Directory "/var/www/html">
↓以下のように書き換える
DocumentRoot "/var/www/html/laravel_app/public"
# ...
# ...
<Directory "/var/www/html/laravel_app/public">
5-2. apahce再起動
[vagrant@localhost vagrant]$ sudo service httpd restart
6. 動作確認
でけた。
7. ついでに
MySQLのパスワードを簡単なものに変えておきます。
初期パスワードを確認します。
[vagrant@localhost vagrant]$ grep -e 'A temporary password is generated for root@localhost' /var/log/mysqld.log
初期パスワードで、mysqlに接続します。
[vagrant@localhost vagrant]$ mysql -u root -p
パスワードを変更します。
mysql> SET GLOBAL validate_password_length=4;
mysql> SET GLOBAL validate_password_policy=LOW;
mysql> set password for root@localhost=password('root');