kopug memo

名古屋で働くとあるWebエンジニアの覚書。

位置情報をSQLでごにょごにょ検索する

位置情報を扱うサービスで求められる要件に以下のようなのが良くあります。

  • 現在地から半径○○mに登録されている店舗情報を取得
  • 上で取得した結果を近い順に表示する

これをまともに自力でやろうとするとめんどくさいので、
PostgreSQL拡張のPostGisを使ってあげます。

下記のリポジトリを事前に追加してください。
http://d.hatena.ne.jp/kopug/20080824/1219541381

1. PostGisをインストールする

$ sudo yum install postgis
======================================================================================================
 Package              Arch             Version                 Repository                   Size
======================================================================================================
Installing:
 postgis              x86_64           1.3.6-1.rhel5           pgdg84                       1.0 M
Installing for dependencies:
 geos                 x86_64           3.1.0-1.el5.rf          rpmforge                     265 k
 geos-devel           x86_64           3.1.0-1.el5.rf          rpmforge                     4.8 M
 proj                 x86_64           4.6.1-1.rhel5           pgdg84                       172 k
Transaction Summary
======================================================================================================

Installed: postgis.x86_64 0:1.3.6-1.rhel5
Dependency Installed: geos.x86_64 0:3.1.0-1.el5.rf geos-devel.x86_64 0:3.1.0-1.el5.rf proj.x86_64 0:4.6.1-1.rhel5
Complete!

2. PostgreSQLの再起動

$ sudo /sbin/service postgresql restart

3. テンプレートDBの作成と関数の作成

$ createdb -U postgres template_postgis
$ createlang -U postgres plpgsql template_postgis
$ psql -U postgres -d template_postgis -f /usr/share/pgsql/contrib/lwpostgis-64.sql
$ psql -U postgres -d template_postgis -f /usr/share/pgsql/contrib/lwpostgis_upgrade-64.sql
$ psql -U postgres -d template_postgis -f /usr/share/pgsql/contrib/postgis_comments.sql
$ psql -U postgres -d template_postgis -f /usr/share/pgsql/contrib/spatial_ref_sys.sql

4. PostGisの関数を利用したい場合DBを作成する場合はテンプレート指定で

$ createdb -U postgres -T template_postgis <DB NAME>

こうすることでDB毎にfunctionの読み込みをしなくてすみます。
正常にできたかどうかを確認するってことで、以下のSQLを流して見ましょう。

$ psql -U postgres -c "SELECT postgis_version();" <DB NAME>

            postgis_version
---------------------------------------
 1.3 USE_GEOS=1 USE_PROJ=1 USE_STATS=1
(1 row)

インストールと設定はこんな感じです。

実際の利用方法については、以下のサイトで丁寧に書かれていました。
http://bubble.atnifty.com/modules/bwiki/PostGIS.html

お名前.com の VPSを借りてみた

最近巷を少し賑わしているお名前.comのVPSを借りてみた。

月額2,940円で、メモリ最大1G(通常512M)、HDD50Gとスペックだけ見ているとすごくお得な感じがした。
専用サーバを借りるほどでもなく、けどその辺のVPSのスペックだと不満・・といった状況だったので、
魅力に感じたわけで。

クレジットカードで申し込みをしたので大体1時間くらいで開通。
SSHでログインしてみて驚く。
なんだこれは・・・。

とちょっと大げさかもしれないけど、普通の仮想化とは違う感じ。
なんか殆どホストOSにラッピングされている感じ。
まずyumがありません。

なのでyumを自分でインストールして、パッケージをアップデート。
このアップデートが結構怖いところで、独自のパッケージを何も知らずにアップデートすると動かなくなる可能性がありそう。
僕はpostfixをアップデートして、メールの送信ができなくなりました。

で、このメールの送信なんだけど、このサーバからは25番ポートを使って相手に通信ができないようです。
なので、リレーの設定をmain.cfでしてあげないと、メールの送信ができないんだよね。

これ以外にも色々不思議なところはあるけども、ある程度弄れるので、使える人には良いのではないかなーと思った。

httpd-2.2.*で最低限必要なmodule

centos5.3でapacheRPMインストールした際のデフォルト設定で必要なモジュール一覧です。

  1. mod_mime      (AddHandlerで必要)
  2. mod_dir      (DirectoryIndexで必要)
  3. mod_authz_host   (Orderで必要)
  4. mod_log_config   (LogFormatで必要)
  5. mod_alias     (Aliasで必要)
  6. mod_autoindex   (IndexOptionsで必要)
  7. mod_negotiation  (LanguagePriorityで必要)
  8. mod_setenvif    (BrowserMatchで必要)

上記以外のモジュールをコメントするとメモリ量がこれだけ変化しました。

4,316kbyte -> 3,648kbyte

CentOS 5.3 に redMineをインストールしてみる

参考:http://redmine.jp/tech_note/install/

[1] rubyのインストール

# yum -y install ruby rdoc ruby-devel

[2] SQLite3のインストール

# yum -y install sqlite sqlite-devel

sqlite-develを入れておかないと、あとでsqlite3-rubyがインストールできない

[3] RubyGemsのインストール

# cd /usr/local/src
# wget http://rubyforge.org/frs/download.php/55066/rubygems-1.3.2.tgz
# tar zxf rubygems-1.3.2.tgz
# ruby setup.rb
# cd -

[4] Ruby on Rails(+sqlite3-ruby)のインストール

# gem install rails
# gem install sqlite3-ruby

[5] redMineのインストール

# cd /usr/local/src
# wget http://rubyforge.org/frs/download.php/54503/redmine-0.8.3.tar.gz
# tar zxf redmine-0.8.3.tar.gz
# mv redmine-0.8.3 ../
# cd ../
# ln -s redmine-0.8.3 redmine

あとは参考ページを見ながら設定をしていく感じで。

今更しった。Pentium-Mではxenが利用できない事に・・。

うちの自宅サーバはPentiumMなんだけど、CentOSを最新の5.3+仮想化にしようと思いクリーンインストールまでしたのに、、。
PentiumMではxenが利用できなかった・・。

http://d.hatena.ne.jp/mir/20070925/p1