반응형

전체 글 414

[작업] 내 서버에 SSL 인증서 달기 -1 (Let's Encrypt, certbot, 가비아)

계획은 다음과 같다.1. nginx로 80/443 서비스 포트를 오픈한다.(공유기 포트포워드 설정)2. 80 포트는 443 포트로 포워딩하고3. web1.javajava.co.kr , web2.javajava.co.kr 등으로 nginx에서 분기를 해줄 것이다. web1은 포트폴리오용, web2는 개인 개발 배포용으로 생각하고 있다.4. 먼저 수동으로 ssl 적용을 할 것이다. 이때 ssl 수동 발급 절차를 면밀히 관찰 및 기록한다. 특히 가비아 웹 사이트에서 도메인 관리를 설정하는 부분은 WireShark 및 개발자 도구로 패킷과 쿠키 등을 잘 관찰 및 기록해 둔다.5. 4의 과정을 자동화한다.조사한 바에 의하면 Let's Encrypt라는 CA(인증 기관)를 통해 내 도메인의 인증서를 발급받을 수 있..

[홈서버] 개발자라면 홈 서버를 직접 구축해봐야하는 이유 (인텔 N150)

집에 서버를 두고 싶다는 생각만 1년 정도하다가 미니 PC를 구입했다. 인텔 N150 베어본을 151,900원에 구입하고 256GB SSD 34,500원, 16GB 메모리 48,900원으로 235,300원이 들었다. ( 네이버포인트 9,520원 쌓였으니 225,780원 들었다. )라즈베리파이를 사서 각종 센서를 달아보며 노는 것도 생각해보았으나 미니PC가 가격대비 더 합리적이라는 생각이 들었다.  내 서버가 생기니 누가 시키지 않아도 자연스럽게 이것저것 하게 되는데 이 과정에서 많이 배울 수 있었다. 그리고 앞으로 해볼 것들을 생각하면 참 기대가 된다. 이를 리스트로 정리해보았다.[나만의 홈 서버를 만들어보면 좋은 점들]1. 가격 대비 성능을 비교하는 눈이 생긴다    : 내 돈을 쓰기 때문, 공부가 아..

[기타] 삼천포로 빠지는 과정

1. 코틀린 기초 문법을 익히고자 함 (사이드 프로젝트를 위함)2. Vim으로 .kt파일 작성3. 코틀린 컴파일 방법을 알고자 함4. kotlinc -help 로 방법을 찾아봄 -> kotlinc Test.kt 로 컴파일 진행하여 Hello Kotlin 해봄..5. 문득 클래스패스 설정에 대해 찾아보고 싶어짐6. javac 커맨드에서 --class-path 옵션을 찾아봄 -> 옵션을 주지 않으면 현재 디렉터리가 디폴트7. 유저 클래스파일들과 '어노테이션 프로세서'들을 명시한다는 부분에서 '어노테이션 프로세서'가 궁금해짐8. javax.annotation.processing와 javax.lang.model에 정의 되어있다고 함9. rt.jar안에서 확인해보고자 함10. jdk14.0.1 디렉터리 안에 rt..

개발/개발 2025.03.09

[작업] 홈 서버를 설치하던 중 SSD 135GB가 Free가 되었다.

[요약]1. 기본 설정으로 OS를 설치하면서 할당되지 않았던 135GB를 논리 볼륨으로 /data 경로에 마운트하였다.2. 파티셔닝->물리볼륨->볼륨그룹->논리볼륨->포매팅->마운트의 과정 중 논리볼륨생성부터 마운트까지 진행하였다.3. PV, VG, LV의 개념을 잘 몰랐었는데 파티션을 직접 마운트 하는 것 보다 더 유연하게 설정을 바꿔줄 수 있는 것 같다.[관련 명령어]#> fdisk -l#> vgdisplay#> lvdisplay#> pvdisplay#> lsblk#> mkfs.ext4#> mount[과정]새벽 2시 경 미니pc에 ubuntu-server를 설치하고 잠들었다.아침에 설치가 되어 있길래 방화벽 및 네트워크 설정을 건드리고 disk를 확인해보았는데 ssd 볼륨이 작게 잡혀 있었다.ssd가..

[작업] 홈 네트워크를 구축하던 중 포트포워드가 안 되었다.

홈네트워크에 VNC 및 SSH 서버를 구축하는 과정에서 벌어진 일.[문제 상황 요약]1. Windows노트북에 TigerVNC설치 및 구동2. 맥북에서 내부IP로 VNC 접근 가능3. 그러나 공인IP로는 불가능4. Ubuntu 미니PC에 SSHD 설치 및 구동5. 맥북에서 내부IP로는 SSH 접근 가능6. 그러나 공인IP로는 불가능[단서]1. 열린포트를 확인하는 외부 사이트에서는 'open'상태로 확인됨.  tcpdump로 패킷 덤프 시 내부 서버에 패킷 인입 확인2. 그러나 맥북에서는 공인IP로 아무리 해도 안 됨 (vnc, ssh, tcping, curl 포트 확인 등 불가, ping은 됨) [해결]1. 홈 네트워크 내부망에서 공인IP로 포트포워딩 서비스 포트로 접근할 경우 포트포워딩이 되지 않는 것..

[개발]점이 사각형 안에 있는지 판단하기

좌표 공간에 사각형을 그리고 점(Point)가 사각형의 내부에 있는지 외부에 있는지 판단하는 로직을 만들고자 하였다.  기존 회사에 있던 로직은 타겟 포인트의 x,y좌표가 사각형의 4개 꼭지점의 x,y좌표 사이에 있으면  사각형 안에 점이 있다고 판단하였다. 이 로직이 제대로 동작하려면 축과 평행한 직각사각형이어야만 한다. 하지만 실제로 사용자가 그리는 사각형은 축과 평행하지 않을 수 있고 찌그러진 사각형일 수도 있다.이 문제의 해결 방법은 다시 고등 수학이라는 책을 통해 알 수 있었다. 고등학교 시절 수학을 멀리하였으나 개발자가 되고 나서 논리력을 기른다는 관점에서 수학의 필요를 느꼈다. 그래서 중,고등학교 수학 교재와 함께 구매하여 틈틈이 보던 책이 이 책인데 명제부터 시작해서 삼각비나 벡터 같은 개..

개발/개발 2025.03.01

[개발관련] BootJar 서비스 등록, 리눅스에서 application.properties, logback.xml 수정

들어가며주기적으로 외부 API에서 데이터를 수집하여 DB에 적재하고, 알람 목적으로 웹 애플리케이션 백엔드 단의 웹소켓 용 API에 데이터를 전달하는 소스를 작성하였습니다. java17, Spring boot 기반이며 application.properties 파일에 외부 API의 URL과 토큰, 그리고 기타 설정 정보를 저장해두었습니다. 빌드한 파일을 고객사에 미리 전달하면 작업 서버로 파일을 옮겨주시는 방식이기 때문에 리눅스에서 bootJar 내의 application.properties 파일을 수정할 필요가 있었습니다. 이는 간단하게 zip 명령어로 수정이 가능합니다. 같은 방식으로 logback.xml을 수정하여 log 파일의 저장 주기나 경로도 즉석에서 변경할 수 있습니다.현 회사에서 이전에는 b..

개발/개발 2024.08.08

[개발관련] ssh 리모트 터널링과 로컬 터널링

들어가며ssh 터널링 명령어를 정리해보았습니다.-L(로컬)옵션과 -R(리모트)옵션의 한 글자 차이이지만 상당히 다르게 동작하며 사용의 목적도 달라집니다.ssh -L localhost:12345:192.168.0.1:22 mabb@121.10.10.10 -p22022ssh -R localhost:12345:192.168.0.1:22 mabb@121.10.10.10 -p22022  1. 로컬 터널링ssh 명령어를 실행하는 현재 서버가 121.10.10.10 서버의 입장이 되게 합니다. 현재 서버에서 localhost:12345를  121.10.10.10 서버가 접근할 수 있는 192.168.0.1:22로 터널링 해줍니다. ssh 포트로 터널을 만들어 원격지의 다른 포트나, 다른 서버(포트)에 직접 연결하는 ..

개발/개발 2024.07.25

[개발관련] Java_ 대량의 CSV Insert, 그리고 OutOfMemoryError 발생!

들어가며약 1.3MB 정도 되는 CSV 파일 (약 4000줄) 5천 개를 데이터베이스에 적재하려고 시도하였습니다.  OutOfMemory가 발생하였습니다. 1 record 당 1 instance로 List에 담았기 때문입니다. 객체 2,000만 개를 만들고 List에 담아 GC도 되지 않는 코드를 작성해 버린 것입니다. 1) CSV 한 줄 씩 읽고 객체 만들어 List에 add 하기2) 2000만 길이의 List (이 단계에서 OOM 발생!)3) 2,000만 길이의 Batch쿼리 4) 한 방에 Insert 시도 Heap GC 상태 확인PID를 찾는 동안 잠시 대기를 시켜줍니다. PID가 39205입니다.  35394는 PPID로 인텔리제이입니다.인텔리제이의 부모는 MAC에서의 1번 프로세스인 launch..

개발/개발 2024.07.07
반응형