본문 바로가기
Knowledge/Linux & Container

[Linux] 초보 개발자의 서버 구축 및 운영하기 - (1) 디렉토리 구조 반만 이해하기

by 미네마네모 2019. 6. 3.

"초보 개발자의 서버 구축 및 운영하기"는 어찌하면 좋은 서비스 환경과 개발 환경을 만들 수 있을까 하며 쓰게된 글입니다. 말주변이 변변찮고 짧은 저의 경험을 토대로 작성한 글이 도움이 되었으면 좋겠습니다.

 


 

리눅스를 처음 설치하면 보고도 뭐하는 폴더 디렉토리지? 하는 경우가 많다.

 

그 디렉토리들을 전부다 자세하게 설명하기 보다 내 경험상 서버 구조 구축에 좀 더 중요한 디렉토리들을 중점으로 보다 쉽게 설명해보려고한다.

 

주황색 부분은 서버 구조를 잡는데 상대적으로 중요한 부분이라고 생각한다.

1. 시스템 관련 디렉토리 (/, /usr)

  • OS 설치 시 기본적으로 설치되는 디렉토리 (윈도우에서 C:\Windows와 유사하다고 생각하면 된다.)
  • 기본적으로 건들이면 안된다고 생각하면 편안하다. (윈도우에서 C:\Windows 진입하면 위험하다고 뜨잖아! 리눅스에서는 안뜰뿐이야~)
  • 시스템의 라이브러리는 절대 Never!!! 건들지 말자!!! 괜히 건들였다가 건들인 라이브러리와 의존성 때문에 문제를 야기할 수 있다.
  • 어지간한 시스템 관련 업데이트 및 업그레이드는 다운로드 매니저(yum, apt-get)를 이용해서 rpm 설치하자! 의존성까지 싹다 확인해서 설치해준다!

< 바이너리 관련 디렉토리 >

경로 설명
/bin 가장 기본적인 시스템 명령어들이 저장되어있다. (mv, cp, rm, cd 등)
/sbin 시스템 관리에 필요한 명령어들이 저장되어있다. (ifconfig, arp, fsck 등)
/usr/bin OS 설치 시 설치되는 일반 사용자들이 사용하는 명령어들이 저장되어있다.
/usr/sbin 주로 네트워크 관련 명령어 및 데몬 서비스들이 저장되어있다.

< 라이브러리 관련 디렉토리 >

경로 설명
/lib , /lib64 /bin, /sbin 디렉토리에 있는 명령어들의 의존성이 걸려있는 라이브러리, 여기서 몇개 지우면 의존성 걸린 명령어들은 먹통이 된다.
/usr/lib , /usr/lib64 /usr/bin, /usr/sbin 디렉토리에 있는 명령어들의 의존성이 걸려있는 라이브러리, 위와 동일하게 여기서 몇개 지우면 의존성 걸린 명령어들은 먹통이 된다.

< 헤더 관련 디렉토리 >

경로 설명
/usr/include C 프로그래밍에 필요한 헤더파일이 존재하는 디렉토리 (stdio.h, stdlib.h 등이 있음)
rpm으로 lib 파일을 받을때 "{프로그램 명}-devel" 이라는

 

2. 사용자 관련 디렉토리 (/usr/local)

  • 윈도우의 C:\Program Files와 유사한 역할을 한다
  • 윈도우에서 설치할때 설치 경로 묻는 것처럼 리눅스에서는 빌드할때 --prefix라는 옵션을 통하여 경로를 지정해줄수 있다. (경로를 지정하지 않으면 기본 경로는 보통 윈도우는 C:\Program Files, 리눅스는 /usr/local이다.)

< 바이너리 관련 디렉토리 >

경로 설명
/usr/local/bin , 
/usr/local/sbin
보통 사용자가 설치한 프로그램의 바이너리 파일을 복사 또는 링크를 통하여 해당 디렉토리에 저장한다.
/usr/local/{설치된 프로그램 명}/bin ,
/usr/local/{설치된 프로그램 명}/sbin
위 디렉토리에서 복사 및 링크 대상이 해당 디렉토리에 저장된 파일들이다.

< 라이브러리 관련 디렉토리 >

경로 설명
/usr/local/lib ,
/usr/local
/lib64
보통 사용자가 설치한 프로그램의 라이브러리 파일을 복사 또는 링크를 통하여 해당 디렉토리에 저장한다.
/usr/local/{설치된 프로그램 명}/lib ,
/usr/local/{설치된 프로그램 명}/lib64
위 디렉토리에서 복사 및 링크 대상이 해당 디렉토리에 저장된 파일들이다.

< 헤더 관련 디렉토리 >

경로 설명
/usr/local/include , 
/usr/local/{설치된 프로그램 명}/include
C 프로그래밍에 필요한 헤더 파일이 저장되는 디렉토리
예를들어 mysql 설치 시 mysql 관련 헤더는 해당 디렉토리에 저장된다.

 

3. 제품 관련 디렉토리 (/opt, /flash 등등)

  • 서버 장비에 탑제하는 특정 솔루션의 디렉토리 이다.
  • 예를들어 우리회사는 서버장비에 인사 관리 시스템을 탑재하여 판매하는 회사이다. 그때 그 회사만의 고유한 디렉토리이다.
  • 위에서 대표적으로 사용하는 디렉토리를 /opt, /flash 등으로 보여주었다. 디렉토리 명을 정하는건 자유.
  • 디렉토리 예시
    •  /opt
      • /opt/lib
      • /opt/bin
      • /opt/include
      • /opt/script
      • /opt/etc
      • etc.....
    •  /flash
      • /flash/lib
      • /flash/bin
      • /flash/include
      • /flash/script
      • /flash/etc
      • etc.....

 

4. 설정 관련 디렉토리 (etc 디렉토리)

  • 설정에 관련된 디렉토리이다.
  • 그 종류는 /etc, /usr/etc, /usr/local/etc, /usr/local/{프로그램명}/etc 이지만 다른곳은 어찌 사용하는지 모르겠지만 서버 구성 시 /etc로 심볼릭 링크를 통해서 모아둔다

댓글