メモ > 技術 > フレームワーク: 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
※再起動に失敗する場合、「nginx -t」でnginx設定ファイルの書式を確認できる
何らかの理由でSSL証明書が作成されないことがあるみたい。SSLアクセスを無効にして起動することはできる
設定ファイルを複製した際、以下のdefault_serverが他サイトと重複して指定されていないか確認する。複数のサイトに指定されていると、nginxの起動時にエラーになる
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
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