wiki:YM_Course_2009/Lab9
實作九: World Community Grid 帳號申請實作

◢ <實作八> | <回課程大綱> ▲ | <實作十> ◣

架設 BOINC Server

BOINC Server 的架設方式有兩種:

  1. 使用 BOINC 團隊提供的 VMWare Image 進行測試
    • Linux 上如果遇到權限問題, 請確認解壓縮之後, vmx 檔案是否具備執行權限(Execution)
    • [狀況] 使用 Berkeley Debian Etch 4.0r0 32bit, 網路卡一直無法正常啟動, 故轉而使用自行製作的 vmware image.
  2. 從 BOINC 官方 SVN 下載原始碼編譯並自行安裝相關套件
    • 使用自製 Debian Etch 4.0r0 版本的 Xen VM 並執行以下的步驟

使用 BOINC 官方 VMWare Image

根據官方文件的說明, 安裝 BONIC Server 最容易的方法是安裝VMWare player (免費軟體/freeware)。目前有兩個 VMWare Image 可以下載:

自行安裝

前置作業

  • 以下的步驟是在 Xen 的環境下完成, Xen 的安裝步驟請參考 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.X.X --gateway 140.110.X.X --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 相關軟體

  • [參考文獻] 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"(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.X.X/ --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
    • /var/www/boinc_projects/config.xml

      old new  
      1717      3
      1818    </sched_debug_level>
      1919    <disable_account_creation>
      20       1
       20      0
      2121    </disable_account_creation>
      2222    <uldl_dir_fanout>
      2323      1024
  • 修改 project.xml 架構設定檔:可只留下 i686 Linux 跟 x86_64 Linux 兩種版本,也就是預設只有 Linux 32 位元跟 64 位元兩種 CPU 架構可以執行 uppercase 範例專案(與下一個步驟有關)
    • /var/www/boinc_projects/project.xml

      old new  
      11<boinc>
      22    <platform>
      3         <name>windows_intelx86</name>
      4         <user_friendly_name>Microsoft Windows (98 or later) running on an Intel x86-compatible CPU</user_friendly_name>
      5     </platform>
      6     <platform>
      7         <name>windows_x86_64</name>
      8         <user_friendly_name>Microsoft Windows running on an AMD x86_64 or Intel EM64T CPU</user_friendly_name>
      9     </platform>
      10     <platform>
      113        <name>i686-pc-linux-gnu</name>
      124        <user_friendly_name>Linux running on an Intel x86-compatible CPU</user_friendly_name>
      135    </platform>
       
      157        <name>x86_64-pc-linux-gnu</name>
      168        <user_friendly_name>Linux running on an AMD x86_64 or Intel EM64T CPU</user_friendly_name>
      179    </platform>
      18     <platform>
      19         <name>powerpc-apple-darwin</name>
      20         <user_friendly_name>Mac OS X 10.3 or later running on Motorola PowerPC</user_friendly_name>
      21     </platform>
      22     <platform>
      23         <name>i686-apple-darwin</name>
      24         <user_friendly_name>Mac OS 10.4 or later running on Intel</user_friendly_name>
      25     </platform>
      26     <platform>
      27         <name>sparc-sun-solaris2.7</name>
      28         <user_friendly_name>Solaris 2.7 running on a SPARC-compatible CPU</user_friendly_name>
      29     </platform>
      30     <platform>
      31         <name>sparc-sun-solaris</name>
      32         <user_friendly_name>Solaris 2.8 or later running on a SPARC-compatible CPU</user_friendly_name>
      33     </platform>
      34     <platform>
      35         <name>sparc64-sun-solaris</name>
      36         <user_friendly_name>Solaris 2.8 or later running on a SPARC 64-bit CPU</user_friendly_name>
      37     </platform>
      38     <platform>
      39         <name>powerpc64-ps3-linux-gnu</name>
      40         <user_friendly_name>Sony Playstation 3 running Linux</user_friendly_name>
      41     </platform>
      42     <platform>
      43         <name>anonymous</name>
      44         <user_friendly_name>anonymous</user_friendly_name>
      45     </platform>
      4610    <app>
      4711        <name>uppercase</name>
      4812        <user_friendly_name>upperCASE</user_friendly_name>
  • 確認範例專案的應用程式(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
    • project.inc

      old new  
      77require_once("../inc/util.inc");
      88
      99$master_url = parse_config(get_config(), "<master_url>");
      10 define("PROJECT", "REPLACE WITH PROJECT NAME");
       10define("PROJECT", "Bioinfo@Home");
      1111define("URL_BASE", $master_url);
      1212define("IMAGE_PATH", "../user_profile/images/");
      1313define("IMAGE_URL", "user_profile/images/");
       
      1515define("PROFILE_URL", "user_profile/");
      1616define("LANGUAGE_FILE", "languages.txt");
      1717define("STYLESHEET", "white.css");
      18 define("COPYRIGHT_HOLDER", "REPLACE WITH COPYRIGHT HOLDER");
      19 define("SYS_ADMIN_EMAIL", "admin@$master_url");
      20 define("UOTD_ADMIN_EMAIL", "admin@$master_url");
       18define("COPYRIGHT_HOLDER", "NCHC,Taiwan");
       19define("SYS_ADMIN_EMAIL", "YOURNAME@NCHC.ORG.TW");
       20define("UOTD_ADMIN_EMAIL", "YOURNAME@NCHC.ORG.TW");
      2121    // who gets user of the day pool running low e-mails?
      2222
      2323// Email addresses separated by pipe ( | ) that will receive user reported
      2424// offensive forum posts.
      25 define("POST_REPORT_EMAILS", "moderator1@$master_url|moderator2@$master_url");
       25define("POST_REPORT_EMAILS", "YOURNAME@NCHC.ORG.TW|YOURNAME2@NCHC.ORG.TW");
      2626
      2727function project_banner($title) {
      2828    // Put your project title and logo here
  • 啟動範例專案
    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 範例

測試 BOINC Project 範例

  • STEP 1: 首先安裝 boinc-client
    boinc-client:~# apt-get install boinc-client
    
  • STEP 2: 其次是前往 http://140.110.X.X/bioinfo/create_account_form.php 註冊帳號
    • 取得 Account key , 例如: 8346cd95017b110ee2ecd88ed7734981
    • [備註] 相同的資訊可以登入後, 在 http://140.110.X.X/bioinfo/home.php 取得
    • 亦可使用命令列取得 Account key
      boinc-client:~# boinc_cmd --create_account http://140.110.X.X/bioinfo ${YOUR_EMAIL} "${YOUR_PASSWORD}" ${YOUR_ID}
      status: Success
      poll status: operation in progress
      poll status: operation in progress
      account key: 8346cd95017b110ee2ecd88ed7734981
      
  • STEP 3: 測試 boinc-client 登入 BOINC Project 範例
    • [方法一] 直接執行 boinc
      boinc-client:~# boinc -attach_project http://140.110.X.X/bioinfo 8346cd95017b110ee2ecd88ed7734981 &
      ########################### 說明 #########################################
      boinc-server:~# boinc -attach_project ${專案網址} ${線上申請到的_Account_key} &
      
    • [方法二] 讓 boinc-client 跑在背景, 再用 boinc_cmd 去加入 project
      boinc-client:~# /etc/init.d/boinc-client start
      ##### 加入專案 #####
      boinc-client:~# boinc_cmd --project_attach http://140.110.X.X/bioinfo 8346cd95017b110ee2ecd88ed7734981
      ##### 取得狀態 #####
      boinc-client:~# boinc_cmd --get_state
      ##### 離開專案 #####
      boinc-client:~# boinc_cmd --project http://140.110.X.X/bioinfo detach
      

錯誤排除

  • [狀況一] 當 boinc client 加入專案後, 一直無法取得系統狀態. 查看 /var/lib/boinc_client/sched_replay_* 出現以下訊息
  • [參考] BOINC Server Shared Memory Error
Last modified 15 years ago Last modified on Jul 10, 2009, 6:05:29 PM