Monthly archives "3月 2014"

node.jsのsocket.ioでIRCリレーサーバーを作ってherokuにデプロイしてみた

IRC Client
http://irc-client.herokuapp.com/
これはあくまでリレーサーバーであってIRCサーバーそのものではない。
図で説明するとこんな感じ。
irc.00.01
要はウェブブラウザから直接IRCサーバーには繋がらないので、両者を仲介するサーバーを作ったのだ。
 
ちなみにソースコードはgithubに置いた。
https://github.com/SimtterCom/irc-client
ソースコードのうち、リレーサーバーとIRCサーバーを繋ぐソースコード(irc.js)はKaedeさんのソースコードを使用したので、Kaedeさん作者への謝意とともにirc.jsの著作権はKaedeさん作者にあることを明記する
Node.jsで動くIRCBot、kaedeさんを作った
 
さらにちなみに開発はCloud9で開発した。
クラウドサービス使いまくって全部無料。
凄い時代だ。
 
では、IRC Clientの使い方を説明する。

画面説明

まずは、画面説明をする。
http://irc-client.herokuapp.com/にアクセスしたら下図の画面になる。
irc.01.01
 

テキスト入力欄

Host:アクセスするIRCサーバー名を指定する(デフォルトではWordPressのチャンネルがあるサーバーを設定している)
Port:IRCサーバーのポート番号(6667か6669)
User Nane:実際あまり使われることないが必要(実質どんな名前でも良い。スペースは使えない)
Real Name:これも使われることが無いが必要(スペースも使える)
Nick Name:IRCサーバーに繋がってるユーザー全てにユニークな名前でないといけない。チャットで表示されるのもこの名前
Channel Name:入りたいチャンネル名を指定する。指定したチャンネルが無い場合は自動で作られる。(デフォルトではWordPressの公式チャンネルを指定している)
Message:自分が発言したい内容を書き込む。
 

ボタン

Login:IRCサーバーにログインする。(ログインした後はボタンがLogoutに変更になる)
Logout:ログインしているIRCサーバーからログアウトする。
Join:チャンネルに参加する。(参加した後はボタンがPartに変更になる)
Part:参加しているチャンネルから離脱する。
Send:発言する。(Messageが空白だとボタンが無効になっている。Messageに何か文字を入れると有効になる)
 

表示

Channel Users:チャンネルに入っているユーザー一覧
Name:発言した人のNick Name
Message:発言内容
 

チュートリアル

次にチュートリアルを説明する。

IRCにログインする

irc.02.01
loginボタンを押してログインする
 
irc.02.02
Please Wait…ダイアログが表示されるのでしばらく待つ
 
irc.02.03
Successが表示されればログイン成功。
OKボタンを押す。
 
irc.02.11
Failedが表示されればログイン失敗。
Nicknameがすでに使われているので、違うNicknameに変更して再度Loginボタンを押す。
 

チャンネルに参加する

ログインが成功すれば次はチャンネルに参加する。
irc.02.04
Channel Nameに参加したいチャンネル名(デフォルトではWordpressの公式チャンネルになっている)を入力してJoinボタンを押す。
 
irc.02.05
Channel UsersとMessageに自分がジョインしたメッセージが表示されればジョイン成功。
 

発言する

次は実際発言してみよう。
irc.02.06
Messageに発言内容(この例ではHello!)を入力してSendボタンを押す。
 
irc.02.07
Nameに自分のニックネーム、Messageに発言内容が表示されれば発言成功。
 

チャンネルから離脱する

チャンネルからの離脱方法を説明する。
irc.02.08
Partボタンを押す。

IRCからログアウトする

IRCからのログアウト方法を説明する。
irc.02.09
チャンネルから離脱した状態でLogoutボタンを押す。
 
irc.02.10
ログイン前の状態に戻ればログアウト成功。


0

UbuntuにnginxをインストールしてWordPressを動かそう

AWS Amazon EC2 の micro インスタンスを使って、LAMP環境でWordPressを動かしていたんだけど、実に重かった。
んで、思い切ってApacheから巷で速いと噂のnginxに乗り換えてみた。
すると、見事爆速に動くようになった。
というわけで、nginxのインストール方法とphpへの対応、パーマリンクが使えるようにrewriteの設定などについて書く。

nginxのインストール

と言っても、下記のURLに全て書いてあるので参考にインストールする。
ただし、バーチャルホストの設定はここに書かれている内容から変えるので、あとから説明する。
VPS(Ubuntu 12.04)でWordPress環境(しかもnginx)を構築する。
 

バーチャルホストとrewriteの設定

バーチャルホストを設定していないデフォルトの状態のままだとHPにはWelcone to enginxと表示される。
nginxではデフォルトのルートが /usr/share/nginx/www になっているので、そこに入ってる内容を表示している。
そこにWordPressをインストールしても良いのだが、すでにWordPressはapache時代に/var/wwwにインストール済みなので/var/wwwを表示するようにしたい。
それにデフォルトのままではphpの表示やrewriteの設定も動いてないので、バーチャルホストを設定するのが良いだろう。
バーチャルホストの設定は下記の通り。(バーチャルホストの設定の中でrewriteの設定も行っている)
 
ここでは設定したいバーチャルホストのドメインをfoo.comだったとする。
まず、/etc/nginx/conf.d/ にバーチャルホスト用のファイルを追加する。
ubuntuのターミナルから下記を入力する。

sudo nano /etc/nginx/conf.d/foo.com.conf

nanoが立ち上がり、/etc/nginx/conf.d/ にfoo.com.confファイルが新規作成される。
 
続いて、foo.com.conf に下記の内容を書く。

server {
        listen        80;
        server_name   foo.com;
        access_log  /var/log/nginx/foo.com.access.log;
        error_log   /var/log/nginx/foo.com.error.log;

        root /var/www;
        index index.php index.html index.htm;
        charset utf-8;

        if (!-e $request_filename) {
                rewrite ^.+?($/-.*) $1 last;
                rewrite ^.+?(/.*\.php)$ $1 last;
                rewrite ^ /index.php last;
        }

        location ~* \.php$ {
                fastcgi_index   index.php;
                fastcgi_pass    127.0.0.1:9000;
                include         fastcgi_params;
                fastcgi_param   SCRIPT_FILENAME    $document_root$fastcgi_script_name;
        }

        location ~ /\.ht {
                deny  all;
        }
}

ctrl+Xでnanoを保存終了。
続いて、nginxをリロードする。

sudo service nginx reload

 
さらにnginxをリスタートする。

sudo service nginx restart

 
これで、foo.comにアクセスしたらWordPressが表示されて、パーマリンクの設定も動く。

※参考文献
VPS(Ubuntu 12.04)でWordPress環境(しかもnginx)を構築する。
nginxだけでWordPressを動かすための設定


0

WordPressが使える無料レンタルサーバーを比較してみた

WordPress使える、つまりPHPとMySQLが使える無料レンタルサーバーを比較してみた。
また独自ドメインが使えるかどうかも調べてみた。

サーバー ディスク容量 データベース容量 転送量制限 PHP MySQL 独自ドメイン 広告 場所
Capnix 10GB ディスク領域と共有 100GB/月 なし 海外
Lv9 10GB ディスク領域と共有 100GB/月 なし 国内
wkey.me 2GB ディスク領域と共有 不明 なし 国内
000webhost 1.5GB ディスク領域と共有 100GB/月 なし 海外
byethost 1GB ディスク領域と共有 50GB/月 なし 海外
WPblog 1GB 100MB 不明 あり 国内
xdomain 1GB 50MB 不明 あり 国内
webcrow 1GB 50MB 50GB/月 あり 国内
xrea 50MB ディスク領域と共有 1GB/日 あり 国内

 
実際の使い勝手はコントロールパネルの使いやすさやアクセススピードによるから、実際使ってみないと分からないのが正直なところだ。
 


0

WordPressを無料レンタルサーバーCAPNIXに移転してみた

AWS Amazon EC2の無料枠期間も残すところ、あと1ヶ月を切った。
Amazon EC2は自由度が高くて、IaaSって素晴らしい!と思わせてくれた。
StatusNetを始め、WordPress、git、Redmine、Node.jsにいたるまで色んなものを入れれた。
無料枠で使うにはとっても素敵なサービスなんだけど、有料となると、Microインスタンスでさえ、月1500円かかるのはちょっと高い。
Microインスタンスだと実質WordPress入れるのが精一杯。
他のを欲張って入れるとCPUを使い切って、MySQLがよく落ちるようになってしまった。
これはもしかしたら、私の環境がUbuntu+Apache2からかも知れないが。
Amazon AMI+nginxが速いらしいんだけど。
どっちにしろ、月1500円払うほど大したことやってないので、せめてブログだけでも、安いところに移転できないかと移転先を探した。
国内の無料レンタルサーバーのxreaも良いかなあと思ったけど、広告入るのも嫌だなあと。
そして、海外の無料レンタルサーバーであるCAPNIXを使ってみることにした。
ディスク容量10GB、転送量100GB/月まで、PHPとMySQLが動いて、広告もなし。
いったい何で儲けているのか怪しいぐらいだけど、とりあえず試しに使ってみた。
登録方法は解説する必要もないぐらいに超簡単だった。
(名前とか住所とかメールアドレスとかよくある入力項目を入力して、メールアドレスに招待メールが送られてくるので、メール内のリンクをクリックすれば完了)
コントロールパネルは英語かフランス語しか対応していないが、この手のサービスに慣れた人なら分かるだろう。

今表示しているこのブログはCAPNIX上で動いてるんだけど、全く遅延もしないし、今のところ、問題なし。


0

WindowsにVirtualBoxでUbuntuをインストールしよう

WindowsにVirtualBox、Ubuntu Serverをインストールして、WindowsとUbuntu Serverをローカルネットワークで繋ぐ設定までを説明します。
 

VirtualBoxをインストール

VirtualBoxのダウンロードページからVirtualBox 4.3.8 for Windows hostsをダウンロードしてインストールします。
 

Ubuntu Serverをダウンロード

Ubintu ServerのダウンロードページからLTSをダウンロードします。
 

VirtualBoxにUbuntu Serverをインストール

この手順はWindowsのVirtualBoxにUbuntu 13.04をインストールしてみたを参考にしましょう。
ここで気を付けたいのは、Ubuntu ServerはEnglishをインストールすること。
日本語をインストールするとTerminalに表示される日本語が文字化けしてしまいます。
日本語に対応したTerminal(fbterm)をインストールすれば表示できますが、手間が増えるので、ここは潔くEnglishをインストールするのが無難。
 

VirtualBoxでホストオンリーアダプターを設定

VirtualBoxマネージャーでUbuntu Serverを選択した状態で設定ボタンを押す
virtualbox.1.1
 
ネットワークタブを表示してアダプタ1にはNATが選択されていることを確認(デフォルトでNATになっているはず)
virtualbox.1.2
 
アダプタ2を有効にしてホストオンリーアダプターを割り当てる。
virtualbox.1.3

Ubuntuのネットワークを設定

まずはホストオンリーアダプターのIPアドレスを確認する。
VirtualBox1のファイル > 環境設定 を選択する
virtualbox.2.1
 
環境設定でネットワークタブを選択し、ホストオンリーネットワークタブのVirutalBox Host-Only Ethernet Adapter を選択し、編集ボタンを押す
virtualbox.2.2
 
IPv4アドレスを覚えておく
virtualbox.2.3
 
VirtualBoxからUbuntuを起動する
virtualbox.2.4

Ubuntuでnetwork intarfacesを編集する

sudo nano /etc/network/interfaces

 
interfacesを以下の内容に編集する

auto lo
iface lo inet loopback

auto eth0
iface eth0 inet dhcp

auto eth1
iface eth1 inet static
address 192.168.56.2
netmask 255.255.255.0
gateway 192.168.56.1

※ gatewayにホストオンリーアダプターのIPv4アドレスを設定します。
 
ネットワークを起動する

sudo /etc/init.d/networking start

 
ubuntu起動時にネットワークも起動するように自動実行に設定

sudo nano /etc/rc.local

 
rc.localに以下の内容を追加

/etc/init.d/networking start

 
以上でWindowsとUbuntu Serverをローカルネットワークで繋ぐことができました。
Windowsから192.168.56.2にアクセスするとUbuntuに繋がります。
 
※ 参考文献
WindowsのVirtualBoxにUbuntu 13.04をインストールしてみた
VirtualBoxでのネットワーク設定(NAT+ホストオンリーアダプタによるホストOSとゲストOS間の通信)


0

WindowsにCloud9をインストールしよう

どうも、お久しぶりの投稿です。
enchant.jsでのEnchantCityの開発が一段落着いて、次なる狙いはnode.jsでチャットを作っちゃおうと考えおります。
(ああ、もうSimCityと全然関係なくなってしまいました)

そして、node.jsの開発環境(IDE)として目を付けたのが、Cloud9です。
Cloud9はまさにクラウド越しにnode.jsの開発ができてしまうというとても素晴らしい環境です。
使い方は他のブログでよく見かけるのでここでは割愛します。

実はCloud9はローカル環境でも実行できるとのことなので、
Windowsにインストールしようと思ったわけです。

しかし、これは困難の極みでして、結局は上手くいきませんでした。
ただ、折角インストール方法を調べたので、説明します。
誰か上手くインストールできたら、やり方教えてください。

前振りが長くなりましたが、インストール方法を説明します。

node.jsをインストール

まず、無くてはならないがnode.jsです。
node.jsのサイトのdownloadsから自分の環境に合ったインストーラーをダウンロードしましょう。
私の環境はWindows 64bit環境なので、Windows Installer (.msi)の64bitをダウンロードしてインストールします。
 

Visual C++ Express 2010をインストール

なんとMSBuildを使う箇所があるので、必要なのです。
Visual C++ 2010 Express Editionからダウンロードしてインストールします。
 

Windows SDKをインストール

MSBuildを動かすために、さらにWindows SDKが必要です。
Microsoft Windows SDK for Windows 7 and .NET Framework 4からダウンロードしてインストールします。
 

GNU makeをインストール

さらにはGNU makeも使うのです。
GNU Make for Windowsからダウンロードしてインストールします。
 

gitをインストール

Cloud9はgithubに公開されているので、gitを使ってダウンロードする必要があります。
gitからダウンロードしてインストールしましょう。
 

Cloud9のインストール方法を調べる

これまでは前準備です。
やっと本家Cloud9のインストール方法を参照できます。
Installation on Windows (experimental)を参照してインストール方法を確認してください。
しかし、そこに書かれているインストール方法では足りない箇所があります。
引き続き、私の説明を読んでください。
 

GNU grepをインストール

ここは本家の手順どおり、
GNU Grep for Windowsからダウンロードしてインストールします。
 

GNU for Windowsのパスを通す

ここも本家の手順どおり、
PATHC:\Program Files (x86)\GnuWin32\bin を追加します。
 

cmd.exeを管理者として実行する

ここも本家の手順どおり、cmd.exeを管理者として実行してください。
 

Cloud9をダウンロード

ここも本家の手順どおり、gitでCloud9をダウンロードします。
最初はコマンドプロンプトのカレントがC:\Windows\system32になってるかと思いますが、さすがにそこにダウンロードするのはマズイので、適当なフォルダにカレントフォルダを移動してください。
私はCドライブ直下にダウンロードしたいので、下記の通り打ち込んでCドライブに移動しました。

cd c:\

では、Cloud9をダウンロードするために下記のコマンドを打ち込みます。

git clone https://github.com/ajaxorg/cloud9.git

 

カレントをCloud9フォルダに移動

ここも本家の手順どおり、下記の通り打ち込んでCloud9フォルダに移動します。

cd cloud9

 

node-gnu-toolsをダウンロード

ここが本家と違うところ!
githubからnode-gnu-toolsをダウンロードする必要があります。
node-gnu-toolsをダウンロードするために下記のコマンドを打ち込みます。

npm install git+https://github.com/c9/node-gnu-tools

 

Cloud9をインストール

ついにCloud9をインストールできます。
下記のコマンドを打ち込みます。

npm install

しかし、下記のようなエラーが表示されます。

LINK : fatal error LNK1181: cannot open input file 'kernel32.lib' {c:\cl
de_modules\engine.io-client\node_modules\ws\build\bufferutil.vcxproj}

このエラーはvcxprojファイルを関連づけているslnファイルをVisual C++ Expressで開いてソリューション構成をReleseにしたうえで、
プロジェクト > プロパティ > 構成プロパティ > 全般 > プラットフォームツールセット を Windows7.1SDK に変更してビルドすると成功します。

しかし、問題は下記のエラーです。

> gnu-tools@0.0.8 postinstall c:\cloud9\node_modules\gnu-tools
> node ./install.js

path.existsSync is now called `fs.existsSync`.
Directory exists at  c:\cloud9\node_modules\gnu-tools\bin
Compiling sources!
make: Interrupt/Exception caught (code = 0xc00000fd, addr = 0x4227d3)
[Error: 'make install' failed with code: 255] 'Error: \'make install\' failed wi
th code: 255\n    at ChildProcess.<anonymous> (c:\\cloud9\\node_modules\\gnu-too
ls\\install.js:164:22)\n    at ChildProcess.EventEmitter.emit (events.js:98:17)\
n    at Process.ChildProcess._handle.onexit (child_process.js:797:12)'

npm ERR! gnu-tools@0.0.8 postinstall: `node ./install.js`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the gnu-tools@0.0.8 postinstall script.
npm ERR! This is most likely a problem with the gnu-tools package,
npm ERR! not with npm itself.
npm ERR! Tell the author that this fails on your system:
npm ERR!     node ./install.js
npm ERR! You can get their info via:
npm ERR!     npm owner ls gnu-tools
npm ERR! There is likely additional logging output above.
npm ERR! System Windows_NT 6.1.7601
npm ERR! command "C:\\Program Files\\nodejs\\\\node.exe" "C:\\Program Files\\nod
ejs\\node_modules\\npm\\bin\\npm-cli.js" "install"
npm ERR! cwd c:\cloud9
npm ERR! node -v v0.10.26
npm ERR! npm -v 1.4.3
npm ERR! code ELIFECYCLE
npm ERR!
npm ERR! Additional logging details can be found in:
npm ERR!     c:\cloud9\npm-debug.log
npm ERR! not ok code 0

postinstall scriptが失敗してるようですが、何が原因かさっぱり分かりません。
つうことで、WindowsにCloud9をインストールするのはあきらめました。

※参考文献
Doesn’t install on windows 8, breaks jsDAV and cloud9 ide
Itanium. Fatal error LNK1181: cannot open input file ‘kernel32.lib’


0