본문 바로가기
Project/NEWCRM 프로젝트

AWS에 올린 docker 프로젝트 반영(PuTTY,WinSPC 사용방법) / 톰캣 껐다 켜기

by 히앤님 2023. 2. 10.
반응형
SMALL

노트북 바꾼 김에 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)Telnetrloginserial 등 다양한 네트워크 프로토콜을 지원하며, 원격 서버나 네트워크 장비에 접속할 때 많이 사용된다.

 

[주요 기능]

  • SSH를 통해 보안된 원격 접속 가능
  • Telnet과 같은 다른 네트워크 프로토콜을 지원
  • 직렬 통신(Serial Communication)을 통한 장치 연결
  • 여러 서버 및 세션을 동시에 연결할 수 있는 기능 제공

주로 리눅스 서버를 원격으로 관리하거나, 네트워크 장비에 접근하여 설정을 변경할 때 많이 활용된다.

ex) docker 속 폴더 확인, 톰캣 실행, vi 편집기로 편집 등

 

원격 서버에 접속하기 위해서는 [접속할 서버의 호스트네임(또는 ip 주소)] 와 [port] 를 알고있으면 된다.

 

 PuTTY 다운로드 :  https://www.putty.org/

 

Download PuTTY - a free SSH and telnet client for Windows

Is Bitvise affiliated with PuTTY? Bitvise is not affiliated with PuTTY. We develop our SSH Server for Windows, which is compatible with PuTTY. Many PuTTY users are therefore our users as well. From time to time, they need to find the PuTTY download link. W

www.putty.org

 

 

[PuTTY 실행방법]

호스트이름과 포트, 세션 이름 저장
저기에 키 위치 입력

Connection > SSH > Auth > Credentials ~~ 에서 위에서 저장해둔 ssh-rsa 개인키를 불러와준다.

 

실행하면 

그냥 Accept

이런식으로 경고가 뜨는데 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

tomcat 내부 목록

 

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

 

WinSCP :: Official Site :: Download

WinSCP 6.3 Download WinSCP 6.3 is a major application update. New features and enhancements include: Single large file can be downloaded using multiple SFTP connections. Support for OpenSSH certificates for host verification. File hash can be used as crite

winscp.net

 

즉, 로컬에 수정한 파일을 클라우드에 덮어쓰기 할 때 유용하다.

 

 

PuTTY와 동일하게 ssh 키를 인증해줘야 한다.

C:\Users\사용자이름\.ssh 경로에 인증키도 넣어주자.(고급 > SSH > 인증 > 인증 매개변수에 저장)

호스트 네임과 사용자 이름, SSH 키 넣기

 

 

이런식으로 좌우 편집창이 뜨는데 왼쪽은 로컬이고 오른쪽은 AWS 위에 올라가있는 서버를 볼 수 있다.


좌측에서 우측으로 파일을 붙여넣으면 끝이다.

 

 

 

 

반응형
LIST

'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

댓글