ubuntu 12LTS でサーバー構築(FTP・Apache・CGI)

ubuntu 12LTS でのserver 構築のツボ
かねてより懸案だった安定したWEB配信のためのサーバー構築をついに実現した。
初めての経験で理解度を高めるのに苦労したので、忘備録として記事を書きます。

今回の目標:
FTPファイル転送
WEB配信
CGIでカウンター表示や2ch掲示板が利用可能であること。

<はじめに>
推奨している案内サイトは少ないが、初心者は
Rootでログイン出来るようにしておくとGUI環境で編集できるので便利。
例えば /var/wwwなどのディレクトリに対してアクセス制限を解除するのに有効。
(rootでのGUIログイン方法については別途調べて下さい。)

<使ったパッケージ>
VSFTPD
Apache2
Perl
※いずれもパッケージマネージャーからインストール。

1)FTP設定 <VSFTPDの場合>
# Allow anonymous FTP? (Beware - allowed by default if you comment this out).
anonymous_enable=no ←Anonymousを認めない

# Uncomment this to allow local users to log in.
local_enable=YES ←ローカルユーザーにFTPを許可する
#
# Uncomment this to enable any form of FTP write command.
write_enable=YES ←ユーザーにFTPでの書き込みを許可する
#
# Default umask for local users is 077. You may wish to change this to 022,
# if your users expect that (022 is used by most other ftpd's)
local_umask=022 ←あまり考えずに採用

# ASCII mangling is a horrible feature of the protocol.
ascii_upload_enable=YES CGI動作のために必要
ascii_download_enable=YES CGI動作のために必要

# (Warning! chroot'ing can be very dangerous. If using chroot, make sure that
# the user does not have write access to the top level directory within the
# chroot)
chroot_local_user=no ←ユーザーはhomeディレクトリを超えてrootまで見ることが出来る
chroot_list_enable=no

2)httpサーバー設定 <Apache2の場合>
Default設定 /var/www/はアクセス制限解除が面倒であるため、
ユーザーフォルダ内にDocument Rootを設定
書き込み権限を緩和する。

DocumentRoot /home/user/www ←homeにwwwというディレクトリを設置し、webトップにする。

<Directory />
Options All -Indexes ←機能的なオプション全部あり、しかしディレクトリの中身は見えないようにした。
AllowOverride None
AddHandler cgi-script .cgi .pl ←CGIファイルを定義。これは一度書けばOK。

</Directory>
<Directory /home/user/www/> 
Options All -Indexes ←機能的なオプション全部あり、しかしディレクトリの中身は見えないようにした。
AllowOverride None
AddHandler cgi-script .cgi .pl ←一度書けばOKだが一応、書いておいた。
Order allow,deny
allow from all
</Directory>

ScriptAlias /cgi-bin/ /home/user/www/ ←推奨されないが、面倒なのでCGIをまとめて置けるようにした。
<Directory "/home/user/www/">
AllowOverride None
Options All -Indexes ←同上
Order allow,deny
Allow from all
</Directory>


3)CGIが動かない時のチェックポイント
FTP転送でASCIIを選択していたか?
CGIファイルに対して属性を0755に変更したか?
CGIの置き場は正しく記述されているか?
→ 今回は #!/user/bin/perl である。
・カウンターのデータファイルは属性をフルアクセス 0777にしているか?

以上