公開日:2026/9/10 0:00:00

Amazon Linux 2023 Section 2 Apache + mariadb + PHP 構成

Section 2.2 Apache

About

Apacheをセットアップします。

環境は、Section 2.1 が終わった状態からとなります。

バージョンの確認

リポジトリに登録されているものからパッケージ名とバージョンを指定してインストールすることになります。 まずは、提供されているかどうかを調べます。

[root@localhost ~]# dnf search httpd
================================================= 名前 完全一致: httpd =================================================
httpd.x86_64 : Apache HTTP Server
=============================================== 名前 & 概要 一致: httpd ================================================
generic-logos-httpd.noarch : Fedora-related icons and pictures used by httpd
httpd-core.x86_64 : httpd minimal core

(略)
[root@localhost ~]# dnf repoquery httpd
httpd-0:2.4.54-3.amzn2023.0.4.x86_64
(略)
httpd-0:2.4.68-1.amzn2023.0.1.x86_64
[root@localhost ~]#

特に変わったものは登録されていないようなので、インストールを進めます。

インストール

httpd 本体と、SSL通信用のモジュールをインストールします。 開発用として建てる場合でも、本番環境で必要になるものも入れておくとよいでしょう。 mod_md(ACME protocol用のモジュール)は、ローカルだと意味がないので入れないと思うけれど……

[root@localhost ~]# dnf -y install httpd mod_ssl
依存関係が解決しました。
========================================================================================================================
 パッケージ                      アーキテクチャー   バージョン                            リポジトリー            サイズ
========================================================================================================================
インストール:
 httpd                           x86_64             2.4.68-1.amzn2023.0.1                 amazonlinux              46 k
 mod_ssl                         x86_64             1:2.4.68-1.amzn2023.0.1               amazonlinux             110 k
依存関係のインストール:
 apr                             x86_64             1.7.5-1.amzn2023.0.4                  amazonlinux             129 k
 apr-util                        x86_64             1.6.5-1.amzn2023.0.1                  amazonlinux             100 k
 apr-util-lmdb                   x86_64             1.6.5-1.amzn2023.0.1                  amazonlinux              15 k
 generic-logos-httpd             noarch             18.0.0-12.amzn2023.0.3                amazonlinux              19 k
 httpd-core                      x86_64             2.4.68-1.amzn2023.0.1                 amazonlinux             1.4 M
 httpd-filesystem                noarch             2.4.68-1.amzn2023.0.1                 amazonlinux              12 k
 httpd-tools                     x86_64             2.4.68-1.amzn2023.0.1                 amazonlinux              80 k
 libbrotli                       x86_64             1.0.9-4.amzn2023.0.2                  amazonlinux             315 k
 libtalloc                       x86_64             2.3.4-1.amzn2023.0.2                  amazonlinux              31 k
 mailcap                         noarch             2.1.49-3.amzn2023.0.3                 amazonlinux              33 k
 sscg                            x86_64             3.0.3-77.amzn2023                     amazonlinux              46 k
弱い依存関係のインストール:
 apr-util-openssl                x86_64             1.6.5-1.amzn2023.0.1                  amazonlinux              17 k
 mod_http2                       x86_64             2.0.42-1.amzn2023.0.1                 amazonlinux             167 k
 mod_lua                         x86_64             2.4.68-1.amzn2023.0.1                 amazonlinux              59 k

トランザクションの概要
========================================================================================================================
インストール  16 パッケージ

(中略)

完了しました!
[root@localhost ~]#

まずはインストールが終わったら、念のため、htmlなどを配置する場所があるかを確認しましょう。

[root@localhost ~]# ls -laZ /var/www/
total 4
drwxr-xr-x.  4 root root system_u:object_r:httpd_sys_content_t:s0       33 MMM dd hh:ii .
drwxr-xr-x. 19 root root system_u:object_r:var_t:s0                   4096 MMM dd hh:ii ..
drwxr-xr-x.  2 root root system_u:object_r:httpd_sys_script_exec_t:s0    6 MMM dd hh:ii cgi-bin
drwxr-xr-x.  2 root root system_u:object_r:httpd_sys_content_t:s0        6 MMM dd hh:ii html
[root@localhost ~]#

SELinuxのコンテキストも設定された状態であることが確認できました。

Apache の設定変更

Apache の設定を書き換えます。

オプション名uncomment元の内容変更後の内容
ServerAdminroot@localhostwebmaster@localhost.example.com
ServerName
EnableSendfileOnOff

これらに加えて、Document Root の AllowOverride を None から All に変えます。こうしないと .htaccess を置いても効果が出ないためです。 EnableSendfile はvirtualboxのsyncfolder利用時に、cssなどの静的なファイルが反映されなくなることがあるので、offにします。

[root@localhost ~]# cp --preserve=context /etc/httpd/conf/httpd.conf /etc/httpd/conf/httpd.conf.org
[root@localhost ~]# cat /etc/httpd/conf/httpd.conf.org \
| sed -E "s/^(ServerAdmin )(.*$)/\1webmaster@localhost.example.com/" \
| sed -E "s/#(ServerName .*$)/\1/" \
| sed -E "/# AllowOverride.*/,/AllowOverride None/ s/(AllowOverride) None/\1 All/" \
| sed -E "s/^(EnableSendfile )(.*$)/\1off/" \
> /etc/httpd/conf/httpd.conf
[root@localhost ~]# diff -cT /etc/httpd/conf/httpd.conf.org /etc/httpd/conf/httpd.conf

diff まで実行して書き換わったところを確認してください。

サービスの登録

サービスを有効化して起動します。

[root@localhost ~]# systemctl enable httpd
Created symlink '/etc/systemd/system/multi-user.target.wants/httpd.service' → '/usr/lib/syst//system/httpd.service'.
[root@localhost ~]# systemctl start httpd
[root@localhost ~]#

AWSの考え方的にfirewalldに相当する設定はAWSのネットワーク設定で行うべきであるという感じなので、設定は不要。

サービスの登録

OSのFirewallがないのでポートは開いていますが、仮想マシン側は閉じたままです。 ホストマシンのブラウザからアクセスするためには、Vagrantfile の forwarded port の設定を変える必要があります。 1024より小さいポートにマッピングすると Vagrant up 中に警告が出ますが、複数起動したり、ホストマシンでWebサーバーを起動しなければ問題はないでしょう。

  config.vm.network "forwarded_port", guest: 80, host: 80
  config.vm.network "forwarded_port", guest: 443, host: 443

設定を修正後に、仮想マシンを再起動すれば、ネットワーク的に問題が無ければブラウザでアクセスできると思います。

コンテンツ配置とSELinux

SELinuxは Permissive 設定なので影響はないのですが、有効にした場合のことも考えて次のことだけ押さえておきましょう。

コンテンツ類は基本的に、/var/www/html にファイルを配置するわけですが、コンテキストが異なっていると Permission error になります。 どこにどういうコンテキストが適応されるかという標準設定は /etc/selinux/targeted/contexts/files/file_contexts に記載されているので、www あたりで検索すれば標準ならどのように配置するかがわかります。

作業しているうちにラベルが変わってしまう、適切なものでなくなっていくので、適切なタイミングで restorecon を使用してコンテキストをOS標準の状態に復元するのが簡単な方法で正しいやり方となります。

[root@localhost ~]# restorecon -v -r /var/www/html
Relabeled /var/www/html/******* from unconfined_u:object_r:admin_home_t:s0 to unconfined_u:object_r:httpd_sys_content_t:s0
(略)
[root@localhost ~]#

なお、FTP/SFTPでアップロードする場合はアップロード場所に合わせた適切なラベルがつくので、気にしなくて済みます。 また、コピーすることでコピー先のラベルになるので、できるだけ移動 mv コマンドを使わず cp を使うのを推奨します。