LoginSignup
0
2

More than 1 year has passed since last update.

Apacheの基本設定

Posted at

概要

apacheについて、色々調べたのでメモ程度にまとめてます。
インストール・設定・モジュール等について書きます。
まだ知識不足なので間違いがありましたら、ご指摘ください。

インストール

インストールには以下2つの方法がある。
・ソースからコンパイル
・パッケージを利用する

ソースからコンパイル

configure→make→make installの順でコンパイル

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

オプションの説明。
--prefix=パスでインストール先のディレクトリを指定。
--enable-module=sslでsslという標準モジュールを組み込む。

詳細はこちらで、Apache HTTP Server Version 2.0
コンパイルとインストール

パッケージを利用

RedHat系

# yum install httpd

Debian系

# apt-get install apache2

Apacheの設定

主に設定ファイル、設定の仕方を書きます。

設定ファイル

ソースからコンパイル

メイン設定ファイルです。その他設定ファイルあり。
/usr/local/apache2/conf/httpd.conf

RedHat系

メイン設定ファイル
/etc/httpd/conf/httpd.conf
補助設定ファイルを格納するディレクトリ
/etc/httpd/conf.d

Debian系

メイン設定ファイル
/etc/apache2/apache2.conf
補助設定ファイルのディレクトリ
/etc/apache2/
ポートの設定
/etc/apache2/ports.conf

設定方法

書式

以下のような形で記述されている。
設定項目

ディレクティブ名 設定値

適用範囲

<Files ファイル名> ... </Files>
<Directory ディレクトリ名> ... </Directory>
<Location URL> ... </Location>

ディレクティブの設定方法は長いのでこちらを参考に。
httpd.confの設定
httpd.confの設定ディレクティブ

Apacheの制御

CLIでのシステム制御方法について。

SysVinit

# /etc/init.d/httpd start      //Debianではapache2

systemd

# systemctl start httpd.service    //Debianではapache2

apachectl

# apachectl start

以下apachectlのサブコマンド。
・start:起動
・stop:終了
・restart:再起動
・graceful:安全に再起動
・reload:設定ファイルを再読み込み
・configtest:設定ファイルの構文チェック

モジュール

モジュールの組み込み、表示等を書いています。

モジュール一覧

とても多いので外部サイトを参考に。
モジュール一覧 - Apache HTTP サーバ バージョン 2.4

モジュールは/usr/lib/httpd/modulesなどにインストールされる。
ロードするにはhttpd.confでLoadModuleディレクティブを使い指定する。

例)
LoadModule ssl_module modules/mod_ssl.so

sslモジュールをロードしている。

組み込み方

apacheのインストール後にモジュールを組み込むには、apxsコマンドを使う。
以下でmod_hogeモジュールをDSOとしてコンパイルし、インストールしている。
apxsはこちらを参照。apxsのオプション

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

その後、httpd.confにLoadModuleディレクティブを追記。

LoadModule hoge_module modules/mod_hoge.so

apacheのコンパイル時に--configureオプションでモジュールを静的に組み込むことも可能。

モジュールの表示

組み込み済みモジュール

# httpd -l           //RedHat

$ sudo apache2 -l    //Debian

一覧/有効無効

# httpd -M    // 組み込みモジュールとDSOモジュールの一覧。設定ファイルの文法チェック

$ sudo a2enmod  //利用可能なモジュールを表示し、対話的にモジュールを有効化する
$ sudo a2dismod //モジュールの無効化

変更後にはapacheの再起動が必要。

アクセスの認証

基本認証(BASIC認証)とダイジェスト認証があり、IPアドレス・ホスト名でのアクセス制御もできる。

基本認証

<Directory "/var/www/html/hoge">
    AuthType Basic
    AuthName "ダイアログに出力されるメッセージ"
    AuthUserFile /etc/httpd/conf/htpasswd
    Require valid-user
</Directory>

Require valid-userと指定するとパスワードファイルのすべてのユーザがアクセスを許可される。
ユーザ名を列挙すると指定ユーザのみが許可される。

ユーザ名とパスワードを設定するにはhtpasswdコマンドを使う。
Manual Page: htpasswd

また、グループでの認証も可能。

ダイジェスト認証

<Directory "/var/www/html/digest-hoge">
    AuthType Digest
    AuthName "digest-hoge"
    AuthUserFile /etc/httpd/conf/htdigestfile
    Require valid-user
</Directory>

AuthNameは認証の領域を指定する。これが違うと認証ができない。
ダイジェスト認証のためのユーザとパスワードの設定はhtdigestコマンドを使う。

htdigest - manage user files for digest authentication

ホストベースのアクセス

Requireディレクティブを使ったアクセス制御。
authz_host_moduleモジュールで提供されています。
Order, Allow, Denyによるアクセス制御は非推奨。

書式

Require エンティティ [値...]

見やすいのでapacheの公式ではないが、これを参考に。Requireディレクティブ

バーチャルホスト

バーチャルホストを使用すると1台のサーバで複数のwebサイトを管理できる。
名前ベースとIPベースのバーチャルホストがある。

名前ベースのバーチャルホスト

1つのIPアドレスと複数のドメイン名を設定する。

//1つ目
<VirtualHost *:80>
    ServerName web.hoge.jp
    ServerAdmin web@web.hoge.jp
    DocumentRoot /var/www/hoge
</VirtualHost>

//2つ目
<VirtualHost *:80>
    ServerName www.example.net
    ServerAdmin web@example.net
    DocumentRoot /var/www/example
</VirtualHost>

IPベースのバーチャルホスト

複数のIPアドレスと複数のドメイン名を設定する。
ListenディレクティブでIPアドレスを指定する。

Listen 192.168.1.10:80
Listen 192.168.1.11:80

===省略===

//1つ目
<VirtualHost 192.168.1.10:80>
    ServerName web.hoge.jp
    ServerAdmin web@web.hoge.jp
    DocumentRoot /var/www/hoge
</VirtualHost>

//2つ目
<VirtualHost 192.168.1.11:80>
    ServerName www.example.net
    ServerAdmin web@example.net
    DocumentRoot /var/www/example
</VirtualHost>

その他

SSL/TLS

SSL/TLS Strong Encryption
Apache2.4でHTTPS通信を行うための環境構築手順と詰まりどころ

プロキシサーバ

Squidをリバースプロキシとして使ってみた

0
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
2