ラベル VPS の投稿を表示しています。 すべての投稿を表示
ラベル VPS の投稿を表示しています。 すべての投稿を表示

2011/10/09

さくらVPSにMongoDBとPyMongoインストールして、動作を確認しました。



PyCon JP 2011の開催報告のUstreamで、「PythonとMongoDBでWEB開発 / Web」を拝見しました。MongoDBが面白そうなので、MongoDBのPythonのドライバ、PyMongoを一緒にインストールして、動作を確認してみました。

PythonとMongoDBでWEB開発 / Web
http://www.ustream.tv/recorded/16898050


これも、さくらVPSで試しています。
スキーマレスのデータベース「MongoDB」って面白そうです。

MongoDBのインストール
$ sudo vi /etc/yum.repos.d/10gen.repo 

[10gen]

name=10gen Repository
baseurl=http://downloads-distro.mongodb.org/repo/redhat/os/x86_64
gpgcheck=0

$ sudo yum install mongo-10gen* --enablerepo=10gen
Installed:
  mongo-10gen.x86_64 0:2.0.0-mongodb_1
  mongo-10gen-server.x86_64 0:2.0.0-mongodb_1
関連するファイル、ディレクトリは下記のように設定されます。
設定ファイル:/etc/mongod.conf
ログファイル:/var/log/mongo/mongod.log
データディレクトリ:/var/lib/mongo/
起動は起動スクリプトでOK
$ sudo /etc/init.d/mongod start
Starting mongod: all output going to: /var/log/mongo/mongod.log
forked process: 31800
           [  OK  ]
PyMongoのインストール

pipを使ってインストールします。pip自体が入っていないので、pipをまずインストールします。その後、pipでPyMongoをインストールします。
$ sudo easy_install pip
$ sudo pip install pymongo
PyMongoを使って、MongoDBを操作してみます
$ python
Python 2.4.3 (#1, May  5 2011, 16:39:10)
[GCC 4.1.2 20080704 (Red Hat 4.1.2-50)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import pymongo

コネクションを作成して
>>>con = Connection('localhost', 27017)

コネクションからvivoデータベースを取得
>>>db = con.vivo

vivoデータベースからbarコレクションを取得
>>>col = db.bar
事前に、データベースのスキーマ作ることも、データベースを作成することもなしに、データベースに接続出来ました。

辞書を渡してやることで、データの登録が出来ます。
>>>col.insert({'ariki' : 2011})
ObjectId('4e91a2648eacfc7c8c000001')
>>> col.insert({'fujii' : 2010,'suwa' : 2009})
ObjectId('4e91a2d98eacfc7c8c000002')
>>> print col.find_one()
{u'_id': ObjectId('4e91a2648eacfc7c8c000001'), u'ariki': 2011}
>>> for data in col.find():
...     print data
...
{u'_id': ObjectId('4e91a2648eacfc7c8c000001'), u'ariki': 2011}
{u'fujii': 2010, u'_id': ObjectId('4e91a2d98eacfc7c8c000002'), u'suwa': 2009}
>>>
データの更新をします。
>>>data = col.find_one({'ariki' : 2011})
>>>data['ariki'] = 2008
>>>col.save(data)
>>>for data in col.find():
...     print data
...     
{u'_id': ObjectId('4e91a2648eacfc7c8c000001'), u'ariki': 2008}
{u'fujii': 2010, u'_id': ObjectId('4e91a2d98eacfc7c8c000002'), u'suwa': 2009}
>>>
データを削除します。
>>>col.remove({'ariki' : 2008})
>>> for data in col.find():
...     print data
...
{u'fujii': 2010, u'_id': ObjectId('4e91a2d98eacfc7c8c000002'), u'suwa': 2009}
>>>
データディレクトリの /var/lib/mongo/ に、下記のファイルが出来ていることを確認しました。
vivo.ns
vivo.0
vivo.1

Django Google Maps API v3 and Static Maps API helper appのサンプルを試してみました。



さくらVPSのDjango1.3にdjango-gmapi(Django Google Maps API v3 and Static Maps API helper app)のインストールをして、サンプルアプリの動作を確認しました。


Django Google Maps API v3 and Static Maps API helper app
http://django-gmapi.googlecode.com/

django-gmapi-1.0.1 のダウンロードとインストール。
sample_project のダウンロードとDjangoのプロジェクトフォルダへの設置をします。

サンプルプロジェクトの「gmapitest」でdjangoを起動します。
下記のエラーが表示されます。
SyntaxError at /

invalid syntax (maps.py, line 129)

Request Method:  GET
Request URL:  http://hogehost:8000/
Django Version:  1.3
Exception Type:  SyntaxError
Exception Value:  

invalid syntax (maps.py, line 129)

Exception Location:  /path/to/django/gmapitest/myapp/views.py in ?, line 3
調べてみると、現在のPython 2.4.3では動かないようです。
Python 2.6.7を別にインストールします。

別にインストールをしたPython 2.6.7で再度djangoをインストールします。
インストールの確認をします。
$ python2.6.7
Python 2.6.7 (r267:88850, Oct  8 2011, 17:43:16)
[GCC 4.1.2 20080704 (Red Hat 4.1.2-48)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import django
>>> django.VERSION
(1, 3, 0, 'final', 0)
django-gmapi-1.0.1 をPython 2.6.7でインストールした後
再度、サンプルプロジェクトの「gmapitest」で、Python 2.6.7を使ってdjangoを起動します。
Google mapの表示を確認できました。


地図表示のポイントとなるのは、/path/to/django/gmapitest/myapp/views.py になります。この中のindexの内容を基に修正、機能を作っていけばよさそうです。
# -*- coding: utf-8 -*-
from django import forms
from django.shortcuts import render_to_response
from gmapi import maps
from gmapi.forms.widgets import GoogleMap


class MapForm(forms.Form):
    map = forms.Field(widget=GoogleMap(attrs={'width':900, 'height':600}))


def index(request):
    gmap = maps.Map(opts = {
        'center': maps.LatLng(34.687428,133.916473),
        'mapTypeId': maps.MapTypeId.ROADMAP,
        'zoom': 13,
        'mapTypeControlOptions': {
             'style': maps.MapTypeControlStyle.DROPDOWN_MENU
        },
    })
    marker = maps.Marker(opts = {
        'map': gmap,
        'position': maps.LatLng(34.687428,133.916473),
    })
    maps.event.addListener(marker, 'mouseover', 'myobj.markerOver')
    maps.event.addListener(marker, 'mouseout', 'myobj.markerOut')
    info = maps.InfoWindow({
        'content': 'Hello! 岡山の地図',
        'disableAutoPan': True
    })
    info.open(gmap, marker)
    context = {'form': MapForm(initial={'map': gmap})}
    return render_to_response('index.html', context)

2011/10/06

さくらVPSにDjango1.3(PostgerSQL使用)をインストールしました。開発用のサーバでCSSが有効になるまでの手順の続きです。



前回の続きです。DjangoアプリPollのチュートリアルの内容で、開発用サーバでCSSが有効になる方法のまとめです。


はじめての Django アプリ作成、その 3
http://djangoproject.jp/doc/ja/1.0/intro/tutorial03.html

公開用のインタフェース、ビュー(view) の作成をする際、サンプルのままだと、CSSの効いていない画面しか表示されません。


CSSの効いた画面を表示したいと思った時、どうすればよいか分かりませんでした。実際に公開する際は、静的なファイルはApacheで提供するようになりますが、開発用のサーバで、CSSを有効にするには、どうすればいいのでしょうか。

Googleで色々と調べて、下記の設定で、開発用サーバでCSSが有効になることが分かりました。


/path/to/django/mysite/setting.py の該当部分
MEDIA_ROOT = os.path.join(os.path.abspath(os.path.dirname(__file__)), 'media')
MEDIA_URL = '/m/'
/path/to/django/mysite/urls.py
from django.conf.urls.defaults import *
from mysite import settings

# Uncomment the next two lines to enable the admin:
from django.contrib import admin
admin.autodiscover()

urlpatterns = patterns('',

    (r'^polls/$', 'mysite.polls.views.index'),
    (r'^polls/(?P\d+)/$', 'mysite.polls.views.detail'),
    (r'^polls/(?P\d+)/results/$', 'mysite.polls.views.results'),
    (r'^polls/(?P\d+)/vote/$', 'mysite.polls.views.vote'),

    url(r'^admin/', include(admin.site.urls)),
)

if settings.DEBUG:
    urlpatterns += patterns('',
        (r'^m/(?P.*)$', 'django.views.static.serve', {'document_root': settings.MEDIA_ROOT}),
    )
/path/to/django/mysite/templates/polls/index.html


2011/10/04

さくらVPSにDjango1.3(PostgerSQL使用)をインストールしました。開発用のサーバでCSSが有効になるまでの手順をまとめておきます。



さくらVPSにて、Django1.3で開発サーバを起動し、アプリを作成する際、テンプレートからCSSが参照できませんでした。しばらく調べて解決したので、備忘録として記録しておきます。


さくらのVPSに入っているPythonは、2.4.3です。
Python 2.4.3 (#1, May  5 2011, 16:39:10)
[GCC 4.1.2 20080704 (Red Hat 4.1.2-50)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
Django1.3をインストールします。
$ wget http://www.djangoproject.com/download/1.3/tarball/
$ tar vxzf Django-1.3.tgz
$ cd Django-1.3
$ sudo python setup.py install
Django1.3がインストールされたことを確認します。
Python 2.4.3 (#1, May  5 2011, 16:39:10)
[GCC 4.1.2 20080704 (Red Hat 4.1.2-50)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import django
>>> django.VIRSION
(1, 3, 0, 'final', 0)
PostGreSQLをインストールします。
# yum install postgresql-server postgresql postgresql-libs postgresql-devel
postgresql8.1.23-1がインストールされました。 PostgreSQL関係の操作をpostgresユーザで行います。
{user} su -
{root} su - postgres
{postgres}
データベースを初期化します。
{postgres}$ initdb --encoding=UTF8 --no-locale
・・・
Success. You can now start the database server using:
    postmaster -D /var/lib/pgsql/data
or
    pg_ctl -D /var/lib/pgsql/data -l logfile start
サーバプロセスの起動と停止のコマンドです。
{postgres}$ pg_ctl -w start  // 起動処理終了後プロンプトに戻る
{postgres}$ pg_ctl stop    // サーバプロセスの停止
ユーザーを作成します。
{postgres}$ createuser hoge
Shall the new role be a superuser? (y/n) n
Shall the new role be allowed to create databases? (y/n) y
Shall the new role be allowed to create more new roles? (y/n) n
CREATE ROLE
psqlでデータベースに接続します。
$ psql postgres hoge
Welcome to psql 8.1.23, the PostgreSQL interactive terminal.
Type:  \copyright for distribution terms
       \h for help with SQL commands
       \? for help with psql commands
       \g or terminate with semicolon to execute query
       \q to quit
postgres=>
$ psql template1 hoge
Welcome to psql 8.1.23, the PostgreSQL interactive terminal.
Type:  \copyright for distribution terms
       \h for help with SQL commands
       \? for help with psql commands
       \g or terminate with semicolon to execute query
       \q to quit
template1=>
終了するには、\qコマンドを実行します。
PostGreSQLに用意されているテンプレート用のデータベース「template1」を使います。

パスワードを設定します。
$ psql
Welcome to psql 8.1.23, the PostgreSQL interactive terminal.
Type:  \copyright for distribution terms
       \h for help with SQL commands
       \? for help with psql commands
       \g or terminate with semicolon to execute query
       \q to quit
postgres=# alter user hoge password '**********';
ALTER ROLE
postgres=# \q
PostgerSQLとPythonの接続をします。
psycopg2のインストール
$ wget http://initd.org/psycopg/tarballs/PSYCOPG-2-4/psycopg2-2.4.2.tar.gz
$ tar vxzf psycopg2-2.4.2.tar.gz
$ cd psycopg2-2.4.2
# python setup.py build
# python setup.py install
はじめての Django アプリ作成の内容を元にアプリを作成していきます。

はじめての Django アプリ作成
http://djangoproject.jp/doc/ja/1.0/intro/tutorial01.html#intro-tutorial01

Djangoのプロジェクトを作成します。
/path/to/django/にて
$ django-admin.py startproject mysite
Djangoアプリケーションを作成します。
/path/to/django/mysite/にて
$ python manage.py startapp polls
重要な設定箇所だけを記載します。
/path/to/django/mysite/settings.pyを編集
DATABASES = {
    'default': {
        'ENGINE': 'postgresql_psycopg2',
        'NAME': 'template1',
        'USER': 'hoge',
        'PASSWORD': '*************',
        'HOST': 'localhost',
        'PORT': '5432',
    }
}
INSTALLED_APPS = (
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.sites',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'django.contrib.admin',
    'django.contrib.admindocs',
    'mysite.polls'
)
/path/to/django/mysite/polls/models.pyを編集
from django.db import models
class Poll(models.Model):
    question = models.CharField(max_length=200)
    pub_date = models.DateTimeField('date published')
class Choice(models.Model):
    poll = models.ForeignKey(Poll)
    choice = models.CharField(max_length=200)
    votes = models.IntegerField()
admin サイトの有効化
/path/to/django/mysite/urls.pyを編集
from django.conf.urls.defaults import patterns, include, url
# Uncomment the next two lines to enable the admin:
from django.contrib import admin
admin.autodiscover()
urlpatterns = patterns('',
    url(r'^admin/doc/', include('django.contrib.admindocs.urls')),
    url(r'^admin/', include(admin.site.urls)),
)
モデルテーブルをデータベース上に作成します。
/path/to/django/mysiteにて
$ python manage.py syncdb
Djangoを起動
/path/to/django/mysiteにて
$ python manage.py runserver 0.0.0.0:8080
管理画面へのアクセスを確認。

次回へ続く。

2011/06/22

MeCab(オープンソース形態素解析エンジン)のPythonのバインディングをインストールしてみました。



MeCabとは、オープンソース形態素解析エンジンです。形態素解析とは、自然言語で書かれた文を、形態素(言語で意味を持つ最小単位)に分割する技術のこと。MeCabは、いくつかある形態素解析エンジンのひとつです。

MeCab (和布蕪)とは
http://mecab.sourceforge.net/


MeCabのスクリプト言語バインディングより、Pythonによるバインディング「mecab-python」をインストールしてみました。

MeCabのスクリプト言語のバインディング
http://mecab.sourceforge.net/bindings.html

さくらのVPSにインストールしてみました。

mecabのインストール
$ wget http://sourceforge.net/projects/mecab/files/mecab/0.98/mecab-0.98.tar.gz
$ tar vxzf mecab-0.98.tar.gz
$ cd mecab-0.98.tar.gz
$ ./configure
$ make
$ sudo make install

mecab-ipadic(辞書)のインストール
$ wget http://sourceforge.net/projects/mecab/files/mecab-ipadic/2.7.0-20070801/mecab-ipadic-2.7.0-20070801.tar.gz
$ tar vxzf mecab-ipadic-2.7.0-20070801.tar.gz
$ cd mecab-ipadic-2.7.0-20070801
$ ./configure
$ make
$ sudo make install

mecab-pythonのインストール
$ wget http://sourceforge.net/projects/mecab/files/mecab-python/0.98/mecab-python-0.98.tar.gz
$ tar vxzf mecab-python-0.98.tar.gz
$ cd mecab-python-0.98
$ python setup.py build
$ su
# python setup.py install

Pythonでの確認 import MeCabでエラーが出ます
$ python
Python 2.4.3 (#1, May  5 2011, 16:39:10)
[GCC 4.1.2 20080704 (Red Hat 4.1.2-50)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import MeCab
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "MeCab.py", line 25, in <module>
    _MeCab = swig_import_helper()
  File "MeCab.py", line 17, in swig_import_helper
    import _MeCab
ImportError: libmecab.so.1: cannot open shared object file: No such file or directory

共有モジュールを認識してないので、認識させます
$ sudo vi /etc/ld.so.conf
/usr/local/lib を追加
$ sudo /sbin/ldconfig

再度pythonでの確認
$ python
Python 2.4.3 (#1, May  5 2011, 16:39:10)
[GCC 4.1.2 20080704 (Red Hat 4.1.2-50)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import MeCab
>>> m = MeCab.Tagger()
>>> print m.parse("また企業公式ページの「いいね!」を押したことがある人に、ページを見た後その企業に対して何かアクションをとったかどうかを聞いたところ")
また    接続詞,*,*,*,*,*,また,マタ,マタ
企業    名詞,一般,*,*,*,*,企業,キギョウ,キギョー
公式    名詞,形容動詞語幹,*,*,*,*,公式,コウシキ,コーシキ
ページ  名詞,一般,*,*,*,*,ページ,ページ,ページ
の      助詞,連体化,*,*,*,*,の,ノ,ノ
「      記号,括弧開,*,*,*,*,「,「,「
いい    形容詞,自立,*,*,形容詞・イイ,基本形,いい,イイ,イイ
ね      助詞,終助詞,*,*,*,*,ね,ネ,ネ
!      記号,一般,*,*,*,*,!,!,!
」      記号,括弧閉,*,*,*,*,」,」,」
を      助詞,格助詞,一般,*,*,*,を,ヲ,ヲ
押し    動詞,自立,*,*,五段・サ行,連用形,押す,オシ,オシ
た      助動詞,*,*,*,特殊・タ,基本形,た,タ,タ
こと    名詞,非自立,一般,*,*,*,こと,コト,コト
が      助詞,格助詞,一般,*,*,*,が,ガ,ガ
ある    動詞,自立,*,*,五段・ラ行,基本形,ある,アル,アル
人      名詞,一般,*,*,*,*,人,ヒト,ヒト
に      助詞,格助詞,一般,*,*,*,に,ニ,ニ
、      記号,読点,*,*,*,*,、,、,、
ページ  名詞,一般,*,*,*,*,ページ,ページ,ページ
を      助詞,格助詞,一般,*,*,*,を,ヲ,ヲ
見      動詞,自立,*,*,一段,連用形,見る,ミ,ミ
た      助動詞,*,*,*,特殊・タ,基本形,た,タ,タ
後      名詞,非自立,副詞可能,*,*,*,後,ノチ,ノチ
その    連体詞,*,*,*,*,*,その,ソノ,ソノ
企業    名詞,一般,*,*,*,*,企業,キギョウ,キギョー
に対して        助詞,格助詞,連語,*,*,*,に対して,ニタイシテ,ニタイシテ
何      名詞,代名詞,一般,*,*,*,何,ナニ,ナニ
か      助詞,副助詞/並立助詞/終助詞,*,*,*,*,か,カ,カ
アクション      名詞,一般,*,*,*,*,アクション,アクション,アクション
を      助詞,格助詞,一般,*,*,*,を,ヲ,ヲ
とっ    動詞,自立,*,*,五段・ラ行,連用タ接続,とる,トッ,トッ
た      助動詞,*,*,*,特殊・タ,基本形,た,タ,タ
か      助詞,副助詞/並立助詞/終助詞,*,*,*,*,か,カ,カ
どう    副詞,助詞類接続,*,*,*,*,どう,ドウ,ドー
か      助詞,副助詞/並立助詞/終助詞,*,*,*,*,か,カ,カ
を      助詞,格助詞,一般,*,*,*,を,ヲ,ヲ
聞い    動詞,自立,*,*,五段・カ行イ音便,連用タ接続,聞く,キイ,キイ
た      助動詞,*,*,*,特殊・タ,基本形,た,タ,タ
ところ  名詞,非自立,副詞可能,*,*,*,ところ,トコロ,トコロ
EOS

形態素解析が出来ました。

2011/05/10

さくらのVPSサーバへZope3.4.1をインストールした備忘録



さくらのVPSサーバにZope3.4.1をインストールしてみました。備忘録を残しておきます。


Zope3.4.1のソースを取得して、解凍、中にある「configure」を行います。
$ ./configure

Configuring Zope installation
Testing for an acceptable Python interpreter...
Python version 2.4.3 found at /usr/bin/python
The optimum Python version (2.4.3) was found at /usr/bin/python.

Python 2.4.3 がインストールされているようです。Zope3.4.1が動作するバージョンなので、このまま進めます。「make」をすると、途中でエラーになります。
$ make

Dependencies/BTrees-Zope-3.4.1/BTrees/BTreeModuleTemplate.c:555: error: 
'Py_False' undeclared (first use in this function)
error: command 'gcc' failed with exit status 1
make: *** [build] Error 1

ぐぐってみると、「python-devel」が無いことが原因のようなので、インストールします。
# yum install python-devel

これで、「make」がエラー無く完了、そのまま「make check」「make install」をして、インストール完了

「mkzopeinstance」を使って、Zopeのインスタンスを作成。「zopectl」を使ってインスタンスの起動


アクセスを確認。

人気の投稿 (過去 30 日間)