👨학습 목표: Linux의 개념과 명령어를 알아보고 서버를 실행시켜보자.
Operating System의 약자로, 운영체제를 뜻한다. 운영체제는 하드웨어를 관리하고 응용 소프트웨어를 실행시키는 '시스템 소프트웨어'이다.
운영체제에는 여러가지가 있지만 우리가 아는 대표적인 OS로는 네가지를 들 수 있다.
window linux Unix Mac
이렇게 네가지를 들 수 있다.
window는 gui즉 graphic user interface를 가진 운영체제이다. 그래서 사용자들이 쓰기 편하게끔 디자인되어서 가정용 컴퓨터의 시대를 앞당긴 운영체제이다. 프로그램 파일을여는것도 명령어를 입력하는 것이 아닌 마우스의 클릭만으로 파일을 실행시킬 수 있게하였다. 컴퓨터에 대한 지식이 없이 사람들이 컴퓨터를 쉽게 이용할 수 잇도록 하는 것이다.
반면에 GUI엔진이 메모리가 잡아먹어서 컴퓨터의 성능이 저하된 채로 쓰게 되는 큰 단점이 있다.
벨 연구소에서 개발한 운영체제로 Linux, android, macOS 등 많은 운영체제들의 뿌리가 되었다.
Apple에서 만든 유닉스 계열 운영체제이다. Unix
Linux 또한 Linux 커널을 사용하는 Unix 기반 운영체제이다. chorme 및 android가 Linux 커널을 이용한 프로그램이다. freeware이기에 무료로 사용할 수 있다. window보다 더 쾌적하게 이용할 수 있지만 CLI(Command Line Interface)이기에 컴퓨터에 대한 지식이 없는 일반인들이 이용하기에는 힘들다.
소프트웨어가 잘 작동되도록 하는 것.
우리는 지금 리눅스 운영체제로 컴퓨터를 사용하려는 것이 아니라 목적이 Linux를 배우는 것이기에 윈도우 환경에서 Linux를 깔아보자.
이 블로그에 설치하는 방법이 잘 나온다.
shell script
정확한 시간에 키고 끄고를 사람이 하는 것이 아니라 컴퓨터로 하게 하는 것.
특정시간에 특정 작업을 할 수 있도록 하는 프로그램.
기본 디렉토리로 이동시키는 명령어
보통 작업을 할 때 먼저 $ cd ~
을 입력해서 기본 디렉토리로 이동해서 작업하는 것을 추천한다.
명령어 옵션 -
명령어에 -를 붙이는 경우가 많다. ls -al 처럼 말이다. 이러한 명령어의 옵션을 알아보려면 [명령어] --help를 입력하면 그 명령어에 해당하는 옵션들이 출력이 된다.
[명령어] -[옵션]
[명령어1] | [명령어2] 형태로 쓰는데,
명령어 1의 결과를 가지고 명령어 2를 실행시키는 것이다.
[명령어1] | [명령어2] | [명령어3] 이렇게 여러번 쓰는 경우도 가능하다.
grep: 검색하는 기능을 한다.
$ ps -ef | grep node
위의 경우에는 프로세스들을 보여주고, 그 안에서 node라는 것이 있는지 검색을 한다.
결과물을 바로 보여준다. 파일 내용 출력하는 명령어라고 보면 된다. 이것은 vi server.js라고 들어가서 내용물을 확인하고 다시 :q!라고 쓰고 vim 편집기를 빠져나오는 귀찮음을 덜어준다.
파일의 이동과 이름을 바꾸는 것을 담당한다. 리눅스에는 이름 바꾸기 기능을하는 명령어가 존재하지 않아서 파일명을 변경하고 싶을 때는이동하는 이 명령어를 이용한다.
$ mv [파일위치(자신 포함)] [옮길 파일 위치(자신 포함)]
test.txt파일 옮기는 과정
mkdir sample
을 통해 sample이라는 디렉토리(폴더)를 만든다. 그 후에 mv명령어를 통해 옮겨준다.
mv명령어를 통해서 파일명을 수정해보자.
mv [현재 파일 위치(자신 포함)] [현재 파일 위치(바꾸고 싶은 파일명으로)]
이렇게하여 test.txt파일이 test2.txt파일으로 파일명이 변경되었다.
용법: > or <
결과물을 받아서 파일로 남기는 명령어이다. 보통 cat과 결합해서 많이 쓰는데 로그를 남길때 많이 쓰곤 한다. 새로운 파일을 만든다.
test.txt라는 파일이 새로 만들어졌다.
만일 에러가 난다면 다음과 같이 에러나는 결과를 받아 저장할 수 있다.
apt: 리눅스의 package manager
apt-get:설치하는 것임
htop
ps-ef내용을 보여주는 것임.
linux환경에서 인터넷 접속은 페이지를 보여줄 수 없을 뿐 가능은 하다. ^^;
curl http://google.com
curl [url]
인터넷 url을 설치할 때 $ curl -O [url]
을 입력해주면 된다.
curl -O
다음과 같이 하여서 http://ingoos.co.kr/index.html 을 다운받았다. 그래서 $ ls
를 치면 index.html이 새로 생성된 것을 알 수 있다.
$sudo apt-get update
명령어를 통해 최신으로 업데이트를 해준다.
패키지 인덱스 인덱스 정보를 업데이트 : apt-get은 인덱스를 가지고 있는데 이 인덱스는 /etc/apt/sources.list에 있습니다. 이곳에 저장된 저장소에서 사용할 패키지의 정보를 얻습니다.
출처:https://blog.outsider.ne.kr/346
$sudo apt-get install -y build-essential
둘 다 시간이 걸린다.
-y 옵션은 질문에 모두 yes를 선택하겠다는 의미이다.
build-essential: 소스코드 빌드 시 필요한 기본적인 패키지들을 다운로드 합니다.설치 후에는 gcc, g++, make, perl 등과 각종 라이브러리들이 설치됩니다.
이것을 실행하는 위치는 디렉토리에 상관이 없다.
그러나 보통 cd ~하는 것을 추천한다.
$ sudo apt-get install curl
Curl:Client url
서버와 통신할 수 있는 커맨드 툴이다. 보통 설치되어 있다.
이것으로 Restful API도 사용할 수 있다.
$ curl -sL http://deb.nodesource.com/setup_14.x | sudo -E bash --
node소스를 다운받는다. 여기서 -sL이라는 옵션이 붙는데 이에 대해 알아보자.
-s는 에러가 나면 에러를 보여주는 것이고
-L은 만약 링크가 다른 주소로 바뀌었을 때 그 다른 주소로 다시 가게하는 옵션이다.
$ sudo apt-get install -y node.js
위의 명령어는 node.js를 설치하는 명령어이다.
❓왜 다시 node.js를 설치하나요? 윈도우에 이미 설치되어 있어요!
😀이미 윈도우에 node.js가 깔렸는데도 다시 설치하는 이유는 window와 linux는 다른 운영체제이기에 재설치하는 것입니다. 윈도우 환경에서 돌아가는 linux는 결국 가상머신이라고 보면 됩니다. 하나의 컴퓨터를 다른 큼퓨터로 인식하게 하는 것입니다. 하나의 컴퓨터로 두대의 컴퓨터를 돌린다고 보면 되는 것입니다.
이를 실행시키고 설치가 끝났으면 node가 제대로 깔렸는지, npm이 제대로 깔렸는지 다음 명령어를 통해 확인한다.
$ node -v
$ npm -v
$ cd ~
$ mkdir server
$ cd server
$ npm init
$ cd ~
명령어를 통해 루트 디렉토리로 들어가서 $mkdir server
명령어를 통해 server폴더를 만든다. 그리고 server폴더 안에서 $ npm init
을 통해 package.json파일을 만들어준다.
그리고 웹서버를 실행시키기 위해 express를 깔아준다.
$ npm install express
그리고 $ vi server.js
를 입력하여 server.js파일을 만들고 다음과 같이 편집한다.
$ netstat -na
명령어 뒤에 -붙으면 옵션이다.
$ sudo apt-get install net-tools
ubuntu를 깔게되면 최소프로그램만 설치되어있어 네트워크툴인 net-tools가 설치되어있지 않기에 위와 같은 명령어를 입력하여 깔아준다.
그리고나서
node server.js &
를 통해 server.js를 백그라운드로 실행시킨다.
혹시 이를 종료하고 싶다면
$ ps -ef | grep node
와 같이 입력하여 PID값을 알아내어서
$ sudo kill -9 [PID]
와 같이 입력하면 된다.
과정
1. 제어판으로 들어간다.
2. 'Windows Defender 방화벽'으로 들어간다.
3. 왼쪽 메뉴들에 있는 '고급 설정'을 클릭한다.
4. 왼쪽 메뉴의 인바운드 규칙을 클릭한다.
5. 오른쪽 '작업'메뉴의 '인바운드 규칙'에 속해있는 '새규칙'을 클릭한다.
6. '포트'를 선택하고 3000번을 입력하고 이름을 정해준다.
netstat -na