かんたんにlaravel環境が構築できるらしいhomesteadのことをさっき知ったのでやってみようと思いました。
homesteadはVirtualBoxのboxファイル(仮想マシンイメージ)として提供されています。
公式の資料とかだととくに使わない設定もすべてまとめて書いてあるみたいなので、あまり設定せずとりあえず動かしたい人向けです。
【更新履歴】
2020/09/18 vagrantとmysqlのパスワードのことを忘れていたので追記
2020/09/28 簡易サーバーの名前の間違いを修正、homesteadについての勘違いを修正
参考
環境
Microsoft Windows [Version 10.0.18363.1082]
Vagrant 2.2.9
やったこと
boxファイル追加して初期化
公式ページにはいろいろ書いてあるけど普通に考えたらvagrantの手順だけやればええんちゃうかということでボックスを追加。
「C:\>」の行はコマンドプロンプトでの実行です。
C:\>vagrant box add laravel/homestead ==> box: Loading metadata for box 'laravel/homestead' box: URL: https://vagrantcloud.com/laravel/homestead This box can work with multiple providers! The providers that it can work with are listed below. Please review the list and choose the provider you will be working with. 1) hyperv 2) parallels 3) virtualbox 4) vmware_desktop
選択肢がでてきます。
今回はvirtualboxでやるので「3」を入力してEnter
ダウンロードにちょっと時間がかかります。(10分ぐらい?)
Enter your choice: 3 ==> box: Adding box 'laravel/homestead' (v10.1.0) for provider: virtualbox box: Downloading: https://vagrantcloud.com/laravel/boxes/homestead/versions/10.1.0/providers/virtualbox.box Download redirected to host: vagrantcloud-files-production.s3.amazonaws.com box: box: Calculating and comparing box checksum... ==> box: Successfully added box 'laravel/homestead' (v10.1.0) for 'virtualbox'!
initしてVagrantfileを作ります
C:\>vagrant init laravel/homestead A `Vagrantfile` has been placed in this directory. You are now ready to `vagrant up` your first virtual environment! Please read the comments in the Vagrantfile as well as documentation on `vagrantup.com` for more information on using Vagrant.
テキストエディタでVagrantfileのipを編集します。
ファイルのどこかに下記の行があるので、すぐしたにコメントを外したものを追加します。
# config.vm.network "private_network", ip: "192.168.33.10" config.vm.network "private_network", ip: "192.168.33.10"
仮想マシン起動
仮想マシン起動します。
C:\>vagrant up Bringing machine 'default' up with 'virtualbox' provider... ==> default: Importing base box 'laravel/homestead'... ==> default: Matching MAC address for NAT networking... ==> default: Checking if box 'laravel/homestead' version '10.1.0' is up to date... ==> default: Setting the name of the VM: 【VM名】 ==> default: Fixed port collision for 22 => 2222. Now on port 2200. ==> default: Clearing any previously set network interfaces... ==> default: Preparing network interfaces based on configuration... default: Adapter 1: nat default: Adapter 2: hostonly ==> default: Forwarding ports... default: 22 (guest) => 2200 (host) (adapter 1) ==> default: Booting VM... ==> default: Waiting for machine to boot. This may take a few minutes... default: SSH address: 127.0.0.1:2200 default: SSH username: vagrant default: SSH auth method: private key default: default: Vagrant insecure key detected. Vagrant will automatically replace default: this with a newly generated keypair for better security. default: default: Inserting generated public key within guest... default: Removing insecure key from the guest if it's present... default: Key inserted! Disconnecting and reconnecting using new SSH key... ==> default: Machine booted and ready! GuestAdditions are newer than your host but, downgrades are disabled. Skipping. ==> default: Checking for guest additions in VM... ==> default: Configuring and enabling network interfaces... ==> default: Mounting shared folders... default: /vagrant => C:/【VMディレクトリ】
homesteadにログイン
仮想マシンができたのでsshログインしてみます。OSはUbuntu。
FTPなどでログインするときは下記を使います(rootはないようです)
ユーザー名:vagrant
パスワード:vagrant
C:\>vagrant ssh Welcome to Ubuntu 20.04.1 LTS (GNU/Linux 5.4.0-47-generic x86_64) 0 updates can be installed immediately. 0 of these updates are security updates. Welcome to Ubuntu 20.04.1 LTS (GNU/Linux 5.4.0-47-generic x86_64) 0 updates can be installed immediately. 0 of these updates are security updates. vagrant@vagrant:~$
Laravelインストールとプロジェクト作成
composer経由でLaravelをインストールします。
今回はmy_pageというプロジェクトを作っています。
$ sudo composer create-project laravel/laravel --prefer-dist my_page Do not run Composer as root/super user! See https://getcomposer.org/root for details (省略) Application key set successfully.
下記の警告がでましたが気にせず実行しました(むやみにrootで実行するとあぶないのはわかる…)
おそらく実行したフォルダ「/var/www」に対してchownとかでユーザーを設定してないとこういうことになるんでしょう…。
Do not run Composer as root/super user! See https://getcomposer.org/root for details
ちなみに「sudo composer require laravel/homestead –dev」をsudoなしてやった場合、下記のエラーが出ます。
[ErrorException] file_put_contents(./composer.json): failed to open stream: Permission denied
上でつくったmy_pageフォルダに移動して、chownで再帰的にオーナーをvagrantに変更します。
(オーナー変更しないと、仮想サーバーを起動してページアクセスした際にlogファイル開けない的エラーが出ます)
$ cd my_page $ pwd /var/www/my_page $ sudo chown -R vagrant:vagrant /var/www/my_page
簡易サーバー起動とアクセス
laravelをインストールしたディレクトリ(今回は「/var/www/my_page」)で下記コマンドを実行すると簡易サーバーが起動します。
$ php -S 0.0.0.0:8080 -t public
仮想マシンのipアドレスが「192.168.33.10」の場合、下記のurlでアクセスできます。
http://192.168.33.10:8080
簡易サーバーを止めるときはキーボードで「Ctrl + C」とすると止まります。
MySQLへのログイン
デフォルトで「homestead」というテーブルが入っているのでそちらを利用します。
MySQLへのログインコマンドは下記、パスワードを聞かれるので「secret」と入力してenter。
$ mysql -u homestead -p
おわり。