NginxでOpenVBXを動かす

Tags : Twilio   openVBX  

有料のサイトを作成するため、電話番号をどうしようかなと思いました。東京にいるに使っていた債権は多分まだ有効のはずですが、こちらからかけることが少ないので、ほぼ無駄になります。IP電話の番号は使っていないので、現在無駄になっていますが、いくら着信音が異なっても、まともに電話の対応ができない両親に取られるとトラブルになるかも知れません。

ちょうどその頃、Twilioが騒がしくなっていて、アカウントを有効にするため2000円払い、番号を取得して終わっていました。いくら自由が聞くと言っても、それを活用するツールを作成するのは面倒でした。

その時にOpenVBXも見つけていたのですが、「いざとなったら使用しよう」と決め、忘れていました。

昨日、ふと思い出し、Twilioのアカウントを見てみたら、無駄に毎月電話番号確保分が前払金から引かれていて、おおこれはいかん、活用しなければと道を探し始め、やはりOpenVBXが良いかなとテストを兼ね、インストールしてみました。

Twilio日本 OpenVBX

検索してもらえば、インストール方法は日本語の記事が見つかります。公式ドキュメントや記事では書かれていない部分を補足すると、1.ネットに公開している環境にインストールする必要があり、2.ドメイン名を使用しなくても、IPアドレスでも使用可能です。l

着信時の処理を問い合わせるため、公開されている環境が必要です。つまり、ネットから閉じているローカルな環境にはインストールできません。試してみるとわかりますが、インストール時に確認しているため、Twilioから接続できない環境の場合、どのURLへつなぐのかと入力を促され、インストールがそれ以上できなくなります。

公開されていれば良いので、アクセス可能であればパブリックのIPでもかまいません。

WebサーバーがApache2の場合、滞りなく進みます。問題はNginxの場合です。仮想ホスト設定のサンプルコードはリポに含まれていますし、公開もされていますが、トップページの環境チェックからAJAXで行っている通信がエラーになり、先へ進めなくなります。これに今日ハマりました。

原因は仮想ホストの設定にあるものとばかり思えましたが、埒が明かず、検索したら設定ファイルを変更しろと書かれていました。

Nginxの設定例と一緒に、紹介します。

仮想ホスト設定例

もちろんNginxの例です。

server {
    listen 80;

    # ドメイン名
    server_name openvbx.domain.com;

    location / {
            # インストール先のディレクトリーをドキュメントルートに指定
            root /home/hiro/openvbx.domain.com;
            index index.php;
            try_files $uri $uri/ /index.php?vbxsite=$uri&$query_string;
    }
    location ~\.php$ {
            include /etc/nginx/fastcgi_params;
            proxy_pass_header Set-Cookie;
            fastcgi_pass_header Set-Cookie;
            # これはUbuntuサーバーのunixソケットを使用する場合の例
            fastcgi_pass unix:/var/run/php5-fpm.production.sock;
            fastcgi_index index.php;
            # インストール先ディレクトリーを指定する
            fastcgi_param SCRIPT_FILENAME /home/hiro/openvbx.domain.com$fastcgi_script_name;
    } 
}

OpenVBXに含まれているサンプル仮想ホスト設定の指定は、だいぶ古いので、今風にしています。

OpenVBXはCodeIgniterで作成されています。設定ファイルの一箇所を変更しないと、スクリプトが見つからないエラーで苦しめられます。

インストール先のディレクトリー中の、OpenVBX/config/config.phpファイルを開き、以下の1行を指定してください。それ以外の行は変更しません。

$config['index_page'] = '';

元々、index.phpが指定されているのを、空文字列に変更します。これで、Nginxでもインストールが完了でき、使用開始することができます。

まだ、機能は試していません。でも、インストールが完了したので、たぶん大丈夫でしょう。