【初心者向け】はじめて作成したLaravelのアプリをレンタルサーバに公開する

aravelで作ったWebアプリをさくらのレンタルサーバで公開する方法です。
他のレンタルサーバでも情報を読み替えれば対応可能です。

前提

・開発環境はMySQL含め全てローカル
・アプリは完成済み
・レンタルサーバーにssh接続できる

ディレクトリ構成

以下のようなディレクトリ構成で公開する。

/home/
└[ユーザ名]
├ /www
│ └ /[プロジェクト名](シンボリックリンク)
└ /laravel(新しく作る)
└ /[プロジェクト名]
└ /public

/www以下は公開ディレクトリ。/laravel以下は非公開ディレクトリ。
/wwwの配下にプロジェクト名のシンボリックリンクを張り、/laravel/[プロジェクト名]/public配下にアクセスすることで、/public以下の情報のみ外部公開する。

①GitHubにプロジェクトをpushする

git add .
git commit -m “本番用アプリ”
git push origin master

②レンタルサーバ内にログインする

ssh [ユーザ名]@[ドメイン名].sakura.ne.jp

③プロジェクトをサーバに移す

適当に「laravel」(なんでも良いです)というフォルダを作り、そこにプロジェクトのデータをコピーします。

mkdir /home/[ユーザ名]/laravel
cd /home/[ユーザ名]/laravel
git clone [Gitクローンのリンク]

④.envファイルを修正。

.envファイルは環境ごとに変わる情報(DBのログイン名とかパスワードとか)を記載したもの。
Gitクローンからプロジェクトをコピーすると.envファイルは無いので、.enc.exampleをコピーする。
データベースの設定やメールアドレス(gmail)の設定を書き込んでいきます。

cd /home/[ユーザ名]/laravel/[プロジェクト名]
scp .env.example .env

.env(修正前)

APP_NAME=Laravel
APP_ENV=local
APP_KEY=
APP_DEBUG=true
APP_URL=http://localhost
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=homestead
DB_USERNAME=homestead
DB_PASSWORD=secret
MAIL_DRIVER=smtp
MAIL_HOST=smtp.mailtrap.io
MAIL_PORT=2525
MAIL_USERNAME=null
MAIL_PASSWORD=null
MAIL_ENCRYPTION=null

.env(修正後)

APP_NAME=Laravel
APP_ENV=local
APP_KEY=
APP_DEBUG=false
APP_URL=http://[ユーザ名].sakura.ne.jp/[プロジェクト名]
DB_CONNECTION=mysql
DB_HOST=[ホスト名]
DB_PORT=3306
DB_DATABASE=[データベース名]
DB_USERNAME=[ユーザ名]
DB_PASSWORD=[パスワード]
MAIL_DRIVER=smtp
MAIL_HOST=smtp.gmail.com
MAIL_PORT=587
MAIL_USERNAME=[gmailアドレス]
MAIL_PASSWORD=[gmailパスワード]
MAIL_ENCRYPTION=tls
MAIL_FROM_ADDRESS=[gmailアドレス]
MAIL_FROM_NAME=[gmailに記載される名前]

DBのホスト名などの設定は、下記記事にて同様の作業をしているので、参考。

【参考】

narunaru7638.hatenablog.com

⑤.htaccessファイルを修正。

.htaccess(修正前)

Options -MultiViews -Indexes

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]

.htaccess(修正後)

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]

⑥シンボリックリンクを張る

シンボリックリンクとはコンピュータのディスク上で扱うファイルやディレクトリを、本来の位置にファイルを残しつつそれとは別の場所に置いたり別名を付けてアクセスする手段。
windowsでいうショートカットのようなもの。

ln -s /home/[ユーザ名]/laravel/[プロジェクト名]/public/ /home/[ユーザ名]/www/[プロジェクト名]

公開ディレクトリにある「/home/[ユーザ名]/www/[プロジェクト名]」にアクセスすると、本来の位置である非公開ディレクトリの「/home/[ユーザ名]/laravel/[プロジェクト名]/public/」にアクセスできる。

【参考】

laraweb.net

⑦Laravelセットアップ

Laravelをレンタルサーバ内でセットアップ。

cd /home/[ユーザ名]/laravel/[プロジェクト名]/
composer install
~~~ インストール ~~~
php artisan key:generate
php artisan migrate:fresh

⑧DBのデータエクスポート&インポート

この記事内で同様の作業しているので参考。

narunaru7638.hatenablog.com

 

⑨storageへのシンボリックリンクを張る

ローカル環境では、「/home/[ユーザ名]/laravel/[プロジェクト名]/public/storage」にstorageへのシンボリックリンクが配置してあるが、Gitクローンする過程で削除されるので、storageへのシンボリックリンクを改めて張る。

ln -s /home/[ユーザ名]/laravel/[プロジェクト名]/storage/app/public/ /home/[ユーザ名]/laravel/[プロジェクト名]/public/storage

⑩storage内に画像ファイルを配備する

あらかじめ利用したい画像ファイルがあれば、storage内に画像ファイルを配備する。
FillZillaなどを使って、適当にレンタルサーバの「/home/[ユーザ名]/laravel/[プロジェクト名]/storage/app/public/」内に画像ファイルを格納する。

参考サイト

qiita.com
laraweb.net

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です