Recent Posts
Recent Comments
Link
관리 메뉴

NaggingMachine

BOINC 설치 방법 본문

TechnoBabbler

BOINC 설치 방법

naggingmachine 2006. 8. 20. 17:10
몇 달 전까지만 해도(사실 그래봤다 두 달 전) BOINC를 가지고 씨름을 했었는데, 벌써부터 기억이 가물 가물 해지려고 한다. 역시 나의 머리란...
그래도 다행스러운 일은 그렇게 어렵게 설치하고 사용했던 BOINC에 관한 문서를 잘 정리해두었다는 것! 역시 문서는 작성할 때에는 꽤나 귀찮지만 그 가치는 필요할 때야 알게되는 것 같다.


일일이 편집하기 어려워서 워드로 작성된 내용을 붙여넣기 하였습니다. ^^;;



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



1) BOINC 필수 패키지 설치

http://boinc.ssl.berkeley.edu/build.php

페도라코어4 리눅스를 기준으로 선택하여 설치하되 비교적 최소설치에 가깝게 설치한다.

특별히 버전이 명시된 것은 정확하게 이상버전을 맞춰줘야 한다.

예) openssl 0.9.7f가 기본설치 되어 있지만, 소스설치로 openssl 0.9.8을 설치해야 한다.

프로젝트 수행시 사용한 패키지들의 버전은 아래와 같다. 1번째칸은 버전이 정확히 명시되어 있으므로, 생략하고 2번째 칸 부터는 패키지 이름이 정확하지 않으므로 상세히 명시한다.

perl-DBI-1.48-4.i386.rpm

perl-DBD-MySQL-2.9007-1.i386.rpm

mysql-4.1.11-2.i386.rpm

mysql-devel-4.1.11-2.i386.rpm

mysql-server-4.1.11-2.i386.rpm

mx-2.0.6-2.i386.rpm

MySQL-python-1.2.0-1.i386.rpm

apache_1.3.33.tar.tar

openssl-0.9.8.tar.gz

mod_ssl-2.8.23-1.3.33.tar.tar

libpng-devel-1.2.8-2.i386.rpm

php-4.4.2.tar.gz

python-xml-2.3-49.i586.rpm (SUSE버전이다)

// jpgraph-1.20.4a.tar.gz

위의 파일들을 /usr/local/src/ 폴더에 넣어준다.

a. MySQL  및 기타 rpm 설치

# cd /usr/local/src

# rpm -ivh perl-DBI-1.48-4.i386.rpm

# rpm -ivh mysql-4.1.11-2.i386.rpm

# rpm -ivh mysql-devel-4.1.11-2.i386.rpm

# rpm -ivh perl-DBD-MySQL-2.9007-1.i386.rpm

# rpm -ivh mysql-server-4.1.11-2.i386.rpm

# rpm -ivh mx-2.0.6-2.i386.rpm

# rpm -ivh MySQL-python-1.2.0-1.i386.rpm

# rpm -ivh python-xml-2.3-49.i586.rpm

b. openssl 설치

#tar xvzf openssl-0.9.8.tar.gz

#cd openssl-0.9.8

#./config                (공유라이브러리를 만들려면 --shared를 붙인다)

#make

#make install

설치경로 : usr/local/ssl위치에 설치된다.

c. mod_ssl 설치

#cd /usr/local/src

#tar xvzf apache_1.3.33.tar.gz

#tar xvzf mod_ssl-.2.8.23-1.3.33.tar.gz

#cd mod_ssl-2.8.23-1.3.33

#./configure \

--with-apache=/usr/local/src/apache_1.3.33 \

--with-ssl=/usr/local/ssl

d. apache 설치 및 인증서 생성

Apache는 DSO 기능 지원으로 컴파일한다.

#cd /usr/local/src

#cd apache_1.3.33

#./configure \

--prefix=/usr/local/apache \

--with-layout=Apache \

--enable-rule=SHARED_CORE \

--enable-shared=max \

--enable-module=so \

--enable-module=rewrite \

--enable-module=ssl \

--enable-shared=ssl

#make

e. SSL 인증서 생성

#make certificate TYPE=custom

인증서 작성

{

1. Country Name             (2 letter code) [XY]:kr

2. State or Province Name   (full name)     [Snake Desert]:cn

3. Locality Name            (eg, city)      [Snake Town]:daejon

4. Organization Name        (eg, company)   [Snake Oil, Ltd]:tjssm

5. Organizational Unit Name (eg, section)   [Webserver Team]:snowgrid

6. Common Name              (eg, FQDN)      [www.snakeoil.dom]:snow

7. Email Address            (eg, name@fqdn) [www@snakeoil.dom]:snow@localhost

8. Certificate Validity     (days)          [365]:              

암호1 : snowca

암호2 : snowgrid

}

#make install

#cd /usr/local/apache/conf/에서

#vi httpd.conf

ServerName 192.168.195.132             <- 서버컴의 IP를 적는다

#vi /etc/sysconfig/selinux

SELINUX=enforcing 부분을 아래와 같이 변경,

SELINUX=disabled

여기까지 한 후 반드시 재부팅(로그아웃이 아님!!!)한다.

f. 아파치 실행

#cd /usr/local/apache/bin

#./apachectl startssl

Enter pass phrase: snowgrid   <- 인증서 만들때 암호2를 적는다.

(root계정의 암호가 snowgrid이니 나오지 않았다)

g. php 설치

#cd /usr/local/src

#rpm -ivh libpng-devel-1.2.8-2.i386.rpm

#tar xvzf php-4.4.2.tar.gz

#cd php-4.4.2

#./configure \

--prefix=/usr/local/php \

--with-gd --with-png-dir \

--with-zlib \

--with-track-vars \

--with-mysql \

--with-apxs=/usr/local/apache/bin/apxs \

--enable-ftp \

--enable-inline-optimization \

--disable-debug

                             

#make

#make install

#cp ./php.ini-dist /usr/local/php/lib/php.ini

h. PHP를 아파치에 연결

# ln /usr/local/php/bin/php /usr/bin/php

로 php를 바로 사용할 수 있게 한후

아파치의 /usr/local/apache/conf/httpd.conf에서

#<VirtualHost *:80>

# ....

#</VirtualHost>  아래 줄에

AddType application/x-httpd-php   .php  (공백은 탭으로 구분)

Action application/x-httpd-php     php  (공백은 탭으로 구분)

i. MySQL 와 연결 설정

/usr/local/php/lib/php.ini 파일을 열어서

mysql.default_socket =/var/lib/mysql/mysql.sock

로 수정한다

2) BOINC 서버 설치

http://boinc.ssl.berkeley.edu/source_code.php

a. 소스 얻기

# cd /usr/local/src/

개발 버전을 얻기 위해서는

# cvs -d :pserver:anonymous:@alien.ssl.berkeley.edu:/home/cvs/cvsroot checkout boinc

혹은 안정화된 버전을 얻기 위해서는

# cvs -d :pserver:anonymous:@alien.ssl.berkeley.edu:/home/cvs/cvsroot checkout -r stable boinc

둘중에 하나를 선택하여 입력하면, /usr/local/src/boinc/ 라는 폴더가 생성되며 boinc 서버를 다운받는다.

b. 서버 설치

#cd boinc

#./_autosetup

#./configure --disable-client    (이 옵션이 없으면 curl 관련 패키지를 설치해야 함)

#make

#make install

3) 프로젝트 생성하기

http://boinc.ssl.berkeley.edu/create_project.php

http://j4cques.blogspot.com/

a. 키 생성

# cd /usr/local/src/boinc

# crypt_prog -genkey 1024 code_sign_private code_sign_public

# crypt_prog -genkey 1024 upload_private  upload_public

b. MySQL 실행

# service mysqld start

# mysql -uroot

> use mysql

> update user set Password=password('snowgrid') where User='root';

> FLUSH PRIVILEGES

> quit

c. 프로젝트 생성 및 시작

# tools/make_project

--delete_prev_inst \               <- 이전에 설치된 프로젝트의 파일 삭제 확인

--drop_db_first \                  <- 이전에 설치된 프로젝트의 DB내용 삭제

--project_root /project \          <- 프로젝트 루트 디렉토리

--db_user root \                  <- MySQL 접근 아이디

--db_passwd snowgrid \          <- MySQL 접근 암호

--key_dir /project \               <- 키파일이 있는 디렉토리

--url_base http://서버IP \         <- 서버의 URL

snowgrid \                        <- 프로젝트 이름

snowgrid                           <- 프로젝트 긴 이름

# cat /project/snowgrid.httpd.conf >> /usr/local/apache/conf/httpd.conf

# cd /usr/local/apache/bin

# ./apachectl stop

# ./apachectl startssl               <- SSL을 사용하도록 아파치 시작

# cd /project

# bin/start &                       <- 프로젝트를 시작

( xml 파일이 없다고 나올 수 있는데, 최초 시작하기 때문이다 )

d. 계정 추가 허용

#vi /project/config.xml 해서

disable_account_creation 부분을 0으로 셋팅

여기까지 완료하면 'http://서버IP/프로젝트이름' 의 주소에서 BOINC 홈페이지가 뜨는것을 볼 수 있다. (php에 관한 에러가 발생하면 '5) 에러 발생시 해결법' 항목을 참고한다)

4) 작업 생성하기

http://j4cques.blogspot.com/

a. project.xml 파일 갱신

<boinc>태그 사이에 <platform>태그가 보이는데, 그 다음줄에 다음과 같이 application을 추가한다.

<app>

<name>APP이름</name>

<user_friendly_name>APP이름</user_friendly_name>

</app>

여기의 APP이름은 곧 클라이언트에서 실행될 프로그램의 순수한 파일명과 일치해야 한다

예) hello_1.04_windows_intelx86.exe 인 경우 APP이름은 hello가 된다.

  ( APP이름 + 버전 + 플랫폼 )

일부 요소가 수정되었음을 서버에게 알린다.

# bin/xadd

b. Application 업로드

# mkdir hello

# cd hello

# mkdir hello_1.04_windows_intelx86.exe

# cd hello_1.04_windows_intelx86.exe

# 실행할 파일과 데이터를 올린다.

# ls

hello_1.04_windows_intelx86.exe

# cd /project

# bin/update_versions

( /project/download 폴더에 실행파일과 데이터들이 복사되면서 BOINC클라이언트들은 APP를 업데이트한다. )

c. Workunit 생성

# bin/create_work \

-appname hello \                             <- APP이름

-wu_name world3 \                            <- Workunit 이름

-wu_template templates/world_wu.xml \        <- Workunit에 관한 정보

-result_template templates/hello_re.xml          <- 결과 파일에 관한 정보

이와 같이 수행하면 /project/download 디렉토리에 임의의 이름으로 디렉토리가 생성되는데, 이때 이 디렉토리의 퍼미션을 755로 조정해야 한다.

#chmod 755 ____

#bin/stop

#bin/start &

5) 에러 발생시 해결법

문제 발생시 퍼미션을 먼저 의심해볼것. 올바르게 설치되지 않은 경우 퍼미션이 루트권한으로 잡히는데, 이런 경우엔 수동적으로 고쳐주는 방식으로 해야한다.

a. 프로젝트 홈페이지가 제대로 보이지 않을 경우

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

/home/aspire/project/html 에서 퍼미션을 다음과 같이

drwxrwxrwx  258 root root 4096  6???  7 05:10 cache

drwxrwxrwx    2 root root 4096  6???  7 16:19 inc

drwxrwxrwx    5 root root 4096  6???  7 04:39 languages

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

/home/aspire/project/html/languages 에서 퍼미션을 다음과 같이

drwxrwxrwx  2 root   root   4096  6???  7 04:50 compiled

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

/home/aspire/project/html/languages/compiled 폴더에 다음 파일을 추가

-rw-r--r--  1 root root 8165  6???  7 04:50 en.po.inc

-rw-r--r--  1 root root 2620  6???  7 04:49 language_interface.inc

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

b. BOINC client 프로젝트 연결시 에러

에러메시지 : Server can't open log file (../log_localhost/cgi.log)

                             

해결책1)

And here another Mental impetus for the can't open logfile error:

After having the same error with my own BOINC-Server i changed the permissions

for the Server-log-directories so that the webserver and root(user who starts

BOINC respectivly) can read/write the dirs(you may have more then one).

                             

퍼미션을 조정한다.

                             

# cd /project

# chmod 777 log_localhost/ upload/

                             

# bin/stop

# bin/start &

# /usr/local/apache/bin/apachectl stop

# /usr/local/apache/bin/apachectl startssl

c. Unrecoverable error for result XXXX (잘못된 기능입니다. (0x1) - eit code 1 (0x1))

작성된 App프로그램에 문제가 있으므로 다시 작성한다.

d. http://210.118.64.172/snowgrid_ops/ 에 WorkUnit 부분의 server_state 부분이 빈 상태로 나오는 경우

이런경우 MySQL에서 result 테이블에 내용이 등록되지 못하는 경우이다.

서버프로그램이 등록된 workunit의 result(workunit 상태정보)을 확인하지 못하기 때문이므로

bin/stop

bin/start &

재시작해준다.

MySQL에서 result와 workunit 테이블 모두에 등록한 workunit에 관한 내용이 있어야 정상