폴더에 읽기 및 편집 권한을 준다. (하위 폴더까지)

chown {소유권자}:{그룹식별자} {소유권을 변경하고 싶은 디렉토리명}
chown -R root:root test

 

리눅스 명령어를 정리해보자.

분류
명령어
설명
관리자 권한으로 실행
$ sudo
super user
  1. 관리자만 읽을 수 있는 파일 읽기
  2. 새로운 프로그램 설치(ubuntu)
기본 명령어
$ ls
list
파일 보기
$ al
all
파일의 세부내용 확인
$ cd
change directory
디렉토리 이동
$ pwd
print working directory
현재 디렉토리 경로 확인
$ cd ~
홈 디렉토리 이동
$ cd /
루트 디렉토리 이동
$ cd .
현재 디렉토리
$ cd ..
부모 디렉토리 이동
$ clear
터미널 정보 지워줌
$ touch [file_name]
빈 파일을 만듬
$ mkdir [dir_name]
make directory
빈 폴더를 만듬
$ cat [file_name]
concatenate
텍스트 형태 파일 확인
$ mv [file or dic name]
[target_dir_name]
move
파일 또는 디렉토리 위치 옮기기
$ mv [file or dic name]
[new file name]
파일 및 디렉토리 이름 변경
$ cp [file][target_dir_name]
copy
복사
$ cp -r [folder_name]
all copy
하위폴더 및 파일
까지 복사
삭제 관련
$ rm [file_name]
remove
파일 삭제
$ rm -r [dir_name]
remove
폴더 삭제
$ rm -rf [dir_name]
no question remove
삭제할 때 경고창 생략 삭제
파일 소유권 변경
$ chown -R root:root [file_name OR dir_name]
change owner
파일 소유권 변경,
-R을 추가할 경우
하위 폴더 및 파일까지 소유권이 변경됌
GUI 프로그램 실행
$ explorer .
현재 폴더를 window 관리자에서 보기
$ open .
현재 폴더를 macOS finder에서 보기
$ code .
현재 폴더를 VS Code 에디터로 열기

추가적으로 더 발생하면 적어주자

 

CentOS에 Node.js 설치를 해야되는데, 버전에 민감하지 않다면

관리자 권한 기준으로 터미널에

라고 입력하면

nodejs 와 npm 이 같이 설치 된다.

이렇게 나오면 성공!

근데 너무 버전을 신경쓰지 않았던 걸까?

버전이 낮아 npm 명령어가 실행 안되는 부분이 있어

node.js 를 재설치 했다.

내가 원하는 버전은 16버전이라, 다시 세팅했다.

일단 버전을 확인하고 npm의 캐시를 싹 삭제하자.

그리고 현재 깔려있는 node.js 와 npm을 삭제한다.

curl -fsSL https://rpm.nodesource.com/setup_16.x | bash -

아래의 url을 참고하여 원하는 버전의 nodejs 버전을 curl 을 통해 세팅한다.

github.com/nodesource/distributions/blob/master/README.md

 

그리고, 아래와 같이 명령어를 작성하면...!

끝으로 node -v와 npm -v를 통해 버전을 확인하면,

원하는 버전이 세팅되어 있다.

우분투의 경우 npm은 같이 설치 되지 않던데

왜 그런걸까? 나중에 알아보기로 하자

오라클 프리티어를 이용하여 인스턴스를 만들면,

CentOS의 경우 OPC 라는 username 을 받게되는데 사실 이건 root 계정이 아니다.

처음 설정할 때 대부분 root 권한이 있어야 설정하기가 매우 간편한데,

우리는 인스턴스를 만들 때 root 에 대한 비밀번호를 입력한 적이 없을 것이므로 입력할 수단이 없다.

그래서 root 계정의 비밀번호를 새로 만들어줘야 하는데,

터미널에서

sudo passwd root

를 실행하고 비밀번호를 입력 및 저장한 다음에

su root

를 입력하고 비밀번호를 입력하면

root 계정으로 접근할 수 있다.

지난 포스팅에서 고정 IP 설정까지 끝내봤다.

2025.02.12 - [서버] - [서버] 오라클 클라우드 프리티어-02(feat.고정 IP 설정)

이제 이 서버를 외부에서 접근하여 서비스를 이용하게끔 처리하려면,

오라클 클라우드에서 수신 규칙을 추가해야 한다.

그 과정을 시작해보자.

오라클 인스턴스 내 기본 VNIC

위의 서브넷 링크를 클릭한다.

다음과 같이 나오는데, 보안 목록을 따로 추가할 필요없이

인스턴스를 생성할 때 기본 보안 목록이 들어갔을 것이다.

이름을 클릭한다.

수신 규칙

클릭하면 수신규칙 목록을 확인할 수 있는 화면으로 이동하게 되는데,

기본 22번 포트와 ICMP만 개방되어 있으나 필자는 미리 수신규칙을 추가해놔서

하단의 80포트와 443포트도 보이는 것이다.

수신 규칙 버튼을 클릭하여 외부에 개방하고 싶은 포트를 입력한다.

수신 규칙 추가 화면 - 소스 포트범위는 적지 않는다.

외부에서 접근할 때는 포트를 서버에서 할당해주기 때문에, (클라이언트)

소스 포트 범위는 따로 적지 않는다.

다만 오른쪽의 대상 포트 범위는 서버의 포트 범위 이기 때문에,

입력을 하는 데 단일포트만 입력해도 좋고 포트 범위를 입력해도 좋으나

필자는 단일 포트로 입력했다.

그 이후 하단의 수신 규칙 추가 버튼을 클릭한다.

자 이제 외부에서 접근할 수 있는 1차 관문은 끝났다.

그러나 이게 다가 아니다.

왜냐하면 리눅스 자체 방화벽이 있기 때문에 접근할 수 있는 포트를

방화벽 해제 해주어야 한다.

지금부터는 centos 와 우분투에 따라 문법이 다르기 때문에,

한가지를 선택해서 글을 남기는데,

필자는 CentOS를 선호하기 때문에 CentOS기준으로 해보자.

상식적으로 서버에서 몇개의 포트를 오픈하자고 방화벽을 전부 꺼버리면

보안에 취약하기 때문에 사용할 포트만 방화벽을 해제하고 사용하는 것이 중요하다.

  1. 특정 포트 방화벽 추가

sudo firewall-cmd --permanent --add-port=80/tcp

cmd는 firewall 의 명령어라는 뜻이고

permanent 는 영구적으로 방화벽에 추가하겠다는 뜻이다.

add는 추가하겠다는 뜻이다.

만약 root 권한으로 접근했을 때는 sudo를 뺴고 입력해도 무방하다.

2. 특정 포트 방화벽 해제

sudo firewall-cmd --permanent --remove-port=80/tcp

위와 달리 방화벽에서 해당 포트를 삭제하겠다는 의미이며,

이것을 해야 외부에서 접근이 가능해진다.

더 많고 자세한 부분은 이분의 블로그를 참고바랍니다.

https://uxgjs.tistory.com/162

이것으로 외부에서 접근 가능한 최소한의 조치는 끝났다.

상황에 따라 개발자들이 서버의 튜닝이 필요할 때 지속적으로 해야 한다.

다음 포스팅에서는 SSH 로 접근 가능할 수 있도록

리눅스 및 윈도우 환경에서 SSH KEY를 만들어 접근하는 방법을 알아보겠다.

지난시간에 오라클 클라우드 홈페이지에서 프리티어로 인스턴스를

만들었다.

이제 인스턴스 만든 것을 설정을 해보자.

연결된 VNIC

인스턴스를 만들고 좌측 하단의 연결된 VNIC 버튼을 클릭하면

해당 하는 리스트가 나오게 되는데 이름쪽에 인스턴스의 이름을 클릭한다.

IP 주소 확인

이동하고 나서 좌측 하단의 리소스에서 IPv4 주소 버튼을 클릭하면 중앙에

IPv4 주소 리스트가 나오는데, 자세히 보면 공용 IP주소가 현재는 할당되지 않았다.

왜냐하면 전에 포스팅한 것을 참고하면, 인스턴스를 만들때 공용IP할당을 하지 않았기 때문이다.

이제 오른쪽의 설정버튼을 눌러 편집버튼을 클릭하자.

자 우리는 예약된 공용 IP, 즉 고정 IP를 쓸 것이기 때문에 예약된 공용 IP를 선택하고,

새 IP주소 생성을 선택한다.

공용IP이름은 아무렇게나 써도되지만, 알아보기 편하게 쓰길 바란다.

 

그 이후 업데이트 버튼을 클릭한다.

그럼 고정 IP설정은 끝난 것이다.

다음 포스팅에서는 외부에서 접근할 수 있는 수신 규칙(인바운드 규칙)을 설정해보겠다.

 

개발자 여러분들은 회사에서 사용하는 서버 뿐만 아니라

본인들 공부 및 개발을 위해 어떤 형태든(NAS, 클라우드,데스크탑 등) 서버가 있을 것이다.

그러나 문제는 이 서버의 비용이 문제다.

클라우드의 경우 무료 사용량을 초과할 경우 정기적으로 과금이 들어가게 되고,

NAS, 데스크탑 또는 IDC에 구축하거나 임대하는 서버의 경우 꽤나 목돈이 들어가게 된다.

그럴 경우 비용을 줄이기 위해 찾아 본바, 요즘 오라클 클라우드 프리티어라는 게

있어 가격부담을 심히 덜어주게 되었다.

바로 '무료'이기 때문이다.

타사 AWS의 경우 무료기간을 지나게 되면 등록해 놓은 카드를 이용하여 과금정책이 적용되는 데,

오라클 클라우드 프리티어의 경우 평생 무료 클라우드 서비스이면서,

이용량을 초과할 경우 속도가 느려질 뿐 과금하지 않으면서 그대로 사용할 수 있다.

자 이제 시작해보자.

  1. https://www.oracle.com/kr/cloud/free/#always-free

2. 무료로 시작하기 버튼 클릭, 계정정보 입력 후 카드 등록하면 계정이 생성된다.

3. 계정이 생성되면 메일로 링크를 하나 주게되는데, 그곳으로 접근해야된다.

4. 인스턴스 생성

좌측 상단의 인스턴스 버튼을 클릭하고,

Create instance 버튼 클릭

버튼을 클릭하면 인스턴스를 생성하게 되는데,

위에 써있는 부분은 기본값으로 두고

먼저 운영체제와 cpu 및 메모리 설정을 해주어야 한다.

Edit 버튼을 클릭하면,

위와 같은 화면이 나오는데 위의 이미지는 운영체제이고,

아래의 Shape는 CPU와 램이다.

기본값으로 선택할 경우 우분투나 centos 등 패키지가 깔려있지 않은 리눅스와

CPU 1코어 램 1기가로 만들어지므로,

가벼운 환경이 아닌 분들은 커스텀을 해야 한다.

Change 버튼을 통해 바꿔보자.

위를 살펴보면 다양한 OS를 선택할 수 있는데 버전도 맞출 수 있다.

주의할 사항은 Always Free-elgible 이라는 흑색 버튼이 있는데 항상 무료라는 뜻이다.

윈도우의 경우 라이센스비를 내야하기 때문에 해당버튼이 활성화되있지 않으므로,

과금이 될 수 있다. Always Free-elgible 버튼은 다른 메뉴에도 동일하게 존재하니

항상 무료인지 계속 체크해보는 습관을 갖자.

그 외 나머지는 기본값으로 하고 저장하고,

change shape 버튼을 클릭하여 cpu 와 램을 수정하자.

위 이미지를 보면 CPU 제조사를 선택할 수 있으며, 개인적으로 인텔을 별로

안 좋아하기 때문에 AMD를 선택했다.

해당 제조사를 클릭하면 아래에서 CPU 코어 수와 메모리를 설정할 수 있는데,

나같은 경우 프로그램이 무거운 관계로 메모리 1기가로는 도저히 돌아가지 않아

커스텀을 진행하였는데,

동그란 스크롤버튼으로 조작할 수 있다.

이후 저장하면 된다.

주의할 점은 과도하게 설정할 경우 프리티어의 경우에는 과금유도 및 경고창이 발생할 수 있으니

반드시 프리티어의 스펙 내에서 설정하길 바란다.

* 오라클 클라우드 프리티어 스펙

인프라 부분을 참고하여 세팅하자.

다음으로 네트워킹 부분을 수정한다. Edit 버튼을 클릭해보자.

다른 부분은 수정할 필요없고

Do not assign a public IPv4 address 부분으로 선택하자.

선택하는 이유는 기본값으로 선택되면 서버를 리붓하거나 재시작할 경우 IP가 변동될 수 있기 때문이다.

나는 고정 IP를 설정할 것이기 때문에 오른쪽 옵션을 선택한다.

다음으로 SSH KEY를 수정한다.

공용키를 붙일 것이기 때문에 Paste public keys 를 선택하고,

SSH keys input 필드에 공용키를 붙여 넣는다.

 

필자가 올린 블로그를 참고하여 자신만의 SSH-KEY를 붙이자

다음으로 용량 설정을 해보자.

나는 개발용으로 쓸 것이기 때문에 기본값인 50GB로 하고,

기본값으로 할거면 사실 상단의 체크박스는 체크할 필요 없다.

사이즈 조절 후 create 버튼을 누르면, 인스턴스가 생긴다.

다음 포스팅에서는 인스턴스 생성 후 서버를 세팅해 볼 것이다.

파일 복사

cp test.txt test_2.txt

폴더 복사 (하위 폴더까지)

cp -r test test2
 

 

개발하다보면 의도치 않게 프로젝트를 종료했음에도 포트가 살아 있는 경우가 있다.

그럴 때는 포트를 찾아서 종료해야 프로젝트가 정상적으로 실행된다.

1. 종료하길 원하는 포트번호를 찾자

lsof -i :포트번호

포트를 종료하려면 포트번호가 아닌 PID가 필요한데, PID를 종료시켜야 한다.

2. 포트 종료하기

kill -9 [종료대상 PID]

포트 종료를 하고 포트 찾기 명령어를 확인하니 나오지 않는다.

종료가 잘 됐다.

서버를 원격으로 연결하여 프로그램을 실행한 이후,

터미널로 봤을 때는 프로그램이 정상적으로 실행되고 있지만

터미널 세션을 종료하면 프로그램이 같이 종료되는 경우가 있다.

터미널을 종료해도 프로그램을 실행할 수 있도록 하는 방법이 몇 가지 있지만

제일 쉬웠던 방법만 써본다.

  1. 평상시 프로젝트 실행 명령
npm run start

   2. 개선 방법

nohup npm run start & exit

nohup 명령어로 실행하고

exit 의 경우에는 따로 입력하여 종료한다.

나같은 경우 터미널을 그냥 x버튼을 클릭하여 종료했는데

그러면 nohup 명령어가 정상적으로

실행되지 않기에

exit 로 안전하게 터미널을 빠져나간다.

+ Recent posts