Apacheに関する世界観です。Webサーバーも参照してください。
HTTPDデーモン。Webサーバーを構築する時に中核となるソフトウェアです。
Wikipedia
ソースコード
ApacheでHTMLドキュメントを格納する場所は、htdocsなどのディレクトリ名がついていることが多く、通常は/usr/local/apache2/htdocs/などにある。
htdocsにHTMLを入れる慣習は、XAMPPなどでも同じで、XAMPPでApacheをWindowsに導入した場合は、htdocsというディレクトリの中にHTMLファイルをつめこめばよい。
ディストリビューションのパッケージで入れた場合は、/var/www/htmlなど、/varディレクトリ以下に格納することもある。
あるいは、ホームディレクトリ以下のpublic_htmlをユーザー別の格納場所として使うこともある。
ディレクトリの所有者がrootになっていると扱いづらいので、chownなどで所有者を一般ユーザーに変えておくと、所有者となっているユーザー(あるいはグループ)から直接ファイルをコピー出来て扱いやすくなる。
/var/www/htmlは「みんなが見れるディレクトリにデータを格納するのはなんだか嫌だ」という人も居るので、ユーザー別のディレクトリを新しく設定したい場合は、
<IfModule mod_userdir.c> UserDir disabled UserDir enabled username UserDir public_html </IfModule>
と設定する。この設定はusernameだけにユーザーディレクトリを有効にし(username以外の全てのユーザからはユーザーディレクトリを無効にする)、ユーザーディレクトリの場所をpublic_htmlとする。
ユーザーディレクトリを設定すると、http://hogehoge.com/~username/pagename.htmlから目的のHTMLファイル(/home/username/public_html/pagename.html)にアクセスできる。
また、cgi-binでCGIを有効にする場合は、以下のようにする。
<Directory /home/*/public_html/cgi-bin/> Options ExecCGI SetHandler cgi-script </Directory>
パス内のアスタリスク(*)はユーザー名に置換される。
詳しくは以下のリンク先が参考になる。
UNIXシステム管理(5.ユーザーとパーミッション)やLinuxファイルシステム階層も参照のこと。
Apacheの設定方法は、Apache全体に適用される設定のほかに、ディレクトリやパスなどに部分的に適用される設定(ディレクティブ設定)がある。
以下は設定ファイルの例など参考になるサイト。
以下はDebianの場合。DebianのApacheは設定ファイルなどのディレクトリとファイル名が異なる(柔軟性のある配置になっている)ので注意が必要。
以下は公式のマニュアル。
以下が参考になる。
特に、ポート番号とDocumentRootの設定は管理する上で必要な最低限の設定。
Listen 80 DocumentRoot "/usr/local/apache2/htdocs"
管理者のメールアドレスとサーバーのホスト名の設定は以下のようにする。
ServerAdmin hoge@hogehoge.com ServerName www.hogehoge.com:80 UseCanonicalName On
(Apache:インストール(httpd)、初期設定、その他 - Qiitaを参考に執筆しました。)
Apacheをソースからインストールする場合は、DocumentRootを/usr/local/apache2/htdocsなどに設定する。パッケージから導入する場合は/var/www/htmlなどでも良いだろう。
後日注記:サービス用のディレクトリとして、/var/www/htmlなどの代わりに/srvを使うこともできます。Linuxファイルシステム階層も参照のこと。
その他のApacheの主な設定として、以下のような項目がある。
設定 | 説明 |
---|---|
ServerRoot | 設定ファイルの場所を指定する。 |
Timeout | タイムアウト時間を設定する。 |
KeepAlive | クライアントとの接続の継続をするかどうか。 タイムアウト時間はKeepAliveTimeoutで設定する。 |
LoadModule | 読み込むモジュールを設定する。 |
Include | 設定ファイルとしてファイルを取り込む。 |
UserとGroup | Apacheを起動する際のユーザとグループを設定する。 クラッキングされた時のことを考えてrootにはしてはならない。 普通はapacheユーザ・apacheグループとする。 |
DirectoryIndex | index.htmlやindex.phpのようなディレクトリインデックスのファイル名を指定する。 |
AccessFileName | .htaccessのようなディレクトリごとのアクセス制御を行うファイル名を指定する。 |
(詳しくは10日でおぼえるFedora Core 6サーバ構築・管理入門教室を参照のこと。)
2023.03.08-09
以下が参考になる。
基本的にこんな感じ:
<Directory "/var/www/hoge.localhost"> AllowOverride All Order allow,deny Allow from all </Directory>
AllowOverrideはユーザーによる設定の変更を許可するかどうか。Orderはallowとdenyの順番。Allow from allはすべてのアクセスを許可。
(Apache:インストール(httpd)、初期設定、その他 - Qiitaと10日でおぼえるFedora Core 6サーバ構築・管理入門教室を参考に執筆しました。)
2023.03.08編集
基本的なディレクティブの設定は以下のようになる。
<Directory ディレクトリ></Directory> <Files ファイル名></Files> <Location URL></Location> <Virtualhost ホスト名></Virtualhost>
このほか、<ifmodule mod_ssl.c></ifmodule>のように、条件判定(この場合はmod_sslモジュールがインストールされている場合)を設定することもできる。
また、Allow, Denyでアクセス許可を、Orderでアクセス許可の順番を指定できる。またIncludeで外部に記述された設定ファイルをインクルードすることができる。
(これで読める!Apache設定ファイルの中身をディレクティブで把握しよう | 東京上野のWeb制作会社LIGを参考に執筆しました。)
.htaccessファイルは、そのファイルが置かれているディレクトリに対して設定することのできるファイル。
サーバを設定するroot権限を持っていないけれど、Webサーバの設定を変えたい時、たとえばレンタルサーバの設定を変えたい時などに配置すると良い。
だが、基本的にはhttpd.confで設定すること。
BASIC認証も参照のこと。
以下のページが参考になります。
Apacheのhttpd.confのようなシステムにとって重要な設定ファイルは、もしサーバが正常に稼働しなくなった時に元に戻せるように、編集する前に元の設定ファイルのコピーを取って、バックアップしておきましょう。
たとえば、httpd.confをhttpd_backup.confとして、どこかに取っておきます。オリジナルであることを示したいなら、origという名前をつけてもいいでしょう。
Apacheだけではなく、PHPのphp.iniやMySQLのmy.cnf(Windowsではmy.ini)なども、編集する際には元のファイルのコピーをとりましょう。
UNIXシステム管理(システム情報と設定)も参照のこと。
僕もあまり分かっていませんが、最近はサーバの設定をChefやPuppetのような構成管理ツールで自動化することができます。
また、Dockerのコンテナ上で動かす場合は、Dockerfileを用いることも可能です。
Chefを用いたApacheの設定手順は、以下が参考になります。
BASIC認証を参照のこと。
Cookieを参照のこと。
CGIを参照のこと。
FastCGIを参照のこと。
バーチャルホストを参照のこと。
XAMPPも参照のこと。
initとデーモンも参照のこと。
Linuxファイアウォールとiptablesも参照のこと。
セキュリティも参照のこと。
もともとはNCSA httpd(NCSA httpdはApache以前にとても普及していたサーバで、CGIを初めて導入して動的なページを生成できるなどの特徴があった。クライアントのWebブラウザである同じNCSAのMosaicあるいは後のNetscapeと一緒に使われていた)をベースにしていたが、コードとメンテナンスが停滞し、1995年にApacheの開発が始まる。現在は書き直されたため、NCSA httpdのコードは含まれていない。
以下のページが参考になります。
Apacheソフトウェア財団(ASF)はApacheやその他のオープンソースプロジェクトを管轄する組織。
ApacheはWebサーバであるApache HTTPサーバーだけではなく、さまざまなオープンソースソフトウェアを開発し、プロジェクトをホストしている。Javaサーバー関連ソフトウェア開発プロジェクトのJakartaがあった影響から、Javaの関連プロジェクトが多く、JavaサーブレットコンテナサーバーのTomcat、ビルドシステムのAnt、WebフレームワークのStruts、JSPタグライブラリのJSTLなどが有名。
Java関連以外では、オープンソースのMS-Office互換Officeスイートである旧OpenOffice.orgから由来し、LibreOfficeと分裂したApache OpenOfficeなどが有名。
Java(アプリケーションサーバ)も参照のこと。
Apacheライセンスは、主としてApacheで開発されたソフトウェアに適用されることの多いライセンス。ASFのソフトウェアは全てApacheライセンスであるほか、Appleによるプログラミング言語SwiftもApacheライセンスである。
ほかのライセンスに見られない特徴として、作者が自ら権利を有する特許技術を利用してソフトウェアを開発した場合、利用者に特許の利用を許諾したとみなす、という記述がある。特許を使ってソフトウェアの利用者や派生物の作成者を起訴した場合、その時点でライセンスは無効になる。
Apacheはコピーレフトなライセンスではないため、派生物を作った場合にソースコードを公開せずに配布したり、異なるライセンスで配布することもできる。これに対してGPLなどコピーレフトなライセンスでは必ず派生物をGPLのままで配布しなければならない。
オープンソース(パーミッシブ・ライセンス)も参照のこと。
以下のページを参考に執筆しました。
Apacheの設定はサーバ全体あるいはディレクティブ単位で行う。
動的WebサイトはCGIで実行するかモジュールとして実行する。
Apache