自宅サーバでルータがAtermの場合+Nginx

DDNSなんかでドメイン振っててもFQDNでアクセスできませんよね。自宅からだと。
これ知ってたら買わなかったわ。ほんとうに不便。

外から見たい場合はDDNSでドメイン引き回してあるので見られるんですが、たとえば自宅Wifiから見ようっていうと、ドメイン名打ってもだめなのね。iPhoneとかそういうのが即アウト。
自宅鯖の中には開発中や絶賛放置中の有象無象やp2やphpmyadminなんかが転がってるんですが、これらはLAN内から見に行く場合、192.168.0.15:8000ならアプリA、192.168.0.15:8001ならアプリB、みたいにしてやりくりしてました。Apacheでのやりかたはいろんなトコに書いてあると思う。

で、自宅鯖のApacheを消して、ふとした拍子にNginxに変えてみました。
さいきんおねーさんは何やるにしてもNginxです。すごいお気に入り。
設定楽だし軽いしね。
php?
>php-cgi -b 127.0.0.1:9000
解決するじゃないかきみーもんだいないよー
Pylonsさんとかのおかげで、この方式で立てておくというのがしっくりくるようになってた。成長だわー

いままでは、apacheのports.confにこんな書き方してました。
(IPアドレスやポート番号とかはサンプルなのでてきとうです)

NameVirtualHost *:80
Listen 192.168.0.15:80
Listen 192.168.0.15:8000
Listen 192.168.0.15:8001

こんなふう。
で、sites-avaiablesだかの中の各種vhostsに

<VirtualHost *:8000>(略)</VirtualHost>

こんなん。ほかにもなんかやってたかも知れないけどもう覚えてない。
で、これをNginxでも何とかしたい。

    server {
        listen 8000;
        listen 80;
以下略

余裕だった。正しいのかはいまいちわかんないけど間違ってはいないだろう。
自宅からはIPアドレス:ポート番号(この場合8000番)で見に行く。これは従来どおり。
外からは名前解決できるのでドメイン+80番で見に来ると。
listen 80のほうを消したりコメントすれば、外からは見にこれない。
自宅からしかいじらないphpMyAdminなんかはlisten 80は書かない設定にしています。

あ、うちは外からポート8000で飛び込んできても蹴ってるからというだけですけどね。80番のみ通す格好にしています。これはルータのお仕事。

みたいな話。

phpフレームワーク探しの旅

CodeIgniter関連の記事を見ていると、どーもライセンス的に雲行きが怪しいとか、CI(CodeIgniter)の開発者が一部別プロジェクトに流れているとかいう話が見えてきます。

で、KohanaPHPとFuelPHPというのが目についた次第。
ちゃんとプロジェクトが続いてくれれば文句はないんですが、かつて一世を風靡した感のあるMojaviみたいに「あれメンテ止まったぞオイ」みたいなのは避けたい。
さしあたり、FuelPHPの評判がCodeIgniter界隈では良いみたい。
さわってみよーう。

なにがいいって、ロゴがかわいいんだよ。またそれか。

関数型言語とかそういうの

あまりに自分の文化とかけ離れた道具を、さして需要もないのに使ってみて、
Hello world
とか出してもね、
「それで?」感がとめどなく溢れでてきてダメなのね。SOREDEオーバーフロー。
結局何が面白いのとか何にすごくいいんだよっていうのが見えないと、モチベーションも何もあったもんじゃないんだよね。
もしくは覚えないと刺しますよみたいな、逼迫している感というかなんかそういうの。
あーらんはすけるりすぷイロイロありますが、どうもねえ。
教養として!みたいなのはモチベーションにつながらないんだね。

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

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

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

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

検索で引っかかった悲惨な方へ:あちこちに記事上がってるのでちゃんとしたのはそちらを読みましょう。
ここはおねーさんのメモ書きです。
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は評価できるほど使ったことないんだけど大掛かりなイメージ。触ってはみる予定。
大問題なポイントは、ド素人に近いメンバーも参加するって点。学習曲線が緩やかでないとまにあわなーい
わーん