メモ > サーバ > 構築: Webサーバ設定 > Apache
■Apache
※Webサーバを構築して、サーバにブラウザからアクセスできるようにする
※IPアドレスでアクセスしたときはIPアドレスもしくはサーバ名だけが表示されるページにアクセス、
ドメインを指定してアクセスしたら対応するページにアクセス…とすると管理しやすいかも
「IPアドレス + /phpmyadmin/」などへの無差別アクセスと攻撃下調べの影響も、若干軽減できる
※バーチャルホストが不要な案件でも、後々検収環境が追加されたりを想定して、常にバーチャルホストにしておくといいかも
バーチャルホストの設定方法は Etcetera.txt を参照
※バーチャルホストにした場合、access_log にサブドメインが残らないのでページを判別しづらい
(リファラには表示されるが、外部からアクセスされたときなどはダメ)
サブドメイン名を記録するか、サブドメインごとにログファイルを分けておいた方が良さそう
※PHP5.6を使うならApacheは2.4をインストールする。詳細は Programming.txt を参照
なお Amazon Linux 2 の場合でも、Extrasリポジトリではなく通常の手順でインストールできる
Amazon Linux2でLAMP環境を構築 - Qiita
https://qiita.com/RayDoe/items/fb3e0ef69b9b4132e7f7
Amazon Linux 2にLAMP環境インストール - Qiita
https://qiita.com/cherubim1111/items/4a89856e743f287c599f
■インストール
Webサーバー構築(Apache)
http://centossrv.com/apache.shtml
# yum -y install httpd … httpdをインストール(PHP5.6を使うならApacheは2.4をインストールする)
# vi /etc/httpd/conf/httpd.conf … httpdの設定ファイルを編集
■ファイヤーウォール設定(iptablesを使用している場合の設定)
#ServerTokens OS
ServerTokens Prod … エラーページなどでOS名を表示しないようにする
#ServerName www.example.com:80
ServerName refirio.net:80 … サーバー名を指定(コメントアウトしておかないと、サーバ起動時に警告が表示される
Webサーバが複数ある場合は「ServerName web1.refirio.net:80」など
初期値のままでも問題なさそう)
<Directory "/var/www/html">
#AllowOverride None
AllowOverride All ….htaccessを許可する場合
#LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
LogFormat "%h %l %u %t \"%!414r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined … 長すぎるURI(414エラー)をログに記録しない場合
LogFormat "%h %l %u %t \"%!414r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %D %{X-Forwarded-For}i %{X-Forwarded-Proto}i %v" combined
… 処理時間やプロキシのIPなども記録する例
#
# For a single logfile with access, agent, and referer information
# (Combined Logfile Format), use the following directive:
#
SetEnvIf Request_URI "default\.ida" no_log … wormからのアクセスをログに記録しない場合
SetEnvIf Request_URI "cmd\.exe" no_log … 同上
SetEnvIf Request_URI "root\.exe" no_log … 同上
SetEnvIf Request_URI "Admin\.dll" no_log … 同上
SetEnvIf Request_URI "NULL\.IDA" no_log … 同上
SetEnvIf Remote_Addr 192.168.1 no_log … 内部からのアクセスをログに記録しない場合
SetEnvIf Remote_Addr 127.0.0.1 no_log … 自ホストからのアクセスをログに記録しない場合
CustomLog logs/access_log combined env=!no_log … 上記以外のアクセスをログに記録する
#ServerSignature On
ServerSignature Off … エラーページでサーバー情報を表示しないようにする
#AddDefaultCharset UTF-8 … UTF-8以外でページを作成する場合はコメントアウト(文字化け対策)
# rm -f /etc/httpd/conf.d/welcome.conf … テストページを削除
# chown apache. /var/www/ … 公開用ディレクトリの所有者をapacheに変更
# chmod 775 /var/www/ … apacheグループのユーザに読み書き実行を許可
# chown apache. /var/www/html/ … ドキュメントルートの所有者を「apache」に変更
# chmod 775 /var/www/html/ … apacheグループのユーザに読み書き実行を許可
# ll /var/www/ … ドキュメントルートの所有者を確認
合計 24
drwxr-xr-x 2 root root 4096 10月 5 11:45 cgi-bin
drwxr-xr-x 5 apache apache 4096 9月 27 17:43 html
# service httpd configtest … 設定ファイルの構文をチェック
Syntax OK
# systemctl start httpd … httpdを起動
# systemctl enable httpd … httpdの自動起動を設定
# httpd -v … httpdのインストールを確認
# vi /etc/sysconfig/iptables … ファイヤーウォールを設定(80ポートを開ける)
■動作確認
#HTTPを許可
-A MY-FIREWALL -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
# service iptables restart … ファイヤーウォールを再起動
# vi /var/www/html/index.html … テストページ作成
http://refirio.net/ のようにブラウザからアクセスを確認
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>テスト</title>
</head>
<body>
<p>テスト。</p>
</body>
</html>