2010年12月13日月曜日

groonga(mroonga)導入メモ

//groonga
// http://groonga.org/docs/index.html
//1.2.0
CC="gcc44" \
GCC="gcc44" \
CXX="g++44" \
CFLAGS="-march=native -O2 -m64 -pipe -fomit-frame-pointer -mfpmath=sse -msse4 -msse4.1 -msse4.2" \
CXXFLAGS="-march=native -O2 -m64 -pipe -fomit-frame-pointer -mfpmath=sse -msse4 -msse4.1 -msse4.2" \
./configure \
--host=x86_64-redhat-linux-gnu \
--build=x86_64-redhat-linux-gnu \
--target=x86_64-redhat-linux \
--program-prefix= \
--prefix=/usr/local/groonga \
--with-mecab \
--with-default-encoding=utf8

make -j4
sudo make install

//mroonga
// http://mroonga.github.com/index.html
tar xvf groonga-storage-engine-0.5.tar.gz

cd groonga-storage-engine-0.5

CC="gcc44" \
GCC="gcc44" \
CXX="g++44" \
CFLAGS="-march=native -O3 -m64 -pipe -fomit-frame-pointer -mfpmath=sse -msse4 -msse4.1 -msse4.2" \
CXXFLAGS="-march=native -O3 -m64 -pipe -fomit-frame-pointer -mfpmath=sse -msse4 -msse4.1 -msse4.2" \
PKG_CONFIG_PATH=/usr/local/groonga/lib/pkgconfig \
./configure \
--host=x86_64-redhat-linux-gnu \
--build=x86_64-redhat-linux-gnu \
--target=x86_64-redhat-linux \
--program-prefix= \
--prefix=/usr \
--exec-prefix=/usr \
--bindir=/usr/bin \
--sbindir=/usr/sbin \
--sysconfdir=/etc \
--datadir=/usr/share \
--includedir=/usr/include \
--libdir=/usr/lib64 \
--libexecdir=/usr/libexec \
--localstatedir=/var \
--sharedstatedir=/usr/com \
--mandir=/usr/share/man \
--infodir=/usr/share/info \
--with-mysql-source=/usr/local/src/mysql-5.5.8 \
--with-mysql-config=/usr/bin/mysql_config \
--with-mecab

make -j4
sudo make install

2010年11月29日月曜日

Thrift導入メモ

/*
*Thrift(スリフト)のインストール事前準備
*/
thriftでbootstrapをした際にautoconf-2.65以上を求められるので
予めバージョンアップしておく(CentOSだと駄目っだ)

cd /usr/local/src
wget ftp://ftp.gnu.org/gnu/autoconf/autoconf-2.68.tar.gz
tar zxvf autoconf-2.68.tar.gz
cd autoconf-2.68
CC="gcc44" \
GCC="gcc44" \
CXX="g++44" \
CFLAGS="-march=native -O3 -m64 -pipe -fomit-frame-pointer -mfpmath=sse -msse4 -msse4.1 -msse4.2" \
CXXFLAGS="-march=native -O3 -m64 -pipe -fomit-frame-pointer -mfpmath=sse -msse4 -msse4.1 -msse4.2" \
./configure \
--host=x86_64-redhat-linux-gnu \
--build=x86_64-redhat-linux-gnu \
--target=x86_64-redhat-linux \
--program-prefix= \
--prefix=/usr \
--exec-prefix=/usr \
--bindir=/usr/bin \
--sbindir=/usr/sbin \
--sysconfdir=/etc \
--datadir=/usr/share \
--includedir=/usr/include \
--libdir=/usr/lib64 \
--libexecdir=/usr/libexec \
--localstatedir=/var \
--sharedstatedir=/usr/com \
--mandir=/usr/share/man \
--infodir=/usr/share/info
make -j4
sudo make install

/*
*Thrift(スリフト)のインストール、設定
* http://wiki.apache.org/thrift/ThriftInstallation
* http://d.hatena.ne.jp/hagaeru3sei/20100729
*/
cd /usr/local/src
svn co http://svn.apache.org/repos/asf/thrift/trunk thrift
cd thrift

./bootstrap.sh

//libtoolizeが無いと怒られたら下記をインストール
sudo yum install automake libtool

//javaを利用するにはantが必須なのでインストール
sudo yum install ant.x86_64 byacc flex

//antを実行するときに下記ディレクトリがない場合エラーになるので作成
sudo mkdir /usr/share/java-1.6.0
sudo mkdir /usr/lib/java-1.6.0

//phpだけにした
CC="gcc44" \
GCC="gcc44" \
CXX="g++44" \
CFLAGS="-march=native -O3 -m64 -pipe -fomit-frame-pointer -mfpmath=sse -msse4 -msse4.1 -msse4.2" \
CXXFLAGS="-march=native -O3 -m64 -pipe -fomit-frame-pointer -mfpmath=sse -msse4 -msse4.1 -msse4.2" \
./configure \
--host=x86_64-redhat-linux-gnu \
--build=x86_64-redhat-linux-gnu \
--target=x86_64-redhat-linux \
--program-prefix= \
--prefix=/usr \
--exec-prefix=/usr \
--bindir=/usr/bin \
--sbindir=/usr/sbin \
--sysconfdir=/etc \
--datadir=/usr/share \
--includedir=/usr/include \
--libdir=/usr/lib64 \
--libexecdir=/usr/libexec \
--localstatedir=/var \
--sharedstatedir=/usr/com \
--mandir=/usr/share/man \
--infodir=/usr/share/info \
--enable-gen-php \
--disable-gen-java \
--disable-gen-cpp \
--disable-gen-c_glib \
--disable-gen-go \
--disable-gen-as3 \
--disable-gen-csharp \
--disable-gen-py \
--disable-gen-rb \
--disable-gen-perl \
--disable-gen-erl \
--disable-gen-cocoa \
--disable-gen-st \
--disable-gen-ocaml \
--disable-gen-hs \
--disable-gen-xsd \
--disable-gen-html \
--disable-gen-js \
--disable-gen-javame \
--with-php \
--with-php_extension \
--without-java \
--without-cpp \
--without-csharp \
--without-erlang \
--without-python \
--without-perl \
--without-ruby \
--without-haskel \
--without-go

//結果こうなるはず
Building code generators ..... : php

Building C++ Library ......... : no
Building C (GLib) Library .... : no
Building Java Library ........ : no
Building C# Library .......... : no
Building Python Library ...... : no
Building Ruby Library ........ : no
Building Haskell Library ..... : no
Building Perl Library ........ : no
Building PHP Library ......... : yes
Building Erlang Library ...... : no
Building Go Library .......... : no

Using php-config ............. : /usr/bin/php-config


//build
make -j4
sudo make install

//php用のライブラリをアクセス出来る箇所に移動
mkdir /var/www/library/Thrift
cp -rf lib/php/src/* /var/www/library/Thrift

//[追記]/usr/lib/phpに自動でinstallされてた
//あわせて/etc/php.d/thrift_protocol.iniも入っている
//手動はこちら
// cd lib/php
// sudo make install

//Cassandra - Thriftプロトコルを使用するために生成
cd /usr/local/cassandra/interface/
sudo cp -p cassandra.thrift cassandra.thrift.org
//cassandra.thrift内のnamespaceで始まる箇所で
//php以外をコメントアウト
sudo vi cassandra.thrift
sudo thrift --gen php cassandra.thrift
//あとはこれもアクセスできる箇所へ移動
// Thrift/packages/cassandraが多かったので合わせる
mkdir -p /var/www/library/Thrift/packages
cp -rf gen-php/cassandra /var/www/library/Thrift/packages/
sudo chown cassandra:cassandra -R gen-php

2010年11月14日日曜日

Cassandra導入メモ

/*
* Cassandra(カサンドラ)
*/
http://wiki.apache.org/cassandra/FrontPage
http://labs.unoh.net/2010/08/cassandra.html
http://www.pablowe.net/2010/03/cassandra-quick-install-on-centos-5/

cd /usr/local
//ここでダウンロード・展開
ln -s apache-cassandra-* cassandra
cd cassandra

//batは使わないので-x
chmod a-x bin/*.bat

groupadd cassandra
useradd -d /usr/local/cassandra -c Cassandra -g cassandra cassandra
chown cassandra:cassandra -R /usr/local/cassandra/*
mkdir -p /var/lib/cassandra; chown cassandra:cassandra /var/lib/cassandra
mkdir -p /var/log/cassandra; chown cassandra:cassandra /var/log/cassandra

//あとはconfを変更する
//cassandra.yamlでは基本的なディレクトリなどの設定
//cassandra-env.shのJMX_PORTなど(default:8080)


//起動用shell
cd /etc/init.d
wget http://www.pablowe.net/cassandra
vi cassandra
------------------------------------------------------------
#!/bin/bash
#
# /etc/init.d/cassandra
#
# Startup script for Cassandra
# http://www.pablowe.net/cassandra
#
# chkconfig: 2345 20 80
# description: Starts and stops Cassandra

#export JAVA_HOME=/usr/java/default
export CASSANDRA_HOME=/usr/local/cassandra/
export CASSANDRA_INCLUDE=/usr/local/cassandra/bin/cassandra.in.sh
export CASSANDRA_CONF=/usr/local/cassandra/conf
export CASSANDRA_OWNR=cassandra
export PATH=$PATH:$CASSANDRA_HOME/bin
log_file=/var/log/cassandra/cassandra.log
pid_file=/var/lib/cassandra/cassandra.pid

if [ ! -f $CASSANDRA_HOME/bin/cassandra -o ! -d $CASSANDRA_HOME ]
then
echo "Cassandra startup: cannot start"
exit 1
fi

case "$1" in
start)
# Cassandra startup
echo -n "Starting Cassandra: "
su $CASSANDRA_OWNR -c "$CASSANDRA_HOME/bin/cassandra -p $pid_file" > $log_file 2>&1
echo "OK"
;;
stop)
# Cassandra shutdown
echo -n "Shutdown Cassandra: "
su $CASSANDRA_OWN -c "kill `cat $pid_file`"
echo "OK"
;;
reload|restart)
$0 stop
$0 start
;;
status)
;;
*)
echo "Usage: `basename $0` start|stop|restart|reload"
exit 1
esac

exit 0

-----------------------------------------------------------------

chmod +x /etc/init.d/cassandra
chkconfig --add cassandra
chkconfig cassandra on

//実際はコンフィグとかログ変更があるけどここまでで動く
service cassandra start

//PATHとJAVA_HOMEを宣言しておく
vi /etc/profile
//一番下でよいので下記3行追加
//Ver SL6.0
export JAVA_HOME=/usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0.x86_64
export CLASS_PATH=$JAVA_HOME/lib/tools.jar
export PATH=$PATH:$JAVA_HOME/bin:/usr/local/cassandra/bin

2010年2月17日水曜日

Smart Array P410の設定をいじってみるメモ その2

SATAでRAID5を組んでみた
WESTERN DIGITAL WD5000BEVT (500GB 9.5mm) x 3

[xxxxx@sieben bonnie++-1.03e]$ ./bonnie++ -d /mnt/archive -u root
Using uid:0, gid:0.
Writing with putc()...done
Writing intelligently...done
Rewriting...done
Reading with getc()...done
Reading intelligently...done
start 'em...done...done...done...
Create files in sequential order...done.
Stat files in sequential order...done.
Delete files in sequential order...done.
Create files in random order...done.
Stat files in random order...done.
Delete files in random order...done.
Version 1.03e ------Sequential Output------ --Sequential Input- --Random-
-Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--
Machine Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP /sec %CP
sieben.g2labo.o 12G 82490 99 109201 15 25799 3 37131 68 77367 3 235.7 0
------Sequential Create------ --------Random Create--------
-Create-- --Read--- -Delete-- -Create-- --Read--- -Delete--
files /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP
16 64700 99 416501 99 78356 99 86318 100 928741 102 112787 100
sieben.g2labo.orz.hm,12G,82490,99,109201,15,25799,3,37131,68,77367,3,235.7,0,16,64700,99,416501,99,78356,99,86318,100,928741,102,112787,100

うーん思ってたより速い

2010年2月14日日曜日

nginx configureメモ

作業用PCのHDDが吹っ飛んだりしてメモが消えることがあったので
Bloggerに記録…

XEON E5520用
-march=nehalem、-msse4.1は使えなかった(gcc 4.1.2の為…)
-march=noconaとしてコンパイルしておく
2010-05-13
試しにgcc44,gcc44-c++をインストールしたので修正
-march=nativeで実施
→-march=core2 -mcx16 -msahf --param l1-cache-size=32 --param l1-cache-line-size=64 --param l2-cache-size=256 -mtune=core2
 として展開される
2011-05-21
SL6.0となり標準でgcc44へ
nginx-1.0となったので更新
2014-04-25
nginx-1.6となったので更新
2014-12-21
LibreSSLを利用する方法へ変更 
なお、この方法でLibreSSL2.1.2を利用した場合、失敗する
2015-02-17
nginx 1.7.10&LibreSSL2.1.3で実施した所、簡易に実行できることが判明したため改版
(途中でファイルの移動などが必要だったものが不要に)

改訂版 新卒ネットワークエンジニア
nginx+PHP-FPMでどこまでチューニングできるか
http://blog.kubox.info/?p=175
この記事が非常によさげ

ngx_pagespeed
https://github.com/pagespeed/ngx_pagespeed

------------------------------------------------------------
# LibreSSL
cd /usr/local/src
wget http://ftp.openbsd.org/pub/OpenBSD/LibreSSL/libressl-2.1.3.tar.gz

tar xvf libressl-2.1.3.tar.gz && cd libressl-2.1.3
CFLAGS="-march=native -O2 -m64 -pipe -fomit-frame-pointer -mfpmath=sse -msse4 -msse4.1 -msse4.2" \
CXXFLAGS="-march=native -O2 -m64 -pipe -fomit-frame-pointer -mfpmath=sse -msse4 -msse4.1 -msse4.2" \
./configure LDFLAGS=-lrt \
--host=x86_64-redhat-linux-gnu \
--build=x86_64-redhat-linux-gnu \
--target=x86_64-redhat-linux \
--program-prefix= \
--prefix=/usr \
--exec-prefix=/usr \
--bindir=/usr/bin \
--sbindir=/usr/sbin \
--sysconfdir=/etc \
--datadir=/usr/share \
--includedir=/usr/include \
--libdir=/usr/lib64 \
--libexecdir=/usr/libexec \
--localstatedir=/var \
--sharedstatedir=/usr/com \
--mandir=/usr/share/man \
--infodir=/usr/share/info
make -j4 check
sudo make install

--------------------------------------------------------------
# NGINX

cd /usr/local/src
wget http://nginx.org/download/nginx-1.7.10.tar.gz
tar xvf nginx-1.7.10.tar.gz && cd nginx-1.7.10

CFLAGS="-march=native -O2 -m64 -pipe -fomit-frame-pointer -mmmx -mfpmath=sse -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2" \
CXXFLAGS="-march=native -O2 -m64 -pipe -fomit-frame-pointer -mmmx -mfpmath=sse -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2" \
./configure \
--prefix=/usr \
--sbin-path=/usr/sbin/nginx \
--conf-path=/etc/nginx/nginx.conf \
--pid-path=/var/run/nginx.pid \
--lock-path=/var/lock/nginx.lock \
--error-log-path=/var/log/nginx/error_log \
--http-log-path=/var/log/nginx/access_log \
--user=nginx \
--group=nginx \
--with-file-aio \
--with-ipv6 \
--with-http_realip_module \
--with-http_addition_module \
--with-http_gzip_static_module \
--with-http_stub_status_module \
--with-http_spdy_module \
--with-http_ssl_module \
--with-poll_module \
--with-sha1-asm \
--with-sha1=/usr/include \
--http-client-body-temp-path=/tmp/nginx_client/ \
--http-proxy-temp-path=/tmp/nginx_proxy/ \
--http-fastcgi-temp-path=/tmp/nginx_fcgi/ \
--without-mail_pop3_module \
--without-mail_imap_module \
--without-mail_smtp_module \
--without-http_uwsgi_module \
--without-http_scgi_module \
--with-openssl=../libressl-2.1.3

make -j4
sudo make install
------------------------------------------------------------
追加 nginx-upload-module http://www.grid.net.ru/nginx/upload.en.html
--add-module=/usr/local/src/nginx_upload_module-2.2.0
追加 nginx-upload-progress-module
 http://wiki.nginx.org/HttpUploadProgressModule
--add-module=/usr/local/src/nginx-upload-module

NginxHttpUploadModuleを追加
git://github.com/vkholodkov/nginx-upload-module.git

------------------------------------------------------------

+NginxHttpUploadProgressModuleを追加
git clone https://github.com/masterzen/nginx-upload-progress-module.git

NGINXの./configure時に追加
--add-module=/usr/local/src/nginx-upload-progress-module

------------------------------------------------------------

2010年1月5日火曜日

PHP5.4 php-fpm作成時のconfigureメモ

ローカルでHDDが飛んで記録が消えたので
一部残ってたものをBloggerに残す

x86_64 PHP5.3/5.4 php-fpm

# yum install make gcc gcc-c++ pcre-devel openssl-devel subversion autoconf \
libevent-devel libxml2-devel bzip2-devel libcurl-devel libjpeg-devel libpng-devel \
freetype-devel gmp-devel libmcrypt-devel aspell-devel libxslt-devel expat-devel libtool-ltdl-devel expat-devel libmcrypt-devel

//RPMforgeの設定
// epelでも可
#yum install yum-conf-rpmforge.x86_64
#yum --enablerepo=rpmforge install libmcrypt-devel

//5.3.3からphp-fpmが初期から組み込まれたので下記は不要
//svn co http://svn.php.net/repository/php/php-src/trunk/sapi/fpm sapi/fpm
//./buildconf --force

CFLAGS="-march=native -O3 -m64 -pipe -fomit-frame-pointer -mfpmath=sse -msse4 -msse4.1 -msse4.2" \
CXXFLAGS="-march=native -O3 -m64 -pipe -fomit-frame-pointer -mfpmath=sse -msse4 -msse4.1 -msse4.2" \
./configure \
--host=x86_64-redhat-linux-gnu \
--build=x86_64-redhat-linux-gnu \
--target=x86_64-redhat-linux \
--program-prefix= \
--prefix=/usr \
--exec-prefix=/usr \
--bindir=/usr/bin \
--sbindir=/usr/sbin \
--sysconfdir=/etc \
--datadir=/usr/share \
--includedir=/usr/include \
--libdir=/usr/lib64 \
--libexecdir=/usr/libexec \
--localstatedir=/var \
--sharedstatedir=/usr/com \
--mandir=/usr/share/man \
--infodir=/usr/share/info \
--cache-file=./config.cache \
--with-libdir=lib64 \
--with-config-file-path=/etc \
--with-config-file-scan-dir=/etc/php.d \
--disable-debug \
--with-pic \
--disable-rpath \
--with-bz2 \
--with-curl \
--with-freetype-dir=/usr \
--with-png-dir=/usr \
--enable-gd-native-ttf \
--without-gdbm \
--with-gettext \
--with-gmp \
--with-iconv \
--with-jpeg-dir=/usr \
--with-openssl \
--with-png-dir \
--with-pspell \
--with-libexpat-dir=/usr \
--with-pcre-regex \
--with-zlib \
--with-layout=GNU \
--enable-exif \
--enable-ftp \
--enable-sockets \
--enable-sysvsem \
--enable-sysvshm \
--enable-sysvmsg \
--enable-wddx \
--with-kerberos \
--with-unixODBC=shared,/usr \
--enable-shmop \
--enable-calendar \
--with-libxml-dir=/usr \
--with-mysql=mysqlnd \
--with-mysqli=mysqlnd \
--with-gd \
--enable-xml \
--enable-dom \
--with-xsl \
--disable-dba \
--without-unixODBC \
--enable-xmlreader \
--enable-xmlwriter \
--enable-bcmath \
--enable-fpm \
--with-fpm-user=www \
--with-fpm-group=www \
--disable-short-tags \
--enable-json \
--enable-mbstring \
--enable-mbregex \
--with-mcrypt \
--with-mhash
#除外(PDO使用)
--disable-pdo

#除外(PEAR使用)
--without-pear

#廃止(5.3)
--without-odbc
--enable-memory-limit
--enable-track-vars
--enable-trans-sid
--enable-yp
--enable-dbx
--enable-dio
--without-mime-magic

#廃止(5.4)
--disable-magic-quotes
--enable-ucd-snmp-hack
--without-sqlite
--enable-sqlite-utf8