Laravel入門 神戸学院大学 経営学部 林坂ゼミ

animal_chara_radio_penguin ※Web開発
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]$
タイトルとURLをコピーしました