Memo

メモ > 技術 > フレームワーク: Laravel > Homestead: サブドメインと作業ディレクトリを追加

Homestead: サブドメインと作業ディレクトリを追加
※動作確認用の /home/vagrant/code/laravel とは別に、案件ごとの作業領域を作る。 Homesteadを使って複数のLaravelプロジェクトを作成する簡単な方法 - Qiita https://qiita.com/Yorinton/items/08ec8fefcbec71513399 複数のLaravel環境をHomestead上で動かす - Qiita https://qiita.com/miutex/items/ebc13fc78da4a19a3da4 Homesteadでサクッとプロジェクト追加 - Qiita https://qiita.com/Nshota/items/f2c3eba8005672f6c429 ■Homesteadの設定 C:\localhost\home\Homestead\Homestead.yaml のsite部分に以下を追記。(必要に応じて、databases にもデータベース名を追加しておくといいが、別途手動で作成してもいい。)
- map: blog.homestead.test to: /home/vagrant/code/blog/public
■起動 Homesteadをオプション付きで再起動。(Homestead.yaml の内容が再読込される。)
vagrant up --provision
[Laravel] Homestead環境でHomestead.yamlの設定を修正した時の反映方法 https://agatayoshimi.blogspot.com/2015/10/laravel-homesteadhomesteadyaml.html 環境によっては、以下のファイルが参照されていることがあるようなので注意。 C:\Users\[ユーザ名]\.homestead\Homestead.yaml ■nginxの設定 ※大抵の解説ではこの手順に触れられていないので、本来はprovisionで起動した際にHomesteadが自動で行うのかも?
$ sudo su - # cd /etc/nginx/sites-available # cp xxx.homestead.test blog.homestead.test ... 既存の設定を流用。 # vi blog.homestead.test
server_name blog.homestead.test; root "/home/vagrant/code/blog/public"; error_log /var/log/nginx/blog.homestead.test-error.log error; ssl_certificate /etc/nginx/ssl/blog.homestead.test.crt; ssl_certificate_key /etc/nginx/ssl/blog.homestead.test.key;
# service nginx restart
※再起動に失敗する場合、「nginx -t」でnginx設定ファイルの書式を確認できる。 何らかの理由でSSL証明書が作成されないことがあるみたい。SSLアクセスを無効にして起動することはできる。 設定ファイルを複製した際、以下のdefault_serverが他サイトと重複して指定されていないか確認する。複数のサイトに指定されていると、nginxの起動時にエラーになる。
server { listen 80 default_server; listen 443 ssl http2 default_server;
■MySQLの設定(必要に応じて)
$ mysql -u root -p secret GRANT ALL PRIVILEGES ON blog.* TO homestead@localhost IDENTIFIED BY 'secret'; $ mysql -u homestead -p secret CREATE DATABASE blog CHARACTER SET utf8mb4;
■PostgreSQLの設定(必要に応じて)
$ psql -U homestead -h localhost secret CREATE DATABASE blog ENCODING UTF8;
LaravelのHomestead環境でPostgreSQL初期設定を行う - Qiita https://qiita.com/a_shiba/items/762af4ec58395669d435 ■Windows側の設定 C:\localhost\home\homestead\code\blog\public\index.php
<?php phpinfo() ?>
C:/windows/System32/drivers/etc/hosts
192.168.10.10 blog.homestead.test
■アクセス 以下でアクセスできる http://blog.homestead.test 何らかの理由で /etc/nginx/sites-available にシンボリックリンクが張られないことがあるみたい。(設定が認識されない。) その場合、以下のように手動でリンクを張ればアクセスできることがある。
# cd /etc/nginx/sites-enabled # ln -s /etc/nginx/sites-available/blog.homestead.test blog.homestead.test
※Homesteadは 「/etc/nginx/nginx.conf から /etc/nginx/sites-enabled 内の設定ファイルをすべて読み込むようにし、 /etc/nginx/sites-available 内のファイルから必要に応じて /etc/nginx/sites-enabled 内のファイルにシンボリックリンクを張る。」 という仕組みになっている。 つまり sites-enabled に有効にしたいサイトのシンボリックリンクを並べる仕組みになっている。 ■Laravelインストール いったん /home/vagrant/code/blog を削除してから作業開始。
$ cd /home/vagrant/code $ composer create-project --prefer-dist laravel/laravel blog
以下でアクセスできる。 http://blog.homestead.test 引き続き以下を参考に、大抵のプロジェクトで必要になりそうな部分を作業。 https://github.com/refirio/laravel-blog/commits/master
$ cd blog $ composer require laravel-ja/comja5 $ vendor/bin/comja5 $ vendor/bin/comja5 -c $ vendor/bin/comja5 -f
タイムゾーンとロケールを変更。
'timezone' => 'Asia/Tokyo', 'locale' => 'ja',
config\database.php を編集。
'charset' => 'utf8mb4', 'collation' => 'utf8mb4_general_ci',
/.env を編集。(基本的に DB_DATABASE の設定のみでいい。)
DB_CONNECTION=mysql DB_HOST=127.0.0.1 DB_PORT=3306 DB_DATABASE=blog DB_USERNAME=homestead DB_PASSWORD=secret
Userモデルを移動。(移動先は App\DataAccess\Eloquent では無く App\Entities なので注意。) app\Entities\User.php
namespace App\Entities;
不要なマイグレーションを削除。 database\migrations\2014_10_12_100000_create_password_resets_table.php デフォルトのマイグレーションを調整。 database\migrations\2014_10_12_000000_create_users_table.php
public function up() { Schema::create('users', function (Blueprint $table) { $table->engine = 'InnoDB'; $table->increments('id'); $table->string('name', 85)->comment('名前'); $table->string('email', 85)->unique()->comment('メールアドレス'); $table->string('password', 60)->comment('パスワード'); $table->rememberToken(); $table->timestamps(); }); DB::statement('ALTER TABLE users COMMENT \'ユーザ\''); }
作業ディレクトリへ移動。 cd /home/vagrant/code/blog マイグレーションを実行。 php artisan migrate

Advertisement