AWS와 VSCode를 연결하여 SSH로 접속할 수 있게 됐습니다. 이제 기본 설정을 해보겠습니다.
패키지 관리자를 업데이트 합니다.
그다음 테스트해보기 위해서 nginx를 설치합니다. 그 후에 바로 AWS 인스턴스의 아이피로 접속하려고 하는데 접속이 바로 가능하지 않을 것입니다. 그래서 AWS EC2의 인스턴스로 들어갑니다.
그 다음 보안탭에 들어가서 인바운드 규칙을 추가해주도록 합니다. nginx는 80번 포트를 사용하는데, 80번 포트에 대한 규칙이 없었기 때문입니다. 보안 탭에 있는 보안 그룹을 눌러서 이동합니다.
인바운드 규칙 편집을 눌러줍니다.
규칙 추가를 누른 후에 HTTP를 선택해줍니다.
이제 HTTP 프로토콜로 AWS 인스턴스의 아이피로 접속하면 NGINX 웹 서버로 접속할 수 있습니다.
Node.js 설치
아직 아마존 인스턴스로 빌린 컴퓨터에는 Node.js가 설치되어 있지 않습니다. 그래서 아래처럼 노드 버전을 확인하려고 해도 확인할 수가 없습니다.
$ sudo apt install nodejs
node.js 를 설치한 후에 node -v를 통해 노드 버전을 확인하면 우리가 세팅한 서버와 노드 버전이 다릅니다. 그래서 노드 버전 매니저를 통해 원하는 노드 버전을 설치하도록 하겠습니다.
nvm 깃허브 레포지터리를 통해서 설치하도록 하겠습니다.
$ curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.1/install.sh | bash
여기서 바로 nvm 커맨드를 사용하려고 하면 오류가 발생합니다. nvm을 활성화해주도록 합니다.
$ source ~/.bashrc
이후 nvm으로 온프레미스 노드 버전인 v16.14.0으로 바꾸겠습니다.
nvm install 16.14.0
이제 노드 환경은 구축했으니 데이터베이스 환경도 구축해야 합니다.
데이터베이스 연동
AWS 커널이 예전 버전이라서 패키지를 설치하면 서비스를 수동으로 재시작 해주어야 해서 새롭게 업데이트하겠습니다.
먼저 현재 버전을 확인합니다.
uname -r
앞서 패키지 목록을 업데이트 했으므로 다시 하지 않고 바로 리눅스 커널의 이미지 목록을 확인하겠습니다.
apt-cache search linux-image
현재 설치 가능한 aws의 리눅스 버전은 5.15.0-1019이기 때문에 이 버전으로 업데이트하겠습니다.
업데이트가 끝나면 AWS EC2 인스턴스를 재부팅해줍니다.
재부팅하는 데에는 시간이 꽤 소요됩니다. 재부팅 후에 다시 커널 버전을 확인해줍니다.
1. PostgreSQL 설치
AWS에서 데이터베이스를 사용하기 위해서 PostgreSQL을 설치하도록 하겠습니다. 아래 커맨드로 설치합니다.
$ sudo apt-get install postgresql postgresql-contrib
설치 후에 잘 설치가 되었는지 버전을 확인해줍니다.
psql --version
2. PostgreSQL 설정
처음에는 ubuntu 유저가 없기 때문에 postgres라는 유저로 접속하여 postgres를 실행하도록 합니다. 먼저 패스워드를 설정합니다.
sudo passwd postgres
그후 유저를 postgres로 바꾸고 psql을 실행해줍니다.
sudo su postgres
psql
여기서 원하는 유저를 생성할 수 있습니다. psql에서 CREATE를 사용합니다.
CREATE USER [유저이름];
하지만, 이후 유저 권한을 조회하면 원래는 아무 것도 적혀 있지 않습니다.
여기서 권한을 추가해주도록 합니다. ALTER를 사용합니다.
ALTER USER [유저이름] WITH [권한];
저는 postgres와 같은 권한을 주겠습니다.
권한을 생성한 후에는 해당 유저의 비밀번호도 설정해줍니다.
ALTER USER [유저이름] WITH PASSWORD '[패스워드]';
그다음 미리 데이터베이스를 생성하여 pgAdmin4에서 해당 데이터베이스에 접속할 때 오류가 발생하지 않도록 하겠습니다.
CREATE DATABASE [데이터베이스 이름];
3. 외부접속
이제 외부 접속을 허용해주겠습니다.
ubuntu에서 /etc/postgres/[postgresql 버전]/main/postgresql.conf 파일을 수정해줍니다.
vi /etc/postgresql/14/main/postgresql.conf
# 여기서 버전은 다를 수 있으니 미리 ls 명령어로 확인해보는 것이 좋을 것 같습니다.
혹은 vscode와 같은 에디터의 ssh 연결을 통해 수정해도 됩니다.(이때는 파일의 소유 권한을 바꾸어주어야 합니다.)
파일의 소유 권한이 postgres로 되어 있어서 유저를 postgres로 바꾼 후에 vi로 수정하겠습니다.
sudo su postgres
60번째 줄에 위치한 listen_address 의 아이피 주소를 변경합니다.
모든 아이피 접속을 허용하기 위해서 아래와 같이 입력하겠습니다.
listen_address = '0.0.0.0'
접속을 허용한 후에는 권한을 부여해주어야 합니다.
vi /etc/postgresql/14/main/pg_hba.conf
아래로 내리다보면 # IPv4 local connections: 항목이 있는데 여기에 해당 아이피주소를 입력합니다.
# IPv4 local connections:
host all all 0.0.0.0/0 scram-sha-256
[↑여기에 해당 아이피 주소를 입력해주세요]
모든 설정을 완료하였으면 재시작해줍니다.
sudo systemctl restart postgresql
그다음 해당 포트가 열렸는지 확인합니다.
netstat -ntlp | grep 5432
4. pgAdmin4 연동
이제 pgAdmin4로 외부 접속을 하겠습니다.
위처럼 서버를 생성해줍니다.
General 탭에서는 해당 서버의 이름을 정해줍니다. 저는 확인하기 쉽게 AWS EC2 [유저 이름] 으로 정했습니다.
이렇게 하고 하단 SAVE 버튼을 누르면 연결이 되지 않습니다. 왜일까요?
바로 인스턴스의 보안 인바운드 규칙을 추가하지 않았기 때문입니다.
위와 같이 PostgreSQL 에 접속할 수 있도록 5432번 포트로 오는 접속을 제어해줍니다.
규칙을 추가해주고 다시 연결하면 정상적으로 연결된 것을 볼 수 있습니다.
'Node.js > Express.js' 카테고리의 다른 글
[Toy Project - Omuk] 14. AWS 배포(EC2 - VScode 연결) (2) | 2022.09.15 |
---|---|
[Toy Project - Omuk] 13. 배포 환경 설정 (0) | 2022.09.14 |
[Toy Project - Omuk] 12. 로그인-로그아웃 확인 미들웨어 및 템플릿 엔진 응용 (0) | 2022.09.12 |
[Toy Project - Omuk] 11. 카카오 로그인 API를 통한 로그인 구현 (0) | 2022.09.09 |
[Toy Project - Omuk] 10. 사용자 인증(Redis, Passport, Express) (0) | 2022.09.06 |