Laravelでコマンドを使っていろいろなことをするときに、「コマンドラインで」って言われることが多いのだけれども、具体的にWindowsのコマンドプロンプトなの?sshでつないでlinux上で動かすの?ってちょっとわからない時が多すぎる気がする。
いつかまた泣きそうになる気がするので、泣く前に見られる情報を書いておく。
尚、環境は以下の通り。
・ホストOS:Windows10
・開発環境:Homestead→Vagrant上でLinuxが起動
DBはMySQL
関係ないけど、VSCodeが使いやすくてびっくりだよ。
簡単に言っておくと
vagrantのコマンド→Windowsのコマンドプロンプトで実行
プロジェクトに対して実行するコマンド→linuxのコンソールで実行
各論
Vagrantの起動(Vagrant up)
さすがにこれはWindowsのコマンドプロンプトから起動ってわかるね。
Homesteadをインストールしたフォルダーに移動してからコマンド実行してください。
C:{Homesteadをインストールしたフォルダ}>vagrant up
Vagrantの終了(Vagrant halt)
当然起動と同じ、Windowsのコマンドプロンプトです。Homesteadをインストールしたフォルダに移動してコマンド実行してください。
C:{Homesteadをインストールしたフォルダ}>vagrant halt
Laravelプロジェクトの作成(composer)
これはVagrant上のlinuxから実行します。
Vagrant上のLinuxにアクセスするには、Vagrant sshでVagrant上のlinuxのコンソールを開きます。
Vagrant sshはWindows10のコマンドプロンプトから入れます。
C:{Homesteadをインストールしたフォルダ}>vagrant ssh
そうするとあら不思議、今までWindows10のコマンドプロンプトだった画面がlinuxのコンソール画面に早変わり!
linux上でコマンドを入力する場合は、vagrant sshでlinuxに接続してからコマンド実行する。
尚、laravelプロジェクトを作成するときはlinux上でプロジェクトを作成するディレクトリに移動してからコマンドを実行する。
Homesteadのデフォルトの開発ディレクトリはcodeなので、通常はcodeディレクトリに移動してからプロジェクトを作成する。
※note
Homesteadでは、VagrantでホストOS(ここではWindows10)とゲストOS(ここではlinux Ubuntu)で共有する共有フォルダーが設定される。
[設定される共有フォルダー]
home_vagrabt_code C:¥{ユーザーフォルダ}¥code
vagrant C:¥{ユーザーフォルダ}¥Homestead
これらのフォルダーはホストOSからもゲストOSからも参照・更新することができる。
【コマンド例】
vagrant@homestead:~$ cd code
vagrant@homestead:~code$ composer create-project laraavel/laravel testProject
npmインストール
npm installはWindowsから実行しないと上手く動かなかった。
どうやら権限的なものが関係しているらしい。
ちなみにインストールしてしまえば、npm run devなどはWindowsでもlinuxでも同様に実行できました。
artisanコマンド
linuxのコンソール画面で実行するときと、Windowsからするときと両方ある。
どちらの場合もプロジェクトのフォルダに移動してから実行する。実行した結果は移動したプロジェクト内に反映される。
・linux(ゲストOS)で動かすものの例
php artisan migrate
→ホストOSからだとDBが見つからないようだ
make:~のコマンドはlinux,Windowsどちらでもいけた。
シンボリックリンクを張るstorage:linkはWindowsでいけた。linuxではエラーが出た。
migtrateはlinuxでいけた。Windowsではエラーになった。
MySQLを立ち上げる
linuxコンソールで実行する。
MySQLコマンドはどのディレクトリにいても実行できます。
【コマンド例:homesteadのhomeディレクトリで実行】
vagrant@homestead:~$ mysql -u homestead -p
デフォルトの設定値では、ユーザーは「homestead」、パスワードは「secret」です。
変更する場合は、プロジェクト内の.envファイル内の「DB_USERNAME」、「DB_PASSWORD」の設定値を変更してみ。
