「Web技術」タグアーカイブ

ウェブサイトのデザイン理念に望むもの

ハイクオリティサイトのワイヤーフレーム分析 (マイコミジャーナル)

サイト設計はデザイン先行ではなく、ユーザ主体で行うのが望ましい。改めて気づかされる貴重な言葉です。

大胆に配置されているキービジュアル。つまり、ページTOPに置いてあるFLASHのようなイメージ。これは極度に大きいと返って煩わしいと思うので、程々の大きさが好まれそうです。

そして、ヘッダーにロゴを配置しサイトの印象を深め、フッターにはしっかり社名を明記する。特にフッターは当たり前のようで忘れがちな存在なので注意しましょう。また、ヘッダーロゴとキービジュアルは、二つあって始めて意味を成すような気がします。

更にフッターに各種方針とユーティリティを配置。他の場所では具合が悪いが、どのページからもリンクしておきたい。そんな項目を置いておきましょう。ただ、あまり目立たないのも困るので大きさは考えたいところです。

ちなみにユーザがサイトを見る視線の動きは「F」の字だそうです(GIGAZINE記事)。一番上を左から右に、また左に戻って興味ありそうなトピック先頭を検索、そして途中でまた左から右に。要するに前半で必要ない情報だと思われたら捨てられると思ったほうがいいかもしれないです。

CMS(コンテンツマネージメントシステム)は必要か?

サイト更新に一番大切なものは何か!?それはもちろんコンテンツです。中身がなければ構築する意味がないです。世の中放置されているサイトの何と多いことか。私の場合もご多分に漏れず内容薄のサイトです。どうにも、レイアウトだけで満足してしまうんですよね。

そこで、思い描いたレイアウトを短時間で作り、浮かんだ内容をガンガンアップしていく方法はないかと模索しました。この過程で至ったのがCMSです。広義ではブログやwikiもその定義に入ってしまうようです。一般的にはブログを適切にカテゴリ分けて記事書いていくのが簡単でしょうね。wikiは不特定多数参加型記事に最適だと思われます。

しかし、私が求めていたものはサイト構築のフレームワークとなるようなものでした。レイアウトを自由に変更でき、スクリプトを使い、時にはWYSIWYGエディタでデザイン優先に記事を書きたい。そんなものあるのかと調べてみたらjoomla、Drupal、Zopeやtypo3がそれに該当するようでした。幾つか試した結果typo3とMODxが候補に。typo3はフレームワーク規則がガッチガチで一朝一夕では使いこなす事は無理。その代わり高機能のようです。MODxは逆にゆるい規則でどこにでもスクリプトや変数を書き込める様子。プログラマー向けでしょうか。

さて、一通り触れてみて実際にコンテンツ作成もしてみたのですが、最終的な感想はと言うと…個人で使うにはCMSは機能過多。複数人で分業する場合に適したものだと悟りました。お手軽度は、ブログ(適切にカテゴリ分けて記事書く)>wiki(不特定多数参加型記事に)>CMS(スクリプトも使い複数人で運営)だと思います。

ProFTPを帯域制限する方法

ProFTPのfroftpd.confに帯域制限の設定を入れる実験をしてみました。記述方法は以下の感じ。inetd経由でも機能するようです。

TransferRate RETR 5.0:1024 group !wheel

上記設定では、ダウンロードの速度をwheelグループ(管理者)以外は5kb/secに制限、但し1024byteまでは不問とすることになります。これ以外の設定方法には、Linuxのシステムのほうでポートの帯域を絞ると言うのが考えられるかと思います。

LinuxでのFTPのログローテーション方法

Linuxサーバーに自分で追加設定していたFTPのログが溜まってたのでローテーションかけることにしました。

/etc/logrotate.d/proftpdというファイルが存在するので、そこに以下の記述を追加して下さい。

/var/log/proftpd/*.log {
	missingok
	notifempty
	postrotate
		/usr/bin/kill -HUP `cat /var/run/proftpd.pid 2>/dev/null` 2>/dev/null || true
	endscript
}

原理は、logrotateが配下のディレクトリを調べて、そこにある設定に従いログを循環させているだけです。同ディレクトリにはproftpd以外の設定ファイルもありますので、参考に覗いてみては如何でしょうか。

ProFTPの設定方法

Vine Linuxでの設置方法です。FTPには標準ディストリビューションのProFTPを使うことにします。パッケージから探してインストールしましょう。

次に難解な設定です。構築するディレクトリ構成は、少し特殊にしてみようと思います。rootの下にあるpubディレクトリは、全FTPアカウントで共通、同一ディレクトリを表示させる。そこを読み取り専用で公開し、更新モジュール等を管理側から提供できるようにする。FTPユーザ側から見ると下記のようになります。

root (0777)
|
|-pub (0744)

ここでつまづいたのが、この共有ディレクトリpubの作り方。Windows環境でFTPを運用していたときは、WarFTPの機能でバーチャルマッピングで自由に構成可能でした。しかし、ProFTPにはそんな便利な機能ありません。探しに探して行き着いたのはmount。Linuxのファイルシステムを利用しろと言うことです。詳細は/usr/share/doc/proftpd-x.x.x/howto/Chroot.htmlの文末に載っています。ProFTPの機能だけを検索していたばかりに、このシンプルな解答に気づかず苦労しました。灯台下暗し…皆さんも探し回る前にまずはマニュアルを熟読してください。

mount情報は再起動すると初期化されてしまいます。そこで、これをPC起動時に自動的に反映させるようにします。起動時に必ず読み込まれるスクリプト/etc/rc.localに以下の要領で追記。

$ mount --bind olddir newdir <-olddirが共有元

これでnewdirにアクセスするとolddirが操作できるようになります。ちなみに、300個ほどマウントしても大丈夫らしいです(詳細)

次はWAN側からの接続を受け入れるようにしましょう。ProFTPは標準ではPORTコマンドを受付けません。固定ポートが空いてしまうのでセキュリティ的な問題からでしょうか。私も通常ポートの21番は避けたいので、全く別のポートをPASVモードで使用するようにしました。

また、動作方法は、inetd経由でセッション毎に起動するように変更。個人利用ということもあり、メモリ節約のためにデーモン起動での常駐は外しました。少々動作が重くなりますが、セッション毎に設定ファイルを読直すので、DDNSでのIP変化にも対応できるというメリットがあります。

まずはFTP通信ポートの設定、21番以外にしたい場合、inetd設定のためにポート定義名を/etc/servicesに追加します。

ftpEX xxx/tcp <-xxxはポート番号、定義名はftpEX
ftpEX xxx/udp

この定義名(ftpEX)を使って/etc/inetd.confに起動条件を追記してください。tcpwrapperを使って後々通信制御をしたいのでtcpd経由で起動させるようにします。

ftpEX stream tcp nowait root /usr/bin/tcpd in.proftpd

以上でinetdで動作させる下準備は整いました。

お次は一番悩むftpdの詳細設定です。/etc/proftpd.confのコメントやマニュアルを参考にして設定しました。また、パソコンおやじさんのProFTPD設定も参考にしています。

Port xxx <-/etc/servicesと同じ番号にする
MasqueradeAddress xxx <-ルータのWAN側アドレス又はドメイン名(DDNS等)
PassivePorts xxx yyy <-最小ポート番号 最大ポート番号
ServerType inetd <-inetd起動<
DefaultRoot ~/ftp <-各アカウント以下のftpディレクトリをルートとするように設定

LogFormat allinfo "%t :  %u (%a [%h]) : [%s], %T, %m (%f)"
LogFormat write "%t : %u : %F (%a)"
LogFormat read "%t : %u : %F (%a)"
LogFormat auth "%t : %u (%a [%h])"

ExtendedLog /var/log/proftpd/all.log ALL allinfo
ExtendedLog /var/log/proftpd/write.log WRITE write
ExtendedLog /var/log/proftpd/read.log  READ read<
ExtendedLog /var/log/proftpd/auth.log AUTH auth

UseReverseDNS off
IdentLookups off

# Allow clients to resume downloads (default on)
AllowRetrieveRestart on
# Allow clients to resume uploads (default off)
AllowStoreRestart on
# The maximum number of clients allowed to connect per host.(default none: no limit)
MaxClientsPerHost 3
MaxClients 30
# Sets the idle connection timeout (default: 600)
TimeoutIdle 300

<Directory ~/pub>
<Limit READ DIRS RETR>
AllowAll
</Limit>
<Limit WRITE STOR DELE MKD RMD RNFR RNTO SITE_CHMOD>
DenyAll
</Limit>
</Directory>

デーモン常駐はさせないのでサービスはオフに変更です。

最後に、inetdを-HUPオプションで再起動させて設定完了。

$ chkconfig proftpd off
$ chkconfig --list proftpd
$ killall -HUP inetd