'DEV ENVIRONMENT'에 해당되는 글 73건

 
  1. 2021.03.25 아서스 바이오스 인텔 가상화 기술 활성화, Asus Bios Intel VT (Virtualization Technology) 4
  2. 2021.03.18 윈도우10 마리아디비 제거, Uninstall MariaDB Windows 10 10
  3. 2021.03.17 도커 에러, Ports are not available, Container Name "/XXX" is already in use by container 6
  4. 2021.03.17 윈도우10 도커에 마리아디비 설치, Install MariaDb on Docker Windows 10 10
  5. 2021.03.15 WSL 2 installation is incomplete, 윈도우10 도커 설치시 리눅스 커널 업데이트, Docker Linux Kernel Update on Windows 10 33
  6. 2021.03.15 AWS EC2 AUTO SCALING, 오토스케일 자동조정 조건 CPU HIGH 2
  7. 2021.02.26 EC2 재시작(리부팅)시 NGINX 자동 시작 설정 2
  8. 2021.01.15 깃 포터블 설정방법, Github, Gitlab 로그인창 안나타남, Path설정, Git Portable Package 3
  9. 2021.01.07 파이썬 무설치 zip 패키지 수동 설치 설정, Setup Python Embeddable package on Windows 10 7
  10. 2020.12.30 Git Clone시 로그인창이 안나타날때, VSCode Gitlab연동, sslCAInfo 4
  11. 2020.12.27 스프링부트 로그파일 생성안됨, logging.file, application.properties, pom.xml 6
  12. 2020.12.27 EC2에 데이타독 설치 스크립트, INSTALL DATADOG APM 4
  13. 2020.12.27 [NODE.JS] Error: Cannot find module 'ejs', code: MODULE_NOT_FOUND 4
  14. 2020.12.14 AWS EC2에 NginX 설치, 설정, 포트변경 4
  15. 2020.12.04 젠킨스 깃허브 웹훅 자동빌드 설정, 17/17 AWS EC2 JENKINS 스프링부트 자동배포 6
  16. 2020.12.04 Publish over SSH 설정 - 16/17 AWS EC2 JENKINS 스프링부트 자동배포 6
  17. 2020.12.04 스프링부트 재시작 스크립트 - 15/17 AWS EC2 JENKINS 스프링부트 자동배포 8
  18. 2020.12.04 스프링부트 서버 실행, 8080, 80포트 포워딩 - 14/17 AWS EC2 JENKINS 스프링부트 자동배포 7
  19. 2020.12.04 젠킨스에 깃허브 연동, 빌드 - 13/17 AWS EC2 JENKINS 스프링부트 자동배포 7
  20. 2020.12.04 젠킨스에 메이븐 연결 - 12/17 AWS EC2 JENKINS 스프링부트 자동배포 6
  21. 2020.12.04 젠킨스에 자바 설정 - 11/17 AWS EC2 JENKINS 스프링부트 자동배포 8
  22. 2020.12.04 EC2에 메이븐 설치 - 10/17 AWS EC2 JENKINS 스프링부트 자동배포 5
  23. 2020.12.04 EC2에 깃 프로그램 설치 - 9/17 AWS EC2 JENKINS 스프링부트 자동배포 5
  24. 2020.12.04 젠킨스 SSH, 메이븐, 깃 플러그인 설치 - 8/17 AWS EC2 JENKINS 스프링부트 자동배포 5
  25. 2020.12.03 젠킨스 접속 포트 변경 - 7/17 AWS EC2 JENKINS 스프링부트 자동배포 5
  26. 2020.12.03 EC2에 젠킨스 설치 - 6/17 AWS EC2 JENKINS 스프링부트 자동배포 5
  27. 2020.12.03 EC2에 자바1.8 설치, 설정 - 5/17 AWS EC2 JENKINS 스프링부트 자동배포 7
  28. 2020.12.03 EC2 인스턴스에 스왑 파티션 생성, 설정 - 4/17 AWS EC2 JENKINS 스프링부트 자동배포 4
  29. 2020.12.03 Putty로 EC2접속, PPK키 생성 - 3/17 AWS EC2 JENKINS 스프링부트 자동배포 5
  30. 2020.12.03 EC2 보안그룹 인바운드 규칙 접속 설정 - 2/17 AWS EC2 JENKINS 스프링부트 자동배포 6
2021. 3. 25. 17:48 DEV ENVIRONMENT
아서스 바이오스 인텔 가상화 기술 활성화, Asus Bios Intel VT (Virtualization Technology)

Vmware나 안드로이드 에뮬레이터 가속, 도커 가속 등등 여러분야에서 가상화 기술이 탑재된 CPU를 사용할 일이 많아졌습니다.

그런 가상 컴퓨팅을 원할하게 사용하려면 CPU에서 지원해야하고 바이오스에서 활성화시켜야 합니다.

 

활성화 방법은 메인보드 제조사마다 틀립니다.

스샷은 아서스 메인보드 바이오스 화면 입니다.

요즘은 바이오스 소프트웨어가 기똥차구만요

 


바이오스 메인화면입니다.

F7을 눌러서 고급모드로 변경하겠습니다. (기본모드가 더 어지러워)

 

 

가상화기술은 CPU에 있는것이니 CPU 구성으로 들어가겠습니다.

 

 

Intel Virtualization Technology가 보입니다.

활성화로 변경해주세요.

 

종료할때 저장하고 종료해야합니다.

 

2021. 3. 18. 16:47 DEV ENVIRONMENT
윈도우10 마리아디비 제거, Uninstall MariaDB Windows 10

저는 이제 도커에서 마리아디비를 굴릴거기때문에,

윈도우에 설치했던 마리아디비를 삭제하겠습니다.

 

 

1. 설정 > 앱 > MariaDB 선택 > 제거

 

 

2. Next

 

 

3. Remove

 

4. Remove data (디비안에 데이타를 유지하려면 Keep data 선택)

 

5. Remove

 

 

6. Finish

2021. 3. 17. 14:19 DEV ENVIRONMENT
도커 에러, Ports are not available, Container Name "/XXX" is already in use by container

1. Ports are not available

포트가 이미 사용중일때 해당 포트를 사용하는 프로그램을 제거하고 다시 시도 하세요.

저같은경우에는 윈도우용 마리아디비를 이미 실행중이였는데 도커에서 마리아디비를 같은포트로 시작하려다가 발생했습니다.

docker: Error response from daemon: Ports are not available: 
listen tcp 0.0.0.0:3306: bind: Only one usage of each socket address 
(protocol/network address/port) is normally permitted.

 

 

- 도커 마리아디비 시작

docker container run -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=1234 --name mariadb mariadb

 

 

- 포트 검색 방법

netstat -ano | findstr 3306

 

 

- 윈도우 마리아디비 서비스 중지

 

 

 

2. The container name "/XXX" is already in use by container ...

이미 사용중인 컨테이너명이 중복될때 발생하는 에러입니다.

역시 마리아디비를 띄워놓은 상태에서 또 마리아디비를 실행하려다가 발생했습니다.

옛날 마리아디비를 없애버리고 다시 시도하면 됩니다.

docker: Error response from daemon: Conflict. The container name "/mariadb" is already in use by container "7f29a79c70145208469b87f8f0cf9b0c60435233db500bea41efd700c267e91e". You have to remove (or rename) that container to be able to reuse that name.
See 'docker run --help'.

 

 

- 마리아디비 컨테이너 제거

docker rm mariadb

 

2021. 3. 17. 13:11 DEV ENVIRONMENT
윈도우10 도커에 마리아디비 설치, Install MariaDb on Docker Windows 10

윈도우의 도커에 마리아디비를 설치해보겠습니다.

이제 개발용 서버 프로그램들을 도커에 설치해주면 각질이 넘쳐나는 하드디스크를 사용하지 않아도 됩니다.

깨끗한 컴퓨터를 사용할 수 있는것이죠.

나중에 이사가기도 쉽고 도커만 끄면 더 빠른 컴퓨터가 되니까 얼마나 좃습니까...

 

 

1. 파워쉘을 관리자로 실행

 

 

 

2. 도커 설치됬는지 확인

docker --version

 

 

3. 마리아디비 설치

docker pull mariadb

실제로는 스샷보다 더 멋있게? 나옵니다. 최신버전 다운로드 상태가 표시되요.

 

 

4. 마리아디비 컨테이너 등록 & 시작

docker container run -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=1234 -v D:\DOCKER\MARIADB:/var/lib/mysql --name mariadb mariadb

# 디비데이터를 컨테이너에 저장하려면 -v옵션을 안주면 됩니다.
docker container run -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=1234 --name mariadb mariadb

 

 

5. 마리아디비가 실행중인지 확인

docker ps -a

 

 

6. 마리아디비에 접속

docker exec -i -t mariadb bash
mysql -uroot -p1234
create database test;

 

 

7. 사용자 만들어보긔

create user 'kaudo'@'%' identified by '1234';
grant all privileges on test.* to 'kaudo'@'%';
flush privileges;
show databases;

 

 

8. 윈도우10에서 접속 테스트

Host, Port, Database, Username, Password 입력

 

 

9. 마리아디비 사용

 

2021. 3. 15. 20:15 DEV ENVIRONMENT
WSL 2 installation is incomplete, 윈도우10 도커 설치시 리눅스 커널 업데이트, Docker Linux Kernel Update on Windows 10

윈도우에서 도커를 설치하다가 WSL2가 설치되지 않았다는 오류 메세지가 뜨면,

리눅스 커널 업데이트를 해야 합니다.

뭔 윈도우에 리눅스 커널이야?!?!?

 

 

1. 파워쉘을 관리자 권한으로 실행

(파워쉘에 마우스 오른쪽 > 관리자 권한으로 실행)

 

 

2. 리눅스 서브시스템 활성 명령어 입력

dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart

 

 

3. 가상 머신 플랫폼 기능 활성화 명령어 입력

dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart

 

 

4. x64 머신용 최신 WSL2 Linux 커널 업데이트 패키지 다운로드, 설치

wslstorestorage.blob.core.windows.net/wslblob/wsl_update_x64.msi

 

 

5. Docker Desktop - Restart 선택

 

 

6. Docker 설치 완료

2021. 3. 15. 15:42 DEV ENVIRONMENT
AWS EC2 AUTO SCALING, 오토스케일 자동조정 조건 CPU HIGH

오토스케일에 현재값, 최소값, 최대값 조건이 부합하는 상태에서

CPU 사용량 70% 이상으로 10분동안 지속되면 새로운 인스턴스가 시작됩니다.

 

선택할 수 있는 지표는

- 평균 CPU 사용률

- 평균 네트워크 입력(바이트)

- 평균 네트워크 출력(바이트)

- 대상당 Application Load Balacer 요청 수

가 있습니다.

 

사용량이 너무 저조하면 최소용량까지 EC2를 종료시켜버립니다.

설정하기전에 최소용량을 확인하거나,

"확대 정책만 생성하려면 축소 비활성화"를 체크해주면 됩니다.

 

 

 

2021. 2. 26. 14:49 DEV ENVIRONMENT
EC2 재시작(리부팅)시 NGINX 자동 시작 설정

AWS EC2에 리액트를 서비스하기위해 NGINX를 설치했는데,

당연히! 리부팅되면 자동으로 뜰줄 알았는데 안뜨네요.

컴퓨터 재시작(리부팅)할때 NGINX가 자동으로 시작되게 설정하려면 System Control에서 설정해줘야 합니다.

 

# 시스템 컨트롤에서 nginx 자동시작 설정
systemctl enable nginx.service

# 시스템 컨트롤에서 nginx 자동시작 해제
systemctl enable nginx.service

# nginx 상태 보기
systemctl status nginx.service

# nginx 재시작
systemctl restart nginx.service

 

 

1. nginx 상태 확인

Loaded: loaded (/usr/lib/systemd/system/nginx.service; disabled; vendor preset: disabled)

중간에 disabled가 나타나면 ec2가 재시작해도 nginx는 시작되지 않습니다.

sudo systemctl status nginx.service

 

 

2. nginx 자동시작 설정

sudo systemctl enable nginx.service

 

 

3. nginx 상태 확인

sudo systemctl status nginx.service

 

 

 

2021. 1. 15. 17:33 DEV ENVIRONMENT
깃 포터블 설정방법, Github, Gitlab 로그인창 안나타남, Path설정, Git Portable Package

프로그램 설치하는거 싫어하는분들을 위해 GIT에서 포터블 패키지도 배포합니다.

그런데 포터블을 사용하기 위해서는 약간의 작업을 해야합니다.

 

- Git SSL 인증서 설정 - Github나 Gitlab을 이용할때 인증서가 있어야 로그인 할 수 있습니다.

- Git Path 설정 - 패스설정을 해줘야 다른 프로그램이나 커맨드창에서 Git을 사용할 수 있게 됩니다.

 

 

Git SSL 인증서 설정

 

1. git config 명령어 입력

git config --global http.sslCAInfo C:\PROGRAM\Git\mingw64\ssl\certs\ca-bundle.crt

C:\PROGRAM\Git - 본인의 Git 패키지가 위치한 디렉토리

 

 

2. gitlab이나 github에 클론을 해보면 로그인하라고 나타납니다.

 

 

 

 

Git Path 설정

 

1. 탐색기 > 내 PC (오른쪽클릭) > 속성 > 고급 시스템 설정 > 환경 변수

 

 

2. Path 더블클릭

 

 

3. 빈칸 더블클릭 > Git 패키지의 bin 디렉토리 입력

 

 

4. 커맨드창에서 set입력하거나 컴퓨터를 재시작하시면 됩니다.

아무데서나 git --version입력햇을때 git정보가 표시되면 정상입니다.

2021. 1. 7. 15:33 DEV ENVIRONMENT
파이썬 무설치 zip 패키지 수동 설치 설정, Setup Python Embeddable package on Windows 10

파이썬을 처음 시작할때 당연히 파이썬 홈페이지에가서 인스톨러를 다운받아서 설치했습니다.

이게 보자보자하니까 업데이트가 자주 일어나는 편이라서,

3.8에서 3.9를 사용하니까 업데이트가 안되고 패키지가 막 깔게되고 내 컴퓨터는 더러워지고...

 

저는 더이상 파이썬뉴비가 아니기때문에 인스톨러로 설치하지 않고

임베디더블 패키지를 사용하도록 하겠습니다.

 

Intellij나 VSCode같은 별도 툴에 파이썬을 사용하시는 분들은 저처럼

파이썬zip을 받아서 사용하시면 되고,

Command창에서 파이썬을 이용하시는분들은 이렇게 하시면 안됩니다.

 

 

파이썬 다운로드 페이지

나중에 업데이트 되면 더 높은 버전 페이지로 직접 이동하세요.

www.python.org/downloads/release/python-391/

 

Python Release Python 3.9.1

The official home of the Python Programming Language

www.python.org

 

 

하단의 Windows embeddable package (64-bit)를 다운로드

 

 

압축을 풀고 당신이 원하는 위치에 옮겨놓습니다.

저는 C:\PROGRAMS\C:\PROGRAMS\python-3.9.1-embed-amd64로 정했습니다.

 

 

시작 > 설정 > 앱 > Python, Python Launcher 제거

뉴비의 흔적을 삭제합니다.

 

 

Python Uninstall Progress

 

 

 

인텔리제이 사용자일 경우 파이썬 SDK 지정하기

 

 

Intellij 메뉴 > Project Structure... > Platform Settings > SDKs > +(추가) > Add Python SDK...

 

 

Add Python Interpreter > System Interpreter > ... > 파이썬 경로 지정 > OK

 

2020. 12. 30. 15:51 DEV ENVIRONMENT
Git Clone시 로그인창이 안나타날때, VSCode Gitlab연동, sslCAInfo

요즘엔 인텔리제이랑 아톰을 주로 쓰다가,

여기저기서 vscode를 하도 써대길래 나도 써봐야지 했는데,

정말 좋더라고요 (아톰보다빠름, 아톰망해라)

 

그래서 기존 프로젝트를 vscode에 연동하려고 git clone을 했는데,

(기존프로젝트는 비공개기때문에 로그인을 해야되는데)

로그인창이 안나오고 클론도 안되고... 어쩌지!?!? 다시 지워야하나

 

원인은 이참에 Git을 설치하지 않고 프로그램만 복사해놓고 쓰고 있었는데

git에서 사용하는 인증서 파일의 경로가 잘못되어있어서 그랬습니다.

(아마 ssl을 안쓰는 http git서버들은 제대로 작동할것입니다.)

 

 

1. 오류 발생 - 인증서 경로가 잘못됬습니다.

 

 

2. 깃을 복사해놓은 위치로 이동

너의GIT위치 > etc > gitconfig

 

 

3. gitconfig편집 > sslCAInfo 값을 자신의 경로에 맞게 변경

Git을 곧이곧대로 설치하면 C:\Program Files\Git으로 설치됩니다.

...
...
[http]
	sslBackend = openssl
	sslCAInfo = C:/Program Files/Git/mingw64/ssl/certs/ca-bundle.crt
[core]
	autocrlf = true
...
...

 

 

4. 다시 클론하면 로그인창이 나타납니다.

cd 너의프로젝트를클론할디렉토리
git clone 너의프라이빗한프로젝트주소

 

 

* 깃을 안-설치하고 풔서 쓰시는분들은 이렇게 패스설정을 해주셔야 합니다.

 

2020. 12. 27. 20:33 DEV ENVIRONMENT
스프링부트 로그파일 생성안됨, logging.file, application.properties, pom.xml

스프링부트프로젝트에서 로깅파일이 생성이 안되서 찾아봤더니

In higher versions of spring-boot-parent(from version 2.2.0), property logging.file is deprecated.

2.2.0버전 이상부터는 logging.file이라는 설정이 디프리케이티드 됬다는 예기입니다.

그래서 버전을 수정해주고 다시 테스트해보겠습니다.

 

 

스프링 버전이 2.2.0 미만일때

#application.properties
logging.file=파일명

#application.yml
logging:
	file: 파일명

 

 

스프링 버전이 2.2.0 이상일때

#application.properties
logging.file.name=파일명

#application.yml
logging:
	file:
    	name: 파일명

 

 

 

application.yml, pom.xml

...
...
logging:
  level:
    ROOT: DEBUG
    com.zaxxer.hikari.HikariConfig: INFO
    com.zaxxer.hikari: INFO
    org.springframework: INFO
    org.springframework.jdbc: ERROR
    org.springframework.web.filter: DEBUG    
    jdbc: ERROR
    jdbc.connection: ERROR      # 커넥션 open close 이벤트를 로그로 남긴다      
    jdbc.sqlonly: INFO          # SQL문만을 로그로 남기며, PreparedStatement일 경우 관련된 argument 값으로 대체된 SQL문이 보여진다.
    jdbc.sqltiming: WARN        # SQL문과 해당 SQL을 실행시키는데 수행된 시간 정보(milliseconds)를 포함한다.
    jdbc.audit: ERROR           # ResultSet을 제외한 모든 JDBC 호출 정보를 로그로 남긴다. 많은 양의 로그가 생성되므로 특별히 JDBC 문제를 추적해야 할 필요가 있는 경우를 제외하고는 사용을 권장하지 않는다.
    jdbc.resultset: ERROR       # ResultSet 로그를 남긴다. 
    jdbc.resultsettable: ERROR  # SQL 결과 조회된 데이터의 table을 로그로 남긴다.
    org.hibernate.validator: INFO
    springfox: ERROR       
    io.lettuce.core: WARN
    org.apache.http.wire: WARN
  file: 
    name: C:/logs/local.log
    max-size: 100MB
    max-history: 30
...
...
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>
	<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>2.2.9.RELEASE</version>
		<relativePath /> <!-- lookup parent from repository -->
	</parent>
...
...

 

2020. 12. 27. 18:24 DEV ENVIRONMENT
EC2에 데이타독 설치 스크립트, INSTALL DATADOG APM

Datadog은 클라우드 규모 애플리케이션을위한 미국 모니터링 서비스로 SaaS 기반 데이터 분석 플랫폼을 통해 서버, 데이터베이스, 도구 및 서비스에 대한 모니터링을 제공합니다.

 

서버 APM 프로그램인 데이타독을 설치해보겠습니다.

거의 모든 형태의 어플리케이션에 적용할 수 있습니다.

 

 

1. 스크립트 실행

DD_AGENT_MAJOR_VERSION=7 DD_API_KEY=발급받은키 DD_SITE="datadoghq.com" bash -c "$(curl -L https://s3.amazonaws.com/dd-agent/scripts/install_script.sh)"

AWS에 데이타독을 설치하려면 명령어 한줄만 실행하면 됩니다.

재시작시 자동실행까지 알아서 다 등록해줍니다.

설치가 완료되면 프로세스까지 실행되므로

ps로 확인해볼 수 있습니다.

 

 

2. 설치 확인

ps -ef | grep datadog

 

 

 

2020. 12. 27. 17:17 DEV ENVIRONMENT
[NODE.JS] Error: Cannot find module 'ejs', code: MODULE_NOT_FOUND

노트 프로젝트를 실행해보면 MODULE_NOT_FOUND라는 에러가 발생할 수 있습니다.

모듈을 찾을 수 없다는 뜻입니다.

설치해주면 에러를 해결할 수 있습니다.

 

예제의 오류는 ejs라는 모듈입니다.

html안에 javascript코드를 사용할 수 있게 해줍니다.

 

모듈 설치하는 2가지 방법

#프로젝트에만 설치
npm install ejs --save

# 글로벌로 설치
npm install -g ejs

 

 

Error: Cannot find module 'ejs'
Require stack:
- D:\dev\relay\server.js
    at Function.Module._resolveFilename (internal/modules/cjs/loader.js:880:15)
    at Function.Module._load (internal/modules/cjs/loader.js:725:27)
    at Module.require (internal/modules/cjs/loader.js:952:19)
    at require (internal/modules/cjs/helpers.js:88:18)
    at Object.<anonymous> (D:\dev\relay\server.js:7:20)
    at Module._compile (internal/modules/cjs/loader.js:1063:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:1092:10)
    at Module.load (internal/modules/cjs/loader.js:928:32)
    at Function.Module._load (internal/modules/cjs/loader.js:769:14)
    at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:72:12) {
  code: 'MODULE_NOT_FOUND',
  requireStack: [ 'D:\\dev\\relay\\server.js' ]

 

2020. 12. 14. 22:00 DEV ENVIRONMENT
AWS EC2에 NginX 설치, 설정, 포트변경

오늘은 NginX를 설치하고 포트를 변경해보겠습니다.

AWS에서 80포트는 기본적으로 막혀있습니다.

 

 

1. yum 업데이트

sudo yum update -y

 

 

2. NginX 설치 - 에러발생

sudo yum install nginx

 

 

3. 다시 NginX설치

sudo amazon-linux-extras install nginx1

 

 

3. 설치 확인

Is this ok [y/d/N]: > y 입력

 

 

4. 설치완료

 

 

5. NginX 시작, 상태확인

sudo systemctl start nginx.service
ps -ef | grep nginx
sudo netstat -ntlp

 

 

6. 설정파일 편집, 포트를 8888로 변경

sudo vim /etc/nginx/nginx.conf

 

 

 

7. NginX 재시작

sudo systemctl restart nginx.service

 

 

8. 브라우저에서 EC2주소:8888로 접속

 

젠킨스 깃허브 웹훅 자동빌드 설정, 17/17 AWS EC2 JENKINS 스프링부트 자동배포

 

 

Webhook은 Github에 Push되면 Jenkins가 배포하도록 하는 기능입니다.

젠킨스에 빌드/배포/재시작까지 설정되어있으니까

웹훅만 걸어주면 완전한 자동배포가 됩니다.

 

개발자 Push > Github WebHooks > Jenkins Build > Server Restart

 

 

1. 젠킨스 > Jenkins 관리 > 설치가능 > GitHub Intergration 체크

(이미 깔려있으면 패스)

 

 

2. GitHub Intergration 플러그인 설치

 

 

3. 프로젝트 Github > Settings > Webhooks > Add webhook

 

 

 

4. Payload URL에 주소 입력

http://탄력적IP:포트/github-webhook/

 

 

developer.github.com/changes/2019-03-29-webhooks-ip-changes/

 

Webhook IP addresses are changing

Get started with one of our guides, or jump straight into the API documentation.

developer.github.com

 

 

5. AWS EC2 > 인스턴스 > 보안그룹 > 인바운드 허용

Github가 EC2의 Jenkins를 호출해야 되서, 젠킨스 포트를 허용해줘야 합니다.

8090은 자신의 젠킨스 접속 포트, IP주소는 Github서버들의 IP입니다.

8090	140.82.112.0.20
8090	192.30.252.0/22

 

 

6. 소스 Commit > Push

 

 

7. 프로젝트 Github > Settings > Webhooks > 하단에 전송상태 확인

 

 

 

8. 젠킨스 > 빌드히스토리에 저절로 빌드되는지 확인

 

 

9. 브라우저로 스프링부트 프로젝트 확인

 

Publish over SSH 설정 - 16/17 AWS EC2 JENKINS 스프링부트 자동배포

 

 

젠킨스의 Publish Over SSH를 이용하면 다른 서버에 빌드한 파일을 전송할 수 있습니다.

배포와 서버를 한 컴퓨터에서 사용할거라서 로컬에 복사합니다.

 

Jenkins Workspace > Springboot Home Directory

 

 

1. 젠킨스 > 젠킨스 관리 > 시스템 설정

 

 

2. Publish over SSH > 설정값 입력 > Test Configuration > Success > 저장

Key			ec2생성할때 다운로드받은 .pem파일 내용 (편집기로 오픈 > 복사 > 붙여넣기)
Name			LOCALHOST
Hostname		127.0.0.1
Username		ec2-user
Remote Directory	./
접속 테스트

 

 

3. 젠킨스 > 프로젝트 > 구성

 

 

 

4. 빌드 후 조치 > 빌드 후 조치 추가 > Send build artifacts over SSH

 

 

5. SSH Server에 값 입력

/home/ec2-user/webapps/start.sh는 이전글에서 생성한 빌드 스크립트 입니다.

Name			LOCALHOST

Source files			target/*.jar
Remove prefix		target
Remote directory		webapps
Exec command		nohup sh /home/ec2-user/webapps/start.sh &
				sleep 1

 

 

6. 고급 > Exec in pty 체크

 

 

7. 프로젝트 > Build Now

 

 

 

8. 빌드 콘솔에서 SSH 전송 확인

 

 

9. EC2 콘솔 > 파일복사확인

ls -l /home/ec2-user/webapps

 

 

10. 스프링부트 프로젝트 서버 시작 확인

ps -ef | grep java

 

 

11. 브라우저로 접속 확인

 

스프링부트 재시작 스크립트 - 15/17 AWS EC2 JENKINS 스프링부트 자동배포

 

 

이미 실행중인 서버가 있으면 중지하고,

서버를 시작하는 스크립트를 만들겠습니다.

 

직접 실행할 수도 있고, 젠킨스 빌드 후에 서버를 재시작하기 위한 스크립트 입니다.

 

 

1. webapps 디렉토리 생성, 스크립트 파일 생성

mkdir /home/ec2-user/webapps
cd /home/ec2-user/webapps

vi /home/ec2-user/webapps/start.sh

 

 

2. 스크립트 복사 > 붙여넣기

#!/bin/bash

REPOSITORY=/home/ec2-user/webapps
echo "REPOSITORY = $REPOSITORY"
cd $REPOSITORY

PROJECT_NAME=springboot
echo "PROJECT_NAME = $PROJECT_NAME"

PROJECT_PID=$(pgrep -f $PROJECT_NAME)
echo "PROJECT_PID = $PROJECT_PID"

if [ -z $PROJECT_PID ]; then
    echo "no running project"
else
    kill -9 $PROJECT_PID
    sleep 3
fi

JAR_NAME=$(ls $REPOSITORY/ | grep $PROJECT_NAME | tail -n 1)
echo "JAR_NAME = $JAR_NAME"

java -jar $REPOSITORY/$JAR_NAME &

 

 

3. 스크립트 파일에 실행권한 부여 > 스크립트 실행

chmod 770 /home/ec2-user/webapps/start.sh

/home/ec2-user/webapps/start.sh

 

 

 

4. 실행된 스프링부트 프로젝트 확인

 

스프링부트 서버 실행, 8080, 80포트 포워딩 - 14/17 AWS EC2 JENKINS 스프링부트 자동배포

 

 

스프링부트 프로젝트(다른것들도)를 EC2에서 가동하면 80포트 접근이 제한됩니다.

그래서 스프링부트는 8080으로 띄우고,

사용자가 80으로 접속해도 8080에 접속되도록 설정하겠습니다.

 

 

1. 젠킨스 워크스페이스로 이동

경로는 사용자마다 다를 수 있습니다.

cd /var/lib/jenkins/workspace/springboot/target

 

 

2. 스프링부트 서버 시작

java -jar ./springboot.jar &

 

 

3. 8080으로 접속 테스트

application.properties(yml)의 포트로 접속하시면 됩니다. (80은 안됩니다.)

 

 

 

4. IP테이블 등록

sudo iptables -A PREROUTING -t nat -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 8080
sudo iptables -t nat -L --line-number

 

 

5. 80포트로 접속

 

 

6. IP테이블 서비스 설치

sudo yum -y install iptables-services

 

 

7. IP테이블 서비스 설정

sudo service iptables save
sudo systemctl start iptables
sudo systemctl enable iptables
sudo iptables -t nat -L

 

rc.local에 등록

sudo vi /etc/rc.local

sudo iptables -t nat -I PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8080
맨 아래에 추가

wq:


sudo iptables-save > /home/ec2-user/iptables
sudo mv /home/ec2-user/iptables /etc/sysconfig/iptables
젠킨스에 깃허브 연동, 빌드 - 13/17 AWS EC2 JENKINS 스프링부트 자동배포

 

 

이번에는 젠킨스에 새로운 아이템을 생성해서 Github에서 소스를 받아서 jar파일을 생성해보겠습니다.

그리고 서버에서 스프링부트 프로젝트를 실행하면 수동으로 배포가 완료됩니다.

 

 

1. 젠킨스 > 새로운 Item

 

 

2. 이름 입력 (저는 springboot로 입력했습니다)

 

 

3. 소스 코드 관리 > Git 선택

 

 

 

4. 깃허브 > Code > Clone > HTTPS > 주소 복사

 

 

5. Repository URL에 복사한 주소 입력 > Credentials > Add > Jenkins

 

 

6. Github 계정정보 입력 > Add

Domain: Global credentials (unrestricted)
Kind: Username with password
Scope: Global (Jenkins, nodes, items, all child items, etc)
Username: 깃허브아이디(이메일주소)
Password: 깃허브비밀번호

 

 

7. Branch Specifier (blank for 'any') 에 */master 입력 > 저장

다른 브랜치가 있으면 다른것을 입력해도 됩니다.

 

 

 

8. 젠킨스 > Item > Build Now

 

 

9. 콘솔 출력 확인

첫 빌드때는 프로젝트에 필요한 jar파일을 다운받느라고 좀 느립니다.

 

 

10. EC2 > 빌드된 jar 확인

springboot는 젠킨스에서 생성한 Item이름입니다.

cd /var/lib/jenkins/workspace/springboot/target
ls -l

 

젠킨스에 메이븐 연결 - 12/17 AWS EC2 JENKINS 스프링부트 자동배포

 

 

메이븐 플러그인은 플러그인이고 젠킨스가 설치된 EC2에 메이븐이 설치되어 있어야 합니다.

젠킨스에 적용하기 위해서 메이븐 홈 디렉토리를 지정해주겠습니다.

 

 

1. 젠킨스 > Jenkins 관리 > Global Tool Configuration

 

 

2. Maven Configuration은 패스

 

 

3. Maven > Add Maven

 

 

 

4. 메이븐 홈 디렉토리 확인 (Maven Home: /usr/share/apache-maven)

 

 

5. Name(아무렇게나), MAVEN_HOME 입력 > Save

 

젠킨스에 자바 설정 - 11/17 AWS EC2 JENKINS 스프링부트 자동배포

 

 

젠킨스 설정에 가서 설치한 자바를 설정해줍니다.

이전에 이미 자바를 설치했기때문에 설치된 자바를 설정하겠습니다.

자바가 여러개 가지고 싶으면 또 설치해도 됩니다.

 

 

1. 젠킨스 > Jenkins 관리 > Global Tool Configuration

 

 

2. JDK > Add JDK

 

 

3. Install automatically 체크 해제 > Name, JAVA_HOME 입력 > Save

Name은 아무렇게나 입력해도 됩니다.
JAVA_HOME은 본인 인스턴스에 맞는 경로를 입력하세요.

Name		JDK1.8
JAVA_HOME	/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.265.b01-1.amzn2.0.1.x86_64

 

 

 

EC2에 메이븐 설치 - 10/17 AWS EC2 JENKINS 스프링부트 자동배포

 

 

yum으로 EC2에 Maven을 설치하겠습니다.

메이븐은 젠킨스에서 프로젝트 빌드할때 필요한 프로그램 입니다.

 

 

1. yum 업데이트

sudo yum update -y

 

 

2. 메이븐 패키지 리파지토리 정보 가져오기

sudo wget http://repos.fedorapeople.org/repos/dchen/apache-maven/epel-apache-maven.repo -O /etc/yum.repos.d/epel-apache-maven.repo

 

 

3. 최신 메이븐 패키지 정보 추출

sudo sed -i s/\$releasever/6/g /etc/yum.repos.d/epel-apache-maven.repo

 

 

 

4. 메이븐 설치

sudo yum install -y apache-maven

 

 

5. 메이븐 버전 확인

Maven home 경로는 나중에 젠킨스에 입력해줘야 합니다.

mvn --version

 

EC2에 깃 프로그램 설치 - 9/17 AWS EC2 JENKINS 스프링부트 자동배포

 

 

젠킨스에서 사용할 깃 프로그램을 설치하겠습니다.

Github, Gitlab, 뭐든 깃을 이용하는 곳에서 소스를 받으려면 Git을 설치해야 합니다.

 

 

1. yum 업데이트

sudo yum update -y

 

 

2. 깃 설치

sudo yum install git -y

 

 

3. 깃 버전 확인

git version

 

젠킨스 SSH, 메이븐, 깃 플러그인 설치 - 8/17 AWS EC2 JENKINS 스프링부트 자동배포

 

 

젠킨스 설치할때 설치된 기본 플러그인으로는 자동배포를 할 수 없습니다.

이번에는 젠킨스에 추가로 플러그인을 설치하겠습니다.

 

 

1. 젠킨스 > Jenkins 관리 > 플러그인 관리

 

 

2. 플러그인 관리 > 설치 가능 탭 선택

 

 

3. Publish Over SSH 체크

 

 

 

4. Maven Intergration 체크

 

 

5. Github Intergration 체크

 

 

6. 재시작 없이 설치하기 (지금 다운로드하고 재시작 후 설치하기)

 

 

7. 설치

설치가 완료되도 표시가 잘 안될수도 있습니다.

반응이 없으면 한참후에 새로고침해보시면 됩니다.

 

젠킨스 접속 포트 변경 - 7/17 AWS EC2 JENKINS 스프링부트 자동배포

 

 

젠킨스의 기본 포트는 8080입니다.

그런데 저는 서버 한대에 젠킨스와 스프링부트를 함께 돌릴거라서 포트가 겹칩니다.

그래서 8080은 스프링부트에 적용하고,

젠킨스 포트를 8090으로 변경하겠습니다.

(8090말고도 다른 원하는 포트로 변경해도 됩니다.)

 

 

1. 젠킨스 파일 수정

sudo vi /etc/sysconfig/jenkins

... 파일수정

:wq

 

 

2. 젠킨스 서비스 재시작

sudo service jenkins restart

 

 

3. 변경된 포트로 접속

http://탄력적IP:8090

 

EC2에 젠킨스 설치 - 6/17 AWS EC2 JENKINS 스프링부트 자동배포

 

 

EC2에 젠킨스를 설치하겠습니다.

저는 자동배포가 목적이기 때문에,

기본설정에 기본 플러그인을 모두 설치합니다.

 

 

1. yum 업데이트

sudo yum update -y

 

 

2. 젠킨스 저장소 가져오기

sudo wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo

 

 

3. 젠킨스 키 가져오기

sudo rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key

 

 

 

4. 젠키스 설치

sudo yum install jenkins -y

 

 

5. 젠킨스 서비스 시작

sudo service jenkins start

 

 

6. 브라우저로 접속
http://탄력적IP:8080

 

 

7. EC2에서 비밀번호 복사
위 스크린샷의 위치의 파일을 열면 됩니다.

 sudo vi /var/lib/jenkins/secrets/initialAdminPassword

 

 

 

8. 복사한 비밀번호 붙여넣기 > Continue

 

 

9. Customize Jenkins > Install suggested plugins

 

 

10. Getting Started
기본 플러그인을 설치, 시간이 좀 걸립니다.

 

 

11. 관리자 계정 만들기

 

 

 

12. 젠킨스 주소 확인 > Save and Finish

 

 

13. Jenkins is ready! > Start using Jenkins

 

 

14. 젠킨스 메인페이지 접속

 

EC2에 자바1.8 설치, 설정 - 5/17 AWS EC2 JENKINS 스프링부트 자동배포

 

 

EC2를 생성하면 보통 JAVA 1.7이 깔려있습니다. (나중엔 더 높은버전이 깔려있겠죠)

저는 JAVA 1.8로 개발도하고 젠킨스도 돌리고 서버도 돌릴꺼라서 JAVA 1.8을 설치하겠습니다.

이미 JAVA 1.8이 설치되어있으면 작업하지 않아도 됩니다.

 

 

1. yum 업데이트

sudo yum update

 

 

2. 설치된 자바 확인

java -version

 

 

3. 설치가능한 자바 버전 확인

yum list java*jdk

 

 

 

4. java 1.8 설치 (설치가능한 자바 목록에서 복붙하세요)

sudo yum install -y java-1.8.0-openjdk.x86_64

 

 

5. 자바 버전 선택 > 1 > 엔터 (이미 1.8이 선택되어있으면 취소해도 됩니다)

sudo /usr/sbin/alternatives --config java

 

 

6. 다시 자바버전 확인

java -version

 

EC2 인스턴스에 스왑 파티션 생성, 설정 - 4/17 AWS EC2 JENKINS 스프링부트 자동배포

 

 

AWS의 EC2를 만들면 스왑 파티션이 없습니다. (일부러 빼놓은거같은데)

프리티어로 생성하는 EC2는 똥컴이기 때문에 쓰다보면 메모리 부족으로 프로그램들이 멈춥니다.

 

그래서 직접 스왑 파티션을 생성해주면 사용하는데 지장이 없습니다.

 

고성능 상위 인스턴스를 사용하면 스왑 파티션을 안만들어도 됩니다.

 

 

1. 스왑파일 생성

sudo mkdir /var/spool/swap
sudo touch /var/spool/swap/swapfile 
sudo dd if=/dev/zero of=/var/spool/swap/swapfile count=2048000 bs=1024
ls -l /var/spool/swap

 

 

2. 스왑파일 설정

sudo chmod 600 /var/spool/swap/swapfile 
sudo mkswap /var/spool/swap/swapfile
sudo swapon /var/spool/swap/swapfile

 

 

3. 스왑파일 등록

sudo vi /etc/fstab

파일 아래쪽에 추가
/var/spool/swap/swapfile    none    swap    defaults    0 0 

wq:

 

 

Putty로 EC2접속, PPK키 생성 - 3/17 AWS EC2 JENKINS 스프링부트 자동배포

 

 

윈도우 사용자일 경우 Putty로 콘솔에 접속하는 방법입니다.

맥 사용자는 안하셔도 됩니다.

EC2 생성할때 받은 PEM파일로는 Putty로 접속할 수 없기때문에,

PPK로 변환을 하고 접속할 수 있습니다.

 

 

1. puttygen.exe 실행

 

 

2. Load 버튼 클릭

 

 

3. 다운로드받은 pem파일 선택

EC2생성할때 다운로드받은 .pem파일을 선택하면 됩니다.

석세스풀리 임포티드 경고창이 뜨고, 프로그램에 키값이 막 채워집니다.

 

 

 

4. Save private key

이름은 pem파일과 똑같이하면 (마음대로 해도 됩니다)

 

 

5. AWS서비스 > 네트워크 및 보안 > 탄력적 IP > 탄력적 IP 주소 할당

 

 

6. 탄력적 IP 주소 설정 > (아무것도 건드리지 않고) > 할당

 

 

7. 생성된 탄력적IP 선택

 

 

 

8. 탄력적 IP 주소 연결

 

 

9. 인스턴스에서 EC2 선택 (인스턴스인풋박스를 클릭하면 자신의 EC2서버가 보입니다.)

 

 

10. putty.exe 실행 > Connection > SSH > Auth

Browse클릭 > ppk파일 선택 (위에서 만든파일)

 

 

11. Session > Host Name에 위에서 생성한 탄력적 IP 입력 > Open

 

 

 

12. 경고창 > 예(Y) 선택

 

 

13. login as:에 "ec2-user"입력 > 엔터

 

 

14. 연결되었습니다

 

EC2 보안그룹 인바운드 규칙 접속 설정 - 2/17 AWS EC2 JENKINS 스프링부트 자동배포

 

 

AWS EC2 서버는 기본적으로 모든 접근이 막혀있습니다.

콘솔 접근을 하거나 젠킨스 접속/사용,

스프링부트 프로젝트 확인을 위해서

접속권한을 설정하겠습니다.

 

 

1. AWS 콘솔 > 서비스 > EC2

 

 

2. 인스턴스 > 인스턴스 > 내 인스턴스 체크(선택)

 

 

3. 보안 탭 > 보안 그룹 > 보안그룹링크 클릭 (sg-0549a.... 사용자마다 다릅니다)

 

 

 

4. 인바운드 규칙 편집

 

 

5. 규칙 추가 > 80, 22, 8080, 8090 입력 > 내 IP

80		스프링부트 프로젝트 접속 포트, 브라우저로 접속
22		EC2접속 포트, PUTTY로 접속
8080		스프링부트 프로젝트 접속 포트, 브라우저로 접속
8090		젠킨스 접속 포트, 브라우저로 접속

 

 

- 컴퓨터 아이피가 자주 바뀌는 분들은 XXX.XXX.XXX.0/24로 설정하면
아이피가 변경되도 접속할 수 있습니다.

 

최근에 올라온 글

최근에 달린 댓글