はじめに
インプルの矢島です。
ふとLaravelをVirtualBoxで環境構築してみたいと思ったので、試すことにしました。
(2023/3/25更新)
 Laravelからmysqlへ接続するためのphp.iniの設定方法を追記しました。
PHPをインストールするときの関連ライブラリのインストール方法を追記しました。
環境構築
実際にやることは以下の内容です。
- 仮想マシンを立てる
- phpのインストール
- composerのインストール
- laravelのインストール
- apacheの起動設定
- mysqlのインストール
構築する環境
- centos7.2
- php8.1
- Laravel 10.0.4
- mysql5.7
最終的にできるディレクトリ
.
├── centos7.2
│   └── Vagrantfile
└── laravel10-app
    ├── README.md
    ├── app
    ├── artisan
    ├── bootstrap
    ├── composer.json
    ├── composer.lock
    ├── config
    ├── database
    ├── package.json
    ├── phpunit.xml
    ├── public
    ├── resources
    ├── routes
    ├── storage
    ├── tests
    ├── vendor
    └── vite.config.js仮想マシンを立てる
virturalboxをインストールします。
virtualboxとはホストOS(macOS)の中に仮想マシンを構築するためのソフトです。
vagrantをインストールします。
vagrantとは、仮想マシンを簡単に構築して操作するソフトウェアです。
centos7.2をインストールします。
任意のディレクトリに移動して以下のコマンドを実行します。
vagrant init bento/centos-7.2Vagrantfileが生成されていると思うので、以下のようにコードを追加します。
ネットワークや権限の設定、apacheの起動設定をします。(vagrantで起動するたびにapacheを起動させたいため)
  # Create a forwarded port mapping which allows access to a specific port
  # within the machine from a port on the host machine. In the example below,
  # accessing "localhost:8080" will access port 80 on the guest machine.
  # NOTE: This will enable public access to the opened port
    config.vm.network "forwarded_port", guest: 80, host: 8080, host_ip: "127.0.0.1" ←これを追加
  # config.vm.network "forwarded_port", guest: 80, host: 8080
   config.vm.synced_folder "..", "/vagrant", mount_options: ['dmode=777','fmode=777'] ←これを追加
   config.vm.provision "shell", run: "always",  inline: <<-COMMAND     ←これを追加
       sudo systemctl start httpd
  COMMANDvagrantを起動します。
vagrant up※以下エラーが出る可能性があります。その場合は、こちらの記事を参考に解決してください。
The following SSH command responded with a non-zero exit status.
Vagrant assumes that this means the command failed!
umount /mnt
Stdout from the command:※また、Guest Addionsのバージョンエラーが起きる可能性があるかと思います。その場合は、vagrant-vbguestというプラグインをインストールしてください。(詳細)
仮想環境に接続します。
vagrant sshssh接続ができたら、パッケージを導入します。
sudo yum -y groupinstall "development tools"
sudo yum update //システム全体のパッケージのアップデート
sudo yum clean all //ダウンロードしたパッケージと古いヘッダを削除phpのインストール
次にphpをインストールします。
※Laravel10はphp8.1以上でないと使用できないとのことなので、8.1をインストールします。
引き続きssh接続した仮想環境の中で作業します。
sudo yum install epel-release
sudo rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-7.rpm
//オプションは適切に選ぶ
sudo yum -y install --enablerepo=remi,remi-php81 --skip-broken php php-mcrypt php-mbstring php-mysqlnd php-opcache php-apcu php-common php-cli php-pear php-pdo php-mysqlnd php-pgsql php-pecl-memcache php-pecl-memcached php-gd php-mbstring php-mcrypt php-xml php-xmlrpc php-curl php-opcache php-fpm php-redis php-pecl-apc php-mysql php-gd php-xml php-bcmath php-gettext mysql-server php-xml php-imagick php-ImageMagick ImageMagick php-xdebug php-pecl-xdebug3
php -v無事php8.1がインストールされています。

php.iniを設定します。
date.timezone = "Asia/Tokyo"
mbstring.language = Japanese
mbstring.internal_encoding = UTF-8
mbstring.http_input = UTF-8
mbstring.http_output = pass
mbstring.encoding_translation = On
mbstring.detect_order = auto
mbstring.substitute_charset = nonecomposerをインストール
以下のコマンドでcomposerをインストールします。
composerとはphpのパッケージ管理ツールです。
curl -sS https://getcomposer.org/installer | php
sudo mv composer.phar /usr/local/bin/composer
composer -v
上記画像の結果が表示されたらOKです。
Laravel10のインストール
vagrantディレクトリに移動して、以下コマンドでLaravel10のプロジェクトを作成します。
cd /vagrant
composer create-project laravel/laravel laravel10-app "10.*"
cd laravel10-app
php artisan --version
上記画像の通りlaravelのバージョンが確認できたらOKです。
apacheの起動設定
/etc/httpd/conf/http.confを編集します。
# User apache
# Group apache
User vagrant ←起動ユーザーとグループをvagrantに変更する
Group vagrant
#
# DocumentRoot: The directory out of which you will serve your
# documents. By default, all requests are taken from this directory, but
# symbolic links and aliases may be used to point to other locations.
#
DocumentRoot "/var/www/html/laravel10-app/public" ←変更
<Directory "var/www/html/laravel10-app/public"> ←追加
        Require all granted
        AllowOverride All
</Directory>以下コマンドを実行します。
やっていることは、、
①apacheの起動
②ディレクトリを移動して、vagrantディレクトリの中に作成したLaravel10のプロジェクトのシンボリックリンクを貼る。
③Laravelのstorageディレクトリの権限を変更する
sudo systemctl start httpd.service
sudo systemctl enable httpd.service //apacheの自動起動設定をON
// ディレクトリ移動
cd /var/www/html
//シンボリックリンクを貼る
sudo ln -s ../../../vagrant/laravel10-app/ laravel10-app
cd laravel10-app
sudo chmod -R 777 storage/無事Laravelの初期画面が表示されました。
http://localhost:8080/

mysqlをインストール
以下コマンドを実行してmysqlをインストールします。
sudo rpm -Uvh http://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm
sudo rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022
sudo yum install --enablerepo=mysql57-community mysql-community-server
mysqld --version
// mysql起動
sudo systemctl enable mysqld.service
sudo systemctl start mysqld.serviceログインするための初期パスワードを確認します。
sudo grep 'temporary password' /var/log/mysqld.log
→ 2023-03-18T14:59:26.874484Z 1 [Note] A temporary password is generated for root@localhost: ******* ←これがパスワードmysqlに入ります。
mysql -u root -p
// パスワードの制限をゆるくする
set global validate_password_length=6;
set global validate_password_policy=LOW; 
// パスワードをpasswordに変更する。(忘れるため)
ALTER USER 'root'@'localhost' IDENTIFIED BY 'password';これで、mysqlにrootユーザーでpasswordというパスワードでアクセスできるようになりました。
laravelから接続するときには、etc/php.iniの以下コメントアウトを解除しておく必要があります。
 extension=/path/to/extension/mysqli.soまとめ
今回はLaravel10の開発環境をVirtualboxとVagrantを使って構築してみました。
思ったより簡単に構築できたのではないでしょうか。
次はこの環境でLaravel10の機能を試してみたいなと思います。
