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

2016年1月21日木曜日

Chinachu + BonDriverProxy + TVTest によるリアルタイム視聴&recbondによる録画機能

この記事は過去に作成した「Chinachu + BonDriverProxy + TVTest によるリアルタイム視聴」の更新版の為、内容はほぼ同一です

  • OSをdebianからCentOSへ変更
  • 録画プログラムを同梱のsampleからrecbondを利用するよう変更

目的

  • Linux(CentOS or Debian)でPT3運用を行いたい
  • Chinachuを利用したルール予約&同時録画機能
  • TVTestでリアルタイム視聴を可能とする

注意事項

  1. Linuxサーバの構築および運用が可能な方を前提にしております
  2. サーバ側ではB25/MULTI2 復号を省略しています
    理由:ストリーミング再生する性能もないため、B25復号が不要(あとは実装できなかった)
    * 追記:sample.cppにb25デコードパッチを適用するとB25復号が可能となりました
  3. 当方の環境は名古屋/BS,CS無しのため、chinachuのチャンネル設定は都度変更してください
    ただしCSの場合sampleがsid指定出来ないため、視聴可否は確認できておりません
  4. ChinachuではEPG取得時に設定された全てのチューナーが利用されます
    よってTVTest視聴中に突然チャンネルが変更される場合があります

    * 追記:Chinachu config.json "noEpg: true"指定にてEPGスキャン除外が出来るようになりました

2015年2月17日火曜日

nginx + LibreSSL ビルド用shell

各種パラメータ類は環境に合わせて変更してください

2014年8月27日水曜日

Chinachu + BonDriverProxy + TVTest によるリアルタイム視聴&録画機能

目的

  • Linux(CentOS or Debian)でPT3運用を行いたい
  • Chinachuを利用したルール予約&同時録画機能
  • TVTestでリアルタイム視聴を可能とする

注意事項

  1. Linuxサーバの構築および運用が可能な方を前提にしております
  2. サーバ側ではB25/MULTI2 復号を省略しています
    理由:ストリーミング再生する性能もないため、B25復号が不要(あとは実装できなかった)
    * 追記:sample.cppにb25デコードパッチを適用するとB25復号が可能となりました
  3. 当方の環境は名古屋/BS,CS無しのため、chinachuのチャンネル設定は都度変更してください
    ただしCSの場合sampleがsid指定出来ないため、視聴可否は確認できておりません
  4. ChinachuではEPG取得時に設定された全てのチューナーが利用されます
    よってTVTest視聴中に突然チャンネルが変更される場合があります

    * 追記:Chinachu config.json "noEpg: true"指定にてEPGスキャン除外が出来るようになりました

2013年10月30日水曜日

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

5.6に更新
中身は5.5と代わり有りません

OPcache導入と合わせて整理
・disable-allを使いたかったが、pherやsimplexmlもNGとなるため断念

// yumは5.4流用(一部足りないものがあるはず)
# 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

これ以外にphalcon,xhprofモジュール導入

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-dba \
--disable-debug \
--disable-rpath \
--disable-short-tags \
--enable-bcmath \
--enable-calendar \
--enable-dom \
--enable-exif \
--enable-fpm \
--enable-ftp \
--enable-gd-native-ttf \
--enable-json \
--enable-libxml \
--enable-mbregex \
--enable-mbstring \
--enable-mysqlnd \
--enable-opcache \
--enable-pdo \
--enable-shmop \
--enable-soap \
--enable-sockets \
--enable-sysvmsg \
--enable-sysvsem \
--enable-sysvshm \
--enable-wddx \
--enable-xml \
--enable-xmlreader \
--enable-xmlwriter \
--enable-zip \
--with-curl \
--with-freetype-dir=/usr \
--with-gd \
--with-gettext \
--with-gmp \
--with-iconv \
--with-jpeg-dir=/usr \
--with-kerberos \
--with-layout=GNU \
--with-libexpat-dir=/usr \
--with-libxml-dir=/usr \
--with-mcrypt \
--with-mhash \
--with-mysql=mysqlnd \
--with-mysqli=mysqlnd \
--with-pdo-mysql=mysqlnd \
--with-openssl \
--with-pcre-regex \
--with-pic \
--with-png-dir \
--with-png-dir=/usr \
--with-unixODBC=shared,/usr \
--with-xsl \
--with-zlib \
--without-gdbm \
--without-unixODBC \
//ユーザ/グループは適宜修正
--with-fpm-group=nginx \
--with-fpm-user=nginx 
// openSUSEだとdevelがなくてNG
--with-bz2
--with-pspell
 
-----------------------------------------
systemdで起動するためのスクリプト
# cat /usr/lib/systemd/system/php-fpm.service
[Unit]
Description=The PHP FastCGI Process Manager
After=syslog.target network.target

[Service]
Type=forking
PIDFile=/var/run/php-fpm.pid
EnvironmentFile=/etc/sysconfig/php-fpm
ExecStart=/usr/sbin/php-fpm -D
ExecReload=/bin/kill -USR2 $MAINPID
PrivateTmp=true

[Install]
WantedBy=multi-user.target
-----------------------------------------
これで行けるはず
/etc/sysconfig/php-fpmが無いとエラーなのでtouchしてファイルを作成するか、
EnvironmentFileを空にする
またPIDFileはphp-fpm.confと合わせておくか--pidオプションで指定する 
 
 

2012年3月28日水曜日

ZFSメモ

pool作成
/dev/sd*でも作成できるのだが、再起動するとデバイス名が変更されるため接続箇所で設定
裏では/dev/sd*にリンクされているのでこれでも作成可能
udevでデバイス名を固定設定するより簡単


//storageはプール名
//raidz=raidz1≒RAID5相当(1本がパリティ)


# zpool create zfspool raidz -f \
/dev/disk/by-path/pci-0000:03:00.0-scsi-0:0:0:0 \
/dev/disk/by-path/pci-0000:03:00.0-scsi-1:0:0:0 \
/dev/disk/by-path/pci-0000:03:00.0-scsi-2:0:0:0 \
/dev/disk/by-path/pci-0000:03:00.0-scsi-3:0:0:0

//raid1+0構成
# zpool create zfspool \
mirror /dev/disk/by-path/pci-0000:03:00.0-scsi-0:0:0:0 \
/dev/disk/by-path/pci-0000:03:00.0-scsi-1:0:0:0 \
mirror /dev/disk/by-path/pci-0000:03:00.0-scsi-2:0:0:0 \
/dev/disk/by-path/pci-0000:03:00.0-scsi-3:0:0:0



---
プールのリスト
# zpool list


---
プールの状態
# zpool status


---
マウントポイントを設定
# zfs set mountpoint=/mnt/archive zfspool
//変更するとマウントが解除されるのでzfs mountが必要


---
zfsをマウント
# zfs mount [-a]


---
プール内のディスクを停止(offline)
# zpool offline storage /dev/~


---
プール内のディスクを起動(online)
# zpool online storage /dev/~

2011年12月27日火曜日

mysql-cluster ndb_mgmd 2台構成

サーバ2台でndb_mgmd, ndbd, mysqlを動かした際のメモ

 sv1      sv2
+----------+ +----------+
| ndb_mgmd | | ndb_mgmd |
|  ndbd  | |  ndbd  |
|  mysql | |  mysql |
+----------+ +----------+

*****************************************************

// sv1, sv2共通
# vi /var/lib/mysql-cluster/config.ini

-----------------------------------------------------
# Example Ndbcluster storage engine config file.
#
[ndbd default]
NoOfReplicas= 2
ServerPort = 63132
MaxNoOfConcurrentOperations= 10000
# DataMemory= 1G
# IndexMemory= 64M
TimeBetweenWatchDogCheck= 30000
DataDir= /var/lib/mysql-cluster
MaxNoOfOrderedIndexes= 512

[ndb_mgmd default]
DataDir= /var/lib/mysql-cluster

[ndb_mgmd]
Id = 1
HostName = sv1.kickitout.net

[ndb_mgmd]
Id = 2
HostName = sv2.kickitout.net

[ndbd]
Id = 11
HostName = sv1.kickitout.net

[ndbd]
Id = 12
HostName = sv2.kickitout.net

[mysqld]
Id = 21
HostName = sv1.kickitout.net

[mysqld]
Id = 22
HostName = sv2.kickitout.net

# choose an unused port number
# in this configuration 63132, 63133, and 63134
# will be used
[tcp default]
PortNumber= 63132
-----------------------------------------------------


// sv1 抜粋
# vi /etc/my.cnf

-----------------------------------------------------
[mysql_cluster]
ndb-connectstring = sv1.kickitout.net

[mysqld]
ndbcluster
ndb-connectstring = sv1.kickitout.net

[ndb_mgmd]
config_file=/var/lib/mysql-cluster/config.ini
-----------------------------------------------------


// sv2 抜粋
# vi /etc/my.cnf

-----------------------------------------------------
[mysql_cluster]
ndb-connectstring = sv2.kickitout.net

[mysqld]
ndbcluster
ndb-connectstring = sv2.kickitout.net

[ndb_mgmd]
config_file=/var/lib/mysql-cluster/config.ini
-----------------------------------------------------


*****************************************************

あとはiptablesで該当ポート1186,63132を開けておく
(忘れていてこれにはまった)

起動はndb_mgmd(sv1,sv2) -> ndbd(sv1,sv2) -> mysql(sv1,sv2)で順に行う

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

2009年12月30日水曜日

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

Smart Array P410i in Slot 0 (Embedded)
Bus Interface: PCI
Slot: 0
Serial Number:
Cache Serial Number:
RAID 6 (ADG) Status: Disabled
Controller Status: OK
Chassis Slot:
Hardware Revision: Rev C
Firmware Version: 2.72
Rebuild Priority: Medium
Expand Priority: Medium
Surface Scan Delay: 15 secs
Queue Depth: Automatic
Monitor and Performance Delay: 60 min
Elevator Sort: Enabled
Degraded Performance Optimization: Disabled
Inconsistency Repair Policy: Disabled
Wait for Cache Room: Disabled
Surface Analysis Inconsistency Notification: Disabled
Post Prompt Timeout: 0 secs
Cache Board Present: True
Cache Status: OK
Accelerator Ratio: 50% Read / 50% Write
Drive Write Cache: Disabled
Total Cache Size: 256 MB
No-Battery Write Cache: Enabled
Cache Backup Power Source: Batteries
Battery/Capacitor Count: 1
Battery/Capacitor Status: OK
SATA NCQ Supported: True

■Drive Write Cache: Disabledの場合
[xxxxx@sieben bonnie++-1.03e]$ ./bonnie++
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 54644 73 60837 12 22649 2 54692 81 56139 1 587.2 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 72582 100 412133 98 98934 100 70691 99 635702 100 94902 100
sieben.g2labo.orz.hm,12G,54644,73,60837,12,22649,2,54692,81,56139,1,587.2,0,16,72582,100,412133,98,98934,100,70691,99,635702,100,94902,100

■Drive Write Cache: Enabledの場合

[xxxxx@sieben bonnie++-1.03e]$ ./bonnie++
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 53561 74 81329 18 19345 2 53752 74 70574 3 364.9 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 87258 100 438074 98 129444 100 38488 45 939997 97 133011 99
sieben.g2labo.orz.hm,12G,53561,74,81329,18,19345,2,53752,74,70574,3,364.9,0,16,87258,100,438074,98,129444,100,38488,45,939997,97,133011,99

2009年7月12日日曜日

BRIDGEの作り方

BRIDGEの仕組みは非常に簡単です。
大きく分けると下記2つの処理となります。
・Webインターフェース(表示と受付)
・動画ダウンローダ
(昔はここにエンコードが有りました…)

順に説明をしていきます。

■Webインターフェース
言語はPHPでZendFrameworkを使用して作成しております。
viewエンジンとしてSmartyを併用し、出力とキャッシュをしております。

■動画ダウンローダ
言語はPerlで行い、LWPやCrypt、HTTP、DBIなんかがモジュールとして使用しております。

もちろんBRIDGEのコアとなるのがこの「動画ダウンローダ」になります。
とはいっても中身は検索すると出てくるニコニコ動画ダウンロードPerlスクリプトを元に
データベースとの連携を組み合わせた物です。

中身はサービス化(常駐)させる為のノウハウがつぎ込まれていますが、
それ以外に特殊なことはしておりません。
(コードとしては300行にも満たない)

当初は複数サーバを動かしても行けるような設計をしているため、
データベースにはトランザクションが出来るように設計しています。
今は複数サーバを置くリソースが無いためオーバースペックとなっていますが…

あとは既に設計されている物は流用してでも機能の実現を目指したため
そこら中ガタガタだったりします。

こんなメモ見る人はいないかと思いますが、同様のサービスを作りたい人の
参考になればと思います。