728x90

 Chatting 서비스로 GetStream을 보고 있는데 프로젝트를 생성한 이후 테스트 유저를 프로그램 내에서 생성했는데
getstream 콘솔에서 보면 추가가 되지 않고 계속 오류가 난다.

예제 코드에 있는 내용을 그대로 넣었는데

await client.connectUser(
{
id: 'vadim',
name: 'Jim Lahey',
},
client.devToken('vadim'),
);

UnhandledPromiseRejectionWarning: Error: {"code":5,"StatusCode":401,"message":"WS failed with code 5 and reason - Connect failed with error: \"development tokens are not allowed for this application\"","isWSFailure":false}

개발자 모드에서 권할체크를 하지 않아야 하는데 지금 Product Mode여서 devToken 사용을 못한다는 것이다.

1. GetStream Dashboard에서 "Edit"버튼을 누르면 devMode로 변경이 가능하다

 팝업에서  Environment에서 Development 로 설정하고 Save App

2. 아래 Authentication 에서 "App" 설정 후 Disable Auth Checks를 활성화 한다. 
Development모드가 아니면 Disable Auth Checks 변경이 불가하므로 1번에서 변경한 후 작업한다.

 

728x90
728x90

strapi라는 backend 서비스를 쉽게 구축할 수 있는 open source가 있다.

develop, production 모드가 있는데
production모드에서는 category추가가 제한적이다

그런데... vm에서 develop 모드로 띄워도 production으로 뜬다 ㅡㅡ;
admin 설정하려고 하면 locahost로 page가 이동한다.

최초 로그인을 하면 관리자 설정을 하는 페이지로 이동하는데

"Create the first administrator" 버튼으로 이동해보면
로딩바만 돈다. 개발자 모드로 확인해보니 내부에서 localhost를 바라보고 있다

 

 아래 해결방안 1,2,3은... 아이디어였고
실제 해결은 다음 명령어로 했다.

package.json에 다음과 같이 정의되어 있다.

"scripts": {
"develop": "strapi develop",
"start": "strapi start",
"build": "strapi build",
"strapi": "strapi"
},

그냥 실행을 npm run develop 로 하면 되는 것이었다.
yarn으로 한다면 yarn develop
끝~

-------

해결방안1
develop 모드를 띄우고 nginx등에서 포트포워딩으로 처리하여 내부에서 도는 것으로
해결방안2
database를 별도로 띄워서 개인 pc에는 strapi를 로컬로 띄우면서 바라보는 db를 같이 보게 하는것.
해결방안3.
원격 vm의 domain을 dev.xxx.com, production.xxx.com 으로 줘서 dev로 접속시키는 방법.

해결방안 3의 가이드
https://github.com/61FINTECH/deploy-strapi-on-aws

 

GitHub - 61FINTECH/deploy-strapi-on-aws: Deploying a Strapi API on AWS (EC2 & RDS & S3)

Deploying a Strapi API on AWS (EC2 & RDS & S3). Contribute to 61FINTECH/deploy-strapi-on-aws development by creating an account on GitHub.

github.com

 

728x90
728x90

wsl에 무슨 문제가 있는지 code . 을 실행하면

-bash: code: command not found 가 나온다.

프롬프트에서 사용자를 확인하고 다음 경로가 있는지 찾아가 본다.
컴퓨터 이름을 MY-PC라고 했으면 프롬프트 앞부분에
root@MY-PC 라고 나타나 있다.
모르겠으면
cd /mnt/c/Users
ls -al 을 해서 목록에서 이름을 확인한다.

/mnt/c/Users/MY-PC/AppData/Local/Programs/Microsoft VS Code/bin

export PATH=$PATH:"/mnt/c/Users/MY-PC/AppData/Local/Programs/Microsoft VS Code/bin"

 code .  을 실행해서 뜨면 좋은데...
나의 경우에는 다음과 같은 에러가 났다.
/mnt/c/Users/MY-PC/AppData/Local/Programs/Microsoft VS Code/bin/code: 61: /mnt/c/Users/MY-PC/AppData/Local/Programs/Microsoft VS Code/Code.exe: Exec format error

여기에서 하나 더.
sudo sh -c 'echo :WSLInterop:M::MZ::/init:PF > /usr/lib/binfmt.d/WSLInterop.conf'
sudo systemctl unmask systemd-binfmt.service
sudo systemctl restart systemd-binfmt
sudo systemctl mask systemd-binfmt.service
를 실행하면 
Created symlink /etc/systemd/system/systemd-binfmt.service → /dev/null. 와 같은 메세지가 나오고
code . 을 했을 때 vs code가 뜬 다~~~~~

 

728x90

Supabase 소개

2023. 5. 23. 09:13
728x90

supabase라고 database가 있는데

firebase보다 낫다고 하네

우선 가격정책에서 free는 500M 줌.

가입을 하고 나면
github계정으로 가입했더니 조직(org)이 github이름으로 되네 ㅋㅋㅋ

그다음 프로젝트를 하나 생성하는데 조직을 선택해야 한다.

프로젝트가 생성되면 외부에서 접속을 위한
Project URL 과 API key 정보가 주어진다.

그다음 좌측메뉴의 두번째 아이콘을 누르면 Table editor. 여기에서 table목록이 나옴.

새 table생성을 해보자.
이름은 todo로

아무생각 없이 'Save'버튼을 눌렀더니

기본으로 id, created_at 칼럼이 생성되었다.
칼럼을 간단히 추가할때는 칼럼이름들 옆의 +버튼을 누르면 간단하고
Tables에 해당테이블의 아래화살표를 클릭해서 Edit table을 누르면 한번에 여러개 추가/제거가 가능하다.

먼저 칼럼추가버튼 클릭시
실제로는 스크롤이 있어서 상세 설정이 가능하다.

Edit Table을 누르면 아래와 같이 나오며
add column하고 done 칼럼을 추가함

table에 Data를 넣을 때는 Insert버튼을 눌러 원하는 작업을 하면 된다(여기에서도 칼럼추가가 가능하네)

Insert Row를 선택하여 data를 넣어보자.

Save버튼을 누르면 Data가 추가됨.

하지만, 여기서 끝이 아니다.
접속권한을 줘야한다.

Table에서 보면 정책설정이 되어 있지 않다( No active RLS policies )고
이러면 외부에서 Data처리를 할 수 없다.
빨간색으로 밑줄 그은 부분을 클릭하면 정책화면이 나온다.

Authentication의 Policies 화면이고 여기에서 New Policy 버튼을 누른다.

우선 전체를 수정한다.

정책이름은 all_access
Operation은 All
USING expression 항목에는 true를 입력하고 Review 버튼을 누른다.

정책을 미리 보여주면 Save한다.

Authentication에 해당 table에 대해 추가된 정책이 보인다.

 

어플에서 확인했을 때,
Data만 추가하고 정책을 주지 않은 경우

정책을 추가한 후 count가 '0'에서 '1'로 바뀐것을 확인할 수 있다.
(Hello World 로 나오는 부분은 Data mapping을 안한거니 그냥 넘어가자 ㅋ)

매핑한 Data

728x90
728x90

엣씨디? ETCD 라는 key/value 형태의 database(?) 가 있다.

우선 설치되어있는 서버에서
export ETCDCTL_API=3

으로 버전을 지정한다음
etcdctl get --prefix / 를 하면 모든 keyvalue 가 나온다.
나의 경우 너무 많아서

etcdctl get --prefix / >> etcddata.txt 로 파일로 바꾸어서 확인했다.

추가 명령들

export ETCDCTL_API=3
etcdctl get / --prefix --keys-only
etcdctl get "/" --prefix --keys-only
ETCD_CTL=3 etcdctl get / --prefix --keys-only
ETCD_CTL=3 etcdctl --endpoints=http://localhost:2379 get / --prefix --keys-only
ETCD_CTL=3 etcdctl --endpoints=http://localhost:2379 get  --prefix --keys-only
ETCD_CTL=3 etcdctl --endpoints=http://localhost:2379 get --prefix --keys-only
ETCD_CTL=3 etcdctl --endpoints=http://localhost:2379 get --prefix --keys-only --sort
ETCD_CTL=3 etcdctl --endpoints=http://localhost:2379 get --prefix="" --keys-only --sort
ETCD_CTL=3 etcdctl --endpoints=http://localhost:2379 get --keys-only --sort
ETCD_CTL=3 etcdctl --endpoints=http://localhost:2379 get --keys-only

 

728x90
728x90

AWS의 RDS로 postgresql을 선택하여 생성한 후에 접속을 하면 바로 안된다. ㅡㅡ;

외부접속이 막혀있을 수 있음.
-> security group에 들어가서 사용하는 포트(5432)가 인바운드에 열려있는지 확인

그냥 Db를 만들면 기본DB만 있음
connection에는 필수로 db명을 적어야 함.
따라서 최초 접속시에는 db명을 postgres 로 해야 함.
(아래 그림과 같이 db생성 전에는 구성에 DB 이름이 '-'임)

최초가 아니라 db를 생성했으면 해당 db명을 입력하면 됨.

728x90

GCP Mysql로 옮기기

2022. 12. 29. 16:19
728x90

1. DB서비스부터

 

mysql 선택

db설정

728x90
728x90

1. 현재 운영중인 mysql을 백업받는다.
xxx.sql 인경우도 있고, dump일 수도 있고

2. AWS 에서 Mysql 서비스를 생성한다.
생성 후 확인할 내용은
- 퍼블릭 액세스 가능 : 예 로 되어있어야 한다.
- 아니오로 되어있으면 같은 vpc 내에서만 접속되고 외부에서 접근 안됨.

 

그리고 security group에서 inboud에 포트(3306)이 열려있어야 한다.
열려있지 않으면 추가 필요

3. Mysql Workbench에서 connection을 추가한다.
 ( mysql 접속 명령이 가능하면 바로 접속해도 된다. )
- 엔드포인트가 접속주소(host)

3-1 접속이 되면 왼쪽메뉴에서 "MANAGEMENT > Data Import/Restore" 를 선택한다.
 - dump 인 경우 : Import from Dump Project Folder
 - sql 파일인 경우 Import Self-Contained File 을 선택하고
 Default Target Scheme 에 원하는 DB를 선택한다.(없으면 New버튼으로 생성한다)

"Start Import" 버튼으로 임포트 하면 끝~~~

728x90
728x90

Goorm 에서 이미지 팩으로 샘플프로젝트를 제공한다.
react랑 spring 환경구성이 되어있어 바로 시작하기 좋은데

해당 컨테이너를 생성해서 start.sh 를 실행시켜봤는데
spring 프로젝트는 run이 되는데 react는 안된다.

생성된 spring 프로젝트라도 접속해보려고 하면 접속이 되지 않는다

왜냐? 설정이 쪼~~금 더 필요하다.

프로젝트에 보면 readme.md 파일이 있는데 여기에 몇가지 추가설정이 필요하다고 설명이 친절하게 되어있다
그러나 우리는 읽어보지 않고 안될 때 검색을 통해 해결하지 ㅋㅋㅋ

우선 react project로 가서 추가모듈이 있는지 설정확인을 해야한다.
cd front
npm install

그 다음 주요한 거!!! port forwarding 작업이다. 이거 안하면 외부에서 접속 안됨 ㅎㅎ
상단메뉴의 [프로젝트] - [실행url 과 포트] 를 클릭
현재 80만 잡혀있으면 스프링(8080), 리액트(3000) 포트를 추가해야한다.
추가할 때 도메인 이름을 입력하면 됨.
예) front-react , 3000 을 주면 :  https://front-react.run.goorm.io 과  같이 접속할 수 있게 된다.

마지막으로 이 세팅을 빠뜨리면 제대로 동작하지 않을 수 있다.
cd front 에 가면 .env.developement 파일이 있다.
여기에 위에서 접속할 주소로 변경 해야 한다.
REACT_APP_SERVER_URI=

다 끝났으면 접속해 보자

우선 리액트는 3000번이므로
portforwarding에 설정한 도메인으로 입력하면 "currentTime= 어쩌구"하는 결과가 나온다.

그 다음 스프링 8080번이므로 마찬가지로 입력하보면
조금 당황스럽다.

Whitelabel Error Page

This application has no explicit mapping for /error, so you are seeing this as a fallback.

Sun Jul 31 01:45:28 UTC 2022
There was an unexpected error (type=Not Found, status=404).


포트를 입력해야하나? 했는데 필요없다.
사실 스프링 예제는 /hello 만 설정되어있기 때문이다.

 


READ.ME를 잘 읽어보자 ㅎㅎ

 

728x90
728x90

https://www.bezkoder.com/react-jwt-auth/

여러 예제가 있는 좋은 곳이다.

그런데.... 똑같이해도 실행이 되지 않는다.

ConnectionError [SequelizeConnectionError] : connect ETIMEDOUT

내용이야 뭐 연결시간 초과인데

원인은 해당 소스가 조금 오래되어서 약간의 변경이 필요하다.

Sequelize 설정에서

operatorsAliases : true 또는 false 로 되어있는것이 1 또는 0으로 바뀌어야 한다.
operatorsAliases :1

그리고 mysql 의 기본포트인 3306을 사용하면 문제가 없는데
다른 포트를 사용하는 경우에는 port정보를 넣어줘야 한다.
(근데 다들 포트를 변경안하는지 다른 예제에도 port 설정이 안보인다 ㅠ.ㅠ)
아래와 같이 포트정보를 추가하면 됨.

const config = require("../config/db.config.js");

const Sequelize = require("sequelize");
const sequelize = new Sequelize(
  config.DB,
  config.USER,
  config.PASSWORD,
  {
    host: config.HOST,
port: config.PORT,
    dialect: config.dialect,
    operatorsAliases: 1,

    pool: {
      max: config.pool.max,
      min: config.pool.min,
      acquire: config.pool.acquire,
      idle: config.pool.idle
    }
  }
);

 

정상적으로 설정이 되고 DB 접속에도 문제가 없으면

init에 의해 Create Table users, user_roles  및 select 쿼리가 로그로 찍힘.
user table 생성, role table 생성, role_user table 생성
role.id, user.id 를 참조하는 fk가 role_user table에 추가

 

ps : backend 를 spring으로 추가로 테스트하면
nodejs실행시키면서 자동으로 table 생성이 되었기 때문에
run하면 제약조건 생성 등 오류가 나지만
서버는 정상 가동 됨.
(table 모두 drop하고 가동 시키면 정상으로 될 것임)

node로 생성했을 때 table 설정에서 몇가지 빠지는게 있다.
encoding이 latin으로 되고
id 가 int 형인데 auto inc 가 꺼진채로 생성된다.
그리고 날짜도 default=now()로 넣어줘야한다.
user_role table에 제약조건이 걸려서 role table의 id를 auto inc 하려고 했더니 안되네...
user_role table 삭제 -> role table에 auto inc 추가 -> user_role table 추가로 재설정 함.

728x90
BLOG main image
"그게 뭐 어쨌다는 거냐?" 늘 누가 나에게 나에대한 말을할 때면 이말을 기억해라. by nobang

카테고리

nobang이야기 (1951)
Life With Gopro (7)
Life With Mini (79)
Diary (971)
너 그거 아니(do you know) (179)
난 그래 (159)
Study (290)
Cloud (26)
Go lang (30)
Front-end (27)
Device (3)
MAC (1)
Spring framework (49)
Java (13)
English (39)
SOA (0)
Idioms (7)
모르는거 (5)
WriteEnglish (10)
Android (56)
속지말자 (10)
Project (34)
Poem (15)
Song (0)
Photo (113)
낙서장 (45)
일정 (0)
C.A.P.i (2)
PodCast (0)
nobang (27)
고한친구들 (4)
recieve (0)
History (0)
android_app (2)

최근에 올라온 글

최근에 달린 댓글

최근에 받은 트랙백

Total :
Today : Yesterday :