ページ更新: 2010-05-09 (日) (4704日前)
(2010-02-21 新規作成) 9arrowsはプロジェクト管理ツールの1つ。WBSを作成して共有できる。AIR (Adobe) 版のクライアントも用意されている。 オープンソース (GNU GPL v3 9arrows.com | Licence) であり、ソースコードが Google Code と GitHub で公開されている。 また、ASP版 も用意されている。 目次
最新情報 (2010-03-03 時点) #Google Code:
GitHub:
情報源 (2010-02-09) #[編集]9arrows #[編集]9arrows.com #
Google Group #
Google Code #
GitHub #
ニュースや blog の記事 #
Ubuntu Server 9.10 (32bit) に 9arrows 0.9.0.2 をインストールしてみた #[編集]はじめに #Linuxディストリビューションのパッケージを活用してRails製WebアプリをPhusion Passengerで動かすための練習として、9arrows をインストールしてみた。 現時点では、インストールしてログインして、プロジェクトを1つ作った時点で力尽きてるけど。 Ruby on Railsは数年前に調べただけだし(しかも一回も動かしてない)、Rails製アプリを使っているので、いくつか間違いがあるかも。 [編集]作業の方針 #
環境 #9arrows は、http://9arrows.com/download/9arrows-all-0.9.0.2.tar.gz を用いた。 OSは、Ubuntu Server 9.10 (32bit) を用いた。(Download Ubuntu Server)
ほぼすべての作業を Tera Term から OpenSSH Server に接続して行っている。 Webアプリケーションサーバは、Webrick および Apache + Phusion Passenger を用いた。 データベースには、PostgreSQL および SQLite3 を用いた。 これらの環境は VMware Workstation 7.0.1/6.5.3, VMware Player 3.0.1 上に構築した。 VMware Workstation 7.0.1 上のスナップショット: [編集] まとめ #(2010-03-03)
1. 9arrow の入手、Ubuntu パッケージと rails のインストール #(2010-03-04) Ubuntuのインストール完了直後〜 (Ubuntuのバージョンを調べる) $ lsb_release -a (Ubuntuパッケージの更新〜再起動(必要なら)) $ sudo aptitude update && sudo aptitude -y safe-upgrade && sudo aptitude autoclean $ sudo shutdown -r now (9arrowsのソースコードを入手) $ wget http://9arrows.com/download/9arrows-all-0.9.0.2.tar.gz (Ubuntuパッケージをインストールする) $ sudo aptitude -y install build-essential ruby ruby-dev libopenssl-ruby rubygems \ postgresql libpq-dev postfix mailx ★1-1 (gemでrailsなどをインストールする) $ sudo gem install rails --version '= 2.1.0' $ sudo ln -s /var/lib/gems/1.8/bin/* /usr/local/bin/ ★1-2 $ sudo gem install pg ★1-3 ★1-1
★1-2
★1-3
2. 9arrows を Webrick で起動して試用 #(2010-03-04) 試用なので、この時点では手を抜く (PostgreSQL をUNIXドメイン接続で用いる、あるいは SQLite3を用いる) (PostgreSQLのロールを作成 (sqlite3では不要)) $ sudo -u postgres createuser --no-superuser --no-createrole --createdb `whoami` ★2-1 (9arrowsのソースコードを展開) $ tar zxf 9arrows-all-0.9.0.2.tar.gz (config/database.ymlを修正 ★2-2 ★2-3) $ cd 9arrows-0.9.0.2/9arrows $ emacs config/database.yml (DBを初期化する) $ rake db:create ★2-4 $ rake db:migrate $ rake db:fixtures:load ★2-5 (実行権限を付与〜9arrowsをWebrickで起動して動作確認) $ find script -type f | xargs chmod +x $ ./script/server webrick (動作確認。Webブラウザで http://ホスト名:3000/ にアクセスして、ログインする ログインID「9arrows@example.com」、パスワード「9arrows」) ★2-1 USERNAMEの部分をUbuntuの自分ののユーザ名に置き換えること。 ★2-2 PostgreSQL をUNIXドメイン接続で用いる場合の config/database.yml の修正差分 (developmentを修正):
diff -r a2ffe4c9a9b9 config/database.yml --- a/config/database.yml Tue Mar 02 21:09:04 2010 +0900 +++ b/config/database.yml Tue Mar 02 21:17:16 2010 +0900 @@ -13,10 +13,8 @@ # http://dev.mysql.com/doc/refman/5.0/en/old-client.html development: adapter: postgresql - database: 9arrows_development - username: postgres - password: postgres - host: localhost + database: ninearrows_development + username: USERNAME # Warning: The database defined as 'test' will be erased and # re-generated from your development database when you run 'rake'. ★2-3 SQLite3 を用いる場合の config/database.yml の修正差分 (developmentを修正):
diff -r dff1eebb4085 9arrows/config/database.yml --- a/9arrows/config/database.yml Thu Mar 04 21:19:34 2010 +0900 +++ b/9arrows/config/database.yml Thu Mar 04 21:27:10 2010 +0900 @@ -12,11 +12,8 @@ # And be sure to use new-style password hashing: # http://dev.mysql.com/doc/refman/5.0/en/old-client.html development: - adapter: postgresql - database: 9arrows_development - username: postgres - password: postgres - host: localhost + adapter: sqlite3 + database: db/ninearrows_development.db # Warning: The database defined as 'test' will be erased and # re-generated from your development database when you run 'rake'. ★2-4 やり直したいときは、rake db:drop してから、rake db:create する ★2-5 初期データの一部(アカウント1つ、プロジェクトの雛形、ブラウザ上に表示するメッセージ) を投入しているようだ。 (trunk - 9arrows#trunk/test/fixtures) [編集]3. Apache + Passenger で動作させる #http://ホスト名/9arrows で動かすための手順 (UbuntuパッケージでApacheとPassengerをインストールする) $ sudo aptitude -y install apache2 libapache2-mod-passenger (9arrowsを /var/rails/9arrows にコピーする (管理しやすい場所にコピーする)) $ tar zxf 9arrows-all-0.9.0.2.tar.gz $ sudo mkdir -p /var/rails $ sudo cp -a 9arrows-0.9.0.2/9arrows /var/rails/ (PostgreSQLにwww-dataユーザを追加。パスワードを設定して、後で config/database.yml に記載する) $ sudo -u postgres createuser --no-superuser --no-createrole --createdb --pwprompt www-data (/var/rails/9arrows/config/database.yml を修正する ★3-1) $ emacs /var/rails/9arrows/config/database.yml (パーミッションと所有者を変更する) $ sudo find /var/rails/9arrows/* -type f | xargs sudo chmod 600 $ sudo find /var/rails/9arrows/* -type d | xargs sudo chmod 700 $ sudo chmod 700 -R /var/rails/9arrows/script $ sudo chown -R www-data:www-data /var/rails/9arrows (DBを初期化する) $ cd /var/rails/9arrows/ $ sudo -u www-data rake RAILS_ENV=production db:create ★3-2 $ sudo -u www-data rake RAILS_ENV=production db:migrate $ sudo -u www-data rake RAILS_ENV=production db:fixtures:load (Apacheに設定を追加して、Apacheを再起動する) $ sudo ln -s /var/rails/9arrows/public /var/www/9arrows $ (/etc/apache2/sites-available/9arrows を作成する ★3-3) $ sudo a2ensite 9arrows $ sudo apache2ctl configtest $ sudo /etc/init.d/apache2 restart (動作確認。Webブラウザで http://ホスト名/9arrows/ にアクセスして、ログインする ログインID「9arrows@example.com」、パスワード「9arrows」) ★3-1 /var/rails/9arrows/config/database.yml の修正個所 (productionを修正、PASSWORD はcreateuserで設定した物を使う):
★3-2
★3-3 /etc/apache2/sites-available/9arrows の内容 RailsBaseURI /9arrows <Directory /var/www/9arrows> Options -MultiViews </Directory>[編集] インストール時のメモ #[編集]Ubuntu 9.10 server のインストール #Download Ubuntu Server | Ubuntu で Ubuntu 9.10 server 32bit版をダウンロードして、VMware Workstation 7.0.1 (ソフト/VMware) でVMを作ってインストールした。 キーボードは「Generic」の105 (Intl) を選択したと思う。 インストール中の「パッケージ選択」で「Open SSH Server」をインストールした。 (あとで aptitude install openssh-server してもよいが) インストール完了後にコンソールからログインして ifconfig コマンドでIPアドレスを調べて、以後はsshで接続して作業を行う(作業を記録しやすくするため) $ LANG= ifconfig eth0 Link encap:Ethernet HWaddr 00:0c:29:c4:d2:07 inet addr:192.168.65.131 Bcast:192.168.65.255 Mask:255.255.255.0 inet6 addr: fe80::20c:29ff:fec4:d207/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 ... $ logout[編集] Ubuntu 9.10 のインストール済みパッケージの更新 #インストール済みパッケージを更新する。カーネルも更新されるので、再起動する: $ sudo aptitude update && sudo aptitude safe-upgrade && sudo aptitude autoclean [sudo] password for USERNAME: ... 取得:10 http://jp.archive.ubuntu.com karmic-updates/multiverse Sources [3,820B] 245kB を 2min 23s 秒でダウンロードしました (1,704B/s) ... 以下の新規パッケージがインストールされます: libdns53{a} linux-headers-2.6.31-19{a} linux-headers-2.6.31-19-generic-pae{a} linux-image-2.6.31-19-generic-pae{a} 以下のパッケージは『削除』されます: linux-headers-2.6.31-14{u} linux-headers-2.6.31-14-generic-pae{u} 以下のパッケージは更新されます: adduser apparmor apparmor-utils apport bind9-host cpp-4.4 dhcp3-client dhcp3-common dnsutils fuse-utils gcc-4.4-base gzip initscripts landscape-common libapparmor-perl libapparmor1 libbind9-50 libc-bin libc6 libc6-i686 libdns50 libexpat1 libfuse2 libgcc1 libglib2.0-0 libglib2.0-data libgssapi-krb5-2 libhtml-parser-perl libisc50 libisccc50 libisccfg50 libk5crypto3 libkrb5-3 libkrb5support0 liblwres50 libpython2.6 libssl0.9.8 libstdc++6 libudev0 libxml2 linux-firmware linux-generic-pae linux-headers-generic-pae linux-image-generic-pae ntpdate openssl python python-apport python-minimal python-problem-report python2.6 python2.6-minimal rsyslog sysv-rc sysvinit-utils tzdata udev update-manager-core upstart x11-common 60 個のパッケージを更新、 4 個を新たにインストール、 2 個を削除予定、0 個が更新されていな い。 71.2MB のアーカイブを取得する必要があります。 展開後に 89.8MB のディスク領域が新たに消費されます。 先に進みますか? [Y/n/?] y .... $ sudo shutdown -r now ...[編集] build-essential パッケージのインストール #gemのインストール中にCコンパイラが起動されることがあるため、最低限のコンパイル環境をインストールする。 $ sudo aptitude install build-essential [sudo] password for USERNAME: パッケージリストを読み込んでいます... 完了 依存関係ツリーを作成しています 状態情報を読み取っています... 完了 拡張状態情報を読み込んでいます パッケージの状態を初期化しています... 完了 以下の新規パッケージがインストールされます: binutils{a} build-essential dpkg-dev{a} fakeroot{a} g++{a} g++-4.4{a} gcc{a} gcc-4.4{a} libc-dev-bin{a} libc6-dev{a} libgomp1{a} libstdc++6-4.4-dev{a} linux-libc-dev{a} 0 個のパッケージを更新、 13 個を新たにインストール、 0 個を削除予定、0 個が更新されていな い。 17.2MB のアーカイブを取得する必要があります。 展開後に 61.6MB のディスク領域が新たに消費されます。 先に進みますか? [Y/n/?] y ...[編集] (オプション) VMware Tools のインストール #VMware上にUbuntuをインストールした場合、性能向上のためにVMware Toolsをインストールすると良い。 VMware tools はどの時点でインストールしても良い。 最初にbuild-essentialとlinux-headers-* をインストールする(でも、どちらも既にインストールされているのだが): $ sudo aptitude install build-essential linux-headers-`uname -r` ... インストール・削除・更新されるパッケージがありません。 0 個のパッケージを更新、 0 個を新たにインストール、 0 個を削除予定、0 個が更新されていない。 0B のアーカイブを取得する必要があります。 展開後に 0B のディスク領域が新たに消費されます。 ... VMware WorkstationやPlayerのメニューで「VMware toolsのインストール」を選ぶ。 最後に再起動する (initrd が更新されているので、それの動作確認を行うため) $ sudo -i # mount /cdrom mount: ブロックデバイス /dev/sr0 は書き込み禁止です、読込み専用でマウントします # tar zxf /cdrom/VMware-tools-8.1.4-227600.tar.gz # umount /cdrom # cd vmware-tools-distrib # ./vmware-install.pl -d ... # shutdown -r now[編集] (オプション) mercurial, etckeeper パッケージのインストール #9arrows のファイルの変更管理のために mercurial を、/etc 以下のファイルの変更管理のために etckeeper をインストールする。 $ sudo aptitude install mercurial etckeeper ... 以下の新規パッケージがインストールされます: etckeeper mercurial mercurial-common{a} 0 個のパッケージを更新、 3 個を新たにインストール、 0 個を削除予定、0 個が更新されていない。 1,156kB のアーカイブを取得する必要があります。 展開後に 5,231kB のディスク領域が新たに消費されます。 先に進みますか? [Y/n/?] y ... $ sudo vi /etc/etckeeper/etckeeper.conf (Mercurial (=hg) を使うように設定する) $ cd /etc $ sudo etckeeper init $ sudo etckeeper commit[編集] postgresql, libpq-dev パッケージのインストール #$ sudo aptitude install postgresql libpq-dev ... 以下の新規パッケージがインストールされます: comerr-dev{a} libgssrpc4{a} libkadm5clnt6{a} libkadm5srv6{a} libkdb5-4{a} libkrb5-dev{a} libpq-dev libpq5{a} libreadline5{a} libssl-dev{a} postgresql postgresql-8.4{a} postgresql-client-8.4{a} postgresql-client-common{a} postgresql-common{a} ssl-cert{a} zlib1g-dev{a} 0 個のパッケージを更新、 17 個を新たにインストール、 0 個を削除予定、0 個が更新されていない。 7,780kB のアーカイブを取得する必要があります。 展開後に 27.4MB のディスク領域が新たに消費されます。 先に進みますか? [Y/n/?] y ... postgresql-8.4 (8.4.2-0ubuntu9.10) を設定しています ... Creating new cluster (configuration: /etc/postgresql/8.4/main, data: /var/lib/postgresql/8.4/main)... Moving configuration file /var/lib/postgresql/8.4/main/postgresql.conf to /etc/postgresql/8.4/main... Moving configuration file /var/lib/postgresql/8.4/main/pg_hba.conf to /etc/postgresql/8.4/main... Moving configuration file /var/lib/postgresql/8.4/main/pg_ident.conf to /etc/postgresql/8.4/main... Configuring postgresql.conf to use port 5432... update-alternatives: using /usr/share/postgresql/8.4/man/man1/postmaster.1.gz to provide /usr/share/man/man1/postmaster.1.gz (postmaster.1.gz) in auto mode. * Starting PostgreSQL 8.4 database server ...done. ... ポート番号を確認 $ grep -R -i port /etc/postgresql grep: /etc/postgresql/8.4/main/pg_ident.conf: Permission denied /etc/postgresql/8.4/main/postgresql.conf:port = 5432 # (change requires restart) /etc/postgresql/8.4/main/postgresql.conf: # supported by the operating system: /etc/postgresql/8.4/main/postgresql.conf:# ERROR REPORTING AND LOGGING /etc/postgresql/8.4/main/postgresql.conf: # %r = remote host and port grep: /etc/postgresql/8.4/main/pg_hba.conf: Permission denied $ netstat -an | grep :5432 tcp 0 0 127.0.0.1:5432 0.0.0.0:* LISTEN tcp6 0 0 ::1:5432 :::* $ sudo lsof -i:5432 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME postgres 3492 postgres 3u IPv6 10457 0t0 TCP localhost:postgresql (LISTEN) postgres 3492 postgres 6u IPv4 10458 0t0 TCP localhost:postgresql (LISTEN) $ sudo fuser -n tcp 5432 5432/tcp: 3492 $ ps -p 3492 PID TTY TIME CMD 3492 ? 00:00:00 postgres マニュアルを読む: $ less /usr/share/doc/postgresql-8.4/README.Debian.gz psqlで接続してみる。ただしUNIXDOMAIN経由(IP経由だとパスワードが必要... /etc/postgresql/8.4/main/pg_hba.conf を参照のこと): $ sudo -u postgres -i postgres@ubuntu910s:~$ psql psql (8.4.2) "help" でヘルプを表示します. postgres=# \q postgres@ubuntu910s:~$ logout $[編集] ruby, ruby-dev, libopenssl-ruby パッケージのインストール #ruby, ruby-dev をインストールする: $ sudo aptitude install ruby ruby-dev ... 以下の新規パッケージがインストールされます: libruby1.8{a} ruby ruby-dev ruby1.8{a} ruby1.8-dev{a} 0 個のパッケージを更新、 5 個を新たにインストール、 0 個を削除予定、0 個が更新されていない。 2,075kB のアーカイブを取得する必要があります。 展開後に 7,979kB のディスク領域が新たに消費されます。 先に進みますか? [Y/n/?] y ... $ ruby -v ruby 1.8.7 (2009-06-12 patchlevel 174) [i486-linux] libruby-openssl をインストールする: $ ruby -r openssl -e "" ruby: no such file to load -- openssl (LoadError) $ sudo aptitude install libopenssl-ruby ... 以下の新規パッケージがインストールされます: libopenssl-ruby libopenssl-ruby1.8{a} 0 個のパッケージを更新、 2 個を新たにインストール、 0 個を削除予定、0 個が更新されていない。 127kB のアーカイブを取得する必要があります。 展開後に 569kB のディスク領域が新たに消費されます。 先に進みますか? [Y/n/?] y ... $ ruby -r openssl -e "" $[編集] rubygems パッケージのインストール #$ sudo aptitude install rubygems ... 以下の新規パッケージがインストールされます: irb1.8{a} libreadline-ruby1.8{a} rdoc1.8{a} rubygems rubygems1.8{a} 0 個のパッケージを更新、 5 個を新たにインストール、 0 個を削除予定、0 個が更新されていない。 409kB のアーカイブを取得する必要があります。 展開後に 2,163kB のディスク領域が新たに消費されます。 先に進みますか? [Y/n/?] y ...[編集] 9arrows の入手 #9arrows をダウンロード: $ wget http://9arrows.com/download/9arrows-all-0.9.0.2.tar.gz[編集] PostgreSQL のロールを作成、動作確認 #PostgreSQLに仮のユーザ(=Ubuntuのログインユーザ名を用いる、以下USERNAMEと称す)とDBを用意する。 $ sudo -u postgres -i postgres@ubuntu910s:~$ createuser --no-superuser --no-createrole --createdb --pwprompt USERNAME 新しいロールのパスワード: もう一度入力してください: postgres@ubuntu910s:~$ logout 試しにDBを作成して、TCP/IP経由で接続できること、パスワードが正しいことを確かめる。 $ createdb sampledb $ psql -l データベース一覧 名前 | 所有者 | エンコーディング | 照合順序 | Ctype(変換演算子) | アクセス権 -----------+----------+------------------+-------------+-------------------+----------------------- postgres | postgres | UTF8 | ja_JP.UTF-8 | ja_JP.UTF-8 | sampledb | USERNAME | UTF8 | ja_JP.UTF-8 | ja_JP.UTF-8 | template0 | postgres | UTF8 | ja_JP.UTF-8 | ja_JP.UTF-8 | =c/postgres : postgres=CTc/postgres template1 | postgres | UTF8 | ja_JP.UTF-8 | ja_JP.UTF-8 | =c/postgres : postgres=CTc/postgres (4 行) $ psql -h localhost -U USERNAME sampledb ユーザ USERNAME のパスワード: psql (8.4.2) SSL 接続 (暗号化方式: DHE-RSA-AES256-SHA, ビット長: 256) "help" でヘルプを表示します. sampledb=> \q $ dropdb sampledb[編集] rails, rake, postgres を gem でインストール #(注意:当初は試行錯誤のために一般ユーザで gem install して、~/.gems にインストールされた物を使っていた(不要になったら簡単に消せる)。またUbuntuパッケージのrake,rdoc,riをインストールしてみたりもした。これらのことは、この文書には記載していない) RubyGems:
Rails:
ActiveRecordアダプタ:
9arrowsが要求するRailsのバージョンを調べる: $ cd 9arrows-all-0.9.0.2/9arrows $ grep VER config/environment.rb RAILS_GEM_VERSION = '2.1.0' unless defined? RAILS_GEM_VERSION rails をインストールする。rake も同時にインストールされる。所要時間は5分程度: $ sudo -i # gem install rails --version '= 2.1.0' Successfully installed rake-0.8.7 Successfully installed activesupport-2.1.0 Successfully installed activerecord-2.1.0 Successfully installed actionpack-2.1.0 Successfully installed actionmailer-2.1.0 Successfully installed activeresource-2.1.0 Successfully installed rails-2.1.0 7 gems installed Installing ri documentation for rake-0.8.7... Installing ri documentation for activesupport-2.1.0... Installing ri documentation for activerecord-2.1.0... Installing ri documentation for actionpack-2.1.0... Installing ri documentation for actionmailer-2.1.0... Installing ri documentation for activeresource-2.1.0... Installing ri documentation for rails-2.1.0... Installing RDoc documentation for rake-0.8.7... Installing RDoc documentation for activesupport-2.1.0... Installing RDoc documentation for activerecord-2.1.0... Installing RDoc documentation for actionpack-2.1.0... Installing RDoc documentation for actionmailer-2.1.0... Installing RDoc documentation for activeresource-2.1.0... Installing RDoc documentation for rails-2.1.0... # gem list *** LOCAL GEMS *** actionmailer (2.1.0) actionpack (2.1.0) activerecord (2.1.0) activeresource (2.1.0) activesupport (2.1.0) rails (2.1.0) rake (0.8.7) # ls /var/lib/gems/1.8/bin rails* rake* # ls -R ~/.gem /root/.gem: ruby/ specs/ /root/.gem/ruby: 1.8/ /root/.gem/ruby/1.8: cache/ doc/ gems/ specifications/ /root/.gem/ruby/1.8/cache: /root/.gem/ruby/1.8/doc: /root/.gem/ruby/1.8/gems: /root/.gem/ruby/1.8/specifications: /root/.gem/specs: gems.rubyforge.org%80/ /root/.gem/specs/gems.rubyforge.org%80: latest_specs.4.8 quick/ specs.4.8 /root/.gem/specs/gems.rubyforge.org%80/quick: Marshal.4.8/ /root/.gem/specs/gems.rubyforge.org%80/quick/Marshal.4.8: actionmailer-2.1.0.gemspec activerecord-2.1.0.gemspec activesupport-2.1.0.gemspec rake-0.8.7.gemspec actionpack-2.1.0.gemspec activeresource-2.1.0.gemspec rails-2.1.0.gemspec postgres gemををインストールする (より新しいらしい pg や posgresql-pr のほうがよいだろうけど、とりあえずはこれで): # gem install postgres Building native extensions. This could take a while... Successfully installed postgres-0.7.9.2008.01.28 1 gem installed Installing ri documentation for postgres-0.7.9.2008.01.28... Installing RDoc documentation for postgres-0.7.9.2008.01.28... # gem list postgres *** LOCAL GEMS *** postgres (0.7.9.2008.01.28) # gem list --details postgres *** LOCAL GEMS *** postgres (0.7.9.2008.01.28) Authors: Yukihiro Matsumoto, Eiji Matsumoto, Noboru Saitou, Dave Lee, Jeff Davis Rubyforge: http://rubyforge.org/projects/ruby-pg Homepage: http://rubyforge.org/projects/ruby-pg Installed at: /var/lib/gems/1.8 Ruby extension library providing an API to PostgreSQL # logout rakeとrailsにパスを通すために、シンボリックリンクを作成する: $ which rake $ which rails $ sudo ln -s /var/lib/gems/1.8/bin/rails /usr/local/bin/ $ sudo ln -s /var/lib/gems/1.8/bin/rake /usr/local/bin/ $ which rake /usr/local/bin/rake $ which rails /usr/local/bin/rails Railsのバージョンを確認: $ rails -v Rails 2.1.0 2010-02-28 補足: pg や postgres-pr の情報を得るために、~/.gem/ にインストールしてみた: $ gem install postgres-pr WARNING: Installing to ~/.gem since /var/lib/gems/1.8 and /var/lib/gems/1.8/bin aren't both writable. WARNING: You don't have /home/hamatani/.gem/ruby/1.8/bin in your PATH, gem executables will not run. Successfully installed postgres-pr-0.6.3 1 gem installed Installing ri documentation for postgres-pr-0.6.3... Installing RDoc documentation for postgres-pr-0.6.3... $ gem install pg WARNING: Installing to ~/.gem since /var/lib/gems/1.8 and /var/lib/gems/1.8/bin aren't both writable. WARNING: You don't have /home/hamatani/.gem/ruby/1.8/bin in your PATH, gem executables will not run. Building native extensions. This could take a while... Successfully installed pg-0.9.0 1 gem installed Installing ri documentation for pg-0.9.0... Installing RDoc documentation for pg-0.9.0... 2010-03-01 補足:gem「postgres」をアンインストールして、「pg」をインストールしてみた: $ sudo gem uninstall postgres Successfully uninstalled postgres-0.7.9.2008.01.28 $ sudo gem install pg Building native extensions. This could take a while... Successfully installed pg-0.9.0 1 gem installed Installing ri documentation for pg-0.9.0... Installing RDoc documentation for pg-0.9.0... $ sudo gem list *** LOCAL GEMS *** actionmailer (2.1.0) actionpack (2.1.0) activerecord (2.1.0) activeresource (2.1.0) activesupport (2.1.0) pg (0.9.0) rails (2.1.0) rake (0.8.7) $ sudo gem list --detail *** LOCAL GEMS *** actionmailer (2.1.0) Author: David Heinemeier Hansson Rubyforge: http://rubyforge.org/projects/actionmailer Homepage: http://www.rubyonrails.org Installed at: /var/lib/gems/1.8 Service layer for easy email delivery and testing. actionpack (2.1.0) Author: David Heinemeier Hansson Rubyforge: http://rubyforge.org/projects/actionpack Homepage: http://www.rubyonrails.org Installed at: /var/lib/gems/1.8 Web-flow and rendering framework putting the VC in MVC. activerecord (2.1.0) Author: David Heinemeier Hansson Rubyforge: http://rubyforge.org/projects/activerecord Homepage: http://www.rubyonrails.org Installed at: /var/lib/gems/1.8 Implements the ActiveRecord pattern for ORM. activeresource (2.1.0) Author: David Heinemeier Hansson Rubyforge: http://rubyforge.org/projects/activeresource Homepage: http://www.rubyonrails.org Installed at: /var/lib/gems/1.8 Think Active Record for web resources. activesupport (2.1.0) Author: David Heinemeier Hansson Rubyforge: http://rubyforge.org/projects/activesupport Homepage: http://www.rubyonrails.org Installed at: /var/lib/gems/1.8 Support and utility classes used by the Rails framework. pg (0.9.0) Author: Michael Granger Homepage: http://bitbucket.org/ged/ruby-pg/ Installed at: /var/lib/gems/1.8 A Ruby interface to the PostgreSQL RDBMS rails (2.1.0) Author: David Heinemeier Hansson Rubyforge: http://rubyforge.org/projects/rails Homepage: http://www.rubyonrails.org Installed at: /var/lib/gems/1.8 Web-application framework with template engine, control-flow layer, and ORM. rake (0.8.7) Author: Jim Weirich Rubyforge: http://rubyforge.org/projects/rake Homepage: http://rake.rubyforge.org Installed at: /var/lib/gems/1.8 Ruby based make-like utility. 2010-03-01 補足:rakeのタスク一覧 $ rake -T (in /home/USERNAME/9arrows-0.9.0.2/9arrows) rake db:abort_if_pending_migrations # Raises an error if there are pending migrations rake db:charset # Retrieves the charset for the current environment's database rake db:collation # Retrieves the collation for the current environment's database rake db:create # Create the database defined in config/database.yml for the current... rake db:create:all # Create all the local databases defined in config/database.yml rake db:drop # Drops the database for the current RAILS_ENV rake db:drop:all # Drops all the local databases defined in config/database.yml rake db:fixtures:identify # Search for a fixture given a LABEL or ID. rake db:fixtures:load # Load fixtures into the current environment's database. rake db:migrate # Migrate the database through scripts in db/migrate. rake db:migrate:down # Runs the "down" for a given migration VERSION. rake db:migrate:redo # Rollbacks the database one migration and re migrate up. rake db:migrate:reset # Resets your database using your migrations for the current environ... rake db:migrate:up # Runs the "up" for a given migration VERSION. rake db:reset # Drops and recreates the database from db/schema.rb for the current... rake db:rollback # Rolls the schema back to the previous version. rake db:schema:dump # Create a db/schema.rb file that can be portably used against any D... rake db:schema:load # Load a schema.rb file into the database rake db:sessions:clear # Clear the sessions table rake db:sessions:create # Creates a sessions migration for use with CGI::Session::ActiveReco... rake db:structure:dump # Dump the database structure to a SQL file rake db:test:clone # Recreate the test database from the current environment's database... rake db:test:clone_structure # Recreate the test databases from the development structure rake db:test:prepare # Prepare the test database and load the schema rake db:test:purge # Empty the test database rake db:version # Retrieves the current schema version number rake doc:app # Build the RDOC HTML Files rake doc:clobber_app # Remove rdoc products rake doc:clobber_plugins # Remove plugin documentation rake doc:clobber_rails # Remove rdoc products rake doc:plugins # Generate documentation for all installed plugins rake doc:rails # Build the RDOC HTML Files rake doc:reapp # Force a rebuild of the RDOC files rake doc:rerails # Force a rebuild of the RDOC files rake gems # List the gems that this rails application depends on rake gems:build # Build any native extensions for unpacked gems rake gems:install # Installs all required gems for this application. rake gems:unpack # Unpacks the specified gem into vendor/gems. rake gems:unpack:dependencies # Unpacks the specified gems and its dependencies into vendor/gems rake log:clear # Truncates all *.log files in log/ to zero bytes rake notes # Enumerate all annotations rake notes:fixme # Enumerate all FIXME annotations rake notes:optimize # Enumerate all OPTIMIZE annotations rake notes:todo # Enumerate all TODO annotations rake rails:freeze:edge # Lock to latest Edge Rails, for a specific release use RELEASE=1.2.0 rake rails:freeze:gems # Lock this application to the current gems (by unpacking them into ... rake rails:unfreeze # Unlock this application from freeze of gems or edge and return to ... rake rails:update # Update both configs, scripts and public/javascripts from Rails rake rails:update:configs # Update config/boot.rb from your current rails install rake rails:update:javascripts # Update your javascripts from your current rails install rake rails:update:scripts # Add new scripts to the application script/ directory rake routes # Print out all defined routes in match order, with names. rake secret # Generate a crytographically secure secret key. rake stats # Report code statistics (KLOCs, etc) from the application rake test # Run all unit, functional and integration tests rake test:functionals # Run tests for functionalsdb:test:prepare / Run the functional test... rake test:integration # Run tests for integrationdb:test:prepare / Run the integration tes... rake test:plugins # Run tests for pluginsenvironment / Run the plugin tests in vendor/... rake test:recent # Run tests for recentdb:test:prepare / Test recent changes rake test:uncommitted # Run tests for uncommitteddb:test:prepare / Test changes since last... rake test:units # Run tests for unitsdb:test:prepare / Run the unit tests in test/unit rake time:zones:all # Displays names of all time zones recognized by the Rails TimeZone ... rake time:zones:local # Displays names of time zones recognized by the Rails TimeZone clas... rake time:zones:us # Displays names of US time zones recognized by the Rails TimeZone c... rake tmp:cache:clear # Clears all files and directories in tmp/cache rake tmp:clear # Clear session, cache, and socket files from tmp/ rake tmp:create # Creates tmp directories for sessions, cache, and sockets rake tmp:pids:clear # Clears all files in tmp/pids rake tmp:sessions:clear # Clears all files in tmp/sessions rake tmp:sockets:clear # Clears all files in tmp/sockets[編集] 9arrows のデータベース接続設定を修正 #9arrowsを展開: $ tar zxf 9arrows-all-0.9.0.2.tar.gz $ cd 9arrows-all-0.9.0.2/9arrows (オプション)Mercurialで現状を記録: $ hg init $ hg commit -A -m "http://9arrows.com/download/9arrows-all-0.9.0.2.tar.gz/9arrows" 9arrowsのデータベース接続設定 (config/database.yml) を修正する: $ (config/database.yml を PostgreSQL に行った設定に従って修正する) 修正個所を確認: $ hg diff diff -r faa84e4f9d8c config/database.yml --- a/config/database.yml Tue Feb 22 21:20:40 2010 +0900 +++ b/config/database.yml Tue Feb 22 22:49:59 2010 +0900 @@ -13,9 +13,9 @@ # http://dev.mysql.com/doc/refman/5.0/en/old-client.html development: adapter: postgresql - database: 9arrows_development - username: postgres - password: postgres + database: ninearrows_development + username: USERNAME + password: 9arrows host: localhost # Warning: The database defined as 'test' will be erased and DBを作ってみる。エラー無し。警告は出てるけど、この作業とは無関係なので無視する(自分で原因を取り除くことも出来るけど): $ rake db:create (in /home/USERNAME/9arrows-0.9.0.2/9arrows) ******************************************************************* * config.breakpoint_server has been deprecated and has no effect. * ******************************************************************* $ 「database: 9arrows_development」を修正する理由について。 デフォルトのまま (9arrows_production) だと、rake db:create 実行時に以下のようにPostgreSQL で構文エラーが発生するため: $ rake db:create (in /home/USERNAME/9arrows-0.9.0.2/9arrows) PGError: ERROR: "9"またはその近辺で構文エラー LINE 1: CREATE DATABASE 9arrows_production ENCODING = 'utf8' ^ : CREATE DATABASE 9arrows_production ENCODING = 'utf8' /var/lib/gems/1.8/gems/activerecord-2.1.0/lib/active_reco[編集] rake db:migrate, rake db:fixtures:load の実行 #README-ja - 9arrows にしたがい、rake db:migrate と rake db:fixtures:load を実行する: $ cd 9arrows-0.9.0.2/9arrows $ rake db:migrate (in /home/USERNAME/9arrows-0.9.0.2/9arrows) ******************************************************************* * config.breakpoint_server has been deprecated and has no effect. * ******************************************************************* == 1 CreateMstUsers: migrating ================================================ -- create_table(:mst_users) NOTICE: CREATE TABLEはシリアル列"mst_users.id"用に暗黙的なシーケンス"mst_users_id_seq"を作成します。 NOTICE: CREATE TABLE / PRIMARY KEYはテーブル"mst_users"に暗黙的なインデックス"mst_users_pkey"を作成します -> 0.2259s == 1 CreateMstUsers: migrated (0.2261s) ======================================= == 2 CreateMstMessages: migrating ============================================= -- create_table(:mst_messages) NOTICE: CREATE TABLEはシリアル列"mst_messages.id"用に暗黙的なシーケンス"mst_messages_id_seq"を作成します。 NOTICE: CREATE TABLE / PRIMARY KEYはテーブル"mst_messages"に暗黙的なインデックス"mst_messages_pkey"を作成し ます -> 0.0420s == 2 CreateMstMessages: migrated (0.0422s) ==================================== == 3 CreateMstTemplates: migrating ============================================ -- create_table(:mst_templates) NOTICE: CREATE TABLEはシリアル列"mst_templates.id"用に暗黙的なシーケンス"mst_templates_id_seq"を作成します。 NOTICE: CREATE TABLE / PRIMARY KEYはテーブル"mst_templates"に暗黙的なインデックス"mst_templates_pkey"を作成 します -> 0.0650s == 3 CreateMstTemplates: migrated (0.0652s) =================================== == 4 CreateMstCompositions: migrating ========================================= -- create_table(:mst_compositions) NOTICE: CREATE TABLEはシリアル列"mst_compositions.id"用に暗黙的なシーケンス"mst_compositions_id_seq"を作成 します。 NOTICE: CREATE TABLE / PRIMARY KEYはテーブル"mst_compositions"に暗黙的なインデックス"mst_compositions_pkey" を作成します -> 0.0352s == 4 CreateMstCompositions: migrated (0.0354s) ================================ == 5 CreateMstTptasks: migrating ============================================== -- create_table(:mst_tptasks) NOTICE: CREATE TABLEはシリアル列"mst_tptasks.id"用に暗黙的なシーケンス"mst_tptasks_id_seq"を作成します。 NOTICE: CREATE TABLE / PRIMARY KEYはテーブル"mst_tptasks"に暗黙的なインデックス"mst_tptasks_pkey"を作成しま す -> 0.0317s == 5 CreateMstTptasks: migrated (0.0319s) ===================================== == 6 CreateMstTpevents: migrating ============================================= -- create_table(:mst_tpevents) NOTICE: CREATE TABLEはシリアル列"mst_tpevents.id"用に暗黙的なシーケンス"mst_tpevents_id_seq"を作成します。 NOTICE: CREATE TABLE / PRIMARY KEYはテーブル"mst_tpevents"に暗黙的なインデックス"mst_tpevents_pkey"を作成 します -> 0.0407s == 6 CreateMstTpevents: migrated (0.0408s) ==================================== == 7 CreateMstTpmilestones: migrating ========================================= -- create_table(:mst_tpmilestones) NOTICE: CREATE TABLEはシリアル列"mst_tpmilestones.id"用に暗黙的なシーケンス"mst_tpmilestones_id_seq"を作成 します。 NOTICE: CREATE TABLE / PRIMARY KEYはテーブル"mst_tpmilestones"に暗黙的なインデックス"mst_tpmilestones_pkey" を作成します -> 0.0082s == 7 CreateMstTpmilestones: migrated (0.0084s) ================================ == 8 CreateDatProjects: migrating ============================================= -- create_table(:dat_projects) NOTICE: CREATE TABLEはシリアル列"dat_projects.id"用に暗黙的なシーケンス"dat_projects_id_seq"を作成します。 NOTICE: CREATE TABLE / PRIMARY KEYはテーブル"dat_projects"に暗黙的なインデックス"dat_projects_pkey"を作成し ます -> 0.0485s == 8 CreateDatProjects: migrated (0.0487s) ==================================== == 9 CreateDatProjectusers: migrating ========================================= -- create_table(:dat_projectusers) NOTICE: CREATE TABLEはシリアル列"dat_projectusers.id"用に暗黙的なシーケンス"dat_projectusers_id_seq"を作成し ます。 NOTICE: CREATE TABLE / PRIMARY KEYはテーブル"dat_projectusers"に暗黙的なインデックス"dat_projectusers_pkey" を作成します -> 0.0081s == 9 CreateDatProjectusers: migrated (0.0083s) ================================ == 10 CreateDatProjectcomps: migrating ======================================== -- create_table(:dat_projectcomps) NOTICE: CREATE TABLEはシリアル列"dat_projectcomps.id"用に暗黙的なシーケンス"dat_projectcomps_id_seq"を作成し ます。 NOTICE: CREATE TABLE / PRIMARY KEYはテーブル"dat_projectcomps"に暗黙的なインデックス"dat_projectcomps_pkey" を作成します -> 0.0412s == 10 CreateDatProjectcomps: migrated (0.0413s) =============================== == 11 CreateDatProjectlogs: migrating ========================================= -- create_table(:dat_projectlogs) NOTICE: CREATE TABLEはシリアル列"dat_projectlogs.id"用に暗黙的なシーケンス"dat_projectlogs_id_seq"を作成しま す。 NOTICE: CREATE TABLE / PRIMARY KEYはテーブル"dat_projectlogs"に暗黙的なインデックス"dat_projectlogs_pkey"を 作成します -> 0.0223s == 11 CreateDatProjectlogs: migrated (0.0225s) ================================ == 12 CreateDatTasks: migrating =============================================== -- create_table(:dat_tasks) NOTICE: CREATE TABLEはシリアル列"dat_tasks.id"用に暗黙的なシーケンス"dat_tasks_id_seq"を作成します。 NOTICE: CREATE TABLE / PRIMARY KEYはテーブル"dat_tasks"に暗黙的なインデックス"dat_tasks_pkey"を作成します -> 0.0365s == 12 CreateDatTasks: migrated (0.0367s) ====================================== == 13 CreateDatTaskusers: migrating =========================================== -- create_table(:dat_taskusers) NOTICE: CREATE TABLEはシリアル列"dat_taskusers.id"用に暗黙的なシーケンス"dat_taskusers_id_seq"を作成します。 NOTICE: CREATE TABLE / PRIMARY KEYはテーブル"dat_taskusers"に暗黙的なインデックス"dat_taskusers_pkey"を作成し ます -> 0.0143s == 13 CreateDatTaskusers: migrated (0.0144s) ================================== == 14 CreateDatTaskfiles: migrating =========================================== -- create_table(:dat_taskfiles) NOTICE: CREATE TABLEはシリアル列"dat_taskfiles.id"用に暗黙的なシーケンス"dat_taskfiles_id_seq"を作成します。 NOTICE: CREATE TABLE / PRIMARY KEYはテーブル"dat_taskfiles"に暗黙的なインデックス"dat_taskfiles_pkey"を作成し ます -> 0.0200s == 14 CreateDatTaskfiles: migrated (0.0201s) ================================== == 15 CreateDatTaskhistories: migrating ======================================= -- create_table(:dat_taskhistories) NOTICE: CREATE TABLEはシリアル列"dat_taskhistories.id"用に暗黙的なシーケンス"dat_taskhistories_id_seq"を作成 します。 NOTICE: CREATE TABLE / PRIMARY KEYはテーブル"dat_taskhistories"に暗黙的なインデックス"dat_taskhistories_pkey" を作成します -> 0.0184s == 15 CreateDatTaskhistories: migrated (0.0185s) ============================== == 16 CreateDatTaskcmts: migrating ============================================ -- create_table(:dat_taskcmts) NOTICE: CREATE TABLEはシリアル列"dat_taskcmts.id"用に暗黙的なシーケンス"dat_taskcmts_id_seq"を作成します。 NOTICE: CREATE TABLE / PRIMARY KEYはテーブル"dat_taskcmts"に暗黙的なインデックス"dat_taskcmts_pkey"を作成しま す -> 0.0158s == 16 CreateDatTaskcmts: migrated (0.0160s) =================================== == 17 CreateDatEvents: migrating ============================================== -- create_table(:dat_events) NOTICE: CREATE TABLEはシリアル列"dat_events.id"用に暗黙的なシーケンス"dat_events_id_seq"を作成します。 NOTICE: CREATE TABLE / PRIMARY KEYはテーブル"dat_events"に暗黙的なインデックス"dat_events_pkey"を作成します -> 0.0442s == 17 CreateDatEvents: migrated (0.0444s) ===================================== == 18 CreateDatEventusers: migrating ========================================== -- create_table(:dat_eventusers) NOTICE: CREATE TABLEはシリアル列"dat_eventusers.id"用に暗黙的なシーケンス"dat_eventusers_id_seq"を作成します 。 NOTICE: CREATE TABLE / PRIMARY KEYはテーブル"dat_eventusers"に暗黙的なインデックス"dat_eventusers_pkey"を作成 します -> 0.0120s == 18 CreateDatEventusers: migrated (0.0121s) ================================= == 19 CreateDatEventfiles: migrating ========================================== -- create_table(:dat_eventfiles) NOTICE: CREATE TABLEはシリアル列"dat_eventfiles.id"用に暗黙的なシーケンス"dat_eventfiles_id_seq"を作成します。 NOTICE: CREATE TABLE / PRIMARY KEYはテーブル"dat_eventfiles"に暗黙的なインデックス"dat_eventfiles_pkey"を作成 します -> 0.0128s == 19 CreateDatEventfiles: migrated (0.0129s) ================================= == 20 CreateDatMilestones: migrating ========================================== -- create_table(:dat_milestones) NOTICE: CREATE TABLEはシリアル列"dat_milestones.id"用に暗黙的なシーケンス"dat_milestones_id_seq"を作成します 。 NOTICE: CREATE TABLE / PRIMARY KEYはテーブル"dat_milestones"に暗黙的なインデックス"dat_milestones_pkey"を作成 します -> 0.0262s == 20 CreateDatMilestones: migrated (0.0264s) ================================= == 20081003021027 UpdateDatTaskHistoriesReportDate: migrating ================= -- add_column(:dat_taskhistories, :report_date, :date) -> 0.0017s == 20081003021027 UpdateDatTaskHistoriesReportDate: migrated (0.0019s) ======== $ rake db:fixtures:load (in /home/USERNAME/9arrows-0.9.0.2/9arrows) ******************************************************************* * config.breakpoint_server has been deprecated and has no effect. * ******************************************************************* 作成されたデータベースをpsqlで確認する: $ psql -l データベース一覧 名前 | 所有者 | エンコーディング | 照合順序 | Ctype(変換演算子) | アクセス権 ------------------------+----------+------------------+-------------+-------------------+----------------------- ninearrows_development | USERNAME | UTF8 | ja_JP.UTF-8 | ja_JP.UTF-8 | postgres | postgres | UTF8 | ja_JP.UTF-8 | ja_JP.UTF-8 | template0 | postgres | UTF8 | ja_JP.UTF-8 | ja_JP.UTF-8 | =c/postgres : postgres=CTc/postgres template1 | postgres | UTF8 | ja_JP.UTF-8 | ja_JP.UTF-8 | =c/postgres : postgres=CTc/postgres (4 行) 作成されたテーブルとシーケンスの一覧をpsqlで表示する: $ psql ninearrows_development psql (8.4.2) "help" でヘルプを表示します. ninearrows_development=> \d リレーションの一覧 スキーマ | 名前 | 型 | 所有者 ----------+--------------------------+----------+---------- public | dat_eventfiles | table | USERNAME public | dat_eventfiles_id_seq | sequence | USERNAME public | dat_events | table | USERNAME public | dat_events_id_seq | sequence | USERNAME public | dat_eventusers | table | USERNAME public | dat_eventusers_id_seq | sequence | USERNAME public | dat_milestones | table | USERNAME public | dat_milestones_id_seq | sequence | USERNAME public | dat_projectcomps | table | USERNAME public | dat_projectcomps_id_seq | sequence | USERNAME public | dat_projectlogs | table | USERNAME public | dat_projectlogs_id_seq | sequence | USERNAME public | dat_projects | table | USERNAME public | dat_projects_id_seq | sequence | USERNAME public | dat_projectusers | table | USERNAME public | dat_projectusers_id_seq | sequence | USERNAME public | dat_taskcmts | table | USERNAME public | dat_taskcmts_id_seq | sequence | USERNAME public | dat_taskfiles | table | USERNAME public | dat_taskfiles_id_seq | sequence | USERNAME public | dat_taskhistories | table | USERNAME public | dat_taskhistories_id_seq | sequence | USERNAME public | dat_tasks | table | USERNAME public | dat_tasks_id_seq | sequence | USERNAME public | dat_taskusers | table | USERNAME public | dat_taskusers_id_seq | sequence | USERNAME public | mst_compositions | table | USERNAME public | mst_compositions_id_seq | sequence | USERNAME public | mst_messages | table | USERNAME public | mst_messages_id_seq | sequence | USERNAME public | mst_templates | table | USERNAME public | mst_templates_id_seq | sequence | USERNAME public | mst_tpevents | table | USERNAME public | mst_tpevents_id_seq | sequence | USERNAME public | mst_tpmilestones | table | USERNAME public | mst_tpmilestones_id_seq | sequence | USERNAME public | mst_tptasks | table | USERNAME public | mst_tptasks_id_seq | sequence | USERNAME public | mst_users | table | USERNAME public | mst_users_id_seq | sequence | USERNAME public | schema_migrations | table | USERNAME (41 行) ninearrows_development=> \q $[編集] postfix, mailx パッケージのインストール (メールサーバ, メールクライアント) #メールサーバとしてとりあえずPostfixを「ローカルのみ」でインストールする。 (後で設定を変えるなら dpkg-reconfigure postfix で直す) $ sudo aptitude install postfix ... 以下の新規パッケージがインストールされます: postfix 0 個のパッケージを更新、 1 個を新たにインストール、 0 個を削除予定、0 個が更新されていない。 アーカイブ 1,304kB 中 0B を取得する必要があります。 展開後に 3,248kB のディスク領域が新たに消費されます。 ... Postfix Configuration --------------------- あなたの用途に合ったメールサーバ設定形式を選んでください。 設定なし: 現在の設定をそのままにしたいときに選びます。 インターネットサイト: メールは SMTP を使って直接送受信されます。 スマートホスト付きインターネット: メールは SMTP を使って直接、あるいは fetchmail のようなユーティリティ を実行して受信されます。送出メールはスマートホストを使って送信されます。 サテライトシステム: すべてのメールは配送用の「スマートホスト」と呼ばれる別のマシンに送られます。 ローカルのみ: 配送されるのはローカルユーザへのメールのみです。ネットワークはありません。 1. 設定なし 4. サテライトシステム 2. インターネットサイト 5. ローカルのみ 3. スマートホスト付きインターネット メール設定の一般形式: 5 "メール名" はドメイン名が指定されていないときに「すべての」メールアドレスを "修飾" するのに使われるドメイン名 です。これは <root> への/からのメールを含みます: root@example.org で受け付けるようになっていない限り、 root@example.org からのメールをあなたのマシンから送出しないようにしてください。 この名前はほかのプログラムによっても使われます。これは、メールがそこから送出されることになる単一の完全修飾ドメ イン名 (FQDN) にすべきです。 そのため、たとえばローカルホストのメールアドレスが foo@example.jp なら、example.org がここでの適切な値となりま す。 システムメール名: localhost 未選択パッケージ postfix を選択しています。 (データベースを読み込んでいます ... 現在 69210 個のファイルとディレクトリがインストールされています。) ... (.../postfix_2.6.5-3_i386.deb から) postfix を展開しています... ufw のトリガを処理しています ... man-db のトリガを処理しています ... postfix (2.6.5-3) を設定しています ... グループ `postfix' (GID 114) を追加しています... 終了。 システムユーザ `postfix' (UID 105) を追加しています... 新しいユーザ `postfix' (UID 105) をグループ `postfix' に追加しています... ホームディレクトリ `/var/spool/postfix' は作成しませんでした. Creating /etc/postfix/dynamicmaps.cf Adding tcp map entry to /etc/postfix/dynamicmaps.cf グループ `postdrop' (GID 115) を追加しています... 終了。 setting myhostname: ubuntu910s.localdomain setting alias maps setting alias database mailname is not a fully qualified domain name. Not changing /etc/mailname. setting destinations: localhost, ubuntu910s.localdomain, localhost.localdomain, localhost setting relayhost: setting mynetworks: 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128 setting mailbox_size_limit: 0 setting recipient_delimiter: + setting inet_interfaces: loopback-only setting default_transport: error setting relay_transport: error /etc/aliases does not exist, creating it. WARNING: /etc/aliases exists, but does not have a root alias. Postfix is now set up with a default configuration. If you need to make changes, edit /etc/postfix/main.cf (and others) as needed. To view Postfix configuration values, see postconf(1). After modifying main.cf, be sure to run '/etc/init.d/postfix reload'. Running newaliases * Stopping Postfix Mail Transport Agent postfix ...done. * Starting Postfix Mail Transport Agent postfix ...done. ... $ また、動作確認用にメールクライアントをインストールしておく。 $ sudo aptitude install mailx ... 以下の新規パッケージがインストールされます: bsd-mailx{a} mailx 0 個のパッケージを更新、 2 個を新たにインストール、 0 個を削除予定、0 個が更新されていない。 168kB のアーカイブを取得する必要があります。 展開後に 340kB のディスク領域が新たに消費されます。 先に進みますか? [Y/n/?] y ...[編集] 9arrows を Webrick で実行 #スクリプトに実行属性を付ける $ head -1 script/* ==> script/about <== #!/usr/bin/env ruby ==> script/breakpointer <== #!/usr/bin/env ruby ==> script/console <== #!/usr/bin/env ruby ==> script/destroy <== #!/usr/bin/env ruby ==> script/generate <== #!/usr/bin/env ruby ==> script/performance <== head: `script/performance' の読み込みエラー: Is a directory ==> script/plugin <== #!/usr/bin/env ruby ==> script/process <== head: `script/process' の読み込みエラー: Is a directory ==> script/runner <== #!/usr/bin/env ruby ==> script/server <== #!/usr/bin/env ruby $ find script -type f | xargs chmod +x ポート3000番でWebrickを起動して、Webブラウザで http://ホスト名:3000/ にアクセスしてみる: $ ./script/server webrick --port=3000 => Booting WEBrick... ******************************************************************* * config.breakpoint_server has been deprecated and has no effect. * ******************************************************************* => Rails 2.1.0 application started on http://0.0.0.0:3000 => Ctrl-C to shutdown server; call with --help for options [2010-02-22 22:54:30] INFO WEBrick 1.3.1 [2010-02-22 22:54:30] INFO ruby 1.8.7 (2009-06-12) [i486-linux] [2010-02-22 22:54:30] INFO WEBrick::HTTPServer#start: pid=2188 port=3000 192.168.142.1 - - [22/Feb/2010:23:06:01 JST] "GET / HTTP/1.1" 200 1615 ★Webブラウザからアクセスした - -> / 192.168.142.1 - - [22/Feb/2010:23:06:01 JST] "GET /stylesheets/app/login.css?1220883118 HTTP/1.1" 200 1035 http://192.168.142.141:3000/ -> /stylesheets/app/login.css?1220883118 192.168.142.1 - - [22/Feb/2010:23:06:01 JST] "GET /images/btn/btn_login.gif?1220883118 HTTP/1.1" 200 662 http://192.168.142.141:3000/ -> /images/btn/btn_login.gif?1220883118 192.168.142.1 - - [22/Feb/2010:23:06:01 JST] "GET /images/icon_signup_prefix.gif?1220883118 HTTP/1.1" 200 55 http://192.168.142.141:3000/ -> /images/icon_signup_prefix.gif?1220883118 192.168.142.1 - - [22/Feb/2010:23:06:01 JST] "GET /images/login_header.gif HTTP/1.1" 200 8768 http://192.168.142.141:3000/stylesheets/app/login.css?1220883118 -> /images/login_header.gif 192.168.142.1 - - [22/Feb/2010:23:06:02 JST] "GET /favicon.ico HTTP/1.1" 200 0 - -> /favicon.ico 9arrowsにログインしてみる。アカウントはデフォルトの物を使用した(ログインID「9arrows@example.com」、パスワード「9arrows」)。 (参考: 9arrows導入でつまづいた点をメモる « SawanoBlog.) 2010-03-01 補足 9arrows-0.9.0.2/9arrows/script/about を実行してみる: $ ./script/about ******************************************************************* * config.breakpoint_server has been deprecated and has no effect. * ******************************************************************* About your application's environment Ruby version 1.8.7 (i486-linux) RubyGems version 1.3.5 Rails version 2.1.0 Active Record version 2.1.0 Action Pack version 2.1.0 Active Resource version 2.1.0 Action Mailer version 2.1.0 Active Support version 2.1.0 Application root /home/USERNAME/9arrows-0.9.0.2/9arrows Environment development Database adapter postgresql Database schema version 20081003021027[編集] Phusion Passenger の調査 #(2010-02-23/24) Phusion Passenger:
Phusion Passengerのインストール方法:
apache2 パッケージのインストール #(2010-02-24) aptitude install libapache2-mod-passenger で Apacheをインストールすると、aptitude purge/remove libapache2-mod-passenger したときにApacheがアンインストールされる。 これを避けるために、Apache 2.2 を先にインストールする。 $ sudo aptitude install apache2 ... 以下の新規パッケージがインストールされます: apache2 apache2-mpm-worker{a} apache2-utils{a} apache2.2-bin{a} apache2.2-common{a} libapr1{a} libaprutil1{a} libaprutil1-dbd-sqlite3{a} libaprutil1-ldap{a} 0 個のパッケージを更新、 9 個を新たにインストール、 0 個を削除予定、0 個が更新されていない。 2,013kB のアーカイブを取得する必要があります。 展開後に 6,738kB のディスク領域が新たに消費されます。 先に進みますか? [Y/n/?] y ... この時点でApache 2.2が起動しているので、WebブラウザでこのApacheにアクセスして「It works!」と表示されることを確かめておく。 [編集]libapache2-mod-passenger パッケージのインストール #(2010-02-24) Ubuntu 10.04では Passenger のバージョンが 2.2.7 に更新されている ので、 近い将来 (2010-05) に Ubuntu 10.04 にアップグレードすることを想定しつつ、Ubuntu 9.10 の passenger を用いることにする。 Ubuntu 9.10のパッケージを調べる: $ aptitude search passenger p libapache2-mod-passenger - Rails and Rack support for Apache2 p passenger-doc - Rails and Rack support for Apache2 - Documentation $ aptitude show libapache2-mod-passenger パッケージ: libapache2-mod-passenger 新規: yes 状態: インストールされていません バージョン: 2.0.3-0ubuntu2 優先度: 任意 セクション: universe/web メンテナ: Ubuntu MOTU Developers <ubuntu-motu@lists.ubuntu.com> 展開サイズ: 995k 依存: libapr1, libc6 (>= 2.4), libgcc1 (>= 1:4.1.1), libruby1.8 (>= 1.8.7.72), libstdc++6 (>= 4.1.1), apache2-mpm-worker, ruby, rubygems1.8 提案: python, rails, passenger-doc 説明: Rails and Rack support for Apache2 Phusion Passenger ? a.k.a. mod_rails or mod_rack ? makes deployment of Ruby web applications, such as those built on the revolutionary Ruby on Rails web framework, a breeze. ホームページ: http://www.modrails.com/ libapache2-mod-passenger パッケージをインストールする: $ sudo aptitude install libapache2-mod-passenger ... 以下の新規パッケージがインストールされます: libapache2-mod-passenger 0 個のパッケージを更新、 1 個を新たにインストール、 0 個を削除予定、0 個が更新されていない。 241kB のアーカイブを取得する必要があります。 展開後に 995kB のディスク領域が新たに消費されます。 ... apache2/mods-available/passenger.conf を追加登録中 apache2/mods-available/passenger.load を追加登録中 apache2/mods-enabled/passenger.conf を追加登録中 apache2/mods-enabled/passenger.load を追加登録中 passenger_version.txt を追加登録中 ... このパッケージが持つ設定、コマンド、文書を調べる: $ dpkg -L libapache2-mod-passenger | grep etc/ /etc/passenger_version.txt /etc/apache2 /etc/apache2/mods-available /etc/apache2/mods-available/passenger.conf /etc/apache2/mods-available/passenger.load $ dpkg -L libapache2-mod-passenger | grep bin/ /usr/bin/passenger-config /usr/bin/passenger-stress-test /usr/sbin/passenger-memory-stats /usr/sbin/passenger-make-enterprisey /usr/sbin/passenger-status $ dpkg -L libapache2-mod-passenger | grep doc/ /usr/share/doc/libapache2-mod-passenger /usr/share/doc/libapache2-mod-passenger/README /usr/share/doc/libapache2-mod-passenger/README.Debian /usr/share/doc/libapache2-mod-passenger/copyright /usr/share/doc/libapache2-mod-passenger/changelog.Debian.gz マニュアルを読む。 $ less /usr/share/doc/libapache2-mod-passenger/README.Debian 「No need to run any installers or other programs. The package does all that for you.」だそうだ。 つまり「gem install passenger」「passenger-install-apache2-module」の実行は不要。 passenger の設定が読み込まれているかどうか、確認する: $ cd /etc/apache2/ $ ls mods-enabled/pas* mods-enabled/passenger.conf@ mods-enabled/passenger.load@ $ ls mods-available/pas* mods-available/passenger.conf mods-available/passenger.load $ sudo grep -i passenger /var/log/apache2/error.log [Tue Feb 23 21:06:08 2010] [notice] Apache/2.2.12 (Ubuntu) Phusion_Passenger/2.0.3 configured -- resuming normal operations 今回使うPassengerは少し古いので、現状のマニュアルと相違点があるかも知れない。そこで、passenger-doc パッケージでルもインストールしておく: $ sudo aptitude install passenger-doc ... 以下の新規パッケージがインストールされます: passenger-doc 0 個のパッケージを更新、 1 個を新たにインストール、 0 個を削除予定、0 個が更新されていない。 527kB のアーカイブを取得する必要があります。 展開後に 2,638kB のディスク領域が新たに消費されます。 ... $ dpkg -L passenger-doc /. /usr /usr/share /usr/share/doc /usr/share/doc/passenger-doc /usr/share/doc/passenger-doc/README /usr/share/doc/passenger-doc/DEVELOPERS.TXT /usr/share/doc/passenger-doc/passenger /usr/share/doc/passenger-doc/passenger/Architectural overview.txt.gz ... /usr/share/doc/passenger-doc/passenger/Security of user switching support.txt.gz /usr/share/doc/passenger-doc/copyright /usr/share/doc/passenger-doc/changelog.Debian.gz[編集] 9arrows を Apache + libapache2-mod-passenger で実行する (トップディレクトリで動作させる) #(2010-02-24/25) passenger の設定内容を確認する: $ cd /etc/apache2 $ cat mods-available/passenger.load LoadModule passenger_module /usr/lib/apache2/modules/mod_passenger.so $ cat mods-available/passenger.conf <IfModule mod_passenger.c> PassengerRoot /usr PassengerRuby /usr/bin/ruby </IfModule> 9arrows を運用時の場所 (/var/rails/9arrows に決めた) にコピーする: $ sudo mkdir -p /var/rails/ $ cp -a 9arrows-0.9.0.2/9arrows /var/rails/ /var/rails/9arrows/config/database.yml を修正する(productionを修正): $ diff -u 9arrows-0.9.0.2/9arrows/config/database.yml /var/rails/9arrows/config/database.yml --- 9arrows-0.9.0.2/9arrows/config/database.yml 2008-09-08 21:59:34.000000000 +0900 +++ /var/rails/9arrows/config/database.yml 2010-02-26 20:39:01.912871883 +0900 @@ -30,7 +30,7 @@ production: adapter: postgresql - database: 9arrows_production - username: postgres - password: postgres + database: ninearrows_production + username: www-data + password: password host: localhost /var/rails/9arrowsのパーミッションと所有者を修正する:
$ sudo find /var/rails/9arrows -type f | sudo xargs chmod 600 $ sudo find /var/rails/9arrows -type d | sudo xargs chmod 700 $ sudo find /var/rails/9arrwos/script -type f | sudo xargs chmod 700 $ sudo chown -R www-data:www-data /var/rails/9arrows www-dataでPostgreSQLを使えるようにする: $ sudo -u postgres -i postgres@ubuntu910s:~$ createuser --no-superuser --no-createrole --createdb --pwprompt www-data 新しいロールのパスワード: もう一度入力してください: postgres@ubuntu910s:~$ logout $ sudo -u www-data psql -h localhost template1 パスワード: psql (8.4.2) SSL 接続 (暗号化方式: DHE-RSA-AES256-SHA, ビット長: 256) "help" でヘルプを表示します. template1=> \q 9arrows/public/.htaccess の中身を確認する: $ cat public/.htaccess # General Apache options AddHandler fastcgi-script .fcgi AddHandler cgi-script .cgi Options +FollowSymLinks +ExecCGI # If you don't want Rails to look in certain directories, # use the following rewrite rules so that Apache won't rewrite certain requests # # Example: # RewriteCond %{REQUEST_URI} ^/notrails.* # RewriteRule .* - [L] # Redirect all requests not available on the filesystem to Rails # By default the cgi dispatcher is used which is very slow # # For better performance replace the dispatcher with the fastcgi one # # Example: # RewriteRule ^(.*)$ dispatch.fcgi [QSA,L] RewriteEngine On # If your Rails application is accessed via an Alias directive, # then you MUST also set the RewriteBase in this htaccess file. # # Example: # Alias /myrailsapp /path/to/myrailsapp/public # RewriteBase /myrailsapp RewriteRule ^$ index.html [QSA] RewriteRule ^([^.]+)$ $1.html [QSA] RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^(.*)$ dispatch.cgi [QSA,L] # In case Rails experiences terminal errors # Instead of displaying this message you can supply a file here which will be rendered instead # # Example: # ErrorDocument 500 /500.html ErrorDocument 500 "<h2>Application error</h2>Rails application failed to start properly" 9arrows/public/.htaccess で mod_rewrite が使われているので、このモジュールを有効にする: $ sudo a2enmod rewrite Enabling module rewrite. Run '/etc/init.d/apache2 restart' to activate new configuration! $ sudo apache2ctl configtest Syntax OK $ sudo /etc/init.d/apache2 restart VistualHost を使うために、/etc/hosts にエントリ (IPアドレス 9arrows) を足しておく。 /etc/apache2/sites-available/9arrows に、Apache + Passenger で9arrowsを動かすための設定を用意する: <VirtualHost 9arrows:80> ServerName 9arrows DocumentRoot /var/rails/9arrows/public RailsBaseURI / <Directory /var/rails/9arrows/public> Allow from all Options -MultiViews </Directory> </VirtualHost> 設定をApacheに追加して、文法を検査する: $ sudo a2ensite 9arrows $ sudo apache2ctl configtest (オプション)/etc/apache2/sites-available/9arrows を etckeeper (+Mercurial) の管理下にする: $ sudo hg commit -m "add 9arrows settings (for passenger)" /etc/apache2/sites-available/9arrows www-dataユーザで、db:create, db:migrate, db:fixtures:load を実行する: $ cd /var/rails/9arrows $ sudo -u www-data rake RAILS_ENV=production db:create $ sudo -u www-data rake RAILS_ENV=production db:migrate $ sudo -u www-data rake RAILS_ENV=production db:fixtures:load Apacheを再起動して、9arrowsの設定を読み込ませる: $ sudo /etc/init.d/apache2 restart ... Webクライアント側の/etc/hosts にも、9arrowsを動作させるPCのIPアドレスとホスト名(9arrows)を足して、Webアクセス http://9arrows/ してみる。 → ログイン画面が正常に表示された。CSSもちゃんと読み込まれる。 [編集]9arrows を Apache + libapache2-mod-passenger で実行する (サブディレクトリで動作させる) #(2010-02-25/26) Passengerでは、標準的な設定では「http://9arrows.hostname.example.jp/」のようなURLで動作させる。 でも、これでは SSLを使いたいときに、サイトごとに別の証明書か、あるいはワイルドカード証明書が必要になるので、避けたい。 よって、「http://hostname.example.jp/9arrows」の用のサブディレクトリで動作させてみる。 最初に、以下のようにしたところ、/var/www/9arrows の中身のファイルが一覧表示されてしまう。また、log/production.logが生成されないので、9arrows自体にアクセスすらされていないようだ。 $ sudo ln -s /var/rails/9arrows/public /var/www/9arrows $ (/etc/apache2/sites-available/passenger を以下のように修正) $ sudo apache2ctl configtest Syntax OK $ (9arrows/public/.htaccess はCGI/FastCGI用の設定っぽいので、リネームして無効化した) $ sudo /etc/init.d/apache2 restart ... /etc/apache2/sites-available/passenger の内容 (うまくいかない: ディレクトリの中身が表示されてしまう): <VirtualHost *:80> RailsBaseURI /9arrows <Directory /var/www/9arrows> Options -MultiViews </Directory> </VirtualHost> そこで、「VirtualHost *:80」を消したところ、うまく動いた。(‥‥なんで?) /etc/apache2/sites-available/passenger の内容(うまくいった): RailsBaseURI /9arrows <Directory /var/www/9arrows> Options -MultiViews </Directory> /var/rails/9arrows/log/production.log の内容。警告が出てる: ... [Fri Feb 26 20:50:27 2010] [notice] Apache/2.2.12 (Ubuntu) Phusion_Passenger/2.0.3 configured -- resuming norm al operations [Fri Feb 26 20:50:55 2010] [error] [client 192.168.65.1] File does not exist: /var/www/favicon.ico [Fri Feb 26 20:50:55 2010] [error] [client 192.168.65.1] File does not exist: /var/www/favicon.ico [Fri Feb 26 20:50:58 2010] [error] [client 192.168.65.1] File does not exist: /var/www/favicon.ico /usr/lib/ruby/1.8/passenger/application.rb:58:Warning: Gem::SourceIndex#search support for String patterns is deprecated, use #find_name ... Webブラウザで9arrowsのログイン画面をリロード (ctrl-r) を数回実行すると、こんな感じ (htopパッケージをインストールしてhtopを実行→tでツリー表示): CPU[#* 1.3%] Tasks: 110 total, 2 running Mem[|||||||||||||||||####***************187/497MB] Load average: 0.00 0.00 0.00 Swp[| 0/894MB] Uptime: 02:44:50 PID USER PRI NI VIRT RES SHR S CPU% MEM% TIME+ Command 1 root 20 0 2524 1224 1120 S 0.0 0.2 0:01.53 /sbin/init 9420 www-data 20 0 36672 22860 2644 S 0.0 4.5 0:03.48 `- Rails: /var/rails/9arrows 9418 www-data 20 0 36672 22860 2644 S 0.0 4.5 0:01.13 `- Rails: /var/rails/9arrows 9414 www-data 20 0 36672 22856 2640 S 0.0 4.5 0:00.14 `- Rails: /var/rails/9arrows 9411 www-data 20 0 36672 22856 2640 S 0.0 4.5 0:00.14 `- Rails: /var/rails/9arrows 9409 www-data 20 0 36672 22856 2640 S 0.0 4.5 0:00.18 `- Rails: /var/rails/9arrows 9176 www-data 20 0 36672 22860 2644 S 0.0 4.5 0:00.42 `- Rails: /var/rails/9arrows 7955 root 20 0 6936 2840 1508 S 0.0 0.6 0:00.22 `- /usr/sbin/apache2 -k start 7963 www-data 20 0 223M 3716 1604 S 0.0 0.7 0:00.00 | `- /usr/sbin/apache2 -k start 8019 www-data 20 0 223M 3716 1604 S 0.0 0.7 0:00.00 | | `- /usr/sbin/apache2 -k start 8018 www-data 20 0 223M 3716 1604 S 0.0 0.7 0:00.00 | | `- /usr/sbin/apache2 -k start 8017 www-data 20 0 223M 3716 1604 S 0.0 0.7 0:00.00 | | `- /usr/sbin/apache2 -k start 8016 www-data 20 0 223M 3716 1604 S 0.0 0.7 0:00.00 | | `- /usr/sbin/apache2 -k start ... (下にスクロールしてから、右にスクロール) S 0.0 0.7 0:00.00 | | `- /usr/sbin/apache2 -k start S 0.0 0.3 0:00.00 | `- /usr/lib/passenger/ApplicationPoolServerExecutable 0 /usr/lib/passenger/passenge S 0.0 0.3 0:00.02 | | `- /usr/lib/passenger/ApplicationPoolServerExecutable 0 /usr/lib/passenger/pass S 0.0 0.3 0:00.02 | | `- /usr/lib/passenger/ApplicationPoolServerExecutable 0 /usr/lib/passenger/pass S 0.0 0.3 0:00.00 | | `- /usr/lib/passenger/ApplicationPoolServerExecutable 0 /usr/lib/passenger/pass S 0.0 0.3 0:00.00 | | `- /usr/lib/passenger/ApplicationPoolServerExecutable 0 /usr/lib/passenger/pass S 0.0 1.2 0:00.09 | | `- Passenger spawn server S 0.0 4.4 0:00.88 | | `- Passenger FrameworkSpawner: 2.1.0 S 0.0 4.3 0:00.28 | | | `- Passenger ApplicationSpawner: /var/rails/9arrows R 0.0 1.2 0:03.00 | | `- Passenger spawn server S 0.0 0.4 0:00.00 | `- /usr/sbin/apache2 -k start S 0.0 1.1 0:00.56 `- /usr/lib/postgresql/8.4/bin/postgres -D /var/lib/postgresql/8.4/main -c config_file= S 0.0 1.2 0:00.34 | `- postgres: www-data ninearrows_production ::1(50950) idle S 0.0 1.2 0:00.14 | `- postgres: www-data ninearrows_production ::1(50949) idle S 0.0 1.2 0:00.02 | `- /usr/lib/postgresql/8.4/bin/postgres -D /var/lib/postgresql/8.4/main -c config_f S 0.0 1.2 0:00.04 | `- postgres: www-data ninearrows_production ::1(50947) idle S 0.0 1.2 0:00.02 | `- postgres: www-data ninearrows_production ::1(50946) idle S 0.0 1.2 0:00.04 | `- postgres: www-data ninearrows_production ::1(50944) idle S 0.0 0.2 0:00.22 | `- postgres: stats collector process S 0.0 0.3 0:00.24 | `- postgres: autovacuum launcher process S 0.0 0.3 0:00.70 | `- postgres: wal writer process S 0.0 0.7 0:00.91 | `- postgres: writer process S 0.0 0.3 0:00.02 `- /usr/lib/postfix/master S 0.0 0.3 0:00.00 | `- pickup -l -t fifo -u -c 9arrowsにログインしてみる。アカウントはデフォルトの物を使用した(ログインID「9arrows@example.com」、パスワード「9arrows」)。 (参考: 9arrows導入でつまづいた点をメモる « SawanoBlog.) [編集]SQLite を用いる場合 (注意: Webrickしか試してない) #(2010-03-04) PostgreSQL の代わりに SQLite を用いてみる。 Ubuntu Server 9.10 (32bit) のインストール直後から。 Ubuntuのバージョンを調べる: $ lsb_release -a Ubuntuパッケージの更新〜再起動(必要なら): $ sudo aptitude update && sudo aptitude -y safe-upgrade && sudo aptitude autoclean $ sudo shutdown -r now 9arrowsのソースコードを入手: $ wget http://9arrows.com/download/9arrows-all-0.9.0.2.tar.gz Ubuntuパッケージをインストールする: sudo aptitude -y install build-essential ruby ruby-dev libopenssl-ruby rubygems postfix mailx gemでrailsなどをインストールする: $ sudo gem install rails --version '= 2.1.0' $ sudo ln -s /var/lib/gems/1.8/bin/* /usr/local/bin/ gem で sqlite3-ruby をインストールする →失敗: $ sudo gem install sqlite3-ruby Building native extensions. This could take a while... ERROR: Error installing sqlite3-ruby: ERROR: Failed to build gem native extension. /usr/bin/ruby1.8 extconf.rb checking for fdatasync() in -lrt... yes checking for sqlite3.h... no *** extconf.rb failed *** Could not create Makefile due to some reason, probably lack of necessary libraries and/or headers. Check the mkmf.log file for more details. You may need configuration options. Provided configuration options: --with-opt-dir --without-opt-dir --with-opt-include --without-opt-include=${opt-dir}/include --with-opt-lib --without-opt-lib=${opt-dir}/lib --with-make-prog --without-make-prog --srcdir=. --curdir --ruby=/usr/bin/ruby1.8 --with-sqlite3-dir --without-sqlite3-dir --with-sqlite3-include --without-sqlite3-include=${sqlite3-dir}/include --with-sqlite3-lib --without-sqlite3-lib=${sqlite3-dir}/lib --with-rtlib --without-rtlib Gem files will remain installed in /var/lib/gems/1.8/gems/sqlite3-ruby-1.2.5 for inspection. Results logged to /var/lib/gems/1.8/gems/sqlite3-ruby-1.2.5/ext/sqlite3_api/gem_make.out SQLite3 のライブラリの開発用パッケージを検索してインストールし、ヘッダファイル sqlite3.h が存在することを確認する: $ aptitude search libsqlite | grep dev v libsqlite-dev - p libsqlite0-dev - SQLite development files p libsqlite3-dev - SQLite 3 development files p libsqlite3-ocaml-dev - Embeddable SQL Database for OCaml Programs $ sudo aptitude -y install libsqlite3-dev ... 以下の新規パッケージがインストールされます: libsqlite3-dev 以下のパッケージは『削除』されます: bsd-mailx{u} libdb4.6{u} mailx{u} 0 個のパッケージを更新、 1 個を新たにインストール、 3 個を削除予定、0 個が更新されていない。 369kB のアーカイブを取得する必要があります。 展開後に 766kB のディスク領域が解放されます。 ... $ sudo aptitude -y install mailx $ dpkg -L libsqlite3-dev | grep sqlite3.h /usr/include/sqlite3.h 再度、gem で sqlite3-ruby をインストールする →成功(なにか警告っぽい物が表示されてるけど): $ sudo gem install sqlite3-ruby Building native extensions. This could take a while... Successfully installed sqlite3-ruby-1.2.5 1 gem installed Installing ri documentation for sqlite3-ruby-1.2.5... No definition for _wrap_new_CallbackData No definition for _wrap_CallbackData_proc_set No definition for _wrap_CallbackData_proc_get No definition for _wrap_CallbackData_proc2_set No definition for _wrap_CallbackData_proc2_get No definition for _wrap_CallbackData_data_set No definition for _wrap_CallbackData_data_get No definition for _wrap_sqlite3_libversion No definition for _wrap_sqlite3_close No definition for _wrap_sqlite3_last_insert_rowid No definition for _wrap_sqlite3_changes No definition for _wrap_sqlite3_total_changes No definition for _wrap_sqlite3_interrupt No definition for _wrap_sqlite3_complete No definition for _wrap_sqlite3_complete16 No definition for _wrap_sqlite3_busy_handler No definition for _wrap_sqlite3_busy_timeout No definition for _wrap_sqlite3_set_authorizer No definition for _wrap_sqlite3_trace No definition for _wrap_sqlite3_open No definition for _wrap_sqlite3_open16 No definition for _wrap_sqlite3_errcode No definition for _wrap_sqlite3_errmsg No definition for _wrap_sqlite3_errmsg16 No definition for _wrap_sqlite3_prepare No definition for _wrap_sqlite3_prepare16 No definition for _wrap_sqlite3_bind_blob No definition for _wrap_sqlite3_bind_double No definition for _wrap_sqlite3_bind_int No definition for _wrap_sqlite3_bind_int64 No definition for _wrap_sqlite3_bind_null No definition for _wrap_sqlite3_bind_text No definition for _wrap_sqlite3_bind_text16 No definition for _wrap_sqlite3_bind_parameter_count No definition for _wrap_sqlite3_bind_parameter_name No definition for _wrap_sqlite3_bind_parameter_index No definition for _wrap_sqlite3_column_count No definition for _wrap_sqlite3_column_name No definition for _wrap_sqlite3_column_name16 No definition for _wrap_sqlite3_column_decltype No definition for _wrap_sqlite3_column_decltype16 No definition for _wrap_sqlite3_step No definition for _wrap_sqlite3_data_count No definition for _wrap_sqlite3_column_blob No definition for _wrap_sqlite3_column_bytes No definition for _wrap_sqlite3_column_bytes16 No definition for _wrap_sqlite3_column_double No definition for _wrap_sqlite3_column_int No definition for _wrap_sqlite3_column_int64 No definition for _wrap_sqlite3_column_text No definition for _wrap_sqlite3_column_text16 No definition for _wrap_sqlite3_column_type No definition for _wrap_sqlite3_finalize No definition for _wrap_sqlite3_reset No definition for _wrap_sqlite3_create_function No definition for _wrap_sqlite3_create_function16 No definition for _wrap_sqlite3_aggregate_count No definition for _wrap_sqlite3_value_blob No definition for _wrap_sqlite3_value_bytes No definition for _wrap_sqlite3_value_bytes16 No definition for _wrap_sqlite3_value_double No definition for _wrap_sqlite3_value_int No definition for _wrap_sqlite3_value_int64 No definition for _wrap_sqlite3_value_text No definition for _wrap_sqlite3_value_text16 No definition for _wrap_sqlite3_value_text16le No definition for _wrap_sqlite3_value_text16be No definition for _wrap_sqlite3_value_type No definition for _wrap_sqlite3_result_blob No definition for _wrap_sqlite3_result_double No definition for _wrap_sqlite3_result_error No definition for _wrap_sqlite3_result_error16 No definition for _wrap_sqlite3_result_int No definition for _wrap_sqlite3_result_int64 No definition for _wrap_sqlite3_result_text No definition for _wrap_sqlite3_result_text16 No definition for _wrap_sqlite3_result_text16le No definition for _wrap_sqlite3_result_text16be No definition for _wrap_sqlite3_result_value No definition for _wrap_sqlite3_aggregate_context Installing RDoc documentation for sqlite3-ruby-1.2.5... No definition for _wrap_new_CallbackData No definition for _wrap_CallbackData_proc_set No definition for _wrap_CallbackData_proc_get No definition for _wrap_CallbackData_proc2_set No definition for _wrap_CallbackData_proc2_get No definition for _wrap_CallbackData_data_set No definition for _wrap_CallbackData_data_get No definition for _wrap_sqlite3_libversion No definition for _wrap_sqlite3_close No definition for _wrap_sqlite3_last_insert_rowid No definition for _wrap_sqlite3_changes No definition for _wrap_sqlite3_total_changes No definition for _wrap_sqlite3_interrupt No definition for _wrap_sqlite3_complete No definition for _wrap_sqlite3_complete16 No definition for _wrap_sqlite3_busy_handler No definition for _wrap_sqlite3_busy_timeout No definition for _wrap_sqlite3_set_authorizer No definition for _wrap_sqlite3_trace No definition for _wrap_sqlite3_open No definition for _wrap_sqlite3_open16 No definition for _wrap_sqlite3_errcode No definition for _wrap_sqlite3_errmsg No definition for _wrap_sqlite3_errmsg16 No definition for _wrap_sqlite3_prepare No definition for _wrap_sqlite3_prepare16 No definition for _wrap_sqlite3_bind_blob No definition for _wrap_sqlite3_bind_double No definition for _wrap_sqlite3_bind_int No definition for _wrap_sqlite3_bind_int64 No definition for _wrap_sqlite3_bind_null No definition for _wrap_sqlite3_bind_text No definition for _wrap_sqlite3_bind_text16 No definition for _wrap_sqlite3_bind_parameter_count No definition for _wrap_sqlite3_bind_parameter_name No definition for _wrap_sqlite3_bind_parameter_index No definition for _wrap_sqlite3_column_count No definition for _wrap_sqlite3_column_name No definition for _wrap_sqlite3_column_name16 No definition for _wrap_sqlite3_column_decltype No definition for _wrap_sqlite3_column_decltype16 No definition for _wrap_sqlite3_step No definition for _wrap_sqlite3_data_count No definition for _wrap_sqlite3_column_blob No definition for _wrap_sqlite3_column_bytes No definition for _wrap_sqlite3_column_bytes16 No definition for _wrap_sqlite3_column_double No definition for _wrap_sqlite3_column_int No definition for _wrap_sqlite3_column_int64 No definition for _wrap_sqlite3_column_text No definition for _wrap_sqlite3_column_text16 No definition for _wrap_sqlite3_column_type No definition for _wrap_sqlite3_finalize No definition for _wrap_sqlite3_reset No definition for _wrap_sqlite3_create_function No definition for _wrap_sqlite3_create_function16 No definition for _wrap_sqlite3_aggregate_count No definition for _wrap_sqlite3_value_blob No definition for _wrap_sqlite3_value_bytes No definition for _wrap_sqlite3_value_bytes16 No definition for _wrap_sqlite3_value_double No definition for _wrap_sqlite3_value_int No definition for _wrap_sqlite3_value_int64 No definition for _wrap_sqlite3_value_text No definition for _wrap_sqlite3_value_text16 No definition for _wrap_sqlite3_value_text16le No definition for _wrap_sqlite3_value_text16be No definition for _wrap_sqlite3_value_type No definition for _wrap_sqlite3_result_blob No definition for _wrap_sqlite3_result_double No definition for _wrap_sqlite3_result_error No definition for _wrap_sqlite3_result_error16 No definition for _wrap_sqlite3_result_int No definition for _wrap_sqlite3_result_int64 No definition for _wrap_sqlite3_result_text No definition for _wrap_sqlite3_result_text16 No definition for _wrap_sqlite3_result_text16le No definition for _wrap_sqlite3_result_text16be No definition for _wrap_sqlite3_result_value No definition for _wrap_sqlite3_aggregate_context $ gem list *** LOCAL GEMS *** actionmailer (2.1.0) actionpack (2.1.0) activerecord (2.1.0) activeresource (2.1.0) activesupport (2.1.0) rails (2.1.0) rake (0.8.7) sqlite3-ruby (1.2.5) ★ config/database.ymlを修正: $ cd 9arrows-0.9.0.2/9arrows $ emacs config/database.yml
diff -r dff1eebb4085 9arrows/config/database.yml --- a/9arrows/config/database.yml Thu Mar 04 21:19:34 2010 +0900 +++ b/9arrows/config/database.yml Thu Mar 04 21:27:10 2010 +0900 @@ -12,11 +12,8 @@ # And be sure to use new-style password hashing: # http://dev.mysql.com/doc/refman/5.0/en/old-client.html development: - adapter: postgresql - database: 9arrows_development - username: postgres - password: postgres - host: localhost + adapter: sqlite3 + database: db/ninearrows_development.db # Warning: The database defined as 'test' will be erased and # re-generated from your development database when you run 'rake'. DBを初期化する: $ rake db:create (in /home/USERNAME/9arrows-0.9.0.2/9arrows) ******************************************************************* * config.breakpoint_server has been deprecated and has no effect. * ******************************************************************* db/ninearrows_development.db already exists $ rake db:migrate (in /home/USERNAME/9arrows-0.9.0.2/9arrows) ******************************************************************* * config.breakpoint_server has been deprecated and has no effect. * ******************************************************************* == 1 CreateMstUsers: migrating ================================================ -- create_table(:mst_users) -> 0.0109s == 1 CreateMstUsers: migrated (0.0110s) ======================================= == 2 CreateMstMessages: migrating ============================================= -- create_table(:mst_messages) -> 0.0081s == 2 CreateMstMessages: migrated (0.0082s) ==================================== == 3 CreateMstTemplates: migrating ============================================ -- create_table(:mst_templates) -> 0.0067s == 3 CreateMstTemplates: migrated (0.0068s) =================================== == 4 CreateMstCompositions: migrating ========================================= -- create_table(:mst_compositions) -> 0.0062s == 4 CreateMstCompositions: migrated (0.0063s) ================================ == 5 CreateMstTptasks: migrating ============================================== -- create_table(:mst_tptasks) -> 0.0064s == 5 CreateMstTptasks: migrated (0.0065s) ===================================== == 6 CreateMstTpevents: migrating ============================================= -- create_table(:mst_tpevents) -> 0.0058s == 6 CreateMstTpevents: migrated (0.0059s) ==================================== == 7 CreateMstTpmilestones: migrating ========================================= -- create_table(:mst_tpmilestones) -> 0.0058s == 7 CreateMstTpmilestones: migrated (0.0059s) ================================ == 8 CreateDatProjects: migrating ============================================= -- create_table(:dat_projects) -> 0.0091s == 8 CreateDatProjects: migrated (0.0092s) ==================================== == 9 CreateDatProjectusers: migrating ========================================= -- create_table(:dat_projectusers) -> 0.0074s == 9 CreateDatProjectusers: migrated (0.0075s) ================================ == 10 CreateDatProjectcomps: migrating ======================================== -- create_table(:dat_projectcomps) -> 0.0066s == 10 CreateDatProjectcomps: migrated (0.0066s) =============================== == 11 CreateDatProjectlogs: migrating ========================================= -- create_table(:dat_projectlogs) -> 0.0071s == 11 CreateDatProjectlogs: migrated (0.0072s) ================================ == 12 CreateDatTasks: migrating =============================================== -- create_table(:dat_tasks) -> 0.0089s == 12 CreateDatTasks: migrated (0.0090s) ====================================== == 13 CreateDatTaskusers: migrating =========================================== -- create_table(:dat_taskusers) -> 0.0079s == 13 CreateDatTaskusers: migrated (0.0080s) ================================== == 14 CreateDatTaskfiles: migrating =========================================== -- create_table(:dat_taskfiles) -> 0.0078s == 14 CreateDatTaskfiles: migrated (0.0079s) ================================== == 15 CreateDatTaskhistories: migrating ======================================= -- create_table(:dat_taskhistories) -> 0.0075s == 15 CreateDatTaskhistories: migrated (0.0076s) ============================== == 16 CreateDatTaskcmts: migrating ============================================ -- create_table(:dat_taskcmts) -> 0.0084s == 16 CreateDatTaskcmts: migrated (0.0086s) =================================== == 17 CreateDatEvents: migrating ============================================== -- create_table(:dat_events) -> 0.0091s == 17 CreateDatEvents: migrated (0.0092s) ===================================== == 18 CreateDatEventusers: migrating ========================================== -- create_table(:dat_eventusers) -> 0.0112s == 18 CreateDatEventusers: migrated (0.0113s) ================================= == 19 CreateDatEventfiles: migrating ========================================== -- create_table(:dat_eventfiles) -> 0.0083s == 19 CreateDatEventfiles: migrated (0.0084s) ================================= == 20 CreateDatMilestones: migrating ========================================== -- create_table(:dat_milestones) -> 0.0082s == 20 CreateDatMilestones: migrated (0.0083s) ================================= == 20081003021027 UpdateDatTaskHistoriesReportDate: migrating ================= -- add_column(:dat_taskhistories, :report_date, :date) -> 0.0432s == 20081003021027 UpdateDatTaskHistoriesReportDate: migrated (0.0432s) ======== $ rake db:fixtures:load (in /home/USERNAME/9arrows-0.9.0.2/9arrows) ******************************************************************* * config.breakpoint_server has been deprecated and has no effect. * ******************************************************************* 実行権限を付与〜9arrowsをWebrickで起動して動作確認: $ find script -type f | xargs chmod +x $ ./script/server webrick 動作確認。Webブラウザで http://ホスト名:3000/ にアクセスして、ログインする ログインID「9arrows@example.com」、パスワード「9arrows」 [編集]PostgreSQL 8.4 スロークエリの分析 (未完) #(2010-03-12) データベース周りのチューニングのために、 スロークエリの分析 ― Let's Postgres で紹介されている contrib/pg_stat_statements を使ってみる (PostgreSQL 8.4 以上)
postgresql-contrib パッケージをインストールする: $ aptitude search postgresql | grep contrib p postgresql-contrib - additional facilities for PostgreSQL (supp p postgresql-contrib-8.3 - additional facilities for PostgreSQL p postgresql-contrib-8.4 - additional facilities for PostgreSQL $ sudo aptitude install postgresql-contrib ... 以下の新規パッケージがインストールされます: libossp-uuid15{a} libxslt1.1{a} postgresql-contrib postgresql-contrib-8.4{a} 0 個のパッケージを更新、 4 個を新たにインストール、 0 個を削除予定、0 個が更新されていない。 659kB のアーカイブを取得する必要があります。 展開後に 2,286kB のディスク領域が新たに消費されます。 先に進みますか? [Y/n/?] ... 動作確認のために、postgres ユーザで、デフォルトのデータベースに contrib/pg_stat_statements をインストールする: $ dpkg -L postgresql-contrib-8.4 | grep pg_stat /usr/share/postgresql/8.4/contrib/pg_stat_statements.sql /usr/share/postgresql/8.4/contrib/uninstall_pg_stat_statements.sql /usr/lib/postgresql/8.4/lib/pg_stat_statements.so $ sudo -u postgres psql --file /usr/share/postgresql/8.4/contrib/pg_stat_statements.sql SET CREATE FUNCTION CREATE FUNCTION CREATE VIEW GRANT REVOKE $ ちなみに、再度実行すると次のエラーになる。また、アンインストールするには uninstall_pg_stat_statements.sql を実行すればよいようだ: $ sudo -u postgres psql --file /usr/share/postgresql/8.4/contrib/pg_stat_statements.sql SET psql:/usr/share/postgresql/8.4/contrib/pg_stat_statements.sql:10: ERROR: 同じ引数型を持つ関数"pg_stat_stateme nts_reset"はすでに存在します psql:/usr/share/postgresql/8.4/contrib/pg_stat_statements.sql:22: ERROR: 同じ引数型を持つ関数"pg_stat_stateme nts"はすでに存在します psql:/usr/share/postgresql/8.4/contrib/pg_stat_statements.sql:26: ERROR: リレーション"pg_stat_statements"はす でに存在します GRANT REVOKE $ sudo -u postgres psql --file /usr/share/postgresql/8.4/contrib/uninstall_pg_stat_statements.sql SET DROP VIEW DROP FUNCTION DROP FUNCTION $ sudo -u postgres psql --file /usr/share/postgresql/8.4/contrib/uninstall_pg_stat_statements.sql SET psql:/usr/share/postgresql/8.4/contrib/uninstall_pg_stat_statements.sql:6: ERROR: ビュー"pg_stat_statements" は存在しません psql:/usr/share/postgresql/8.4/contrib/uninstall_pg_stat_statements.sql:7: ERROR: 関数pg_stat_statements()は 存在しません psql:/usr/share/postgresql/8.4/contrib/uninstall_pg_stat_statements.sql:8: ERROR: 関数pg_stat_statements_rese t()は存在しません postgresql.conf を修正する: $ sudo emacs /etc/postgresql/8.4/main/postgresql.conf $ sudo hg diff /etc/postgresql/8.4/main/postgresql.conf diff -r 498da6e3f8d7 postgresql/8.4/main/postgresql.conf --- a/postgresql/8.4/main/postgresql.conf Fri Feb 26 22:46:08 2010 +0900 +++ b/postgresql/8.4/main/postgresql.conf Fri Mar 12 23:16:08 2010 +0900 @@ -120,7 +120,7 @@ #max_files_per_process = 1000 # min 25 # (change requires restart) -#shared_preload_libraries = '' # (change requires restart) +shared_preload_libraries = 'pg_stat_statements' # (change requires restart) # - Cost-Based Vacuum Delay - @@ -497,4 +497,4 @@ # CUSTOMIZED OPTIONS #------------------------------------------------------------------------------ -#custom_variable_classes = '' # list of custom variable class names +custom_variable_classes = 'pg_stat_statements' # list of custom variable class names PostgreSQL を再起動する → エラー:
$ sudo /etc/init.d/postgresql-8.4 restart * Restarting PostgreSQL 8.4 database server * The PostgreSQL server failed to start. Please check the log output: 2010-03-12 23:16:37 JST LOG: ?????"pg_stat_statements"???????? 2010-03-12 23:16:37 JST FATAL: ??????????????????: Invalid argument 2010-03-12 23:16:37 JST ??: ????????????shmget(key=5432001, size=33710080, 03600)???? 2010-03-12 23:16:37 JST ???: ?????????PostgreSQL????????????????????? SHMMAX?????????????????????????????????? ?????????SHMMAX????????????????????????(? ?33710080???)??????PostgreSQL?shared_buffers?????(??3584)? max_connections(??103)?????????????????? ???????????SHMMIN??????????????????????? ??????????????????SHMIN???????????????? ???????????????PostgreSQL????????????????? ...fail! (再起動したときに表示されるエラーメッセージを16進数ダンプしてみる) $ sudo /etc/init.d/postgresql-8.4 restart 2>&1 | xxd -g1 0000000: 20 2a 20 52 65 73 74 61 72 74 69 6e 67 20 50 6f * Restarting Po 0000010: 73 74 67 72 65 53 51 4c 20 38 2e 34 20 64 61 74 stgreSQL 8.4 dat 0000020: 61 62 61 73 65 20 73 65 72 76 65 72 0a 20 2a 20 abase server. * 0000030: 54 68 65 20 50 6f 73 74 67 72 65 53 51 4c 20 73 The PostgreSQL s 0000040: 65 72 76 65 72 20 66 61 69 6c 65 64 20 74 6f 20 erver failed to 0000050: 73 74 61 72 74 2e 20 50 6c 65 61 73 65 20 63 68 start. Please ch 0000060: 65 63 6b 20 74 68 65 20 6c 6f 67 20 6f 75 74 70 eck the log outp 0000070: 75 74 3a 0a 32 30 31 30 2d 30 33 2d 31 33 20 30 ut:.2010-03-13 0 0000080: 30 3a 31 30 3a 31 31 20 4a 53 54 20 4c 4f 47 3a 0:10:11 JST LOG: 0000090: 20 20 3f 3f 3f 3f 3f 22 70 67 5f 73 74 61 74 5f ?????"pg_stat_ 00000a0: 73 74 61 74 65 6d 65 6e 74 73 22 3f 3f 3f 3f 3f statements"????? 00000b0: 3f 3f 3f 0a 32 30 31 30 2d 30 33 2d 31 33 20 30 ???.2010-03-13 0 00000c0: 30 3a 31 30 3a 31 31 20 4a 53 54 20 46 41 54 41 0:10:11 JST FATA 00000d0: 4c 3a 20 20 3f 3f 3f 3f 3f 3f 3f 3f 3f 3f 3f 3f L: ???????????? 00000e0: 3f 3f 3f 3f 3f 3f 3a 20 49 6e 76 61 6c 69 64 20 ??????: Invalid 00000f0: 61 72 67 75 6d 65 6e 74 0a 32 30 31 30 2d 30 33 argument.2010-03 0000100: 2d 31 33 20 30 30 3a 31 30 3a 31 31 20 4a 53 54 -13 00:10:11 JST 0000110: 20 3f 3f 3a 20 20 3f 3f 3f 3f 3f 3f 3f 3f 3f 3f ??: ?????????? 0000120: 3f 3f 73 68 6d 67 65 74 28 6b 65 79 3d 35 34 33 ??shmget(key=543 0000130: 32 30 30 31 2c 20 73 69 7a 65 3d 33 33 37 31 30 2001, size=33710 0000140: 30 38 30 2c 20 30 33 36 30 30 29 3f 3f 3f 3f 0a 080, 03600)????. 0000150: 32 30 31 30 2d 30 33 2d 31 33 20 30 30 3a 31 30 2010-03-13 00:10 0000160: 3a 31 31 20 4a 53 54 20 3f 3f 3f 3a 20 20 3f 3f :11 JST ???: ?? 0000170: 3f 3f 3f 3f 3f 3f 3f 50 6f 73 74 67 72 65 53 51 ???????PostgreSQ 0000180: 4c 3f 3f 3f 3f 3f 3f 3f 3f 3f 3f 3f 3f 3f 3f 3f L??????????????? 0000190: 3f 3f 3f 3f 3f 3f 0a 09 53 48 4d 4d 41 58 3f 3f ??????..SHMMAX?? 00001a0: 3f 3f 3f 3f 3f 3f 3f 3f 3f 3f 3f 3f 3f 3f 3f 3f ???????????????? 00001b0: 3f 3f 3f 3f 3f 3f 3f 3f 3f 3f 3f 3f 3f 3f 3f 3f ???????????????? 00001c0: 0a 09 3f 3f 3f 3f 3f 3f 3f 3f 3f 53 48 4d 4d 41 ..?????????SHMMA 00001d0: 58 3f 3f 3f 3f 3f 3f 3f 3f 3f 3f 3f 3f 3f 3f 3f X??????????????? 00001e0: 3f 3f 3f 3f 3f 3f 3f 3f 3f 28 3f 0a 09 3f 33 33 ?????????(?..?33 00001f0: 37 31 30 30 38 30 3f 3f 3f 29 3f 3f 3f 3f 3f 3f 710080???)?????? 0000200: 50 6f 73 74 67 72 65 53 51 4c 3f 73 68 61 72 65 PostgreSQL?share 0000210: 64 5f 62 75 66 66 65 72 73 3f 3f 3f 3f 3f 28 3f d_buffers?????(? 0000220: 3f 33 35 38 34 29 3f 0a 09 6d 61 78 5f 63 6f 6e ?3584)?..max_con 0000230: 6e 65 63 74 69 6f 6e 73 28 3f 3f 31 30 33 29 3f nections(??103)? 0000240: 3f 3f 3f 3f 3f 3f 3f 3f 3f 3f 3f 3f 3f 3f 3f 3f ???????????????? 0000250: 3f 0a 09 3f 3f 3f 3f 3f 3f 3f 3f 3f 3f 3f 53 48 ?..???????????SH 0000260: 4d 4d 49 4e 3f 3f 3f 3f 3f 3f 3f 3f 3f 3f 3f 3f MMIN???????????? 0000270: 3f 3f 3f 3f 3f 3f 3f 3f 3f 3f 3f 0a 09 3f 3f 3f ???????????..??? 0000280: 3f 3f 3f 3f 3f 3f 3f 3f 3f 3f 3f 3f 3f 3f 3f 53 ???????????????S 0000290: 48 4d 49 4e 3f 3f 3f 3f 3f 3f 3f 3f 3f 3f 3f 3f HMIN???????????? 00002a0: 3f 3f 3f 3f 0a 09 3f 3f 3f 3f 3f 3f 3f 3f 3f 3f ????..?????????? 00002b0: 3f 3f 3f 3f 3f 50 6f 73 74 67 72 65 53 51 4c 3f ?????PostgreSQL? 00002c0: 3f 3f 3f 3f 3f 3f 3f 3f 3f 3f 3f 3f 3f 3f 3f 3f ???????????????? 00002d0: 0a 20 20 20 2e 2e 2e 66 61 69 6c 21 0a . ...fail!. $ sudo less /var/log/postgresql/postgresql-8.4-main.log 2010-03-12 23:19:07 JST LOG: ?????"pg_stat_statements"???????? 2010-03-12 23:19:07 JST FATAL: ??????????????????: Invalid argument 2010-03-12 23:19:07 JST ??: ????????????shmget(key=5432001, size=33710080, 03600)???? 2010-03-12 23:19:07 JST ???: ?????????PostgreSQL????????????????????? SHMMAX?????????????????????????????????? ?????????SHMMAX????????????????????????(? ?33710080???)??????PostgreSQL?shared_buffers?????(??3584)? max_connections(??103)?????????????????? ???????????SHMMIN??????????????????????? ??????????????????SHMIN???????????????? ???????????????PostgreSQL????????????????? (ログファイルを16進数ダンプしてみる) $ sudo tail /var/log/postgresql/postgresql-8.4-main.log | xxd -g1 0000000: 32 30 31 30 2d 30 33 2d 31 33 20 30 30 3a 31 30 2010-03-13 00:10 0000010: 3a 31 31 20 4a 53 54 20 46 41 54 41 4c 3a 20 20 :11 JST FATAL: 0000020: 3f 3f 3f 3f 3f 3f 3f 3f 3f 3f 3f 3f 3f 3f 3f 3f ???????????????? 0000030: 3f 3f 3a 20 49 6e 76 61 6c 69 64 20 61 72 67 75 ??: Invalid argu 0000040: 6d 65 6e 74 0a 32 30 31 30 2d 30 33 2d 31 33 20 ment.2010-03-13 0000050: 30 30 3a 31 30 3a 31 31 20 4a 53 54 20 3f 3f 3a 00:10:11 JST ??: 0000060: 20 20 3f 3f 3f 3f 3f 3f 3f 3f 3f 3f 3f 3f 73 68 ????????????sh 0000070: 6d 67 65 74 28 6b 65 79 3d 35 34 33 32 30 30 31 mget(key=5432001 0000080: 2c 20 73 69 7a 65 3d 33 33 37 31 30 30 38 30 2c , size=33710080, 0000090: 20 30 33 36 30 30 29 3f 3f 3f 3f 0a 32 30 31 30 03600)????.2010 00000a0: 2d 30 33 2d 31 33 20 30 30 3a 31 30 3a 31 31 20 -03-13 00:10:11 00000b0: 4a 53 54 20 3f 3f 3f 3a 20 20 3f 3f 3f 3f 3f 3f JST ???: ?????? 00000c0: 3f 3f 3f 50 6f 73 74 67 72 65 53 51 4c 3f 3f 3f ???PostgreSQL??? 00000d0: 3f 3f 3f 3f 3f 3f 3f 3f 3f 3f 3f 3f 3f 3f 3f 3f ???????????????? 00000e0: 3f 3f 0a 09 53 48 4d 4d 41 58 3f 3f 3f 3f 3f 3f ??..SHMMAX?????? 00000f0: 3f 3f 3f 3f 3f 3f 3f 3f 3f 3f 3f 3f 3f 3f 3f 3f ???????????????? 0000100: 3f 3f 3f 3f 3f 3f 3f 3f 3f 3f 3f 3f 0a 09 3f 3f ????????????..?? 0000110: 3f 3f 3f 3f 3f 3f 3f 53 48 4d 4d 41 58 3f 3f 3f ???????SHMMAX??? 0000120: 3f 3f 3f 3f 3f 3f 3f 3f 3f 3f 3f 3f 3f 3f 3f 3f ???????????????? 0000130: 3f 3f 3f 3f 3f 28 3f 0a 09 3f 33 33 37 31 30 30 ?????(?..?337100 0000140: 38 30 3f 3f 3f 29 3f 3f 3f 3f 3f 3f 50 6f 73 74 80???)??????Post 0000150: 67 72 65 53 51 4c 3f 73 68 61 72 65 64 5f 62 75 greSQL?shared_bu 0000160: 66 66 65 72 73 3f 3f 3f 3f 3f 28 3f 3f 33 35 38 ffers?????(??358 0000170: 34 29 3f 0a 09 6d 61 78 5f 63 6f 6e 6e 65 63 74 4)?..max_connect 0000180: 69 6f 6e 73 28 3f 3f 31 30 33 29 3f 3f 3f 3f 3f ions(??103)????? 0000190: 3f 3f 3f 3f 3f 3f 3f 3f 3f 3f 3f 3f 3f 0a 09 3f ?????????????..? 00001a0: 3f 3f 3f 3f 3f 3f 3f 3f 3f 3f 53 48 4d 4d 49 4e ??????????SHMMIN 00001b0: 3f 3f 3f 3f 3f 3f 3f 3f 3f 3f 3f 3f 3f 3f 3f 3f ???????????????? 00001c0: 3f 3f 3f 3f 3f 3f 3f 0a 09 3f 3f 3f 3f 3f 3f 3f ???????..??????? 00001d0: 3f 3f 3f 3f 3f 3f 3f 3f 3f 3f 3f 53 48 4d 49 4e ???????????SHMIN 00001e0: 3f 3f 3f 3f 3f 3f 3f 3f 3f 3f 3f 3f 3f 3f 3f 3f ???????????????? 00001f0: 0a 09 3f 3f 3f 3f 3f 3f 3f 3f 3f 3f 3f 3f 3f 3f ..?????????????? 0000200: 3f 50 6f 73 74 67 72 65 53 51 4c 3f 3f 3f 3f 3f ?PostgreSQL????? 0000210: 3f 3f 3f 3f 3f 3f 3f 3f 3f 3f 3f 3f 0a ????????????. エラーメッセージがろくに読めないが、shmmax が足りないと睨んで、shmmaxをエラーメッセージ中の値まで増やしてみる→OK: $ sudo bash -c 'echo 337710080 > /proc/sys/kernel/shmmax' $ sudo cat /proc/sys/kernel/shmmax 337710080 $ sudo /etc/init.d/postgresql-8.4 restart * Restarting PostgreSQL 8.4 database server ...done. この設定は、Linuxの再起動に失われる。Linuxの起動時にこの設定を有効にするには、/etc/sysctl.conf か /etc/sysctl.d/ に設定を用意してやればよい。 /etc/sysctl.d/ に書く場合の例 (ファイル名は 99-shmmax-postgresql.conf にした): # for postgresql kernel.shmmax = 337710080 あるいは、postgresql.conf の「max_connections = 100」を少し減らしてみてもよい。 実行してみる (スーパーユーザ権限を持つ postgres で、デフォルトデータベースに対して実行) →OK: $ sudo -u postgres psql psql (8.4.2) "help" でヘルプを表示します. postgres=# select pg_stat_statements_reset(); pg_stat_statements_reset -------------------------- (1 行) postgres=# select * from pg_stat_statements order by total_time desc limit 3; userid | dbid | query | calls | total_time | rows --------+-------+------------------------------------+-------+------------+------ 10 | 11564 | select pg_stat_statements_reset(); | 1 | 0.000253 | 1 (1 行) postgres=# \q $ (以下、作業中)
Ubuntu 10.04 LTS Server へのアップグレード #(2010-05-08) 2010-04-29 に Ubuntu 10.04 がリリースされたので、移行してみた。 Phusion Passenger (Ubuntu 本家のパッケージに不満があった場合は、こちらを使う):
Ubuntu 10.04 LTS (lucid lynx) のパッケージ情報:
Ubuntu 10.04 LTS:
Ubuntu 10.04 へのアップグレード update-manager-core をインストールする →インストールされていた: $ sudo aptitude install update-manager-core ... インストール・削除・更新されるパッケージがありません。 ... $ dpkg -p update-manager-core ... Version: 1:0.126.9 ... /etc/update-manager/release-upgrades を修正 →修正不要: $ cat /etc/update-manager/release-upgrades | grep Prompt Prompt=normal do-release-upgrade でアップグレードする →ssh経由では警告が出るが、続行。問題なし: $ sudo do-release-upgrade ... SSH越しに実行していますが、続けますか? このセッションはSSH上で実行されているようです。アップグレードをSSH越しに行うことは 推奨されません。アップグレードに失敗した時の復元が困難になるからです。 続行する場合、追加のSSHデーモンをポート '9004' で起動します。 本当に作業を進めてよろしいですか? 続行する[yN] y 予備のsshdを開始します 障害が起こったときに復旧しやすくするため、ポート '9004' でもう一つの sshd を開始します。現在実行中のsshにおかしなことが起きても、もう一方のポートに 接続することができます。 Reading package lists: Donekarmic-security/multiverse Packages: 98 ... いくつかのアプリケーションのサポートは終了しました 今後は Canonical Ltd. は以下のソフトウェアパッケージのサポートを行ないません。 引き続きコミュニティからサポートされます。 サポートレベルの格下げ: emacs22-nox, libcompress-bzip2-perl, netcat-traditional ... 4 個のパッケージが削除されます。 51 個の新規パッケージがインストールされます。 376 個のパッケージがアップグレードされます。 合計 244M をダウンロードする必要があります。 このダウンロードは約 2 分 かかります。 アップグレードの取得とインストールには数時間かかることがあります。ダウンロードが終了すると、アップグレードをキ ャンセルすることはできません。 続行する[yN] 詳細 [d] y ... (console-setup (mlocate updatedb.conf (grub-pc ★<いいえ>を選択すると、同じ画面に戻ってしまう。よって<はい>を選択する。 サポートが中止された(あるいはリポジトリに存在しない)パッケージを削除しますか? 18 個のパッケージが削除されます。 続行する[yN] 詳細 [d]d 削除: libbind9-50 libdns50 libisc50 libisccc50 libisccfg50 libiw29 liblwres50 libntfs-3g54 linux-image-2.6.31-14-generic-pae mailx (自動インストールされた) libdns53 libkadm5clnt6 libossp-uuid15 linux-headers-2.6.31-21 linux-headers-2.6.31-21-generic-pae linux-image-2.6.31-19-generic-pae linux-image-2.6.31-20-generic-pae x11-common を削除 続行する[yN] 詳細 [d] y ... mailx を削除しています ... ... システムのアップグレードが完了しました。 再起動が必要です アップグレードを完了するには再起動が必要です。 'Y' を選択すると再起動します。 続行する[yN] y カーネルが更新されているので、再起動後に VMware-toolbox を再インストールする: $ sudo /usr/bin/vmware-config-tools.pl -d ... パッケージを更新する → bsd-mailx (メールクライアント) が削除された。メールの送信テストに使いたいので、再度インストールしておく: $ sudo aptitude update && sudo aptitude -y safe-upgrade && sudo aptitude autoclean ... 以下のパッケージは『削除』されます: bsd-mailx{u} $ sudo aptitude install bsd-mailx アップグレード中に「サポートレベルの格下げ」と表示されたパッケージを削除する(削除しても問題がないため): $ sudo aptitude purge emacs22-nox ... $ sudo aptitude purge netcat-traditional netcat ... $ sudo aptitude purge libcompress-bzip2-perl ... 9arrows の動作確認を行う。
/var/log/apache2/error.log を確認したが、特にエラーは出ていない: $ sudo less /var/log/apache2/error.log ... DashBoard, WBS, Gantt, Calendar, Files を切り替えてみた。VMwareのホスト (Windows 7 Pro 64bit) 上の Firefox 3.6.3 にて操作、YSlow の「接続」タブによると、切替の所要時間は0.3〜1.0秒程度で切り替わる。 [編集]skype.com への通信 #(2010-05-09) VMwareのホスト (Windows 7 Pro 64bit) 上の Firefox 3.6.3 にて操作、YSlow の「接続」タブを表示し、 super-reload (Shift + リロードボタン) してみたところ、 (話には聞いていたが)http://download.skype.com/share/skypebuttons/js/skypeCheck.js を取得している。大きさは 2.8KB で、Webブラウザにキャッシュされない場合、取得に 700ms かかっている。 リロードした場合も、毎回アクセスしに行く(キャッシュされない)ため、200ms 以上掛かっている: [編集] その他 #(2010-03-11)
|