노트북 바꾼 김에 1번 추가
1. gitlab에서 프로젝트 링크 받아 이클립스에 clone 하기
Clone with HTTPS 로 받기
이 문제는 Spring Boot에서 데이터베이스 연결을 구성하는 과정에서 발생한 것이다.
NEWCRM 프로젝트는 최종적으로 Maria DB를 사용하는데 application.yml 파일에서 데이터베이스 연결정보를 설정하지 않아서 그렇다.
▼ 기본 프로젝트 세팅
server:
port: 8080
servlet:
context-path: /
encoding:
charset: UTF-8
enabled: true
force: true
spring:
devtools:
livereload:
enabled: true
# thymeleaf 참조 경로
thymeleaf:
prefix: classpath:/templates/
suffix: .html
cache: false # thymeleaf에 대한 캐시를 남기지 않는다. cache=false 설정(운영시는 true)
check-template-location: true # templates 디렉토리에 파일이 있는지 없는지 체크, 없으면 에러를 발생시킨다.
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:log4jdbc:mysql://주소.com:port/crm?serverTimezone=Asia/Seoul&useSSL=false
username: (username)
password: (password)
mybatis:
mapper-locations:
- classpath:mybatis/mapper/**/**.xml
config-location: classpath:mybatis-config.xml
▼ 세팅 추가
#session 유지시간 3600s 60분으로 설정
server:
port: 8888
servlet:
context-path: /
encoding:
charset: UTF-8
enabled: true
force: true
session:
timeout: 3600
spring:
devtools:
livereload:
enabled: true
# thymeleaf 참조 경로
thymeleaf:
prefix: classpath:/templates/
suffix: .html
cache: false # thymeleaf에 대한 캐시를 남기지 않는다. cache=false 설정(운영시는 true)
check-template-location: true # templates 디렉토리에 파일이 있는지 없는지 체크, 없으면 에러를 발생시킨다.
datasource:
# driver-class-name: com.mysql.cj.jdbc.Driver
driver-class-name: net.sf.log4jdbc.sql.jdbcapi.DriverSpy
# url: jdbc:log4jdbc:mysql://주소.com:port/crm?serverTimezone=Asia/Seoul&useSSL=false
# username: (username)
# password: (password)
url: jdbc:log4jdbc:mysql://(내부IP 작성)/crm?serverTimezone=Asia/Seoul&useSSL=false
username: (변경된 값)
password: (변경된 값)
mybatis:
mapper-locations:
- classpath:mybatis/mapper/**/**.xml
config-location: classpath:mybatis-config.xml
포트를 8888로 변경하고 session 유지시간 추가, DB 정보를 업데이트 해준다.
driver-class-name이 변경되었는데
기존의 com.mysql.cj.jdbc.Driver는 MySQL 데이터베이스와의 기본 연결을 위한 표준 JDBC 드라이버이며,
net.sf.log4jdbc.sql.jdbcapi.DriverSpy는 기존 기능을 확장하여 SQL 쿼리와 데이터베이스 상호작용을 로깅할 수 있어 변경되었다.(디버깅, 성능 모니터링 가능)
만약 여기까지 했는데도 오류가 똑같다면?
포트가 8080인지 보자. 우리 포트는 8888로 맞췄는데 8080으로 실행된다면 Maven install 을 한번 해주자.
완료!
2. 원격 서버와의 연결 및 파일 전송
AWS(Amazon Web Services)는 아마존에서 제공하는 클라우드 컴퓨팅 플랫폼이다.
NEWCRM은 docker로 말아져서 AWS에 올라가 있으며, 유지보수 시 일부 파일만 수정 하는 경우에는 직접 파일을 교체해주거나 반영 후 서버를 껐다가 켜줘야 한다.
원격 접속 시 원격 서버에 안전하게 접속하기 위해 사용되는 SSH(Secure Shell) 키를 발급받아야 한다.
이미 발급된 것이 있으므로 적용해서 사용하면 됨.
0) ssh-rsa 키 적용 방법
키를 생성하거나 이미 가지고 있는 키를 C:\Users\사용자이름\.ssh에 붙여넣는다.
이제 이 파일 경로를 기억하고 원격접속 시 키를 인증해서 사용해주면 된다.
크게 두가지 프로그램을 사용한다.
1) PuTTY
원격 서버 접속 프로그램(무료)
PuTTY는 네트워크 프로토콜을 사용하여 원격 시스템에 접속할 수 있도록 해주는 오픈 소스 터미널 에뮬레이터 프로그램이다. 주로 SSH(Secure Shell), Telnet, rlogin, serial 등 다양한 네트워크 프로토콜을 지원하며, 원격 서버나 네트워크 장비에 접속할 때 많이 사용된다.
[주요 기능]
- SSH를 통해 보안된 원격 접속 가능
- Telnet과 같은 다른 네트워크 프로토콜을 지원
- 직렬 통신(Serial Communication)을 통한 장치 연결
- 여러 서버 및 세션을 동시에 연결할 수 있는 기능 제공
주로 리눅스 서버를 원격으로 관리하거나, 네트워크 장비에 접근하여 설정을 변경할 때 많이 활용된다.
ex) docker 속 폴더 확인, 톰캣 실행, vi 편집기로 편집 등
원격 서버에 접속하기 위해서는 [접속할 서버의 호스트네임(또는 ip 주소)] 와 [port] 를 알고있으면 된다.
PuTTY 다운로드 : https://www.putty.org/
[PuTTY 실행방법]
Connection > SSH > Auth > Credentials ~~ 에서 위에서 저장해둔 ssh-rsa 개인키를 불러와준다.
실행하면
이런식으로 경고가 뜨는데 Accept 하면 된다.
[ docker 컨테이너 상태 확인 ]
ls를 찍어보면 docker가 있다.
즉, aws 안에 docker 밖에 없음.
톰캣도 sql DB도 전부 도커 안에 있으니 도커로 들어가보자.
docker ps 나 docker ps -a 로 실행한다.
docker ps
또는
docker ps -a
docker ps와 docker ps -a 명령어는 Docker 컨테이너의 상태를 확인하는 데 사용된다.
- docker ps: 현재 실행 중인 컨테이너만 표시
- docker ps -a: 모든 컨테이너를 표시. 실행 중인 컨테이너뿐만 아니라 중지된 컨테이너도 포함됨.
그럼 아래와 같은 항목이 쭉 나온다.
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
[ 톰캣 서버 재부팅 ]
톰캣을 왜 껐다 켜야하냐면, 서버는 class 파일을 바라보기 때문에 java 파일이나 jar 파일이 변경되는 경우 톰캣 재부핑을 해줘야 반영될 수 있다. 반면에 js 또는 html 파일은 굳이 재부팅은 필요 없기 때문에 가벼운 파일 수정이라면 WinSCP로 진행하면 된다.
docker exec -it [tomcat_name] /bin/bash
docker exec -it [tomcat_name] /bin/bash 명령어는 실행 중인 Docker 컨테이너에 접속하여 Bash 셸을 실행하는 데 사용된다.
위 docker ps 에서 출력된 names 값에 보면 tomcat_crm 이 있다.
이 tomcat_crm에 접속해서 직접 껐다 켜보자.
따라서 > docker exec -it tomcat_crm /bin/bash
ls로 내부를 까보면 bin 폴더부터 conf 등 우리가 흔히 아는 톰캣 내부 폴더 목록이 있다.
실행을 위해서는 bin 에 들어가서 startup/ shutdown 해주면 된다.
cd 하면 들어가진다.
바로 실행하려면 bin 폴더로 안들어가도 ./bin/startup.sh로 실행시키면 된다.
cd bin
startup.sh
또는
./bin/startup.sh
바로 끈다면 ./bin/shutdown.sh 하면된다.
bin 폴더 안에 목록은 아래와 같다.
[ docker 로그 확인 ]
docker logs tomcat_crm -t -f
docker logs tomcat_crm -t -f 명령어는 Docker 컨테이너의 로그를 실시간으로 확인하는 데 사용된다.
아까 초반에 ls 하면 docker만 있던 곳에서 위 명령어를 실행하면 로그가 쭉 뜬다.
오류나면 또 뜸.
docker logs: 지정된 컨테이너의 로그를 출력합니다.
tomcat_crm: 로그를 확인할 컨테이너의 이름 또는 ID입니다.
-t: 로그에 타임스탬프를 추가합니다.
-f: 로그를 실시간으로 스트리밍합니다. 새로운 로그가 생성될 때마다 계속해서 출력됩니다
중간에 막 spring 글씨도 있고 실행된 내역이 보여짐
ctrl + C 하면 나가진다.
[ 용량 문제가 발생하였을 경우, docker 다시 시작하는 방법 ]
docker 로 들어가서 ls로 폴더를 보면 docker-compose.yml 파일이 있다.
docker-compose.yml 파일은 여러 Docker 컨테이너를 정의하고 관리하는 데 사용되는 구성 파일이다.
이 파일을 통해 여러 컨테이너를 하나의 서비스처럼 쉽게 설정하고 실행할 수 있다.
- version: Docker Compose 파일의 버전을 지정합니다.
- services: 각 컨테이너를 정의하는 가장 중요한 섹션입니다. 여기에는 이미지, 포트, 볼륨, 네트워크 설정 등이 포함됩니다.
- volumes: 데이터를 영구적으로 저장할 수 있는 Docker 볼륨을 정의합니다.
- networks: Docker 네트워크를 정의하여 서비스 간 통신을 가능하게 합니다
직접 파일을 들어가려면 vi 명령어 사용.
i 누르면 편집모드이고 : 하고 q! 하면 나가짐.
vi docker-compose.yml
그 경로에서 docker-compose down 하면 꺼지고 docker-compose up 하면 켜진다.
docker-compose down
docker-compose up -d
docker-compose down 명령어는 Docker Compose로 실행된 모든 컨테이너, 네트워크, 볼륨, 이미지를 중지하고 제거한다.
docker-compose up 는 다시 실행한다.
실행을 docker-compose up -d로 한 이유는 -d 하면 백그라운드에서 실행이라 로그가 실시간으로 올라가지 않는다.
쓸데없는거 안봐도 됨.
2) WinSPC
WinSCP는 Windows용 무료 오픈 소스 SFTP, SCP 및 FTP 클라이언트이다.
주로 로컬 컴퓨터와 원격 서버간의 파일 전송을 할 때 사용한다.
WinSPC 다운로드 : https://winscp.net/eng/download.php
즉, 로컬에 수정한 파일을 클라우드에 덮어쓰기 할 때 유용하다.
PuTTY와 동일하게 ssh 키를 인증해줘야 한다.
C:\Users\사용자이름\.ssh 경로에 인증키도 넣어주자.(고급 > SSH > 인증 > 인증 매개변수에 저장)
이런식으로 좌우 편집창이 뜨는데 왼쪽은 로컬이고 오른쪽은 AWS 위에 올라가있는 서버를 볼 수 있다.
좌측에서 우측으로 파일을 붙여넣으면 끝이다.
'Project > NEWCRM 프로젝트' 카테고리의 다른 글
DB 버전 업그레이드 (1) | 2023.02.10 |
---|---|
타임리프(thymeleaf) textarea 에 데이터 표시하는 방법 (1) | 2023.02.10 |
NewCRM 프로젝트3 (0) | 2022.12.28 |
NEWCRM 프로젝트2 (0) | 2022.12.27 |
NEWCRM 프로젝트1 (0) | 2022.12.26 |
댓글