Spac의 기본패키지는 아래와 같이 구성되어 있습니다.

 


 

 

위의 구성 그대로 서버의 계정에 복사합니다.

복사위치는 자유롭게 선택할 수 있으나 되도록이면 웹디렉토리 외부에 위치하도록 하는게 좋습니다.
(브라우저에서 직접 접근할 수 없는 위치)

 

필자는 위의 Spac 디렉토리를 아래와 같이 웹디렉토리와 같은 레벨에 구성하여 사용합니다.
(필자의 웹서비스 디렉토리는 "public_html" 입니다.)




위와같이 public_html 과 같은 레벨에 설치할 수 없는 경우에는 웹디렉토리 내부에 설치하셔도 됩니다.

설치를 하신 후 Spac 컨틀로러의 설정파일인 "Controller.ini" 파일을 텍스트에디터로 열어 자신의 환경에 맞게 수정합니다.

텍스트에디터는 다양하게 각자의 손에 익은 툴을 사용하는것이 좋습니다만, Spac 프레임웍을 개발할때 적당한 개발툴은 공개에디터인 "eclipse""Notepad++" 을 추천합니다.

Notepad++은 작고 빠른 에디터로 FTP 플러그인이 기본적으로 내장되어 있어 서버에 직접 연결하여 작업하실수도 있으며, PHP 코드 하일라이트, 코드자도완성 등 개발시 편리한 기능이 많습니다.

또한 윈도우에 설치하지 않고 압축만 풀어 사용할수 있는 바이너리 파일도 제공되므로 USB 메모리에 담아 가지고 다닐수도 있습니다.
Notepad++ 는 대부분의 포탈에서 검색하면 쉽게 찾아 내려받으실 수 있습니다.


그리고 이클립스를 사용하시는 경우 자바를 개발할때와 비슷한 환경에서 작업하실 수 있습니다.

이클립스를 이용한 개발은 http://spac.tistory.com/category/eclipse로%20개발하기 을 참조 하시기 바랍니다.




아래는 notepad++ 에디터로 열어본 "Controller.ini" 파일의 내용입니다.



필자와 같은 디렉토리 구성으로 설치하신 분은 위의 경로값들은 수정하실 필요가 없습니다.
경로값들은 "errPage" 를 제외하고는 서버 절대경로를 지정해도 문제 없습니다.


파일내의 주석을 참고하여 자신의 환경에 맞추어 설정값을 변경합니다.

각 설정의 의미 및 기능은 세부 예제에서 자세하게 다루므로 다음 예제를 위한 간단한 설정만 하겠습니다.

그 다음으로 아래의 내용으로 웹서비스 디렉토리의 루트에 "index.php" 파일을 생성합니다.

------------ index.php-----------------
<?php
require_once("../Spac/controller/ActionClass.Class.php");
?>


위와같이 "index.php" 파일의 내용은 "ActionClass.Class.php" 파일을 "include" 하는것으로 완료됩니다.

이로서 Spac을 이용한 개발 환경설정이 완료 되었습니다.

Posted by webdata
1. 원격 root 로그인 막기


# vi /etc/ssh/sshd_config

아래 내용 찾아 주석풀고 "no" 로 설정
  PermitRootLogin no



2. 원격 ssh 접속시 특정 계정만 로그인 허용

# vi /etc/ssh/sshd_config

최하단에 아래 내용 넣음 (AllowUsers 아이디 아이디 아이디...)  => 아이디 간 공백으로 구별
AllowUsers userid1 userid2 userid3 ....


3. 특정 계정만 root로 로그인 허용
(1) Wheel그룹에 루트 로그인을 허용할 계정 추가

# vi /etc/group

wheel:x:10:root,userid1, userid2, userid3


(2) su의 퍼미션과 소유권을 변경

# chmod 4750 /bin/su
# chown root:wheel /bin/su

잘 안될경우 아래로 다시 한 번 시도

chgrp wheel /bin/su 
chmod 4750 /bin/su


(3) sshd restart

   : 리스타트 할때는 지금까지 작업한 루트로 열려있는 창은 그대로 두고 , 새로 창열어서 작업하기..
     (재시작 한 후 루트로 로그인 못하면 끝장이니 이미 루트로 로그인 되어 있는 창은 그대로 열어둠)

# service sshd restart



[추가설정]
일정시간동안 동작없으면 자동 로그아웃하기

vi /root/.bash_profile
.
.
TMOUT=300
export PATH TMOUT
파일 하단에 위 두줄 추가하기  : 숫자는 자동로그아웃 타임(초)
Posted by webdata
sudo apt-get install kubuntu-desktop


Posted by webdata
Ubuntu 와 친해지기2009. 12. 10. 15:46

1. VirtualBox 사용자 그룹에 내 계정 추가

# usermod -G vboxusers -a USERID

제대로 추가가 되었는지 확인 해본다.

# grep vboxusers /etc/group
vboxusers:x:501:USERID

* 501은 그룹아이디이므로 자신의 계정과 일치하는 것을 입력한다.


2. /etc/fstab 파일에 아래 내용 추가

none /sys/bus/usb/drivers usbfs devgid=501,devmode=664 0 0


3. 리눅스 재부팅 후 VirtualBox를 실행하면 XP에서 USB 사용 가능하다.

* VirtualBox를 실행하고 USB를 꽂을 것
* VirtualBox를 실행하지 않을 경우에는 리눅스에서 USB 인식함


[출처] [CentOS] VirtualBox에 설치된 XP에서 USB 사용하기|작성자 HBREN

Posted by webdata
Ubuntu 와 친해지기2009. 12. 10. 15:43
sudo apt-get install pidgin-nateon


우분투 9.04, 9.10 에서 동작 확인.
Posted by webdata
카테고리 없음2009. 12. 9. 09:31
http://draco.pe.kr/entry/Desktop-Drapes  <== 요기 참조...
Posted by webdata

Posted by webdata
기본예제/회원관리2009. 12. 4. 23:47
이제 리스트 화면에서 특정회원을 삭제해 보도록 하겠습니다.

특정 회원을 삭제하기 위해선 해당 회원의 키값을 전달해야 하는데 회원가입예제에서 POST 처리를 했으므로 이번에는 GET방식으로 회원 키값을 받아 처리하는 예제를 해보겠습니다.

먼저 list.html 에 각 회원목록에 버튼을 만들어 회원의 정보를 삭제할 수있도록 GET방식으로 삭제 메소드에 변수를 전달하는 코드를 만듭니다.

기존 list.html 을 아래의 내용으로 수정합니다.

* Spac/view/list.html
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>회원리스트</title>

<script>
function deleteUser(user_id) {
    document.location.href="/User/deleteUser/"+user_id;
}
</script>

</head>
<body>

회원수는 <?=count($this->data_list)?> 명 입니다.
<br/><br/>

<table border="1">

    <tr bgcolor="#f2f2f2">
        <td width="100">아이디</td>
        <td width="120">이름</td>
        <td width="150">등록일</td>
        <td width="60">처리</td>       
    </tr>
 
<?php
foreach($this->data_list as $Rows) {
?>

    <tr>
        <td width="100"><?=$Rows['user_id']?></td>
        <td width="120"><?=$Rows['user_name']?></td>
        <td width="150"><?=$Rows['reg_date']?></td>
        <td width="60"><a href="#" onClick="deleteUser('<?=$Rows['user_id']?>')">삭제</a></td>              
    </tr>

<?php
}
?>

</table>

<!-- 회원가입버튼을 만들어주고 클릭하면 이전에 만든 가입폼으로 이동시킵니다. -->
<input type="button" value="회원가입" onClick="document.location.href='/User/viewUserRegForm'"></input>

</body>
</html>

회원 삭제처리 메소드는 User 클래스내에 "deleteUser" 로 하겠습니다.
따라서 위의 예제에서는 각 회원리스트중 "삭제" 버튼을 클릭하면 "/User/deleteUser/아이디" 를 브라우저로 호출하도록 했습니다.
URL에서 슬래시를 기준으로 첫번째는 클래스명, 두번째는 메소드명, 세번째이상은 전달 GET 변수입니다.
따라서 위 주소의 뜻은 User 클래스의 deleteUser 메소드를 "아이디"를 인자로 호출한다는의미입니다.

이제 실행할 실제 deleteUser 메소드를 작성합니다.
 
* Spac/model/User.Class.php
<?php
require_once("../Spac/controller/Dao/Dao.Class.php"); // getControllerInstance("Dao") 사용할경우 생략가능
class User extends Controller {

    var $user_id;
    var $user_pw;
    var $user_name;
   
    var $data_list = array();   

    function User () {
        $this->Dao = new Dao;             //$this->getControllerInstance("Dao"); 로 대체 가능.
        $this->Dao->transaction = true;
        $this->Dao->connect();
    }

    function viewUserRegForm() {
        $this->result_uri    = "user_reg.html";
        $this->dispatcher();
    }

    // POST 로 전송된 값을 맴버변수로 세팅합니다.
    function setPostVars() {
        $this->user_id       = $_POST['user_id'];
        $this->user_pw      = $_POST['user_pw'];
        $this->user_name  = $_POST['user_name'];
    }

    //위에서 저장된 맴버변수 값을 DB에 Insert 합니다.
    function regUser() {

        $this->setPostVars();

        //print_r($param);
        //exit;
       
        $query = " Insert Into user_info(user_id,user_pw,user_name,reg_date) values(?,password(?),?,NOW()) ";
        $this->Dao->prepareStatement($query);
      
        $param = array($this->user_id,$this->user_pw,$this->user_name);
       
        $this->Dao->setParam($param);
      
        $this->Dao->executeStatement();
      
        //echo "회원가입에 성공했습니다.";
        $this->result_uri    = "/User/getUserList";
        $this->redirect();

    }
   
    function getUserList() {
     
        $this->data_list = array();

        $query = " Select * From user_info ";
        $this->Dao->executeQuery($query);

        while($rows = $this->Dao->getFetchArray()) {
            $this->data_list[] = $rows;
        }

        $this->result_uri    = "list.html";
        $this->dispatcher();      

    }

    function getDeleteGetVars() {
        $this->user_id = $this->args[0];
    }
   
    function deleteUser() {
       
        $this->getDeleteGetVars();
       
        $query = " Delete From user_info Where user_id = ?";
        $this->Dao->prepareStatement($query);       
        $param = array($this->user_id);       
       
        $this->Dao->setParam($param);
      
        $this->Dao->executeStatement();
        $this->Dao->closeStatement();

        $this->result_uri    = "/User/getUserList";
        $this->redirect();
       
    }
   
   
   
   
   
   

}
?>


:::[getDeleteGetVars] 설명:::
위 내용중 파란색 글자 부분이 기존 User 클래스에서 추가된 내용입니다.
"getDeleteGetVars" 메소드를 보면 GET변수를 받는 방법을 알 수 있습니다.

 도메인/클래스명/메소드명/parameter1/parameter2.....

위의 형식 중 parameter를 받는 방법은
$param1 = $this->args[0];
$param2 = $this->args[1];


위의 getDeleteGetVars 예제에선 전달 변수가 1개이므로
    function getDeleteGetVars() {
        $this->user_id = $this->args[0];
    }

이처럼 변수를 받아 맴버변수로 저장했습니다.


[deleteUser] 설명

먼저 위의 getDeleteGetVars 메소드를 호출하여 전달된 변수를 맴버변수로 받습니다.
해당 변수를 user_id  조건으로 삭제 SQL 문을 처리합니다.

처리 후엔
        $this->result_uri    = "/User/getUserList";
        $this->redirect();

이처럼 회원 리스트 화면으로 이동시킵니다.


이제 브라우저에서 삭제처리를 실행하여 제대로 삭제가 이루어 지는지 테스트합니다.


'기본예제 > 회원관리' 카테고리의 다른 글

2. 회원리스트 조회  (0) 2009.12.01
1. 회원가입 예제  (0) 2009.12.01
Posted by webdata
우분투리눅스에서는 FTP 디렉토리를 로컬 하드디스크처럼 간편하게 연결하여 사용할 수 있습니다.
먼저 로컬에 사용할 FTP 서버를 등록해 보겠습니다.

  =>  


이제 로컬 하드디스크 목록에 등록한 FTP 서버가 등록되어 있게 됩니다.
일반 폴더처럼 접근하여 사용자가 사용하기 편한 에디터로 편집을 할 수도 있습니다.



Posted by webdata

우분투 아파치 서버의 설정은 /etc/apache2/sites-available/default 의 파일을 수정하고
/etc/init.d/apache2 restart로 적용 가능합니다.

적용되었는지는 /etc/apache2/sites-enable/default 를 열어 보면 알수 있습니다.

<VirtualHost *>
        ServerAdmin webmaster@localhost <- 시스템관리자 이메일

        DocumentRoot /var/www/  <- 기본 디렉토리 변경
        <Directory />
                Options FollowSymLinks
                AllowOverride None
        </Directory>
        <Directory /var/www/<- 기본 디렉토리 변경
                Options Indexes FollowSymLinks MultiViews
                AllowOverride All <- 이항목은 mod_rewrite 를 활성화하기 위해 필요함 ::: (기존 "None" 을 "All" 로 변경 )
                Order allow,deny
                allow from all
                # Uncomment this directive is you want to see apache2's
                # default start page (in /apache2-default) when you go to /
                #RedirectMatch ^/$ /apache2-default/
        </Directory>

        ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
        <Directory "/usr/lib/cgi-bin">
                AllowOverride All  <- 이항목은 mod_rewrite 를 활성화하기 위해 필요함 ::: (기존 "None" 을 "All" 로 변경 )
                Options ExecCGI -MultiViews SymLinksIfOwnerMatch
                Order allow,deny
                Allow from all
        </Directory>

        ErrorLog /var/log/apache2/error.log

        # Possible values include: debug, info, notice, warn, error, crit,
        # alert, emerg.
        LogLevel warn

        CustomLog /var/log/apache2/access.log combined
        ServerSignature On

    Alias /doc/ "/usr/share/doc/"
    <Directory "/usr/share/doc/">
        Options Indexes MultiViews FollowSymLinks
        AllowOverride None
        Order deny,allow
        Deny from all
        Allow from 127.0.0.0/255.0.0.0 ::1/128
    </Directory>

</VirtualHost>

 

 

출처 : http://such.egloos.com/1532935

'리눅스 서버관리 > Ubuntu' 카테고리의 다른 글

우분투 APM 간단설치 (풀옵)  (0) 2010.04.08
우분투에 APM 구성하기  (0) 2009.12.02
Posted by webdata