ようこそゲストさん

Digiclo Online Memo

smtp-authによるOP25B対策

はてブ情報 はてブに登録 はてブ数 2009/11/29 27:25 サーバ設定関係Digiclo

事前確認

cyrus-sasl系が全てインストール済みかどうかを確認*1

*1 : 足りない場合はインストールする

実作業開始

sendmail.mcを設定する

TRUST_AUTH_MECH(`EXTERNAL DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl
define(`confAUTH_MECHANISMS', `EXTERNAL GSSAPI DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl 

sendmail.cfを再作成する

m4 /etc/mail/sendmail.mc > /etc/mail/sendmail.cf

sendmailを再起動する

/etc/init.d/sendmail restart

smtpサーバの動作確認

telnet smtp.hogehoge.jp 25
以下のようなメッセージがEHLOコマンドで帰って来ればOK
Connected to smtp.hogehoge.jp.
Escape character is '^]'.
220 smtp.hogehoge.jp ESMTP Sendmail 8.12.11/8.12.11; Wed, 14 Jul 2004 23:28:21 +0900
ehlo localhost
250-smtp.hogehoge.jp Hello smtp.hogehoge.jp [192.168.1.1] (may be forged), pleased tomeet you
250-ENHANCEDSTATUSCODES
250-PIPELINING
250-8BITMIME
250-SIZE
250-DSN
250-ETRN
250-AUTH DIGEST-MD5 CRAM-MD5 LOGIN PLAIN
250-STARTTLS
250-DELIVERBY
250 HELP
quitする
quit

sasldb2の作成

smtp-auth認証用DBを作成
saslpasswd2 -c ユーザ名
パスワード入力を求められるので実行
Password: パスワード
Again (for verification): パスワード
上記をメールユーザ分行う

saslauthd動作を確認

動いて居なければ手動で起動
/etc/init.d/saslauthd start

各クライアントの設定をsmtp-auth用に修正

http://www.takauji.or.jp/smtp-img/smtp-auth02.html
を参考にすること

各ブラウザにおけるSOYCMSの動作

はてブ情報 はてブに登録 はてブ数 2009/11/10 21:12 CMS設定関係Digiclo
管理画面に特化して比較

IE8

  • 表示に乱れが少々あり

Firefox3.5

  • 表示に乱れがあり
  • ファイルマネージャーで選択したファイル名が画像タイプカスタムフィールドに挿入されない

Opera

  • ファイルマネージャーで選択したファイル名が画像タイプカスタムフィールドに挿入されない
  • TinyMCEの右クリックコンテキストメニューが表示されない

Safari4

  • ファイルマネージャーで選択したファイル名が画像タイプカスタムフィールドに挿入されない
  • textareaのスクロールバー領域が表示される

chrome

  • ファイルマネージャーで選択したファイル名が画像タイプカスタムフィールドに挿入されない
  • textareaのリサイズの関係で表示が乱れる場合あり

SOYCMSのテンプレートテクニック

はてブ情報 はてブに登録 はてブ数 2009/11/10 5:56 CMS設定関係Digiclo
標準で搭載されている共通部品プラグインを有効活用することでテンプレート作成を効率良く行う事が出来る

例えば、(x)htmlのヘッダー要素部分やGoogle Analyticsスクリプトなどページ毎に書き換えの必要が無い要素をまとめて共通部品化することで運用開始後のテンプレート運用を省力化することが可能になる

ヘッダー

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" dir="ltr"  xml:lang="ja" lang="ja">
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
<meta name="author" content="DigitalClockWorks" />
<link rev="made" href="mailto:info@dcw-jp.net" />
<link rel="start" href="/index" />
<link rel="contents" href="/sitemap" />
<meta http-equiv="Content-Script-Type" content="text/javascript" />
<meta http-equiv="Content-Style-Type" content="text/css" />

フッター

<script type="text/javascript">
var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
</script>
<script type="text/javascript">
try {
var pageTracker = _gat._getTracker("UA-********-1");
pageTracker._trackPageview();
} catch(err) {}</script>
</body>
</html>
これらは書換が発生することはまず無い為、共通部品化することでデザインの異なるページを混在させる場合に省力化を可能とする。

また、xml宣言文のみをヘッダーに書き込む事でAnother HTML-lintなどのテストの際にだけ減点を防ぐ事が可能になる。

それ以外にもデザイン的に共通となることが多い、ページのフッター部分などを共通部品化することも可能である。

MovableTypeでログイン異常時の対処

はてブ情報 はてブに登録 はてブ数 2009/10/27 19:28 MovableTypeDigiclo
日頃お世話になってるNORIさんがMTでページ遷移の度にログインを求められるトラブルに遭遇していたそうなので、対処方をちょっっと調べた結果のまとめ
MTが壊れてました。
具体的には、mt_sessionテーブル。

現象としては、ブラウザ、マシンを問わず、まるでクッキーが機能していないようにログイン要求画面が操作するたびに毎回でます。
Hello World
検索の結果、下記エントリーを発見。対処方を行ってNORIさんのトラブルは無事解決
ブログのテンプレートを少し触ろうと、MTにログインして作業をしようとすると、管理画面のページを移動する度に、ログイン画面に飛ばされる現象に急に襲われました。
BULANCO BLOG
最悪、コピー元が無い場合はSQL文にて

SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";

DROP TABLE IF EXISTS `mt_session`;
CREATE TABLE IF NOT EXISTS `mt_session` (
  `session_id` varchar(80) NOT NULL,
  `session_data` mediumblob,
  `session_email` varchar(255) DEFAULT NULL,
  `session_kind` varchar(2) DEFAULT NULL,
  `session_name` varchar(255) DEFAULT NULL,
  `session_start` int(11) NOT NULL,
  PRIMARY KEY (`session_id`),
  KEY `mt_session_kind` (`session_kind`),
  KEY `mt_session_name` (`session_name`),
  KEY `mt_session_start` (`session_start`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

を放り込めば多分、直ると思われる。
なお、このテーブルはMovableType4.2系の物である。

同様に破損しやすいテーブルにmt_tbpingもあるようなのでこちらも空のテーブル作成用のSQLを

DROP TABLE IF EXISTS `mt_tbping`;
CREATE TABLE IF NOT EXISTS `mt_tbping` (
  `tbping_id` int(11) NOT NULL AUTO_INCREMENT,
  `tbping_blog_id` int(11) NOT NULL,
  `tbping_blog_name` varchar(255) DEFAULT NULL,
  `tbping_created_by` int(11) DEFAULT NULL,
  `tbping_created_on` datetime DEFAULT NULL,
  `tbping_excerpt` mediumtext,
  `tbping_ip` varchar(15) NOT NULL,
  `tbping_junk_log` mediumtext,
  `tbping_junk_score` float DEFAULT NULL,
  `tbping_junk_status` smallint(6) NOT NULL DEFAULT '1',
  `tbping_last_moved_on` datetime NOT NULL DEFAULT '2000-01-01 00:00:00',
  `tbping_modified_by` int(11) DEFAULT NULL,
  `tbping_modified_on` datetime DEFAULT NULL,
  `tbping_source_url` varchar(255) DEFAULT NULL,
  `tbping_tb_id` int(11) NOT NULL,
  `tbping_title` varchar(255) DEFAULT NULL,
  `tbping_visible` tinyint(4) DEFAULT NULL,
  PRIMARY KEY (`tbping_id`),
  KEY `mt_tbping_blog_stat` (`tbping_blog_id`,`tbping_junk_status`,`tbping_created_on`),
  KEY `mt_tbping_ip` (`tbping_ip`),
  KEY `mt_tbping_visible_date` (`tbping_visible`,`tbping_created_on`),
  KEY `mt_tbping_last_moved_on` (`tbping_last_moved_on`),
  KEY `mt_tbping_blog_visible` (`tbping_blog_id`,`tbping_visible`,`tbping_created_on`,`tbping_id`),
  KEY `mt_tbping_tb_visible` (`tbping_tb_id`,`tbping_visible`,`tbping_created_on`),
  KEY `mt_tbping_created_on` (`tbping_created_on`),
  KEY `mt_tbping_junk_date` (`tbping_junk_status`,`tbping_created_on`),
  KEY `mt_tbping_blog_url` (`tbping_blog_id`,`tbping_visible`,`tbping_source_url`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=12 ;

TokyoPromenadeをさくらのレンタルサーバへ設置

はてブ情報 はてブに登録 はてブ数 2009/10/22 10:27 CMS設定関係Digiclo
平林幹雄氏作の軽量高速なコンテンツ管理システム「Tokyo Promenade」を設置

使用したサーバ

さくらのインターネットスタンダード

事前準備

Tokyo Cabinetのインストール*1
wget http://1978th.net/tokyocabinet/tokyocabinet-1.4.35.tar.gz
tar xvzf tokyocabinet-1.4.35.tar.gz
cd tokyocabinet-1.4.35
./configure -prefix=$HOME/usr/local
gmake
gmake install
以下のコマンドでインストールの完了を確認
ls $HOME/usr/local/include
以下のファイルが確認出来れば正常にインストールされたことを確認出来る
  • tcadb.h
  • tcbdb.h
  • tcfdb.h
  • tchdb.h
  • tctdb.h
  • tcutil.h

*1 : 同じ平林幹雄氏作の軽量データベースライブラリ

Tokyo Promenadeのインストール

wget http://1978th.net/tokyopromenade/tokyopromenade-0.9.13.tar.gz
tar xvzf tokyopromenade-0.9.13.tar.gz
cd tokyopromenade-0.9.13
./configure -prefix=$HOME/usr/local --with-tc=$HOME/usr/local --enable-static
gmake
gmake install
以下のコマンドでインストールの完了を確認
cd $HOME/usr/local/bin/
./prommgr version
以下の結果表示で正常にインストールされたとこを確認出来る
Tokyo Promenade version 0.9.13
Copyright (C) 2008-2009 Mikio Hirabayashi

設置ディレクトリの準備

mkdir $HOME/www/tp
cd $HOME/www/tp

各種ファイルをコピーしてリネーム

cp $HOME/usr/local/libexec/promenade.cgi .
cp $HOME/usr/local/share/tokyopromenade/promenade.* .
mv promenade.cgi index.cgi
mv promenade.css index.css
mv promenade.tmpl index.tmpl
cp $HOME/usr/local/share/tokyopromenade/passwd.txt .

DBとアップロード用ディレクトリを作成し、ヘルプファイルをDBに登録

$HOME/usr/local/bin/prommgr create promenade.tct
mkdir upload
$HOME/usr/local/bin/prommgr import promenade.tct ~/usr/local/share/tokyopromenade/misc/help-*.tpw

TokyoPromenadeに初回アクセス

http://digiclo.sakura.ne.jp/tp/index.cgi

右上のLoginから
username:adnmin
password: nimda
でログインし、UsersからAdministratorのパスワード変更

Postから新規ページを投稿する
aboutページに関してはAboutを初回クリックするとページ作成を促されるのでtp-aboutというページを作成する

必要に応じてindex.tmplを書き換えてDBファイルの位置やパスワードファイルの位置を変更し、実ファイルを移動して完了

続きを読む

a-blogCMSをさくらのレンタルサーバへ設置

はてブ情報 はてブに登録 はてブ数 2009/10/10 9:16 CMS設定関係Digiclo
  • 最新版をダウンロードしてくる
  • ダウンロードしたファイルを解凍し、ablogcmsフォルダの中味を設置ディレクトリにアップロードする
  • installフォルダの中味を設置ディレクトリにアップロードする
  • ioncubeローダーをダウンロードしてくる*1
  • ioncubeローダー一式をアップロードする
  • さくらインターネットサーバコントロールパネルからphp.iniを修正する
zend_extension = /home/アカウント名/www/ioncube/ioncube_loader_fre_5.2.so
  • 以下のファイルのパーミッションを指定する
    • config.server.php:読み書き可能
    • archives ディレクトリ:読み書き可能
    • themes ディレクトリ:読み書き可能
  • 以下のファイルをリネームし、.htaccessとする
    • /htaccess.txt
    • /private/htaccess.txt
    • /themes/htaccess.txt
  • http://ドメイン/インストールしたディレクトリ/へアクセスする
  • 指示に従ってインストールの実行
  • セットアップ完了と表示されたら以下のディレクトリを削除する
    • /setup
  • 正常にインストール出来たことを確認したら、config.server.phpの "DEBUG_MODE" を "0" に書き換える
以上にて完了*2

追記
セッション管理がさくらの環境と合わないのか、ページ遷移毎に強制ログアウトで作業できず
ブラウザ変えたら上手くいった
少なくともTrident4.0を使ったSleipnirでは動作が正しくない事はわかった

*1 : さくらの場合はFreeBSD7.1(x64)なのでFreeBSD6(x86)を使用

*2 : マルチドメイン使用の場合、ログイン等が上手く表示されない場合がある。その場合はhttp://サーバ名/インストールディレクトリ/からログインすることで解決.htaccessにRewriteBaseが必要

Movable Typeの再構築を僅かでも高速化する手順

はてブ情報 はてブに登録 はてブ数 2009/10/05 8:25 MovableTypeDigiclo
現在利用している共有レンタルサーバのうち、MySQLでストレージエンジンにInnoDBが利用可能なものがあったので実証実験としてMyISAM から InnoDBへと変更。
というわけで、次の作業は「ストレージエンジンをMyISAMからInnoDBに変更する」を実施して計測します。シックス・アパートのエンジニアが以前試験したところ、MyISAMよりもInnoDBの方がパフォーマンスがいいという結果を聞いていたので、ワクワクしながら、次のコマンドを実行してInnoDBに変更していきます。
techknow.yagishita.net - MTを使ったサイト構築テクニック (2): ネタフルにおける再構築チューニング
ということと
phpMyAdmin で MySQL のストレージエンジンを MyISAM から InnoDB に変更する具体的な方法です。ここでは XAMPP 環境(Windows XP + MySQL 5.0 + phpMyAdmin 2.11.4)で試したもので紹介します。
phpMyAdmin で MySQL のストレージエンジンを MyISAM から InnoDB に変更する方法
とxampp上での実証は小粋空間の荒木さんに先を越されたので
共有のレンタルサーバではどうなのかと言うことで人柱になってみた。
  • coreserverの管理画面より、データベースを選択し、該当のMTのDBへphpMyAdminで接続する。*1
  • 該当DBを選択し、SQLメニューより以下のコマンドをコピーし貼り付けて実行
ALTER TABLE `mt_asset`  ENGINE = 'InnoDB';
ALTER TABLE `mt_asset_meta`  ENGINE = InnoDB;
ALTER TABLE `mt_association`  ENGINE = InnoDB;
ALTER TABLE `mt_as_ua_cache`  ENGINE = InnoDB;
ALTER TABLE `mt_author`  ENGINE = InnoDB;
ALTER TABLE `mt_author_meta`  ENGINE = InnoDB;
ALTER TABLE `mt_backgroundrebuild`  ENGINE = InnoDB;
ALTER TABLE `mt_blog`  ENGINE = InnoDB;
ALTER TABLE `mt_blog_meta`  ENGINE = InnoDB;
ALTER TABLE `mt_category`  ENGINE = InnoDB;
ALTER TABLE `mt_category_meta`  ENGINE = InnoDB;
ALTER TABLE `mt_comment`  ENGINE = InnoDB;
ALTER TABLE `mt_comment_meta`  ENGINE = InnoDB;
ALTER TABLE `mt_config`  ENGINE = InnoDB;
ALTER TABLE `mt_entry`  ENGINE = InnoDB;
ALTER TABLE `mt_entry_meta`  ENGINE = InnoDB;
ALTER TABLE `mt_field`  ENGINE = InnoDB;
ALTER TABLE `mt_fileinfo`  ENGINE = InnoDB;
ALTER TABLE `mt_ipbanlist`  ENGINE = InnoDB;
ALTER TABLE `mt_log`  ENGINE = InnoDB;
ALTER TABLE `mt_notification`  ENGINE = InnoDB;
ALTER TABLE `mt_objectasset`  ENGINE = InnoDB;
ALTER TABLE `mt_objectscore`  ENGINE = InnoDB;
ALTER TABLE `mt_objecttag`  ENGINE = InnoDB;
ALTER TABLE `mt_permission`  ENGINE = InnoDB;
ALTER TABLE `mt_placement`  ENGINE = InnoDB;
ALTER TABLE `mt_plugindata`  ENGINE = InnoDB;
ALTER TABLE `mt_profileevent`  ENGINE = InnoDB;
ALTER TABLE `mt_profileevent_meta`  ENGINE = InnoDB;
ALTER TABLE `mt_role`  ENGINE = InnoDB;
ALTER TABLE `mt_session`  ENGINE = InnoDB;
ALTER TABLE `mt_tag`  ENGINE = InnoDB;
ALTER TABLE `mt_tbping`  ENGINE = InnoDB;
ALTER TABLE `mt_tbping_meta`  ENGINE = InnoDB;
ALTER TABLE `mt_template`  ENGINE = InnoDB;
ALTER TABLE `mt_templatemap`  ENGINE = InnoDB;
ALTER TABLE `mt_template_meta`  ENGINE = InnoDB;
ALTER TABLE `mt_touch`  ENGINE = InnoDB;
ALTER TABLE `mt_trackback`  ENGINE = InnoDB;
ALTER TABLE `mt_ts_error`  ENGINE = InnoDB;
ALTER TABLE `mt_ts_exitstatus`  ENGINE = InnoDB;
ALTER TABLE `mt_ts_funcmap`  ENGINE = InnoDB;
ALTER TABLE `mt_ts_job`  ENGINE = InnoDB;

*2

以上でストレージエンジンの変更は完了

あらかじめ、バックアップを取ってあったMyISAMのもので別に設置したMTOSと2個を用い、同時に全面再構築を10回ずつ行ってみた。
エントリー数は適当にいくつかの自ブログからインポートしたもので100件ほど。

MyISAMに対して、InnoDBの方は最大で約20%程度速度が向上していた。*3

ストレージエンジンが選択可能であれば若干ながら有効である事を実証できた。
サーバのマシンパワーが潤沢であり、MTのパブリッシングに占有可能であるならば、my.cnfへのパラメータ設定によるチューニング込みで大量のページを処理する場合には採用を検討したい。

*1 : ホスト登録をしてsshにてコマンドライン作業でも可

*2 : 必ずしも改行する必要は無い

*3 : さすがにmy.cnfなどは触れないし、マシンパワー依存のInnoDBでは共有サーバでは他の人の迷惑になるので速攻削除した

CMS設定メモ

はてブ情報 はてブに登録 はてブ数 2009/09/21 16:50 CMS設定関係Digiclo
ブログやCMSによるサイト構築時に自分流として用意するプラグインなどカスタマイズのための基本情報。

Drupalでの環境構築

はてブ情報 はてブに登録 はてブ数 2009/09/21 16:49 CMS設定関係Digiclo

日本語版のダウンロード

Drupal Japan

必要なモジュールのダウンロード

  1. CCK
  2. Views
  3. Backup and Migrate
  4. Alternate Login
  5. Spam
  6. CAPTCHA
  7. getID3()
  8. ImageAPI
  9. Webform
  10. IMCE
  11. FCKeditor - WYSIWYG HTML editor
  12. Google Analytics
  13. Imce CCK Image
  14. Tagadelic
  15. TagTool
  16. Taxonomy Manager