Skip to content

pjw5521/X_TWICE_BackEnd

 
 

Repository files navigation

X_TWICE_프로젝트명 개발 명세

개발 환경

  • 언어 : Typescript
  • 웹서버 : Koa
  • DBMS, ORM : mysql, TypeORM
  • 인증 : jsonwebtoken

인증 처리

  • 일반 사용자
    • JWT Token 사용
  • 관리자 - 웹
    • 등록된 ID, PW를 통해 로그인

실행 명령어

  • npm run dev : 개발 환경으로 실행
  • npm run start : pm2로 실행
  • npm run restart : 기존 pm2 프로세스 삭제 후 재실행
  • npm run build : build 파일 생성
  • npm run rebuild : 기존 build 파일 삭제 후 재생성

디렉터리 및 파일

  • build : 운영 환경이나 테스트 환경에서 배포
  • src : 소스 코드
    • index.ts : 서버 실행 ts 파일
    • env.ts : 환경변수 ts 파일
    • configs : Typeorm 설정 관련 디렉터리
    • entities : Entity 관련 디렉터리
    • controllers : Controller 관련 디렉터리
    • middlewares : Middleware 관련 디렉터리
    • models : validation 관련 디렉터리
    • types : Data, HttpStatus, Swagger, Jsonwebtoken 관련 type 정의 디렉터리
    • utils : Jsonwebtoken 관련 디렉터리
  • .env : 전역 환경 변수들(누출 유의, 누출 시 신속하게 변경 바람)
    NODE_ENV=현재 환경 변수 - production(프로덕션용), develop(개발용), test(테스트용)
    DB_HOST=DBMS 접속 경로
    DB_PORT=DBMS 접속 포트 번호
    DB_USERNAME=DBMS 접속 유저명
    DB_PASSWORD=DBMS 접속 비밀번호
    DB_DATABASE=DBMS 접속 데이터베이스명
    DB_CHARSET=DBMS 접속 캐릭터셋 - utf8mb4
    
  • .gitignore : Git에 올릴 시 무시할 파일 및 파일의 이름이나 경로, 적용 시 git rm -r --cached . 명령어 입력
  • package.json : npm 패키지 설정 파일
  • package.json.lock : npm 패키지의 Lock 파일, 버전의 업그레이드 및 다운그레이드를 설치 때마다 Lock을 걸음
  • tsconfig.json : Typescript 설정 파일
  • ecosystem.config.js : pm2 실행 환경 설정 파일
    name : 프로세스 이름
    script : 실행시킬 파일 경로
    env : 배포 환경
    

nginx 설정

  1. sudo apt-get install nginx nginx 설치
  2. sudo nano /etc/nginx/sites-enabled/default nginx 설정 파일 오픈
  3. 아래 내용 추가 ( https ssl 인증서는 standalone 사용 )
    server{ 
        listen 443 ssl default_server; 
        listen [::]:443 ssl default_server; // 443 : Https default server 
    
        index index.html index.htm index.nginx-debian.html 
        server_name sw.uos.ac.kr; // server 이름 
        ssl_certificate /etc/letsencrypt/live/sw.uos.ac.kr/fullchain.pem; // https ssl 인증서 공개키 
        ssl_certificate_key /etc/letsencrypt/live/sw.uos.ac.kr/privkey.pem; // https ssl 인증서 비밀키
        location / {
            proxy_pass http://172.16.163.74:4004; // 4004 Frontend 포트 번호 
        }
    
        location /backend/ {
            proxy_pass http://172.16.163.74:4000/; // 4000 Backend 포트 번호 
        }
    
        location /ai/ {
            proxy_pass http://172.16.163.74:8000/; // 8000 AI 포트 번호
        }
    }   
    



X_TWICE_프로젝트명 서버(Server)

서버 환경

  • 운영체제 : Ubuntu 18.04 LTS
  • GPU : NVIDIA GTX 1080 Ti

NodeJS 설치

  1. curl -sL https://deb.nodesource.com/setup_10.x | sudo bash - 으로 NodeJS 10 저장소 위치를 변경
  2. sudo apt install nodejs 으로 node js 설치
  3. node -v로 NodeJS 버전 확인하고, npm -v으로 NPM 버전 확인
  4. sudo npm install -g yarn pm2으로 전역으로 Yarn과 PM2를 설치

특정 Port 오픈 시

  • sudo iptables -I INPUT 1 -p tcp --dport 포트번호 -j ACCEPT : 외부에서 내부로 들어오는 TCP 포트번호를 1번 방화벽 규칙으로 추가

오픈되어 있는 Port 확인 시

  • netstat -nap : 열려있는 port 리스트 출력

포트 프로세스 충돌 시

  • sudo kill -9 `sudo lsof -t -i:포트번호 : 포토번호와 관련된 모든 프로세스를 종료



X_TWICE_프로젝트명 DB(Database)

DB 환경

  • DBMS : mysql 5.7

DB 파라미터 설정

  • character_set_client : utf8mb4
  • character_set_connection : utf8mb4
  • character_set_database : utf8mb4
  • character_set_filesystem : utf8mb4
  • character_set_results : utf8mb4
  • character_set_server : utf8mb4
  • collation_connection : utf8mb4_unicode_ci
  • collation_server : utf8mb4_unicode_ci
  • time_zone : Asia/Seoul

DB별 계정 권한

  • test : 개발용 DB
    • root : 모든 권한

mysql port open 시

  1. sudo nano /etc/mysql/my.cnf 또는 sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf으로 mysql 설정 관련 cnf 파일 오픈
  2. bind-address = 127.0.0.1, mysqlx-bind-address = 127.0.0.1 주석 처리
  3. sudo service mysql restart으로 mysql 재시작

mysql 접속

  • sudo mysql -u root -p : mysql에 root로 접속

mysql 사용자 조회

  1. use mysql
  2. select user, host from user

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • TypeScript 99.1%
  • Other 0.9%