phpフレームワーク選定のまき

Filed in php | Xrea | さくらのVPS Leave a comment

Symfony CakePHP ZendFreamWork CodeIgniter Ethna
フレームワークの選定はこのへんの線で考えてたんですが、CodeIgniterで決まりそう。
sessionが微妙みたいな書き込みあったんですが、どのみちWebサーバ複数台になるのでDBかなんかに値渡すハメになるしね。もんだいなかろ。
ZendFWもさらっと触ったんですが、学習コストが大きいという感触。
良い悪いと言うよりは用途と好みの世界ではある。
ZendFWで一番びっくりしたのは、ドキュメントだけで200MB超えてたこと。なんなの。
早めに触ってみて、致命的な問題が埋まってないかどうか確認しないとね。

さしあたりこれらの環境(php5+MySQL+CodeIgniter+Twig)を、自分ちのローカルとxreaにセットアップ。xreaは研修の見本用。
自分のPCにMySQL入れるのやだなあ。
入れる必要もないなあ。
自宅鯖に入ってた。これでいいじゃん。

さくらのVPSにphp5.3をインストール

Filed in php | さくらのVPS Leave a comment

検索で引っかかった悲惨な方へ:あちこちに記事上がってるのでちゃんとしたのはそちらを読みましょう。
ここはおねーさんのメモ書きです。
http://www.tooyama.org/yum-addrepo-epel.html
ここ見ればだいたい分かるはず。EPELってなんなのっていう疑問は丸呑みで。

calltellaさんとこも参考になる記事がワラワラある。

以下は自分用のメモ書き

さくらVPS:php5.4インストール試行

yumで普通に入れると
php -v
PHP 5.1.6 (cli) (built: Feb 22 2012 19:21:52)
ありえん。

まず環境チェック
http://support.sakura.ad.jp/manual/vps/ossetup.html
インストールOS :CentOS 6.2 x86_64
6だった

以下の手順は
http://www.tooyama.org/yum-addrepo-epel.html
ここみながら行う

優先度を設定するyum-priorities
yum -y install yum-priorities

cd /etc/yum.repos.d
vi /etc/yum.repos.d/CentOS-Base.repo
priorityをあちこちに付加
vimじゃなくてviがインストールされてたので、最初コピペして少々ビビる

EPELをインストール
# wget http://ftp-srv2.kddilabs.jp/Linux/distributions/fedora/epel/6/x86_64/epel-release-6-5.noarch.rpm
# rpm -ivh epel-release-6-5.noarch.rpm

これだとだめで↓
warning: epel-release-6-5.noarch.rpm: Header V3 RSA/SHA256 signature: NOKEY, key ID ********
error: Failed dependencies:以下略

# wget http://ftp-srv2.kddilabs.jp/Linux/distributions/fedora/epel/5/x86_64/epel-release-5-4.noarch.rpm
# rpm -ivh epel-release-5-4.noarch.rpm
こっちで入った。

rpm -ivh epel-release-5-4.noarch.rpm
warning: epel-release-5-4.noarch.rpm: Header V3 DSA signature: NOKEY, key ID ********
Preparing… ########################################### [100%]
1:epel-release ########################################### [100%]
6じゃなくて5なの?そう……。

epel.repoを開いて、
[epel]に
priority=2
を追加。

yum install php
だめ。また5.1.6を取りに行こうとしてる。ナニコレ

「EPEL リポジトリを見にいくようにするには –enablerepo=epel オプションを付けます。」
http://d.hatena.ne.jp/t2y-1979/20110430/1304140587

なるほどー

yum install php –enablerepo=epel
php-commonとかがコンフリクトしてるよと怒られる。
あらかじめ入ってたphpはremoveしてあるんだけどなあ
yum remove phpだけではだめだた?
yum remove php-*できれいにする。
php-commonとかいろいろあった。

yum install php –enablerepo=epel
だめ。5.1.6。
yum install php53 –enablerepo=epel

====================================================================
 Package                     Arch     Version      Repository  Size
====================================================================
Installing:
 php53                       x86_64   5.3.3-5.el5  base       1.3 M
Installing for dependencies:
 php53-cli                   x86_64   5.3.3-5.el5  base       2.4 M
 php53-common                x86_64   5.3.3-5.el5  base       605 k

Transaction Summary
====================================================================
Install       3 Package(s)
Upgrade       0 Package(s)

Total download size: 4.3 M
Is this ok [y/N]: 

きーたー

で、PHPのコンパイルオプションをコマンドラインで確認する方法を参考にオプション取得
php -i | grep configure | sed -e ‘s/ /\n/g’

'./configure'

'--build=x86_64-redhat-linux-gnu'
'--host=x86_64-redhat-linux-gnu'
'--target=x86_64-redhat-linux-gnu'
'--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'
'--without-pear'
'--with-bz2'
'--with-exec-dir=/usr/bin'
'--with-freetype-dir=/usr'
'--with-png-dir=/usr'
'--with-xpm-dir=/usr'
'--enable-gd-native-ttf'
'--without-gdbm'
'--with-gettext'
'--with-gmp'
'--with-iconv'
'--with-jpeg-dir=/usr'
'--with-openssl'
'--with-pcre-regex=/usr'
'--with-zlib'
'--with-layout=GNU'
'--enable-exif'
'--enable-ftp'
'--enable-magic-quotes'
'--enable-sockets'
'--enable-sysvsem'
'--enable-sysvshm'
'--enable-sysvmsg'
'--with-kerberos'
'--enable-ucd-snmp-hack'
'--enable-shmop'
'--enable-calendar'
'--without-sqlite'
'--without-sqlite3'
'--with-libxml-dir=/usr'
'--enable-xml'
'--with-system-tzdata'
'--enable-force-cgi-redirect'
'--enable-pcntl'
'--with-imap=shared'
'--with-imap-ssl'
'--enable-mbstring=shared'
'--enable-mbregex'
'--with-gd=shared'
'--enable-bcmath=shared'
'--enable-dba=shared'
'--with-db4=/usr'
'--with-xmlrpc=shared'
'--with-ldap=shared'
'--with-ldap-sasl'
'--with-mysql=shared,/usr'
'--with-mysqli=shared,/usr/lib64/mysql/mysql_config'
'--enable-dom=shared'
'--with-pgsql=shared'
'--enable-wddx=shared'
'--with-snmp=shared,/usr'
'--enable-soap=shared'
'--with-xsl=shared,/usr'
'--enable-xmlreader=shared'
'--enable-xmlwriter=shared'
'--with-curl=shared,/usr'
'--enable-fastcgi'
'--enable-pdo=shared'
'--with-pdo-odbc=shared,unixODBC,/usr'
'--with-pdo-mysql=shared,/usr/lib64/mysql/mysql_config'
'--with-pdo-pgsql=shared,/usr'
'--with-pdo-sqlite=shared,/usr'
'--enable-json=shared'
'--enable-zip=shared'
'--without-readline'
'--with-pspell=shared'
'--enable-phar=shared'
'--enable-sysvmsg=shared'
'--enable-sysvshm=shared'
'--enable-sysvsem=shared'
'--enable-posix=shared'
'--with-unixODBC=shared,/usr'
'--enable-fileinfo=shared'
'--enable-intl=shared'
'--with-icu-dir=/usr'

わい。
ちなみに

PHP Warning: Unknown: It is not safe to rely on the system’s timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected ‘Asia/Tokyo’ for ‘JST/9.0/no DST’ instead in Unknown on line 0

あー。タイムゾーンの設定ないんだなー。Asia/Tokyoだかってあれをphp.iniにアレすんだ。うろ覚えですが。
php.iniに
date.timezone = Asia/Tokyo
設定。シングルクオートがダメなのは覚えてるんだけどクオート必要なんだっけかなあ

php -i | grep configure | sed -e ‘s/ /\n/g’

うんまあおこられなくなったよ。さしあたりこれでよし。
なにphp入れてんだって?仕事でなんかこさえることになりそうなので、フレームワークの選定すんですよ。いまのとこCodeIgniterの感触がとてもよい。素直なつくり。
Symfony悪くないけど、viewに渡す変数を奇妙なオブジェクトでくるむのが嫌。
CakePHPはなんでも配列にしたがるのとORマッパでデータ取って来る時のJOINの癖が嫌。
ZendFWは評価できるほど使ったことないんだけど大掛かりなイメージ。触ってはみる予定。
大問題なポイントは、ド素人に近いメンバーも参加するって点。学習曲線が緩やかでないとまにあわなーい
わーん

さくらVPSでubuntuセットアップ

Filed in Nginx | サーバ構築 | さくらのVPS Leave a comment

全部とは言わないけどかなりいろいろ自分で入れるはめに。
デフォルトのCentOSだとここまでは必要なかった。とくにaptitudeで入れてるあたり。

自分が欲しいのは以下

  • Nginx
  • Emacs
  • MongoDB
  • Python
  • php
  • Erlang
  • RabbitMQ

いれなきゃいけなさそうなアレコレ
apacheは外します

aptitude remove httpd -y
aptitude install gcc -y
aptitude install curl-devel -y
aptitude install glibc -y
aptitude install zlib-devel -y
aptitude install libjpeg-devel -y
aptitude install sqlite-devel -y
aptitude install ncurses-devel -y
aptitude install readline-devel -y
aptitude install php -y
aptitude install bzip2-devel -y
aptitude install libxml2-devel -y
aptitude install mercurial -y
aptitude install vim -y
aptitude install libpcre++-dev -y
aptitude install rabbitmq-server -y
# ちょっとこのへん自信ない。どれかはいるんだけど。
# EmacsやNginxのインストールでコケた際にいろいろ追加したもの。
aptitude install libpcap-dev  -y
aptitude install libsoci-core-gcc-dev -y
aptitude install pcre-devel -y
aptitude install lib32gcc1
aptitude install zlibc -y
aptitude install zlib1g-dev -y
aptitude install libssl-dev  -y
# require emacs 
aptitude install libncursesw5-dev -y
aptitude install libncurses5-dev
aptitude install libtool -y

Nginxのconfigure

./configure \
  --conf-path=/etc/nginx/nginx.conf \
  --error-log-path=/var/log/nginx/error.log \
  --pid-path=/var/run/nginx/nginx.pid  \
  --lock-path=/var/lock/nginx.lock \
  --user=nginx \
  --group=nginx \
  --with-http_stub_status_module \
  --with-http_ssl_module \
  --with-http_gzip_static_module \
  --with-http_realip_module \
  --with-http_dav_module \
  --http-log-path=/var/log/nginx/access.log \
  --http-client-body-temp-path=/var/tmp/nginx/client/ \
  --http-proxy-temp-path=/var/tmp/nginx/proxy/ \
  --http-fastcgi-temp-path=/var/tmp/nginx/fcgi/ \
  --with-debug

/etc/init.d/nginxの中身
11/22編集:
http://wata-jp.ldblog.jp/archives/1674163.html
こちらを参考にNginxのinitスクリプトを書き換え。

#!/bin/sh
#
# nginx - this script starts and stops the nginx daemon
#
# chkconfig:   - 85 15 
# description:  Nginx is an HTTP(S) server, HTTP(S) reverse \
#               proxy and IMAP/POP3 proxy server
# processname: nginx
# config:      /etc/nginx/nginx.conf
# pidfile:     /var/run/nginx/nginx.pid

# Source function library.
. /etc/rc.d/init.d/functions

nginx="/usr/local/nginx/sbin/nginx"
prog=$(basename $nginx)

NGINX_CONF_FILE="/etc/nginx/nginx.conf"

start() {
    [ -x $nginx ] || exit 5
    [ -f $NGINX_CONF_FILE ] || exit 6
    echo -n $"Starting $prog: "
    daemon $nginx -c $NGINX_CONF_FILE
    retval=$?
    echo
    return $retval
}

stop() {
    echo -n $"Stopping $prog: "
    killproc $prog -QUIT
    retval=$?
    echo
    return $retval
}

restart() {
    configtest || return $?
    stop
    sleep 1
    start
}

reload() {
    configtest || return $?
    echo -n $"Reloading $prog: "
    killproc $nginx -HUP
    RETVAL=$?
    echo
}
 
force_reload() {
    restart
}
 
configtest() {
  $nginx -t -c $NGINX_CONF_FILE
}
 
rh_status() {
    status $prog
}
 
rh_status_q() {
    rh_status >/dev/null 2>&1
}
 
case "$1" in
    start)
        rh_status_q && exit 0
        $1
        ;;
    stop)
        rh_status_q || exit 0
        $1
        ;;
    restart|configtest|-t|t)
        $1
        ;;
    reload)
        rh_status_q || exit 7
        $1
        ;;
    force-reload)
        force_reload
        ;;
    status)
        rh_status
        ;;
    condrestart|try-restart)
        rh_status_q || exit 0
            ;;
    *)
        echo $"Usage: $0 {start|stop|status|restart|condrestart|try-restart|reload|force-reload|configtest}"
        exit 2
esac

/etc/init.d/nginxとか初めて書いたわ!

RabbitMQはaptitudeから入れたところ、Erlangも勝手に引っ張ってくれてたみたい。
そもそも、CentOSのときにRabbitMQのインストールでこけまして、それでubuntuをいれたという経緯がございます。

今気づいたけどsendmailも入ってない。まいったなさすがに敷居高い。
さんざんやっといてアレだけどCentOSに戻そうかな(-_-;
こういうのをサラサラやってるサーバ屋さんとかほんとすごいと思います。

実際はpythonとかもソースから入れてるんだけど割愛。

TOP