반응형
김씨가 만든 우분투 22.04 스프링 부트 설치, 디비 설치, 클라우드 Virtual Machine Setting 가이드입니다.
IT를 통해 더욱더 좋은 세상을 함께 만들어가기 위해서 도움이 되었으면 좋겠습니다
참고해주시고 고칠점이 있다면 댓글 부탁드립니다.
1. 업데이트
# -----------------------------
# 1.
# 업데이트
apt update && apt full-upgrade -y
2. 리눅스 접근 보안 세팅
# -----------------------------
# 2.
# 리눅스 접근 보안을 위해서
# 2-1 ssh 키 설정
ssh-keygen -t rsa -b 2048 -C '221113 by codemaster'
Enter file : 필요시 넘김(필자는 넘김)
Enter passphrase : 필요시 넘김(필자는 넘김)
Enter same passphrase : 필요시 넘김(필자는 넘김)
# 2-2 ssh 키 확인
ls .ssh/
cat .ssh/id_rsa
cat .ssh/id_rsa.pub
# 2-3 VM 공급자 웹사이트에
# Add SSH Key 값에 생성한 public ssh 키를 복붙
# 2-4 Public key를 authorized keys 에 넣고 확인
ssh-copy-id root@{서버inet주소}
cat .ssh/authorized_keys
# 2-5 Client에서 접속확인
# Window Putty 사용시 Putty Key gen 등을 활용해서 pk 파일 만들고 Auth -> Credentials 처리
# id_rsa 파일을 다운받아서 putty key gen -> file-> load private key 활용
# 참조 https://superuser.com/questions/912304/how-do-you-convert-an-ssh-private-key-to-a-ppk-on-the-windows-command-line
# 2-6 비밀번호 기반 로그인 비활성화
vim /etc/ssh/sshd_config
PasswordAuthentication no
# 필요시 아래와 같이도 가능
#Match address 밖에서접속하는곳inet주소
# PasswordAuthentication yes
systemctl restart ssh
3. DNS 세팅
# -----------------------------
# 3.
# DNS 세팅
# 가비아 같은 사이트에서
# 타입 A/ 호스트 www/ 값위치 (ip inet ipv4 주소)/ TTL 3600
# 타입 @/ 호스트 www/ 값위치 (ip inet ipv4 주소)/ TTL 3600
# 설정을 해주고 저장합니다
# 필요시 TTL 값을 수정해서 DNS 레코드 값을 서버가 캐시하는 시간을 변경해줍니다.
# 필요시 Ubuntu에서 Bind9 으로 DNS 세팅을 해줘도 됨
# 필요시 Ubuntu에서 Virtual hosting 세팅을 해줘도 됨
4. Git 설치
# -----------------------------
# 4. Git 설치
# 설치확인
git --version
# 설치 안되있으면 설치
sudo apt update
sudo apt install git
5. 자바설치
# -----------------------------
# 5. 자바설치
# 설치확인
java -version
javac -version
# 개발하는 스프링과 동일한 버전 설치 하여야 함
sudo apt install default-jre
sudo apt install default-jdk
# 필요시 OpenJDK 대신 Coretto 설치
wget -O- https://apt.corretto.aws/corretto.key | sudo apt-key add -
sudo add-apt-repository 'deb https://apt.corretto.aws stable main'
sudo apt-get update; sudo apt-get install -y java-11-amazon-corretto-jdk
# 필요시 여러개 설치하고 상황에 맞게 자바 버전 변경
sudo update-alternatives --config java
sudo update-alternatives --config javac
# 환경변수 세팅
# 경로 확인
sudo update-alternatives --config java
sudo update-alternatives --config javac
# 환경변수 경로 추가 (새로운줄에)
sudo vi /etc/environment
JAVA_HOME="위에나온경로"
source /etc/environment
echo $JAVA_HOME
Gradle 설치
# -----------------------------
# Gradle 설치
# gradle --version
# apt는 구버전으로 다운되기 때문에 방법2 추천
# 방법1
# sudo apt install gradle
# 방법2
# https://gradle.org/releases/ 확인
# wget https://services.gradle.org/distributions/gradle-버전-bin.zip -P /tmp
# sudo unzip -d /opt/gradle /tmp/gradle-버전-bin.zip
# sudo ln -s /opt/gradle/gradle-버전 /opt/gradle/latest
# 환경변수 세팅
# sudo vi /etc/profile.d/gradle.sh
export GRADLE_HOME=/opt/gradle/latest
export PATH=${GRADLE_HOME}/bin:${PATH}
# 스크립트 실행 준비
sudo chmod +x /etc/profile.d/gradle.sh
source /etc/profile.d/gradle.sh
# 버전 확인
gradle -v
Postgressql 설치 및 실행
# -----------------------------
# Postgressql 설치 및 실행
# sudo apt install postgresql postgresql-contrib
# sudo systemctl start postgresql.service
# 로그인
# 방법 1
sudo -i -u postgres
# 방법 2
sudo -u postgres psql
# 로그인 후 유저 생성
# postgressql에서
createuser --interactive
유저명 : codemasterkimc
superuser: y
# root 로 돌아가서 유저 연동 및 로그인
sudo adduser codemasterkimc
sudo -i -u codemasterkimc
createdb codemasterkimc
psql
\conninfo
# 외부 접근 허용
# 현재 접속중인 아이피 확인
w
# sudo vi /etc/postgresql/버전번호/main/postgresql.conf
# sudo vi /etc/postgresql/14/main/postgresql.conf
# 방법 1
# listen_addresses 주석풀고 = 'localhost 주소 주소' 이런식으로 공백단위로 구분
# 방법 2
# 다풀고 싶으면 '*'
# sudo vi /etc/postgresql/버전번호/main/pg_hba.conf
# sudo vi /etc/postgresql/14/main/pg_hba.conf
#방법1 아래와 같이 허용 접속 목록에 추가
# w 로 주소 확인후
host all all 접속하는집회사IPV4주소/0 scram-sha-256
#방법2 필요시 0.0.0.0/0 을 추가해 모두 허용(권장하지 않음)
host all all 0.0.0.0/0 scram-sha-256
# 특정 주소만 비밀번호 로그인 허용
vim /etc/ssh/sshd_config
Match address 주소
PasswordAuthentication yes
service ssh reload
# 유저 확인( 비밀번호 변경)
cat /etc/passwd
sudo passwd codemasterkimc
sudo -u codemasterkimc psql codemasterkimc
ALTER USER kimc WITH PASSWORD '비밀번호';
# 방화벽에 postgres 접근 허용
# 열린 포트 확인
sudo ss -lntu
sudo ss -na | grep :5432
sudo ufw status verbose
sudo ufw allow 5432
ls | nc -l -p 5432
# postgres 재시작
sudo systemctl restart postgresql
\q
프로젝트 클론
# -----------------------------
# 프로젝트 클론
# 필요시 원하는 위치 이동 후
git clone 클론HTTPS로받아온경로
유저명
비밀번호 혹은 토큰 입력
# 해당 스프링 프로젝트 위치로 이동
git pull
chmod +x ./gradlew
./gradlew build --debug
cd build/libs/
# 백그라운드에서 실행시 nohup을 앞에 붙이고 뒤에 &을 붙임
# 세팅 없이 nohup java -jar 빌드된파일명.jar &
# 기타세팅 예시 nohup java -Djasypt.encryptor.password=비밀번호 -jar 빌드된파일명.jar &
ps -ef | grep jar
kill
Nginx Port forwarding
# -----------------------------
# Nginx Port fowarding
# nginx 설치
sudo apt install nginx
# 방화벽 설정 및 확인
sudo ufw app list
sudo ufw allow 'Nginx HTTP'
sudo ufw allow 'Nginx HTTPS'
sudo ufw status
systemctl status nginx
# 경로 맵핑
cd /etc/nginx/sites-available
sudo vi codemasterkimcbase.conf
server {
listen 80;
server_name localhost;
access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log;
location / {
include /etc/nginx/proxy_params;
proxy_pass https://localhost:8080;
}
}
# symbolic link 생성
sudo ln -s /etc/nginx/sites-available/codemasterkimcbase.conf /etc/nginx/sites-enabled
#확인
cd /etc/nginx/sites-enabled
ls -l
sudo rm /etc/nginx/sites-available/default
sudo rm /etc/nginx/sites-enabled/default
sudo nginx -t
sudo systemctl stop nginx
sudo systemctl start nginx
sudo systemctl status nginx
# 재시작
sudo systemctl stop nginx
sudo systemctl start nginx
# 확인
sudo netstat -pltn | grep 5000
인증서와 HTTPS 설정
# -----------------------------
# HTTPS 설정
# certbot 설치
apt update && apt install certbot
# 도메인 필요시(도메인 사이트에서)
# A record 도메인.com
# A record www.도메인.com
# snap package 설치(우분투에서)
sudo snap install core; sudo snap refresh core
# 이전버전의 certbot 제거
sudo apt remove certbot
# certbot 설치
sudo snap install --classic certbot
# certbot 연결
sudo ln -s /snap/bin/certbot /usr/bin/certbot
vi /etc/nginx/sites-available/codemasterkimcbase.conf
vi /etc/nginx/sites-enabled/codemasterkimcbase.conf
sudo nginx -t
sudo systemctl reload nginx
# HTTP traffic 비활성화
sudo ufw status
sudo ufw allow 'Nginx Full'
sudo ufw delete allow 'Nginx HTTP'
# 인증서 활성화
sudo certbot --nginx -d 도메인.com -d www.도메인.com
sudo certbot --nginx -d 주소.com -d www.주소.com
# 인증서 수명(90일 확인 및 업데이트 타이머)
certbot certificates
cd /bin
nano letsencrypt.sh
```
!/bin/sh
/etc/init.d/nginx stop
/usr/local/bin/certbot renew> /var/log/letsencrypt/le-renew.log
fuser -k 80/tcp
/etc/init.d/nginx start
```
chmod +x letsencrypt.sh
# sudo apt-get update
# 필요시 설치 sudo apt-get install cron
crontab -l
crontab -e
0 12 * * * letsencrypt.sh
service cron start
sudo certbot renew --dry-run
# 확인
sudo systemctl status snap.certbot.renew.service
# 수동 업데이트
sudo certbot renew --dry-run
# 리뉴
sudo crontab -e
# 매월 1일, 15일 0시 15분에 인증서 재발급 시도
15 0 1,15 * * certbot renew --post-hook "systemctl reload nginx"
# 필요시 삭제
sudo certbot delete --cert-name example.com
Jasypt 사용하시는 분들이면 아래 참조
nohup java -Djasypt.encryptor.password=비밀번호 -jar 빌드된파일명.jar &
ps -ef | grep jar
kill
추후 시간이 된다면
Bash로 코드를 더 간편하게 실행되게 변경 가이드
CI/CD 설정
resync로 디비 주기적 백업 등을 하는 가이드도 올리겠습니다
이상입니다.
참조
명령 창에 man free를 써서 나온 내용을 참조
반응형
'DevOps > Linux' 카테고리의 다른 글
도커(Docker)를 이용한 컨테이너 관리하기: 설치부터 볼륨생성까지 (1) | 2023.04.08 |
---|---|
Ubuntu에 Redis 설치 및 외부연동 그리고 꿀팁까지 (0) | 2023.03.22 |
History에 시간 추가하는 한가지 방법 (0) | 2022.11.03 |
리눅스에서 History에 Trace 안남기고 커맨드 쓰는 방법 (0) | 2022.11.03 |
우분투22.04 SSH 설정하고 Putty로 접속하기 (0) | 2022.11.03 |