CS
24. 11. 4. 개발일지 // 자동배포, nginx 설정
* 자동배포 구현github 세팅 > Actions에 .pem 의 내용 붙여넣기주의 : 이때 .pem은 root 계정의 비밀번호 확인전용, 이것으로 로그인불가!추가로 user명/.ssh/auth 에 공개키 방식으로 추가 키 생성필요!ec2에 node 설치 (ssh 원격접속후)sudo apt-get update && /sudo apt-get install -y ca-certificates curl gnupg && /mkdir -p /etc/apt/keyrings && /curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | sudo gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg && /NODE..
[Linux] OS 비교
각 서버 OS의 장단점을 비교하고 상황별 최적의 선택을 설명해드리겠습니다.graph TB subgraph "Linux Based" Ubuntu[Ubuntu빠른 업데이트큰 커뮤니티] CentOS[CentOS안정성기업용] Rocky[Rocky LinuxCentOS 대체제RHEL 호환] end subgraph "Others" Windows[Windows Server.NET 환경GUI 관리] NaviX[NixOS선언적 구성재현 가능한 배포] end DevOps[DevOps 환경] --> Ubuntu Enterprise[기업 환경] --> CentOS Migration[RHEL 마이그레이션] --> Rocky ..
[Redis] Redis 사용방법, 세션 불일치 해결
* 개요게임방의 상태를 보여주기 위해 게임방별로 멤버들의 정보를 담을 저장소가 필요하다.이를 어디에 저장할것인가를 결정한다.저장소는 세션 불일치 문제를 해결해야한다.복잡성이 적어야 한다. * 세션 불일치 해결방법sticky session로드밸런서가 사용자1의 요청을 해당 세션을 가지고있는 서버로 매핑시켜주는 방법set-cookie = SERVERID=서버1 이런형식매번 set-cookie를 해야해서 번거롭다.최악의경우 로드밸런싱이 무의미하다. (특성 서버로 요청이 몰리는경우)장애발생시 정보를 모두 잃게된다.방법2 : 세션 클러스터링단점 : 세팅이복잡하다. 복제 직전에 조회하는경우 데이터 정합성이 깨질수있다. 네트워크 비용증가. 방법3 : 세션 스토리지 (Disk, 인메모리)Disk 방식장점 : 유실이 되..
24. 10. 20. 개발일지 // private 저장소 public으로 전환방법, mirror clone
* private 저장소 public으로 전환방법# 1. 기존의 fork한 저장소를 로컬에 클론합니다.git clone https://github.com/your-username/forked-private-repo.gitcd forked-private-repo# 2. 모든 브랜치와 태그를 포함하여 미러 클론을 생성합니다.git clone --mirror https://github.com/your-username/forked-private-repo.git temp-bare-clonecd temp-bare-clone# 3. GitHub에서 새로운 public 저장소를 생성합니다 (웹 인터페이스에서 수행).# 4. 새로 생성한 public 저장소를 원격 저장소로 추가합니다.git remote add publi..
github cli를 이용한 issue 생성하기 // window
* 문제상황노션에 백로그 작성용 마일스톤, task들이 작성되있는 상황이다.이를 github project에 옮기려는 상황이다.반복되는 복사붙여넣기 작업을 해결하기 위한 방법을 찾아보자.github cli로 해결해보자. * github cli우선 window용 cli를 설치한다.powershell을 관리자 권한으로 실행한다.gh auth login 한다.이후 깃허브 페이지가 열리면 코드를 붙여넣는다.원하는 저장소의 프로젝트선택, 확인이슈생성하기 문제 : line by line으로 입력시, 너무 비효율적해결 : window의경우 .bat 을 이용해서 여러 명령어를 실행시킬 수 있다. (linux의 bash 느낌)아래와같이 만들고다른이름으로 저장 > 주의 : 반드시 인코딩을 ANSI로 해야 한글깨짐현상이 해..
[Redis] Redis를 이용한 우아한 조회수 증가
* 조회수 증가 구현의문 : 조회수가 +1 될때마다 db에 update 를 하는게 좋은가?사용자가 100명일때 한게시물을 조회하는 경우 -> 100개의 db update 쿼리 critical 한 정보가 아니기때문에 얻는 이득대비 db 비용이 크다고 생각한다.개선 : 레디스캐시에 조회수를두고 여기에 업데이트한다.5분마다 db에 업데이트 쿼리를 날린다.5분에 1번만 db에 update 쿼리를 날린다. 우분투에 redis설치* 리눅스서버의 redis 연결config참고로 host에 192로 시작하는 내부ip를 입력해야 작동한다. dotenv.config해야 제대로 .env 파일의 내용을 불러온다.import { createClient } from 'redis';import * as dotenv from 'do..
[DB] db에 데이터넣기, 인덱스
* db에 데이터 넣기초안문제 : connection timeout error-- User 테이블 생성CREATE TABLE IF NOT EXISTS `User` ( `id` INT AUTO_INCREMENT PRIMARY KEY, `nickname` VARCHAR(30) NOT NULL, `rank` INT NOT NULL CHECK (`rank` BETWEEN 1 AND 10), `money` BIGINT NOT NULL CHECK (`money` BETWEEN 1 AND 99999999), `start_date` DATE NOT NULL, `last_login` DATETIME);-- 인덱스 생성CREATE INDEX idx_user_rank ON `User`(`rank`);CREATE..
24. 9. 11. 개발일지 / 자동배포, git, 구조분해할당 , \r 명령어를 찾을수 없음 해결
* 자동배포private 저장소 가져오기방법1 : ssh 이용방법2 : 토큰이용 (보안 issued) 보안이슈가 있지만 1번이 잘 안되기도 하고 연습용으로 방법2로 진행함(애초에 서버에 접근가능해서 파일을 마음대로 읽을수있을 상황이면 이미 서버가 털린상황이라고 생각)chmod 700 /home/bisu/scripts/git-pass.shdeploy.sh 작성변경사항이 있는지 확인하는법 honux version#!/usr/bin/bash # by honuxcd dirgit reset --hardgit fetchLOCAL='git rev-parse HEAD'REMOTE='git rev-parse origin/J160'if [[ $LOCAL == $REMOTE ]]; then #가리키는게 같으면 변경사항이 없..