備忘録の最近のブログ記事

mongosが安定してきたので一安心。

==
ディレクトリ作る(ec2の場合とりあえず、/mnt以下へ)
==

$ sudo mkdir /mnt/data/shards
$ sudo mkdir /mnt/data/shards/0 /mnt/data/shards/1 /mnt/data/shards/2
$ sudo mkdir /mnt/data/shards/config
$ sudo chown mongodb:mongodb -R /mnt/data/shards

==
mongosの設定
==

$ sudo -u mongodb -H mongo
> use admin
> db.runCommand( {addshard : "localhost:27020", allowLocal : true} );
> db.runCommand( {addshard : "localhost:27021", allowLocal : true} );
> db.runCommand( {addshard : "localhost:27022", allowLocal : true} );

# Listing shards
> db.runCommand( { listshards : 1 } );

#Enabling Sharding on a Database
> db.runCommand( { enablesharding : "dbname" } );

#Sharding a Collection
> db.runCommand( { shardcollection : "dbname.collection_name" , key : { "_id" : 1 } , unique : true } );

==
簡易スタートスクリプト
==

#!/bin/bash

sudo -u mongodb -H mongod \
--configsvr \
--dbpath /mnt/data/shards/config \
--fork \
--port 27019 \
--logpath /var/log/mongodb/mongodb.config.log  &

sleep 2

sudo mongos \
-vvv \
--port 27017 \
--fork \
--configdb localhost:27019 \
--logpath /var/log/mongodb/mongos.log  &

sleep 2

sudo -u mongodb -H mongod \
--shardsvr \
--port 27020 \
--fork \
--dbpath /mnt/data/shards/0 \
--logpath /var/log/mongodb/mongodb.shard.log &

sudo -u mongodb -H mongod \
--shardsvr \
--port 27021 \
--fork \
--dbpath /mnt/data/shards/1 \
--logpath /var/log/mongodb/mongodb.shard.log &

sudo -u mongodb -H mongod \
--shardsvr \
--port 27022 \
--fork \
--dbpath /mnt/data/shards/2 \
--logpath /var/log/mongodb/mongodb.shard.log  &

print '-------------------------------------'
ps -o pid,command ax | grep mongos | grep -v grep |cut -d' ' -f1
print '-------------------------------------'

ps -o pid,command ax | grep mongos | grep -v grep |cut -d' ' -f1 > /tmp/mongo.pid

久々に設定、

$ sudo apt-get install fetchmail

後、

$ vi $HOME/.fetchmailrc

==中身==

poll imap.gmail.com proto imap port 993
    user "アカウント名@gmail.com" password "パスワード"
    keep
    ssl
    mda "/usr/bin/procmail"

========

$ chmod 600 .fetchmailrc

そして、

$ sudo apt-get install procmail

後、

$ vi .procmailrc

==中身==

PATH=$HOME/bin:/usr/bin:/usr/local/bin
MAILDIR=$HOME/Maildir
DEFAULT=$MAILDIR/inbox/.
LOGFILE=$MAILDIR/procmail.log
LOCKFILE=$HOME/.lockmail

========

$ fetchmail -v

これで定期的にメールを取得して、メールを軸に何らかの処理可能。

2 servers results

Web Sever: Nginx 0.7* + Tornado 0.2
                   using nginx 5 load balancers
                  worker processes 5
                  worker connections 1024

DB Server: mongodb 1.5.1 shards

====
$ ab -n 10000 -c 25 http://****.***/
This is ApacheBench, Version 2.3 <$Revision: 655654 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/

Benchmarking ****.*** (be patient)
Completed 1000 requests
Completed 2000 requests
Completed 3000 requests
Completed 4000 requests
Completed 5000 requests
Completed 6000 requests
Completed 7000 requests
Completed 8000 requests
Completed 9000 requests
Completed 10000 requests
Finished 10000 requests


Server Software:        TornadoServer/0.1
Server Hostname:        ****.***
Server Port:            80

Document Path:          /
Document Length:        4259 bytes

Concurrency Level:      25
Time taken for tests:   139.086 seconds
Complete requests:      10000
Failed requests:        1469
   (Connect: 0, Receive: 0, Length: 1469, Exceptions: 0)
Write errors:           0
Non-2xx responses:      1469
Total transferred:      38561669 bytes
HTML transferred:       36470146 bytes
Requests per second:    71.90 [#/sec] (mean)
Time per request:       347.716 [ms] (mean)
Time per request:       13.909 [ms] (mean, across all concurrent requests)
Transfer rate:          270.75 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:      106  108  42.5    107    3106
Processing:   108  239 221.4    200    3539
Waiting:      108  239 221.3    200    3539
Total:        214  347 225.2    307    3646

Percentage of the requests served within a certain time (ms)
  50%    307
  66%    356
  75%    392
  80%    419
  90%    482
  95%    530
  98%    602
  99%    664
 100%   3646 (longest request)

==
mongodbが2回ほど、open fileを振り切って、connectionエラー、 ulimitをマックスまであげるが同じ。
なので、monitを使って、can not open fileになったら、サーバーリスタートで対応。
KeyRemap4MacBook インストール
system pref -> For Japanese -> Remap Space Key -> Shift+Space to KANNA/EISUU

command+spaceでの変換になれていないので、だいぶ楽になった。



xcode  と  mac port をインストール

そして

$ sudo port install boost pcre
$
sudo port install spidermonkey
$ sudo port mongo

# ついでにpymongoも
$ sudo easy_install pymongo

参照: mongodb
http://www.mongodb.org/display/DOCS/Building+for+OS+X?showComments=true&showCommentArea=true

tornadoも同じ、(xcodeを入れてコンパイル環境を用意する)

で、
$ sudo easy_install setuptools pycurl==7.16.2.1 simplejson
$ git cloan git://github.com/facebook/tornado.git
$ cd tornado
$ python setup.py build
$ sudo python setup.py install

mongodbを検証するためにインストール

1. 必要なパッケージのインストール

sudo apt-get install tcsh git-core scons g++
sudo apt-get install libpcre++-dev libboost1.37-dev libreadline-dev libmozjs-dev xulrunner-dev

2. ダウンロードしてインストール
cd /usr/local
git clone git://github.com/mongodb/mongo.git
cd mongo
sudo scons all
sudo scons --prefix=/opt/mongo install

3. 実験用に任意のデータディレクトを作る

mkdir data

4. デーモンを起動
sudo /opt/mongo/bin/mongod --dbpath /path/to/db &

5. pymongoをインストール
sudo easy_install pymongo

6. 接続テスト
http://pypi.python.org/pypi/pymongo/

この辺りも参照:
http://www.mongodb.org/display/DOCS/Building+for+Linux

かなり手軽に





https://wave.google.com/wave/#minimized:search,restored:wave:googlewave.com!w%252BQ_RzOoZOA

ここにありました。
pythonとtracのバージョンの整合性があっていないので、パッケージからtracを入れると添付ファイルがうまくアップロードできないので、、、

$ sudo apt-get  remove trac

でトラックを削除して、

$ sudo easy_install http://svn.edgewall.org/repos/trac/tags/trac-0.11.4

でインストールして、

$ sudo /etc/init.d/apache2 restart

でリスタート



github my new repos

| コメント(0)
zend fremework default tree

カスタマイズしたzfproject.xml は Zend_Tool_Projectのzf コマンドで create project するときに使えます。


安いVPSのレンタルサーバー 借りてやってみる。


1. ルートでログイン
    # login: root

2. rootでのログインを切り、sshdをリロード
    # vi /etc/ssh/sshd_config
    # /etc/init.d/ssh reload
        - 下記のパラメータを変更
            PermitRootLogin=no

3. apt listをアップデート
    # apt-get update

4. editorとsudoをインストール
    # apt-get install vim sudo

5. ユーザを追加
    # adduser <username>

6. 追加したユーザにsudoでルート権限を与える
    # visudo
        - 下記の設定を追加
            <username> ALL=(ALL) ALL

7. ホスト名を設定
    # echo '<domain.name>' > /etc/hostname
    # hostname -F /etc/hostname
    # vi /etc/hosts
        - ローカルホストの設定を下記に変える
            127.0.0.1  <domain.name>  localhost localhost.localdomain

8. 時刻を合わせる確認する
    # apt-get install ntp
    # ntpq -p

9. ローケルの設定にja_JP.utf8を追加する
    # sudo locale-gen ja_JP.UTF-8

10. 必要なパッケージをインストール
    - web系
    # apt-get install apache2-mpm-prefork

    - 言語系
    # apt-get install php5 php-pear

    - DB系 ※パスワードは設定しない
    # apt-get install mysql-client mysql-server mysql-common php5-mysql

    - 開発系
    # apt-get install subversion libapache2-svn subversion-tools trac trac-ja-resource

    - メール系 ※internet siteでインストール
    # apt-get install postfix

安いVPSのレンタルサーバー

登録した一般ユーザでログインをしなおし、サービスの設定。。。

1. ドキュメントルートのベースを作成

    $ sudo mkdir -p /home/www/<domain.name>/
    $ sudo chown www-data:www-data /home/www/<domain.name>/


2.ZendLibraryをチェックアウトする

    $ cd /home/www/<domain.name>/
    $ sudo -u www-data -H svn checkout http://framework.zend.com/svn/framework/standard/trunk/library


3. subversionの設定の前にsudoに下記の設定を行う

    $ sudo visudo
    # www-data ALL=(ALL) NOPASSWD: /usr/bin/svn
    # <username> ALL=(ALL) NOPASSWD: /usr/bin/svn
    # <username> ALL=(ALL) ALL


4. www-dataグループに<username>を追加しておく

    $ sudo usermod -G www-data <username>


5. レポジトリの作成と属性設定

    $ cd /home/www/<domain.name>/
    $ sudo -u www-data -H mkdir repos
    $ sudo -u www-data -H svnadmin create --fs-type fsfs repos
    $ find ./repos  -type d | xargs sudo chmod 2775
    $ find ./repos  -type f | xargs sudo chmod 664


6. フレームワークを準備しプロジェクトをインポートしておく

    - ユーザホームに bin を作りZend_Toolを使えるようにする
    - [参照サイト] http://framework.zend.com/manual/ja/
    $ cd $HOME
    $ mkdir bin
    $ cd /home/<username>/bin
    $ wget http://framework.zend.com/svn/framework/standard/trunk/bin/zf.sh
    $ wget http://framework.zend.com/svn/framework/standard/trunk/bin/zf.php
    $ mv zf.sh zf
    $ chmod 755 zf

    - zf.phpのzf_main()の上に下記のコードを追加
    set_include_path('/home/www/<domain.name>/library');

    - 環境変数を再読み込み
    $ source .profile
    - 起動を確認する

    $ zf show version
    output: Zend Framework Version: 1.X.X

    - ローカルにworkingディレクトリを作りレポジトリをチェックアウト
    $ cd
    $ mkdir -p work/www
    $ cd work/www
    $ svn co file:///home/www/<domain.name>/repos <domain.name>

    - チェックアウトしたレポジトリに入りプロジェクト追加
    $ cd <domain.name>
    $ zf create project trunk

    - libraryはエイリアスで指定するので消す
    $ cd trunk
    $ rm -r library

    - trunkと同じ階層にディレクトリを追加
    $ cd ../trunk
    $ mkdir scripts tags

    - プロジェクト初期ディレクトリ構造
     scripts
     tags
     trunk
     |-- application
     |   |-- Bootstrap.php
     |   |-- configs
     |   |   `-- application.ini
     |   |-- controllers
     |   |   |-- ErrorController.php
     |   |   `-- IndexController.php
     |   |-- models
     |   `-- views
     |       |-- helpers
     |       `-- scripts
     |           |-- error
     |           |   `-- error.phtml
     |           `-- index
     |               `-- index.phtml
     |-- public
     |   `-- index.php
     `-- tests
         |-- application
         |   `-- bootstrap.php
         |-- library
         |   `-- bootstrap.php
         `-- phpunit.xml

    - 初期ディレクトリをreposに追加する
    $ svn add ./*
    $ svn ci

    - 初期タグを作っておく
    $ sudo -u www-data -H svn copy -m "Creating tag:1.0.0" file:///home/www/<domain.name>/repos/trunk file:///home/www/<domain.name>/repos/tags/1.0.0

    - 次にテストサイトに初期プロジェクトを反映させる
    $ sudo -u www-data -H svn checkout file:///home/www/<domain.name>/repos/trunk /home/www/<domain.name>/test
    $ sudo -u www-data -H svn checkout file:///home/www/<domain.name>/repos/scripts /home/www/<domain.name>/scripts

    - test以下にlibraryのシンボリックリンクを設定する
    $ cd /home/www/<domain.name>/test
    $ sudo -u www-data -H ln -s ../library library

7. post-commitの設定に下記を追加

    - これによりコミットログをメールにて通知することが可能
    - また、コミットごテストサイトをアップデートかけるので動作確認とれる
    $ cd /home/www/<domain.name>/repos/hooks
    $ sudo -u www-data -H cp post-commit.tmpl post-commit
    $ sudo chmod 755 post-commit

    - 下記のコードをpost-commitの一番下に追加
    /usr/share/subversion/hook-scripts/commit-email.pl "$REPOS" "$REV" --from commit-watcher@<mailhost.name> commit-watcher@<domain.name>
    sudo -u www-data -H svn update /home/www/<domain.name>/test/
    sudo -u www-data -H svn update /home/www/<domain.name>/scripts/

    - メールの設定で/etc/aliasesに下記を追記
    $ sudo vi /etc/aliases
    commit-watcher: <watcher.mail.1>,<watcher.mail.2>

    - メールaliase追加後設定を反映させる
    $ sudo newaliases
    $ sudo /etc/init.d/postfix reload

8. tracの設定

    $ sudo -u www-data -H trac-admin /home/www/<domain.name>/trac initenv
    $ cd /home/www/<domain.name>/trac
    $ sudo -u www-data -H mkdir tmp
    $ sudo -u www-data -H touch passwd.db
    $ sudo -u www-data -H chmod 2775 tmp

    - trac.iniの文字コードを変更しておく
    default_charset = UTF-8

    - passwd.dbにユーザを追加しておく
    $ sudo -u www-data -H htpasswd -m /home/www/<domain.name>/trac/passwd.db <username>

    - 上記で追加したユーザにTRAC_ADMINの権限を与える
    $ sudo -u www-data -H trac-admin /home/www/<domain.name>/trac/
    Trac [/home/www/<domain.name>/trac]> permission add <username> TRAC_ADMIN


9. tracのユーザアカウント管理設定をする

    - アカウントマネージャープラグインをインストールして置く
    - [参照サイト] http://trac-hacks.org/wiki/AccountManagerPlugin
    $ sudo easy_install http://trac-hacks.org/svn/accountmanagerplugin/0.11

    - tracにログインし上部の管理メニューに入り左メニューのプラグインを選択する
    - TracAccountManagerを選び AccountManagerAdminPage / AccountManager / HtPasswdStore 有効にする
    - tracをリロードする
    - 左メニューにAccountが出てくるので、そこのconfigurationを選択し、htpasswdstorgを[1]にしfilenameに[passwd.db]と入力
    - 次にusersを選びユーザ管理の設定を行う


10. apacheの設定

    - rewriteを有効にする
    $ sudo a2enmod rewrite

    - <domain.name>のファイルを/etc/apache2/sites-availableに置く
    $ cd /etc/apache2/sites-available
    $ sudo touch test.<domain.name>

    - 設定後、設定ファイルを有効にする
    $ sudo a2ensite test.<domain.name>
    $ sudo a2dissite default
    $ sudo /etc/init.d/apache2 reload

10. apacheの設定

    - rewriteを有効にする
    $ sudo a2enmod rewrite

    - <domain.name>のファイルを/etc/apache2/sites-availableに置く
    $ cd /etc/apache2/sites-available
    $ sudo touch test.<domain.name>

    - 設定後、設定ファイルを有効にする
    $ sudo a2ensite test.<domain.name>
    $ sudo a2dissite default
    $ sudo /etc/init.d/apache2 reload

11. subversionサーバーの設定

    - apacheモジュールをインストール
    $ sudo a2enmod dav dav_fs dav_svn
    $ sudo /etc/init.d/apache2 restart


12. zfにlayouts追加
    - [参照サイト] http://framework.zend.com/manual/ja/zend.application.quick-start.html
    - 下部の説明を参照
    - layoutsはviews以下に作る

13.apache  config sample

<VirtualHost *:80>

    <IfModule mod_headers.c>
        Header set X-Powered-By "PHP5 ZendFramwork"
    </IfModule>

    ServerName <domain.name>
    ServerAlias www.<domain.name>
    ServerSignature Off
    RewriteEngine On
    RewriteRule ^(.*)$ http://<domain.name>$1 [R]
</VirtualHost>

<VirtualHost *:80>

    ServerName <domain.name>
    ServerAdmin www-data@<domain.name>

    DocumentRoot /home/www/<domain.name>/test/public

    <IfModule mod_headers.c>
        Header set X-Powered-By "PHP5 ZendFramwork"
    </IfModule>

    ErrorLog /var/log/apache2/<domain.name>-error.log
    CustomLog /var/log/apache2/<domain.name>-access.log combined env=!nolog

    <Directory /home/www/<domain.name>/test/public>

        ServerSignature Off

        Options FollowSymLinks
        AllowOverride ALL
        DirectoryIndex index.php
        AddType application/x-httpd-php .php

        AuthType Basic
        AuthName "<domain.name> Login"
        AuthUserFile /home/www/<domain.name>/trac/passwd.db
        Require valid-user

    </Directory>

    alias /tracdocs /usr/share/trac/htdocs/
    ScriptAlias /trac /usr/share/trac-ja-resource/cgi-bin/trac.cgi
    <Location /trac>
        SetEnv PYTHON_EGG_CACHE /home/www/<domain.name>/trac/tmp
        SetEnv TRAC_ENV "/home/www/<domain.name>/trac/"
    </Location>

    <Location /svn>
        DAV svn
        SVNPath /home/www/<domain.name>/repos
        AuthType Basic
        AuthName "Svn Repository"
        AuthUserFile /home/www/<domain.name>/trac/passwd.db
        Require valid-user
    </Location>

</VirtualHost>

安いVPSのレンタルサーバー


このアーカイブについて

このページには、過去に書かれたブログ記事のうち備忘録カテゴリに属しているものが含まれています。

前のカテゴリはグルメです。

次のカテゴリは思うことです。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。