コンテンツへスキップ

Laravel5.4 – Step1(ローカル開発環境構築)

仕事で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のセットアップ

VirtualBoxVagrantはインストール済みとして進めます

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の方も進めたい…