Apacheを使ってWebサーバの構築
UbuntuでApacheを使用するには、先ず以下のようにしてapache2のパッケージをインストールする。
$ sudo aptitude install apache2
あと、apxs を使用できるようにする為、以下のパッケージもインストールしておく。
$ sudo aptitude install apache2-dev $ which apxs2 /usr/bin/apxs2
なお、このページで行うApacheの設定の概要は、
- 意図しないディレクトリやファイルへのアクセスを禁止する
- DocumentRootは/var/www/html
- SSIを使用可能にする
- Userdirを使用できるようにする
- 不要なアクセスについてはログに記録しないようにする
- パフォーマンスにちょっとこだわってみる
とりあえずはこんなところで。
Apacheの基本的な設定
/etc/apache2/apache2.conf を以下のように編集する。
$ sudo vi /etc/apache2/apache2.conf # パフォーマンス重視ならOffのままで HostnameLookups Off ↓ HostnameLookups On # 必要以上なマシン情報を出力しない為 ServerTokens Full ↓ ServerTokens Prod ServerSignature On ↓ ServerSignature Off #LogFormat "%{User-agent}i" agent の下くらいに以下を追記 CustomLog /var/log/apache2/access.log combined
次に、デフォルト状態の /etc/apache2/sites-available/default を見ると非常に長く、/etc/apache2/sites-available/に違うファイルを作った時に共通化できそうな部分もあるので、なるべく defaultファイルは短くするように記述してみる。
そして、もともとdefaultファイルに書いてあったものや追加分は、/etc/apache2/httpd.conf に追記していくことにする。
/etc/apache2/httpd.conf を以下の内容にする。(デフォルトでは空のファイル)
下記の記述は、/etc/apache2/sites-available/default にあった分を追加したり、足りないものを追記したりしている。
$ sudo vi /etc/apache2/httpd.conf # 下の2つは自分の環境に合わせて編集する ServerAdmin webmaster@chibi.name ServerName chibi.name:80 UseCanonicalName Off # DocumentRootの指定 DocumentRoot "/var/www/html" # デフォルトのディレクトリへのアクセスの振る舞いを強化する <Directory /> Order Allow,Deny Deny from all Options None AllowOverride None </Directory> # .bakファイルなど意図しないファイルにアクセスさせない <FilesMatch "(^\.ht|~$|\.bak$|\.BAK$)"> Order Allow,Deny Deny from all </FilesMatch> # CVSファイルにアクセスさせない <DirectoryMatch /CVS/> Order Allow,Deny Deny from all </DirectoryMatch> # 各種マニュアルファイルへのアクセス制御 Alias /doc/ "/usr/share/doc/" <Directory "/usr/share/doc/"> Options Indexes MultiViews FollowSymLinks AllowOverride None Order deny,allow Deny from all Allow from 127.0.0.0/255.0.0.0 ::1/128 </Directory> # ScriptAlias ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/ <Directory "/usr/lib/cgi-bin"> AllowOverride None Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch Order allow,deny Allow from all </Directory> # VirtualHostを有効にする際は以下のコメントを外す #NameVirtualHost *:80
続いて、/etc/apache2/sites-available/default は以下のような内容になる。
$ sudo vi /etc/apache2/sites-available/default # DirectoryにはDocumentRootを指定してやる <Directory "/var/www/html"> # SSI(制限有り)やCGIの使用を許可している Options IncludesNoExec ExecCGI FollowSymlinks AllowOverride None # アクセス制御 Order allow,deny Allow from all </Directory>
DocumentRootに/var/www/htmlを指定したので、このディレクトリが無い場合は作成しておく。また適切な所有権やパーミッションを設定しておく。
$ sudo mkdir /var/www/html
また、SSIを使用できる設定にしているので、includeモジュールをa2enmodコマンドで読み込んでおく。
SSIを使う必要が無いならこのモジュールは有効にしない。また、defaultファイルに指定したIncludesNoExecなども不要になる。
$ sudo a2enmod include
あとは、色々と微調整を行う。
DirectoryIndexの設定を変更する為、/etc/apache2/mods-enabled/dir.conf を以下のように使用頻度の高い順に変更する。(自分の環境に合わせて)
$ sudo vi /etc/apache2/mods-enabled/dir.conf DirectoryIndex index.html index.cgi index.pl index.php index.xhtml ↓ DirectoryIndex index.php index.html index.shtml index.cgi
LanguagePriorityの設定を変更する為、/etc/apache2/mods-enabled/negotiation.conf を編集する。優先度順に並んでいるので、jaを一番前に持ってくる。
$ sudo vi /etc/apache2/mods-enabled/negotiation.conf LanguagePriority en ca cs da de el eo es et fr he hr it ja ko ltz nl nn no pl pt pt-BR ru sv zh-CN zh-TW ↓ LanguagePriority ja en ca cs da de el eo es et fr he hr it ko ltz nl nn no pl pt pt-BR ru sv zh-CN zh-TW
Aliasを設定するなら、/etc/apache2/mods-enabled/alias.conf に追記する。
$ sudo vi /etc/apache2/mods-enabled/alias.conf ... Alias /hoge "/home/chibi/public_html/hoge"
AddHandlerの設定をする為、/etc/apache2/mods-enabled/mime.conf を編集する。
$ sudo vi /etc/apache2/mods-enabled/mime.conf ... #AddHandler cgi-script .cgi ↓ AddHandler cgi-script .cgi .pl
server-status/ へのアクセスをLAN内マシンからも許可する。
$ sudo vi /etc/apache2/mods-enabled/status.conf <Location /server-status> SetHandler server-status Order deny,allow Deny from all Allow from localhost ip6-localhost Allow from 192.168.1.0/24 ←追記(自分の環境に合わせて) </Location>
以上で設定は完了なので、Apacheを再起動して設定を有効にしてやる。これで基本的な設定も完了しているので、試しに/var/www/html 以下にhtmlファイルを作成し、そのファイルにアクセスしてちゃんとページが表示されるかも確認してみる。
$ sudo /etc/init.d/apache2 restart
デフォルトではファイルがあっちゃこっちゃに分割されていて慣れるまでは非常に辛いが、慣れてくると非常に便利になってくる。
※備考
- DirectoryIndexは、/etc/apache2/mods-enabled/dir.conf
- LanguagePriorityは、/etc/apache2/mods-enabled/negotiation.conf
- Aliasは、/etc/apache2/mods-enabled/alias.conf
- server-statusは、/etc/apache2/mods-enabled/status.conf
- IndexOptionsは、/etc/apache2/mods-enabled/autoindex.conf
- Portを変更したい場合は、/etc/apache2/ports.conf。httpd.confのServerNameの部分も忘れずに
長くなってきてしまったので、とりあえず今回はここまででにして、次回以降で最初に記述した設定の概要の続き(4〜)の設定をしていく。