본문 바로가기
Development/Linux

[Linux 서버] 1. 리눅스 서버란?

by eoieiie 2024. 3. 30.

이 포스팅은 리눅스 서버에 대한 기초적인 내용을 공부한 과정을 토대로 작성되었습니다.

 

Linux 란?


리눅스는 컴퓨터의 운영체제 중 하나로 다양한 분야에서 사용됩니다. 특히 서버에 특화된 기능들이 많은데, 간략하게 알아보도록 하겠습니다. 

 

  1. 보안성 : 먼저 리눅스는 보안이 강화된 운영체제입니다. 많은 개발자들이 오픈소스로 개발과 유지보수를 하고 있기에, 보안적인 측면에서 취약점이 발견된다면 빠르게 대처할 수 있습니다.

  2. 안정성:  리눅스는 동시에 여러 프로세스를 처리할 수 있습니다. 이는 서버 다운 시간( 의도되거나 의도되지 않게 서버가 작동하지 않는 시간을 의미합니다. 최소화하는 것이 중요합니다.)을 줄입니다.

  3. 확장성: 리눅스는 다양한 기능을 추가하여 서버에 맞게 사용할 수 있으며, 다양한 소프트웨어와 호환성이 좋습니다. 

  4. 무료 : 이 모든 기능들을 무료로 사용할 수 있습니다. 이러한 이유로 많은 리눅스는 많은 기업에서 서버 운영체제로 선택하고 있습니다.

 

리눅스 서버란?


리눅스 서버는 리눅스 커널을 중심으로 만들어진 무료 오픈소스 소프트웨어 운영체제입니다. 리눅스 서버는 서버의 안정성, 보안, 유연성으로 인기를 얻었습니다. 여러 가지 서버들이 존재하는데, 각 서버의 특징들에 대해서 알아보겠습니다.

  1. 웹 서버 소프트웨어: 사용자가 웹 사이트에 접속하면 서버에서 해당 웹 페이지를 제공해주는 역할을 합니다.

  2. 데이터베이스 서버: MySQL, PostgreSQP등의 데이터베이스 소프트웨어와 함께 사용되는데, 이 소프트웨어들은 사용자가 서버에서 데이터를 저장하고 관리할 수 있게 해 줍니다.

  3. 파일 서버: 서버에서 파일을 공유하고 관리할 수 있게 해 줍니다.

  4. 보안 서버: 여러 보안 프로토콜을 지원합니다. 이러한 소프트웨어들은 보안을 강화하여 해킹 공격을 방지하도록 합니다.

  5. 클라우드 서버 아마존 웹 서비스나 구글클라우드 플랫폼에서 리눅스로 서버를 운영할 수 있습니다.

  6. 컨테이너 서버: 서버에서 애플리케이션을 가상화하여 운영할 수 있습니다.

이렇게 다양한 서버를 운영중인 리눅스는 현재 서버 및 네트워크 시스템에서 가장 많이 사용되는 운영체제 중 하나이며, 컴퓨터 시스템 분야에서 리눅스에 대한 이해도는 정말 중요합니다. 

 

리눅스 서버 핵심 키워드


 

Kernel: 커널은 운영체제의 핵심 부분으로, 하드웨어와 소프트웨어 간의 인터페이스 역할을 합니다. 스케줄러, 프로세스,기억장치와 시스템의 자원을 관리하고, 프로세스 간의 통신을 제어합니다. 

Shell: 쉘은 운영체제의 Kernel을 감싸고 있는 인터페이스 층이며, 우리가 명령어를 입력하는 창에서 실행되는 프로그램이라고도 할 수 있습니다. 즉 사용자가 입력한 명령을 해석하고, 해당 명령을 커널에 전달하여 실행하는 역할을 하는 것이 바로 Shell입니다. 실행과 결과의 표시 또한 담당합니다. 

Application: 어플리케이션은 사용자가 직접 상호 작용하는 소프트웨어입니다. 게임, MS Office, Chrome, VSCode를 예로 들 수 있겠습니다. 어플리케이션은 커널의 서비스를 활용하여 작동합니다.

CLI: command line interface로, 명령어를 줄로 입력하여 소통한다는 뜻입니다. 쉘이 가지고 있는 특정 명령어를 통해 운영체제를 컨트롤합니다. 윈도우 안 cmd나 리눅스의 터미널이 대표적인 CLI입니다. 

TUI: text user interface로, 글로 사용자와 소통한다는 뜻을 가집니다. 리눅스 안의 vim 편집기가 대표적입니다. 메모장과 비슷하고, 키보드로만 컨트롤이 가능하며 명령어 사용이 불가합니다.

GUI: graphic user interface로, 그래픽으로 소통한다는 뜻을 가집니다. 키보드와 마우스 모두 사용가능하며, 제일 편하고 직관적입니다. 그럼에도 불구하고 리눅스가 CLI로 동작하는 이유는, 속도가 중요한 서버에서 그래픽은 필요가 없기 때문입니다. 

절대 경로: 루트에서부터 해당 파일 혹은 디렉터리까지의 경로를 나타낸것을 절대 경로라고 합니다. 

상대 경로: .이나 ..같은 현재 디렉터리 기준에서 나타낸 경로를 상대 경로라고 합니다. 

 

 

유닉스 기초 명령어


아래 명령어들은 평생 사용하게 될 유닉스 명령어들이니 미리 친해지시길  추천드립니다. 

 

pwd: 현재 작업 디렉토리의 경로를 출력

ls: 현재 작업 디렉토리에 있는 파일과 디렉토리 목록을 출력합니다. 

cd: 디렉토리를 변경합니다.

touch: 파일을 생성합니다.

rm: 삭제합니다.( rm {file-name-1} {file-name-2} {file-name-3} ... {file-name-N} 가능) 

 

cp: 복사합니다.

mv: 이동하거나 이름을 변경합니다. 

clear: 터미널창을 지웁니다.

mkdir: 디렉토리를 생성합니다. 

rmdir: 디렉토리를 삭제합니다.(비어있는)

vi: 텍스트 편집기로 파일을 엽니다.

nano: 이것도 vi랑 비슷한데, 기능은 vi에 비해서 적습니다. 보통은 간략하게 이걸 많이 씁니다. 

cat: 파일의 내용을 출력합니다.

head: 파일의 처음 일부분을 출력합니다.

tail: 파일의 끝 일부분을 출력합니다.

top: 시스템의 메모리, CPU, 프로세스 정보 등이 실시간으로 화면에 표시됩니다.

htop:  top이랑 비슷한데, 더 그래픽적이고 직관적인 사용자 인터페이스를 제공합니다. 

apt: 패키지를 설치, 업데이트, 삭제 등의 역할을 수행합니다. 

chmod: 파일이나 디렉토리의 권한을 변경하기 위해 사용됩니다.

chown: 소유자나 그룹을 변경하기 위해 사용됩니다. 


실습


  1. 현재 홈 디렉터리에서 하위 디렉터리 하나를 만드세요. 
  2. 그 하위 디렉터리에서 vi를 이용해서 main.py를 만드세요
  3. 입력을 받으면 그 입력대로 출력하는 간단한 프로그램을 만들고 저장하세요. 
  4. 해당 명령어를 실행시키고
  5. 작업했던 폴더를 지워보세요. 

 

풀이


  1. mkdir linux
  2. cd linux
  3. vi(혹은 nano) main.py
  4. 프로그램 작성
  5. python3 main.py로 명령어 실행 (리눅스와 MacOS는 pyton3으로 실행)
  6. main.py 삭제 후 상위 디렉터리로 이동, rmdir linux로 폴더 삭제

 

 

 

 

 

 

 

 

댓글