Biowiki installer
From Biocourse
1. 파일 및 수행 과정 설명
위키 자동 인스톨러는 php5 + mysql + mediawiki로 구성되어 있고 아파치 웹서버에서 웹브라으저를 통해 구동 되는 프로그램이다.
실행하기 위한 php파일은 /BiO/Serve/Httpd/Wikiinstaller/에 있다
여러 파일들 중에서 메인 실행파일은 wikimaker.php이며 wikimaker.php는 WikiInstaller.php 클래스 파일을 포함하고 있다.
wikimaker.php의 실제 소스를 보면 다음과 같으며 이해를 돕기 위해 주석을 달아 놓았다.
<?php
require_once("WikiInstaller.php"); //WikiInstaller.php 클래스 파일을 포함 : C나 java의 Import 키워드와 비슷
$data = file("domain.txt"); //도메인이 적힌 파일을 읽어와서 파일의 내용을 한줄 한줄 배열형태로 리턴한다. 기존 프로그래밍 언어의 file함수와 같다 파라메터 값은 파일이름
$dirPath = "/BiO/Serve/Httpd";
$wikiDomain;
$wikiInstall = new WikiInstaller(); //위에 첫번째 줄에 포함된 WikiInstaller 클래스 (require_once("WikiInstaller.php"); ) 의 객체 생성
$dirArray = scandir($dirPath); //scandir 함수는 말그대로 전달받은 path의 디렉토리를 배열 형태로 리턴한다.
$numDir = count($dirArray); //배열 형태로 리턴된 dir의 갯수를 가져온다. count는 배열의 갯수를 리턴하는 php함수이다.
for($i = 2;$i<count($data); $i++){ //도메인의 갯수만큼 루프를 돌면서 설치 작업을 한다.
$domain = $data[$i]; //도메인을 읽어온다.
$fdomain = split ("\.", $domain); //"."을 기준으로 문자열을 자르고 실제 도메인만 가져온다. ex) $fdomain = split ("\.", "ABIO.NET 9/27/2006 "); echo $fdomain ; 결과는 ABIO
$wikiDomain = strFirstUp($fdomain[0]); //도메인의 첫번째 캐릭터만을 대문자로 한다. ex) $wikiDomain = strFirstUp("ABIO"); echo $wikiDomain; 결과는 Abio
$wikiInstall -> setConfig($wikiDomain,$wikiDomain,$wikiDomain,$dirPath); //WikiInstaller 클래스의 setConfig함수 call : 초기값 세팅 ->도메인 이름과 패스
if (is_dir("$dirPath/$wikiDomain")) { //디렉토리가 존재 할시
if(is_dir("$dirPath/$wikiDomain/Biowiki")){ //기존에 위키가 있을 시
if(is_dir("$dirPath/$wikiDomain/Biowiki-2.3")){ //이미 있는 위키의 버전이 새것인지 아닌지 -> 버전을 틀리게 하고 싶으면 이부분을 고치면 된다. ex) $wikiDomain/Biowiki-2.4"))
$fileCheck = file_exists("$dirPath/$wikiDomain/Biowiki/LocalSettings.php");
if ($fileCheck==1){ //Localsetting.php가 있는지 아닌지
print "<b>$wikiDomain already Localsetting.php exist</b><br>";
}else{
if( !is_writable("$dirPath/$wikiDomain/Biowiki/" )){
chmod("$dirPath/$wikiDomain/Biowiki/",0755);
}
mkLocalsetting($wikiDomain, $wikiInstall, $dirPath);
}
}else{
if( !is_writable("$dirPath/$wikiDomain" )){
chmod("$dirPath/$wikiDomain",0755);
}
system("rm -f Biowiki");
setup($wikiDomain, $wikiInstall, $dirPath);
}
}else{
if( !is_writable("$dirPath/$wikiDomain" )){
chmod("$dirPath/$wikiDomain",0755);
}
setup($wikiDomain, $wikiInstall, $dirPath);
}
}else{ //디렉토리가 없을 시
//dir을 만들고 install을 실행
echo "$dirPath/$wikiDomain";
if(!mkdir("$dirPath/$wikiDomain",0755)){
echo "디렉토리를 만드는데 실패했습니다";
exit(0);
}
setup($wikiDomain, $wikiInstall, $dirPath);
}
}
function strFirstUp($str){
$temp = strtolower($str);
$temp = ucfirst($temp);
return $temp;
}
function setup($wikiDomain, $wikiInstall, $dirPath){
$from = "$dirPath/Biowiki-2.3/";
$to = "$dirPath/$wikiDomain/";
system("cp -R $from $to");
chdir("$dirPath/$wikiDomain/Biowiki-2.3");
$wikiInstall->install();
chdir("$dirPath/$wikiDomain");
system("ln -s Biowiki-2.3/ Biowiki");
}
function mkLocalsetting($wikiDomain, $wikiInstall, $dirPath){
chdir("$dirPath/$wikiDomain/Biowiki-2.3");
$wikiInstall->install();
}
?>
