- 投稿日:2020-08-12T18:18:25+09:00
VirtualBox内にLaravelをインストールしてホストブラウザで表示
はじめに
前回書いた記事「VirtualBoxを使って、LAMP環境の構築」の続きです。
タイトル通りVirtualBox内にLaravelをインストールしてホストブラウザから確認できるようにしたいと思います。ついでに2つプロジェクトを作成し、バーチャルホストの設定をして、1つのWebサーバーで複数のホスト名を同時運用できるようにします。
環境
前回からそのまま
CentOS7.*
apache2.*
MySQL5.7.*
PHP7.1.*
vagrant不使用Laravel5.6
Laravelのプロジェクト作成
今回apacheでlaravelを動かしたいのでapacheドキュメントルートでプロジェクト作成。
#ドキュメントルートに移動 cd /var/www/html/ #バージョン指定して、プロジェクトを作成 composer create-project --prefer-dist laravel/laravel=5.7 プロジェクト名 composer create-project --prefer-dist laravel/laravel=5.7 プロジェクト2名global requireで、グローバル環境にlaravelのインストーラをインストールする方法もありますが、
プロジェクトごとにライブラリのパッケージを管理できるcomposerのメリットが薄くなってしまうので今回は使用しません。書き込み権限変更
このままApacheで起動しても、「The stream or file "/var/www/html/プロジェクト名/storage/logs/laravel.log" could not be opened in append mode: failed to open stream: Permission denied」というエラーがでるので、
storageディレクトリに対して、apacheへ書き込み権限を付与
sudo chmod -R 777 app/storage sudo chmod -R 777 bootstrap/cacheSELinuxをOFFに
# 都度、SELinuxをoffにするか sudo setenforce 0 # 設定ファイルを書き換えて、selinux無効化してOSを再起動 vi /etc/selinux/config SELINUX=disabledLaravelプロジェクトを、apacheで動かす
vi /etc/httpd/conf/httpd.conf
#以下を追記 # バーチャルホスト設定:1つのWebサーバーで複数のホスト名を運用するために設定。 # 指定したホスト名やIPアドレスだけに設定するディレクティブ。 <VirtualHost *:80> # アクセスされるホスト名 ServerName test.com:80 # クライアントからのリクエストに対して対応するコンテンツを配置しておく場所 # laravelプロジェクトのpublicディレクトリを指定する。 DocumentRoot /var/www/html/プロジェクト名/public # DocumentRootと同じ場所を指定。 <Directory "/var/www/html/プロジェクト名/public"> AllowOverride All Require all granted </Directory> </VirtualHost> <VirtualHost *:80> DocumentRoot /var/www/html/プロジェクト2名/public ServerName test2.com:80 <Directory "/var/www/html/プロジェクト2名/public"> AllowOverride All Require all granted </Directory> </VirtualHost>変更したらApacheの再起動をする。
systemctl reload httpd
参考サイト:
https://note.com/mihi_kul/n/n2160a2e98b4bhostsの設定
C:\Windows\System32\drivers\etc
にあるhostsファイルを開きます。
管理者権限を使ってファイルを開かないと保存できないので注意。
左側に仮想マシンのIPアドレスを、右側に紐づけたいホスト名を記載してください。hosts例: IPアドレス ホスト名 192.168.56.101 test.com 192.168.56.101 test2.comホストブラウザで確認
- 投稿日:2020-08-12T15:09:35+09:00
laravel SQLSTATE[HY000] [2002] Connection refused
SQLSTATE[HY000] [2002] Connection refused (SQL: select * from information_schema.tables where table_schema = laravel and table_name = migrations and table_type = 'BASE TABLE')エラー対処
メモ
.envの修正もしたのに解決しなかった場合、下記コマンド実行したら解消しました。
php artisan key:generate php artisan cache:clear php artisan route:clear php artisan config:clear php artisan view:clear
- 投稿日:2020-08-12T12:47:48+09:00
Laravel で Docker 使いたいなら Vessel にしておこう
Vessel そこそこ使ってる人はいるんだろうけど、 Laradock 使ってツラいことになってる人がそこそこいそうなので Vessel 使うと楽だよということをに書いておきます。
Vessel とは
Vessel は簡単に下記環境を Docker で作成することができます。
- PHP7.4
- MySQL 5.7
- Redis
- NodeJS, NPM, Yarn, Gulp
ちょっと自分の環境にあわない(例えばデータベースに PostgreSQL を使っている等)場合は書き換えることができます(各種ファイルがコピーされるだけなので)。おおむね、PHP, データベース, キャッシュストレージ, NodeJS があれば 8〜9 割くらいの現場ではフィットするんじゃないでしょうか。
使用にあたっての注意点(追記)
Vessel は https://github.com/shipping-docker/vessel/blob/master/docker-files/docker/node/Dockerfile#L1 で
node:latest
を使っててこのままだとイメージサイズが大きいので変更したほうがよいです。インストール
Composerを使ってインストールできます。
composer require shipping-docker/vesselこれはかなり嬉しいですね。
git submodule add
とかできれば書きたくない。次に設定ファイルを publish します。
php artisan vendor:publish --provider="Vessel\VesselServiceProvider"すると
docker
ディレクトリに Docker の各種ファイル、プロジェクトルートにdocker-compose.yml
とvessel
というシェルスクリプトがコピーされます。で最後に
bash vessel initとすれば準備完了。簡単ですね。
使い方
コンテナを起動するには
./vessel startとすればコンテナが起動します。停止するには
./vessel stopで停止します。
この
vessel
というシェルスクリプトが上手くできていて、Docker のコマンド(自分はすぐ忘れる)を補ってくれます。例えばコンテナ内でphp artisan xxx
したい時は./vessel artisan xxx (tinker とか make:controller とか)でOKです。上記コマンドは
docker-compose exec -u ユーザー名 コンテナ名 php artisan コマンドと同じですが、かなり短くなって覚えやすくなってるのがわかると思います。他にも
./vessel testで PHPUnit でテストができたり
./vessel node or npm or yarnで各種コマンドが実行できたり
./vessel dumpで
mysqldump
が実行できたり./vessel mysqlで MySQL コマンドが実行できたり
./vessel ssh コンテナ名でコンテナに入ったりできます。
あとは…そうですね。私はホストOSがUbuntuなので dockerでvolumeをマウントしたときのファイルのowner問題 が発生して困ることが多いのですがこの辺にも対処してくれています。
まとめ
Docker を開発環境と割り切って使うのであれば Vessel は非常におすすめです。そうでなくても
vessel
ファイルをちょっとカスタマイズして活用するのもいいのではと思います。私は理由があって Vessel が使えない現場でもvessel
ファイルっぽいものを作って導入しています。プロジェクトメンバー全員が Docker に習熟していれば必要ないかもしれませんが、私も Docker が得意なわけじゃないのでこういったパッケージがあるのは嬉しいですね。
- 投稿日:2020-08-12T12:47:48+09:00
Laravel で Docker 使って開発したいなら Vessel にしておこう
Vessel そこそこ使ってる人はいるんだろうけど、 Laradock 使ってツラいことになってる人がそこそこいそうなので Vessel 使うと楽だよということをに書いておきます。
Vessel とは
Vessel は簡単に下記環境を Docker で作成することができます。
- PHP7.4
- MySQL 5.7
- Redis
- NodeJS, NPM, Yarn, Gulp
ちょっと自分の環境にあわない(例えばデータベースに PostgreSQL を使っている等)場合は書き換えることができます(各種ファイルがコピーされるだけなので)。おおむね、PHP, データベース, キャッシュストレージ, NodeJS があれば 8〜9 割くらいの現場ではフィットするんじゃないでしょうか。
使用にあたっての注意点(追記)
Vessel は https://github.com/shipping-docker/vessel/blob/master/docker-files/docker/node/Dockerfile#L1 で
node:latest
を使っててこのままだとイメージサイズが大きいので変更したほうがよいです。インストール
Composerを使ってインストールできます。
composer require shipping-docker/vesselこれはかなり嬉しいですね。
git submodule add
とかできれば書きたくない。次に設定ファイルを publish します。
php artisan vendor:publish --provider="Vessel\VesselServiceProvider"すると
docker
ディレクトリに Docker の各種ファイル、プロジェクトルートにdocker-compose.yml
とvessel
というシェルスクリプトがコピーされます。で最後に
bash vessel initとすれば準備完了。簡単ですね。
使い方
コンテナを起動するには
./vessel startとすればコンテナが起動します。停止するには
./vessel stopで停止します。
この
vessel
というシェルスクリプトが上手くできていて、Docker のコマンド(自分はすぐ忘れる)を補ってくれます。例えばコンテナ内でphp artisan xxx
したい時は./vessel artisan xxx (tinker とか make:controller とか)でOKです。上記コマンドは
docker-compose exec -u ユーザー名 コンテナ名 php artisan コマンドと同じですが、かなり短くなって覚えやすくなってるのがわかると思います。他にも
./vessel testで PHPUnit でテストができたり
./vessel node or npm or yarnで各種コマンドが実行できたり
./vessel dumpで
mysqldump
が実行できたり./vessel mysqlで MySQL コマンドが実行できたり
./vessel ssh コンテナ名でコンテナに入ったりできます。
あとは…そうですね。私はホストOSがUbuntuなので dockerでvolumeをマウントしたときのファイルのowner問題 が発生して困ることが多いのですがこの辺にも対処してくれています。
まとめ
Docker を開発環境と割り切って使うのであれば Vessel は非常におすすめです。そうでなくても
vessel
ファイルをちょっとカスタマイズして活用するのもいいのではと思います。私は理由があって Vessel が使えない現場でもvessel
ファイルっぽいものを作って導入しています。プロジェクトメンバー全員が Docker に習熟していれば必要ないかもしれませんが、私も Docker が得意なわけじゃないのでこういったパッケージがあるのは嬉しいですね。