[Chapter1] 리눅스의 추억(feat. 막힘없이 실무까지)
본 포스팅은 2020년에 작성했던 포스팅입니다, blog를 이관하게 되어 포스팅 하였습니다.
※ 아래 포스팅은 제가 수강하였던 동영상 강의, 각종 블로그 혹은 공식 홈페이지에서 습득한 자료들 제 나름대로 재구성하여 포스팅 한 자료입니다. 잘못된 내용이 있을 수도 있습니다. 최대한 글 읽으시는 시간이 헛되지 않게 검토하여 올리겠습니다. 편하게, 재미있게 제 글을 읽어주셨으면 좋겠습니다. 틀린 부분이 있으면 댓글이나 메일 주시면 수정하여 놓겠습니다. 제 글을 읽어주셔서 감사합니다^^

- 목차 -
Chapter1. 리눅스 맛보기
Chapter2. 리눅스 활용하기
Chapter3. 리눅스 개발 및 운영하기
(1) 리눅스에 대한 잡설 및 소개, 서버 개발자로 취직을 준비하며 리눅스부터 시작하려는 이유
안녕하세요? great saiyaman입니다.
저는 4년 정도 잡부 개발자로 일해왔습니다(클라이언트 개발자에 가깝죠).
초반의 2년은 Html + Css + javascript(Jquery)로 프론트 개발+ php로 서버 개발을 맡았고 그 이후의 2년은 Vue와 Nuxt(Vue로 SSR을 구현할 수 있게 도와주는 framework)로 프론트 개발을 맡아왔습니다.
이때 프론트 개발 실력이 좀 늘었었죠.
반대로 서버 개발은 거의 까먹다시피 했습니다.
왜 까먹었을까요? 취미로라도 계속했으면 안 까먹었을 텐데 말이죠.
...그렇습니다. 취미로 삼지 못 했던 것입니다. 집에 와서 게으르게 공부 안 하고 퍼져있었던 것입니다.
왜 공부를 안 하게 됐을까요? 서버 개발을 왜 손놓게 됐을까요? 왜 게을러진 걸까요??
서버단 개발을 할 때마다 무언가가 불편하고 익숙하지 않은 느낌이 있었습니다. 바로 '그녀석' 때문입니다.

Linux의 마스코트 '그녀석'
CLI 창만 틀면 일이 진행이 되지 않았습니다.
처음에는 단순히 Spring framework를 몰라서, 혹은 PHP의 라라벨 framework를 몰라서라고 생각했습니다.
물론 그것도 문제입니다만 그전에 더 큰 문제는 윈도우를 애기시절(?)부터 사용해온 제가 리눅스를 제대로 다룰 리가 만무하다는 것입니다.
진짜 모르는 사람은 뭘 모르는지 모릅니다.
그리고 주변에서는 필요할 때마다 찾아서 보면 된다는 시니어 개발자분들의 말만 듣고 공부를 소홀히 하게 됩니다.
그분들은 저를 배려해 주셔서 모를 때마다 찾아봐도 된다고 하였지만, 너무 모르면 골짜지식을 먼저 공부한다는 것을 알게 되었죠. 뿌리가 단단해야 좋은 나무로 성장할 수 있다고 생각이 드는 요즈음입니다. 우연히 공부할 시간을 얻게 되었고 시간은 돈보다 중요하기에 늦은 감이 있지만 리눅스부터 다시 공부하기 위해서 이 시리즈를 연재하기로 마음먹었습니다. 서버 개발을 다시 시작하기 위해지녀야 하는 역량은 수도 없이 많다고 생각합니다.
가장 먼저 거론되는 자료구조 알고리즘, 그 뒤에 한국에서는 서버 개발하려면 언어로써는 Java와 프레임워크로써는 Spring을 하라고 합니다. 이러한 것들을 하고 나면 AWS 환경에서 배포를 하게 되는데 AWS를 다루다 보면 뭔가 버벅대게 되는 자신을 보게 됩니다. 왜 그런 걸까요? 그렇습니다 '그녀석'의 괴롭힘이 시작된 것입니다. '그녀석'은 영원히 잡을 수 없지만 개발자로 살아남으려면 항상 '그녀석'을 쫓아야 합니다.

위키백과에 있는 글 긁어다가 여기에 포스팅해놓으면 재미없게 읽으실게 뻔하기 때문에 여기저기서 얻은 정보를 나름대로 재구성하여 적어보겠습니다.
(2) 리눅스에 대한 대략적인 설명
(2)-1. 리눅스는 리눅스 토발즈에 의해 개발된 운영체제입니다
(2)-2. 운영체제는 응용 소프트웨어를 실행하기 위해서, 하드웨어 추상화 플랫폼과 공통시스템 서비스를 제공하는 system softwere입니다.
(2)-3. 통계는 해석하는 사람에 의해서 다양한 관점에서 재해석 될 수 있다고 생각하여 통계자료는 따로 첨부하지 않겠습니다.
(2)-4. 삼성의 스마트폰이나, 안드로이드 운영체제 또한 리눅스 커널 위에서 구동됩니다. 개발자분들 중에서는 이런 것들을 모르시는 분은 없겠지만 이 글을 읽으시는 분은 반드시 개발자분들은 아닐 테니 혹시나 해서 적었습니다.
(2)-5. 리눅스는 리눅스 토발즈에 의해 1969년에 개발된 운영체제입니다. 당시 Minix 운영체제를 토발즈가 표방하여 만들게 된 운영체제입니다. 지금 현재 TV, 셋톱박스, 게임 콘솔, 스마트워치 등 윈도 운영체제를 탑재하지 않은 거의 대부분의 하드웨어에서 사용된다고 봐도 무방합니다. Linux로 할 수 있는 일은 무궁무진합니다.
(2)-6. 리눅스 운영체제의 종류
(2)-6-1.대비안 계열
대표 파생 유형: Ubuntu, Konoppix, Lindox, Mint, Kali Linux
패키지 관리자: dpkg, apt
특징: "데비안 선언문" - 상업적 시장에서 경쟁 가능한 비상업적 배포판을 만드는 것 GNU 프로젝트의 지원을 받아만들어졌습니다.
데비안 계열의 특징: "전 세계 사람이라면 누구나 어렵지 않게 LINUX를 사용하자"라는 목적으로 탄생하였습니다.
*가끔 google에 돌아다니는 apt-get 명령어를 보셨을 것입니다. ubuntu 계열의 리눅스에서 무언가를 다운로드하려면 apt-get install 명령어를 실행해야 하고 그것에 관련된 예제를 보셨던 겁니다.
(2)-6-2.레드헷 계열
대표 파생 유형: RHEL, Redora, CentOS
패키지 관리자: rpm, yum
레드헷 계열의 특징: 서버 운영체제의 강자, 유료(RHEL) 및 무료(CentOS)
(2)-7. 운영체제는 OS는 하드웨어 관리뿐만 아니라 운영 소프트웨어를 실행하기 위해서 하드웨어 추상화 플랫폼과 공통 서비스를 제공하는 시스템 소프트웨어입니다.
(2)-8. 시스템 소프트웨어는 운영프로그램 구동, 입출력 시스템, 메모리 관리, 프로세스 관리 등을 합니다
(2)-9. 시스템 커널은 시스템의 모든 것을 통제하는 프로그램을 커널이라고 합니다.
리눅스에 대한 대략적인 설명은 이 정도로 하고 다음 시간부터는 리눅스를 연습해보기 위한 환경을 구축해보도록 하겠습니다.
감사합니다!