【Laravel】apacheのバーチャルホスト設定


ローカル開発環境でlaravelで作成したwebアプリをVPSでデプロイするまでの流れを書きます。

##前提条件

- githubにwebアプリをpush済み
- conohaのvpsサーバー
- webサーバー：apache
- DNSサーバー：ムームードメイン
- サーバーサイド言語：PHP(Laravel)
- メインドメイン名：jum11.com
- サブドメイン名：todo.jum11.com
- メインドメインのDocumentRootは/var/www/html/(app名)/public
- サブドメインのDocumentRootは/var/www/html/（app名）/public

※1.(app名)は自身のファイル名をいれてください。


###apacheのvirtualhost化についての参考記事です。
https://weblabo.oscasierra.net/apache24-centos7-virtualhost/


#DNSサーバーの設定をする。


##ムームードメインでサブドメインの設定

1.ムームーDNSをクリック

![スクリーンショット 2019-12-22 14.02.18.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/420746/60784c4f-a94f-2eab-bc24-c3f6687ebd46.png)

2.変更をクリック

![スクリーンショット 2019-12-22 14.05.25.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/420746/6acb5918-d883-450b-a769-0efa2bdf7923.png)

3.入力

サブドメインにしたい箇所に入力。今回はtodoを追加
※serchは別のサブドメインです。無視してください。


![スクリーンショット 2019-12-22 14.06.37.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/420746/9514ba2f-ab1d-21f7-bbaa-b23643e45aec.png)

#VPS側の設定

#Webアプリのファイルを準備する。

##githubにpushしたリポジトリをクローン（一例です）

```
$ cd /var/www/html
$ git clone (リポジトリURL)
```

##メインの独自ドメインの設定

メインの独自ドメインはjum11.comとする。

##jum11.com用の設定ファイルを作成

```
$ sudo vi /etc/httpd/conf.d/jum11.com.conf
```

```:/etc/httpd/conf.d/jum11.com.conf
<VirtualHost *:80>
  ServerName jum11.com
  DocumentRoot "/var/www/html/(app名)/public"
  DirectoryIndex index.html index.php
  ErrorLog /var/log/httpd/jum11.com_error_log
  CustomLog /var/log/httpd/jum11.com_access_log combined
  AddDefaultCharset UTF-8
  <Directory "/var/www/html/(app名)/public">
    AllowOverride All
  </Directory>
</VirtualHost>
```




###解説
ServerNameは独自ドメインを設定、今回はjum11.com
DocumentRootは

#virtualhostの有効化

```
$ sudo vi /etc/httpd/conf/httpd.conf
```

##Listenの下に追加

```
Listen 80
+ NameVirtualHost *:80
```

この記載で複数のドメインを使いますよと宣言する。

#サブドメインの設定ファイルを作成

##todo.jum11.com用の設定ファイルを作成

今回はサブドメインをtodo.jum11.comとする。

```
$ sudo vi /etc/httpd/conf.d/todo.jum11.com.conf
```



```:/etc/httpd/conf.d/todo.jum11.com.conf
<VirtualHost *:80>
  ServerName jum11.com
  DocumentRoot "/var/www/html/(app名)/public"
  DirectoryIndex index.html index.php
  ErrorLog /var/log/httpd/todo.jum11.com_error_log
  CustomLog /var/log/httpd/todo.jum11.com_access_log combined
  AddDefaultCharset UTF-8
  <Directory "/var/www/html/(app名)/public">
    AllowOverride All
  </Directory>
</VirtualHost>
```

##apachを再起動

```
$ sudo systemctl restart httpd.service
```

#Laravel側の設定を実施

##公開するファイルに移動する。

```
$ cd 移動先
```

##composerインストール

```
$ composer install
```

##.envファイルの設定

- envファイルの作成（gitではenvファイルは対象外となるため
- APP_KEYの設定（ローカルで作成したKEYをそのままコピー）
- databaseの設定(sqlite3w使用する)

```:.env
APP_NAME=Laravel
APP_ENV=local
+ APP_KEY=ここに書く
APP_DEBUG=true
APP_URL=http://localhost

+ DB_CONNECTION=sqlite
- DB_HOST=127.0.0.1
- DB_PORT=3306
- DB_DATABASE=homestead
- DB_USERNAME=homestead
- DB_PASSWORD=secret
```


##databaseファイルの作成

```
$ touch database/database.sqlite
```

##migrationの実施

```
$ php artisan migrate
```

##seederの実行（必要に応じて）

```
$ php artisan db:seed
```

##権限関連を修正

```
$ sudo chmod -R 777 storage/
$ sudo chmod -R 777 bootstrap/cache/
```

##データベースに書き込む場合は（必要に応じて）

```
$ sudo chmod -R 777 database/
```

#メインドメインとサブドメインにアクセスして確認する。

以上です。