Programming/Linux

Node js로 backend 개발기

빠릿베짱이 2018. 12. 28. 10:59
반응형



 개발 시 자주 사용하는 기능

 

빌드명령 :  babel src -d dist

  • Git 명령어
  git status  
  git add .   
  git commit -m "코멘트"  
  git push  

MAC 개발환경

- cocoapods 설치

sudo gem install cocoapods

ios 폴더가서 pod install





 VS Code 설정

 

1. SSH FS 플러그인 설치

2. 환경 설정

파일 -> Setting -> Workspace setting(탭) -> 좌측 Extenstion에서 SSH FS Configuration 선택 -> Edit in Settings.json 클릭

{
      "sshfs.configs": [
         {
            "label": "moco_server",
            "root": "/home/server", //연결할 디렉토리 설정
            "host": "호스트도메인",
            "port": 22,
            "username": "sijoo", //유저이름
            "agent": "pageant",
            "privateKeyPath": "D:/azure_server_key.ppk", //ssh private key
            "name": "moco_server"
         }
      ]
   }


Explorer에서 SSH FILE SYSTEM에서 연결하여 사용


3. 터미널 ssh 연동하기

1) plink로 연동까지는 했는데, escape code가 정상적으로 화면에 나타나지 않아서, 일단 포기 하고, git-bash 이용해서 처리함.

2) open ssh의 경우 putty keygen으로 생성한 private key와 포멧이 달라서 인식이 제대로 안됨.

3) openssh keygen으로 새로 만들거나, puttygen을 이용해서 컨버팅 해야함

4) VSCode 설정


"terminal.integrated.shell.windows": "C:\\Program Files\\Git\\bin\\bash.exe",
"terminal.integrated.shellArgs.windows": [
"-c",
"ssh -i 'D:\\android_key\\azure' 유저@호스트"
]


 Node 설치

 

  • 우분투 16.04에서 apt install로 설치했더니, 노드 버전이 4.6 이 설치되었다. 로컬에서 개발한 버전은 10점대였는데..
  • 역시나 npm install에서 에러 발생
  • node 를 10점대로 설치 : https://websiteforstudents.com/install-the-latest-node-js-and-nmp-packages-on-ubuntu-16-04-18-04-lts/
    • 요약
      • sudo apt install curl
      • curl -sL https://deb.nodesource.com/setup_10.x | sudo bash -
      • sudo apt install nodejs
      • node -v 
      • npm -v 
  • npm install 시 오류
    • package-lock.json 을 로컬에서 복사했는데, 이 문제로 인한 것으로 추정됨.
    • package-lock.json 지우고  node_modules 폴더 삭제 후 npm install 했더니 문제 없음
    • persisted query 때문에 redis를 사용했는데, 없어서 오류
      • 설치 방법 : http://bong8nim.com/post/programming/redis/ubuntu-16-04-install-redis/
      • persisted query 하느라 개고생 했음.
        • query의 경우는 쉽게 가능함. 서버에서 등록된 해쉬가 없는 경우 결과 코드에 200과 키가 없다는 메시지를 응답으로 주는데, 클라에서 콜백이 잘 올라옴..
        • 문제는 파일 전송 mutation임. multipart/data 형태로 form을 이용해서 전송하는데, 이 경우에는 서버에서 결과 코드 200으로 키 해쉬가 등록되지 않았다고 해도 클라쪽으로 응답이 올라오지 않음.. apollo client도 이용해봤고, axios도 이용해 봤으나 같은 결과임. apollo client를 이용할 경우 persisted query를 컨트롤 하는게 쉽지 않아서 axios로 하기로 결정함.
        • 쿼리에 대한 해쉬 값은 아폴로 서버와 생성하는 로직이 같아야 함. 왜냐하면, 키 해쉬 등록할때, 클라에서 온 해쉬값과 서버에서 생성한 해쉬값을 비교해서 같지 않으면 400을 리턴함.

 Sequelize를 이용해서 Azure postgresql 연동

 

  • SSL 설정 때문에 계속 삽질을 했음.
  • ssl, native 옵션을  true로 하면 된다더니, 안되서 몇시간 삽질 중 해결책 찾음

const fs = require('fs'); module.exports = { development: { username: 'database_dev', password: 'database_dev', database: 'database_dev', host: '127.0.0.1', dialect: 'mysql' }, test: { username: 'database_test', password: null, database: 'database_test', host: '127.0.0.1', dialect: 'mysql' }, production: { username: process.env.DB_USERNAME, password: process.env.DB_PASSWORD, database: process.env.DB_NAME, host: process.env.DB_HOSTNAME, dialect: 'mysql', dialectOptions: { ssl: { ca: fs.readFileSync(__dirname + '/mysql-ca-master.crt') } } } };


const fs = require('fs');

let sslrootcert = '경로/.postgresql/root.crt'

let sequelize = new Sequelize(
'디비이름',
'유저이름',
'비번', {
host : '호스트주소.postgres.database.azure.com',
port : 5432,
dialect: 'postgres',
dialectOptions: {
ssl: {
ca: fs.readFileSync(sslrootcert)
}
},
// logging: false, //sql query log print
operatorsAliases: false // sequelize deprecated String based operators are now deprecated. Please use Symbol based operators for better security
},
);


아마도 문제는 crt 일텐데, 만드는 방법은 아래에 잘 설명되어 있음

https://docs.microsoft.com/ko-kr/azure/postgresql/concepts-ssl-connection-security







반응형