LoginSignup
14
21

More than 1 year has passed since last update.

さくらのレンタルサーバでLaravelアプリをデプロイしてみた

Last updated at Posted at 2020-08-25

記事作成時の背景

Laravelの学習のために作成していた日記アプリがある程度形になったので、一般公開のためにはじめてのデプロイに挑戦した。
デプロイ作業をはじめてから、きちんと動作するまでに2日間くらいかかった。
その中で色々学びがあったので、その備忘録と、次回同じ作業がスムーズにできるように記録する。

参考記事

以下の記事を参考に作業を進めた。

なお、各項目でさらに追加で参考にした記事はその都度記載している。

環境

Windows10
ローカル環境:Xampp上で構築
git bash
DB:MySQL
PHP 7.x
Laravel 7.x
エディタ:VS Code
さくらのレンタルサーバー:スタンダードプラン

さくらのレンタルサーバでの作業

SSLの取得

各ドメイン毎にSSLを取得しておく。
その際に、以下のリダイレクト設定を忘れないように。

サーバのコントロールパネル→ドメイン/SSL→各ドメイン→リダイレクト(転送)設定で、「HTTPSに転送」にチェックをつけること。

はじめこれを忘れて、httpsにならなかったので。

データベースの作成

Laravelアプリで使用するデータベースをさくらのコントロールパネル → phpMyAdminで作成する。
DBの基本情報は.envファイルの修正時に使用するので、確認しておく。

git hubにリモートリポジトリを作る

すでに、git hubにリモートがあれば、この項は省略できる。

日記アプリをローカルで作成していたときには、gitで管理していなかったので、この行程が必要だった。

おおまかな手順

ローカルにリポジトリを作成 → giboで.gitignoreを設定する→ git hub上にリモートリポジトリを作り、pushする
リモートリポジトリは、publicでもprivateでもどちらでもお好きなほうで。

※追記 .gitignoreはLaravelではデフォルトで設定されているみたい。giboを実施する必要はなさそう。(2020/08/26追記)

#### .gitignoreでのつまづき
.gitignoreのところでつまづいて結構時間がかかった。
詳細はこちらの記事。Qiita - .gitignoreが認識されなかったのはUTF-16のせいみたい

サーバにSSH接続する

参考記事

ssh接続したのは初めてなので、以下の記事を参考に接続した。

Windows上ではchmodによるパーミッションの変更ができないので注意。

参考記事を見ると、公開鍵のパーミッションを変更することが必要とのこと。ローカルで変更している記事を見たが、Windows上ではchmodによるパーミッションの変更ができないので注意すること。

公開鍵認証時のパスフレーズの省略

参考記事:SSH で毎回パスフレーズを入れるのが面倒だと思ったときには(Qiita)

% ssh-agent
% eval `ssh-agent`
% ssh-add ~/.ssh/id_rsa

リモートリポジトリからサーバー上にクローンを作成

sshでさくらサーバに接続して、以下コマンドを実行する。

% cd {任意のディレクトリ}
% git clone [リモートリポジトリURL]

今回は、ホームディレクトリ直下にlaravelディレクトリを作成し、そこにgitで管理されたアプリのクローンを作成することにした。

example
% cd ~/laravel
% git clone [リモートリポジトリURL]

composerの導入

さくらのレンタルサーバーにcomposerを導入する。参考記事を参考に実施。

参考記事

Qiita - さくらのレンタルサーバで Laravel を使うメモ (2020/04)

composer install

git cloneされたプロジェクトは.gitignoreの設定により、vendorディレクトリや.envが入っていない。
Laravelのパッケージが収められたvendorディレクトリがないとLaravelは動かないので、composerで導入する。
以下コマンドを実行する。
% composer install

新たにvendorディレクトリができていればオッケー。

.env作成

% cp .env.example .envで.envファイルを作成。
.envファイルを以下のように編集。

.env
APP_NAME={Appname}
APP_ENV=production
APP_KEY= //空白
APP_DEBUG=false
APP_URL=[アプリのURL]

DB_HOST=[WebアプリのURL]
DB_PORT=[DBポート番号]
DB_DATABASE=[データベース名]
DB_USERNAME=[DBユーザ名]
DB_PASSWORD=[DBパスワード]

DBの情報は、さくらサーバーにログインアクセスして、確認すること。もしくは、自分の過去のWebアプリを参照する。

私はviを使いこなせないので、ローカルのVS codeで作って、scpコマンドでサーバーからダウンロードし、編集後にアップロードした。

local_download
$ scp [アカウント名]@[アカウント名].sakura.ne.jp:laravel/diary/.env ~/desktop/
local_upload
$ scp ~/desktop/.env [アカウント名]@[アカウント名].sakura.ne.jp:laravel/diary/

~/.ssh/configにHost名(例えば、ホスト名をsakura_serverなどに設定)を設定している場合は、

local_download
$ scp sakura_server:laravel/diary/.env ~/desktop/
local_upload
$ scp ~/desktop/.env sakura_server:laravel/diary/

アプリケーションキーの作成、マイグレート

コマンド実行

% php artisan key:generate
% php artisan migrate

キャッシュクリア

参考記事

Qiita - Laravel キャッシュクリア系コマンドなど

コマンド実行

設定を変更したりしているので、キャッシュクリアをしておく。しなくても、うまく起動するかもしれないが、念の為。

% php artisan cache:clear
% php artisan config:clear
% php artisan config:cache
% php artisan route:clear
% php artisan view:clear
% composer dump-autoload

シンボリックリンクの貼り付け

参考記事

www/下にシンボリックリンクを貼る

command
% mkdir ~/www/{プロジェクトを配置したいパス(ディレクトリ)}
% cd ~/www/{プロジェクトを配置したいパス(ディレクトリ)}
# ln -sはシンボリックリンクを貼るコマンド
% ln -s ~/laravel/{プロジェクト名}/public {プロジェクト名} 

ブラウザで確認する

ローカルと同じように動けばオッケー。お疲れ様。

プロジェクトの更新作業

ローカルで変更する

VS codeで変更作業する。

リモートにpush

変更をコミットした後、git hubにpushする。

リモートからpullする

SSHでさくらのサーバにログインして、

% cd {project_root}
% git pull

を実施する。
これで差分がアップデートされた。

14
21
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
14
21