仕事でLaravelを使用することになったので、Vagrantを使ってLaravel5.4の開発環境構築メモ。
方針
- 面倒な環境構築手順がなくなるようにする
- ポータビリティを優先する
つまり、どのマシンでも誰でも簡単にセットアップできること
環境
開発環境
- macOS Sierra 10.12.6
- VirtualBox 5.1.26 r117224
- Vagrant 1.9.7
- PhpStorm 2017.2
- PHP 5.6
VM環境(バージョンは作成時点)
- CentOS 7.3
- PHP 7.1
- Apache 2.4
- MariaDB 10.2
その他の設定
– IP:192.168.56.100 (ホストオンリーネットワーク)
– DB名:dbname
– DBユーザー:dbuser
– パスワード:dbpassword
最終的なディレクトリ構造
hoge-project/
┣Laravelの各種ファイル
┣Vagrantfile
┣provision.sh
┗composer.phar
インストール手順
Composerのインストール
公式ドキュメント(https://getcomposer.org/download/)に従い、以下のコマンドを実行してインストール
php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
php -r "if (hash_file('SHA384', 'composer-setup.php') === '669656bab3166a7aff8a7506b8cb2d1c292f042046c5a994c43155c0be6190fa0355160742ab2e1c88d40d5be660b410') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
php composer-setup.php
php -r "unlink('composer-setup.php');"
Laravelのインストール
まずはインストール
php composer.phar create-project laravel/laravel hoge-project
hoge-projectというディレクトリができてその中にLaravelの中身が展開されます。
DB設定の書き換え
hoge-project/.env
の以下の値を書き換えます。
DB_DATABASE=dbname
DB_USERNAME=dbuser
DB_PASSWORD=dbpassword
言語設定の書き換え
hoge-project/config/app.php
の設定を変更します。
return [
// 略
'timezone' => 'Asia/Tokyo',
'locale' => 'ja',
// 略
];
VMのセットアップ
※VirtualBoxとVagrantはインストール済みとして進めます
Vagrantfileの作成
hoge-projectの中に作成します。
Vagrant.configure("2") do |config|
config.vm.box = "geerlingguy/centos7"
config.vm.synced_folder ".", "/vagrant"
config.vm.network :private_network, ip: "192.168.56.100"
config.vm.provision "shell", path: "provision.sh"
config.vm.provider "virtualbox" do |vb|
vb.memory = 2048
vb.cpus = 2
vb.gui = false
end
end
プロビジョニングファイルの作成
Vagrantfileと同じディレクトリに「provision.sh」を作成します。
やってることは大まかに以下の4点です。シェルが読めればなんとかなるd( ̄  ̄)
– OSのロケール、タイムゾーンを日本に変更
– PHP7.1,Apache2.4,MySQL(MariaDB10.2)をインストール
– ApacheのDocumentRoot設定と自動起動設定
– MySQLのDB・ユーザーの作成と自動起動設定
※「mysql -e …」の中のdbuser, dbpassword, dbnameはデータベースに応じて変更してください
※開発環境用ということでApacheの設定ファイル書き換えがひどいのはご愛嬌
yum update -y
yum group install "Development Tools" -y
timedatectl set-timezone Asia/Tokyo
localectl set-locale LANG=ja_JP.UTF-8
rpm -ivh http://rpms.famillecollet.com/enterprise/remi-release-7.rpm
yum --enablerepo=remi,epel,remi-php71 -y install php php-mbstring php-pdo_mysql php-pdo php-zlib php-ctype php-session php-json php-xml php-libxml php-openssl php-zip php-curl php-fileinfo php-hash php-apuc php-mcrypt mod_ssl
sed -ri "s/^(Group) .+/\1 vagrant/" /etc/httpd/conf/httpd.conf
sed -i "s/\/var\/www\/html/\/vagrant\/public/g" /etc/httpd/conf/httpd.conf
sed -ri "s/(AllowOverride) .+/\1 All/g" /etc/httpd/conf/httpd.conf
sed -ri "s/#?(DocumentRoot) .+/\1 \"\/vagrant\/public\"/" /etc/httpd/conf.d/ssl.conf
systemctl enable httpd
echo "[mariadb]
name=MariaDB
baseurl=http://yum.mariadb.org/10.2/centos7-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1" > /etc/yum.repos.d/mariadb.repo
yum install -y MariaDB-server MariaDB-client
systemctl enable mariadb
systemctl start mariadb
mysql -e "GRANT ALL ON *.* TO dbuser@'%' IDENTIFIED BY 'dbpassword'"
mysql -e "CREATE DATABASE dbname CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci"
reboot
NFSでのディレクトリ共有設定
NFSを使ってディレクトリを共有する場合、起動時に毎回パスワードを聞かれて面倒なためパスワードを聞かれないようにします。
sudo visudo
を実行して以下の4行をファイルの最後に追加します。
Cmnd_Alias VAGRANT_EXPORTS_ADD = /usr/bin/tee -a /etc/exports
Cmnd_Alias VAGRANT_NFSD = /sbin/nfsd restart
Cmnd_Alias VAGRANT_EXPORTS_REMOVE = /usr/bin/sed -E -e /*/ d -ibak /etc/exports
%admin ALL=(root) NOPASSWD: VAGRANT_EXPORTS_ADD, VAGRANT_NFSD, VAGRANT_EXPORTS_REMOVE
WindowsではVagrantのプラグインvagrant-winnfsd
を入れます。
他の*nix系マシンなら以下のページを見て
https://www.vagrantup.com/docs/synced-folders/nfs.html#root-privilege-requirement
VM起動
vagrant up
※初回起動時は結構時間がかかるので気長に待ちましょう
VMの起動が完了したら必要なものがインストールされたかチェック
vagrant ssh
# ↓はVMの中で実行
php -v
httpd -v
mysql -v
実行してこんな感じで表示されればOK
[vagrant@localhost ~]$ php -v
PHP 7.1.8 (cli) (built: Aug 2 2017 12:13:05) ( NTS )
Copyright (c) 1997-2017 The PHP Group
Zend Engine v3.1.0, Copyright (c) 1998-2017 Zend Technologies
[vagrant@localhost ~]$ httpd -v
Server version: Apache/2.4.6 (CentOS)
Server built: Apr 12 2017 21:03:28
[vagrant@localhost ~]$ mysql -v
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 8
Server version: 10.2.7-MariaDB MariaDB Server
動作確認
https://192.168.56.100/ にアクセスして以下の画面が表示されればOK。
—
とりあえずのセットアップは完了しましたが、
vagrant up
でエラーになったり、共有ディレクトリのマウントをしくじる→httpd起動しないコンボになったりと不安定です。
次回はこのあたりの調整とエディタ、マイグレーションの設定をしていきます。
TS+Vue+webpackの方も進めたい…