はじめに
インプルの矢島です。
ふと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.2
Vagrantfileが生成されていると思うので、以下のようにコードを追加します。
ネットワークや権限の設定、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
COMMAND
vagrantを起動します。
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 ssh
ssh接続ができたら、パッケージを導入します。
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 = none
composerをインストール
以下のコマンドで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の機能を試してみたいなと思います。