AlmaLinux 8.7
AlmaLinux 8.7 セットアップメモ
Section 4.1 Webサーバー(Apache)構築編 Apache
About
Webアプリケーションを作るために……という事でWebサーバー構築を行っていきます。 ここでは、Apacheを用いたWebサーバーになっていますが、Section 5.1で nginx を用いた場合の方法もあります。
環境は、Section 2.1~Section 2.3で作成したvirtualboxの環境で実行しています。
AppStreamのバージョン等を調べる
Section 3.1でも触れたとおり、モジュール管理されているのでバージョン情報等を確認します。
[root@localhost ~]# dnf module list httpd
AlmaLinux 8 - AppStream
Name Stream Profiles Summary
httpd 2.4 [d] common [d], devel, minimal Apache HTTP Server
ヒント: [d]efault, [e]nabled, [x]disabled, [i]nstalled
2.4からバージョンが進んでないような気もしていますが、デフォルトなのでそのまま使えそうです。
バージョンの切り替え
勝手に変わってしまうのも問題になりそうなので、有効化しておきましょう。
[root@localhost ~]# dnf module enable httpd:2.4
========================================================================================================================
パッケージ アーキテクチャー バージョン リポジトリー サイズ
========================================================================================================================
モジュールストリームの有効化中:
httpd 2.4
トランザクションの概要
========================================================================================================================
これでよろしいですか? [y/N]: y
完了しました!
[root@localhost ~]# dnf module list httpd
AlmaLinux 8 - AppStream
Name Stream Profiles Summary
httpd 2.4 [d][e] common [d], devel, minimal Apache HTTP Server
ヒント: [d]efault, [e]nabled, [x]disabled, [i]nstalled
[root@localhost ~]#
インストール
[root@localhost ~]# dnf install httpd mod_ssl mod_http2
依存関係が解決しました。
========================================================================================================================
パッケージ Arch バージョン リポジトリー サイズ
========================================================================================================================
インストール:
httpd x86_64 2.4.37-51.module_el8.7.0+3281+01e58653 appstream 1.4 M
mod_http2 x86_64 1.15.7-5.module_el8.6.0+2872+fe0ff7aa appstream 153 k
mod_ssl x86_64 1:2.4.37-51.module_el8.7.0+3281+01e58653 appstream 138 k
依存関係のインストール:
almalinux-logos-httpd noarch 84.5-1.el8 appstream 29 k
apr x86_64 1.6.3-12.el8 appstream 128 k
apr-util x86_64 1.6.1-6.el8 appstream 105 k
httpd-filesystem noarch 2.4.37-51.module_el8.7.0+3281+01e58653 appstream 41 k
httpd-tools x86_64 2.4.37-51.module_el8.7.0+3281+01e58653 appstream 108 k
mailcap noarch 2.1.48-3.el8 baseos 39 k
sscg x86_64 3.0.0-5.el8 appstream 50 k
弱い依存関係のインストール:
apr-util-bdb x86_64 1.6.1-6.el8 appstream 24 k
apr-util-openssl x86_64 1.6.1-6.el8 appstream 27 k
トランザクションの概要
========================================================================================================================
インストール 12 パッケージ
ダウンロードサイズの合計: 2.2 M
インストール後のサイズ: 5.8 M
これでよろしいですか? [y/N]: y
(中略)
完了しました!
[root@localhost ~]#
まずはインストールまで。
サービスの登録 と firewall 設定
まずは、サービスを有効化して起動します。
[root@localhost ~]# systemctl enable httpd
Created symlink /etc/syst//system/multi-user.target.wants/httpd.service → /usr
/lib/syst//system/httpd.service.
[root@localhost ~]# systemctl start httpd
このままでは、firewallによってアクセスできないようにされているので、そちらも開放します。
[root@localhost ~]# firewall-cmd --zone=public --add-service=http --permanent
[root@localhost ~]# firewall-cmd --zone=public --add-service=https --permanent
これで、ネットワーク的に問題が無ければブラウザでアクセスできると思います。
設定変更
.htaccess を使うWebアプリケーションが多いので、DocumentRoot(サーバー内の代表的なページを管理するフォルダの事)で使えるように許可します。
変更する設定は、ServerAdmin、ServerName、Direcrory Directive 内の AllowOverride となります。 ServerAdminは、Webサイトへの問い合わせ先となるメールアドレスを入れるのがお作法。ServerNameは公開するときに使うドメインを書いてください。
外部公開まで考えるともっと変えたほうが良い設定もありますが、開発環境レベルであればこれで十分でしょう。
エディタで直すのもあれなのでsedコマンドを使って一気に書き換えます。
[root@localhost ~]# cp /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/" \
> /etc/httpd/conf/httpd.conf
*** /etc/httpd/conf/httpd.conf.org YYYY-mm-dd hh:ii:ss.000000000 +0900
--- /etc/httpd/conf/httpd.conf YYYY-mm-dd hh:ii:ss.000000000 +0900
***************
*** 86,92 ****
# e-mailed. This address appears on some server-generated pages, such
# as error documents. e.g. admin@your-domain.com
#
! ServerAdmin root@localhost
#
# ServerName gives the name and port that the server uses to identify itself.
--- 86,92 ----
# e-mailed. This address appears on some server-generated pages, such
# as error documents. e.g. admin@your-domain.com
#
! ServerAdmin webmaster@localhost.example.com
#
# ServerName gives the name and port that the server uses to identify itself.
***************
*** 95,101 ****
#
# If your host doesn't have a registered DNS name, enter its IP address here.
#
! #ServerName www.example.com:80
#
# Deny access to the entirety of your server's filesystem. You must
--- 95,101 ----
#
# If your host doesn't have a registered DNS name, enter its IP address here.
#
! ServerName www.example.com:80
#
# Deny access to the entirety of your server's filesystem. You must
***************
*** 151,157 ****
# It can be "All", "None", or any combination of the keywords:
# Options FileInfo AuthConfig Limit
#
! AllowOverride None
#
# Controls who can get stuff from this server.
--- 151,157 ----
# It can be "All", "None", or any combination of the keywords:
# Options FileInfo AuthConfig Limit
#
! AllowOverride All
#
# Controls who can get stuff from this server.
設定を変えたらサービスを再起動しましょう。
オプションその1 mod_securty
WAF(Web Application Firewall)を、apacheのモジュールをインストールして有効にすることで導入することができます。
[root@localhost ~]# dnf install mod_security mod_security-mlogc mod_security_crs
設定については色々調べてみてください。
なお、インストール後は、自分でサービスを再起動しましょう。
オプションその2 mod_markdown
markdownテキストをアップロードすればhtmlに変換して表示してくれるモジュールがあります。開発では使わないだろう……と言わずに……
[root@localhost ~]# dnf install mod_markdown
設定については色々調べてみてください。
なお、インストール後は、自分でサービスを再起動しましょう。