- 하나의 VM(가상서버)에서 두 개의 도메인을 운영하는 구조
- nginx를 이용한 도메인 별 HTTPS 처리 및 리버스 프록시
- 동일한 WAR 프로젝트를 포트별로 분리하여 서비스 인스턴스 운영
- certbot을 이용한 인증서 자동 갱신
- PostgreSQL DB 및 Tomcat 기반 WAS 구성
HOST MACHINE (Linux VM)
├── nginx (HTTPS 및 리버스 프록시)
│ ├── www.shinwon.site → localhost:8080
│ └── www.cmtech.site → localhost:8180
│
├── imageproxy (CDN 이미지 최적화)
│ └── /cdn/ 경로 처리
│
├── WAS 인스턴스 (Tomcat)
│ ├── 8080 포트 : shinwon 서비스
│ └── 8180 포트 : cmtech 서비스
│
└── PostgreSQL DB
├── cms_shin
└── cms_cmtech
cat /etc/os-release- Rocky Linux 9.5 (Blue Onyx)
dnf install -y nginx
systemctl enable nginx
systemctl start nginxdnf install -y epel-release
dnf install -y certbot python3-certbot-nginx
certbot --nginx -d www.shinwon.site -d www.cmtech.siteecho "0 3 * * * root /usr/bin/certbot renew --quiet" >> /etc/crontab
certbot renew --dry-runsudo dnf install -y https://download.postgresql.org/pub/repos/yum/.../pgdg-redhat-repo-latest.noarch.rpm
sudo dnf -qy module disable postgresql
sudo dnf install -y postgresql16-server
sudo /usr/pgsql-16/bin/postgresql-16-setup initdb
sudo systemctl enable postgresql-16
sudo systemctl start postgresql-16CREATE ROLE [사용자] WITH LOGIN PASSWORD '[비밀번호]';
ALTER ROLE [사용자] CREATEDB;
CREATE DATABASE cms_shin OWNER [사용자];
CREATE DATABASE cms_cmtech OWNER [사용자];pg_hba.conf,postgresql.conf수정 후 서비스 재시작
dnf install -y java-1.8.0-openjdk java-1.8.0-openjdk-develwget https://dlcdn.apache.org/tomcat/tomcat-9/v9.0.104/bin/apache-tomcat-9.0.104.tar.gz- 8080 포트:
/usr/local/was/tomcat_shin - 8180 포트:
/usr/local/was/tomcat_cmtech
git clone https://github.com/D0iloppa/spring5-template-jdk8.git [프로젝트명]
cd [프로젝트명]
git remote remove origin
git remote add origin https://github.com/USERNAME/new-repo.git
git push -u origin mainGET /cms/bbs/getContentsList/{bbs_id}- 응답에 포함된
imageUrl을 통해 이미지 출력 가능 - 예:
<img src="/cms/cdn/img/28">
let bbs = new CmsBbsMng('#selector', bbs_id);- summernote (https://summernote.org/)
- ckeditor5 (https://ckeditor.com/ckeditor-5/)
게시판별 컨텐츠 등록 및 이미지 첨부 기능 연동됨.
# db.driver=org.postgresql.Driver
# db.url=jdbc:postgresql://[host]:5432/cms_shin
# db.username=... (공유 필요)
# db.password=... (비공개 필요)※ 커밋 시 실수 방지를 위해 수동으로 git reset HEAD resources/config/app.properties 처리 필요
https://dbdiagram.io/d/6803499b1ca52373f58e0672