UbuntuのPHP+NginxでリモートなXdebug (1) Nginx PHP対応

0

ローカルPCのEclipseからサーバ上のPHPをリモートデバッグします。
PHP環境はすべてサーバ側に置き、ローカルはEclipseとプラグインだけにして軽量化、PHPコードもサーバ上だけに一元化します。

UbuntuのバージョンはServer14.04。PHP5とNginxはaptでインストール済みとします。サーバーのIPアドレスはstaticです。

まずはFPM(FastCGI Process Manager)をインストールします。

$ sudo apt-get install -y php5-fpm

NginxをPHPに対応させるため、/etc/nginx/sites-available/defaultを編集します。
変更は3ヶ所。インデックスファイル名追加とサーバー名設定、それからコメントアウトされているPHPの設定を有効に。

server_nameにはサーバーのホスト名かIPアドレスを設定します。ここではひとまずIPアドレスで良いでしょう。この例では192.168.2.18です。

コメント中に「php.iniに”cgi.fix_pathinfo = 0;”と書け」とあるのでそのようにします。

設定確認のためのphpinfo.phpをNginxのドキュメントルート/usr/share/nginx/htmlに置きます。

設定が済んだらNginxとFPMを再起動します。
$ sudo service php5-fpm restart
$ sudo service nginx restart

ブラウザでhttp://hostname/phpinfo.phpを開き、下のような画面が表示されれば設定は完了です。

ubuntu-php-nginx-xdebug-01

TokyoCabinet/TokyoTyrantを使う (1) インストール

0

ubuntuならaptでインストールできますが、ここではソースコードからビルドしてみます。

ソースのtarボールをダウンロードしたら、適当なディレクトリに展開して一気にビルド&インストールしちゃいましょう。
まずはTokyoCabinetから。

configureで「bzlib.hが無い」と言われた場合は、libbz2-devをインストールします。
libbz-devで検索しても見つからないので注意してください。

続いてTokyoTyrant。

インストールができたら、サーバを起動して、データを格納してみましょう。

上記の例では、memcachedプロトコルを使って、キー’foo’の値として4文字のデータ’hoge’を格納しています。
‘^]’はCtrl+]です。

このままではその都度サーバを起動しなくてはならないので、起動スクリプトを作りましょう。

ttservctlの実体はttserverの起動スクリプトです。この例ではttservdという名前でリンクを張っています。
このスクリプトはなぜかttserverが配置されている/usr/local/binにパスが通っていなくて、OS起動時の自動起動に失敗するので、パスの記述を追加しておきます。
28行あたり。PATHの設定に/usr/local/binを追加します。

OSを再起動して動作確認してみましょう。

TokyoCabinetのデータはファイルに永続化されているので、再起動のあともさきほど格納したキーfooの値hogeが保持されています。

Ubuntu キーボードレイアウト変更

0

 rootで/etc/default/keybordを変更します。

 XKBMODELにキーボードのモデルを設定。
 設定値の一覧はこちら
 XKBLAYOUTには”jp”や”us”など、レイアウトファイル名を設定。レイアウトファイルは/usr/share/X11/xkb/symbols下にあります。

 保存後、再起動すると変更が反映されます。

clock_nanosleepを使ったタイマ処理

0

タイマを使って定期的にサーバにPOSTするプログラムを組んだ際、途中でタイマが止まってしまう不具合が発生しました。
これは定期実行のために使っていたsetitimerの設定がlibcurlのタイムアウト処理で上書きされてしまうのが原因でした。
setitimerはプロセスごとに固有なため、lubcurlを使うならsetitimerは使えません。というわけで、clock_nanosleepを使ってやってみました。

interval秒ごとにfunc関数を呼び出します。
別スレッドやシグナルハンドラで*termがtrueにセットされるとループを抜けます。

VirtualBoxで仮想シリアルポート同士をクロス接続する

0

 シリアル通信を行うプログラムのテストをするときに、仮想マシン上でなんとかしたい場合があります。
 普通はそんな状況は滅多にないでしょうが、稀に無いとも言えません。しかもそんな稀なケースでは得てして送信側と受信側の2つのポートが必要だったりします。

 そこで、仮想マシンに2つの仮想シリアルポートを作り、それを名前付きパイプでクロス接続することにします。

 VMwareなら片方をサーバ、もう一方をクライアントにしてオシマイです。
 それではつまらないので、VirtualBoxならどうすればいいのか。そんな設定は無いぞ。

 やってみました。

 両方の仮想シリアルポートのポートモードをパイプにして、同じパイプを参照するようにすれば良いかと思ったら、「そのパイプはすでに使っている」とか言って設定できません。VMwareのようにサーバとクライアントを選ぶこともできません。

 こんなときはVBoxManagerのヘルプを見てみます。

$ VBoxManager modifyvm

 とやると仮想マシンの設定変更コマンドヘルプがズラズラ〜と出てきます。この中の–uartmodeが目的のオプションです。

$ VBoxManager modifyvm 仮想マシン名 --uart1 on
$ VBoxManager modifyvm 仮想マシン名 --uart2 on
$ VBoxManager modifyvm 仮想マシン名 --uartmode1 server パイプのファイル名
$ VBoxManager modifyvm 仮想マシン名 --uartmode2 client パイプのファイル名

 と設定してやると、 仮想マシン上でいい塩梅にクロス接続されます。

VMware 仮想ディスクの容量を拡張する

0

VMware Technorogy NetworkのダウンロードページからVMware Virtual Disk Development Kit(VDDK)をダウンロード&インストールする(要登録)。

$ vmware-vdiskmanager -x 20G hoge.vmdk

という感じ容量を拡張。

GPartedのISOイメージをダウンロードして、仮想マシンをGPartedのISOイメージから起動。

パーティションをリサイズして再起動。
シャットダウンが終わると「ディスクを抜いてEnterを押せ」と言うので、仮想マシンのCD-ROMドライブからGPartedのISOイメージを解除して再起動。

Linuxゲストはスワップパーティションが後ろにつかえてリサイズできないときがある。
そんなときは一旦スワップパーティションを削除してから改めていちばん後ろに作り直してやると、スワップパーティションの前に隙間が空くので、前にあるパーティションがリサイズできるようになる。

ubuntu add-apt-repositoryが無い

0

python-software-propertiesに入ってた。

CSS tips float の罠?

0

おはようございます。将来の夢はイタクァに宇宙旅行に連れて行ってもらうことなゆうきんです。

ちょっと FuelPHP のサンプルページを凝って作ってみようとしたら、悩んだことがあったのでメモ。

 

float: left のように要素の回りこみを指定していると、それより下に書いた要素が、回りこみを指定した要素の表示位置と重なってしまうという現象。

これ、地味に困りました。

例えば、 css が

これで、 view が

の場合、私は

css のテスト1

こうなって欲しかったのですが、実際は

css のテスト2

こうなります・・・。

緑の部分が、青と赤の下に行ってしまうんです、

仕様を考えれば当然のことなんですが、これでは困るんですよね。

というわけで、以下の様に直して下さい。

そうすれば、想定した通りの配置になります。

これでOKです。

擬似要素である :after で「何もない」要素を表示しています。

content に指定したものが表示されるんですが、 “” という空の文字列を指定することによって、何もない要素としてます。

display はその要素をどう表示するかの指定で、今回はインラインでは困るのでブロックを指定してます。

clear は回り込みの解除するかどうかの指定です。 both で全ての回りこみを解除しています。

これで、 div の後に回りこみを無視する空の要素を表示することによって、次に表示する要素を、既に表示している要素の下に表示させることができるのです。

しかし、先ほどのビューの場合、赤 div の回り込みが残っているため、直後に表示する要素は、緑と同じ運命を辿ります。

そこで、回り込みのない div で青と赤をくくることにより、解決を図っているのです。

 

今回は、div 全てに :after を指定しましたが、今回の場合は、くくった div にのみ指定するのが正しいのかもしれません。

通常の div を表示する場合でも特に害がない(?)ので、私は div 全ての指定していますけどね。

では、おやすみなさい。

認証 その4 SimpleAuthユーザ管理画面を整理

0

前の記事でデータ操作を一通りできるようになったので、ここで表示まわりを少し整理しましょう。

一覧のパスワード、ログインハッシュ、Profile fieldsを削除します。また、一覧からのViewもとくに必要ないので削除します。

 

fuel/app/views/admin/user/index.phpから該当部分を削除します。変更後のコードは以下のようになります。

Last loginはタイムスタンプを日付+時刻の形式で表示するようにしました。

 

表示してみましょう。

表示変更後の一覧

 

だいぶすっきりしました。

 

FuelPHP SimpleAuthをいじっていたらブラウザが310リダイレクトループエラーに

0

何かの拍子に、SimpleAuthがリダイレクトエラーでログインできなくなってしまった。

閲覧履歴を削除してもダメ。

一旦データベースのusersテーブルとmigrationsテーブルを削除して$ oil r migrateしたら直った。

詳しく調べていないので原因は判りません。

ページのトップへ