続き。
必要なアプリケーションのインストールと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の設定はひとまず終了。
次の記事へ続く。