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

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

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

- 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)

　　VirtualHostを使用するので、[1](https://qiita.com/erik_t/items/23cc9df2154e80aa137e)、[2-1](https://qiita.com/erik_t/items/9e9f6c93d2403ac90242)は同じサーバーで作られるものとします。

- [【Apache】VirtualHostを使ってみよう](https://qiita.com/erik_t/items/63f079826a60aaa642d3)

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

# 使用ツール
- Tera Term

# 手順
[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)
[2. ローカルのhostsの設定を変更](https://qiita.com/erik_t/items/20e93326d66d943dcb36#2-%E3%83%AD%E3%83%BC%E3%82%AB%E3%83%AB%E3%81%AEhosts%E3%81%AE%E8%A8%AD%E5%AE%9A%E3%82%92%E5%A4%89%E6%9B%B4)
[3. バーチャルホストの設定](https://qiita.com/erik_t/items/20e93326d66d943dcb36#3-%E3%83%90%E3%83%BC%E3%83%81%E3%83%A3%E3%83%AB%E3%83%9B%E3%82%B9%E3%83%88%E3%81%AE%E8%A8%AD%E5%AE%9A)
[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)
[5. 動作確認](https://qiita.com/erik_t/items/20e93326d66d943dcb36#5-%E5%8B%95%E4%BD%9C%E7%A2%BA%E8%AA%8D
)

# やってみよう
## 1. .htaccessファイルを作成
slim/slim-skeletonパッケージを使用して作成した[1. skeleton project](https://qiita.com/erik_t/items/23cc9df2154e80aa137e)では
.htaccessファイルが自動で生成されますが、
[2-1. First Application Walkthrough Getting Set Upまで](https://qiita.com/erik_t/items/9e9f6c93d2403ac90242)で作成したサンプルアプリのように、
slim/slim-skeletonパッケージを使用しないで作成したアプリでは
.htaccessファイルを作成する必要があります。
前述のサンプルアプリでは、下記パスに`index.php`を作成したので、

```
/home/slimuser/projects/slim/FirstApplication/src/public`
```
同じパスに.htaccessファイルを作成し、下記のように記述してください。

```:.htaccess
<IfModule mod_rewrite.c>
  RewriteEngine On
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteRule . index.php [L]
</IfModule>
```
## 2. ローカルのhostsの設定を変更
[【Apache】VirtualHostを使ってみよう](https://qiita.com/erik_t/items/63f079826a60aaa642d3)の[2. 【ローカル側】設定変更](https://qiita.com/erik_t/items/63f079826a60aaa642d3#2-%E3%83%AD%E3%83%BC%E3%82%AB%E3%83%AB%E5%81%B4%E8%A8%AD%E5%AE%9A%E5%A4%89%E6%9B%B4)で行ったように、C:\Windows\System32\drivers\etc\hostsの設定を下記のように変更します。

`192.168.33.60`部分は各自の環境のIPアドレスに読み替えてください。

```:hosts
      192.168.33.60     slim3.first-application
      192.168.33.60     slim3.slim-skeleton
```
## 3. バーチャルホストの設定
[【Apache】VirtualHostを使ってみよう](https://qiita.com/erik_t/items/63f079826a60aaa642d3)の[3. 【サーバー側】バーチャルホストの設定](https://qiita.com/erik_t/items/63f079826a60aaa642d3#3-%E3%82%B5%E3%83%BC%E3%83%90%E3%83%BC%E5%81%B4%E3%83%90%E3%83%BC%E3%83%81%E3%83%A3%E3%83%AB%E3%83%9B%E3%82%B9%E3%83%88%E3%81%AE%E8%A8%AD%E5%AE%9A)で
行ったように、`/etc/httpd/conf.d/vhost.conf`を作成し、以下のように記述します。

```:vhost.conf
<VirtualHost *:80>
  ServerName slim3.first-application
  DocumentRoot /home/slimuser/projects/slim/FirstApplication/src/public
  <Directory /home/slimuser/projects/slim/FirstApplication/src/public>
      DirectoryIndex index.php
      AllowOverride All
      Require all granted
  </Directory>
</VirtualHost>
<VirtualHost *:80>
  ServerName slim3.slim-skeleton
  DocumentRoot /home/slimuser/projects/slim/Slim-Skeleton/public
  <Directory /home/slimuser/projects/slim/Slim-Skeleton/public>
      DirectoryIndex index.php
      AllowOverride All
      Require all granted
  </Directory>
</VirtualHost>
```
もちろん、[こちら](https://qiita.com/erik_t/items/63f079826a60aaa642d3#%E8%A3%9C%E8%B6%B33-%E3%82%B5%E3%83%BC%E3%83%90%E3%83%BC%E5%81%B4%E3%83%90%E3%83%BC%E3%83%81%E3%83%A3%E3%83%AB%E3%83%9B%E3%82%B9%E3%83%88%E3%81%AE%E8%A8%AD%E5%AE%9A%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6)で言及しているように
`etc/httpd/conf/httpd.conf`にバーチャルホストの設定をしてもOKです。

設定を変更したら、下記コマンドでhttpdを再起動します。

```
systemctl restart httpd
```

## 4. プロジェクトディレクトリ内のフォルダ、ファイルにパーミッション付与
下記のコマンドでプロジェクトディレクトリ内のフォルダ・ファイルの所有者をapacheにします。

```
chown -R apache:apache /home/slimuser/
```
下記のコマンドで権限を付与します。

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

```
http://slim3.first-application/hello/world
http://slim3.slim-skeleton/world
```
# 参考サイト
[Getting started: A skeleton application](https://framework.zend.com/manual/2.4/en/user-guide/skeleton-application.html)
[First Application Walkthrough](http://www.slimframework.com/docs/v3/tutorial/first-app.html)

# 関連ページ
## 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
 [VirtualHostを使ってみよう](https://qiita.com/erik_t/items/63f079826a60aaa642d3)

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