メモ > サーバ > 構築: 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>