• home
  • about
  • 全ての投稿
  • ソフトウェア・ハードウェアの設定のまとめ
  • 分析関連のまとめ
  • ヘルスケア関連のまとめ
  • 生涯学習関連のまとめ

apache

date: 2021-12-14 excerpt: apacheの使い方

tag: linuxapache


apacheの設定と使い方

概要

  • apache2 - Apache Hypertext Transfer Protocol Server

インストール

ubuntu, debian

$ sudo apt install apache2

rhel

$ sudo yum install httpd

コンパイルする場合

$ ./configure --prefix=/usr/local/apache --enable-module=ssl

設定

設定ファイルの場所

debian

  • /etc/apache2/apache2.conf

rhel

  • /etc/httpd/conf/httpd.conf

ディレクティブ

  • <Directory directory-path> ... </Directory>
    • 指定のディレクトリとそのサブディレクトリに対して適応される
    • <Directory ~ "^/www/.*/[0-9]{3}">などの正規表現を使える
  • <DirectoryMatch regex> ... </DirectoryMatch>
    • 正規表現にマッチするファイルシステムのディレクトリと サブディレクトリとのみに適用される
    • <DirectoryMatch "^/www/(.+/)?[0-9]{3}">などデフォルトで正規表現を使える
  • <Files filename> ... </Files>
    • <Files ~ "\.(gif|jpe?g|png)$">のように正規表現を使える
  • <FilesMatch regex> ... </FilesMatch>
  • <Location URL-path|URL> ... </Location>
    • URLにより中に書かれたディレクティブの適用範囲を制限
  • <LocationMatch regex> ... </LocationMatch>
  • <Limit method [method] ... > ... </Limit>
    • methodを制限する条件を書く
  • <LimitExcept method [method] ... > ... </Limit>
    • methodを制限しない条件を書く
  • <VirtualHost ip-address:port> ... </VirtualHost>
    • 特定のバーチャルホストに対してのみ適用されるディレクティブ群を括る
  • <RequireAll> ... </RequireAll>
    • すべての条件に一致したらtrue
  • <RequireAny> ... </RequireAny>
    • すべての条件に一致したらfalse
  • <RequireNone> ... </RequireNone>
    • すべての条件に一致しなかったらtrue
  • ServerName
    • ホスト名、ポート番号
  • ServerAlias
    • 名前ベースでのサーバの別名を設定
  • AllowOverride All|None|directive-type
    • .htaccessファイルを見つけた時、設定を上書きできるか
    • directive-type各種
      • AuthConfig
        • 認証に関する設定
      • Idexes
        • DirectoryIndexを有効にする
      • FileInfo
        • ファイルタイプの制御設定を有効にする
      • Limit
        • Order, Allow, Deny設定を有効にする
      • Options
      • None
        • .htaccessで変更を無効にする
      • All
        • .htaccessで変更をすべて有効にする
  • AccessFileName
    • 外部設定ファイル名(e.g. .htaccess)
  • AuthName
    • パスワード認証などの認可領域名
  • AuthUserFile
    • パスワードファイル名
  • Alias URL-path file-path|directory-path
    • url-pathで始まるものはdirectory-filenameで始まるローカルファイルにマップ
  • DocumentRoot <directory-path>
    • ドキュメントのルートを示す
  • Listen <port>
    • 待受ポート
  • User <apache>
    • 実行ユーザ名
  • UserDir <公開ディレクトリ>|disabled
    • 一般ユーザの~public_htmlを公開するかどうか
    • http://hostname/~ユーザ名でアクセスできる
  • Group <apache>
    • 実行グループ名
  • ServerAdmin <admin@hoo.com>
    • 管理者のメールアドレス
  • ServerTokens Major|Minor|Min[imal]|Prod[uctOnly]|OS|Full
    • Prodと設定するとバージョンが見えなくなる
  • EnableMMAP On|Off
    • httpdがメモリマッピングを使うかどうか
  • EnableSendfile On|Off
    • httpdがカーネルのsendfile サポートを使うかどうか
  • ErrorLog file-path|syslog[:facility]
    • サーバに生じたさまざまなエラーを 記録する為のファイルの名前を設定
    • 例
      • ErrorLog /var/log/httpd/error_log
      • ErrorLog syslog:user
  • KeepAliveTimeout seconds
    • Apache が次のリクエストを何秒待つかを指定
  • Requireディレクティブ各種
    • Require user userid [userid] ...
    • Require group group-name [group-name] ...
    • Require valid-user
    • Require ip 10 172.20 192.168.2
      • クライアントが特定のIPレンジの範囲ならば許可
    • Require forward-dns dynamic.example.org
      • クライアントIPが特定のDNSで解決できれば許可
  • DirectoryIndex <target-html> index.html
    • index.htmlへのアクセスをに変更する
  • StartServers <子プロセスの数>
    • 起動時の子プロセスの数
  • MinSpareServer <子プロセスの数>
    • 待機する子プロセスの最小値
  • MaxSpareServer <子プロセスの数>
    • 待機する子プロセスの最大値
  • ServerLimits <子プロセスの数>
    • 生成できる子プロセスの数
  • MaxRequestWorkers <同時接続数>
    • 同時に接続できる最大数
  • Timeout <seconds>
    • クライアントからの接続がタイムアウトになる秒数

具体例

基本認証

<Direcotry "/~">
  AuthType Basic
  AuthName "Please Enter Your ID"
  AuthUserFile /etc/apache2/conf/htpasswd
  Require valid-user
</Direcotry>

ツール

htpasswd

概要

  • digest認証用の.htpasswdを生成する
  • 引数
    • -c
      • パスワードファイルを新規に作成
    • -D
      • ユーザを削除
    • -m
      • MD5
    • -s
      • SHA-1
    • -2
      • SHA-256
    • -5
      • SHA-512
    • -B
      • bcrypt
    • -p
      • plane text

例

新規にユーザを追加

$ htpasswd -c <output-path>/htpasswd <user>

すでに.htpasswdがあるときに追加またはパスワードの変更

$ htpasswd <output-path>/htpasswd <user>

ユーザを削除

$ htpasswd -D <output-path>/htpasswd <user>

apachectl

概要

  • サービスの管理や設定のテスト

例

サービスを開始

$ apachectl start

サービスを停止

$ apachectl stop

サービスを再起動

$ apachectl restart

サービスを再起動(graceful)

$ apachectl graceful

設定を確認

$ apachectl configtest

apxs

概要

  • モジュールをDSOとしてコンパイルしてインストールする

例

$ sudo apxs -i -a -c mod_foobar.c

組み込みモジュール確認

$ httpd -l # rhel
$ apache2 -l # debian, ubuntu

モジュール一覧を表示して、設定ファイルの文法チェック

$ apache2 -M

対話的にモジュールを有効化する

$ sudo a2enmod


linuxapache Share Tweet