React.js

[react] react-13/ AWS 콘솔 설정/ AWS를 이용한 배포/ 리눅스 설치 명령어/ vi 에디터

문앵 2021. 7. 16. 11:02

실제로 배포 해보기! - aws 가입 (해외결제 카드 필요)

 

우리가 만들 서버는 2개를 구동할것임. 원래는 3개를 해야하지만 우리는

프론트와 백을 동시에 하므로 두개만 (익스프레스랑 디비를 한 서버에서)

 

TCP / UDP

- TCP 22 80 443번 포트

- 20번 포트 : ssh ) 터미널로 다른 사람 컴퓨터를 조작할 수 있음

-server 80번 포트 : 다른 컴퓨터에서 내 컴퓨터로 접속이 가능. http에 관련한 포트

 

--------------------------------------

aws 계정 만들고

-> aws console 들어가

 

가상머신 시작
우분투 어쩌구 선택 눌러
저거 검토및 시작 눌러

 

6보안 그룹 구성 들어가서 http랑 https 추가해주기. 검토및 시작 눌러
그 담 시작하기 누르면, 키페어 생성 (혹은 기존 키페어) 누르고
인스턴스 시작 누르면 요렇게 볼 수 있음.
저거 선택하고 위에 "연결" 누르기
저기 드래그해놓은 부분 옆에 복사표시 눌러서 vs 터미널에 입력해주면됨

아 그 전에 아까 인스턴스 시작할때 받은 키페어를 내 vs 폴더에 넣어놔야 함.

키페어는 확장명(.pem)으로 되어있고, 얘를 폴더에 넣을 때 웬만하면 gitignore도 미리 설정해놓는것이 좋음. 잘못해서 깃에 올렸다가 말도 안통하는 다른 사람들이 맘대로 이상하게 막 쓴다고 함. 

 

아무튼 이렇게

 

 

 

내가 서버를 작동시킬 폴더 (새로 만들었음!)

에다가 back 과 front 나눠서 둘다 키페어 넣어줬음. gitignore도 미리 미리

그리고 터미널 창을 back / front 각각 띄워놓고 

cd back         (-->back 폴더까지 들어가라는 뜻)

명령어로 해당 위치까지 가줘야 함.

거기서 이제 앞으로 nodejs랑 다 깔고 명령어도 실행 할 것임.

 

 

 

 

 

 

 

저기 드래그해놓은 부분 옆에 복사표시 눌러서 vs 터미널에 입력해주면됨

 

이제 접속을 해야함.

아까 인스턴스 연결에서 복사해둔  ====> (얘)

 

ssh -i <주소>

이 명령어를 터미널에 입력해주면 접속이 된다!

막 영어로 어쩌구 저쩌구 물어보는데,

yes 라고 쳐줘야 연결됨.

 

이르케 터미널 창에

ubuntu@ip-172-31-39-163:~$ 이러언 글자가 뜨면 접속이 된거임. 

 

 

# 리눅스 명령어

ls : 디렉토리 내용보기 (현위치)

ls -al : 디렉토리 상세보기

pwd : 내 경로 보기

cd / : 최상위 디렉토리 갑니다

cd ~ : 우리가 작업 할 디렉토리로 가기

 

(10글자)

   x xxx xxx xxx 계정명 계정명

= d rwx r-x r-x 계정명 계정명

(이거 뭐 어쩌구 설명해주셨는데 못들음 ㅎ)

 

 

우리는 여기다가 node.js랑 mysql을 깔거라고 함

 

 

 

🧡🧡node.js & npm 설치하기🧡🧡

 

https://github.com/ingoo-code/webpack5/blob/master/aws_setting

 

여기 들어가보면 

 

이 드래그 부분 복붙해서 터미널 입력

터미널에 하나씩 복붙 후 실행 시키면 (중간중간 뭐 물어보는데 Y 눌러서 동의해주면 됨.)

그럼 node 랑 npm 깔린다고 합니다. 잘 깔렸는지 확인 할 때는

node -v 

npm -v

 

각각 쳐서 버전이 나오면 잘 깔린거임

** 버전을 확인했는데 만약 안깔렸다고 나오는 경우

-> 나는 npm -v 쳤는데 버전이 안나와서

sudo apt install npm

을 쳐서 npm 을 쳐서 다시 설치해주면 된다.

(설치후 버전 확인 필수!)

 

 

이제 여기서 명령을 입력할 수 있음. 

 

 

💜💜마리아 디비 깔아주기💜💜

 

 

마리아디비도 깔아준다.

교수님 깃헙에서 마리아 디비 설치 명령어 복붙

저거 두개 실행해줌

 mariadb --version : 마리아디비 버전 나오면 잘 깔린거

 

그 다음, 터미널에

sudo su 

를 입력해서 계정을 root로 바꿔야 함.(sudo su 입력하면 자동으로 바꿔짐) 이후

mysql_secure_installation 실행.

-----------------------------------------------

 

마리아 디비 버전 바꾸는 명령어

https://downloads.mariadb.org/mariadb/repositories 

 

MariaDB - Setting up MariaDB Repositories - MariaDB

To generate the entries select an item from each of the boxes below. Once an item is selected in each box, your customized repository configuration will appear below. 1. Choose a Distro SLES openSUSE Arch Linux Mageia Fedora CentOS RedHat Mint Ubuntu Debia

downloads.mariadb.org

ubuntu 누르고 최신 최신 (여기 정확히 못봄. 녹화본 봐야할 듯)

선택을 하면 밑에 명령어가 뜸

저거 세개 각각 터미널에서 실행 해주면 비밀번호 바꾸겠냐고 나옴. 그럼 root든 뭐 비밀번호 설정 해주고 나머지 물어보는거 y로 다 넘기면 됨. 

 

---------------------- 

마리아 디비 접속하기!

root@ip-172-31-39-163:/# mysql 

입력

Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 57
Server version: 10.3.29-MariaDB-0ubuntu0.20.04.1 Ubuntu 20.04

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

 

어쩌구 나옴. 이제 마리아디비 접속 되었으니까 전에 했던대로 명령어

 

show databases;

use mysql;

show tables;

 

set password for 'root'@'localhost' = PASSWORD ('root'); (비밀번호 설정)

 

select user,host,plugin from user; 해줘서 plugin이 mysql_native_password 로 되어있는지 확인하기.

안되어있다면 쿼리문으로 저걸로 바꿔줘야 함. 

 

그렇게 해준 뒤 마지막으로

flush privileges; 해준다.

 

그리고 ctrl + c 로 마리아 디비를 빠져 나온 뒤에

 exit 

을 쳐서 root 계정 (super계정) 에서도 빠져나오기.

 

이제 ubuntu 계정 상태가 되면

 mysql -uroot -proot 

입력해줘서 우분투 계정 상태로 마리아디비에 접속이 되는지 확인해볼것!

(uroot => 이건 먼지 정확히 모름 userid가 'root' 라는 뜻인가?

 proot => password가 'root' 라는 의미!)

 

 

-------------------------------------------------

 

근데 망함 나 터미널에서 오류남.. 선생님 코드 보고 막 치다가 망해버림 

빠져나갈 수 없는 지옥에 갖혀버림

 

-> 겨우 빠져나옴......

어떻게 빠져나왔냐면 

1. esc 한번 누르기

2. :q! 누르기. 이건 그냥 vi 에디터에서 빠져나오는거고 :qw! 는 수정 후 저장하고 나오는거

 

-------------------------------------------------

 

mysql까지 설정이 완료되었음.

이제 여기에 express를 추가.

모두가 볼 수 있는 아이피 주소로 접속할 수 있게끔 할것임.

 

 

깃헙을 연결소로 해서

우리 컴퓨터(개인 pc) - 서버 컴퓨터를 이어줌.

 

로컬에서 기트헙에 코드를 올려주고 서버에서는 기트헙의 코드를 내려받아서 똑같은 파일을 가질 수 있도록 함.

 

 

 

 

일단 간단한 express를 만들어야 한다.

ssh 포트가 이미 하나 돌아가고 있으므로

express 서버를 돌릴 터미널은 따로 back-local이라는 이름으로 만들어 놓는다!

요로케 만들었삼

 

이제 이 파일을 기트에 새로운 레포지토리를 만들어서 거기에 올려준다. (node_modules .gitignore 까먹지 말기)

요로케 올라갔삼

이제 이 파일을 ssh 포트 서버에서 클론해서 받아온다.

이때 주의할 점!

 cd ~ 

명령어를 통해서 현재 계정명에 있는 폴더명까지 가줘야 함.

 pwd 

명령어를 쳤을 때 ( 현재 디렉토리가 어딘지 라는 뜻 )

/home/ubuntu 가 나와야 함.

 

그 다음에 

 git clone <url> 

해주면 됨! 

이르케

이 상태에서 

 ls 

를 쳐보면 

aws-test

가 나온다 . . !

 ls -al 

을 치면

drwxr-xr-x 6 ubuntu ubuntu 4096 Jul 18 16:58 .
drwxr-xr-x 3 root   root   4096 Jul 16 01:59 ..
-rw-r--r-- 1 ubuntu ubuntu  220 Feb 25  2020 .bash_logout     
-rw-r--r-- 1 ubuntu ubuntu 3771 Feb 25  2020 .bashrc
drwx------ 2 ubuntu ubuntu 4096 Jul 18 16:18 .cache
drwxrwxr-x 7 ubuntu ubuntu 4096 Jul 18 16:54 .git
-rw------- 1 ubuntu ubuntu    0 Jul 18 16:32 .mysql_history   
-rw-r--r-- 1 ubuntu ubuntu  807 Feb 25  2020 .profile
drwx------ 2 ubuntu ubuntu 4096 Jul 16 01:59 .ssh
-rw-r--r-- 1 ubuntu ubuntu    0 Jul 18 16:21 .sudo_as_admin_successful
drwxrwxr-x 3 ubuntu ubuntu 4096 Jul 18 16:58 aws-test

 

라고 내 현재 디렉토리 내용이 나온당.. ( 이게 먼말인지 정확히 모르겠음)

맨 막줄 

drwxrwxr-x 3 ubuntu ubuntu 4096 Jul 18 16:58 aws-test

여기 보면 앞에 d 가 나온거는 디렉토리라는 뜻임.. aws-test는 내가 깃헙에서 설정한 프로젝트명..

그래서 여기 이 파일 안에 들어갈 수 있다는 뜻임

 cd aws-test 

쳐주면 여기 안으로 들어와짐!

그 상태에서 

ls -al 해주면

이제 로컬에서 썼던 내용들이 여기에서 그대로 나옴!

 

근데 기트에 올린 파일은 node_modules 가 포함 되어 있지 않기때문에

express를 따로 설치 받아야 함.

npm 패키지는 아까 깔아놨으니까 node_modules만 받으면 됨

 npm install 

실행.

그리고 

ls

입력해서 확인해보면

원래 없던 node_modules 가 생겨있음

이상태에서 기존 서버랑 똑같이 

node server.js 쳐주면 서버 실행 성공된 상태가 콘솔에 찍힘.

 

인스턴스로 돌아가서

이 주소는

다른 사람들이 이 아이피로 접속했을 때 내가 실행하고있는 서버를 볼 수 있게 해주는 아이피 주소임.

 

그래서 이 아이피를 치면 내가 작동중인 서버로 들어가져야 하는데

해보면 안됨. 왜냐??

--> 우리가 서버를 포트번호 3000번으로 만들었기 때문임.

처음에 설정할 때 포트번호를 443번과 80번만 허용했기 때문에 3000번은 연결이 안됨.

 

그래서 server.js 파일에서 포트번호를 80번으로 바꿔줘야 함.

 

에디터를 이용해서 바꿔주기!

 vi server.js 

쳐주면 열림. !

(내가 이거 사용법도 모르고 잘못 쳐서 오류지옥에 빠진거였음...)

요런식으로 열림..

vi 라는것은 메모장을 연다고 생각하면 되고

그 뒤에 오는것은 내가 열고싶은 파일이라고 생각하면 됨. 해당 파일의 텍스트를 불러와서 보여줌

 

이 상태에서는 커서 이동만 가능하고 수정이 안됨.

 

내가 수정하고싶은 부분에 커서를 대고 그 상태에서 i 를 눌러준다. 그럼  INSERT  라는 글자가 생기는데

이때부터 키보드 조작이 가능해진다. (해보니깐 그냥 원하는 줄에 가져다 대고 i 누르면 되는듯..?)

나는 저 줄에서 i 눌러서 3000번을 지우고 80으로 바꿔줬다.

수정을 완료했다면, 이 상태에서 INSERT 모드를 끄기 위해 ESC 키를 한번 눌러준다. (그러면 INSERT 글자가 사라짐)

: 를 눌러주면 이 뒤로는 키보드가 먹음. 

 :wq! 

입력해준뒤 엔터 눌러주면 에디터가 꺼진다 ( write quit 의 약자. 쓰고 끈다. 느낌표는 강제로 실행한다는 뜻 )

 

이제 node server.js 해주면 

Error: listen EACCES: permission denied 0.0.0.0:80

요러하안 에러가 뜬다. 권한이 없다는 뜻인데 이거는 그냥 앞에 sudo 붙여주면 된다.

 sudo node server.js 

원래 기본적으로 1500번 포트까지는 관리자 말고는 쉽게 접근할 수 없다고 함.

그래서 관리자 권한을 넣어준거임. 

이제야 드디어디어디어디어디어

서버 실행 성공했다는 콘솔 찍혔다 드뎌뎌뎌뎌

이제 인스턴스에 있는 퍼블릭 아이피를 주소창에 입력해보면,...!!!

쫘라라라라라란 !!!!@ 나왔음~~~!!

 

반응형