Laravel 入門Laravel 入門.PHP, SQLite, リレーションシップ,ユーザー認証,マルチ認証,MongoDB, キュー,コマンド,コンソール,デプロイ.神戸学院大学経営学部教授・林坂弘一郎ゼミナールのページです.
本番環境にデプロイしよう
本番環境にデプロイしよう
Laravel プロジェクトの作成(クローンの作成)
/home/vagrant/Documents/Laravel/ 以下にプロジェクトを作成するか,Github で公開しているプロジェクトのクローンを作成する.ここではクローンを作成してみよう.
[vagrant@localhost ~]$ cd Documents/laravel/ ⏎
[vagrant@localhost laravel]$ pwd ⏎
/home/vagrant/Documents/laravel
[vagrant@localhost laravel]$ git clone git@github.com:rinsaka/semi-laravel-comments5.8.git ⏎
[vagrant@localhost laravel]$ ls ⏎
composer.phar semi-laravel-comments5.8
[vagrant@localhost laravel]$ mv semi-laravel-comments5.8 comments ⏎
Git のリポジトリには含まれていないパッケージをインストールする.
[vagrant@localhost laravel]$ ls ⏎
comments composer.phar
[vagrant@localhost laravel]$ cd comments/ ⏎
[vagrant@localhost comments]$ php ../composer.phar install ⏎
.env の編集
.env ファイル(DBへの接続パスワードなどを記述している)も Git に含まれていないので,サンプルファイルをコピーする.
.env
APP_NAME=Laravel
APP_ENV=local
APP_KEY=
APP_DEBUG=true
APP_URL=http://localhost
LOG_CHANNEL=stack
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=homestead
DB_USERNAME=homestead
DB_PASSWORD=secret
アプリケーションキー (APP_KEY) を生成する.
[vagrant@localhost comments]$ php artisan key:generate ⏎
Application key set successfully.
[vagrant@localhost comments]$
上のコマンドで,アプリケーションキーが生成されたので,あとはデータベースの接続先を sqlite に書き換え,MySQLでは必要であるパスワードなどの項目を削除するかコメントアウトする.
.env(抜粋)
APP_NAME=Laravel
APP_ENV=local
APP_KEY=base64:0KVwxlB6v17XWyPV1WaTm9eQZbzKOmTlGrjuDpkMjAU=
APP_DEBUG=true
APP_URL=http://localhost
LOG_CHANNEL=stack
DB_CONNECTION=sqlite
#DB_CONNECTION=mysql
#DB_HOST=127.0.0.1
#DB_PORT=3306
#DB_DATABASE=homestead
#DB_USERNAME=homestead
#DB_PASSWORD=secret
データベースのマイグレーションとシーダー
[vagrant@localhost comments]$ ls database/ ⏎
factories migrations seeds
[vagrant@localhost comments]$ touch database/database.sqlite ⏎
[vagrant@localhost comments]$ ls database/ ⏎
database.sqlite factories migrations seeds
[vagrant@localhost comments]$
マイグレーションによってテーブルを作成し,シーダによって初期データを投入する.
[vagrant@localhost comments]$ php artisan migrate ⏎
Migration table created successfully.
Migrating: 2019_09_26_100151_create_comments_table
Migrated: 2019_09_26_100151_create_comments_table (0 seconds)
[vagrant@localhost comments]$ php artisan db:seed ⏎
Seeding: CommentsTableSeeder
Database seeding completed successfully.
[vagrant@localhost comments]$
開発用サーバで動作確認
開発用の Web サーバを起動してプラウザから http://192.168.33.129:8000/ にアクセスしてみる.
[vagrant@localhost comments]$ php artisan serve --host=192.168.33.120 --port 8000 ⏎
Laravel development server started: <http://192.168.33.120:8000>
無事に動作すれば,次は本番環境の Apache で動作させよう.
Laravel プロジェクトのデプロイ
ようやく,Apache に Laravel プロジェクトをデプロイする準備が整った.今回は Laravel プロジェクトを /var/www/laravel/ 以下に設置することにする.間違っても /var/www/html/ に置いてはならない.理由は明らかで,/var/www/html/ 以下に設置すると,データベースの database.sqlite や .env なども含めて,全てのファイルにブラウザからアクセス(ダウンロード)出来てしまう可能性があるからである.
フォルダを作成してプロジェクトを移動する
Laravel プロジェクトを設置する /var/www/laravel/ フォルダを作成する.
[vagrant@localhost www]$ pwd ⏎
/var/www
[vagrant@localhost www]$ ls -l ⏎
合計 0
drwxr-xr-x. 2 root root 6 8月 8 2019 cgi-bin
drwxr-xr-x. 2 vagrant root 24 3月 29 14:52 html
[vagrant@localhost www]$ sudo mkdir laravel ⏎
[vagrant@localhost www]$ sudo chown vagrant:apache laravel ⏎
[vagrant@localhost www]$ ls -l ⏎
合計 0
drwxr-xr-x. 2 root root 6 8月 8 2019 cgi-bin
drwxr-xr-x. 2 vagrant root 24 3月 29 14:52 html
drwxr-xr-x. 2 vagrant apache 6 3月 29 14:56 laravel
[vagrant@localhost www]$ chmod 775 laravel ⏎
[vagrant@localhost www]$ ls -l ⏎
合計 0
drwxr-xr-x. 2 root root 6 8月 8 2019 cgi-bin
drwxr-xr-x. 2 vagrant root 24 3月 29 14:52 html
drwxrwxr-x. 2 vagrant apache 6 3月 29 14:56 laravel
[vagrant@localhost www]$
Laravel プロジェクトを移動する.
[vagrant@localhost www]$ cd ⏎
[vagrant@localhost ~]$ cd Documents/laravel/ ⏎
[vagrant@localhost laravel]$ ls ⏎
comments composer.phar
[vagrant@localhost laravel]$ mv comments /var/www/laravel/ ⏎
[vagrant@localhost laravel]$
ファイルやフォルダのアクセス権を設定する.まず,現状を確認する.
[vagrant@localhost ~]$ cd /var/www/laravel/comments/ ⏎
[vagrant@localhost comments]$ ls -l ⏎
合計 204
drwxrwxr-x. 6 vagrant vagrant 103 3月 29 14:09 app
-rwxrwxr-x. 1 vagrant vagrant 1686 3月 29 14:09 artisan
drwxrwxr-x. 3 vagrant vagrant 34 3月 29 14:09 bootstrap
-rw-rw-r--. 1 vagrant vagrant 1550 3月 29 14:09 composer.json
-rw-rw-r--. 1 vagrant vagrant 168084 3月 29 14:09 composer.lock
drwxrwxr-x. 2 vagrant vagrant 247 3月 29 14:09 config
drwxrwxr-x. 5 vagrant vagrant 95 3月 29 14:40 database
-rw-rw-r--. 1 vagrant vagrant 1125 3月 29 14:09 package.json
-rw-rw-r--. 1 vagrant vagrant 1156 3月 29 14:09 phpunit.xml
drwxrwxr-x. 5 vagrant vagrant 129 3月 29 14:09 public
-rw-rw-r--. 1 vagrant vagrant 4131 3月 29 14:09 readme.md
drwxrwxr-x. 6 vagrant vagrant 53 3月 29 14:09 resources
drwxrwxr-x. 2 vagrant vagrant 75 3月 29 14:09 routes
-rw-rw-r--. 1 vagrant vagrant 563 3月 29 14:09 server.php
drwxrwxr-x. 5 vagrant vagrant 46 3月 29 14:09 storage
drwxrwxr-x. 4 vagrant vagrant 83 3月 29 14:09 tests
drwxrwxr-x. 40 vagrant vagrant 4096 3月 29 14:33 vendor
-rw-rw-r--. 1 vagrant vagrant 537 3月 29 14:09 webpack.mix.js
[vagrant@localhost comments]$
アクセス権を設定する.
[vagrant@localhost comments]$ sudo chown -R vagrant:apache bootstrap/cache ⏎
[vagrant@localhost comments]$ sudo chown -R vagrant:apache storage ⏎
[vagrant@localhost comments]$ sudo chown vagrant:apache database ⏎
[vagrant@localhost comments]$ sudo chown vagrant:apache database/database.sqlite ⏎
[vagrant@localhost comments]$ ls -l ⏎
合計 204
drwxrwxr-x. 6 vagrant vagrant 103 3月 29 14:09 app
-rwxrwxr-x. 1 vagrant vagrant 1686 3月 29 14:09 artisan
drwxrwxr-x. 3 vagrant vagrant 34 3月 29 14:09 bootstrap
-rw-rw-r--. 1 vagrant vagrant 1550 3月 29 14:09 composer.json
-rw-rw-r--. 1 vagrant vagrant 168084 3月 29 14:09 composer.lock
drwxrwxr-x. 2 vagrant vagrant 247 3月 29 14:09 config
drwxrwxr-x. 5 vagrant apache 95 3月 29 14:40 database
-rw-rw-r--. 1 vagrant vagrant 1125 3月 29 14:09 package.json
-rw-rw-r--. 1 vagrant vagrant 1156 3月 29 14:09 phpunit.xml
drwxrwxr-x. 5 vagrant vagrant 129 3月 29 15:06 public
-rw-rw-r--. 1 vagrant vagrant 4131 3月 29 14:09 readme.md
drwxrwxr-x. 6 vagrant vagrant 53 3月 29 14:09 resources
drwxrwxr-x. 2 vagrant vagrant 75 3月 29 14:09 routes
-rw-rw-r--. 1 vagrant vagrant 563 3月 29 14:09 server.php
drwxrwxr-x. 5 vagrant apache 46 3月 29 14:09 storage
drwxrwxr-x. 4 vagrant vagrant 83 3月 29 14:09 tests
drwxrwxr-x. 40 vagrant vagrant 4096 3月 29 14:33 vendor
-rw-rw-r--. 1 vagrant vagrant 537 3月 29 14:09 webpack.mix.js
[vagrant@localhost comments]$ ls -l bootstrap/ ⏎
合計 4
-rw-rw-r--. 1 vagrant vagrant 1620 3月 29 14:09 app.php
drwxrwxr-x. 2 vagrant apache 64 3月 29 14:33 cache
[vagrant@localhost comments]$ ls -l database/ ⏎
合計 24
-rw-rw-r--. 1 vagrant apache 22528 3月 29 14:40 database.sqlite
drwxrwxr-x. 2 vagrant vagrant 29 3月 29 14:09 factories
drwxrwxr-x. 2 vagrant vagrant 57 3月 29 14:09 migrations
drwxrwxr-x. 2 vagrant vagrant 63 3月 29 14:09 seeds
[vagrant@localhost comments]$ ls -l storage/ ⏎
合計 0
drwxrwxr-x 3 vagrant apache 36 3月 29 17:19 app
drwxrwxr-x 6 vagrant apache 76 3月 29 17:19 framework
drwxrwxr-x 2 vagrant apache 23 3月 29 17:19 logs
[vagrant@localhost comments]$
.htaccess の編集
/var/www/laravel/comments/public/.htaccess
<IfModule mod_rewrite.c>
<IfModule mod_negotiation.c>
Options -MultiViews -Indexes
</IfModule>
RewriteEngine On
# Handle Authorization Header
RewriteCond %{HTTP:Authorization} .
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
# Redirect Trailing Slashes If Not A Folder...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} (.+)/$
RewriteRule ^ %1 [L,R=301]
# Handle Front Controller...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
</IfModule>
これを次のように編集する.
/var/www/laravel/comments/public/.htaccess
<IfModule mod_rewrite.c>
<IfModule mod_negotiation.c>
Options -MultiViews -Indexes
</IfModule>
RewriteEngine On
# Handle Authorization Header
RewriteCond %{HTTP:Authorization} .
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteBase "/comments/"
# Redirect Trailing Slashes If Not A Folder...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} (.+)/$
RewriteRule ^comments/(.*) %1 [L,R=301]
# Handle Front Controller...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
</IfModule>
Apache の設定
最後に Apache の設定を行う./etc/httpd/conf.d/ に設置するが,フォルダのファイルの一覧を確認する.
[vagrant@localhost comments]$ cd ⏎
[vagrant@localhost ~]$ cd /etc/httpd/conf.d/ ⏎
[vagrant@localhost conf.d]$ ls ⏎
README autoindex.conf userdir.conf welcome.conf
[vagrant@localhost conf.d]$
ここに,laravel-comments.conf(ファイル名は任意)を設置する.
[vagrant@localhost conf.d]$ sudo touch laravel-comments.conf ⏎
[vagrant@localhost conf.d]$ ls ⏎
README autoindex.conf laravel-comments.conf userdir.conf welcome.conf
[vagrant@localhost conf.d]$
laravel-comment.conf を編集する.
/etc/httpd/conf.d/laravel-comments.conf
Alias /comments "/var/www/laravel/comments/public"
<Directory "/var/www/laravel/comments/public">
# Options Indexes FollowSymLinks MultiViews
AllowOverride all
Require all granted
</Directory>
Apache を再起動して動作確認
Apache の設定をテストして,問題がなければ再起動する.再起動後にブラウザから http://192.168.33.120/comments/ や http://192.168.33.120/comments/comments/ などにアクセスして正しく動作する事を確認できたら完了である.また,Laravel を使用しない http://192.168.33.120/ も引き続きアクセス出来ることも確認しておこう.
[vagrant@localhost conf.d]$ sudo apachectl configtest ⏎
AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using localhost.localdomain. Set the 'ServerName' directive globally to suppress this message
Syntax OK
[vagrant@localhost conf.d]$ sudo systemctl restart httpd ⏎
[vagrant@localhost conf.d]$