完成したアプリ(Laravel)を、ConoHa VPSを使って公開するまでの手順

#○はじめに
今回、私が作成したアプリは個人で作成して運用していくことを目的としたものです。

そのため、
**コストを出来るだけ抑えて、なおかつ、運用して行くにあたってのそれなりのパフォーマンスを追求したい**
と考えました。

当記事では、
**公開までの手順を１から記載し、詰まったポイントについて解説したり、参考記事ではわかりにくかったポイントなどを解説します。**

細かい公開手順については、参考記事を参照してください。

#○簡単に、VPSとは？

**仮装専用サーバーのことです。**

![スクリーンショット 2021-09-15 16.27.21.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/536974/6ec479c4-2fb2-a785-95b2-1ac408be9ed7.png)

1代のサーバーを複数人で共有する点では、PaaSやレンタルサーバーと同じですが。
1人1台カスタマイズして作った仮装的な専用サーバーを使える事がメリットです。

# ○なぜ、VPSを使用する？

初めに、記載しましたが、

**コストを出来るだけ抑えて、なおかつ、運用して行くにあたってのそれなりのパフォーマンスを追求したいと考えたからです。**

個人サービスで、AWSを利用するとVPS以上にオンプレに近い自由は効くと思いますが、従量課金性でまあまあの高額請求がきます。笑
（使い方にもよると思いますが、、、）

その点、VPSサービスは**月定額のため分かりやすいですし、安価です。**

しかし、仮装サーバーといえど、物理サーバーは1台のため、
万が一、アクセス数が急激に増えた時が心配です。
その際は、AWSへ移行する方法もあるため、臨機応変に対応したいと思います。

また、レンタルサーバーのような共有サーバーよりもVPSでは多少なりとも、運用においての影響は受けづらいと考えました。

# ○今回使用するインフラ・環境

| インフラ・環境 |
|---|
| ConoHa VPS |
| CentOS 8 |
| Apache 2.4.37 |
| PHP 7.4.23 |
| Laravel 6.20.32 |
| Composer version 2.1.7 |

# ○公開手順

##①ConoHa VPSに登録〜VPS作成

まずは、Conohaの新規登録を完了させてください。（登録は無料）

https://www.conoha.jp/signup/

その後、VPSを作成していきます。

・```サーバーを追加```　→　```イメージタイプ：CentOS``` → ```rootパスワードの設定```

これで、VPSが出来上がります。

![スクリーンショット 2021-09-15 17.51.23.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/536974/b6b5ab20-e9db-5379-8cbc-4f6bffc12284.png)

![スクリーンショット 2021-09-15 17.54.23.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/536974/51e6b6f2-755c-8399-26bd-f12cd8320c33.png)


## ②サーバーの設定

サーバー側の設定は、以下記事を参考にしました。
この記事では、Apache、Laravel、MySQLでの環境構築を目標にしています。
参考に進めてみてください。

下記記事では、sshに既に接続された状態からの設定が記載されているので、わかる方は飛ばしていただいて結構ですが、以下sshの接続方法を記載します。

https://knmts.com/become-engineer-20/

## ●コマンドラインからsshに接続する

まずは、ConoHaのコントロールパネルに記載されているIPアドレスの確認を行ってください。

・```サーバータグ``` → ```ネームタグ``` → ```ネットワーク情報``` → ```IPアドレス```

![スクリーンショット 2021-09-15 18.01.54.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/536974/1c7e23af-658e-8de0-449d-ea7a1be38659.png)

![スクリーンショット 2021-09-15 18.06.47.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/536974/9b50ce2c-218b-376b-bf2a-70ccda6d50a2.png)

sshに接続します

```
$ ssh root@[ipアドレス]
パスワード入力
```

接続ができれば、[この記事](https://knmts.com/become-engineer-20/)からサーバーの設定行えます。

## ③コンポーザーをインストール

コンポーザーが入っていないと、動かない。

CentOSへcomposerのダウンロードを行なってください。

https://getcomposer.org/download/

```
php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
php -r "if (hash_file('sha384', 'composer-setup.php') === '756890a4488ce9024fc62c56153228907f1545c228516cbf63f885e036d37e9a59d27d63f46af1d4d07ee0f76181c7d3') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
php composer-setup.php
php -r "unlink('composer-setup.php');"

sudo mv composer.phar /usr/local/bin/composer
```

```
$ composer
```

composer:not foundにならなければ、完了です。

ここまでくれば、```http://[IPアドレス]:8000/```を叩くと表示されるはず。（まだ完了ではないが）

## ④500エラーが出ている場合。Apacheのエラーログを確認する

sshで接続した状態で

```
[root@IPアドレス ~]# cd /var/log/httpd/

[root@IPアドレス httpd]# ls
access_log  error_log

[root@IPアドレス httpd]# tail -f error_log
```

## ⑤.envを編集する

下記記事を参考に```.env```の編集を行います

https://qiita.com/sskmy1024y/items/c2e434941400bd4ee82c#%E5%85%AC%E9%96%8B%E3%81%99%E3%82%8B%E4%B8%8B%E6%BA%96%E5%82%99

```.env
#APP_ENV=production
#APP_URL=[アプリのURL]
#APP_DEBUG=false
#DB_DATABASE=[データベース名]
#DB_USERNAME=root
#DB_PASSWORD=root←まだ変更していなければ
```

私の場合は、上記の設定を変更してDBやサーバーとの接続できました。

## ⑥.htaccessを編集する

・```/public```配下にあるので編集

https://qiita.com/sskmy1024y/items/c2e434941400bd4ee82c#%E5%85%AC%E9%96%8B%E3%81%99%E3%82%8B%E4%B8%8B%E6%BA%96%E5%82%99-2

## ⑦Laravelのセットアップ

```
% composer install ← まだ、本番環境にインストールしていない方は

% php artisan key:generate
Application key set successfully.

% php artisan migrate:fresh
SQLSTATE[HY000] [1049] Unknown database 'laravel'
→私は.envの設定が間違ってここでエラー
```

.envの修正
→```DB_DATABASE=[自分でつけたデータベースの名前]```

これで、なんとかDBの作成まで完了しました。

実はここまででは、まだ私の環境では見れないページがあるのですが、公開という意味ではとりあえずは一段落つきました。

残り、「APIのエラー修正、本番環境でのメールの送受信」を修正して記事にします。

お疲れ様でした。