본문 바로가기

전체 글65

[NodeJS & Express] 타입스크립트(TypeScript) 환경에서 API 구현 이번 포스트에서는 TypeScript를 사용해 NodeJS, Express 프레임워크 환경에서 API 서버 구축 기초 내용을 공유한다. 지금까지 순수 자바스크립트로 작업을 했던 나에게 타입스크립트를 적용하는 건 좋은 공부가 되었다. 1. 개발 환경 세팅 먼저 작업할 워크 스페이스와 node, npm이 잘 설치되어 있는지 확인한다. 설치가 확인되면 작업 공간에 node 초기화를 진행한다. # 워크 스페이스 생성 mkdir ts-node && cd ts-node # node, npm 설치확인 node -v npm -v # node 초기화 (package.json) node init 2. 의존성 패키지 설치 ( Dependency ) 기본적인 서버 구동에 필요한 패키지만 설치한다. 이번에 설치한 라이브러리들은.. 2023. 2. 15.
[Docker] 도커 파일(Dockerfile) 속성 정리 이전 포스트에서 도커 실행 방법과 함께 도커 파일에 대해 정리한 적 있다. 이후 포스트에서 도커와 관련해 여러 실행 케이스를 공유할 예정인데, 그전에 도커 파일 내부 속성값에 대해 전체적으로 알아보고 정리하고자 한다. 속성값 FROM 도커 베이스 이미지를 명시한다. OS나 Runtime 환경 등을 지정한다. 지정된 이미지는 도커 허브(Docker Hub)를 참조해 자동으로 세팅된다. LABEL Key-Value의 라벨을 생성한다. 라벨 정보는 Meta 데이터와 같다. 주로 버전 정보, 생성자, 생성일 등 해당 이미지 파일에 대한 부가 정보를 명시한다. 이 옵션은 컨테이너가 실행될 때, 실행된다. WORKDIR 도커를 통해 실행될 컨테이너 내부 작업공간(= 워크 스페이스) 경로를 기입한다. 설정 경로를 베.. 2023. 2. 14.
[Docker] 도커 허브(Docker Hub)를 활용한 MySQL 설치, 접속 앞서 도커 이미지와 컨테이너에 대한 내용을 정리했다. 이번 포스트에서는 이러한 이미지를 보다 잘 유용하게 사용할 수 있게 도움 받을 수 있는 도커 허브(Docker Hub)에 대한 내용을 공유하고자 한다. 더불어, 실제로 도커 허브를 통해 mysql 이미지를 받아와 로컬에서 실행하는 작업도 같이 할 예정이다. 1. 도커 허브(Docker Hub)란? 도커 허브는 이름에서부터 어렴풋이나마 유추할 수 있듯, 도커를 통해 실행할 수 있는 이미지 소스를 저장하거나 빌려올 수 있는 저장소 개념이다. 깃허브와 같이 본인 계정을 등록하면 개인 저장소처럼 개인 저장소를 가질 수도 있고, 커뮤니티처럼 다른 사람과 이미지를 공유할 수 있다. 도커 허브의 가장 큰 장점이라고 생각하는 점은 다양한 개발 환경 혹은 툴에 대한 .. 2023. 2. 13.
[Docker] 도커(docker) 빌드(build) 및 실행(run)하기 - Dockerfile 이번 포스트에서 도커를 사용해 이미지를 빌드하고 실행하는 방법을 정리하고자 한다. 본문에서 NodeJS 환경에서 빌드와 실행을 진행한 예제 코드를 소개한다. 여기서, dockerfile이라는 설정 파일을 사용하게 되는데, 파일 내부에서 이미지를 만드는데 필요한 설정값을 작성한다. 자세한 내용은 주석과 함께 작성했다. 진행하기 앞서, PC에 도커 데스크탑(Docker Desktop)이 설치되어 있는지 확인하자. 아직 설치하지 않았다면 [ 링크 ] 를 통해 데스크탑용 도커를 미리 설치하도록 하자. * 도커 데스크탑(Docker Desktop)이란? 도커 데스크탑(Docker Desktop)은 로컬에서 이미지를 빌드하고 컨테이너를 만들기 위해 필요한 도커 엔진(Docker Engine)을 사용하게 도와주는 툴.. 2023. 2. 12.
[Docker] 도커(docker)란? - image와 container에 대해 근래 실무에서 접하고, 개인 프로젝트를 진행하면서 도커라는 기술의 편리함과 효율성을 체감하게 되었다. 특히, 로컬 환경에서 개발환경을 구축할 때, 도커를 사용하면 시간만 잡아먹을 중간 과정을 모두 생략하고 진행할 수 있다는 점에서 큰 매리트를 느꼈다. 이번 카테고리 포스트에서 지금까지 도커에 대해 공부했던 내용과 실제 사용 방법을 차근차근 정리해 올리려고 한다. 1. 도커(docker)란? 공식문서를 보면, 도커(docker)란 소프트웨어 패키지를 컨테이너(container)라는 유닛(unit)으로 생성하고 관리하는 기술이라고 소개한다. 이에 대한 내용을 풀어보면 다음과 같이 정리할 수 있다. 소프트웨어(= 애플리케이션)를 컨테이너(container)라는 단위로 패키지화시킨다는 것. 컨테이너가 생성될 때.. 2023. 2. 12.
[Github] 깃허브 원격 저장소 합치기 ( git subtree ) 최근 개인 깃허브 저장소를 정리할 필요성을 느꼈다. 생각 없이 commit 하고 push 할 때는 몰랐지만, 정신 차리고 보니 충분히 그룹화시킬 수 있는 소스들이 무질서하게 쌓여있는 걸 보면서 깔끔하게 정리해야겠다는 생각을 하게 되었다. 오래된 코드지만 삭제하기는 싫고, 기록했던 내용을 보관하고 싶다는 마음에 방법이 없을까 찾아보던 중 git에서 제공하는 subtree라는 기능에서 답을 찾을 수 있다. 1. Subtree 란 subtree는 git 저장소 내부에 또 다른 저장소를 두어 관리할 수 있게 도와주는 기능이다. 이 기능을 사용하면, 저장소 내부에 같은 주제(혹은 목적)를 가진 저장소들을 위치시켜 통합적으로 관리할 수 있다. 내 경우를 예로 들면, 프로그래밍 테마 별로 깃허브 저장소를 그룹화시켰다.. 2023. 2. 12.
[Github] 깃허브 CLI 로그인 이슈, Access Token - 'fatal: Authentication failed for ...' 이번 포스트에서는 CLI 환경에서 깃허브 계정으로 원격 저장소 접속 할 때, 당황할 수 있는 로그인 이슈를 정리했다. 1. 이슈 상황 해당 이슈는 로컬에서 iterm이나 gitbash와 같은 CLI로 깃허브에 저장된 소스코드를 가져올 때, 경험할 수 있다. 나 같은 경우 이번에 개인 PC를 바꾸게 되면서 깃허브에 있던 소스 코드를 가져오려 하는데 이 문제를 마주했다. Public 저장소였기 때문에 URL로 소스코드 Clone까지는 문제없었지만, push 상황에서 아래 에러 코드를 만났다. # push 명령어 git push origin master # 에러 로그 > remote: Support for password authentication was removed on August 13, 2021. re.. 2023. 2. 11.
[Java] Spring Boot에서 HikariCP 설정 최근 유지 보수하는 서비스에 사용자가 몰리면서 DB 커넥션 관리를 위해 DB 튜닝과 HikariCP 설정 변경을 진행했다. 이번 포스트에서 HikariCP 설정에 대해 정리하는 내용을 담으려고 한다. HikariCP 설정 이유 Spring Boot 2.0 버전부터 HikariCP가 디폴트 JDBC Connection Pool 관리 도구로 적용된다. 주로 Spring Boot 환경에서 작업하는 나에게 HikariCP는 프로퍼티 파일에서 쉽게 확인할 수 있는 툴이다. HikariCP는 API에서 DB Connection를 관리한다. 얼마만큼 Pool을 주고, 유지할 건지. 트렌젝션 유효시간(idle time-out)은 얼마로 설정할 건지 등을 설정할 수 있다. 이러한 설정을 제대로 해주지 않으면, API에 .. 2022. 11. 11.
[Gitlab] Ubuntu에서 Gitlab 설치 (gitlab-ce) 이번 포스트에서는 Ubuntu 서버에서 실행할 Gitlab에 대한 설치법을 간단히 정리한다. 필수 의존성 패키지 다운 # Ubuntu 패키지 매니저 업데이트 sudo apt-get update # 의존성 패키지 다운로드 (openssh-server, ca-certificates) sudo apt-get install curl openssh-server ca-certificates 이메일 알림 설정 (선택) 이 단계는 Gitlab에서 메일 서비스를 사용하길 원할 경우 진행한다. # postfix 다운 sudo apt-get install postfix 패키지 다운 GItlab 패키지는 CE(Community-Eddition, 커뮤니티 버전)과 EE (Enterprise-Eddition, 엔터프라이즈 버전).. 2022. 11. 6.
[Logging] logrotate, cron & crontab을 활용한 로그 파일 관리 이번 포스트에서는 Ubuntu 서버 내에서 스케쥴링 패키지인 Cron, Crontab을 활용한 로깅 방법을 공유한다. 서버 내부에 쌓이는 로그 파일을 정해진 시간에 분리 및 압축(.gz)하여 효과적으로 관리할 수 있다. logrotate & Cron과 Crontab을 사용한 2가지 방법을 기록해두었다. 1. logrotate와 cron 활용 logrotate는 apache-utils 패키지에 있는 로그 관리 툴이다. logrotate에서는 로그 파일을 어떻게 관리할지를 지정한다. 생성 주기, 파일 권한, 저장 경로, 저장 형태 등의 속성을 주입할 수 있다. 그리고 cron은 서버 내 자동 스케쥴러 패키지로 서버 시간에 맞춰 지정한 작업이 수행하는 툴이다. logrotate는 온전히 로깅에 대한 설정만 관.. 2022. 11. 6.
[Tomcat] 톰켓 프로세스 종료 이슈 (shutdown 시 PID 남음) 이슈 내용 Tomcat을 종료하는 스크립트(shutdown.sh)를 실행했지만 프로세스가 죽지 않고 그대로 남는다. netstate -tnlp 상으로는 확인되지 않고, ps -ef 상으로는 PID 번호가 확인된다. 기존 프로세스를 kill하지 않으면 tomcat 재실행(startup.sh) 시, 같은 프로세스가 2개 돌게 된다. # 톰켓 shutdown 후, ps -ef # pid가 남아있음 ps -ef | grep Batch > user 12345 ... 00:00:25 /usr/bin/java -Djava.util.logging.config.file=/tomcat-path/conf/... # 톰켓 shutdown 후, netstat -tnlp # 애플리케이션 port는 닫힘 netstat -tnlp .. 2022. 11. 6.
[Apache] 설정 검사(configtest) 및 활성화(a2enmod) - rewrite, ssl, proxy 아파치 설정 검사 설정 파일의 문법을 검사한다. 실행 시 발생할 수 있는 문법적 에러를 테스트할 수 있게 도와주는 명령어다. 설정 파일(.conf)을 변경하고, 적용하기 전 단계에서 유효성을 미리 검증받을 수 있다. # 아파치 설정 검사 apachectl configtest # 에러 발생 포인트가 없다면 OK 반환 > Syntax OK 아파치 설정 활성화 아파치 설정 파일에는 여러 옵션을 넣을 수 있다. 특정 Host, IP, URL에 따른 리다이렉트 옵션을 지정하는 rewrite HTTPS 프로토콜을 위한 인증서 옵션을 지정하는 ssl 다른 내부 네트워크와 연동을 위한 proxy 중요한 점은 Ubuntu 기준, apache를 처음 설치했을 때, 위 옵션이 자동으로 활성화(enabled)되지 않는다는 사.. 2022. 6. 26.