리눅스 마스터 1급 취득 여정 및 실습
선택한 이유 : 현업에서 실제 운영서버를 노트북, 데스크탑, AWS 등 서버로 리눅스를 보통 쓴다.
목적 : 정보처리기사를 취득하면서 이어서 공부하려고 한다. 특히, 다음과 같은과 같은 부분을 실습하려고 한다.
- 2급 (기초): 리눅스라는 '자동차'를 운전하는 법 (명령어 사용, 파일 관리, 기초 조작)
- 1급 (심화): 자동차의 '엔진'을 뜯어고치고 튜닝하는 법 (서버 구축, 네트워크 설정, 보안, 최적화)
따라서 1급을 공부하시면 2급 내용은 자연스럽게 복습 및 심화 학습이 됩니다.
현업에서 가장 자주 사용하는 '찐' 실습 3가지
서버를 처음 구축하는 단계(DNS, Mail 설정 등)는 사실 한 번 셋팅하면 잘 안 건드립니다. 하지만 개발자나 엔지니어로서 매일 숨 쉬듯이 하게 될 작업은 따로 있습니다.
이 3가지는 자다가 깨워도 할 수 있을 만큼 능숙해져야 합니다.
1. "로그 까보기" (Log Analysis) - 빈도 1위
서버에 문제가 생기면 제일 먼저 하는 말이 "로그 봐봐"입니다.
- 상황: 스프링 부트(Spring Boot) 서버가 500 에러를 뱉거나 죽었을 때.
- 필수 명령어:
- tail -f catalina.out (또는 app.log): 실시간으로 올라오는 로그 확인.
- grep "ERROR" catalina.out: 로그 파일에서 'ERROR'라는 글자가 들어간 줄만 뽑아내기.
- grep -A 10 "Exception" catalina.out: 예외(Exception) 발생 지점부터 아래로 10줄 보기.
- 실습: 의도적으로 에러를 내고 grep으로 원하는 에러 메시지만 딱 찾아내는 연습.
2. "프로세스 & 포트 확인" (Process & Port) - 빈도 2위
"서버 띄웠는데 접속이 안 돼요" 또는 "포트가 충돌 났어요" 할 때 씁니다.
- 상황: 톰캣을 켰는데 이미 8080 포트를 누가 쓰고 있어서 안 켜질 때, 혹은 좀비 프로세스 죽일 때.
- 필수 명령어:
- ps -ef | grep java: 자바 프로세스가 살아있는지 확인.
- netstat -nlp | grep 8080: 8080 포트를 누가 잡고 있는지(PID) 확인.
- kill -9 [PID]: 해당 프로세스 강제 종료.
- 실습: 톰캣을 띄워놓고 터미널에서 프로세스 번호(PID)를 찾아 강제로 죽여보기.
3. "권한 문제 해결" (Permission) - 빈도 3위
리눅스는 권한(Permission)에 매우 엄격합니다. "Permission denied" 에러는 일상입니다.
- 상황: 파일을 업로드했는데 수정이 안 되거나, 쉘 스크립트를 만들었는데 실행이 안 될 때.
- 필수 명령어:
- ls -al: 소유자(User)와 그룹(Group), 권한(rwx) 확인.
- chmod 755 [파일]: 실행 권한 부여 (스크립트 실행 시 필수).
- chown [user]:[group] [파일]: 파일의 주인을 변경 (예: root로 만든 파일을 일반 유저가 쓰게 할 때).
- 실습: root 계정으로 파일을 하나 만들고, 일반 계정으로 로그인해서 그 파일을 수정하거나 지우려고 시도해보기(에러 체험), 그 후 권한을 줘서 성공해보기.
결론: 무엇부터 할까요?
리눅스 마스터 1급의 방대한 서버 설정(DNS, Sendmail 등)도 중요하지만, **현업 투입 직후 당장 욕 안 먹고 일하려면 위 3가지(로그, 프로세스, 권한)**가 훨씬 급하고 중요합니다.
지금 계획 중이신 **'리눅스 서버 구축'**을 진행하시면서, 뭔가 안 될 때마다 구글링보다는 위의 명령어들을 써서 직접 원인을 찾는 습관을 들이시면 실력이 가장 빨리 늡니다.
-- 환결 설정 --
우분투(Ubuntu) 설치, 아주 좋은 선택입니다! 현업에서도 **CentOS(RedHat 계열)**와 **Ubuntu(Debian 계열)**가 양대 산맥인데, 최근에는 AI, 클라우드, 컨테이너(Docker) 환경과의 호환성 때문에 우분투의 점유율이 압도적으로 높아지고 있습니다.
설치가 끝났다면, 이제 'PC'를 '서버'로 만드는 초기 세팅 4단계를 진행해 봅시다. 지금부터는 마우스보다는 **터미널(Terminal, 검은 화면)**을 열고 명령어를 치는 것에 익숙해지셔야 합니다.
[Step 1] 최신 상태로 업데이트 (기본 위생)
설치된 우분투의 패키지들을 최신 버전으로 맞춰줍니다. 보안 패치와 버그 수정이 포함되어 있어 서버 구축 전 필수 과정입니다.
- 터미널 명령어:
-
Bash
sudo apt update # 설치 가능한 패키지 목록 갱신 sudo apt upgrade -y # 실제 프로그램들 최신 버전으로 업그레이드
[Step 2] SSH 원격 접속 설정 (현업 필수)
서버실에 들어가서 모니터를 보고 작업하는 엔지니어는 없습니다. 내 자리(혹은 카페)에서 원격으로 접속해야 진정한 서버입니다.
- SSH 서버 설치:
-
Bash
sudo apt install openssh-server -y - 서비스 실행 확인:
-
Bash
sudo systemctl status ssh # 초록색으로 'active (running)'이라고 뜨면 성공입니다. - 내 아이피(IP) 확인:
-
Bash
ip addr # 'inet' 뒤에 나오는 숫자(예: 192.168.0.x)가 이 서버의 주소입니다. # 이 주소를 메모해두세요.
[Step 3] 방화벽(UFW) 기초 설정 (보안)
리눅스 마스터 1급에서는 iptables를 배우지만, 실무(특히 우분투)에서는 관리가 쉬운 ufw(Uncomplicated Firewall)를 주로 씁니다. 문을 잠그는 작업입니다.
- SSH 포트(22번) 열기 (이거 안 열고 방화벽 켜면 접속 못 해서 서버 밀어야 할 수도 있음!):
-
Bash
sudo ufw allow 22/tcp - 방화벽 활성화:
-
Bash
sudo ufw enable # 'Command may disrupt existing ssh connections...' 경고가 나오면 y 입력 - 상태 확인:
-
Bash
sudo ufw status # 22/tcp ALLOW ... 형태로 보이면 성공.
[Step 4] 외부에서 접속해보기 (첫 번째 성취감)
이제 우분투 서버의 모니터를 끄거나 멀리 두세요. 지금 사용 중인 윈도우(또는 맥) PC에서 접속해 봅니다.
- 도구: PowerShell, CMD, 혹은 Putty, MobaXterm 등
- 명령어:
-
Bash
ssh [우분투계정명]@[아까메모한IP주소] # 예: ssh user1@192.168.0.15 - Are you sure you want to continue connecting? -> yes 입력
- 비밀번호 입력 후 접속되면 1차 서버 구축 성공입니다.
다음 단계 제안
여기까지 되셨나요? 이제 이 서버는 네트워크상에 존재하는 진짜 '서버'가 되었습니다.
다음으로 무엇을 먼저 해보고 싶으신가요?
- "웹 서버 띄우기": Nginx를 설치해서 브라우저로 내 서버 IP를 쳤을 때 웹사이트가 뜨게 해보고 싶다.
- "파일 전송하기": FTP(SFTP)를 설정해서 내 PC의 파일을 서버로 옮겨보고 싶다.
- "고정 IP 설정": 서버 껐다 켜도 IP가 안 바뀌게(현재는 바뀔 수 있음) 설정하고 싶다. (리눅스 마스터 1급 단골 문제)