Tech

CentOS 6.x に bitcoind デーモンをインストールする方法

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

CentOS 6.x なサーバに bitcoinのデーモンである bitcoind のインストールする方法

2014年4月時点では、bitcoin の開発者は、Debian, Ubuntuでコンパイルしているようで、そちらのほうがスムーズです。

3通りのやり方

  • yum で非公式rpmをインストール
  • bitcoin公式バイナリでインストール
  • ソースコードからコンパイル、インストール

非公式rpmの方法でやります。

事前知識

  • livenet: 本番ネットワーク (TCP: 8332, 8333)
  • testnet: テスト用ネットワーク (TCP: 18332, 18333)

yumでインストール

注意) rpmの安全性はご自分でご確認下さい。

以下からインストール。
release, SRPM, rpm があります。

Bitcoin for Fedora and Red Hat Enterprise Linux

上記から bitcoin-release-x-x.noarch.rpm をインストール

サーバをインストールしたいなら

# yum install bitcoin-server

/etc/bitcoin/bitcoin.conf で設定をする
設定方法は、のちほど。

# chkconfig bitcoin on
# /etc/init.d/bitcoin start

エラーで起動しない。ので
/etc/init.d/bitcoin 内容を編集して、エラーを /dev/nullに入れないようにする

  • ユーザ名(bitcoin)がいる?
  • 起動時にメッセージ出力をするようにする

で、以下のエラーが出た。

************************
EXCEPTION: N5boost12interprocess22interprocess_exceptionE
Permission denied
bitcoin in AppInit()

スティッキービットを立ててやる

# ls -la /usr/sbin/bitcoind
-rwxr-xr-x 1 root root 6010208 3月 23 06:08 2014 bitcoind*
# chmod a+s /usr/sbin/bitcoind

再度起動

# /etc/init.d/bitcoind start
bitcoin を起動中: Bitcoin server starting
[ OK ]
# Error: To use the "-server" option, you must set a rpcpassword in the configuration file:
/etc/bitcoin/bitcoin.conf
It is recommended you use the following random password:
rpcuser=bitcoinrpc
rpcpassword=E7Do...(みたいな文字列)
(you do not need to remember this password)
The username and password MUST NOT be the same.
If the file does not exist, create it with owner-readable-only file permissions.
It is also recommended to set alertnotify so you are notified of problems;
for example: alertnotify=echo %s | mail -s "Bitcoin Alert" admin@foo.com

bitcoin.conf

/etc/bitcoin/bitcoin.conf を書く

サンプルのBitcoin.conf は公式サイトを参考に

Running Bitcoin – Bitcoin

# /etc/init.d/bitcoind start
bitcoin を起動中: Bitcoin server starting
[ OK ]
# bitcoind: main.cpp:1638: bool ConnectBlock(CBlock&, CValidationState&, CBlockIndex*, CCoinsViewCache&, bool): Assertion `hashPrevBlock == view.GetBestBlock()' failed.

/etc/init.d/bitcoin stop

# /etc/init.d/bitcoin start
bitcoin を起動中: Bitcoin server starting
[ OK ]
# : Incorrect or no genesis block found. Wrong datadir for network?

/var/lib/bitcoin 以下のデータを削除すれば良さそうだけど、面倒なので yum remove & yum install してみたが失敗。

: Error opening block database.

Do you want to rebuild the block database now?

なぜかyと答えられない。
remove & install だと /var/lib/bitcoin は消えないので、バックアップ取って、再インストール。

# yum remove bitcoin-server
# mv /var/lib/bitcoin /var/lib/bitcoin-bak
# yum install -y bitcoin-server

再度起動。

Error: To use the "-server" option, you must set a rpcpassword in the configuration file:
/etc/bitcoin/bitcoin.conf
It is recommended you use the following random password:
rpcuser=bitcoinrpc
rpcpassword=HQ58(文字列)VCC
(you do not need to remember this password)
The username and password MUST NOT be the same.
If the file does not exist, create it with owner-readable-only file permissions.
It is also recommended to set alertnotify so you are notified of problems;
for example: alertnotify=echo %s | mail -s "Bitcoin Alert" admin@foo.com

chmod & chown

# : You need to rebuild the database using -reindex to change -txindex.

Do you want to rebuild the block database now?

helpを見る。blk000???.dat ファイルがおかしいっぽい。

# /usr/sbin/bitcoind --help | grep reindex
-reindex Rebuild block chain index from current blk000??.dat files

ブロックチェーンのindexをリビルド by bitcoin ユーザ

sudo -u bitcoin /usr/sbin/bitcoind -reindex

/etc/init.d/bitcoin stop
/etc/init.d/bitdoin start

で動いている。ようだ。

以上。

参考URL

commerce – How do I go about installing a Bitcoin daemon in CentOS Linux? – Bitcoin Stack Exchange

公式バイナリの tar.gz からインストール

以下、CentOS6.xのglibcのバージョンが古くてエラーになり、時間がかかるので途中で諦めています。

ダウンロード

以下から、linux版をダウンロード

Download – Bitcoin

解凍してインストール

tar zxvf bitcoin-0.9.0-linux.tar.gz

32bitか64bitに合わせてコピーか、シンボリックリンクする

sudo cp bitcoin-0.9.0-linux/bin/64/bitcoind /usr/local/bin/

bitcoind ユーザの作成

sudo useradd bitcoind -c "Bitcoin Daemon" -d /home/bitcoind --create-home --shell /bin/bash --system

bitcoind ユーザが、bitcoind を実行できるようにパーミッションを変更

sudo chmod 750 /usr/local/bin/bitcoind
sudo chgrp bitcoind /usr/local/bin/bitcoind

bitcoin.conf

insight-api のサンプルを参考に

  • ユーザやパスワードや許可ネットワークを変更
  • /etc/bitcoind/ などに配置
  • permissionを変更
rpcuser=user
rpcpassword=pass
server=1
txindex=1

# Allow connections outsite localhost?
rpcallowip=192.168.1.*

rpcport=8332

参考設定ファイル
insight-api/etc/bitcoind/bitcoin-livenet.conf at master · bitpay/insight-api

can

startup スクリプト

以下の bitcoind をpath等変更し /etc/init.d/ とかに入れる

Install bitcoind on linux and setup server

  • path を /usr/loca/bin に
  • bitcoin.conf の読み場所を変更

/etc/init.d/bitcoind start で起動ができず。
以下のエラーが出ていた

# /etc/init.d/bitcoin start
bitcoin を起動中: /usr/sbin/bitcoind: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.15' not found (required by /usr/sbin/bitcoind)
/usr/sbin/bitcoind: /lib64/libc.so.6: version `GLIBC_2.15' not found (required by /usr/sbin/bitcoind)
/usr/sbin/bitcoind: /lib64/libc.so.6: version `GLIBC_2.14' not found (required by /usr/sbin/bitcoind)
[失敗]
zsh: exit 1 /etc/init.d/bitcoind start

バージョンが古いのか?
rpm だと libstdc++-4.4.7-4.el6 が入っている

$ strings /usr/lib64/libstdc++.so.6 | grep GLIBC

上記を実行すると、GLIBCXX_3.4.15が出てこない。
諦めて、ソースか、srpmからコンパイル、しようかと思う。

gccの新しいバージョンをコンパイルする方法でも治るかも?
以下、未実行。

tar xzf gcc-4.6.2.tar.gz
cd gcc-4.6.2
./contrib/download_prerequisites
cd ..
mkdir objdir
cd objdir
$PWD/../gcc-4.6.2/configure --prefix=/opt/gcc-4.6.2
make
make install

上記やってから、コピー か ln -sしたら、動くかも。

SPRMからrpmをビルド

http://linux.ringingliberty.com/bitcoin/el6/SRPMS/bitcoin-0.9.0-2.el6.src.rpm

エラー: ビルド依存性の失敗:
qrencode-devel は bitcoin-0.9.0-2.el6.x86_64 に必要とされています
openssl-compat-bitcoin-devel は bitcoin-0.9.0-2.el6.x86_64 に必要とされ ています
miniupnpc-devel は bitcoin-0.9.0-2.el6.x86_64 に必要とされています
protobuf-devel は bitcoin-0.9.0-2.el6.x86_64 に必要とされています
/usr/share/selinux/devel/policyhelp は bitcoin-0.9.0-2.el6.x86_64 に必要とされています
boost-compat-bitcoin-devel は bitcoin-0.9.0-2.el6.x86_64 に必要とされて います

上記、クライアント系のものもつっこんでいるっぽいので、無駄。

GitHubのソースからコンパイル

今度、試してみます。
中の人は、Debian, Ubuntuを利用している様子。

公式サイトのUnixでのビルドのドキュメント

bitcoin/doc/build-unix.md at master · bitcoin/bitcoin

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