[[PageOutline]]
= 架設 BOINC Server =
BOINC Server 的架設方式有兩種:
1. 使用 [http://boinc.berkeley.edu/trac/wiki/VirtualMachines BOINC 團隊提供的 VMWare Image] 進行測試
* Linux 上如果遇到權限問題, 請確認解壓縮之後, vmx 檔案是否具備執行權限(Execution)
* [狀況] 使用 [http://boincdl.ssl.berkeley.edu/dl/debian-40r0-i386-boinc.zip Berkeley Debian Etch 4.0r0 32bit], 網路卡一直無法正常啟動, 故轉而使用自行製作的 vmware image.
2. 從 BOINC 官方 SVN 下載原始碼編譯並自行安裝相關套件
* 使用自製 Debian Etch 4.0r0 版本的 Xen VM 並執行[#自行安裝 以下]的步驟
== 使用 BOINC 官方 VMWare Image ==
根據[http://boinc.berkeley.edu/trac/wiki/VirtualMachines 官方文件]的說明, 安裝 BONIC Server 最容易的方法是安裝[http://www.vmware.com/download/player/ VMWare player] (免費軟體/freeware)。目前有兩個 VMWare Image 可以下載:
* [http://boincdl.ssl.berkeley.edu/dl/debian-40r0-i386-boinc.zip Berkeley BOINC 團隊提供的 VMWare Image - Debian Etch 4.0r0 32bit]
* [http://boincdl.ssl.berkeley.edu/dl/ubuntu-server-7.04-i386-boinc.zip Berkeley BOINC 團隊提供的 VMWare Image - Ubuntu Feisty 7.04 32-bit]
== 自行安裝 ==
=== 前置作業 ===
* 以下的步驟是在 Xen 的環境下完成, Xen 的安裝步驟請參考 [wiki:Xen_Installation Xen Installation How-To]
* '''前置作業''': 建立 BOINC Server Xen VM (Etch)
{{{
xen-server:~# xen-create-image -dir /home/xen --dist etch --debootstrap --fs reiserfs --accounts --kernel /boot/vmlinuz-2.6.18-6-xen-vserver-amd64 --initrd /boot/initrd.img-2.6.18-6-xen-vserver-amd64 --hostname boinc-server --ip 140.110.240.194 --gateway 140.110.240.254 --netmask 255.255.255.0 --mirror http://free.nchc.org.tw/debian
xen-server:~# xm create /etc/xen/boinc-server.cfg
xen-server:~# xm list
Name ID Mem(MiB) VCPUs State Time(s)
Domain-0 0 1878 4 r----- 1478.4
bonic-server 1 128 1 -b---- 1035.7
}}}
* 使用 root 帳號登入, 別忘了要設定密碼喔!! 否則用 xen-create-image 產生 VM 時請記得加 --passwd
{{{
xen-server:~# xm console bonic-server
boinc-server login: root
boinc-server:~# passwd
}}}
=== 安裝 BOINC Server 相關軟體 ===
* [參考文獻] [http://boinc.berkeley.edu/trac/wiki/ServerIntro#cookbook-debian40 Cookbook for Debian 4.0]
*
* BOINC Server 基本的套件需求
{{{
boinc-server:~# apt-get update
boinc-server:~# apt-get upgrade
boinc-server:~# apt-get install m4 make autoconf automake gcc g++ pkg-config libtool subversion vim apache2-mpm-prefork libapache2-mod-php5 mysql-server mysql-client-5.0 mysql-client-5.0 php5-mysql php5-cli php5-gd phpmyadmin python-mysqldb libmysql++-dev libssl-dev libphp-phpmailer
}}}
* [備註] libphp-phpmailer - 供 BOINC 專案註冊帳號寄信用 (參考 Linux Magazine Issue 71 October 2006 "Building distributed application with BOINC"([http://www.linux-magazine.com/issue/71/Distributed_Applications_With_BOINC.pdf PDF Download]))
* 建立 BOINC 管理者帳號
{{{
boinc-server:~# adduser boincadm
}}}
* 修改 MySQL Server 預設 root 密碼
{{{
boinc-server:~# mysql_install_db
boinc-server:~# mysqladmin -h localhost -u root password '新的 MySQL Root 密碼'
}}}
* 建立 BOINC SQL 管理者 boincadm 權限
{{{
boinc-server:~# mysql -h localhost -u root -p
mysql> GRANT ALL ON *.* TO 'boincadm'@'localhost';
mysql> SET PASSWORD FOR 'boincadm'@'localhost'='';
mysql> quit
}}}
* 編譯 BOINC 原始檔
{{{
boinc-server:~# svn co http://boinc.berkeley.edu/svn/trunk/boinc boinc_trunk
boinc-server:~# cd ~/boinc_trunk
boinc-server:~/boinc_trunk# svn update
boinc-server:~/boinc_trunk# ./_autosetup
boinc-server:~/boinc_trunk# ./configure --disable-client --enable-unicode --without-x
boinc-server:~/boinc_trunk# make
}}}
* 建立 BOINC Project 範例
{{{
boinc-server:~# cd ~/boinc_trunk/tools
boinc-server:~/boinc_trunk/tools# ./make_project --url_base http://140.110.240.194/ --db_host localhost --db_user boincadm --project_root /var/www/boinc_projects --delete_prev_inst --drop_db_first --test_app bioinfo
boinc-server:~/boinc_trunk/tools# chown -R www-data:www-data /var/www/boinc_projects
boinc-server:~/boinc_trunk/tools# cd /var/www/boinc_projects
boinc-server:/var/www/boinc_projects# cp bioinfo.httpd.conf /etc/apache2/sites-available/bioinfo
boinc-server:/var/www/boinc_projects# ln -s /etc/apache2/sites-available/bioinfo /etc/apache2/sites-enabled/bioinfo
boinc-server:/var/www/boinc_projects# apache2ctl -t
boinc-server:/var/www/boinc_projects# apache2ctl restart
boinc-server:/var/www/boinc_projects# cat bioinfo.cronjob >> /var/spool/cron/crontabs/root
}}}
* 由於範例專案預設不能申請帳號, 因此要把 disable_account_creation 的選項改為 0
{{{
#!diff
--- /var/www/boinc_projects/config.xml.org 2008-04-29 12:27:35.000000000 +0000
+++ /var/www/boinc_projects/config.xml 2008-04-29 11:54:40.000000000 +0000
@@ -17,7 +17,7 @@
3
- 1
+ 0
1024
}}}
* 修改 project.xml 架構設定檔:可只留下 i686 Linux 跟 x86_64 Linux 兩種版本,也就是預設只有 Linux 32 位元跟 64 位元兩種 CPU 架構可以執行 uppercase 範例專案(與下一個步驟有關)
{{{
#!diff
--- /var/www/boinc_projects/project.xml.org 2008-05-07 18:49:53.000000000 -0700
+++ /var/www/boinc_projects/project.xml 2008-05-07 18:50:23.000000000 -0700
@@ -1,13 +1,5 @@
- windows_intelx86
- Microsoft Windows (98 or later) running on an Intel x86-compatible CPU
-
-
- windows_x86_64
- Microsoft Windows running on an AMD x86_64 or Intel EM64T CPU
-
-
i686-pc-linux-gnu
Linux running on an Intel x86-compatible CPU
@@ -15,34 +7,6 @@
x86_64-pc-linux-gnu
Linux running on an AMD x86_64 or Intel EM64T CPU
-
- powerpc-apple-darwin
- Mac OS X 10.3 or later running on Motorola PowerPC
-
-
- i686-apple-darwin
- Mac OS 10.4 or later running on Intel
-
-
- sparc-sun-solaris2.7
- Solaris 2.7 running on a SPARC-compatible CPU
-
-
- sparc-sun-solaris
- Solaris 2.8 or later running on a SPARC-compatible CPU
-
-
- sparc64-sun-solaris
- Solaris 2.8 or later running on a SPARC 64-bit CPU
-
-
- powerpc64-ps3-linux-gnu
- Sony Playstation 3 running Linux
-
-
- anonymous
- anonymous
-
uppercase
upperCASE
}}}
* 確認範例專案的應用程式(BOINC Application)有 project.xml 中定義的二進位程式檔
{{{
boinc-server:/var/www/boinc_projects# cd apps/uppercase
boinc-server:/var/www/boinc_projects/apps/uppercase# ls
uppercase_1.1_i686-pc-linux-gnu
boinc-server:/var/www/boinc_projects/apps/uppercase# mkdir -p uppercase_1.1_x86_64-pc-linux-gnu
boinc-server:/var/www/boinc_projects/apps/uppercase# cp uppercase_1.1_i686-pc-linux-gnu/uppercase_1.1_i686-pc-linux-gnu uppercase_1.1_x86_64-pc-linux-gnu/uppercase_1.1_x86_64-pc-linux-gnu
}}}
* 注意:目錄的命名法則為『應用程式名稱_版本_CPU架構-作業系統』,而二進位程式檔的『版本』、『CPU架構』及『作業系統』都必須與目錄一致,也必須跟 project.xml 中寫的一致(參考 BOINC 官方網站註明的『已支援CPU架構、作業系統』),否則會在執行 bin/update_versions 時出現錯誤。
{{{
boinc-server:/var/www/boinc_projects# bin/update_versions
Ignoring directory (no main program found - it has to be named the same as the directory) /var/www/boinc_projects/apps/uppercase/uppercase_1.1_x86_64-pc-linux-gnu
No new versions found!
}}}
* 編輯專案網頁相關設定 html/project/project.inc
{{{
#!diff
}}}
* 啟動範例專案
{{{
boinc-server:/var/www/boinc_projects# bin/xadd
boinc-server:/var/www/boinc_projects# bin/update_versions
boinc-server:/var/www/boinc_projects# bin/start
boinc-server:/var/www/boinc_projects# bin/status
}}}
* 檢視 BOINC Project 範例
* 專案計畫首頁 - http://140.110.240.194/bioinfo
* 專案管理首頁 - http://140.110.240.194/bioinfo_ops/
== 測試 BOINC Project 範例 ==
* STEP 1: 首先前往 http://140.110.240.194/bioinfo/create_account_form.php 註冊帳號
* 取得 Account key , 例如: e1542951a2ca3853bd4095310d8559e6
* [備註] 相同的資訊可以登入後, 在 http://140.110.240.194/bioinfo/home.php 取得
* STEP 2: 安裝 boinc-client
{{{
boinc-client:~# apt-get install boinc-client
}}}
* STEP 3: 測試 boinc-client 登入 BOINC Project 範例
{{{
boinc-client:~# boinc -attach_project http://140.110.240.194/bioinfo e1542951a2ca3853bd4095310d8559e6 &
########################### 說明 #########################################
boinc-server:~# boinc -attach_project ${專案網址} ${線上申請到的_Account_key} &
}}}