カテゴリ: Linux

インストール

PHPのデバッグのためのライブラリであるXdebug、なにやら便利そうなのでいまさらながら入れてみました。公式のインストール手順はコチラ(英語)です。まずはソースの取得をして解凍します。通常ですとこの後./configureですが、phpizeというコマンド(PHP 拡張モジュールのビルド環境を準備するためのコマンド)を使います。その後makemake installという流れです。


# wget http://www.xdebug.org/files/xdebug-2.1.0.tgz
# tar xzvf xdebug-2.1.0.tgz
# phpize
# ./configure --enable-xdebug
# make
# make install


make install後、php.iniに以下を追加します。

extension=xdebug.so


追加が終わったらApacheを再起動します。

/etc/rc.d/init.d/httpd restart


実行してみる

ためしにエラーが発生するPHPのコードを作ってブラウザで表示させてみました。定義されてない変数を表示する簡単なコードです。
[php]
echo $variable;
?>
[/php]結果はこれ。


var_dump()の結果も見やすくして表示してくれるようです。配列に値を入れてそれをvar_dumpしてみるだけのコードです。通常ですと見にくく素っ気無い結果が表示されますよね。
[php]
$books = Array();
$books[0] = "PHP6 AND MYSQL5";
$books[1] = "PHP and MySQL Web Development";
$books[2] = "Head Rush Ajax";
var_dump($books);
?>
[/php]Xdebugだとこのように割りと見やすく配列の中身を表示してくれました。


このエントリーをはてなブックマークに追加


Twitterも一部のシステムで使っていることで有名な非RDBMSのCassandraをLinux(CentOS)に入れてみました。まずはダウンロードと解凍をしてとりあえず起動です。


# wget ftp://ftp.riken.jp/net/apache//cassandra/0.6.5/apache-cassandra-0.6.5-bin.tar.gz
# tar xzvf apache-cassandra-0.6.5-bin.tar.gz
# cd apache-cassandra-0.6.5/bin
# ./cassandra -f


トラブル1

以下のエラーが発生。どうやら8080ポートが使われてる様子。

エラー: エージェントが例外をスローしました。 : java.rmi.server.ExportException: Port already in use: 8080; nested exception is:
java.net.BindException: Address already in use


8080ポートはJMXが使用しているようなので、Cassandraで使用するポートを変更します。修正するファイルは.apache-cassandra-0.6.5/bin/cassandra.in.shです。以下のように9081に修正しました。


JVM_OPTS=" \
-ea \
-Xms1G \
-Xmx1G \
-XX:+UseParNewGC \
-XX:+UseConcMarkSweepGC \
-XX:+CMSParallelRemarkEnabled \
-XX:SurvivorRatio=8 \
-XX:MaxTenuringThreshold=1 \
-XX:+HeapDumpOnOutOfMemoryError \
-Dcom.sun.management.jmxremote.port=9081 \
-Dcom.sun.management.jmxremote.ssl=false \
-Dcom.sun.management.jmxremote.authenticate=false"


トラブル2

これでやっとこさ起動だー!と思ったら今度は違うエラーが。。。

java.net.BindException: Address already in use
at sun.nio.ch.Net.bind(Native Method)
at sun.nio.ch.ServerSocketChannelImpl.bind(ServerSocketChannelImpl.java:137)
at sun.nio.ch.ServerSocketAdaptor.bind(ServerSocketAdaptor.java:77)
at sun.nio.ch.ServerSocketAdaptor.bind(ServerSocketAdaptor.java:70)
at org.apache.cassandra.net.MessagingService.listen(MessagingService.java:150)
at org.apache.cassandra.service.StorageService.initServer(StorageService.java:335)
at org.apache.cassandra.thrift.CassandraDaemon.setup(CassandraDaemon.java:118)
at org.apache.cassandra.thrift.CassandraDaemon.main(CassandraDaemon.java:214)
Exception encountered during startup.
java.net.BindException: Address already in use
at sun.nio.ch.Net.bind(Native Method)
at sun.nio.ch.ServerSocketChannelImpl.bind(ServerSocketChannelImpl.java:137)
at sun.nio.ch.ServerSocketAdaptor.bind(ServerSocketAdaptor.java:77)
at sun.nio.ch.ServerSocketAdaptor.bind(ServerSocketAdaptor.java:70)
at org.apache.cassandra.net.MessagingService.listen(MessagingService.java:150)
at org.apache.cassandra.service.StorageService.initServer(StorageService.java:335)
at org.apache.cassandra.thrift.CassandraDaemon.setup(CassandraDaemon.java:118)
at org.apache.cassandra.thrift.CassandraDaemon.main(CassandraDaemon.java:214)


調べてみるとどうやら同じプログラムを二重に起動してたりすると出るエラーのよう。そういえばさっきから起動コマンド打ちまくってたからそれか!と思ってps -ef | grep cassandraでプロセスを調べてみたらいやがるいやがる!丁重ににkillさせていただきました!そして再度起動。


# ./cassandra -f


データの挿入、取り出し


違うウィンドウを起動してデータを入れてみました。


# ./cassandra-cli --host localhost --port9160

cassandra> set Keyspace1.Standard2['hoge']['hage']='aho'
Value inserted.

cassandra> get Keyspace1.Standard2['hoge']
=> (column=hage, value=aho, timestamp=1283431333222000)
Returned 1 results.

ちゃんとデータの挿入と取出しができました。

管理コマンド

他にもコマンドがあります。
管理系のコマンドでは設定ファイルを見るコマンド。

cassandra> show config file


サーバーAPIのバージョンを確認するコマンド。

cassandra> show api version
2.2.0


クラスター名を確認するコマンド。Test Clusterは初期で設定されてるクラスターですね。

cassandra> show cluster name
Test Cluster


キースペースを確認するコマンド。

cassandra> show keyspaces
Keyspace1
system


キースペースの定義を表示するコマンド。

cassandra> describe keyspace Keyspace1
Keyspace1.Super1
Column Family Type: Super
Columns Sorted By: org.apache.cassandra.db.marshal.BytesType@68cd79

Column Family Type: Super
Column Sorted By: org.apache.cassandra.db.marshal.BytesType
flush period: null minutes
------
Keyspace1.Standard2
<長いので以下省略>


これおもしろそうですね。今度はプログラムと連携させてみようかと思います。
このエントリーをはてなブックマークに追加

Ruby の標準パッケージ管理システムである RubyGemsのインストールメモ。
環境はCentOS 5.4。
($は一般ユーザ、#はrootユーザ)



$ cd /usr/src
$ wget http://rubyforge.org/frs/download.php/60718/rubygems-1.3.5.tgz
$ tar zxvf rubygems-1.3.5.tgz
$ cd rubygems-1.3.5
# mkdir /usr/lib/gems
# ruby setup.rb --prefix=/usr/lib/gems

RubyGems 1.3.5 installed

=== 1.3.5 / 2009-07-21

Bug fixes:

* Fix use of prerelease gems.
* Gem.bin_path no longer escapes path with spaces. Bug #25935 and #26458.

Deprecation Notices:

* Bulk index update is no longer supported (the code currently remains, but not
the tests)
* Gem::manage_gems was removed in 1.3.3.
* Time::today was removed in 1.3.3.


------------------------------------------------------------------------------

RubyGems installed the following executables:
/usr/lib/gems/bin/gem



次に環境変数の設定。rootユーザの.bashrcに次を追加

export GEM_HOME=/usr/lib/gems
export PATH=$PATH:/usr/lib/gems/bin
export RUBYLIB=$RUBYLIB:/usr/lib/gems/lib


.bashrcをsourceコマンドで読み込んで、gemのバージョンを確かめる。「gem -v」と打ってバージョンが出ればインストールOK。

# source /root/.bashrc
# gem -v
1.3.5

このエントリーをはてなブックマークに追加

CentOSにvfstpdをインストールした後、FFFTPやFileZillaから繋がらない現象が発生し、少しはまってしまったので解決方法をメモとして残しておきます。

FFFTPでは「ファイル一覧の取得に失敗しました」とメッセージが出て、FileZillaだとLISTコマンドで止まってしまい、接続はされているがサーバー側のファイル一覧が出てきませんでした。FileZillaでのログメッセージはこんな感じでした。



状態: 192.168.1.100:21 に接続しています...
状態: 接続が確立されました, ウェルカムメッセージを待っています...
応答: 220 Welcome to blah FTP service.
コマンド: USER XXXX
応答: 331 Please specify the password.
コマンド: PASS *********
応答: 230 Login successful.
コマンド: SYST
応答: 215 UNIX Type: L8
コマンド: FEAT
応答: 211-Features:
応答: AUTH SSL
応答: AUTH TLS
応答: EPRT
応答: EPSV
応答: MDTM
応答: PASV
応答: PBSZ
応答: PROT
応答: REST STREAM
応答: SIZE
応答: TVFS
応答: 211 End
状態: 接続されました
状態: ディレクトリ一覧を読み出しています...
コマンド: CWD /home/XXXX
応答: 250 Directory successfully changed.
コマンド: PWD
応答: 257 "/home/XXXX
コマンド: TYPE I
応答: 200 Switching to Binary mode.
コマンド: PASV
応答: 227 Entering Passive Mode (XXX.XXX.XXX.XXX,233)
コマンド: LIST
エラー: 接続タイムアウト
エラー: ディレクトリ一覧表示の取り出しに失敗しました


このようにLISTでファイル一覧を取得するところで失敗してしまいました。調べてみるとvsftpdの設定ファイルで余計な設定してるとLISTで止まってしまうという情報が!そういえばvsftpdインストールする時に色々追加したような。。。ということで追加した部分で怪しいところをコメントアウトしてみました。


#pasv_addr_resolve=YES
#pasv_address=XXXXXX
#pasv_min_port=60000
#pasv_max_port=60030


設定ファイルを変更したのでvsftpdの再起動。


/etc/rc.d/init.d/vsftpd restart


再度、FTPクライアントからつなげてみたところ無事接続できました。どうやらこれらの設定はルータでやってくれるものがあるため、ftpサーバ側で設定してしまうとうまくいかないことがあるようです。
このエントリーをはてなブックマークに追加

悩むこと3ヶ月、ようやく決心がついてShuttleのベアボーンであるX27Dを購入。自作は3つ目ですがこれが一番簡単でした。まぁ、ベアボーンですからそれもそうですね。ディスプレイやキーボードなど小物はあったので買ったのは以下の3つ。

X27D Shuttle ベアボーンPC


WESTERN DIGITAL 2.5インチ内蔵HDD Serial-ATA 5400rpm 320GB 8MB WD3200BEVT

・Panasonic UJ-880A SLIM DVD Multi SATA

合計約3万円也。

OSは最近はやってきてるUbuntuを入れたんですが、なんとなく使いにくかった(スーパーユーザにスイッチできないとことか)のと、RedHat系を使い慣れてたこともあって最終的にはCentOSに。Linuxディストリビューションの中では数少ないサーバー用途のOSということも背中を押しました。

本体購入の決め手になったのはなんといってもその筐体の小ささ。B5ノートと同じ大きさで高さは7cmほど。ファンの音は噂よりも小さかったので常時稼動させててもきにならないと思います。でも寝室にあると多少気になるかもしれませんが。

P1010074
P1010073

こんなにすばらしいおもちゃが2万円で買えるなんて素晴らしい時代になったもんです(*´д`*)
このエントリーをはてなブックマークに追加

↑このページのトップヘ