Linux & Linux 공부 road map
리눅스
- 다중 사용자, 다중 작업(멀티 태스킹), 다중 스레드 지원 네트워크 운영체제(NOS).
- 여러 사람이 하나의 리눅스 시스템에 접속, 다수의 프로그램을 동시에 실행할 수 있다.
- 무료
-> 때문에 서버로 사용하기 딱 알맞다.
(다수의 사용자에 대한 접근 통제, 권한 관리 등의 보안수칙도 지켜져야
원활한 서비스가 가능하다.)
- GNU
- Copyleft
유닉스
- 유료
- 독점적, 폐쇄적 운영으로 인한 안정성 보장
(버그 발생시 벤더에서 해결해주기 전까진 해결하기 어려움) - 전체적인 점유율이 떨어짐
- But, 금융권&대기업은 유닉스를 많이 사용함.
(오래전부터 안정적으로 운영해온 전산망인데
리스크를 떠안고 리눅스 운영체제로 마이그레이션 하기 위험함)
0. 사용하는 리눅스 OS의 CLI 명령어들을 익히는 것.
리눅스로 프로젝트를 관리하거나
서버로 리눅스를 사용한다면
당장 회사의 프로젝트에서 자주 쓰이는 명령어들을 위주로 익혀놓자.
EX)
기본 시스템 명령어 + 패키지의 명령어들로
이미지를 배포, 수정함으로써 CI/CD를 수행한다.
IaC가 도입된 프로젝트 및 회사라면 관련 서비스의 IaC 문서 명세를 알아두자.
- Apache, NginX, DBMS(postgre, mysql 등), JDK를 설치하여 WAR 로 배포
- 또는 docker 이미지로 배포
- APM(Apache-Php-mysql )구축하거나 MERN같은
필요 기술스택에 맞게 똑같이 구성한 뒤 배포해보자.
회사에서 쓰고 있는 프레임웍을 vm에 centOS나 ubuntu 설치하고
똑같이 클론코딩 해보면 좋을듯.
EX)
기능 개발을 중심으로 하는 직무의 경우
딱히 생각나는 브랜치 관리 전략이 없을 경우
Git-flow나 Gitlab flow 등의 전략들을 차용한 뒤 수정할 것.
- Git, 소스트리를 통한 코드 관리 전략
1. 시스템 관리법
1.1 리눅스에 TOMCAT, MYSQL, JDK 등 설치해서 WAR배포할 수 있는 노하우.
1.2 로그보는 법,
- tail 걸어놓고 보기
- vi 에디터 명령어
- 파일다루는 명령어
1.3 프로세스 찾기, 포트 열렸나 확인하기, 프로세스 죽이기, 파일찾기
프로세스 권한에 대한 이해, 디스크 마운트시의 권한
1.4 ftp서버 설치하기
1.5 개발서버로 세팅하기.(svn, git, 이중화 구성, 로드벨런싱, 배포스크립트 등)
1.6 cron tab을 이용한 배치 프로세스 등록
1.7 메일서버 세팅
1.8 외부 해킹 방어하기, 내부 권한 설정(사용자 권한, 그룹 권한 설정)
1.9 방화벽 설정하기, DNS 설정.
위 내용은 리눅스는 어떻게 공부해야되나요? Okky 개발자 커뮤니티 글을 참고했습니다.
2. 리눅스 커널 공부
https://github.com/torvalds/linux
https://github.com/wikibook/linux-kernel
하드웨어위에서 응용프로그램이 돌아가게 컨트롤하는 것은 OS이며
커널은 하드웨어와 프로세스를 잇는 핵심 인터페이스이다.
리눅스 자체를 알아가기 위해서는 하드웨어 지식도 필요하며,
여러 교재의 Aid 및 가이드라인을 참조해야할 것 같다.
일반적인 프로그래밍 언어 Library의 class들을 이해하는 것과는 차원이 다른 난이도다.
이 링크에 리눅스 커널 개발에 대한 안내서가 나와 있다.
https://01.org/linuxgraphics/gfx-docs/drm/translations/ko_KR/howto.html
댓글
댓글 쓰기