＊備忘録＊さくらのレンタルサーバにLaravelプロジェクトをデプロイ・アップロードする。

完全なる自分への備忘録です！ ひたすら手順だけを書きます。♪～(￣ε￣；)
参考サイトはこちら。↓↓（この方のサイト、めっちゃわかりやっす！ありがたや～。）
https://arrown-blog.com/laravel-sakura-deploy/

#1. データベースを設定する。

さくらのレンタルサーバーのコントロールパネルから、データベースの作成を行う。
データベース名と、接続用パスワードを打ち込む。

#2. サーバーにSSH接続をする。

Poderosa（Poderosaじゃなくてもいいけど、私の場合Poderosaにしておいた。）を開いて、SSH接続をする。
手順は↓のページの、『ログインとログアウト』の項目のとこ参照。
https://help.sakura.ad.jp/206054152/

『Webcome To FreeBSD!』というメッセージがPoderosaのターミナルに表示されればログイン成功！

#3. GitHubからデータを引っ張ってくる。

事前にデプロイしたいLaravelプロジェクトをGitHubにアップしておく。

手順1:　pwdコマンドで現在のフォルダ位置を確認する。
『/home/アカウント名』になっていればOK。

手順2:　以下コマンドを打ち込んでGitHubからサーバーへデータを取り込む。（私のaddress-bookっていう名前のプロジェクトの場合。）

```
git clone https://github.com/Tomochan-taco/address-book
```

lsコマンドで該当するLaravelプロジェクトのフォルダが出てくればOK！

#4. vendorフォルダの中身をアップする。

vendorフォルダはGitHubにプッシュされないような設定になっているらしい。( ﾟ ω ﾟ ) ﾅﾝﾄ! !
なので、vendorフォルダの中身をさくらのサーバーにアップする。
その為に、まずはcomposerをインストールする。

手順1:　cdコマンドでLaravelプロジェクトの中に移動しておく。
『/home/アカウント名/Laravelプロジェクト名』になっていればOK！

手順2:　以下のコマンドを入力して、composerをダウンロードする。

```
curl -sS https://getcomposer.org/installer | php
```

＊＊＊ メモ ＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊
curlは、サーバーへデータ転送を行うコマンド。
-sは、ブロック単位でのファイルサイズを表示するオプション。
-Sは、ファイルサイズでソートする。大きなファイルが先頭にくるオプション。
＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊

手順3:　以下のコマンドを入力して、composerをインストールする。

```
php composer.phar
```

↓のような画面が出てくればOK！

```
% php composer.phar
   ______
  / ____/___  ____ ___  ____  ____  ________  _____
 / /   / __ \/ __ `__ \/ __ \/ __ \/ ___/ _ \/ ___/
/ /___/ /_/ / / / / / / /_/ / /_/ (__  )  __/ /
\____/\____/_/ /_/ /_/ .___/\____/____/\___/_/
                    /_/
Composer version 2.0.9 2021-01-27 16:09:27

Usage:
  command [options] [arguments]
```

手順4:　以下コマンドを入力して、Laravelのvendorデータをインストールする。

```
php composer.phar install
```

lsコマンドを入力して、vendorフォルダが出てくればOK！

#5. .envファイルをサーバ上のLaravelプロジェクトにコピーする。

データベース接続設定をする為に、.envファイルを作成してデータベース情報を入力していく。
コードの編集作業をしなくてはならないが、さくらのレンタルサーバーの初期設定ではdeleteキーが使えないので、使えるように設定する。

手順1:　まずはcdコマンドで『/home/アカウント名』に移動する。

手順2:　以下コマンドを入力して、.vimrcファイルを新規作成する。

```
vim .vimrc
```

手順3:　アルファベットのiを押してINSERTモードに切り替えたら、以下コードを貼り付ける。

```
set backspace=indent,eol,start
```

escキーを押して、:wqを入力して保存する。
以上で、deleteキーを使えるようにする設定は完了。

手順4:　cdコマンドでLaravelプロジェクトの中に移動したら、以下コマンドを入力して、.envファイルを新規作成する。そして、ローカルで作った.envファイルの中身を貼り付ける。

```
vim .env
```

＊＊＊ メモ ＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊
lsコマンドで.envファイルを表示させる時は、ls -a と入力する。
＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊

手順5:　.envファイルの中の該当箇所を編集する。

```
DB_CONNECTION=mysql
DB_HOST=データベースサーバ
DB_PORT=3306
DB_DATABASE=さくらインターネットのレンタルサーバで作成したデータベース名
DB_USERNAME=アカウント名
DB_PASSWORD=データベースパスワード
```

手順6:　以下のコマンドを入力して、アプリケーションキーの設定をする。（Laravelプロジェクト内にいることを確認すること！）

```
php artisan key:generate
```

「Application key set successfully.」というメッセージが表示されれば、成功。

手順7:　マイグレーションしてみる。

```
php artisan migrate
```

ちゃんとテーブルが出来ていれば成功。

#6. public/index.phpをwww内にコピーする。

現在、Laravelのプロジェクトが存在する場所は以下の通り。
『/home/アカウント名/Laravelプロジェクト名』
しかし、さくらのレンタルサーバーの公開フォルダは、『/home/アカウント名/www』。
つまり、wwwの中にフォルダを作って、その中にLaravelプロジェクトのpublicフォルダの中身をコピーしないといけない。

手順1:　cdコマンドでwwwの中に移動したら、mkdirコマンドでフォルダを作成する。

```
※以下は、Laravelのプロジェクトを「アカウント名.sakura.ne.jp/フォルダ名」でアクセスできるようにしたい場合
mkdir フォルダ名
```

手順2:　cdコマンドでフォルダの中に移動したら、以下コマンドを入力して、Laravelプロジェクトのpublicフォルダの中身をコピーする。

```
※以下は、Laravelのプロジェクトを「アカウント名.sakura.ne.jp/フォルダ名」でアクセスできるようにしたい場合
cp -r /home/アカウント名/Laravelプロジェクト名/public/. /home/アカウント名/www/フォルダ名
```

『アカウント名.sakura.ne.jp』にアクセスさせたい場合は、コピー先は『/home/アカウント名/www/』。
＊＊＊ メモ ＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊
『cp -r /home/アカウント名/Laravelプロジェクト名/public/* /home/アカウント名/www/フォルダ名』
↑↑のように、コピー元を『public/*』としてアスタリスクにすると、フォルダ内のすべてのファイルをコピーはするのですが、.htaccessなどの隠しファイルまではコピーされない為、『public/.』にするといいと思います。
私の場合、『public/.』でコピーすると、正常に表示/動作しました。
＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊

手順3:　コピーしたフォルダに移動したら、以下コマンドを入力して、index.phpを編集する。

```
cd /home/アカウント名/www/フォルダ名
vi index.php
```

手順4:　下記の二か所をデータ置き場所に応じて編集する。

```
require __DIR__.'/../vendor/autoload.php';
$app = require_once __DIR__.'/../bootstrap/app.php';
```

↓↓

````
（/home/アカウント名/www/フォルダ名にデータをコピーした場合）
require __DIR__.'/../../Laravelプロジェクト名/vendor/autoload.php';
$app = require_once __DIR__.'/../../Laravelプロジェクト名/bootstrap/app.php';
```

```
（/home/アカウント名/www/にデータをコピーした場合）
require __DIR__.'/../Laravelプロジェクト名/vendor/autoload.php';
$app = require_once __DIR__.'/../Laravelプロジェクト名/bootstrap/app.php';
```

以上で、『アカウント名.sakura.ne.jp/プロジェクト名』にアクセスすると、表示されます。(\*´∀｀\*)/ ﾔｯﾀｰ。