2022년 7월 17일 일요일

우분투 IP 수동 설정 방법

# 인터페이스 수정

vi /etc/netplan/00-installer-config.yaml

network:

  ethernets:

    enp0s3:

      dhcp4: false

      addresses: [192.168.1.51/24]

      gateway4: 192.168.1.1

      nameservers:

        addresses: [8.8.8.8,1.1.1.1]

  version: 2


dhcp4를 false 설정하고 

아이피, 게이트웨이, DNS 설정 후 저장


# 적용

netplan apply


우분투 RTSP 재생 이슈

우분투 21.04, 우분투 22.04에서 RTSP 미디어가 재생 되지 않음...



임시 조치로 해결한 방법.

sudo apt-get install snapd
sudo snap install core
sudo snap install vlc

이 방법 말고 당장 해결할 수 있는 방법은 생각나지 않음........
피곤.

PostgreSQL 초기 설정 팁

- pg_hba.conf 

db와 db 계정의 접근제어를 설정


# postgres 계정으로 모든 db 접근, 192.168.1.x 네트워크에서만.

host    all             postgres        192.168.1.0/24       scram-sha-256

# 모든 접근 허용, 이건 위험..

host    all             all                0.0.0.0/0               scram-sha-256


- postgresql.conf

DB의 주요 설정이 이 파일에 포함되어 있음


port = 5432 # 포트번호 설정

max_connections = 100 # 최대 접속 가능 수 

log_timezone = 'Asia/Seoul' # 로그 타임존

timezone = 'Asia/Seoul' # DB 타임존

#listen_addresses = 'localhost' # 값을 *로 할 경우 모든 주소에서 접속 가능


DB에서 가장 기본적인 설정은 서버와 마찬가지로 현지시간 설정이므로

서버와 DB 모두 항상 시간을 확인할 것을 추천함.


- 초기 설정 후 자주쓰는 SQL 

# postgres 계정 패스워드 변경

alter user postgres with password 'new_password';


# DB 서버 시간 확인

select CURRENT_TIMESTAMP;


# DB 생성

CREATE DATABASE test_db

WITH OWNER postgres 

ENCODING 'UTF8'

LC_COLLATE = 'C'

LC_CTYPE = 'C'

TEMPLATE template0;




VLC 미디어 변환 예제 - RTSP, HLS, 웹캠

- RTSP를 MJPEG로 변환 방법

vlc -vvv -Idummy rtsp://localhost:558/media.smp --sout '#transcode{vcodec=MJPG,venc=ffmpeg{strict=1},fps=10,width=640,height=360}:standard{access=http{mime=multipart/x-mixed-replace;boundary=--7b3cc56e5f51db803f790dad720ed50a},mux=mpjpeg,dst=:8082/}'



- RTSP를 m3u8로 변환 방법

vlc -vvv -Idummy rtsp://localhost:558/media.smp --sout '#transcode{width=640,height=360,fps=10,vcodec=h264,vb=256,venc=x264{aud,profile=baseline,level=30,keyint=30,ref=1},acodec=mp3,ab=96}:std{access=livehttp{seglen=10,delsegs=true,numsegs=5,index=/var/www/html/hls/stream.m3u8,index-url=http://localhost/hls/stream-########.ts},mux=ts{use-key-frames},dst=/var/www/html/hls/stream-########.ts}'


테스트 방법.

VLC 플레이어가 있고 웹캠이 있는 PC라면 윈도우 환경 기준 dshow:// 주소를 rtsp 주소란에 넣고 테스트 가능.


테스트 예)

PC 웹캠을 브라우저에서 확인 하는 방법

vlc -vvv -Idummy dshow:// --sout #transcode{vcodec=MJPG,venc=ffmpeg{strict=1},fps=10,width=640,height=360}:standard{access=http{mime=multipart/x-mixed-replace;boundary=--7b3cc56e5f51db803f790dad720ed50a},mux=mpjpeg,dst=:8082/}'


테스트 URL : http://localhost:8082/


공인IP 확인 방법 - 구글 API 사용

 구글 API URL : https://domains.google.com/checkip

브라우저 주소창에 입력 후 공인IP 확인 가능


자바스크립트 또는 쉘스크립트를 통해 공인IP를 확인할 수 있음


쉘스크립트 예시)

#!/bin/sh
IP=$(curl -s https://domains.google.com/checkip )
echo $IP

리눅스의 crontab을 이용해 1시간 마다 공인IP를 확인해서 
특정 서버 위치에 저장할 경우 ddns 없이 원격접속 정보를 알 수 있음.

2020년 6월 22일 월요일

kill -15 명령어

kill -9 pid 를 사용할 경우 프로세스가 강제종료 됩니다.
현재 어떤 작업을 진행중이라면 문제가 될 수 있습니다.

가급적이면 kill -15 옵션을 사용하는 것을 권장합니다.



만약 스프링 어플리케이션이라면
application.properties에 server.shutdown=graceful 옵션을 적용하면 안전하게 종료됩니다.
(스프링부트 2.3.0 버전부터 가능한것으로 확인 됐습니다.)


자바 프로세스의 경우
Runtime.getRuntime().addShutdownHook(new Thread() {
@Override
public void run() {

}
});

위 함수를 통해서 안전하게 프로세스를 종료시킬 수 있습니다.



2020년 5월 10일 일요일

Spring Boot AJP 설정

Apache의 mod_jk 구성이 필요합니다.

- Tomcat
@Configuration
public class TomcatConfiguration {

@Bean
public WebServerFactory servletContainer() {

TomcatServletWebServerFactory factory = new TomcatServletWebServerFactory();
Connector ajp = new Connector("AJP/1.3");
ajp.setPort(8009);
ajp.setSecure(false);
ajp.setAllowTrace(false);
ajp.setScheme("http");
ProtocolHandler protocolHandler = ajp.getProtocolHandler();
if (protocolHandler instanceof AbstractAjpProtocol) {
AbstractAjpProtocol<?> abstractAjpProtocol = (AbstractAjpProtocol<?>) protocolHandler;
abstractAjpProtocol.setSecretRequired(false);
}
factory.addAdditionalTomcatConnectors(ajp);

return factory;
}

}


메이븐 설정은 spring-boot-starter-tomcat이 필요합니다.
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
</dependency>





- Undertow
@Configuration
public class UndertowConfiguration {

@Bean
public ServletWebServerFactory servletContainer() {
UndertowServletWebServerFactory factory = new UndertowServletWebServerFactory();
factory.addBuilderCustomizers(new UndertowBuilderCustomizer() {

@Override
public void customize(Builder builder) {
builder.addAjpListener(8009, "127.0.0.1");
}
});
return factory;
}

}


메이븐 설정은 spring-boot-starter-undertow이 필요하고 undertow 구성 시 spring-boot-starter-tomcat을 제외해야 합니다.

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>

<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
</exclusion>
</exclusions>
</dependency>

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-undertow</artifactId>
</dependency>