'분류 전체보기'에 해당되는 글 304건

  1. 2009.05.26 5/25
  2. 2009.05.22 swap 재설정정
  3. 2009.04.16 서브넷 마스크 1
  4. 2009.04.16 DNS setting in Win. XP.
  5. 2009.04.15 대공감
  6. 2009.04.15 사이트 10개
  7. 2009.04.08 자기소개서
  8. 2009.03.17 전체 세팅
  9. 2009.03.17 [리눅스] 아파치, mysql, php 소스 설치 절차
  10. 2009.03.17 ActionScript 3.0 객체지향프로그래밍(OOP) 5대 원칙

5/25

IHD 2009. 5. 26. 09:48
[root@ localhost ~]12 mkisofs -r -o data1.iso /data1
//created iso image

[root@ localhost ~]26 mount -o ro,loop data1.iso /data22
// loaded iso image

[root@ localhost data22]31 umount /data1
[root@ localhost data22]32 tune2fs -j /dev/sda8
//change ext2 to ext3

[root@ localhost data22]39 dmesg | grep quota
[root@ localhost data22]40 vi /etc/fstab

LABEL=/                 /                       ext3    defaults        1 1     LABEL=/home             /home                   ext3    defaults,usrquota        1 2
LABEL=/usr1             /usr                    ext3    defaults        1 2     LABEL=/var              /var                    ext3    defaults        1 2
LABEL=/boot             /boot                   ext3    defaults        1 2     tmpfs                   /dev/shm                tmpfs   defaults        0 0
devpts                  /dev/pts                devpts  gid=5,mode=620  0 0     sysfs                   /sys                    sysfs   defaults        0 0
proc                    /proc                   proc    defaults        0 0     LABEL=SWAP-sda3         swap                    swap    defaults        0 0
/dev/sda8            /data1                     ext3       defaults        1 2  /dev/sda9            /data2                     ext3       defaults        1 2
/dev/sda10         swap                    swap    defaults        0 0
~                        

[root@ localhost data22]43 mount -o remount /dev/sda6
[root@ localhost data22]60 quotacheck /home
[root@ localhost data22]61 quotaon /home
[root@ localhost data22]62 edquota -u test1
[root@ localhost home]86 repquota -u /home
[root@ localhost home]87 edquota -p root test1

[root@ localhost ~]6 fuser -km /home/test1
//user kill


//RAID Settings
1.create partition & set ID

[root@ localhost raid1]28 mdadm -C /dev/md1 -l 1 -n 2 /dev/sda14 /dev/sda15
mdadm: array /dev/md1 started.

[root@ localhost raid1]29 mkfs.ext3 /dev/md1
[root@ localhost raid1]30 mkdir /raid1-1
[root@ localhost raid1]31 mount /dev/md1 /raid1-1

[root@ localhost /]47 umount raid1
[root@ localhost /]48 mdadm -S /dev/md0


//LVM
[root@ localhost /]163 pvcreate /dev/sda13
[root@ localhost /]167 pvscan
  PV /dev/sda13                      lvm2 [964.81 MB]
  PV /dev/sda14                      lvm2 [1.87 GB]
  Total: 2 [2.81 GB] / in use: 0 [0   ] / in no VG: 2 [2.81 GB]

[root@ localhost /]168 vgcreate lvm0 /dev/sda13
  Volume group "lvm0" successfully created
[root@ localhost /]169 vgdisplay
  --- Volume group ---
  VG Name               lvm0
  System ID             
  Format                lvm2
  Metadata Areas        1
  Metadata Sequence No  1
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                0
  Open LV               0
  Max PV                0
  Cur PV                1
  Act PV                1
  VG Size               964.00 MB
  PE Size               4.00 MB
  Total PE              241
  Alloc PE / Size       0 / 0   
  Free  PE / Size       241 / 964.00 MB
  VG UUID               UwHl9k-5SUF-pEMh-JGBY-R7mT-IMTy-8L2679
[root@ localhost /]172 lvcreate -L 100M -n lvdata1 lvm0
  Logical volume "lvdata1" created
[root@ localhost /]173 lvscan
  ACTIVE            '/dev/lvm0/lvdata1' [100.00 MB] inherit
[root@ localhost /]174 mkfs.ext3 /dev/lvm0/lvdata1
[root@ localhost /]176 mount /dev/lvm0/lvdata1 /lvm
[root@ localhost /]199 vgextend lvm0 /dev/sda14
[root@ localhost /]202 umount /lvm
[root@ localhost /]203 lvextend -L +100M /dev/lvm0/lvdata1
[root@ localhost ~]1 e2fsck /dev/lvm0/lvdata1
e2fsck 1.39 (29-May-2006)
The filesystem size (according to the superblock) is 409600 blocks
The physical size of the device is 102400 blocks
Either the superblock or the partition table is likely to be corrupt!
Abort<y>? yes
[root@ localhost ~]2 resize2fs /dev/lvm0/lvdata1
resize2fs 1.39 (29-May-2006)
Resizing the filesystem on /dev/lvm0/lvdata1 to 102400 (1k) blocks.
resize2fs: Can't read an block bitmap while trying to resize /dev/lvm0/lvdata1
[root@ localhost ~]3
[root@ localhost ~]2 resize2fs /dev/lvm0/lvdata1
resize2fs 1.39 (29-May-2006)
Resizing the filesystem on /dev/lvm0/lvdata1 to 102400 (1k) blocks.
resize2fs: Can't read an block bitmap while trying to resize /dev/lvm0/lvdata1
[root@ localhost ~]4 resize2fs /dev/lvm0/lvdata1 1g
resize2fs 1.39 (29-May-2006)
The containing partition (or device) is only 102400 (1k) blocks.
You requested a new size of 1048576 blocks.

[root@ localhost ~]7 lvreduce -L -10M /dev/lvm0/lvdata1
  Rounding up size to full physical extent 8.00 MB
  WARNING: Reducing active logical volume to 92.00 MB
  THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce lvdata1? [y/n]: y
  Reducing logical volume lvdata1 to 92.00 MB
  Logical volume lvdata1 successfully resized
[root@ localhost ~]8






'IHD' 카테고리의 다른 글

ntsysv  (0) 2009.05.29
5.28 (log 롼련)  (0) 2009.05.28
RHCE  (0) 2009.05.26
swap 재설정정  (0) 2009.05.22
Posted by 으랏차
,

swap 재설정정

IHD 2009. 5. 22. 15:32

안녕하세요. 솔라리스님 요청으로~ 작성하게 되었습니다.

가정 : 본인은 모르고 아래와 같이 swap을 2048 2기가가 아닌 20기가로 잡아버린 큰 실수를

       범했습니다.그래서 사이즈를 2기가로 바꾸고자 합니다.


주의사항 : 하시다가~ 삑사리가 나셨다싶으면 ctrl+c로 나가주세요.

          만약에 의도와 달리 fdisk에서 밖으로 나가졌을경우 저장이 안됩니다.

          다시 해야되요. 꼭 w명령어로 write 저장하시길




// swap 파티션의 사이즈를 변경해보자.


* 먼저 사용하고 계신 swap을 off시킵니다.


* fdisk로 /dev/sda 에 접근하여 swap 파티션인 /dev/sda2를 날려줍니다.

(p는 파티션정보보기, m은 메뉴표시, d는 파티션 날리기, 숫자2는 스왑파일시스템의 파티션넘버)


* 파티션이 지워진 모습


* 이제~! swap에서 쓰일 파티션을 만듭니다.

(실린더 사이즈는 엔터 누르면 디폴트값으로 하세요! 사이즈는 2기가로 지정했습니다.

파티션넘버는 sda2로 쓸꺼니 2로)


* 스왑파티션으로 쓰일 sda2이 생성된 모습


* 파티션의 타입을 swap용으로 바꿔줍니다.

(t는 타입바꾸기, L은 타입의 코드넘버보기)


* 타입이 Linux swap용으로 바뀐모습입니다.


* 변경된 정보를 write 하고 리부팅한다.

(w는 변경된 정보기록 write)


* 정상적으로 부팅후 swap 파티션 생성 및 스왑 활성화를 시킨다.


* 부팅시마다 swap이 자동마운트 되도록 fstab에 등록한다.

(vi 편집기로 /etc/fstab열음, 기존은 LABEL명으로 했으나 현재 swap의 라벨명은 모르는 상태--그래서 /dev/sda2로지정

e2label /dev/해당파티션 라벨명  으로 지정이 가능하다 swap은 안되는거같습니다.)



// 20기가에서 2기가를 뺀 나머지 용량을 새로운파티션으로 생성후 /data에 마운트

 

* fdisk로 /dev/sda에 접근하여 남은용량만큼 /dev/sda4로 파티션을 생성한다.

(남은용량 모두를 사용할것이므로 엔터로 디폴트값입력)

 

 

 * 정상적으로 파티션이 생성 되었음을 확인한다.

(w 명령어로 정보를 write한다. 그리고 정상적인 사용을 위해 재부팅)


* 정상적으로 리부팅을 완료 하였으면 /data 디렉토리로 마운트할 파일시스템 sda4생성합니다.

(먼저 /data디렉토리를 만든다, mkfs로 파일시스템 생성)


* fstab에 등록하기 앞서 라벨링 지정합니다.


* 매 부팅시마다 자동마운트를 위하여 fstab에 등록합니다.


* 실질적으로 /dev/sda4를 /data마운트 포인트에 마운트한다.

 



최대한 자세하게 detail하게 적는다고 하다보니 엄청...나게 길어져뻐렸네요.. 반복되는 커맨드도 많았는데 ..이상..!끝!

'IHD' 카테고리의 다른 글

ntsysv  (0) 2009.05.29
5.28 (log 롼련)  (0) 2009.05.28
RHCE  (0) 2009.05.26
5/25  (0) 2009.05.26
Posted by 으랏차
,

서브넷 마스크

network 2009. 4. 16. 13:39

서브넷 마스크의 개념

 

서브넷 마스크를 잘 이해하는 것이야 말로 IP 어드레스를 확실히 이해하는 가장 중요한 포인트입니다. 사실 네트워크 엔지니어들도 처음에는 서브넷 마스크 부분에서 많이 혼동하는 경우가 있고, 또 네트워크에 관한 시험이란 시험에는 이런 서브넷 마스크에 대한 문제들이 항상 단골로 등장하기 마련입니다. 그만큼 중요하단 뜻이겠죠?

자, 그럼 서브넷 마스크를 제대로 이해하려면 무엇이 가장 필요한지부터 알아볼까요?

먼저 이진수의 이해입니다. 제가 몇 번씩이나 이진수에 대해서 이야기 드리는건 그만큼 이진수의 완벽한 이해가 필요하기 때문입니다.

두번째는 논리적(Logical) AND에 대한 이해입니다. 그건 쉽죠? 논리적 AND의 성질은 양쪽이 모두 1인 경우에만 결과도 1이 된다는 겁니다. 즉,

0 AND 0 = 0
0 AND 1 = 0
1 AND 0 = 0
1 AND 1 = 1

이 된다는 겁니다.

이 두 가지를 확실히 이해하셨으면 서브넷 마스크는 아주 쉽습니다. 자, 그럼 첫 시간이니까 왜 서브넷 마스크가 필요한지, 그리고 서브넷 마스크의 정체가 무엇인지를 알아보도록 하겠습니다.

‘서브넷 마스크(Subnet Mask)’란 일단 말뜻 그대로 서브, 즉 메인이 아닌 어떤 가공을 통한 네트워크를 만들기 위해서 씌우는 마스크라고 생각하시면 됩니다. 다시 말해서 우리가 일단 어떤 IP 어드레스를 배정받게 되면 보통은 이 주소를 그대로 사용하지 않습니다. 왜냐? 자신의 입맛에 맞추어야 하기 때문입니다.

예를 들어 클래스 B주소를 받았다고 합시다. 이걸 그냥 사용할 수 있을까요? 하나의 네트워크가 6만 5,000여 개의 호스트를 가지는데, 이렇게 큰 네트워크를 구성했다간 브로드캐스트 영향이 너무 많아 아마 아무것도 할 수 없을 겁니다.

따라서 방대한 IP 어드레스를 유용하게 나누어 써야 하는 겁니다. 우리가 돼지고기 5근을 사서 집에 가서 볶아먹고 찌개 끓여먹으려면 일단 적당히 잘라야겠죠? IP 어드레스도 마찬가지입니다. 고기를 자를 때 칼을 쓰듯이, IP 어드레스를 자를 때는 서브넷 마스크를 사용합니다. 즉, 부여받은 원래 상태의 IP 어드레스에 서브넷 마스크를 씌워서 네트워크를 나누어 주는 겁니다.

대충 이해가 가시죠? 그럼 그걸 어떻게 나누는가? 그건 뒤에 가서 계속 알아보도록 하겠습니다.

아무튼 여기에서는 ‘서브넷 마스크는 주어진 IP 어드레스를 네트워크 환경에 맞게 나누어 주기 위해서 씌워주는 이진수의 조합이다’라는 개념만 아시면 되는 겁니다.

 


 


<그림 1>에서처럼 클래스 B를 받아서 서브넷을 만들지 않고 그냥 사용하는 경우는 브로드캐스트 도메인이 너무 커져서 브로드캐스트가 너무 많이 발생하게 됩니다. 따라서 정상적인 통신이 불가능해 집니다. 따라서 이 네트워크에는 서브넷팅이 필요하게 됩니다.

서브넷 마스크를 하게 되면 <그림2>와 같은 구성이 가능합니다. 즉, 방대했던 브로드캐스트 도메인을 좀 더 세분화한 것입니다. 서브넷 마스크는 원래 디폴트 서브넷 마스크가 ‘255.255.0.0’이었던 것이 새로운 서브넷 마스크 ‘255.255.255.0’으로 바뀝니다.

또한 각각의 서브넷 간의 통신은 라우터를 통해서만 가능합니다. 즉, 150.150.1.0 네트워크와 150.150.2.0 네트워크간의 통신은 라우터를 통해서만 가능해 지는 겁니다.

서브넷 마스크에도 기본은 있다
모든 IP 어드레스에는 서브넷 마스크가 따라다닙니다. 예를 들어 클래스 C 주소를 몽땅 쓰더라도 서브넷 마스크는 따라다닙니다. 즉, IP 주소를 나누어서 쓰기 위해서 사용하는 서브넷 마스크는 그 주소를 나누지 않더라도 항상 그 옆에 붙어 다닌다는 겁니다. 그래야 그 주소를 나눈 건지 나누지 않은 건지 알 수 있기 때문 입니다.

한 번 예를 들어볼까요?

‘210.100.100.1’이란 주소가 있습니다. 이 주소는 아시는 것처럼 클래스 C 입니다. 그래서 이 주소를 가지고 254개의 호스트에 IP 어드레스를 부여했다고 가정하겠습니다. 그럼 우린 주어진 클래스 C를 하나도 가공하지않고, 즉 쪼개지 않고 그대로 사용한 겁니다. 그렇다고 서브넷 마스크를 쓰지않느냐? 그건 아닙니다. 이처럼 주어진 클래스 C를 나누어 쓰지않고 몽땅 쓰는 경우에도 서브넷 마스크는 따라다니는데, 그게 바로 디폴트 서브넷 마스크(Default Subnet Mask), 즉, 기본 서브넷 마스크입니다.
클래스 C 의 경우 디폴트 서브넷 마스크는 ‘255.255.255.0’입니다. 클래스 B의 경우는 ‘255.255.0.0’이고, 또 클래스 A의 경우는 ‘255.0.0.0’입니다.

그러니까 주어진 네트워크를 하나도 나누지 않고 그대로 다 쓰는 경우는 위에서 설명드린 디폴트 서브넷 마스크를 쓰면 됩니다. 하지만 주어진 네트워크를 나누어서, 즉, 가공해서 쓰는 경우는 디폴트 서브넷 마스크를 쓰지않고 약간 고쳐서 쓰는 겁니다.(이런 경우는 디폴트 서브넷 마스크라고 하지 않고 그냥 서브넷 마스크라고만 합니다.)

자, 그럼 서브넷 마스크를 어떻게 고쳐야 할까요?

일단 여기서는 한가지만 정확히 알아두시기 바랍니다. 서브넷 마스크는 IP 주소를 가지고 어디까지가 네트워크 부분이고, 또 어디까지가 호스트 부분인가를 나타내는 역할을 한다는 겁니다. 따라서 서브넷 마스크를 보면 그 IP 주소의 네트워크 부분과 호스트 부분을 알 수 있는 겁니다.

이때 네트워크 부분은 서브넷 마스크가 이진수로 ‘1’인 부분이고, 호스트 부분은 서브넷 마스크가 이진수로 ‘0’인 부분이라는 겁니다. 즉, 예를 들어보면 ‘210.100.100.1’의 서브넷 마스크가 ‘255.255.255.0’이라면(여기서 255는 이진수로 바꾸면 1111 1111 입니다), 따라서 아래에서 보면,

‘255.255.255.0’은 ‘1111 1111.1111 1111.1111 1111.0000 0000’과 같습니다.

여기서 1인 부분은 네트워크 부분을 나타낸다고 했으니까, 앞에 세자리까지는 네트워크 부분이 되고, 뒤에 한자리는 호스트 부분이 되는 겁니다. 따라서 ‘210.100.100’이 바로 네트워크 부분이 되고 나머지 1이라고 씌여진 부분이 호스트가 되는 겁니다.

그러니까 클래스 C의 기본 성격과 똑같죠? 그래서 ‘255. 255.255.0’이 클래스 C의 디폴트 서브넷 마스크가 되는 겁니다. 이해가세요? 좀 어려우시더라도 계속 해보시면 아마 숙달될 겁니다. 여러분이 만약 정말 멋진 엔지니어가 되고 싶으시다면 이 서브넷 마스크는 꼭 숙달되어야 합니다. 자주 연습해 보시기 바랍니다.

여기서 잊어서는 안되는게 바로 서브넷 마스크가 이진수로 ‘1’인 부분이 네트워크가 되고 ‘0’인 부분이 호스트가 된다는 겁니다. 이것만 기억하시면 아무리 어려운 서브네팅 (Subnetting)도 가능할 겁니다.

자, 그럼 정말 서브넷 마스크를 어떻게 사용하는지 좀 더 자세히 알아보도록 하겠습니다.

<그림 3>은 IP 주소가 서브넷 마스크를 통과해서 네트워크 부분이 어디까지인지를 알아내는 과정을 보여주고 있습니다. 지금까지 말씀 드린대로 서브넷 마스크를 가지고 있지 않는 IP 주소는 없습니다. 비록 네트워크를 작게 나누지 않고 원래 클래스대로 사용하더라도 서브넷 마스크는 있습니다. 이게 바로 디폴트 서브넷 마스크 입니다. 어떤 IP 주소도 서브넷 마스크를 통과시키게 되면 네트워크 부분이 어디까지인지를 알수 있습니다. 그 규칙은 디폴트 서브넷 마스크도 마찬가지 입니다.

<그림 3>에서 ‘150.150.100.1’이라는 IP 주소에 디폴트 서브넷 마스크인 ‘255.255.0.0’을 씌웠습니다(150.150.100.1은 클래스 B 이기 때문에 디폴트 서브넷 마스크는 255.255.0.0입니다). 그러자 서브넷 마스크를 통과해서 내려온 네트워크 부분은 ‘150.150.0.0’이 되었습니다.

 


 

 

 

 

<그림 3>에서 서브넷 마스크를 통과해서 내려오는 값은 맨 위 줄의 IP 주소와 그 다음 줄의 서브넷 마스크를 이진수로 만든 다음, 논리적 AND(Logical AND)를 수행한 값이 맨아래 줄로 나오게 됩니다. 맨아래 줄에 나온 네트워크 부분을 잘 살펴보면 이전에 설명 드렸던대로 서브넷 마스크 부분이 이진수로 1인 부분(십진수로는 255인 부분)은 위에 있던 주소가 그대로 아래로 내려왔고, 서브넷 마스크 부분이 이진수로 0인 부분(십진수로도 0인 부분)은 위에 무엇이 있건 간에 무조건 0으로 되어서 내려오는걸 알 수 있습니다.

이렇게 나온 값 ‘150.150.0.0’이 바로 ‘150.150.100.1’의 네트워크 부분입니다.

그럼 이번에는 ‘150.150.100.1’에 디폴트 서브넷 마스크가 아닌 새로운 서브넷 마스크 ‘255.255.255.0’을 씌워보겠습니다. 어차피 서브넷 마스크의 성질은 똑같습니다. 따라서 서브넷 마스크가 1인 부분은 IP 주소가 그대로 내려오고, 서브넷 마스크가 0인 부분은 모두 0이 된다는 원칙에는 변함이 없습니다. 따라서 이렇게 서브넷 마스크를 통과해서 내려온 값이 새로운 네트워크 부분이 되는 겁니다.

 



 




<그림 4>에서처럼 서브넷 마스크가 ‘255.255.255.0’이 되자, 서브넷 마스크를 통과해서 아래로 내려온 네트워크 부분은 3자리의 십진수로 늘어났습니다. 즉, ‘150.150.100.0’이 되었습니다. 이 의미는 클래스 B 주소를 마치 클래스 C 처럼 사용한다는 의미입니다. 즉, 네트워크 부분이 3자리로 늘고 호스트 부분이 1 자리로 줄었습니다. 이렇게 하나의 주소를 서브넷 마스크를 씌워서 작은 네트워크로 만드는 것을 서브넷팅이라고 합니다
Posted by 으랏차
,
Posted by 으랏차
,

대공감

카테고리 없음 2009. 4. 15. 18:20
Posted by 으랏차
,

얼마전 1월 25일은 인터넷 대란이 발생한지 6주년이 되는 날이다.(참고 : 기억속의 1.25 대란 현장을 생각하며 ) 그야말로 대한민국 인터넷이 전부 마비된 초유의 사건이었다. 그런데도 작년에는 옥션 해킹 사태 등 엄청난 보안사고가 잇달아 발생했다. 우리나라의 보안수준이 여전히 후진적이라는 얘기다.

우리나라는 정보보안전문가가 매우 부족하다고 한다. 단순한 수준의 보안인력이 아니라 진정한 정보보안전문가 고수들이 부족하다는 의미일 듯 하다. 따라서, 앞으로 정보보안전문가는 크게 각광받을 전망이다. 인터넷으로 연결되는 모든 기기를 비롯한 물질문명은 보안이라는 기반이 없이는 제대로 작동하지 못하거나 안심할 수 없기 때문이다.

정보보안전문가를 준비하는 사람들이 많은데 어떻게 준비하고 공부해야 하는지 모르는 경우가 많다. 내가 아는 학생들이나 지인들도 정보보안전문가를 꿈꾼다고 하는데 어디서부터 시작해야 할지 막막하다고 나 같은 문외한에게 문의를 하기도 한다. 아직 초보 블로거인데 말이다.

그렇지만, 궁금하면 못참는 성격이어서 그 동안 여기저기 블로그나 카페 등을 서핑하면서 나름대로 정리한 사이트 10곳을 공개한다. 주관적인 판단이기 때문에 동의하지 않는 곳도 있을 수 있으니 양해바란다. 또한, 개인적으로 순전히 인터넷 서핑에 의존해 발품팔아 만든 정보이기 때문에 다소 오류가 있더라도 이해를 바란다.

(단, 보안전문회사 홈페이지나 정부기관 그리고 상업적인 성격의 보안전문학원 사이트는 제외했다.)



정보보안전문가 준비에 도움되는 사이트 10선

보안전문 카페

바이러스제로 시즌2  http://cafe.naver.com/malzero
국내최대의 보안커뮤니티 카페이다. 주로 백신, 방화벽 개인용 보안제품이나 악성코드 동향 둥 국내외 보안상식을 회원들의 활발한 정보 교환과 질문/답변을 통해 신속히 주고받을 수 있다. 가장 왕성한 보안카페 활동을 보여주고 있으며 전반적인 보안정보를 교류할 수 있으며 기본적인 보안 기술에 대한 이해의 폭을 넓힐 수 있다.


미래 보안전문가들의 모임 V스쿨 http://cafe.naver.com/vgeneration.cafe
국내최고의 보안기업인 안철수연구소가 중고등학생 및 일반인 등을 대상으로 무료로 운영하는 보안카페이다. 일반적인 보안상식은 물론 현역 보안전문가나 해커들로부터 전문적 강좌나 정보를 얻을 수 있는 것이 장점이다. 중고등학생들 대상으로 방학기간 중에는 오프라인 강좌를 무료로 개최한다. 오는 2월 20일(금) 개최 예정으로 신청서를 접수 중이다.

보안전문 블로그

엔시스의 정보보호 따라잡기 보안전문 블로그 http://www.sis.pe.kr/
정보보호 전문 자격증을 비롯해 보안전문 지식이나 정보 등 다양한 전문적 내용을 접할 수 있는 블로그이다. 실제 운영자는 정보보호 관련 자격증을 다수 획득하고 있으며 현재에도 정보보안전문가로 활발한 활동을 하고 있다. 백문이 불여일견이라 했으면 직접 블로그를 방문해 정보를 찾아보고 궁금한 사항은 질문도 해보는 적극적인 자세가 필요할 듯 하다.


울지 않는 벌새 http://hummingbird.tistory.com/
백신이나 보안상식에 대한 풍부한 정보를 제공하고 있으며 컴퓨터나 IT에 대한 정보도 보유하고 있는 블로그이다. 특히나 백신이나 방화벽 등 개인용 보안에 대해 다양한 보안상식을 넓힐 수 있다. 바이러스제로 시즌2 운영자이기도 하다.


촌철살인 http://blog.naver.com/hahaj1/
백신이나 보안상식에 대한 풍부한 정보를 제공하고 있으며 컴퓨터나 IT에 대한 다양한 정보도 보유하고 있는 블로그이다. 기술적 전문지식과 활용법을 바탕으로 일반인들이 보안상식을 제고할 수 있도록 해주고 있다.


김홍선의 보안이야기 http://philkim.column-blog.inews24.com/
우리나라에 드물게 CEO가 직접 보안전문 칼럼을 게재해 보안에 대해 이해를 높여주는 블로그이다. 안철수연구소 김홍선 사장이 직접 아이뉴스24에 쓴 보안칼럼을 주로 보여주는 것 같은데 소통이 부족한 듯 하나 국내최고의 정보보안전문가답게 인사이트가 매우 깊다.


이경문의 홈페이지 http://www.gilgil.co.kr/
기술적 보안전문 지식이나 정보들이 많은 개인 홈페이지이다. SnoopAnalyzer(프리랜서)라고 프로필에 소개되어 있는데 뭔지 모르겠지만 학생 때부터 컴퓨터 경진대회 다수 수상을 할 정도로 컴퓨터나 보안에 대한 전문성을 바탕으로 보안전문가로 활동 중이다.


바다란 세상 가장 낮은 곳의 또 다른 이름 http://blog.naver.com/p4ssion
보안전문 기술과 지식을 바탕으로 보안정보를 많이 보유하고 있는 블로그이다. 실제 기업 및 산업이나 보안현장에서 느끼는 보안문제나 해결책과 함께 전문적 보안기술 현황 등을 보여주고 있는 정보보안전문가이다.


Virus Lab http://viruslab.tistory.com/
백신이나 악성코드 전문지식과 정보를 보유하고 있는 블로그이다. 바이러스 및 악성코드 분석이나 보안상식을 넓히고 실제 현장 사례를 알 수 있는 정보보안전문가이다. 아이들 키우는 일상도 담고 있는 인간적인 곳인 듯 하다.


헐랭이와 IT보안 http://swbae.egloos.com/
보안 취약점이나 악성코드 및 해킹 동향 등 다양한 보안이슈를 알 수 있는 블로그이다. 현장의 경험과 전문성을 바탕으로 IT 전반 보안에 대한 폭넓은 보안전문 기술과 보안위협을 신속히 공유하는 정보보안전문가이다.

문외한이 보안전문 카페나 블로그를 정리하는 것이 벅차다. 잘 모르는 분야를 정리하는 일은 많은 시간과 노력이 필요하다. (여기 저기 서핑하는 일도 그렇지만 사이트의 성격이나 내용을 알기도 힘들다.@@)

암튼, 정보보안전문가를 꿈꾸고 도움을 원하는 사람들에게 유용하면 좋겠다.

(추가)
정보보안전문가를 준비하는 사람들에게 도움이 될 만한 정보를 아시는 분은 댓글로 알려주기 바랍니다. 잘못된 정보가 있거나 수정할 사항도 알려주시면 내용을 보완하겠습니다.

[참고] 댓글을 보니 정보보안전문가를 꿈꾸는 분들을 위한 전문적 지식과 기술의 사이트들이 많습니다.
어느정도 보안에 대한 기술적 기반이 있다면 활용하시면 좋을 듯 합니다.
beist.org
securityproof.net
dualpage.muz.ro
vbdream.tistory.com
chpie.tistory.com
jumpzero.tistory.com
window31.net
zizihacker.egloos.com
blog.naver.com/hanul93
reverseengineering.wordpress.com
koreasecurity.org
blog.naver.com/31337guru
blog.naver.com/int_com
zap.pe.kr
Posted by 으랏차
,
1.근무년도
2007년 7월 ~ 2009년 4월

2.회사명
이즈포유(주) (CMS,SNS기반 웹서비스 ,R&D )

 3.소속(근무부서)
 개발팀

4.직책
사원(개발자)

5.담당했던 직무나 수행했던 프로젝트
Service 기획, UI기획, Prototype 개발, Service 개발 ,Service 운영
(www.memothis.co.kr (메모디스) 포스트-잇개념을 인터넷으로 구현해놓은 SNS + BookMark web.2.0 서비스)
6.담당했던 직무나 프로젝트가 해당회사에서 차지하는 중요도
60%↑(팀원들간의 의견이나 각각의 작업을 모아서 서비스를 만드는 역할을 했기때문에 60%이상이다)


7.나의역할(특히 프로젝트 수행시)
 SNS,CMS 기반 블로그 서비스 개발 참여
 Sevice 기획하고 그에맞게 Prototype 개발하고 다시 UI기획 하고 이런과정 반복하며
 블로그 서비스 개발 및 운영
 Frame work 을 제외한 모든부분
 HTML,JSP,CSS,JAVASCRIPT 페이지 작업
 MYSQL, JBOSS, APACHE, LINUX 작업


8.성과및 업적
  중소기업기술혁신,리트머스, 미국수출 계약

9.해당경력이 지원하는 회사에 긍정적인 영향을 미칠 정도
  Win-Win

※ 1~8번 : 과거~현재. 경력에 관한 부분 9~10번 : 미래. 적용부분 이 외에 업무나 프로젝트와 관련된 교육을 받았거나 자격증이 있으며 요소를 추가하여 적으십시오. 9. 자격증 10. 교육관련 이런 식으로... 그리고 위의 내용은 당연히 깔끔하고 일목요연하게 적어야겠죠? 기술해야 하는 요소를 알았으니 이제는 작성할 때의 유의할 점에 대해서 알아봅시다. 대개의 경우 기술된 경력을 보면 팔방미인식으로 적혀있습니다. 산만해서 도리어 평가가 좋지 않게 나옵니다. 선택과 집중!! 지원하는 회사의 업무에 관련하여 작업했던 프로젝트나 직무를 골라서 적으십시오. 나머지 것들은 과감히 삭제하는 것이 좋습니다. 중요한 점은 이 응시자가 해당 업무에 대해 일을 과연 어느 정도로 해낼 수 있느냐이기 때문에 그 쪽에 관계된 경력만 선택+집중하여 표기하면 됩니다. 적을 때는 아주 구체적으로 적으십시오. 특히 프로젝트를 수행했을 때, 자신이 맡은 역할을 정확히 기술해 주셔야 합니다. 그 부분이 빠진다면 채용담당자는 무척 답답해하지요. ''도대체 맡은 일이 뭐야?'' 이러면서... 그리고, 경력과 신입이 다른 점은 바로 ''성과나 업적''이 있다는 것입니다. 모든 일에는 의미가 있고 회사 내에서 책임지어지는 부분이 있기에 이 부분을 적을 수 있습니다. 9~10번 요소도 무척 중요합니다. 경력에 대한 설득력을 배가시키지요. 꼭 적으십시오. 회사를 몇 군데 다니신 분들은 한 회사당 1~8번 요소를 최근부터 과거로 거슬로 올라가며 적으면 됩니다. (강조하는 것을 맨 앞으로... 최근에 다닌 회사에 가장 관심이 감) 9~10번 요소는 맨 마지막에 따로 강조하여 작성하면 됩니다. 표현하는 방법은 표로 하든 이미지를 곁들이든 님들이 좋아하는 스타일대로 하십시오
Posted by 으랏차
,

전체 세팅

Linux 2009. 3. 17. 18:00

Source downloads --Compressed GNU TAR archive (tar.gz)

#yum install gcc*
#yum -y install termcap libtermcap libtermcap-devel

#./configure --prefix=/usr/local/mysql --localstatedir=/usr/local/mysql/data --with-charset=euckr --with-mysql-user=mysql --sysconfdir=/etc

 #make
 #make install
 -----------------------------

# GRANT ALL PRIVILEGES ON *.* to root@"%" IDENTIFIED BY 'root' WITH GRANT OPTION;
# flush privileges;
 ------------------------------
 Linux 초보들을 위한 글입니다.

제가 너무 허접 삽질을 많이 해서 익힌거라 ㅠㅠ

고수분들에게는 너무나 쉬운 것이겠지만

http://database.sarang.net 이나
http://www.linux.co.kr 쪽에 가니
많은 분들이 저랑 같은 삽질을 하더군요

오픈되어 있는 리눅스 메뉴얼대로 하니까 안되는 부분이 많더라구요 ㅠㅠ

쪽팔리지만 글 한번 올려 봅니다.

mysql.com 에 가서 최신 버젼을 다운 받으세요.
단, 소스를 다운 받지 마시고 컴파일이 다 되어진 파일( xxxx-linux-i686.tar.gz) 을 받습니다.


2003년 10월 31일

mysql-standard-4.0.18-pc-linux-i686.tar.gz 

이 파일을 받아 왔습니다.

더 상위 버젼을 받으셔도 됩니다.

참고로 소스파일의 파일명은 mysql-버젼.tar.gz 입니다.

소스를 받아 오신 분들은 아래 방법으로는 설치가 안됩니다.


[root@linux root]# tar zxvf mysql-standard-4.0.18-pc-linux-i686.tar.gz

압축을 풉니다


압축이 풀려서 생긴 디렉토리를  /usr/local/mysql 로 이동 시킵니다.
( 꼭 거기에 하실 필요는 없고 .. 원하는 디렉토리로 해도 됩니다 )

[root@linux root]mv mysql-standard-4.0.18-pc-linux-i686 /usr/local/mysql
[root@linux root]# cd /usr/local/mysql


설치 스크립트를 실행 합니다.

[root@linux root]#./scripts/mysql_install_db
Preparing db table
Preparing host table
Preparing user table
Preparing func table
Preparing tables_priv table
Preparing columns_priv table
Installing all prepared tables
031022 22:37:09  ./bin/mysqld: Shutdown Complete

To start mysqld at boot time you have to copy support-files/mysql.server
to the right place for your system

PLEASE REMEMBER TO SET A PASSWORD FOR THE MySQL root USER !
This is done with:
./bin/mysqladmin -u root password 'new-password'
./bin/mysqladmin -u root -h myserver.co.kr password 'new-password'
See the manual for more instructions.

You can start the MySQL daemon with:
cd . ; ./bin/mysqld_safe &

You can test the MySQL daemon with the benchmarks in the 'sql-bench' directory:
cd sql-bench ; perl run-all-tests

Please report any problems with the ./bin/mysqlbug script!

The latest information about MySQL is available on the web at
http://www.mysql.com
Support MySQL by buying support/licenses at https://order.mysql.com

[root@linux root]#

위와 같은 메시지가 나오면 90% 끝입니다.

자 이제 mysql 작동을 위해 기본 설정을 해 줘야 합니다.
아래 부분에서 가장 해메는 부분 입니다.


[root@linux root]# groupadd mysql    
이미 있는 그룹이라고 나오면 그냥 넘어 가세요
[root@linux root]# adduser -g mysql mysql
이미 있는 유저라고 나오면 그냥 넘어 가세요
[root@linux root]# chown root.mysql /usr/local/mysql -R
root 로 권한을 줍니다.
[root@linux root]# chown mysql /usr/local/mysql/data -R
data 의 권한을 mysql 로 변경 합니다.
[root@linux root]# cp support-files/my-medium.cnf /etc/my.cnf
환경 설정 파일을 복사 합니다.

/etc/my.cnf 파일을 열어
한글 검색이 가능하도록 아래의 설정을 추가합니다.

[root@linux root]# vi /etc/my.cnf

default-character-set= euc_kr


자 이제 데몬을 띄웁니다.


[root@linux root]# ./bin/safe_mysqld --user=mysql &
[1] 5217
[root@linux root]# Starting mysqld daemon with databases from /usr/local/mysql/data


데몬이 정상적으로 떠 있는지 확인 해 봅니다.

[root@linux root]# ps ax|grep mysql
1634 pts/0    S      0:00 /bin/sh ./bin/safe_mysqld --user=mysql
1660 pts/0    S      0:00 [mysqld]
1662 pts/0    S      0:00 [mysqld]
1663 pts/0    S      0:00 [mysqld].
.
.


만약 데몬이 정상적으로 뜨지 않고
shutdown 어쩌구 메시지가 나오면
권한 변경 부분에서  잘못 된 경우가 많습니다.
그 부분을  다시 설정 해 보세요

그리고 서버가 부팅 될때 자동적으로 Mysql 돌아가게 설정 합니다.


[root@linux root]vi/etc/rc.d/rc.local  

/usr/local/mysql/bin/safe_mysqld --user=mysql &

위 내용을 추가 하면 됩니다.
[출처] Linux 에서 Mysql 설치법|작성자 훌박

 -----------------------------
 Java SE Development Kit (JDK) 6 Update 10
다운받아서 실행하면 지가 알아서 압축다풀고 설치다됐다고한다. -_-;
실행한 위치에 압축이 풀리므로 옮긴다!
(RPM 버전을 받으면 /usr/java에 jdk가 위치한다.)

mv jdk1.6.0_10 /usr/local/

그리고 나중에 버전업이 되었을때 자바 관련 패스를 전부 바꿔야하는 큰아픔을 막기 위해 심볼릭링크를 해준다.
ln -s /usr/local/jdk1.6.0_10 java
SDK와 같은 Kit은 이렇게 링크를 걸어주는게 좋다.
(RPM 버전을 받으면 /usr/java/default라는 링크가 이미 걸려있다.)

패스를 설정해보자.
vi /etc/profile
export JAVA_HOME=/usr/local/java
(RPM 버전이면 /usr/java/default)
export PATH=$PATH:$JAVA_HOME/bin
export CLASSPATH=.:$JAVA_HOME/jre/bin/lib/ext:$JAVA_HOME/lib/tools.jar
위 3줄을 적당한 위치에 넣고 저장한 후~
수정사항을 바로적용하기 위해
source /etc/profile

패스가 제대로 걸렸는지 테스트 해본다! 아무대서나
java
뭔가 쭉쭉 나온다면 OK! env 같은 명령어로 확인해도 된다.

이제 Tomcat을 설치하자!
http://tomcat.apache.org/download-60.cgi
위 링크는 6.x 버전 링크다. wget으로 해당 링크의 파일을 받는다~

압축 풀고 위치를 옮긴다. 관리 편하려고...
tar -xzvf apache-tomcat-6.0.18.tar.gz
mv apache-tomcat-6.0.18 /usr/local/web/
cd /usr/local/web/
apache와 같은 디렉토리에 놓이게 되었다.
설치된 디렉토리 이름을 그냥 tomcat으로 바꾸자.
mv apache-tomcat-6.0.18/ ./tomcat

마지막으로 패스만 설정해주면 끝난다.
vi /etc/profile
export JAVA_HOME=/usr/local/java
export CATALINA_HOME=/usr/local/web/tomcat
export PATH=$PATH:$JAVA_HOME/bin:$CATALINA_HOME/bin
export CLASSPATH=.:$JAVA_HOME/jre/bin/lib/ext:$JAVA_HOME/lib/tools.jar:$CATALINA
_HOME/lib/jsp-api.jar:$CATALINA_HOME/lib/servlet-api.jar

위와 마찬가지로 바로적용하기 위해
source /etc/profile

방화벽이 문제가 될테니 다음과 같이~ iptables 파일에 추가한다.
vi /etc/sysconfig/iptables
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 8080 -j ACCEPT

방화벽을 제시작하고 테스트!
/etc/rc.d/init.d/iptables restart
/usr/local/web/tomcat/bin/startup.sh

http://ip:8080/
접속해서 고양이 나오면 성공!
혹시라도
Cannot find /usr/local/server/tomcat/bin/setclasspath.sh
This file is needed to run this program
이런 메세지가 나온다면 CATALINA_HOME Path를 확인해봐야한다.

만약 톰캣도 리부팅후 자동 실행되게 하고 싶다면 다음과 같이 스크립트를 작성한다.
(소스는 인터넷에서 퍼 온것~ 몇몇 경로 부분만 현재 내 서버에 맞게 고쳤다.)
저장은 -> /etc/rc.d/init.d/tomcatd

#!/bin/sh
#chkconfig: 2345 89 89
#description: tomcatd
#processname: /usr/local/tomcat/bin/catalina.sh
#config : /usr/local/tomcat/conf/server.xml
#config : /usr/local/tomcat/conf/web.xml
#pidfile : /var/run/tomcatd.pid
#
# author      : jongho, Ahn(...)
# email       : skylimit@syspam.co.kr, skylimit71@gmail.com
# date        : 2006. 07. 10
#

# Get Config
[ -f /usr/local/tomcat/conf/server.xml ] && [ -f /usr/local/tomcat/conf/web.xml ] || exit 0

source /etc/profile

# Source function library
. /etc/rc.d/init.d/functions

# caution :
#           variable=<value> space between variable and value is not allowed
RETVAL=0
prog=tomcatd

# Start function
start()
{
  echo -n "Starting $prog : "
  daemon $CATALINA_HOME/bin/catalina.sh start
  RETVAL=$?
  echo
  touch /var/lock/subsys/tomcatd
  return $RETVAL
}

# Stop fucntion
stop()
{
  echo -n "Stopping $prog : "
  daemon $CATALINA_HOME/bin/catalina.sh stop
  RETVAL=$?
  echo
  rm -f /var/lock/subsys/tomcatd
  return $RETVAL
}

# Restart function
restart()
{
  stop
  start
}

# See how we were called
case "$1" in
     start)
           start
           ;;
     stop)
           stop
           ;;
     restart)
           restart
           ;;
     *)
           echo $"Usage : $0 {start|stop|restart}"
esac

exit $RETVAL

그리고 나서 chmod 755 tomcatd로 권한주고 /sbin/chkconfig --add tomcatd 해주면 끝~
만약 다른 대몬과의 연동으로 실행 순서를 변경해야 한다면
아래와 같은 부분을 조정하면 된다.

#chkconfig: 2345 89 89

2345는 런레벨이며 첫번째 89는 시작우선권 두번째 89는 종료우선권이다.
끝~

----------------------------------
아놔... Onenote에 정리한거 날려 먹고 첫 글!
언제나 시간이 지나면 이래저래 까먹는 것들이라 조금씩 정리해놔야지...

% root 권한으로 진행

먼저, 소스를 받아온다!
wget http://dev.mysql.com/get/Downloads/MySQL-5.0/mysql-5.0.67.tar.gz/from/http://mysql.byungsoo.net/

받아온 녀석을 풀어주자~
tar -zxvf mysql-5.0.67.tar.gz
cd mysql-5.0.67

설치환경 정하고 설치!
./configure --prefix=/usr/local/mysql --with-charset=utf8 --with-extra-charsets=all
--prefix=dir을 통해 설치될 곳을 지정하고 나머지는 캐릭터셋~ 기본을 utf8로!
make && make install

환경설정 파일을 복사해준다. 튜닝은 상황에 맞게 알아서~
my-huge, my-large, my-medium, my-small.cnf 중 필요한 파일 선택.
cp support-files/my-huge.cnf /etc/my.cnf

이제 mysql이라는 DB실행용 계정을 생성하고 기본 DB를 만든다.
/usr/sbin/useradd -M -s /bin/false mysql
cd /usr/local/mysql/
bin/mysql_install_db --user=mysql
Support MySQL by 어쩌구 나오면 완료.

mysql이 설치된 디렉토리 권한을 바꾸고 PATH를 걸어주자. (현재 위치 /usr/local/mysql)
chown -R root .
chown -R mysql var
chgrp -R mysql .
vi ~/.bash_profile (각자의 쉘 환경에 맞게...)
PATH에 다음 디렉토리 추가 /usr/local/mysql/bin
source ~/.bash_profile

마지막으로 서버가 부팅시 자동실행 되도록 설정하고 mysql의 root 패스워드를 정한 후 최종 완료!
cp share/mysql/mysql.server /etc/init.d/mysqld
/sbin/chkconfig --add mysqld
/etc/init.d/mysqld start
mysqladmin -u root password 패스워드
mysql -u root -p
아까 입력한 패스워드 입력! 잘 접속되면 설치 끝!

방화벽으로 MySQL 접근이 제한되어 있다면 다음과 같이 해준다!
vi /etc/sysconfig/iptables
아래 내용 추가! iptables는 Table 형태이므로 Reject된 후에 추가하면 소용 없음.
-A RH-Firewall-1-INPUT -p tcp -m tcp --dport 3306 -j ACCEPT

---------------------------------
#yum install mysql mysql-server
#mysqladmin -u root password 'password'
#service mysqld start


___________________________________
#chmod 555  java..bin
#vi etc/profile
 export JAVA_HOME=/usr/local/java
#source /etc/profile


------------------------------------
#wget http://mirror.khlug.org/apache/tomcat/tomcat-6/v6.0.18/bin/apache-tomcat-6.0.18.tar.gz
#./startup.sh


------------------------------
#make clean
#wget http://apache.tt.co.kr/httpd/httpd-2.2.11.tar.gz
tar -zxvf httpd-2.2.10.tar.gz
./configure --prefix=/usr/local/web/apache --enable-mods-shared=all --enable-so --enable-rewrite


소스를 받고 압축풀기!

wget http://apache.tt.co.kr/httpd/httpd-2.2.11.tar.gz
tar -zxvf httpd-2.2.10.tar.gz
cd httpd-2.2.10

root 권한으로 설치환경 잡아주고 설치 시작!
su
./configure --prefix=/usr/local/web/apache --enable-mods-shared=most --enable-so --enable-rewrite
뒤에 옵션은 설치 위치 지정 및 동적 모듈 방식 설정 하고 마지막으로 URL 재작성 모듈을 on하는 설정이다.
make && make install
----mod-jk-------
 ./configure --enable-proxy_http --enable-proxy_connect --enable-ssl --enable-cache --enable-mem-cache --enable-disk-cache

 ./configure --enable-proxy --enable-mods-shared=most --enable-proxy_connect  --enable-rewrite

 ./configure --enable-proxy --enable-proxy_http --enable-proxy_connect --enable-cache --enable-mem-cache --enable-disk-cache --with-mpm=worker --enable-mods-shared=all

-----------------
구동환경을 설정!
vi /usr/local/web/apache/conf/httpd.conf
ServerName이라는 항목을 찾아서 IP나 도메인을 적어준다. IP:PORT 형태.
% DocumentRoot라는 항목을 수정해서 웹 사이트의 루트를 바꿀 수 있다.

이제 실행스크립트를 복사하고 실행한 후 브라우저로 접속 고고싱!
cp /usr/local/web/apache/bin/apachectl /etc/init.d/httpd
/etc/init.d/httpd start

혹시라도 접속이 안된다면 방화벽 문제일 가능성이 허다~ 방화벽에 다음과 같이 추가해준다.
vi /etc/sysconfig/iptables
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
웹브라우저에

It works!
라고 나오면 성공!

마무리 작업으로 서버가 리붓될때 자동으로 Apache가 실행되도록 해준다.
chkconfig로 등록하면 되는데 그냥 하면 지원하지 않는다는 에러메세지가 등장하므로 다음과 같이해준다.

vi /etc/init.d/httpd
젤 윗 줄 #!/bin/sh 밑에 아래 내용을 넣는다~
#chkconfig: 2345 90 90
#description: init file for Apache server daemon
#processname: /usr/local/web/apache/bin/apachectl
#config: /usr/local/web/apache/conf/httpd.conf
#pidfile: /usr/local/web/apache/logs/httpd.conf
저장한 후~
/sbin/chkconfig --add httpd

끝!\



httpd.conf--------------------
Include conf/extra/httpd-vhosts.conf 주석제거
#LoadModule dav_module modules/mod_dav.so 주석제거
#LoadModule dav_fs_module modules/mod_dav_fs.so 주석제거

httpd-vhosts.conf 설정
Options index FollowSymLinks MultiViews    index 제거

cp /usr/local/web/apache/bin/apachectl /etc/init.d/httpd
/etc/init.d/httpd start

vi /etc/sysconfig/iptables
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
-------------------------------------


#vi /etc/sysconfig/iptables
#iptables -F
-A RH-Firewall-1-INPUT -p tcp --dport 3306 -j ACCEPT

-----iptables------------
ssh
#iptables -A INPUT -p tcp --dport 22 -j ACCEPT
httpd
#iptables -A INPUT -p tcp --dport 80 -j ACCEPT
pop3
#iptables -A INPUT -p tcp --dport 109 -j ACCEPT
pop2
#iptables -A INPUT -p tcp --dport 110 -j ACCEPT
imap
#iptables -A INPUT -p tcp --dport 143 -j ACCEPT
mysqld
#iptables -A INPUT -p tcp --dport 3306 -j ACCEPT
ftpd
#iptables -A INPUT -p tcp --dport 21 -j ACCEPT
전부거절하기
#iptables -A INPUT -p tcp --dport1:30000 -j DROP


Posted by 으랏차
,

[리눅스] 아파치, mysql, php 소스 설치 절차

*** 아파치 웹 서버 설치***
-아파치 웹서버 프로그램은 RPM 패키지를 이용하여 설치할 수 있겠지만, RPM패키지 설치보다는 소스 설치위주로 하겠다.
 아파치 소스를 컴파일하여 설치한 후 PHP와 MySQL를 연동하여 설치하는 방법을 알아보겠다.

1.rpm -qa | grep httpd 를 실행하여 httpd RPM 패키지가 설치되어 있는지 확인하여 패키지 정보가 나타난다면
  'rpm -e 패키지 명'을 실행하여 rpm 패키지를 반드시 제거한다.

2.아파치 안정 버전을 다운받는다. 다운 받는 폴더는 임시폴더  /tmp 로 다운 받는다.

3.압축을 푼다.
# tar xvfz httpd-2.2.4.tar.gz -C /tmp (-C /tmp 부분은 생략해도 됨)

4./tmp/httpd-2.2.4 디렉토리로 이동하여 ./configure 명령으로 다음과 같이 컴파일 환경을 설정한다.
 #cd /tmp/httpd-2.2.4
 #./configure --prefix=/usr/local/apache2 --enable-mods-shared=all \
                    --with-mpm=worker --enable-ssl --with-ssl --enable-so 
                             (mpm은 다중처리로서 cpu2개 이상시 설정, ssl은 SecureLayer)
(간단하게,  ./configure --prefix=/usr/local/apache2 --enable-rewrite --enable-so 라고 해도 무방)

5.make명령으로 컴파일 한다. 오류 없이 컴파일이 끝나면 make install 명령을 실행하여 컴파일 환경 설정 시
 --prefix= 옵션으로 지정한 위치로 컴파일 파일들이 설치되도록 한다.
 #make  <=소스를 바이너리로 컴파일
 #make install

6. /etc/ld.so.conf 파일에 /usr/local/apache2/lib 과 /usr/local/apache2/modules 경로를 다음과 같이 추가한 후 ldconfig 명령을 실행한다.
 #cat >> /etc/ld.so.conf
/usr/local/apache2/lib
/usr/local/apache2/modules
crtl-d 키를 누름
 #ldconfig (모듈 업데이트)




***MySQL과 PHP설치***
-PHP는 리눅스 상에서 작동하는 강력한 웹 스크립트 언어로 웹 프로그래밍에 많이 사용되는 언이이다.
MySQL은 공개 프로그램이면서 개인 서버로 많이 운영되고 있는 중소형 데이터베이스로, 오라클이나 DB2,MS-SQL 과 같은
대형 데이터베이스에 못지 않는 강력한 성능을 제공하고 있어 리눅스 웹 서버의 일반적인 DB로 많이 사용되어지고 있다.
요즘에 게시판이나 자료실들이 PHP와 MySQL을 연동하여 만들어지고 있으므로, 이러한 것을 사용하기 위해서는 아파치
웹 서버에 이러한 프로그램들을 함께 컴파일하여 설정해야 한다.
(참고) DSO(Dynamic Shared Object : 동적 공유 개체-필요에 따라서 아파치 웹서버에 모듈이나 라이브러리를 언제든지
적재할 수 있는 것을 말함. 아파치에 추가하고자 하는 모듈이 있을 때 재 컴파일 하지 않고서도 사용할 수 있어서 설치 관리
측면에 이점이 있으며, 모듈이 필요할 때마다 적재할 수 있으므로,시스템 리소스를 효율적으로 사용할 수 있는 이점이 있다.




***MySQL 설치***
MySQL을 다운로드할 때에는 주의할 것이 있는데, '바이너리 소스'인지 '소스'인지를 명확히 구별하여야 한다.
여기서는 타볼 소스 파일로 설치를 시행한다.

1.MySQL RPM 패키지가 설치되어 있는지 rpm -qa | grep mysql 를 실행하여 패키지 정보가 나온다면 제거한다.
   의존성으로 삭제가 안되면 "# rpm -e --nodeps mysql-5.0.22-2.1 " 이렇게 한다.

2.mysql-5.x.x 타볼 소스 파일을 /tmp 임시디렉토리에 압축을 풀어 놓는다.
 #tar xvfz mysql-5.x.x.tar.gz. -C /tmp

3./tmp/mysql-5.x.x 디렉토리로 이동하여 ./configure  명령을 실행하여 컴파일 환경을 설정한다. 이때 컴파일 환경
옵션으로는 다음과 같은 옵션을 지정한다.
--prefix=설치경로 ex) --prefix=/usr/local/mysql
--localstatedir=data경로 ex) --localstatedir=/usr/local/mysql/data
--with-charset=euckr
--with-mysql-user=mysql
--sysconfdir=/etc
 기타 옵션에 관한 것은 ./configure --help 명령을 실행하여 참고한다.
(간단하게,# ./configure --prefix=/usr/local/mysql --with-charset=euckr 해도 무방)
*termcap에러가 날 경우 libtermcap-devel-2.0.x-xx.i386.rpm 을 설치 한 후 재시도할 것.)
4. make 명령을 실행하여 MySQL를 컴파일 한다.
 # make

5.컴파일이 완료되면 make install 명령을 실행하며 /usr/local/mysql 디렉토리로 컴파일된 파일들이 설치되도록 한다.
 # make install

<중요> RPM 패키지가 아닌 타볼 소스를 컴파일 하여 사용할 때에는 반드시 RPM 패키지가 설치되어 있는지 확인한다.
  특히 httpd 나 MySQL은 RPM 패키지를 반드시 삭제한 후 소스를 컴파일 하여 사용해야 한다.

6.MySQL 데이터 베이스 디렉토리 생성
-MySQL을 컴파일 설치 후 MySQL의 데이터베이스인 data 디렉터리는 자동으로 생성되지 않으므로 이를 수동으로 생성해 주어야 한다. 그러면 /usr/local/mysql/bin 디렉터리로 이동하여
 “. /mysql_install_db” 명령을 실행하여 /usr/local/mysql/data 디렉터리가 생성되도록 한다.

mysql_install_db  명령은 /usr/local/mysql/data DB 디렉터리를 생성해 주고, 그 디렉터리 안에
mysql DB하위 디렉터리와 파일들을 생성해 주는 것이다.
#cd ../data
#ls

7.MySQL 라이브러리 위치 지정
-MySQL 데몬이 구동될 때 mysql 라이브러리를 이용하므로 이것을 포함하는 /usr/local/mysql/lib 디렉터리를 /etc/ld.so.conf 파일에 추가하여 ldconfig 명령을 실행한다.
#cat >>/etc/ld.so.conf
/usr/local/mysql/lib
ctrl+D를 누름.
#ldconfig

8.MySQL 설정 파일 (my.cnf) 복사
/usr/local/mysql/share/mysql 디렉터리에 있는 my-medium.cnf  파일을 /etc/my.cnf  파일로 복사한다.
 #cp /usr/local/mysql/share/mysql/my-medium.cnf /etc/my.cnf

9.MySQL 게정 생성 및 MySQL 경로 소유권 변경
-MySQL 데몬은  mysql 계정 소유로 띄우는 것이 안전하므로, /etc/passwd 파일에 mysql 계정이 존재하는지
체크하여(cat /etc/passwd | grep mysql 명령 사용) 존재하지 않는다면 다음과 같이 이 계정을 생성한다.
 #groupadd mysql
 #adduser -M -c Mysql_server -d /usr/local/mysql -g mysql -s /bin/nologin mysql
(-c, --comment COMMENT  Any text string. It is generally a short description of the login, and is currently used as the field
          for the user’s full name.
-M The user’s home directory will not be created, even if the system wide settings from /etc/login.defs is
          to create home dirs.)

mysql 계정을 추가한 후 다음과 같이  MySQL 디렉터리의 소유권을 변경한다.
 #chown root.mysql -R /usr/local/mysql    (-R, --recursive  경로와 그 하위 파일들 모두를 바꾼다.)
 #chown mysql.mysql -R /usr/local/mysql/data

10.MySQL데몬 띄우기
 /usr/local/mysql/bin/mysqld_safe 명령으로 MySQL 데몬을 띄운다. 그러면 --user-mysql 옵션을 지정하여
다음과 같이 백그라운드 모드로 MySQL 데몬이 작동하도록 mysqld_safe 명령을 실행한다.
# /usr/local/mysql/bin/mysqld_safe --user=mysql &
[1] 31233
Starting mysqld daemon with databases from /usr/local/mysql/data
#

11. MySQL 데몬이 제대로 작동되고 있는지 ps ax 명령으로 확인해 본다.
# ps ax | grep mysqld
-부팅시 자동으로 MySQL 데몬이 작동되도록 하려면 /usr/local/mysql/share/mysql 디렉터리에 존재하는
mysql.server 파일을 /etc/init.d 디렉터리에 mysqld 파일로 복사하고 chkconfig 명령으로 실행레벨 3(콘솔)과
실행레벨 5(x-window) 에서 자동으로 실행되게끔 처리하면 된다.
# cp /usr/local/mysql/share/mysql/mysql.server /etc/init.d/mysqld
# chkconfig --level 3 mysqld on
# chkconfig --level 5 mysqld on




***MySQL DB 설정***
 mysql 서버에 접속하여 데이터베이스와 사용자를 생성하는 간단한 방법을 알아보겠다. 여기서 생성하는 데이터베이스(db)와
사용자는 나중에 살펴보게 될 제로보드 설치에 사용하게 될 것이다. 제로보드 설치에서도 이 과정을 다시 한 번 복습하게 될
것이다.

1. /usr/local/mysql/bin/mysql 에서 mysql 명령을 실행하여 MySQL 서버에 접속한다.
# /usr/local/mysql/bin/mysql -p mysql
 -p 옵션은 열쇠글 옵션이다. 처음 설치 시에는 루트 열쇠글이 지정되어 있지 않으므로, 열쇠글을 묻게 되면
그냥 엔터키를 치면 된다. 그러나 step 2에서 루트 열쇠글을 지정한 이후부터는 루트 열쇠글을 입력하여
mysql db에 접속하게 된다.

2. mysql> 프롬프트에서 다음과 같이 update 명령으로 MySQL root 열쇠글을 생성한다.
mysql> update user set password=password('baboo') where user='root';
mysql> flush privileges;

3.데이터 베이스를 생성한다. (DB명: adam)
mysql> create database adam;

4.사용자 계정을 생성한다. (계정명: adam 열쇠글:sagan)
mysql> insert into user (host,user,password) values
    -> ('localhost','adam',password('sagan'));

5.생성한 데이터베이스를 등록한다.
mysql> insert into db values
    -> ('%','adam','adam','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y');
첫 번째 adam은 DB를 의미하고, 두 번째 adam은 계정을 의미한다. Y는 MySQL버전마다 틀리다. 위의 경우는
17개의 Y이므로 갯수에 주의한다.

6. exit 를 입력하여 MySQL DB 접속을 종료한 후 mysqladmin -p reload 명령을 실행하고, 열쇠글은
 mysql db root 의 암호를 입력한다. 이 명령을 실행한 이후로는 MySQL db에 접속할 때는 반드시 -p옵션을 사용하여
열쇠글을 입력해야 한다.
mysql> exit
# /usr/local/mysql/bin/mysqladmin -p reload
Enter password:
#




*** PHP 설치 ***
1. php-5.2.3.tar.tar 파일을 압축해제한다.
# tar xvfz php-5.2.3.tar.tar

2. ./configure 명령으로 다음과 같이 컴파일 환경을 설정한다.
--with-apxs2=아파치의 apxs 경로
--with-mysql= mysql 설치 경로
--with-config-file-path= php.ini경로
--with-exec-dir= 아파치 데몬 실행경로
(다음과 같이 설정해서 실행)
# ./configure --with-apxs2=/usr/local/apache2/bin/apxs --with-mysql=/usr/local/mysql \
> --with-config-file-path=/usr/local/apache2/conf --with-exec-dir=/usr/local/apache2/bin --enable-track-vars \
> [--with-gd=shared --enable-gd-native-ttf] --with-openssl --with-xml --enable-trans-sid --with-zlib
 [ ] 이 부분은 에러가 발생할 시 추가 하지 말 것. --enable-sockets 는 추가.
(아주 간소하게,
./configure --with-apxs2=/usr/local/apache2/bin/apxs --with-mysql=/usr/local/mysql \
--enable-socketr 라고만 해도 됨. PHP버전과 시스템의 설정에 따라서)

3. make 명령으로 컴파일을 진행한다. 컴파일이 성공적으로 완료되면 make install 명령을 실행하여 php 모듈을 아파치
경로의 모듈 디렉터리로 설치되게 끔 한다.(./configure에서 설정되어짐.)
 # make
 # make install

4. php.ini-recommended 파일을 /usr/local/apache2/conf 디렉터리로 복사한다.
 # cp php.ini-recommended /usr/local/apache2/conf/php.ini

5. 아파치 모듈 경로 ( /usr/local/apache2/modules)로 이동하여 libphp4.so 모듈 파일이 존재하는지 확인한다.
 만일 이 파일이 설치되지 않았다면 php 컴파일 상에 문제가 있는 것이므로, 새 php 소스를 이용하여 다시 컴파일 한다.
 #cd /usr/local/apache2/modules
 #ls -l libphp4.so
 #

6. 잠시 후에 살펴보게 될 /usr/local/apache2/conf/httpd.conf 파일 설정 가운데 DSO support 항목을 찾아 다음 설정
라인이 추가 되어 있는지 확인하여, 만일 설정되어 있지 않다면 추가한다.
 # Dynamic Share Object (DSO) Support
LoadModule php4_module modules/libphp4.so
(PHP의 버전에 따라 위의 라인에서 숫자가 달라진다.)

7. /usr/local/apache2/conf/httpd.conf 파일을 vi 에디터로 열어 #ServerName www.example.com:80으로 설정된 부분을 찾아 다음과 같이 수정한다.
ServerName localhost:80
(참고:ip로도 해본다.)

8. httpd.conf 파일 중간의 알맞은 곳 또는 마지막 줄에 다음을 추가한다.
 AddType application/x-httpd-php .php .php3 .php4 .php5 .html .htm

9.httpd.conf 파일을 저장한 뒤에 /usr/local/apache2/bin/httpd 또는
  /usr/local/apache2/bin/apachectl restart 명령을 실행하여 아파치 데몬을 다시 띄운다.
 # /usr/local/apache2/bin/httpd 또는
 # /usr/local/apache2/bin/apachectl restart

10.작동 여부확인
http://localhost 또는 http://ip주소

'Linux' 카테고리의 다른 글

특정 디렉토리 또는 파일 갯수 세기 - Linux명령어  (0) 2011.04.26
전체 세팅  (0) 2009.03.17
리눅스에서 Apache2.2.4 + PHP 5.2.3 + mysql 5.1.19 설치  (0) 2009.03.17
tar  (0) 2008.07.25
명령어2  (0) 2008.07.25
Posted by 으랏차
,

재사용/유지보수
를 극대화를 위해 다형성, 추상화 개념이 들어간 객체지향프로그래밍을 이용한다.

객체지향프로그래밍(OOP) 5대 원칙도 마찬가지입니다. 결국 재사용/유지보수를 위해서 필요한 원칙입니다. 이런 원칙을 잘 지키는 것은 초보 개발자에게 무척 어려운 일이기도 합니다. 왜냐하면 이해와 설계과정이 함께 들어가는 것이기 때문입니다. 하지만 지속적으로 적용하고 몸에 베면 그리 어려운것만은 아닙니다.


[공부]

http://muticd.com/lec/director/viewBody.php?t_Name=Lec_drbook2

11, 12 동영상을 학습한다.



[과제]


1. 인터페이스(Interface), 추상 클래스(Abstract Class), 구상 클래스(Concrete Class)

1.1 인터페이스란 무엇인가?  

1.2 추상클래스란 무엇인가? 추상클래스의 역할을 정확히 언급하라. 인터페이스와의 차이점을 언급하라.

1.3 구상클래스란 무엇인가?

1.4 AS3에는 추상 클래스의 키워드로 abstract가 없다. 그러나 실제 설계시에는 추상클래스 역할을 하는 클래스가 필요한 경우가 많다. 이런 경우에 대한 적절한 예제를 들고 Class Diagram을 작성하라. (단,추상클래스는 직접 사용할 수 없도록 해야한다.)

1.5 1.4에서 만든 추상클래스를 가지고 구상클래스를 3가지 이상 예제를 들고 Class Diagram을 작성하라.

1.6 1.4, 1.5에서 만든 추상클래스와 구상클래스를 가지고 문제없이 사용할 수 있다. 하지만 다중상송의 경우 문제가 발생할 수 있다. 이런경우 예를 들고 왜 인터페이스-추상클래스-구상클래스를 셋트로 설계하는게 좋은지 설명하라.



2. Open-Close 원칙 (OCP, 개방-폐쇄의 원칙)

2.1 OCP원칙에 의하면 확장 상속(is-a)에 관해서 어떻게 하나?

2.2 OCP원칙에 의하면 합성 상속(has-a)에 관해서 어떻게 하나?

2.3 OCP원칙에 따르기 위해 Class를 어떻게 설계해야하는가?

2.4 OCP 원칙에 맞지 않는 예를 Class Diagram으로 표현하라.

2.5. OCP 원칙에 대한 적절한 예를 Class Diagram으로 표현하라.



3. The Liskov Substitution 원칙(LSP, 리스코프 치환 원칙)

3.1 LSP 원칙에 대해 설명하라

3.2 LSP 원칙에 맞지 않는 적절한 예를 Class Diagram으로 설명하라.

3.3 LSP 원칙에 맞는 적절한 예를 Class Diagram으로 설명하라.



4. The Dependency Inversion 원칙(DIP, 의존 관계 역전 원칙)

4.1 DIP 원칙에 대해서 간단하게 설명하라.

4.2 DIP 원칙에 맞지 않는 예제를 Class Diagram으로 설명하라.

4.3 DIP 원칙에 맞는 예즈를 Class Diagram으로 설명하라.



5. The Interface Segregation 원칙(ISP, 인터페이스 격리 원칙)

5.1 ISP에 대해서 간단히 설명하라.

5.2 ISP에 맞지 않는 예제를 Class Diagram으로 설명하라

5.3 ISP에 맞는 예제를 Class Diagram으로 설명하라.



6. The Single Responsibility 원칙(SRP, 단일 책임의 원칙)

6.1 SRP에 대해서 간단히 설명하라.

6.2 SRP에 맞지 않는 예제를 Class Diagram으로 설명하라.

6.3. SRP에 맞는 예제를 Class Diagram으로 설명하라.



[참고서적]

Flex/AIR Bible (대림, 윤훈남저)

액션스크립트 3.0 디자인 패턴(에이콘, 조이로트.대니 패터슨 저)



이들에 대해서 학습을 완료하면 재사용/유지보수를 위해 아래와 같은 작업을 해야할 것을 느낄겁니다.


1. 인터페이스 또는 추상클래스로 설계한다.

2. 참조시 인터페이스 및 추상클래스를 참조해야한다.(의존성을 줄임)

3. 인터페이스나 추상클래스는 확실한 자기 역할을 부여해라.(유지보수,확장성 향상)


OOP 5대 원리 및 다양성, 추상화 과정에 대해서 이해하고 계속 적용할려고 노력하는 것은 개발의 삽질을 줄여주는데 반드시 필요한 부분입니다. 처음에는 머리 아플지 모르지만 예전보다 이쁘게 만들어진 자신의 프로그램을 보며 웃을날이 분명 올것입니다. ^^


객체기반프로그래밍(OBP, object based programming)이 아닌 객체지향프로그래밍(OOP, object oriented programming)을 하시기 바랍니다.


댓글이 곧 달리겠죠? ^^

글쓴이: 지돌스타(http://blog.jidolstar.com/419)

Posted by 으랏차
,