터미널과 서버
터미널(Terminal)
우리가 컴퓨터를 사용하는 방식은 보통 Window 기준으로 사용자가 마우스를 이용해서 window 운영체제를 거쳐 명령을 내리고 하드웨어를 거쳐 처리한후 다시 사용자가 결과를 받는다.
이때 마우스를 쉘(shell)이라 할 수 있다. 그럼 터미널(terminal)은 인풋과 아웃풋의 역할만 하는 것이다. OS랑 직접 통신을 할 수 있게 해준다.
터미널(terminal)에는 다양한 명령어들이 존재한다. 아래의 명령어들은 리눅스(linux)를 기준으로 한다.
명령어
- ls : 현재 디렉토리의 파일 목록을 출력한다.
- a : 숨긴 파일을 포함해서 보여준다.
- l : 자세한 파일 정보를 함께 보여준다.
- cd : 디렉토리를 이동한다.
- pwd : 현재 경로를 보여준다.
- rm : 파일이나 디렉토리를 삭제한다.
- cp : 파일이나 디렉토리를 복사한다.
- touch : 새로운 파일을 생성하거나, 이미 파일이 존재한다면 최종 수정 시간을 현재 시간으로 변경한다.
- mv : 이름을 변경하거나 다른 디렉토리로 이동시킨다.
- mkdir : 새로운 디렉토리를 생성한다.
- rmdir : 디렉토리를 삭제한다.
- cat : 파일 내용을 보여준다. 여러 파일의 내용을 연결해서 볼 수도 있다.
- grep : 입력으로 전달된 파일의 내용에서 특정 문자열을 찾고자할 때 사용하는 명령어다.
- history 1 : 터미널에서 사용한 명령어 기록을 보여준다. 사용하고 싶은 명령어를 !해당번호 를 입력한다.
- head, tail : 파일의 앞 10행 또는 끝 10행을 보여준다.
- more, less : 텍스트 형식의 파일을 페이지 단위로 보여준다.
- file : 파일의 종류를 보여준다.
- clear : 터미널 화면을 정리한다.
- mount : 특정 장치를 마운트한다.
- umount : 마운트를 해제한다.
- tar : 파일을 압축하거나 압축을 해제할 때 사용한다.
- c : 파일을 tar로 묶는다.
- f : 압축할 파일을 지정한다.
- x : 압축을 해제한다.
- z : gzip으로 압축한다.
- t : tar로 압축된 내용을 확인한다.
- p : 파일 권한을 저장한다.
- v : 처리 과정을 자세히 보여준다.
- C : 경로를 지정한다.
- halt -p, poweroff, shutdown -P now : 시스템을 종료한다.
- reboot, shutdown -r now : 시스템을 재부팅한다.
- chmod {모드} {파일/디렉토리 명} : user/group/other 세 가지에 대해 각각 권한을 설정할 수 있다.
구글에 'Linux commands cheat sheet'로 검색해보면 명령어들이 잘 정리된 자료가 잔뜩 나온다.
아니면 터미널 내부에서 man <명령어> 를 입력하면 명령어에 대한 도움말을, <명령어> --help를 사용하면 해당 명령어의 옵션을 확인할 수 있다.
vi 에디터
윈도우엔 '메모장'이라는 앱이 기본적으로 설치되어 있다. 간단한 텍스트 파일을 여기서 편집할 수 있다.
vi 에디터는 리눅스에서 사용할 수 있는 텍스트 기반의 편집기로, 터미널에서 각종 텍스트 문서를 편집할 수 있다.
vi <파일명> 명령어로 실행을, **:wq**로 저장/종료가 가능하다.(w - 저장, q - 종료)
서버접속(실습)
- 서버는 AWS(아마존 EC2 서비스)를 이용한다.
- 인스턴스(서버)를 생성한다.
- 가상서버 OS를 선택한다. (아마존 리눅스)
- t2.micro를 선택한다.
- 방화벽을 선택한다.
- 키 페어를 선택한다. (RSA 방식)
- 원격으로 키젠을 생성한다.
- 여기서 우리가 가지고 있는 키는 서버 접속에 필요한 Privite 키다.
- Privite 키를 가지고 서버와 통신을 할 수 있다.
- 퍼블릭 IP주소와 프라이빗 IP 주소 생성된다. 이때 퍼블릭 IP주소는 고정IP가 아니다.
- 다운로드 받은 Privite 키를 특정위치에 잘 보관한다. (ssh-keygen 설정법)
ssh -i ~/Privite 키 위치/Privite 키 이름/ 원격서버유저이름@IP주소 를 입력하여 서버에 접속한다.
===============================================================================
ex) ssh -i ~/develop/TEST.pem ec2-user@127.0.0.0
- 웹 서버에 필요한 node 를 설치한다.
- 새로운 디렉토리를 생성한다. mkdir 디렉토리명 → 생성한 디렉토리로 이동한다.
- npm init 명령어를 이용하여 package.json을 설치한다.
- 서버에 필요한 node 중 express를 설치한다. npm install express
- 디렉토리에 파일하나를 생성한 후 vi 에디터를 이용하여 코드를 작성해준다.
const express = require('express') --> express를 사용하겠다.
const app = express() --> 새로운 인스턴스를 생성하겠다.
const port = 3000 --> 3000번 포트를 사용하겠다.
app.get('/', (req, res) => {
res.send('Hello World!')
})
--> 받을 해시 주소(?), 실행될 함수(?)
app.listen(port, () => {
console.log(`Example app listening at <http://localhost>:${port}`)
})
--> 포트를 연 다음 리스닝하고 있는다.
- 그런 다음 ip주소 + 포트 를 작성하여 브라우저로 접속한다. ex) http://127.0.0.0:3000
- 만일 터미널을 닫아 서버가 닫히는 경우를 방지하기 위해 다양한 demon화 방법이 있다.
- 첫번째 방법으론 백그라운드화 시키는 방법이 있지만 오류가 생겨 닫히면 수동으로 다시 서버를 열어야 한다.
- 두번째 방법으로 pm2 를 사용하는 방법이 있다. npm install pm2 를 설치한다. 그 후 실행한다. (.bin 폴더) (sudo ?)
- 세번째 방법으로는 forever 방법도 있지만, pm2 방법을 주로 사용한다.
notion : https://noyclah.notion.site/5fa41aa9940f47849561513c04ae9b2c
'공부 > 네트워크 관련' 카테고리의 다른 글
Git 다양한 상황에 따른 해결방법 (0) | 2022.06.02 |
---|---|
암호화 / 복호화 (0) | 2022.06.01 |
Git(깃) (0) | 2022.06.01 |
Process 와 Thread (0) | 2022.06.01 |
OSI 7계층과 TCP/IP (0) | 2022.06.01 |
댓글
이 글 공유하기
다른 글
-
Git 다양한 상황에 따른 해결방법
Git 다양한 상황에 따른 해결방법
2022.06.02 -
암호화 / 복호화
암호화 / 복호화
2022.06.01 -
Git(깃)
Git(깃)
2022.06.01 -
Process 와 Thread
Process 와 Thread
2022.06.01