CentOSからdotcloudを利用してみる

3
Filed under 未分類

まずは、pythonの2.6がいるみたいなんで、ぶちこむ。

yum install python26
mv -i /usr/bin/python /usr/bin/python_old
ln -s /usr/bin/python2.6 /usr/bin/python

easy_installのコマンドが必要なので、pythonでぶちこむ。

wget http://peak.telecommunity.com/dist/ez_setup.py
python ez_setup.py

easy_installでdotcloudをインストール!

/usr/bin/easy_install dotcloud

dotcloudの初期セットアップ。http://www.dotcloud.com/account.settingsのAPI KEYを確認して打ち込んでエンター押すだけ。

/usr/bin/dotcloud
Enter your api key (You can find it at http://www.dotcloud.com/account/settings): ←のページにあるAPI KEYを書く

クラウド用のアカウント設定(例はhattara.dotcloud.comを作成する場合。hattaraのところを自分のすきなものに。)

/usr/bin/dotcloud create hattara

とりあえずphpのインスタンスを作成して起動する

/usr/bin/dotcloud deploy -t php hattara.php

## 状態確認

/usr/bin/dotcloud info hattara.php

phpのテストファイルを作成する

vi index.php

〈?php
phpinfo();
?〉

ファイルのデプロイ

/usr/bin/dotcloud push hattara.php index.php

ログの確認

/usr/bin/dotcloud logs –build hattara.php

## 表示確認
http://php.hattara.dotcloud.com/

とりあえずこれで普通にphpは動くようになりましたと。

nginxでZend Framework(rewrite)を利用する

0
Filed under nginx, php, WebServer, Zend Framework, 未分類

nginx + php-fpm + pecl-apcで構築されたサーバでZend Frameworkを利用する際に、
.htaccessが使えないことで以下のような記述ができませんでした。

## リライトエンジンを有効に。
RewriteEngine On

## リライトの対象パスを指定
RewriteBase /

## リライトルールを宣言(画像、CSS、Javascript)以外をindex.phpに転送する。
RewriteRule !\.(js|ico|gif|jpg|png|css)$ index.php

通常の Apache の場合などには、.htaccessで上記のように表現できますが、
nginxでは、現状各ユーザ毎のフォルダに設置して対応する方法がないようです。

具体的にいうと、nginx.confでincludeをサポートしているので、
各ユーザ領域に設定ファイルの断片をおいて、includeさせることまではできると思われますが、
そこを修正しても、読み込み直さないと反映されないので、意味がないという事になります。

よって、対策としては、容易に設定修正できないという難点は致し方ないとして、
/etc/nginx/nginx.conf(ファイルパスは環境により異なります。)、
または、includeしている /etc/nginx/conf.d/***.confの中の該当のドメイン設定部分に
以下のように追記します。

server {
listen 80;
server_name test.example.com ;
location / {
root /home/Web;
index index.php index.cgi index.html index.htm;
rewrite ([^(js|ico|gif|jpg|png|css)])$ index.php;
}
location ~ .php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /home/Webdir/hattara.info/main/web/$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_script_name;
include /etc/nginx/fastcgi_params;
}
}

これでとりあえず動くようになります。
現状だと、逆にいえばこれしかできないような気もする。。

.htaccessみたいに外部で設定できるようにできたり、rewriteの設定がもう少しわかりやすいといいなぁと思うけど、
これが速度とのトレードオフなのかもしれないですね。

ということで、rewriteとかの設定で、超はまりまくったけど、今日はこの辺で。

Nginx Http Server

新品価格
¥3,964から
(2010/12/20 19:36時点)

nginx(VirtualDocumentRootもどき)でfastcgi(php-fpm)が動かない

0
Filed under Cent, fastcgi, Linux, nginx, php, WebServer

現在以下のような方法で、VirtualDocumentRootもどきを実装していますが、
PHPのSCRIPT_FILENAMEが正常に取得できないようなので、調査しました。

【変更前】

server {
listen 80;
server_name ~^(.*)\.hoge.com$;
if (!-d /home/hoge.com/$1/web) {
rewrite . http://hoge.com/ redirect;
}

location / {
index index.php;
root /home/hoge.com/$1/web;
}

location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /home/hoge.com/$1/web/$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_script_name;
include /etc/nginx/fastcgi_params;
}
}

上記だと、正常に動きませんでした。
原因としては、以下の部分の「$1」の部分に正しい値が入らないためのようでした。

fastcgi_param SCRIPT_FILENAME /home/hoge.com/$1/web/$fastcgi_script_name;

色々試した結果、$1を別の変数として定義してあげれば動くことを確認しました。
結果、以下のような内容になりました。

【変更後】

server {
listen 80;
server_name ~^(.*)\.hoge.com$;
set $subdomain $1;

if (!-d /home/hoge.com/$subdomain/web) {
rewrite . http://hoge.com/ redirect;
}

location / {
index index.php;
root /home/hoge.com/$subdomain/web;
}

location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /home/hoge.com/$subdomain/web/$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_script_name;
include /etc/nginx/fastcgi_params;
}
}

とりあえず上記の記述方法で正常動作しました。よかったよかった。

Nginx Http Server

新品価格
¥3,964から
(2010/12/20 19:36時点)

Nginx(virtualhost)+php-fpmでPHPが動作しない(凡ミス編)

0
Filed under Cent, fastcgi, Linux, nginx, php, WebServer

Nginxでvirtualhostを切ってる状態でphp-fpmを動かそうと頑張っていたんですが、
何故か動かない。
あちこちのサイトで説明されてる内容をそのままやって動かない。

一番下にある洋書のNginxの書籍に書いてある例をやっても動かない。
なんでか悩んでいたんですが、平凡なミスであることがわかりました。

元々の手順としては、nginxが導入されている環境に、

1.PHPとPHP-FPMをyumで簡易インストールする。

yum –enablerepo=remi install php php-fpm

2.一応nginxのメインの設定にphpの設定を書いておく

vi /etc/nginx/nginx.conf

# Add
location ~ .php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include /etc/nginx/fastcgi_params;
}

3.自分が作成したVirtualHost用の設定ファイル(/etc/nginx/conf.d/aaa.conf)にも追加する

vi /etc/nginx/conf.d/aaa.conf

server {
listen 80;
server_name test.hoge.com;

location / {
root /home/test.hoge.com/web;
index index.php;
}
location ~ .php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include /etc/nginx/fastcgi_params;
}
}

4.php-fpmの起動ユーザーをnginxユーザにしてみる (※必要に応じて変更するかも)

vi /etc/php-fpm.d/www.conf
user = nginx
group = nginx

5.サーバ起動時に自動起動するように起動ファイルのリンク作成

ln -s /etc/rc.d/init.d/php-fpm /etc/rc.d/rc3.d/S87php-fpm

6.サーバ起動させてみる。

/etc/rc.d/init.d/php-fpm start

という手順をしたんですが、htmlファイルは問題なく動作するのですが、phpファイルがうごかない。
真っ白になったり、ダウンロードになったり・・意味がわからない。

結論からいうと、ドキュメントルートの設定がおかしくて、表示したいファイルに到達していなかったという事だった。
どこがダメかというと、上記の「3」に問題があったようだ。

具体的には、

fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;

ここが問題で、document_root変数の下のfastcgi_script_name変数のファイルをkickするわけだが、
$document_root変数の値が、どうも正しく入っていないようだ。
たぶん、メインの/etc/nginx/nginx.confのrootの値を持ってたりするんじゃなかろうかと思うわけだ。

ということで、以下のように変更して、復旧しました。

fastcgi_param SCRIPT_FILENAME /home/test.hoge.com/web/$fastcgi_script_name;

Nginx Http Server

新品価格
¥3,964から
(2010/12/20 19:36時点)

nginxをyumで簡単構築(インストール,VirtualHostの設定)

0
Filed under nginx, WebServer, 未分類

nginxのyumパッケージがfadoraのサイトに転がってるようなので、
リポジトリを追加する。(サンプルは64bit版)

wget http://download.fedora.redhat.com/pub/epel/5/x86_64/epel-release-5-4.noarch.rpm
rpm -ivh epel-release-5-4.noarch.rpm

nginxをyumで簡単インストール。

yum install nginx

とりあえずnginxを起動してみる。apacheでいうところのhttpd start

/etc/rc.d/init.d/nginx start

再起動後もちゃんと起動してくるように起動ファイルを配置する。

ln -s /etc/rc.d/init.d/nginx /etc/rc.d/rc3.d/S88nginx

VirtualHostの設定をする。
Apacheでいうところの の部分。

※Apacheだと、完結にはしょって書くとに以下みたいにかくやつです。


ServerName hoge.com
DocumentRoot /home/hoge/web

これをnginx用に書いてみる。

vi /etc/nginx/conf.d/hoge.conf

server {
listen 80;
server_name hoge.com;

location / {
root /home/hoge.com/web;
index index.php index.pl index.cgi index.html index.htm;
}
}

これで、一応うごく設定にはなってるはずです。
といっても、特殊な場合以外は、VirtualHostの設定はVirtualDocumentRootで済ましたいので、
以下のようにする。

※Apacheの場合のVirtualDocumentRoot。


ServerName local
VirtualDocumentRoot /home/%2+/sub/%1/web

※これの場合、moge.hoge.comだと、/home/hoge.com/sub/moge/webがDocumentRootになる。

これをnginx用にかきなおす。ファイルは、さっきと同じファイルのまま。

server {
listen 80;
server_name ~^(.*)\.hoge.com$;
if (!-d /home/hoge.com/sub/$1) {
rewrite . http://hoge.com/ redirect;
}

# Sets the correct root
root /home/hoge.comf/sub/$1;
}

ついでにアクセスログをvirtualhostに対応したものに変更する。
以下のlog_format形式を追加して、access_logのところで、mainからvhostに切り替える
以下は、変更する個所、追加する個所の抜粋

vi /etc/nginx/nginx.conf

  ※以下を追加。
log_format vhost ‘$host $remote_addr – $remote_user [$time_local] “$request” ‘
‘$status $body_bytes_sent “$http_referer” ‘
‘”$http_user_agent” “$http_x_forwarded_for”‘;

  ※以下のように追記と修正する。
#access_log /var/log/nginx/access.log main;
access_log /var/log/nginx/access.log vhost;

これで、以下のようにaccess_logに変化が出る。

※変更前

192.168.0.100 – - [30/Nov/2010:20:18:02 +0900] “GET / HTTP/1.1″ 200 25 “-” “Mozilla/5.0 (Windows; U; Windows NT 5.1; ja; rv:1.9.2.12) Gecko/20101026 Firefox/3.6.12 (.NET CLR 3.5.30729)” “-”

※変更後

hoge.com 192.168.0.100 – - [30/Nov/2010:20:18:02 +0900] “GET / HTTP/1.1″ 200 25 “-” “Mozilla/5.0 (Windows; U; Windows NT 5.1; ja; rv:1.9.2.12) Gecko/20101026 Firefox/3.6.12 (.NET CLR 3.5.30729)” “-”
test.hoge.com 192.168.0.100 – - [30/Nov/2010:20:18:02 +0900] “GET / HTTP/1.1″ 200 25 “-” “Mozilla/5.0 (Windows; U; Windows NT 5.1; ja; rv:1.9.2.12) Gecko/20101026 Firefox/3.6.12 (.NET CLR 3.5.30729)” “-”

IRCサーバ(ircd-hybrid)をyumを使って簡単に構築する。

1
Filed under Cent, Linux, Network, ルーター, 未分類

時代は、チャットからメッセンジャーそしてIRCにきたようです。
ということで、私もIRCサーバを構築してみようと思うわけです。
なんといっても、手抜きが大好きなので、yumパッケージを探します。

wget http://download.fedora.redhat.com/pub/epel/5/x86_64/epel-release-5-4.noarch.rpm
rpm -ivh epel-release-5-4.noarch.rpm

上記のリポジトリにIRCサーバ用のソフトが眠ってるようなので、登録します。
release-5-4になってますが、バージョンアップしたら、ここの数字はかわるので、
fedoraのサイトで随時確認してください。

yum install ircd-hybrid

上記のように本丸であるIRCサーバ用パッケージのircd-hybridを
yumで楽々ぶちこみます。
これでインストールされちゃうわけですよ。

cp -irp /usr/share/doc/ircd-hybrid-7.2.3/simple.conf /etc/ircd/ircd.conf

上記で設定ファイルをコピーするわけですが、cpコマンドにiオプションをつけてるので、
すでに該当ファイルがあるとアラートがでます。上書きしてください。
というか、yumでいれたときに長いファイルができてるんで、絶対アラートでます。

vi /etc/ircd/ircd.conf

name = “irc.aaaaa”;
sid = AAAA;
password = “abcde”;

上記のように設定ファイルをいじくります。
IRCのサーバ名をnameに書き込みます。
次にsidのところに、任意の大文字英数字をぶちこみます。
最後にpasswordはつけてもつけなくてもいいけど、適当に。

/etc/rc.d/init.d/ircd start

上記でIRCサーバが起動するので、めでたしめでたしです。

※デフォルトだと、6667ポートをあけるので、ルータなどで制限してる場合には、あけましょう。

あとは、このままだと、自動起動しないので、以下のようなのもやっとくといいでしょう。

ln -s /etc/rc.d/init.d/ircd /etc/rc.d/rc3.d/S99ircd

S99にしてますが、これは起動順なので、必要な機能があがった後ならいつでもいいです。
Snnでやってください。

SQLで○○以外(<>)の時のNULLには気をつけろ!

2
Filed under MySQL, SQL, 未分類

今日実際にこんな現象を見たので、メモ的に残しておきます。
SQLで何かするときに、以下のようなパターンがあると思う。

| id | val1 |
| 1 | 5 |
| 2 | 10 |
| 3 | 1 |
| 4 | 100 |
| 5 | NULL |
| 6 | 20 |

この場合に、NULLをひっぱったりするときに IS を利用するのは知ってました。

SELECT id, val1 FROM test WHERE val1 is NULL;

ここで今回のメモは、

SELECT id, val1 FROM test WHERE val1 <> 100;

このようにした場合に、NULLはHITしないということです。
型が違うためかどうかわかりませんが、そういうことです。
対策としては、NULLについても別途条件を追加することです。

SELECT id, val1 FROM test WHERE (val1 is NULL or val1 <> 100);

これで、あなたにも明るい未来が見えることでしょう。

「共創を求めるチームワーカー」

0
Filed under 未分類

ペパボで実施する2012年卒の新卒採用に向けて、
総務の方から頼まれたのでリクナビさんの
「先輩の仕事タイプ診断(仕事に対する指向・価値観のタイプ診断)」をやってみました。

ということで、他の人と一緒に物づくりをするほうが好きなようです。
人間関係をじっくりねっとりと仕上げていきますよ~!!
そして、理想を追い求めて、どこまでもいっちゃいますよ~!!
そしてそして、みんなで決めて進んでいきますよ~!!
政権公約みたいになってきた。。。

具体的な内容でいうと、こうなってくるようですな。
場の雰囲気については、すごく重要だと思うんだよなぁ。
喜怒哀楽が激しい方なんで、壊しちゃうこともあるけども。
仕事してるときに、一体感が生まれたら、いいものできるし、楽しいし、最高だよね。

そして、新しい事への関心だけど、ちょっと前まではそこまでじゃなかった気がするけど、
ここ最近は、すごく新しい事への関心が強くなってきたと自負してる。

ガンガン新しいものを吸収して、それを形にしていかないと、
時代遅れになっちゃうし、沢山の人に喜んでもらえるようないいものはできないよね。

と、技術職の人間の一例を技術ブログにあげてみました。

オライリーのAndroid書籍について

0
Filed under 未分類

ちょっと前ですが、Androidアプリの勉強のために書籍を2冊購入したわけですが、
どうせ買うならと思って、オライリーから出てるAndroid系書籍2冊を購入しました。

初めてのAndroid

新品価格
¥2,310から
(2010/10/26 18:01時点)

という初心者にうってつけの名前のものと、

Android Hacks ―プロが教えるテクニック & ツール

新品価格
¥3,990から
(2010/10/26 18:10時点)

というHack系の書籍です。

まあ、初心者なわけなんで、「はじめてのAndroid」を利用しながら、まず模写したわけですよ。
で、ある程度のところまでは、順調に追加してはテストしてを繰り返していたのですが、
全体像ができてきて、グラフィックのところだったか、ゲーム作成の部分だったかで、
いきなり動かなくなりました。

それらしいエラーも見当たらず。。。

結局色々確認した感じだと、書籍が古すぎたというオチのようで、
深く突っ込んで確認はしてませんが、AndroidのVersion1.6前後から
色々と変わってるみたいなんですが、あの書籍がAndroid1.0とかのときに書かれているためらしい。

オライリーか何かのサイトで最新版のサンプルデータが置かれていて、
そちらは問題なく動きました。

ちなみに「Android Hacks」は最新の2.2にも対応していますと書いてあるので、
そういう問題はおきないと思います。
こっちは、完璧に部分読みしかしてないので、アレですが。。

まあ、ある程度のところまでは、XMLで外観と整えて、必要最低限のJavaを組めば、
デザインがアレだけど、とりあえず動くAndroidアプリが作れるというのがわかったので、
よしとします。

いいアイデアがわいたら、UIのほうも勉強していいものを作りたいと思う今日この頃。

※ちなみに、これ作ったあとに、Titaniumも使ってみましたが、KichenSinkが動かずに停滞。
  調べたら、他にも動かないと言ってる人がいたので、Versionによる問題かなと思ってます。
  詳細は調べてないけど。。。
  iphoneのエミュレーターでは問題なく動いたので、iphoneアプリは、こちらでいきたい。

Gmailの迷惑メール登録について

0
Filed under 未分類

今日気づいたこととしては、Gmailで受信されたメールの本文中に
http:// から始まるものがあった場合、迷惑メール扱いになる。

https:// のようにSSL環境のURLであれば迷惑メール扱いにはならない。

ただ、他の条件との兼ね合いもあるだろうと思うので、
一概には全部そうではないと思うが、検証した結果をメモしておく。