HipHop for PHP インストールログ

Amazon EC2 CentOS 64bit 版にインストール

インストールの準備(yum 系)

cd /usr/local/src
mkdir hiphop
cd hiphop
yum --enablerepo=rpmforge -y install git
yum install gcc44 cmake g++ libboost-dev flex bison re2c libmysqlclient-dev libxml2-dev libmcrypt-dev libicu-dev openssl binutils-dev libcap-dev libgd2-xpm-dev zlib1g-dev libtbb-dev libonig-dev libpcre3-dev git-core autoconf libtool libcurl4-openssl-dev libboost-system-dev libboost-program-options-dev libboost-filesystem-dev
yum remove libevent
yum install boost boost-devel
yum install mcrypt
yum install php-mcrypt libmcrypt mysql-libs php-mysql mysql libmemcached
yum install pcre-devel pcre
yum install libxml2-devel
yum install expat expat-devel
yum install bzip2

rpm -e mcrypt-2.6.8-1.el5.x86_64
rpm -e php-mcrypt-5.3.3-1.el5.remi.x86_64
rpm -e libmcrypt-2.5.8-4.el5.centos
yum install mcrypt libmcrypt bzip2-devel
yum install openldap-servers openldap-clients openldap-devel
yum install readline-devel
yum install libcap-devel libmcrypt-devel libssh2 openssl-devel re2c
yum install binutils-devel ncurses-devel

.bashrc_profile の設定

LD_LIBRARY_PATH=/usr/local/lib:/usr/lib:/usr/lib64
export LD_LIBRARY_PATH

export TBB20_INSTALL_DIR=/usr/local/tbb22_012oss
source $TBB20_INSTALL_DIR/intel64/cc4.1.0_libc2.4_kernel2.6.16.21/bin/tbbvars.sh

boost インストール

yum で入れられる boost が古すぎるため、入れる前に古いバージョンを削除すること /usr/local/include, /usr/local/lib, /usr/local/lib64 など

wget ftp://ftp.pbone.net/mirror/ftp.sourceforge.net/pub/sourceforge/h/project/hp/hphp/CentOS%205%2064bit/RPM/boost-1.37.0-1.x86_64.rpm
wget ftp://ftp.pbone.net/mirror/ftp.sourceforge.net/pub/sourceforge/h/project/hp/hphp/CentOS%205%2064bit/RPM/boost-devel-1.37.0-1.x86_64.rpm
rpm -Uvh boost-1.37.0-1.x86_64.rpm
rpm -Uvh boost-devel-1.37.0-1.x86_64.rpm

libevent インストール

wget http://www.monkey.org/~provos/libevent-1.4.13-stable.tar.gz
tar -xzvf libevent-1.4.13-stable.tar.gz
cd libevent-1.4.13-stable
cp ../hiphop-php/src/third_party/libevent.1.4.13.fb-changes.diff .
patch < libevent.1.4.13.fb-changes.diff

## patch はパスが通らないときは diff ファイルの中に書いてあるパスを変えたりする

./configure
make
make install
cd ..

鬼車インストール

wget http://www.geocities.jp/kosako3/oniguruma/archive/onig-5.9.2.tar.gz
tar xvfz onig-5.9.2.tar.gz
cd onig-5.9.2
./configure && make && sudo make install

libCurl インストール

wget http://curl.haxx.se/download/curl-7.20.0.tar.gz
tar -xvzf curl-7.20.0.tar.gz
cd curl-7.20.0
cp ../hiphop-php/src/third_party/libcurl.fb-changes.diff .

## libcurl.fb-changes.diff を修正ここから
curl-old/include/curl/multi.h       20 May 2008 10:21:50 -0000      1.45
curl-new/include/curl/multi.h       29 Jan 2010 23:45:18 -0000
を
include/curl/multi.h        20 May 2008 10:21:50 -0000      1.45
include/curl/multi.h        29 Jan 2010 23:45:18 -0000
に。

curl-old/lib/multi.c        28 Jan 2010 15:34:18 -0000      1.210
curl-new/lib/multi.c        29 Jan 2010 23:45:19 -0000
を
lib/multi.c 28 Jan 2010 15:34:18 -0000      1.210
lib/multi.c 29 Jan 2010 23:45:19 -0000
に。
##

patch -p0 < libcurl.fb-changes.diff
./configure
make
make install
cd ..

TBB の設定

参考:http://www.threadingbuildingblocks.org/ver.php?fid=161

wget http://www.threadingbuildingblocks.org/uploads/78/146/2.2%20update%202/tbb22_012oss_lin.tgz
tar zxvf tbb22_012oss_lin.tgz
mv tbb22_012oss /usr/local/.
export TBB_INSTALL_DIR="/usr/local/tbb22_012oss"
export TBB_ARCH_PLATFORM="$TBB_INSTALL_DIR/intel64/cc4.1.0_libc2.4_kernel2.6.16.21"

パス設定および Hiphop for PHP のビルド (hiphop アカウント)

cd hiphop-php
git clone git://github.com/facebook/hiphop-php
cd hiphop-php/
git submodule init
git submodule update
export HPHP_HOME=`/bin/pwd`
export HPHP_LIB=`/bin/pwd`/bin
export CC=gcc44
export TBB_INSTALL_DIR="/usr/local/tbb22_012oss"
export TBB_ARCH_PLATFORM="$TBB_INSTALL_DIR/intel64/cc4.1.0_libc2.4_kernel2.6.16.21"
cmake .
make

export の設定がよくわからないけど一度 source .bash_profile を cmake する前にやり直したりしてた。cmake は一度失敗すると CMakeFilters や *.cmake を削除しないと中間ファイルが邪魔してエラーが取れないので、該当ファイルを削除するかいったんすべて削除して git clone しなおすのがよい。

Thrift を PHP で使って Cassandra に接続

すでに Cassandra はインストール済みのこと。

参考:ThriftをインストールしてPHPからCassandraを使う

Thrift インストール

yum install python-devel boost-devel libtool flex bison ruby-devel libevent-devel
wget http://www.meisei-u.ac.jp/mirror/apache/dist//incubator/thrift/0.4.0-incubating/thrift-0.4.0.tar.gz
tar zxvf thrift-0.4.0.tar.gz
cd thrift-0.4.0
./configure && make && make install
thrift -version

PHP の準備

wget http://download.fedora.redhat.com/pub/epel/5/x86_64/epel-release-5-4.noarch.rpm
wget http://rpms.famillecollet.com/enterprise/remi-release-5.rpm
rpm -Uvh remi-release-5*.rpm epel-release-5*.rpm
yum --enablerepo=remi,epel install mysql*
yum --enablerepo=remi,epel install php-devel php php-mysql php-mcrypt php-mbstring  gd-devel libpng-devel libjpeg-devel php-gd php-xml php-pear
cp /usr/local/cassandra/interface/cassandra.thrift /home/[username]/module/
cd /home/[username]/module
thrift --gen php /home/[username]/module/cassandra.thrift
ls /home/[username]/module/gen-php/cassandra
mkdir -p /home/[username]/script/thrift_test/cassandra
cp -r /usr/local/src/thrift-0.4.0/lib/php/src/* /home/[username]/script/thrift_test/cassandra/.
mkdir -p /home/[username]/script/thrift_test/cassandra/packages/cassandra
cp -r /home/[username]/module/gen-php/cassandra /home/[username]/script/thrift_test/cassandra/packages/.

Cassandra インストールログ

http://d.hatena.ne.jp/terurou/20100416/1271397190 ほぼそのままですが、起動できました。

JDK インストール

Java SE Downloads - Sun Developer Network(http://www.oracle.com/technetwork/java/javase/downloads/index.html)から JDKrpm をインストール

cd /usr/local/src
wget [該当の jdk ファイルのパス]
mv jdk-* jdk.rpm.bin
chmod +x jdk.rpm.bin
./jdk.rpm.bin

Cassandra インストール

現時点では 0.6.6 が最新版

wget ftp://ftp.riken.jp/net/apache//cassandra/0.6.6/apache-cassandra-0.6.6-bin.tar.gz
tar xvf apache-cassandra-0.6.6-bin.tar.gz
mv apache-cassandra-0.6.6 /usr/local/apache-cassandra-0.6.6
ln -s /usr/local/apache-cassandra-0.6.6/ /usr/local/cassandra

/etc/profile 編集

export JAVA_HOME=/usr/java/default
export PATH=$PATH:/usr/local/cassandra/bin

/usr/local/cassandra/conf/storage-conf.xml の編集

 0.0.0.0 に変更
  43200 に変更

/usr/local/cassandra/conf/log4j.properties の編集

log4j.rootLogger=INFO,R

/usr/local/cassandra/bin/cassandra.in.sh の編集

Dcom.sun.management.jmxremote.port=8081 \ //ポート変更
Xms128M \ //ヒープサイズ変更
Xmx1G \

起動スクリプト

/usr/local/bin/casactl として保存、chmod +x /usr/local/bin/casactl で実行権限付与

#!/bin/sh
case "$1" in
    start)
        if [ ! -d /var/cassandra ]; then
            mkdir /var/cassandra
        fi
        cassandra -p /var/cassandra/cassandra.pid
        echo "running cassandra"
        ;;
    stop)
        kill `cat /var/cassandra/cassandra.pid`
        rm -f /var/cassandra/cassandra.pid
        echo "stopped cassandra"
        ;;
    *)
        echo "Usage: $0 {start|stop}"
        exit 1
esac
exit 0

いったんログアウトなどして /ect/profile の設定を反映させる

起動・停止

casactl start //起動
casactl stop //停止

クライアントからの接続

cassandra-cli -host localhost -port 9160
show keyspaces //KeySpace 一覧が出れば OK
exit

さくらインターネットのスタンダードプランに PECL の OAuth をインストールする方法

curl 関連でエラーが出るので普通に入れても入らない。

export PHP_AUTOCONF=autoconf
export PHP_AUTOHEADER=autoheader
mkdir usr
cd usr
pecl bundle oauth-1.0.0
phpize
./configure

ここでエラーが出るが、curl.h の位置:/usr/local/include

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/username/usr/oauth/modules
export LD_RUN_PATH=$LD_RUN_PATH:/home/username/usr/oauth/modules
make
cd
mkdir -p local/lib/php/extensions
ln -s /home/username/usr/oauth/modules/oauth.so /home/username/local/lib/php/extensions/oauth.so

php.ini

extension_dir=/home/username/local/lib/php/extensions
extension=oauth.so 

Amazon EC2 で LAMP

small で運用 community におちてる AMI CentOS 5.5

passwd root
cp -p /usr/share/zoneinfo/Japan /etc/localtime
chkconfig anacron off
chkconfig avahi-daemon off
chkconfig bluetooth off
chkconfig cups off
chkconfig gpm off
chkconfig hidd off
chkconfig ip6tables off
chkconfig irda off
chkconfig isdn off
chkconfig rpcgssd off
chkconfig rpcidmapd off
chkconfig portmap off
chkconfig readahead_early off
chkconfig pcscd off
chkconfig yum-updatesd off
cd /usr/local/src
wget http://download.fedora.redhat.com/pub/epel/5/x86_64/epel-release-5-4.noarch.rpm
wget http://rpms.famillecollet.com/enterprise/remi-release-5.rpm
rpm -Uvh remi-release-5*.rpm epel-release-5*.rpm
yum --enablerepo=remi,epel install php-devel php php-mysql php-mcrypt php-mbstring  gd-devel libpng-devel libjpeg-devel php-gd php-xml php-pear
yum install httpd httpd-devel
wget http://pecl.php.net/get/APC-3.1.3p1.tgz
tar zxvf APC-3.1.3p1.tgz
cd APC-3.1.3p1
phpize
./configure && make && make install

Volumes から EBS 追加、available になったら
yes | mkfs -t ext3 /dev/sdf
mkdir /vol
mount /dev/sdf /vol

Mac OSX 開発環境の設定

MacPorts インストール

  1. 付属品の Mac OSX Install DVD の中にある xcode インストール
  2. http://www.macports.org/ から OSX Snow Leopard 用をインストール
  3. MacPorts のアップデート
    • sudo port selfupdate
    • sudo port sync

Apache2 インストール

  • sudo port install apache2
  • sudo launchctl load -w /Library/LaunchDaemons/org.macports.apache2.plist

MySQL 5.1.44 インストール

  • sudo port install mysql5-server

Mac OSX 自体の設定

シェルの接頭文字を変更

[システム環境設定]→[共有]→コンピュータ名を変更

FileVault 設定

[システム環境設定]→[セキュリティ]→ FileVault 有効

root パスワード変更

  • sudo passwd root

フォルダ名を英語に変更

  • rm ~/Downloads/.localized
  • rm ~/Documents/.localized
  • rm ~/Sites/.localized
  • rm ~/Library/.localized

.DS_Store ファイルを作成不可

  • defaults write com.apple.desktopservices DSDontWriteNetworkStores true

SSH セキュリティ設定

/etc/sshd_config 変更

  • PermitRootLogin no
  • PasswordAuthentication no