Pandora Pocket

IT系と日常系の備忘録。三日坊主。

続き。

必要なアプリケーションのインストールとApacheの設定を行う。

まずはいらないものを削除する。

私の場合はFTPサーバもメールサーバもいらないので

aptitude purge -y vsftpd
aptitude purge -y postfix
aptitude purge -y dovecot-common

としておいた。

次に(おそらく)必要なもののインストールを行う。

aptitude install -y apache2-dev
aptitude install -y xinetd
aptitude install -y php-pear
aptitude install -y php5-dev
aptitude install -y libapache2-mod-speedycgi
aptitude install -y sqlite3 php5-sqlite php-mdb2-driver-sqlite
aptitude install -y imagemagick libmagick9-dev

このうちSpeedyCGI、SQLite、ImageMagickは利用するCGIなどが求める場合に入れるだけでいいかと。

私の場合SpeedyCGIはがっくしメニュー、SQLiteとImageMagickはphpBBが利用するので入れた。

インストールが終わったらApacheの設定。

まずはいらないモジュールを外す。

index.htmlなどがない場合ディレクトリ内のファイル一覧が表示されてしまうのを防ぐために

a2dismod autoindex

だけ外しておいた。他には特に今のところ外すものがないのでこれだけ。

逆に必要なものを有効にする。

a2enmod cache expires headers include rewrite speling

このうちincludeはSSIを利用する場合に必要なだけなので外してもいいかもしれない。また、spelingもユーザーの利便性を考慮しないならいらないかも。

必要なもののインストールが終わったらApacheの設定ファイルをいじることにする。

vi /etc/apache2/apache2.conf

Timeout 60
<IfModule mpm_prefork_module>
	StartServers 3
	MinSpareServers 3
	MaxSpareServers 5
	MaxClients 50
	MaxRequestsPerChild 15
	ServerLimit 128
</IfModule>

タイムアウトを短めにして、起動するApacheの数を制限するなどしてメモリー使用量を削減。

vi /etc/apache2/sites-available/default

<VirtualHost *:80>
	ServerAdmin webmaster@localhost
	DocumentRoot /var/www
	<Directory />
		Options FollowSymLinks
		AllowOverride None
	</Directory>
	CustomLog /var/log/apache2/access.log combined
	ErrorLog /var/log/apache2/error.log
	# Possible values include: debug, info, notice, warn, error, crit,
	# alert, emerg.
	LogLevel warn
</VirtualHost>

あまりいじる必要がなさそうだったけど、ちょっと変えておいた。お好みで。

vi /etc/apache2/mods-available/deflate.conf

<IfModule mod_deflate.c>
	#DEFLATEの有効化
	AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css
	#送信先ブラウザがNetscape 4.xの場合はtext/htmlのみ圧縮
	BrowserMatch ^Mozilla/4 gzip-only-text/html
	#送信先ブラウザがNetscape 4.06-4.08の場合は圧縮しない
	BrowserMatch ^Mozilla/4.0[678] no-gzip
	#送信先ブラウザがMSIEの場合は全て圧縮する
	BrowserMatch bMSI[E] !no-gzip !gzip-only-text/html
	#プロキシサーバーが圧縮未対応ブラウザへ圧縮ファイルを送信しないようにする
	Header append Vary User-Agent env=!dont-vary
	#画像ファイルは圧縮しない
	SetEnvIfNoCase Request_URI .(?:gif|jpe?g|png|ico|pdf|mp3|ogg|wma|rm|wmv|mov|mpe?g)$ no-gzip dont-vary
	SetEnvIfNoCase Request_URI .(?:z|taz|t?gz|t?bz2?|zip|lzh|sit|rar)$ no-gzip dont-vary
	#コンテンツの圧縮転送
	SetOutputFilter DEFLATE
</IfModule>

圧縮転送の設定。

vi /etc/apache2/mods-available/dir.conf

DirectoryIndex index.html index.cgi index.pl index.php index.xhtml index.htm
↓
DirectoryIndex index.html index.htm index.php index.cgi index.xhtml index.shtml index.pl

/で終わるURLの場合に読み込まれるインデックスページを指定。左にあるファイルが優先される。

vi /etc/apache2/mods-available/httpd.conf

SetEnvIf Request_URI "^/favicon.ico$" no_log

faviconがないとログにいちいち記載されて気持ちが悪いので追加。

vi /etc/apache2/mods-available/mime.conf

#gzip有効化
#AddEncoding x-gzip .gz .tgz
↓
AddEncoding x-gzip .gz .tgz
#欄の最上部にあげる
AddLanguage ja .ja
#CGIを有効化
#AddHandler cgi-script .cgi
↓
AddHandler cgi-script .cgi .pl
#PHPを有効化(追記)
AddType application/x-httpd-php .php

CGIなどの実行ができるように変更。なお、後で記述するsuPHPを利用する場合はCGIを有効化及びPHPを有効化の欄は書かないこと。

vi /etc/apache2/mods-available/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

正直必要性0なのだけど、一応。MultiViewでブラウザの言語ごとにページを変えたいときに設定するとかどうとか。よくわからなければやらなくてもいいのかもしれない。

vi /etc/apache2/conf.d/security

#Apacheのバージョン情報を隠す
ServerTokens OS
↓
ServerTokens Prod

#HTTP レスポンスヘッダ
#ServerSignature Off
ServerSignature On

↓

ServerSignature Off
#ServerSignature On

セキュリティ上表示されるとあまり好ましくないものを見せないように変更。

ServerSignatureは変えなくてもいいなんて話があるそうだけどよくわからないので変更しておいた。

vi /etc/apache2/sites-available/virtualhost.conf

<virtualHost *:80>
	ServerName ドメイン
	DocumentRoot /home/ユーザー名/public_html/
	CustomLog /home/ユーザー名/log/access.log combined env=!no_log
	ErrorLog /home/ユーザー名/log/error.log
	Options ExecCGI FollowSymLinks MultiViews
	LogLevel notice
	<directory "/home/ユーザー名/">
		AllowOverride All
		Allow from All
		Options +ExecCGI
	</directory>
</virtualHost>

バーチャルホストの設定。上記は私が作ったテンプレートなので間違えているかも。

設定し終わったら下のコマンドを実行することでApacheに組み込まれる。

a2ensite virtualhost.conf

vi /etc/logrotate.d/apache2

"/var/log/apache2/*.log" {
↓
"/var/log/apache2/*.log /home/*/log/*.log" {

バーチャルホストでアクセス、エラーログをユーザーのホームディレクトリにしたのでログローテートされるよう変更。

最近ようやくログローテートの意味を知った・・・。

vi /etc/hosts

サーバのIPアドレス rad-xen-vweb localhost.localdomain localhost
↓
サーバのIPアドレス ドメイン rad-xen-vweb localhost.localdomain localhost

初期状態だとApacheの再起動時にエラーが出るのでこれで対処。

これでApacheの設定はひとまず終了。

次の記事へ続く。