動作環境
- debian系がすんなり行くようです。推奨:Debian gnu/linux etch
- Ubuntu7.10 on VMware Playerで。
パッケージ apt-get
- apt-get install ruby irb ruby1.8-dev libpgsql-ruby1.8 libfcgi-ruby1.8 librmagick-ruby1.8 libopenssl-ruby1.8 rdoc zlib1g-dev apache2 postgresql postfix chasen chasen-dictutils libchasen-dev ipadic kakasi libkakasi-ruby1.8 lighttpd zip unzip rsync libgd2-xpm libgd-ruby1.8 libxslt1-dev xsltproc gcc make
apache2で動作させるため、lighttpdはインストールしない。 lighttpdは管理用Webのため必要。別portで起動させる。
ruby-gemパッケージのインストール
wget http://rubyforge.org/frs/download.php/29548/rubygems-1.0.1.tgz
tar xzovf rubygems-1.0.1.tgz
cd rubygems-1.0.1
ruby setup.rb
apt-get install rubygems
Gem::GemRunner(NameError)のエラー対策
gemパッケージをインストール
gem install rake scrapi tidy --include-dependencies
その他、必要なプログラム
- 音声合成やルビ振りのページの作成のために,rubyからchsenを使用するためのライブラリ
wget http://raa.ruby-lang.org/cache/ruby-chasen/chasen1.6.tar.gz
tar zxvf chasen1.6.tar.gz
cd chasen1.6
ruby extconf.rb
make
sudo make install
- 音声合成プログラムであるlameをダウンロードし、インストール
wget http://downloads.sourceforge.net/lame/lame-3.97.tar.gz
tar zxvf lame-3.97.tar.gz
cd lame-3.97
./configure
make
make install
本プログラムのインストール
- ディレクトリ配置
- プログラム本体: /var/share/cms/ (所有者www-dataユーザ)
- 公開ページのdoc root: /var/www/cms/ (所有者www-dataユーザ)
- 本プログラムを/var/share/cms/にcopy
mkdir -p /var/share/cms
chown -R www-data:www-data /var/share/cms
tar zxvf pref-shimane-cms-1.0.2.tar.gz
mkdir /var/www/cms
cp -r pref-shimane-cms-1.0.2/* /var/share/cms/
chown -r www-data:www-data /var/share/cms
chasen辞書の設定
- ページの読み上げ機能のためにユーザが単語の読みを登録
- 辞書の作成と、辞書をchasenが利用できるように
cd /var/share/cms/dict/
sudo -u www-data make
- chasenの辞書directoryにユーザ辞書へのsymlinkを作成
ln -s /var/share/cms/dict/user.* /usr/share/chasen/dic/ipadic/
データベースの設定
createuser www-data
Shall the new user be allowed to create databases? (y/n) y
Shall the new user be allowed to create more new users? (y/n) n
- データベースの作成:テスト用、開発用、本番用のデータベースを作成
createdb -U www-data cms_test -E UNICODE
createdb -U www-data cms_development -E UNICODE
createdb -U www-data cms_production -E UNICODE
Webサーバの設定:
- apache2の設定:apache2は静的ページの公開サーバらしい?
- 実験なので、今回は、lighttpdのポートを変更した。
- lighttpdの設定
- lighttpdはapplicationサーバ。設定ファイルのテンプレート(doc/lighttpd.conf.example)をコピー
cp /var/share/cms/doc/lighttpd.conf.example /etc/lighttpd/lighttpd.conf
$ vi /etc/lighttpd/lighttpd.conf
107 # Options that are good to be but not neccesary to be changed
108 ## bind to port (default: 80)
109 server.port = 8087
メインとなる環境の設定
cd /var/share/cms
cp config/cms.yml.example config/cms.yml
vi config/cms.yml
- 公開サーバへsyncするためのDIR作成
- public.ディレクトリを作成。その中にpublicディレクトリのファイルへのリンクを作成
- (public.の中には公開サーバへsyncするためのファイルが置かれます。)
mkdir /var/share/cms/public.
ln -s /var/share/cms/public/stylesheets /var/share/cms/public/javascripts \
/var/share/cms/public/config.html* /var/share/cms/public/images \
/var/share/cms/public./
- データベースへの接続の設定
- config/database.yml.exampleをconfig/database.ymlへコピー
- usernameの箇所を使用するデータベースのユーザ名に変更します。
cp config/database.yml.example config/database.yml
vi config/database.yml
username: www-data
rake migrate
rake create_sessions_table
音声合成プログラムの設定
- 音声合成プログラムgtalk, chaoneをコンパイル
cd /var/share/cms/tool/gtalk/gtalk
./configure; make
cd /var/share/cms/tool/gtalk/morph/chaone-1.2.0
./configure; make
exportの設定
- CMSで作成したcontentsを公開サーバにuploadするスクリプトの設定およびrsyncの設定
- /var/share/cms/tool/exportの以下の箇所を変更。(line:57 あたり)
cd /var/share/cms
vi tool/export
SERVER = ['localhost'] <== 公開サーバのドメイン
USER = 'www-data' <== 公開サーバにrsyncするユーザ
- 公開サーバにryncするユーザのSSH鍵を公開サーバの同名のユーザの ~/.ssh/authorized_keysに登録
- rsyncユーザのSSH鍵を作成。鍵を作成するときパスフレーズは空にします。
ssh-keygen -t rsa
- rsyncユーザの鍵を、公開サーバのユーザのホームdirectoryの.ssh/authorized_keysへ登録
sh -c 'cat ~www-data/.ssh/id_rsa.pub >> ~www-data/.ssh/authorized_keys'
www-dataユーザのcron設定
- なぜに、CRON?
- cronで行われるjob中では、cmsで作成されたページの内容を静的なhtmlファイルとして書き出し、それらを公開サーバのdoc rootにsyncすることを行っている。
- doc/crontab.exampleの内容を確認しcrontabに反映させる。
crontab doc/crontab.example
- do_exportファイルが作成することによって静的なhtmlファイルが作成される。cronでのトリガファイル:その1
touch /var/share/cms/do_export
- do_syncファイルが作成することによってファイルが公開サーバのdocument rootにrsyncされる。cronでのトリガファイル:その2
touch /var/share/cms/do_sync
- この2つファイルを削除すると静的ページの作成や、公開サーバへのsyncは、行なわれない。
アンケート機能
プログラムの動作テスト
- アプリケーションのrootディレクトリでテストを実行
cd /var/share/cms
rake
- テストが開始され、ラーが発生せずにテストが終了するれば問題なし。
- いくつか出たが、とりあえず、飛ばし。
test_upload_import_zip(AdminControllerTest)
[./test/functional/admin_controller_test.rb:1716]:
Expected response to be a <:redirect>, but was <200>
test_html(VisitorControllerTest):
SocketError: getaddrinfo: Name or service not known
/usr/lib/ruby/1.8/net/http.rb:560:in `initialize'
/usr/lib/ruby/1.8/net/http.rb:560:in `open'
/usr/lib/ruby/1.8/net/http.rb:560:in `connect'
/usr/lib/ruby/1.8/timeout.rb:48:in `timeout'
/usr/lib/ruby/1.8/timeout.rb:76:in `timeout'
/usr/lib/ruby/1.8/net/http.rb:560:in `connect'
/usr/lib/ruby/1.8/net/http.rb:553:in `do_start'
/usr/lib/ruby/1.8/net/http.rb:542:in `start'
/usr/lib/ruby/1.8/net/http.rb:440:in `start'
./test/functional/../test_helper.rb:34:in `assert_valid_markup'
./test/functional/visitor_controller_test.rb:31:in `test_html'
141 tests, 970 assertions, 1 failures, 1 errors
rake aborted! Test failures
プログラムの起動
/etc/init.d/lighttpd stop
/etc/init.d/lighttpd start
ブラウザから管理画面を表示
http://localhost/_admin にアクセス