[ 잡담 ]

 

RDS(Relational Database Service)란 말 그대로 관계형 데이터베이스를 대여해주는 AWS의 서비스다. AWS에서 주로 사용자들이 사용하는 데이터베이스 서비스는 RDS와 DynamoDB일 것이다. DynamoDB는 비 관계형(NoSQL) 데이터베이스로 RDS와는 다른 성격을 띠고 있다. 

관계형 데이터베이스와 비 관계형 데이터베이스에 대해서는 나중에 따로 정리하는 걸로 하고 정말 간단하게 알아보자.

http://help.hancom.com/hoffice/multi/ko_kr/cell/menu/edit/change_rowcolumn.htm

관계형 데이터베이스는 위 엑셀 표처럼 Banana, Cherry, Melon, Peach라는 칼럼이 정해져 있는 데이터베이스 형태를 말한다. May행을 추가한다고 하면 Banana, Cherry, Melon, Peach에 관한 데이터만 입력할 수 있다.
하지만 비 관계형 데이터베이스는 정해진 칼럼이 없다. May행이 Banana, Cherry, Kiwi에 대한 데이터를 입력할 수 있다. 

칼럼이 기준이 되어 테이블마다 관계를 가질 수 있냐 없냐 따지는 것이 두 구조의 차이라고 생각한다.

자세한 내용은 나중에 더 공부해서 따로 작성하겠다.

 

[ 본론 ]

 

이번 글에서는 RDS 인스턴스 생생과 접속을 해보자.

목차

  • 1. 데이터베이스 생성
  • 2. 데이터베이스 접속
    • 퍼블릭 액세스 허용해주기
    • 보안 그룹 인바운드 포트 열어주기
    • 접속

 

1. 데이터베이스 생성

 

 먼저 리전을 잘 확인하자. 나는 서울에 데이터베이스를 생성할 것이기 때문에 서울을 선택하고 데이터베이스 생성 버튼을 클릭한다.

 

RDS는 다양한 관계형 데이터베이스를 지원한다. 나는 가장 흔하게 쓰이는 MySQL을 선택하고 버전은 디폴트 값을 사용하겠다.

템플릿에 프로덕션으로 디폴트 값으로 맞춰져 있을 텐데 이대로 만들면 한 달 뒤 돈이 청구되는 것을 볼 수 있다. 무료로 사용하고 싶다면 프리 티어를 선택하도록 하자.

DB이름은 그냥 말 그대로 DB 인스턴스 이름이기에 이쁘게 지어주면 되고 "마스터 사용자 이름", "마스터 암호"는 접속하는데 꼭 필요한 정보이기 때문에 꼭 기억을 해 두던지 기록을 해주자.

다른 부분은 건드릴 것이 없어서 데이터베이스 생성 버튼 클릭!

 

생성 중이다. 시간이 몇 분 걸린다. 기다리자.

이제 사용 가능한 데이터베이스를 생성했다.

 

2. 데이터베이스 접속

데이터베이스를 생성했다고 해서 바로 접근할 수 없다. 데이터베이스에 원격으로 접속하기 위해서는 몇 가지 해야 할 것들이 있다.

 

먼저 우리가 생성한 데이터베이스의 상세정보를 보기 위해 클릭하자.

 

1. 퍼블릭 액세스 허용해주기

 

수정을 클릭한다.

 

네트워크 및 보안에서 퍼블릭 액세스 가능성을 "예"로 변경하고 저장하자.

 

즉시 적용을 선택하고 수정 버튼을 누르면 끝이다.

*수정되는데 시간이 몇 분 소요된다.

 

2. 보안 그룹 인바운드 포트 열어주기

보안 그룹의 인바운드 설정으로 3306 포트를 열어줘야 접속이 가능하다.

 

보안 그룹 클릭!

 

보안 그룹 ID 클릭!

 

인바운드 규칙 편집 클릭!

 

MYSQL/Aurora를 선택하면 포트는 자동으로 설정되고 보안에 따라 위치 무관, 특정 IP만 설정해주면 된다. 그리고 규칙 저장!

 

3. 접속

데이터베이스에 접속하는 방법은 다양하다.

나는 보통 MariaDB를 설치하면 자동으로 설치되는 heidisql라는 프로그램을 사용한다.

www.heidisql.com/download.php

 

Download HeidiSQL

Ads were blocked - no problem. But keep in mind that developing HeidiSQL, user support and hosting takes time and money. You may want to send a donation instead. Download HeidiSQL 11.0 Release date: 17 Mar 2020. Installer, 32/64 bit combined Portable versi

www.heidisql.com

혹시나 사용할 사람을 위해서 다운로드 링크를 남겨놓는다.

 

먼저 접속하는 주소를 알아야 한다. 엔드포인트가 그 주소가 되겠다.

 

호스트명에는 엔드 포인트를 입력하면 된다. 데이터베이스를 생성할 때 지정한 사용자 이름과 암호를 입력하고 열기 버튼을 누르면 끝.

 

쫘좐! 너무나 잘 접속된 것을 확인할 수 있다.

[ 잡담 ]

클라우드 컴퓨팅 서비스를 사용하다 보면 콘솔로 작업을 진행해야 하는 고통을 견딜 수 없었다. vi, vim 등을 잘 사용하여 개발하면 충분히 불편함 없이 개발을 할 수 있지만 이미 Visual studio code와 같은 ide에 익숙해져 버린 몸이기에 견딜 수 없었다. 이런 나의 고충을 덜어주는 서비스가 Cloud9이었다.

Cloud9은 원래 AWS의 서비스가 아닌 다른 회사에서 운영하고 있었던 것으로 알고 있다. 하지만 AWS가 사들여 오면서 정식 AWS 서비스가 되었다. AWS의 정식 서비스가 된 지 얼마 안 됐기 때문에 서울 리전을 지원 안 했다. 도쿄나 싱가포르 리전에서 사용했지만 이제 서울 리전도 지원해서 너무 기쁘다. 사실 차이점을 체감상 못 느낌.

[ 본론 ]

환경

  • Ubuntu 18.04

준비물

  • Nodejs가 설치된 Ec2 인스턴스

인스턴스는 가지고 있지만 Nodejs가 설치되어 있지 않아 Nodejs의 설치부터 진행하겠다.

웹과 콘솔 환경을 옮겨가며 작업하기 때문에 집중하자!

만약 인스턴스가 없다면 이전 글을 보고 오길 바란다!

2020/09/04 - [Develop/Amazon Web Service] - [ AWS ] Ec2 인스턴스를 생성해보자

 

[ AWS ] Ec2 인스턴스를 생성해보자

[ 잡담 ] Smol이라 하는 프로젝트를 진행하면서 클라우드 환경에 서버를 구축해야 하여 작업하는 김에 글을 작성해본다. 깊은 부분은 나도 잘 모르기에 실용적인 부분만 캐치하고 넘어가겠다. [ ��

unchae.tistory.com

 

1. Nodejs 설치

인스턴스를 새로 생성하고 나면 일단 기분 좋게 아래 코드를 실행하곤 한다. 이거 안 하면 찝찝하고 또 문제가 발생할 수도 있기 때문에 의식 같은 개념으로 돌려주자.

$ sudo apt-get update

의식을 마치고 이제 본격적으로 Nodejs를 설치해보자.

1. curl 설치

$ sudo apt-get install curl

2. PPA를 통하여 최신 버전을 가져온다

curl -sL https://deb.nodesource.com/setup_12.x | sudo -E bash -

3. Nodejs 설치

$ sudo apt-get install -y nodejs

4. NPM 제 기능하게 해 주기

$ sudo apt-get install build-essential

이제 node -v를 입력하면 잘 설치되어 버전이 출력되는 것을 확인할 수 있다.

 

2. Cloud9 설치

AWS 웹 사이트로 이동하자.

리전이 서울인지 확인하고 Create environment 버튼을 클릭해주자.

 

환경의 이름과 설명을 입력하고 다음 스탭으로!

 

새로운 인스턴스를 생성하면서 Cloud9 환경을 설치하는 선택지도 있지만 우리는 이미 인스턴스를 가지고 있기 때문에 3번째 "Create and run in remote server (SSH connection)"을 선택해준다.

User 값은 우리가 처음 로그인할 때 사용했던 로그인 아이디 값을 넣어준다. 만약 자신이 별도로 사용자를 만들어 줬다면 그 사용자 아이디 값을 넣어주면 된다. Cloud9에서는 자신이 설정한 사용자의 폴더만 접근할 수 있다. 

아래 public SSH key를 복사해주자.

 

다시 콘솔로!

인스턴스에서 SSH 접근을 허락해줘야 Cloud9에서 접근하여 설치를 진행할 수 있기 때문에 public SSH key를 입력해주자.

$ cd ~
$ ls -al

ubuntu 사용자 루트 디렉터리에서 ls -al 명령어를 입력하여 디렉터리를 확인해보면. ssh라는 파일이 존재한다.

$ cd .ssh
$ ls -al

위 명령어로. ssh폴더로 이동하고 내부 파일을 확인해보면 "authorized_keys"라는 파일이 존재한다. 이 파일 속에 아까 복사해준 public SSH key를 입력해주면 된다.

$ sudo vi authorized_keys

 

vi 사용법은 구글링을 통해서 자세히 알아보고 난 간단하게만 소개하겠다.

키보드에서 i를 누르면 insert, 즉 입력이 가능해진다.

기존에 적혀있는 key값 다음 줄에 우리가 가져온 key값을 붙여 넣어주자(마우스 오른쪽 클릭하면 붙여 넣기).

키보드의 esc를 누르면 insert 상태가 해제된다.

:wq를 입력하면 저장하고 나가 진다.

 

이제 모든 준비는 끝났다.

웹으로 돌아가자!

 

다음 스탭로 넘어가자!

 

*혹시 여기서 접근할 수 없다는 에러가 발생하고 다음 창으로 넘어가지 않는다면 참고하자!

인스턴스에 보안 그룹의 인바운드 설정이 제대로 되어있지 않는 것이다. SSH 접근 설정을 내 PC IP에서만 접근 가능하도록 설정해놓았을 가능성이 크다. Cloud9을 사용하기 위해 모든 IP로부터 접근을 가능하게 하면 보안상 좋지 못하다. 혹시나 좋은 방법을 아는 사람이 있다면 댓글로... 부탁드립니다.

 

또 확인 창이 한번 더 나오는데 Create environment 버튼을 누르면 어떤 항목을 설치할 것인가 확인하는 창이 나온다. 난 모든 항목을 다 체크된 상태로 설치를 진행한다.

설치중...
설치완료!

설치가 완료되었다는 창이 보인다. 이제 Cloud9을 사용하여 좀 더 편한 서버 개발을 시작할 수 있게 되었다.

[ 잡담 ]

탄력적 IP에 대해서 자세하게 아는 것은 아니나 편리성만큼은 인정하니 간단하게 소개해 볼까 한다.

이전 글에서 인스턴스를 생성하고 접속하는 것 까지 진행해 보았다.

가끔 작업을 하다가 보면 버벅거리거나 문제가 있어 재부팅해야 할 경우가 있다. 그렇게 아무런 생각 없이 재부팅한 결과 SSH에 접근이 안됐다. 무슨 문제인가 살펴보니 재부팅되면서 할당되었던 IP가 변경된 것이다. 그래서 SSH IP 설정을 변경해주고 나서야 다시 접근할 수 있었다.

이런 귀찮은 문제를 해결해 줄 수 있는 것이 탄력적 IP이다. 항상 IP를 고정시켜주는 역할을 한다. 이 서비스의 경우 IP를 할당받고 인스턴스에 연결해주지 않고 방치해 두면 요금이 발생하지만 연결시켜 준 상태로 두면 요금이 발생하지 않는다.

[ 본론 ]

준비물

  • AWS 계정
  • 인스턴스

Ec2 카테고리에서 탄력적 IP를 선택해주고 탄력적 IP 주소 할당을 클릭한다.

 

할당을 눌러준다.

 

새로운 IP가 생성된 것을 확인할 수 있다. 그럼 이제 이 IP를 우리가 생성한 인스턴스에 연결해줘야 한다.

 

동그라미가 점점 일그러지고 있는 건 귀찮아서 그런 게 절대 아니다. 주소 연결 버튼을 눌러주자.

 

인스턴스에 우리가 생성한 인스턴스의 고유 id값을 입력해주고 연결을 누르면 끝.

 

기존에 사용하던 인스턴스였다면 인스턴스의 IP가 변경되었으므로 접근이 되지 않을 것이다. SSH IP 설정을 변경해주도록 하자.

이전 글에서 인스턴스를 생성해보았다면 이번엔 인스턴스에 접근해보자.

2020/09/04 - [Develop/Amazon Web Service] - [ AWS ] Ec2 인스턴스를 생성해보자

 

[ AWS ] Ec2 인스턴스를 생성해보자

[ 잡담 ] Smol이라 하는 프로젝트를 진행하면서 클라우드 환경에 서버를 구축해야 하여 작업하는 김에 글을 작성해본다. 깊은 부분은 나도 잘 모르기에 실용적인 부분만 캐치하고 넘어가겠다. [ ��

unchae.tistory.com

Windows10에서 접근하는 방법, MacOS에서 접근하는 방법을 나눠서 살펴보도록 하자.

 

Windows10

준비물

  • putty
  • keypair (ppk 파일)
  • 인스턴스 IP주소

 

1. putty 설치

나는 putty라는 프로그램을 사용하여 접근했다. 먼저 putty를 다운로드하도록 하자.

www.chiark.greenend.org.uk/~sgtatham/putty/latest.html

위 사이트에 들어가서 putty.exe와 puttygen.exe만 다운로드하면 된다. 자신의 운영체제가 64비트인지 32비트인지 확인하고 다운로드하여 주도록 하자. 

 

2. ppk파일 생성

먼저 puttygen.exe를 실행하자.

Load 버튼을 눌러준다.

 

파일 이름 옆에 표시되는 파일을 All Files로 변경해주면 우리가 Ec2 인스턴스를 생성하면서 다운로드하였던 pem파일이 보이게 된다. 해당 파일을 열기 해주자.

 

그리고 Save private key를 누르면 "Are yo sure you want to save this key without a passphrase to protect it?"이라는 알림 창이 뜨는데 예 눌러주면 된다. 

 

그리고 저장할 파일 이름을 적고 저장버튼을 눌러 ppk 파일을 생성해주자.

이제 puttygen.exe의 용도는 끝났다.

 

3. IP주소 알아내기

인스턴스에 접근하기 위해서는 IP주소가 필요하기 때문에 Ec2 페이지에 가서 자신의 인스턴스 IP주소를 확인해 오도록 하자.

퍼블릭 DNS를 사용해도 괜찮고 IPv4 퍼블릭 IP를 사용해도 괜찮다. 둘 중 하나를 복사해 두자.

 

4. SSH 접속

이제 putty.exe를 실행시켜주자.

Host Name 빨간색 박스 안에 복사해 두었던 IP 값을 붙여 넣어 주자.

 

다음은 카테고리에서 Connection > SSH > Auth를 클릭해주면 위 사진과 같은 화면이 보인다. Browse... 버튼을 눌러 우리가 앞서 만들었던 ppk파일의 위치를 알려주자.

 

이제 다시 Session 카테고리로 돌아와서 Saved Sessions아래의 박스에 이름을 입력하고 Save를 눌러 이 모든 설정을 저장해주도록 하자.

 

그럼 사진과 같이 smol이라는 설정 값이 생기고 앞으로 SSH로 접근하고 싶다면 저 smol만 선택하고 Open 해주면 접속할 수 있게 되었다.

 

이제 smol을 선택하고 Open 버튼을 누르면 PuTTY Security Alert라는 알림 창이 뜰 텐데 처음에만 뜨는 것이니 예를 눌러주도록 하자.

 

계정을 만든 적도 없는데 로그인을 하라는 창이 뜬다. 인스턴스를 생성하면 자동적으로 운영체제에 따라 이름이 다른 사용자를 생성해준다.

 

우리는 인스턴스를 생성할 때 Ubuntu 운영체제를 설치했기 때문에 ubuntu라고 입력하면 접속이 완료될 것이다.

*혹시 ubuntu가 아닐 경우에는 이 글의 아래에 있는 추가 내용을 살펴보자

 

MacOS

준비물

  • keypair (pem 파일)
  • 인스턴스 IP주소

mac에서는 기본적으로 terminal을 지원해주기 때문에 매우 간단하게 접속할 수 있다.

ssh -i <pem 위치> <로그인 계정>@<ip주소>

 

[ 추가 ] 운영체제에 따른 로그인 아이디

 

  • Amazon Linux 2 또는 Amazon Linux :  ec2-user

  • Centos :  centos

  • Debian :  admin 또는 root

  • Fedora : ec2-user 또는 fedora

  • RHEL :  ec2-user 또는 root

  • SUSE :  ec2-user 또는 root

  • Ubuntu :  ubuntu


출처

https://practice.hooniworld.io/entry/AWS-인스턴스-기본-계정

 

[ 잡담 ] 

Smol이라 하는 프로젝트를 진행하면서 클라우드 환경에 서버를 구축해야 하여 작업하는 김에 글을 작성해본다. 깊은 부분은 나도 잘 모르기에 실용적인 부분만 캐치하고 넘어가겠다.

Ec2란 Elastic Compute Cloud의 약자로 독립된 컴퓨터를 임대해주는 서비스를 말한다. 쉽게 설명하면 우리가 일정 비용을 내면서 아마존에게 컴퓨터를 빌려서 사용하게 해주는 서비스이다. AWS의 가장 기본이 되는 서비스 중 하나이다.

회사 내부에 서버를 배치하는 것보다 훨씬 편리한 장점이 존재한다. 그것은 바로 확장성이다. 서비스의 규모가 점점 커져서 더 큰 서버가 필요해지면 어떻게 해야 할까? 회사 컴퓨터의 더 좋은 부품을 사서 끼우고 해야 하는 작업 해야 한다. 하지만 AWS 서비스를 사용하면  버튼 몇 개로 혹은 자동으로 컴퓨터의 성능을 늘렸다가 줄였다가 할 수 있다. 그 기능의 중심이 되는 서비스가 Ec2이다.

*이제부터 "인스턴스"라는 말이 자주 나올 텐데 Ec2에서 인스턴스란 그냥 "컴퓨터"라고 받아들이면 될 것 같다. 예를 들어 한 개의 인스턴스라고 하면 한 대의 컴퓨터가 되는 것이다.

 

[ 본론 ]

그럼 한번 아마존으로부터 나만의 컴퓨터를 대여해보자!

준비물

  • AWS 계정

 

서비스를 클릭하고 ec2페이지로 들어가 보자.

 

리전 위치가 서울인지 확인하고 인스턴트 시작 버튼을 누르자.

처음 AWS를 사용하는 사람의 경우, 다른 나라 리전에 인스턴스를 생성해 놓고 "전에 만들었는데 인스턴스가 왜 없지?" 하며 새로 생성하여 요금을 두 배로 청구받는 경우가 있다. 항상 리전을 확인하고 생성 & 삭제를 하자.

*리전(Region)은 물리적인 서버의 위치를 나타낸다.
우리가 AWS를 통해 인스턴스를 만들면 생성할 때 선택한 리전에 존재하는 물리적 서버에서 우리가 사용할 서버 영역을 할당해주게 된다. 리전의 위치가 가까울수록 서버와의 통신 속도가 빠를 것이다.

 

자신이 원하는 운영체제를 선택해주자. 나는 우분투(Ubuntu) 18.04를 선택하겠다.

 

서버의 사양을 선택할 수 있다. 나는 비용을 발생시키고 싶지 않기 때문에 프리티어로 제공되는 t2.micro를 선택하고 다음으로 넘어가겠다.

 

네트워크나 뭐 다양한 설정을 할 수 있지만 그냥 넘어가도 사용하는데 큰 지장이 없으니 넘어가도록 하자. 괜히 건드렸다가 비용이 청구되는 일이 없도록 잘 알아보고 체크하자. 보안 그룹 구성이 나올 때까지 쭉 넘어가자.

 

SSH, HTTP, HTTPS 3가지 방식으로 서버에 접근이 가능하도록 설정했다. SSH는 콘솔로 서버에 대한 접근을 허용한다. 그렇기 때문에 보안상 내 IP에서만 접근이 가능하도록 설정했다. HTTP, HTTPS는 웹 서비스를 제공할 경우, 꼭 설정해야 한다.

 

이제 인스턴스 생성이 거의 다 완료되었다. 시작하기에 앞서 키 페어를 생성해야 한다. 키 페어란 콘솔에 접근하기 위한 열쇠라고 생각하면 된다. 키 페어를 활용하여 서버에 접근하는 방법은 다음 편에서 알아보도록 하자.

 

새로운 키 페어 이름을 만들어 주고 다운로드를 하면 인스턴스 시작 버튼에 불이 들어오는 것을 확인할 수 있다. 다운로드 받은 파일은 꼭 안전하게 보관하자.

 

인스턴스를 생성하고 나면 인스턴스 상태가 노란색 동그라미와 함께 pending으로 되어있는데 시간이 지나면 초록색으로 바뀌면서 running으로 바뀌게 된다.

 

이제 우리는 클라우드 환경에 어떤 환경에서도 접속 가능하며 24시간 동안 돌아가는 컴퓨터를 한 대 생성한 것이다.

그럼 다음 편에서 SSH로 서버에 접속하는 방법에 대해서 알아보도록 하자.

'Develop > Amazon Web Service' 카테고리의 다른 글

[AWS] Ec2 인스턴스에 탄력적 IP를 연결시켜보자  (0) 2020.09.04
[AWS] Ec2 인스턴스에 SSH 접근  (0) 2020.09.04
[AWS] cloud9 설치 오류  (0) 2020.07.13
[AWS] RDS 한글 깨짐  (0) 2020.06.19
[AWS] AWS?  (0) 2020.05.17

학교 다닐 적 파이썬을 대충 사용해본 기억이 있다.

무슨 프로젝트인지 기억은 나지 않지만 장고를 사용하여 서버를 만들려고 했다. 하지만 ec2에서 nginx와 장고를 연결하는 것은 쉬운 작업이 아니였다. 취업을 위해 빨리 프로젝트를 찍어내야했던 상황이라 더 이상 붙들고 있을 수 없어 평소에 사용하던 라라벨로 진행했다.

기억나는 건 들여쓰기를 매우 철저히 지켜줘야하는 언어라는 것 뿐이다.

회사에서 몇 천개나 되는 편의점 1+1 할인 품목을 수동으로 입력해 넣어야하는 상황이라는 것을 들었고 크롤링으로 가져온 데이터를 바로 데이터베이스에 입력하면 그러한 수고를 덜 수 있을 것이라 확신했다.

그렇게 오늘 오전에 파이썬과 크롤링에 대해 가까워지는 시간을 가졌다.
너무 지원해주는 기능이 많았기에 공부할 것도 없고 로직만 생각해서 슥슥 만들어 보니 결과물이 나왔다.

대충 결과물은 만들어 냈는데 코드의 효율성 따위는 생각하지 않고 일단 만들어봤다.

# pip install requests
# pip install beautifulsoup4

import requests
from bs4 import BeautifulSoup

webpage = requests.get("https://pyony.com/search/")
soup = BeautifulSoup(webpage.content, "html.parser")

# 마지막 페이지 추출
page = soup.findAll("a", {"class":"page-link"})
last_page = page[len(page)-1].get('href')
_last_page = last_page.replace("?page=","")
    
print("last page", _last_page)

# 페이지별 크롤링
for x in range(1, int(_last_page)):
    webpage = requests.get("https://pyony.com/search/?page="+str(x))
    soup = BeautifulSoup(webpage.content, "html.parser") 

    obj_result = []
    for j in range(0,20):
        obj = soup.findAll("div",{"class":"card-body"})[j].get_text().replace(" ", "").replace("\n", "|").split("|")
        _obj = []
        i = 0
        for val in obj:
            if(val):
                if(i < 4):
                    _obj.append(val)
                    i = i+1
        obj_result.append(_obj)
            
    img = soup.findAll("img",{"class":"prod_img"})

    for inx, val in enumerate(img):
        img[inx] = val.get('src')

    for inx, val in enumerate(obj_result):
        obj_result[inx].append(img[inx])
    print(obj_result)

이제 이 코드에서 데이터베이스 처리 코드를 넣고 crontab으로 매월 1일 새벽에 돌아가도록 처리만 해주면 기능은 완성될 것같다. 

#추후 변경해야할 사항

지금은 모든 편의점 할인 품목이 정리되어 있는 펴늬 라는 사이트에서 크롤링해오지만 만약에 저 페이지가 ui적으로 변경을 준다면 내 코드는 오작동을 일으킬 것이기 때문에 편의점 홈페이지에서 따로 다 크롤링해오도록 설계하자. 

BeautifulSoup 지원 함수를 더 찾아보고 기존  웹페이지의 형태가 조금 변경되어도 에러가 발생하지 않도록 구현하자.

개발을 하다보면 노란색 경고창이 뜨는 경우가 생긴다.

나 같은 경우에는 리스트를 구현할 경우에
key 값이 object라고 props의 이름으로 "key" 문자열을 사용하면 안된다는 문구가 계속 떳다.
string 값으로 변경 시켜줘도 마찬가지였다.

노란 경고 창을 지우려고 해도 쉽게 고쳐지지 않을 경우에는 index.js에 아래 코드를 넣어주자.

/* index.js */
console.disableYellowBox = true;

'Develop > React-Native' 카테고리의 다른 글

[RN] react-native-vector-icons 엑박으로 뜰 경우  (0) 2020.07.16
npm install react-native-vector-icons --save

react-native-vector-icons를 설치했지만 엑박으로 뜨면서 아이콘이 나타나지 않을 때

https://github.com/oblador/react-native-vector-icons#android

 

oblador/react-native-vector-icons

Customizable Icons for React Native with support for NavBar/TabBar/ToolbarAndroid, image source and full styling. - oblador/react-native-vector-icons

github.com

여길 참고하면 되는데...

안드로이드의 경우

android/app/build.gradle 파일을 열고 조금 내리다보면 

apply from: "../../node_modules/react-native/react.gradle"

이렇게 적힌 곳이 보일 것이다.

여기 바로 아래에 아래 코드를 입력해주고 다시 빌드해주면 아이콘이 잘 보이는 걸 확인할 수 있다.

apply from: "../../node_modules/react-native-vector-icons/fonts.gradle"

 

'Develop > React-Native' 카테고리의 다른 글

[RN] 경고메세지 끄기  (0) 2020.07.21

c9.ide.collab 1, c9.ide.language.go 1를 설치하는데 에러가 발생해서 다음 절차로 넘어가지 않았다.

putty로 따로 접속하여

curl -L https://raw.githubusercontent.com/c9/install/master/install.sh | bash

입력해주고 다시 설치하면 설치가 잘 된다.

 

환경 

Ubuntu 18.04
Nodejs
Express


1. certbot 을 설치해주자

sudo add-apt-repository ppa:certbot/certbot
sudo apt-get update
sudo apt-get install certbot

2. 실행

sudo certbot certonly --manual

3. 이메일 입력

처음 실행시키면 이메일 입력하라는 커맨드가 나올 것이다. 입력해주면 된다!
도메인 입력하라고 뜨기 전까지 Y.

4. 인증서를 발급할 도메인 주소 입력

http & https 빼고 그냥 도메인만 입력하자.

5. Y 입력하고 엔터!

 

6. 중요! 여기서 일단 멈춘다.

사진에서 a-string과 a-challenge내용은 다른 문자열이 적혀있을 것이다.
그냥 a-string과 a-challenge이라 부르겠다.

http://도메인/.well-known/acme-challenge/a-string 라는 내용이 보일 것이다.
저 주소로 요청을 보내어 인증서를 발급 할지 말지 인증을 하는 과정을 거치는 것 같았다. 
그래서 우리는 접속 경로를 만들어 줘야한다.

7. 경로 폴더 & 파일 생성

프로젝트파일 root
ㄴ public
  ㄴ .well-known
    ㄴ acme-challenge
      ㄴ 위 이미지 속 a-string 부분 복사해서 파일 이름으로 생성

8. 새로 생성한 a-string파일 내용으로 위 이미지의 a-challenge 라고 적힌 부분의 내용을 입력해주고 저장하자. 

9. 그리고 기다리고 있었던 콘솔창 엔터!

그럼 위 사진과 같이 인증서가 발급 된 것을 알 수 있다.

sudo cd /etc/letsencrypt/live/도메인

위 경로로 들어가면 pem 파일이 있을 것이다.

10. app.js 파일에 붙여 넣어서 제대로 https로 접근이 가능한지 확인해보자!

/* app.js */

// Dependencies
const fs = require('fs');
const http = require('http');
const https = require('https');
const express = require('express');

const app = express();

// Certificate 인증서 경로
const privateKey = fs.readFileSync('/etc/letsencrypt/live/도메인 입력/privkey.pem', 'utf8');
const certificate = fs.readFileSync('/etc/letsencrypt/live/도메인 입력/cert.pem', 'utf8');
const ca = fs.readFileSync('/etc/letsencrypt/live/도메인 입력/chain.pem', 'utf8');

const credentials = {
	key: privateKey,
	cert: certificate,
	ca: ca
};

app.use((req, res) => {
	res.send('Hello there !');
});

// Starting both http & https servers
const httpServer = http.createServer(app);
const httpsServer = https.createServer(credentials, app);

httpServer.listen(80, () => {
	console.log('HTTP Server running on port 80');
});

httpsServer.listen(443, () => {
	console.log('HTTPS Server running on port 443');
});
sudo node app.js

 

아래 이미지와 같이 인증서가 유효하게 뜨는 것을 볼 수 있다.

 

출처
https://itnext.io/node-express-letsencrypt-generate-a-free-ssl-certificate-and-run-an-https-server-in-5-minutes-a730fbe528ca

'Develop > Node.js' 카테고리의 다른 글

PM2 80, 443포트 사용  (0) 2020.06.20
[Nodejs] Multer - Formdata 전송  (0) 2020.05.25
[Nodejs] Sequelize - 설치 & 마이그레이션  (0) 2020.05.18

+ Recent posts