# http2 모듈 사용
a2enmod http2
# conf 파일 수정
Protocols h2 h2c http/1.1
# 테스트
curl -I --http2 -s https://domain.com/ | grep HTTP
# 테스트 결과
자료 출처: https://httpd.apache.org/docs/2.4/mod/mod_http2.html
# http2 모듈 사용
a2enmod http2
# conf 파일 수정
Protocols h2 h2c http/1.1
# 테스트
curl -I --http2 -s https://domain.com/ | grep HTTP
# 테스트 결과
자료 출처: https://httpd.apache.org/docs/2.4/mod/mod_http2.html
로컬 또는 내부 특정 웹서버 로그인 기능 추가하기.
예제는 Basic 인증으로 작성 됨.
# 대략적인 흐름
도메인 접속 > apache basic 인증 > 프록시 > 내부 웹서버
# 설치
sudo apt install apache2-utils
# 계정추가
htpasswd -c /etc/apache2/.htpasswd test
# VirtualHost 설정, 프록시 패스
<VirtualHost *:80>
ServerName 도메인
ServerSignature Off
RewriteEngine on
RewriteCond %{HTTPS} !=on
RewriteRule .* https://%{SERVER_NAME}%{REQUEST_URI} [NE,R,L]
</VirtualHost>
<VirtualHost *:443>
ServerName 도메인
ServerSignature Off
ProxyPreserveHost On
AllowEncodedSlashes NoDecode
RequestHeader set X_FORWARDED_PROTO 'https'
RequestHeader set X-Forwarded-Ssl on
ProxyPass / http://127.0.0.1:10012/
ProxyPassReverse / http://127.0.0.1:10012/
<Proxy *>
Order deny,allow
Allow from all
Authtype Basic
Authname "Password Required"
AuthUserFile /etc/apache2/.htpasswd
Require valid-user
</Proxy>
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
# 테스트 결과
sudo service apache2 restart
# ubuntu 웹캠 연결 확인 방법
sudo apt install v4l-utils
# 카메라 번호 확인
ls -ltrh /dev/video*
# 포멧 체크
sudo v4l2-ctl -d /dev/video0 --list-formats-ext
sudo v4l2-ctl -d /dev/video1 --list-formats-ext
# 그룹권한 확인 및 추가
sudo groups 계정명
gpasswd -a 계정명 video
sudo usermod -a -G video 계정명
여기까지 설정이 완료되면 웹캠을 사용할 수 있음
만약 안된다면 재부팅 후 다시 확인.
# 테스트 환경
ubuntu 22.04 LTS
앱코 QHD 웹캠 APC930
# 설치
apt install mariadb-server
# 설정
ubuntu 기준으로 작성.
- 포트변경 방법
vi /etc/mysql/my.cnf
port = 1234
- 접속IP 변경, 타임존 변경
vi /etc/mysql/mariadb.conf.d/50-server.cnf
bind-address = 0.0.0.0
default-time-zone = '+9:00'
- 설정변경 확인
service mariadb restart
netstat -nl | grep 1234
- 초기화 설정 진행
mysql_secure_installation
# 초기설정 SQL
- 접속
mysql -u root -p
- DB 목록 조회
show databases;
- 계정 조회
select host, user, password from mysql.user;
- DB 생성
create database testdb;
- 계정생성
create user 'testuser'@'%' identified by 'qwer1234';
- 패스워드 변경
UPDATE user SET password = password('원하는비밀번호') WHERE user = 'testuser';
- 권한 부여
grant all privileges on testdb.* to 'testuser'@'%';
flush privileges;
- 전역 인코딩 확인
show variables like "%char%";
- 데이터베이스 인코딩 확인
SELECT default_character_set_name, DEFAULT_COLLATION_NAME FROM information_schema.SCHEMATA WHERE schema_name = "testdb";
- 타임존 확인
SELECT @@GLOBAL.time_zone, @@SESSION.time_zone, @@system_time_zone;
개발계 환경에서 딱히 필요할 것 같지는 않지만 혹시 모르니 메모..
# 설치
apt install clamav
apt install clamav-daemon
# 바이러스 체크
clamscan -r 체크경로 --move=이동경로
move에 설정된 경로에 감염된 파일이 이동 됨
# 바이러스 DB 수동 업데이트 방법
service clamav-freshclam stop
freshclam
service clamav-freshclam start
# Banner 설정
vi /etc/ssh/sshd_config
Banner /etc/issue.net
Banner /etc/issue
Banner /etc/motd
issue.net - 원격접속 배너
issue - 로컬 접속 배너
motd - 로그인 후 배너
# 적용
service sshd restart
배너는 아스키 아트를 사용하여 이쁘게 꾸미면 됩니다.
https://www.asciiart.eu/
적용 예)
# samba 설치
apt install samba
# 설정 변경
vi /etc/samba/smb.conf
[homes]
comment = Home Directories
valid users = %S
browseable = no
read only = no
guest ok = no
writable = yes
create mask = 0644
directory mask = 0755
# 설정 적용
service smbd restart
# 계정 추가
smbpasswd -a test
# 윈도우 네트워크 드라이브 추가
\\192.168.0.2\test
# 인터페이스 수정
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
- 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;
- 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/
구글 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 없이 원격접속 정보를 알 수 있음.