CentOS8にApacheを入れてバーチャルホストを設定する

## 環境

クラウド: さくらクラウド

OS: CentOS 8.0.1905 64bit

Apache: 2.4.37



## まえおき

Apacheをバーチャルホストを設定したときにやったことをまとめてみました。説明で使うドメインは以下の２つとします。

domain-1.com

domain-2.com



## apache設定ファイルの編集

Apacheをインストール

```bash
dnf install -y httpd
```

/etc/httpd/conf/httpd.confを編集

```bash
vim /etc/httpd/conf/httpd.conf
```



```shell
ServerRoot "/etc/httpd"
ServerTokens ProductOnly


Listen 80


Include conf.modules.d/*.conf


User apache
Group apache


ServerAdmin motani@eightbeat.co.jp



#全てのディレクトリに対する設定
<Directory />
    AllowOverride None
    Require all denied
    Options FollowSymLinks
</Directory>




# <Directory "/var/www">
#     AllowOverride None
#     Require all granted
# </Directory>


# <Directory "/var/www/html">
#     AllowOverride None
#     Require all granted
# </Directory>


# <Directory "/var/www/vhosts">
#     Options FollowSymLinks
#     AllowOverride All
#     Require all granted
# </Directory>



#dir_moduleモジュールがあった場合の設定
<IfModule dir_module>
    DirectoryIndex index.html

</IfModule>


<Files ".ht*">
    Require all denied

</Files>

#log_config_moduleモジュールがあった場合の設定
<IfModule log_config_module>
    LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
    LogFormat "%h %l %u %t \"%r\" %>s %b" common


<IfModule logio_module>
      LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %I %O" combinedio

    </IfModule>
 CustomLog "logs/access_log" combined
</IfModule>


<IfModule alias_module>
    ScriptAlias /cgi-bin/ "/var/www/cgi-bin/"

</IfModule>


<Directory "/var/www/cgi-bin">
    AllowOverride None
    Options None
    Require all granted

</Directory>


<IfModule mime_module>
    TypesConfig /etc/mime.types
    AddType application/x-compress .Z
    AddType application/x-gzip .gz .tgz
    AddType text/html .shtml
    AddOutputFilter INCLUDES .shtml

</IfModule>




<IfModule mime_magic_module>
    MIMEMagicFile conf/magic

</IfModule>


ErrorLog "logs/error_log"
LogLevel warn
AddDefaultCharset UTF-8
EnableSendfile on
IncludeOptional conf.d/*.conf
```

virtual.confの設定

```bash
touch /etc/httpd/conf.d/virtual.conf
vim /etc/httpd/conf.d/virtual.conf
```



```bash
#htdocs配下の設定
<Directory /var/www/vhosts/*/htdocs>
    Options MultiViews SymLinksIfOwnerMatch IncludesNoExec ExecCGI
    AllowOverride Options FileInfo AuthConfig Limit Indexes

    <Limit GET POST PATCH DELETE OPTIONS PROPFIND>
      Require all granted
    </Limit>
    <LimitExcept GET POST PATCH DELETE OPTIONS PROPFIND>
      Require all denied
    </LimitExcept>
</Directory>
```

domain-1.comの設定ファイルを編集する

```bash
touch /etc/httpd/conf.d/domain-1.conf
vim /etc/httpd/conf.d/domain-1.conf
```

```bash
#domain-1.comの設定
<VirtualHost *:80>
    DocumentRoot /var/www/vhosts/domain-1.com
    ServerName domain-1.com
    CustomLog logs/domain-1.com-access_log ltsv
    ErrorLog logs/domain-1.com-error_log ltsv
</VirtualHost>
```



domain-2.comの設定ファイルを編集する

```bash
touch /etc/httpd/conf.d/domain-1.conf
vim /etc/httpd/conf.d/domain-1.conf
```

```bash
#domain-1.comの設定
<VirtualHost *:80>
    DocumentRoot /var/www/vhosts/domain-2.com
    ServerName domain-2.com
    CustomLog logs/domain-2.com-access_log ltsv
    ErrorLog logs/domain-2.com-error_log ltsv
</VirtualHost>
```



構文があってるかテスト

```bash
httpd -t
```



httpdを再起動

```bash
systemctl restart httpd
```



80番ポートを開ける

```bash
firewall-cmd --zone=public --add-service=http
```





## ドキュメントルートの作成

domain-1.comのドキュメントルートとファイルを作成

```bash
cd /var
mkdir www/vhosts/domain-1.com
vim /var/www/vhosts/domain-1.com/index.html
chown -R apache:apache www
```



domain-1.comのドキュメントルートとファイルを作成

```bash
cd /var
mkdir www/vhosts/domain-2.com
vim /var/www/vhosts/domain-2.com/index.html
chown -R apache:apache www
```