PHP Slim3フレームワークのサンプルアプリをApacheで動かそう（2. DocumentRoot使用）

# はじめに
PHP Slim3フレームワークのサンプルアプリを過去記事（[1](https://qiita.com/erik_t/items/23cc9df2154e80aa137e)、[2-1](https://qiita.com/erik_t/items/9e9f6c93d2403ac90242)）で作成し、
PHPのビルトインWebサーバーを使用して表示しました。
今回はApacheのDocumentRootを変更してアプリを動かしてみましょう。

# 前提
下記記事で構築した環境を前提とします。

- Windows10にVagrantをを入れてCentOS7をインストールしよう([1](https://qiita.com/erik_t/items/d7f7abbf7deafa4c6fe4)、[2](https://qiita.com/erik_t/items/909efb63fd389f486ec3)、[3](https://qiita.com/erik_t/items/2e3c43cfe8731621b82d)、[4](https://qiita.com/erik_t/items/8d006b599815c8fbf38b)、[5](https://qiita.com/erik_t/items/9fbe7b5630b1f62893a1)、[6](https://qiita.com/erik_t/items/11f24633f4248e4f33f0)) 
- ローカルでLAMP環境を構築しよう（[0](https://qiita.com/erik_t/items/9c7c49db061a250cbc32)、[1](https://qiita.com/erik_t/items/e36235896b327f5cb461)、[2](https://qiita.com/erik_t/items/8dc3f2a5e8e8c9376e27)、[3](https://qiita.com/erik_t/items/617503557020a4a6ba82)、[4](https://qiita.com/erik_t/items/a898d0f547bff6b3d8ff)）
- [CentOS7にComposerをインストールしよう](https://qiita.com/erik_t/items/0b3492f38f6cd8605a4c)
- PHP Slim3フレームワークのサンプルアプリを作ろう
    - [1. skeleton project](https://qiita.com/erik_t/items/23cc9df2154e80aa137e)
    - [2-1. First Application Walkthrough Getting Set Upまで](https://qiita.com/erik_t/items/9e9f6c93d2403ac90242)

　　今回は1つのアプリしか動かさないのでどちらかでOKです。

- [【Apache】DocumentRootを変更しよう](https://qiita.com/erik_t/items/d8f4746d2dc2992f329e)

　　作業的には必要ないですが、目を通しておくと今回の記事がわかりやすいと思います。

# 使用ツール
- Tera Term

# 手順
[1. .htaccessファイルを作成](https://qiita.com/erik_t/items/91addfbd9cb44676d281#1-htaccess%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%82%92%E4%BD%9C%E6%88%90)
[2. 設定ファイルを書き換え](https://qiita.com/erik_t/items/91addfbd9cb44676d281#2--%E8%A8%AD%E5%AE%9A%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%82%92%E6%9B%B8%E3%81%8D%E6%8F%9B%E3%81%88)
[3. プロジェクトディレクトリ内のフォルダ、ファイルにパーミッション付与](https://qiita.com/erik_t/items/91addfbd9cb44676d281#3-%E3%83%97%E3%83%AD%E3%82%B8%E3%82%A7%E3%82%AF%E3%83%88%E3%83%87%E3%82%A3%E3%83%AC%E3%82%AF%E3%83%88%E3%83%AA%E5%86%85%E3%81%AE%E3%83%95%E3%82%A9%E3%83%AB%E3%83%80%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%81%AB%E3%83%91%E3%83%BC%E3%83%9F%E3%83%83%E3%82%B7%E3%83%A7%E3%83%B3%E4%BB%98%E4%B8%8E)
[4. 動作確認](https://qiita.com/erik_t/items/91addfbd9cb44676d281#4-%E5%8B%95%E4%BD%9C%E7%A2%BA%E8%AA%8D)

# やってみよう
## 1. .htaccessファイルを作成
[1. VirtualHost使用](https://qiita.com/erik_t/items/20e93326d66d943dcb36)の[1. .htaccessファイルを作成](https://qiita.com/erik_t/items/20e93326d66d943dcb36#1-htaccess%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%82%92%E4%BD%9C%E6%88%90)参照。

urlからindex.phpを省略するため、下記を追加してください。

[1. skeleton project](https://qiita.com/erik_t/items/23cc9df2154e80aa137e)は以下。

```:.htaccess
<IfModule mod_rewrite.c>
  RewriteEngine On
  RewriteBase / ←ここを追加
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteRule . index.php [L]
</IfModule>
```
[2-1. First Application Walkthrough Getting Set Upまで](https://qiita.com/erik_t/items/9e9f6c93d2403ac90242)は以下。

```:.htaccess
<IfModule mod_rewrite.c>
  RewriteEngine On
  RewriteBase / ←ここを追加
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteRule . index.php [L]
</IfModule>
```

## 2.  設定ファイルを書き換え
設定ファイル`/etc/httpd/conf/httpd.conf`の該当部分を下記のように書き換えます。

- DocumentRoot書き換え

```:httpd.conf(変更前)
#
# DocumentRoot: The directory out of which you will serve your
# documents. By default, all requests are taken from this directory, but
# symbolic links and aliases may be used to point to other locations.
#
DocumentRoot "/var/www/html"
```

```:httpd.conf(変更後)
#
# DocumentRoot: The directory out of which you will serve your
# documents. By default, all requests are taken from this directory, but
# symbolic links and aliases may be used to point to other locations.
#
DocumentRoot "/home/slimuser/projects/slim/Slim-Skeleton/public"
```

- Dirctory書き換え

Directoryのパスを、編集したドキュメントルートに合わせて書き換えます。
併せて、urlからindex.phpを省略するため、`AllowOverride None`を`AllowOverride All`に書き換えます。

```:httpd.conf(変更前)
#
# Relax access to content within /var/www.
#
<Directory "/var/www">
  AllowOverride None
```

```:httpd.conf(変更後)
#
# Relax access to content within /var/www.
#
<Directory "/home/slimuser/projects/slim/Slim-Skelton/public">
  AllowOverride All
```
DocumentRoortとDirectoryの書き換えを終えたらApacheを再起動します。

```
systemctl restart httpd
```
## 3. プロジェクトディレクトリ内のフォルダ、ファイルにパーミッション付与
[1. VirtualHost使用](https://qiita.com/erik_t/items/20e93326d66d943dcb36)の[4. プロジェクトディレクトリ内のフォルダ、ファイルにパーミッション付与](https://qiita.com/erik_t/items/20e93326d66d943dcb36#4-%E3%83%97%E3%83%AD%E3%82%B8%E3%82%A7%E3%82%AF%E3%83%88%E3%83%87%E3%82%A3%E3%83%AC%E3%82%AF%E3%83%88%E3%83%AA%E5%86%85%E3%81%AE%E3%83%95%E3%82%A9%E3%83%AB%E3%83%80%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%81%AB%E3%83%91%E3%83%BC%E3%83%9F%E3%83%83%E3%82%B7%E3%83%A7%E3%83%B3%E4%BB%98%E4%B8%8E)参照。

## 4. 動作確認
ブラウザを起動して、以下のURLにアクセスしてみましょう。
PHPのビルトインWebサーバーを使用していた時と同じように表示されたらOKです。

```
http://192.168.33.60/world
```

# 後で調べたいこと
[こちらのサイト](https://www.digitalocean.com/community/questions/how-to-active-sudo-a2enmod-rewrite-for-centos)では、下記のように.htaccessファイルを使用するのであれば
"AllowOverride All"は非推奨ということだったのですが、
どう設定していいかよくわからなかったので、[こちらのチュートリアル](https://devops.ionos.com/tutorials/install-and-configure-mod_rewrite-for-apache-on-centos-7/)のやり方を採用しました。
"AllowOverride All"以外のやり方もいずれ調べたいです。

# 参考サイト
[Install And Configure Mod_rewrite For Apache On CentOS 7](https://devops.ionos.com/tutorials/install-and-configure-mod_rewrite-for-apache-on-centos-7/)
[ApacheでLaravel5アプリケーションを動かす](http://murayama.hatenablog.com/entry/2015/09/10/081522)
[How to active sudo a2enmod rewrite for centos?](https://www.digitalocean.com/community/questions/how-to-active-sudo-a2enmod-rewrite-for-centos)

# 関連ページ
## Windows10にVagrantをを入れてCentOS7をインストールしよう
[1. VagrantインストールからVagrantfileを設置まで](https://qiita.com/erik_t/items/d7f7abbf7deafa4c6fe4)
[2. 仮想マシンの操作](https://qiita.com/erik_t/items/909efb63fd389f486ec3)
[3. WinSCP、Tera Termに秘密鍵でログイン ](https://qiita.com/erik_t/items/2e3c43cfe8731621b82d)
[4. WinSCP、Tera Termにrootユーザーでパスワードログイン](https://qiita.com/erik_t/items/8d006b599815c8fbf38b)
[5. zip/unzipをインストール](https://qiita.com/erik_t/items/9fbe7b5630b1f62893a1)
[6. Vagrantにて仮想環境を配布](https://qiita.com/erik_t/items/11f24633f4248e4f33f0)

## ローカルでLAMP環境を構築しよう
[0. 事前準備](https://qiita.com/erik_t/items/9c7c49db061a250cbc32)
[1. Apacheをインストール](https://qiita.com/erik_t/items/e36235896b327f5cb461)
[2. MySQLをインストール](https://qiita.com/erik_t/items/8dc3f2a5e8e8c9376e27)
[3. PHPをインストール](https://qiita.com/erik_t/items/617503557020a4a6ba82)
[4. ファイアウォールとか停止する](https://qiita.com/erik_t/items/a898d0f547bff6b3d8ff)

## Composerをインストール
[CentOS7にComposerをインストールしよう](https://qiita.com/erik_t/items/0b3492f38f6cd8605a4c)

## PHP Slim3フレームワークのサンプルアプリを作ろう
[1. skeleton project](https://qiita.com/erik_t/items/23cc9df2154e80aa137e)
[2-1. First Application Walkthrough Getting Set Upまで](https://qiita.com/erik_t/items/9e9f6c93d2403ac90242)

## Apache
 [DocumentRootを変更しよう](https://qiita.com/erik_t/items/d8f4746d2dc2992f329e)

## PHP Slim3フレームワークのサンプルアプリをApacheで動かそう
[1. VirtualHost使用](https://qiita.com/erik_t/items/20e93326d66d943dcb36)
2. DocumentRoot使用
[3. Alias使用](https://qiita.com/erik_t/items/608ef6c060efc6162400)