Ikeda's Blog

Laravelでブログサイトを作る 05. Laravel開発環境の用意

はじめに

Windows11環境に、VirtualBox+Vagrantを使用して環境を作成します。
上記の環境構築方法については前回を御覧ください。

仮想環境に導入するもの

  • CentOS 7.9
  • PHP 7.4
  • MySQL 8.0
  • composer 2.1
  • git 1.8.3.1
  • nodejs 16.13.1

Vagrantfile

vagrantを利用して仮想サーバを作成します。
今回使用するVagrantfileは以下になります。

Vagrant.configure("2") do |config|
    # Box名
    config.vm.box = "CentOS7"

    # ホストオンリーの設定にIPを指定します。ブラウザからアクセスする時等は以下のIPです。
    config.vm.network "private_network", ip: "192.168.56.10"

    # メモリ(数値は自分の環境と相談)
    config.vm.provider "virtualbox" do |vb|
        vb.customize ["modifyvm", :id, "--memory", "1024"]
    end

    # Windows側のファイルを、仮想サーバに認識させる
    # 作業ディレクトリのファイルを、仮想サーバ内では`/vagrant`として扱うようにする
    config.vm.synced_folder ".", "/vagrant", mount_options:['dmode=777','fmode=777']

    # 初回起動時に実行
      config.vm.provision "shell", inline: <<-SHELL
        # タイムゾーン・言語設定の変更
        timedatectl set-timezone Asia/Tokyo
        localectl set-locale LANG=ja_JP.utf8

        # 更新
        yum -y update
        yum -y update kernel
      SHELL

    # 再起動(vagrant-reloadプラグイン必須)
    config.vm.provision "reload"

    # 初回に実行するコマンド(環境を構築する)
    config.vm.provision "shell", inline: <<-SHELL
        # apacheインストール
        yum -y install httpd

        # 邪魔なapache設定を削除
        rm /etc/httpd/conf.d/welcome.conf

        # PHPインストール
        yum -y install epel-release
        rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-7.rpm
        yum -y install --enablerepo=remi,remi-php74 php php-devel php-bcmath php-mbstring php-pdo php-gd php-xml php-mcrypt php-mysql

        # PHP設定調整
        sed -i -e "s/memory_limit = 128M/memory_limit = 1024M/g" /etc/php.ini
        sed -i -e "s/;date.timezone =/date.timezone = Asia\/Tokyo/g" /etc/php.ini
        sudo chmod 777 /var/lib/php/ssession/

        # MySQLインストール
        yum -y localinstall https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm
        yum -y install mysql-community-server

        # MySQL認証方式の指定
        echo 'default-authentication-plugin = mysql_native_password' >> /etc/my.cnf

        # apache/MySQL自動起動設定
        systemctl enable httpd.service
        systemctl enable mysqld

        # ファイアウォール停止
        systemctl stop firewalld
        systemctl disable firewalld

        # composerインストール
        php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
        php composer-setup.php
        php -r "unlink('composer-setup.php');"
        mv composer.phar /usr/local/bin/composer

        # gitインストール
        yum -y install git

        # unzipインストール
        yum -y install unzip

        # Node.js(npm)インストール(yumで古いバージョンを取得→nで新しいものを取得→古い方を削除)
        yum -y install nodejs npm
        npm install -g n
        n stable
        yum -y remove nodejs npm
    SHELL

    # 再起動
    config.vm.provision "reload"
end

サーバ内作業

vagrant sshでサーバ内に入って、以下の作業を行えば開発環境の構築は完了です。

$ pwd
/home/vagrant

# [コメント] apache設定の調整
$ sudo sed -i -e "s/User apache/User vagrant/g" /etc/httpd/conf/httpd.conf
$ sudo sed -i -e "s/Group apache/Group vagrant/g" /etc/httpd/conf/httpd.conf
$ sudo sed -i -e "s/DirectoryIndex index.html/DirectoryIndex index.php index.html/g" /etc/httpd/conf/httpd.conf
$ sudo sed -i -e "s/\/var\/www\/html/\/home\/vagrant\/blog\/public/g" /etc/httpd/conf/httpd.conf
$ sudo sed -i -e "s/AllowOverride None/AllowOverride All/g" /etc/httpd/conf/httpd.conf

# [コメント] Laravelインストーラ取得
$ composer global require laravel/installer
$ echo "export PATH=~/.config/composer/vendor/bin:$PATH" >> ~/.bash_profile
$ source ~/.bash_profile

# [コメント] Laravelプロジェクト作成
$ laravel new blog

# [コメント] デフォルトパスワードを表示
$ sudo grep "A temporary password is generated" /var/log/mysqld.log | sed -s 's/.*root@localhost: //'

# [コメント] rootパスワードを設定、データベース作成
# [コメント] パスワードを求められるので、一手前で表示させたデフォルトパスワードを使用する
$ mysql -uroot -p --connect-expired-password -e "ALTER USER 'root'@'localhost' IDENTIFIED BY 'NEW_pass_123'; flush privileges;CREATE DATABASE blog;"

# [コメント] ENVにMySQLパスワードを設定
$ sed -i -e "s/DB_PASSWORD=/DB_PASSWORD=NEW_pass_123/g" /home/vagrant/blog/.env

# [コメント] apache再起動
$ sudo systemctl restart httpd

動作確認

http://192.168.56.10/にアクセスし、Laravelのwelcome画面が表示されたら無事、構築完了です。