Linux12 [이슈 로그] 리액트 애플리케이션 백그라운드 실행 리액트 애플리케이션을 백그라운드로 실행하기 위해 아래 커맨드를 입력했다.$ yarn dev --host 0.0.0.0 --mode production & 정상적으로 실행될 것이라는 기대와 다르게 에러가 발생한다.[5]+ Stopped (tty input) yarn dev --host 0.0.0.0 --mode production원인이 무엇일까?React 개발 서버(yarn dev)는 실행 중 터미널 입력을 필요로 하지만 이를 백그라운드에서 실행시켰으므로 터미널 입력을 처리하지 못하고 동작을 멈춘 것이다. 따라서 이는 TTY 입력 문제로 React 개발 서버는 백그라운드 실행 시에도 TTY 입력을 기본적으로 기다리는 특징을 이해해야 한다.해결은 nohup해결을 위해 nohup을 사용한다. n.. 개발일기/이슈 로그 2024. 12. 2. ubuntu환경에서 node 버전 올리기 ubuntu 초기 설정에서 신기한 일을 발견했다.apt install nodejsnpm을 사용할 일이 있어서 ubuntu환경에서 npm을 설치하고 버전을 확인해보면 아래와 같이 나온다.node -v# v12.0.~~현시점 nodejs 의 최신 LTS 버전은 v20.17.0이다. 한참 낮은 버전이 설치되는 이유는 뭘까? Ubuntu 리포지토리에서는 장기 지원(LTS) 버전에 대한 안정성을 중시하여 새로운 버전이 빠르게 반영되지 않는 경우가 많다. 특히, Nodejs와 같은 패키지는 업그레이드 시 호환성 문제를 최소화하기 위해 레포지토리에서 오래된 버전을 유지하는 경우가 많다.해결법해결법이 상당히 많다. 그중 하나만 소개해보겠다.sudo apt update# apt 에서 제공하는 node 설치sudo apt.. 개발일기/Linux 2024. 10. 1. [이슈로그] Alpine Linux에서 Nessus 다운로드 2 - 트러블 슈팅 .deb 파일을 디패키징나는 Alpine Linux 환경에 설치할 파일로 .deb 파일을 골랐다. .rpm을 골라도 상관없다. 우회가 목적이므로 정확한 원리와 함께 Linux 환경에서 .deb 파일을 디패키징하는 방법을 설명하겠다.Linux- Ubuntu-amd64 설치 파일 다운로드curl --request GET \\ --url '' \\ --output 'Nessus-10.8.2-ubuntu1604_amd64.deb'아카이브 추출.deb파일도 ar (Unix 아카이브) 형식을 사용하여 여러 파일을 하나로 묶는 방식으로 구성된다. 따라서 binutils 라이브러리를 이용하여 .deb라는 아카이브 파일에서 내용을 추출하는 방법을 활용한다.ar x Nessus-10.8.2-ubuntu1604_amd6.. 개발일기/이슈 로그 2024. 9. 9. [이슈로그] Alpine Linux에서 Nessus 다운로드 1 - 사건의 발단 취약점 분석 & Nessus란?취약점 분석이란 타겟 시스템에 공격(Exploitation)을 수행하기 전 타겟 시스템의 취약점에 대한 정보를 얻어내는 과정.Penetration Test Phases정보 수집(Reconnaissance) : 타겟에 대한 예비 데이터나 정보를 수집하는 것스캐닝(Scanning) : 실제 툴을 사용하여 타겟에 대해 더욱 자세한 정보를 얻고자 하는 것.공격(Exploitation) : 타겟으로부터 데이터를 뽑아내거나 다른 타겟을 공격하기 위해 그 장치를 이용하는 등 네트워크 장치의 주도권을 빼앗아 오는 것.후속 공격(Post-Exploitation) : 다음 사용을 위해 공격을 시행했던 장치의 주도권을 유지하거나 장치의 유용성을 판단하는 것.흔적 지우기(Covering Trac.. 개발일기/이슈 로그 2024. 9. 9. [Alpine Linux] Nginx 설치 및 실행 NginxNginx는 고성능의 오픈 소스 웹 서버 소프트웨어로 많은 웹 서버와 리버스 프록시로 널리 사용된다. 가볍고 확장 가능한 구조를 특징으로 하고 있으며 비동기 이벤트 기반 아키텍처로, 많은 동시 접속 요청을 효율적으로 처리하여 웹 사이트나 애플리케이션의 응답 속도와 성능을 향상시킬 수 있다. 뿐만 아니라, 가상 호스팅, 로드 밸런싱, SSL/TLS 암호화, URL 리다이렉션 등 다양한 기능을 제공하여 웹 서버의 유연성과 안정성을 높일 수 있는 등 현대적인 웹 애플리케이션의 요구사항을 충족시키기 위해 매우 유연하게 활용할 수 있다.필자의 프로젝트에서는 Nginx는 선택이 아니라 필수 사항일 정도로 중요한 기술 중 하나이다. Nginx에 VPN 연결을 위한 암호화가 설정되어 있고 이 스펙이 옮겨질 일.. 개발일기/이슈 로그 2024. 8. 13. [Spring + UDS] 6. Spring property 분리 코드는 OCP 원칙에 따라 변경에 닫혀있고 확장에 열려있어야 한다. 따라서 코드상에서 선언했던 SOCKET_PATH와 BUFFER_SIZE를 application.yml에서 설정하고 코드는 이를 받아 변수에 주입하도록 구현을 바꾸었다.전체 코드SocketProviderpackage com.example.test;import jakarta.annotation.PostConstruct;import jakarta.annotation.PreDestroy;import lombok.extern.slf4j.Slf4j;import org.newsclub.net.unix.AFSocketAddress;import org.newsclub.net.unix.AFUNIXSocket;import org.newsclub.net.un.. 개발일기/Spring + Unix Domain Socket 2024. 8. 8. [Spring + UDS] 2. JUNIXSocket GitHub - kohlschutter/junixsocket: Unix Domain Sockets in Java 7 and newer (AF_UNIX), AF_TIPC, AF_VSOCK, and more GitHub - kohlschutter/junixsocket: Unix Domain Sockets in Java 7 and newer (AF_UNIX), AF_TIPC, AF_VSOCK, and moreUnix Domain Sockets in Java 7 and newer (AF_UNIX), AF_TIPC, AF_VSOCK, and more - kohlschutter/junixsocketgithub.comJUNIXSocket 라이브러리는 자바 환경에서 Unix Domain Socket과 다른 AF, PF.. 개발일기/Spring + Unix Domain Socket 2024. 8. 8. [Spring + UDS] 1. 사건의 발단… 지난주 ICTK에서의 업무가 정해졌다. 기존에 공부했던 웹 개발 스펙을 활용하여 qTrustVPN의 관리자 웹을 개선하는 것이다. 기존 시스템은 구조가 상당히 특이하다. frontend는 Vue.js(Vue2), 웹서버로 nginx, 그리고 nginx에 혹처럼 달려있는 php fpm, WAS로 c로 작성된 daemon(이하 c server라 말함)이 동작하고 있고 php와 c server가 UDS(Unix Domain Socket)을 활용하여 통신하고 있었다.기존에 프로젝트에 웹 개발 경험자가 없어서 구조가 특이하게 잡혔고 php와 c를 활용하여 개발하다 보니 구조가 이렇게 잡혔다고 들었다.현재로 돌아와서 새로운 시스템을 만드는데에 기술적인 제약을 두고 있지 않고 여러 기술 스택을 오픈마인드로 본다고 하.. 개발일기/Spring + Unix Domain Socket 2024. 8. 8. [Linux] 활성화된 유닉스 도메인 목록 # macOSnetstat -a -f unix# Ubuntunetstat -a -p --unix# Alpinenetstat -a -p unixnetstat 명령어를 이용하면 현재 활성화된 유닉스 도메인 소켓 목록을 볼 수 있다. 개발일기/이슈 로그 2024. 8. 7. [Linux] jar 백그라운드 실행 및 로그 남기기 jar 실행의 방법은 3가지이다.1. jar 파일 그냥 실행java -jar *.jar2. 백그라운드 실행java -jar *.jar &이는 사용자가 SSH session을 종료하면 데몬도 함께 내려간다.3. 백그라운드에서 계속 실행nohup java -jar *.jar &session이 끊겨도 프로세스는 계속남아 동작하게 된다.4. jar 종료jar 종료는 아래와 같다.ps -ef | grep '*'kill -15 [pid]첫 번째 명령어로 pid를 찾고 프로세스를 죽인다.실행과 함께 로그를 남겨보자. 이 방법도 두 가지이다.A. Log overwirte(>)nohup java -jar *.jar > Log.log &overwrite 방법은 기존에 있던 파일의 내용이 사라지고 덮어 씌워진다.B. Log.. 개발일기/이슈 로그 2024. 8. 6. [Linux] alpine linux jdk 설치 이슈 localhost:~/test/test# apk add openjdk21ERROR: unable to select packages: openjdk21 (no such package): required by: world[openjdk21]alpine linux에서 jdk21 버전 설치하려니까 위 문구로 에러가 나면서 설치가 안된다.이유는?openjdk is in the community repo. It seems that you didn't enable community repo. Go ahead and first enable community repo by uncommenting the community repo in /etc/apk/repositories, then run apk update t.. 개발일기/이슈 로그 2024. 8. 6. [Linux] git-cli 초기 설정 필자가 사용한 환경은 Alpine-linux이다. 독자들의 linux 환경에 맞게 센스있게 명령어를 재구성하자.일단 Alpine linux는 ubuntu와 다르게 package install 에 apt가 아닌 apk를 사용한다.apk add gitgit을 설치해주자아무 repo나 clone으로 땡겨오려고 시도하면 인증에 가로막힌다.이렇게 Username과 Password를 치라고 한다. 아마 이메일과 비밀번호를 치면 아래와 같은 경고 문구가 나오면서 clone이 진행되지 않는다.remote: Support for password authentication was removed on August 13, 2021.remote: Please see \ for information on currently re.. 개발일기/이슈 로그 2024. 8. 6. 이전 1 다음