20200812のlaravelに関する記事は4件です。

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/cache

SELinuxをOFFに

# 都度、SELinuxをoffにするか
sudo setenforce 0

# 設定ファイルを書き換えて、selinux無効化してOSを再起動
vi /etc/selinux/config
SELINUX=disabled

・selinuxとは

Laravelプロジェクトを、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/n2160a2e98b4b

hostsの設定

C:\Windows\System32\drivers\etcにあるhostsファイルを開きます。
管理者権限を使ってファイルを開かないと保存できないので注意。
左側に仮想マシンのIPアドレスを、右側に紐づけたいホスト名を記載してください。

hosts
例:
IPアドレス      ホスト名
192.168.56.101     test.com
192.168.56.101     test2.com

ホストブラウザで確認

以下の様に表示出来たら成功です。
image.png

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

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 
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

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#L1node:latest を使っててこのままだとイメージサイズが大きいので変更したほうがよいです。

インストール

Composerを使ってインストールできます。

composer require shipping-docker/vessel

これはかなり嬉しいですね。 git submodule add とかできれば書きたくない。

次に設定ファイルを publish します。

php artisan vendor:publish --provider="Vessel\VesselServiceProvider"

すると docker ディレクトリに Docker の各種ファイル、プロジェクトルートに docker-compose.ymlvessel というシェルスクリプトがコピーされます。

で最後に

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 が得意なわけじゃないのでこういったパッケージがあるのは嬉しいですね。

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

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#L1node:latest を使っててこのままだとイメージサイズが大きいので変更したほうがよいです。

インストール

Composerを使ってインストールできます。

composer require shipping-docker/vessel

これはかなり嬉しいですね。 git submodule add とかできれば書きたくない。

次に設定ファイルを publish します。

php artisan vendor:publish --provider="Vessel\VesselServiceProvider"

すると docker ディレクトリに Docker の各種ファイル、プロジェクトルートに docker-compose.ymlvessel というシェルスクリプトがコピーされます。

で最後に

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 が得意なわけじゃないのでこういったパッケージがあるのは嬉しいですね。

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む