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

 
  1. 17:58:01 젠킨스 깃허브 웹훅 자동빌드 설정, 17/17 AWS EC2 JENKINS 스프링부트 자동배포
  2. 16:29:42 Publish over SSH 설정 - 16/17 AWS EC2 JENKINS 스프링부트 자동배포
  3. 14:31:20 스프링부트 재시작 스크립트 - 15/17 AWS EC2 JENKINS 스프링부트 자동배포
  4. 12:34:56 스프링부트 서버 실행, 8080, 80포트 포워딩 - 14/17 AWS EC2 JENKINS 스프링부트 자동배포
  5. 10:38:27 젠킨스에 깃허브 연동, 빌드 - 13/17 AWS EC2 JENKINS 스프링부트 자동배포
  6. 08:41:47 젠킨스에 메이븐 연결 - 12/17 AWS EC2 JENKINS 스프링부트 자동배포
  7. 06:42:10 젠킨스에 자바 설정 - 11/17 AWS EC2 JENKINS 스프링부트 자동배포
  8. 04:44:34 EC2에 메이븐 설치 - 10/17 AWS EC2 JENKINS 스프링부트 자동배포
  9. 02:41:54 EC2에 깃 프로그램 설치 - 9/17 AWS EC2 JENKINS 스프링부트 자동배포
  10. 01:02:18 젠킨스 SSH, 메이븐, 깃 플러그인 설치 - 8/17 AWS EC2 JENKINS 스프링부트 자동배포
  11. 2020.12.03 젠킨스 접속 포트 변경 - 7/17 AWS EC2 JENKINS 스프링부트 자동배포
  12. 2020.12.03 EC2에 젠킨스 설치 - 6/17 AWS EC2 JENKINS 스프링부트 자동배포
  13. 2020.12.03 EC2에 자바1.8 설치, 설정 - 5/17 AWS EC2 JENKINS 스프링부트 자동배포
  14. 2020.12.03 EC2 인스턴스에 스왑 파티션 생성, 설정 - 4/17 AWS EC2 JENKINS 스프링부트 자동배포
  15. 2020.12.03 Putty로 EC2접속, PPK키 생성 - 3/17 AWS EC2 JENKINS 스프링부트 자동배포
  16. 2020.12.03 EC2 보안그룹 인바운드 규칙 접속 설정 - 2/17 AWS EC2 JENKINS 스프링부트 자동배포
  17. 2020.12.03 EC2 인스턴스 생성 - 1/17 AWS EC2 JENKINS 스프링부트 자동배포
  18. 2020.11.26 AWS EC2, 80포트 리다이렉트 명령어, sudo iptables -A PREROUTING -t nat -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 8080
  19. 2020.11.20 [ECLIPSE] Failed to load the JNI shared library, 이클립스 실행 오류
  20. 2020.11.17 Access to fetch at 'https://도메인/엔드포인트' from origin 'https://호출한도메인' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: It does not have HTTP ok status.
  21. 2020.11.15 rejected - non-fast-forward, STS 이클립스에서 Git Remotes 설정
  22. 2020.11.15 젠킨스 접속 포트 변경, AWS EC2 Jenkins Port
  23. 2020.10.21 AttributeError: type object 'Callable' has no attribute '_abc_registry', 파이썬 PyAutoGui 설치 오류
  24. 2020.10.20 인텔리제이 파이썬 패키지 설치 실패 PIP 업그레이드, PYTHON PYCHARM INTELLIJ
  25. 2020.10.19 인텔리제이에서 안드로이드 네이티브 템플릿 가져오기, Intellij Import Native Template Module
  26. 2020.10.13 디비버 쿼리 실행 단축키 오류, SQL문 실행 옵션 설정, DBEAVER ORACLE QUERY EXECUTE SHORT-CUT OPTIONS
  27. 2020.10.08 Markdown processor: "redcarpet" is not a valid Markdown processor
  28. 2020.09.15 DBEAVER 오라클 데이타베이스 접속하기, oracle database instantclient
  29. 2020.09.15 DBEAVER JAVA VM 설정하기, javaw.exe in your current PATH
  30. 2020.08.21 [MAC/PYTHON] 맥북에서 파이썬3 셀레니엄 설치, installing selenium on MacBook
젠킨스 깃허브 웹훅 자동빌드 설정, 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로 설정하면
아이피가 변경되도 접속할 수 있습니다.

 

댓글을 달아 주세요

EC2 인스턴스 생성 - 1/17 AWS EC2 JENKINS 스프링부트 자동배포

 

 

AWS EC2에 스프링부트 프로젝트를 자동배포 하는 방법입니다.

로컬 컴퓨터에서 스프링부트 프로젝트의 소스를 푸시(커밋)하면 EC2에 자동으로 배포/적용되게 하겠습니다.

 

예제에서 사용하는 스프링부트 프로젝트는 메이븐 기반입니다.

(그래들 프로젝트도 젠킨스에 기본으로 깔리니까 잘 빌드될것 같습니다.)

스프링부트 프로젝트가 있고 소스가 Github에 있어야 합니다.

AWS 회원가입(카드등록)도 되어있어야 합니다.

 

 

먼저 AWS에 EC2를 생성하는 방법입니다.

 

 

1. 서비스 > 컴퓨팅 > EC2

 

 

2. 인스턴스 > 인스턴스 > 인스턴스 시작

 

 

3. Amazon Linux2 AMI > 선택

(아마존 리눅스나 우분투 아무거나 해도 됩니다)

 

 

 

4. t2 마이크로 선택 > 다음: 인스턴스 세부 정보 구성

 

 

5. (변경한게 없습니다.) 다음: 스토리지 추가

 

 

6. (변경한게 없습니다.) 다음: 태그 추가

저는 기본으로 적혀있는 8Gb를 선택했는데, 30Gb까지는 프리티어 무료 입니다.

 

 

7. (추가한게 없습니다.) > 다음: 보안 그룹 구성

 

 

 

8. SSH, 22, 내 IP선택 > 검토 및 시작

접속해야 하니까 일단 SSH한개만 열어주면 됩니다.

 

 

9. 자신이 선택한 세부정보 확인 > 시작하기

 

 

10. 새 키 페어 생성 > "키페어이름입력" > 키 페어 다운로드 > 인스턴스 시작

키파일은 한번 받으면 더이상 받을 수 없습니다.

잃어버리면 셋팅을 다시 해야하니까 잘 보관하세요.

 

 

11. 인스턴스 생성 완료 > 시작

 

 

 

12. 인스턴스 > 인스턴스 > 생성된 인스턴스 확인

댓글을 달아 주세요

2020. 11. 26. 17:04 DEV ENVIRONMENT
AWS EC2, 80포트 리다이렉트 명령어, sudo iptables -A PREROUTING -t nat -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 8080

AWS에서는 80포트가 막혀있다고 합니다.

여기저기 80을 사용할 수 있는 방법이 많은데,

조금씩 틀리고 안되는것도 있고...

제가 사용하는 관련 명령어들 입니다.

 

 

80포트를 8080포트로 라우팅

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

 

 

포트상태 출력

netstat -tnlp 



아이피테이블 상태 출력

sudo iptables -t nat -L --line-numbers 

 


아이피테이블 삭제 (목록 조회 후 번호 입력)

sudo iptables -t nat -D PREROUTING 2

 

 

아이피테이블 저장

sudo service iptables save

 

 

부팅 스크립트 편집

sudo vi /etc/rc.local

 

 

리부팅

sudo reboot -f

 

 

 

댓글을 달아 주세요

2020. 11. 20. 17:23 DEV ENVIRONMENT
[ECLIPSE] Failed to load the JNI shared library, 이클립스 실행 오류

이클립스를 실행하면 Failed to load the JNI shared library

오류가 발생하면서 실행되지 않습니다.

경로를 확인해봐도 정상적으로 파일이 있습니다.

 

 

원인은 32비트, 64비트가 안맞아서 그런것 입니다.

이클립스가 32비트고 java가 64비트이거나

이클립스가 64비트고 java가 32비트이면

 

 

자바를 바꾸던 이클립스를 바꾸던 32비트로 하든 64비트로 하든 맞춰주면 됩니다.

자바 버전확인을 해보면 32비트인지 64비트인지 확인할 수 있습니다.

java -version

 

댓글을 달아 주세요

2020. 11. 17. 17:00 DEV ENVIRONMENT
Access to fetch at 'https://도메인/엔드포인트' from origin 'https://호출한도메인' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: It does not have HTTP ok status.

포스트맨으로는 잘되던게 실제 브라우저에서는 오류가 발생했습니다.

알아보니까 실제로는 OPTIONS라는 메소드로 먼저 호출을 한다고 하는데,

그 이름이 PREFLIGHT라고 하네요.

 

그래서 오류가 일반적인 CORS오류가 아니고

blocked by CORS policy: Response to preflight request doesn't pass access control check: It does not have HTTP ok status.

라고 적혀있습니다.

 

Access to fetch at 'https://도메인/엔드포인트' from origin 'https://호출한도메인' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: It does not have HTTP ok status.

 

스프링프레임웤(스프링부트)에서 해결하는 방법

 

1. 파일중에 WebSecurityConfigurerAdapter를 상속받은 클래스를 찾는다.

 

 

2. 오버라이드 된 configure(HttpSecurity http)메소드를 편집한다. (없으면 만듦)

@Override
protected void configure(HttpSecurity http) throws Exception {

 

 

3. http에 코드 추가

.cors().and()
.requestMatchers(CorsUtils::isPreFlightRequest).permitAll()

 

 

* 리액트프론트용 자바스크립트 코드

브라우저에 붙여서 테스트

var Data = {
  METHOD : {
    GET : 'GET',
    POST : 'POST',
    PUT : 'PUT',
    DELETE : 'DELETE'
  },
  TYPE : {
    FILE_UPLOAD : 'Data.TYPE.FILE_UPLOAD'
  },
  load : ( option ) => {
    const accessToken = localStorage.getItem('access.token');
    let parameters = {
      headers : { Authorization : accessToken ? `Bearer ${ accessToken }` : '' },
      method : option.method || Data.METHOD.GET
    };
    switch ( option.method ) {
      case Data.METHOD.POST :
      case Data.METHOD.PUT :
        option.type !== Data.TYPE.FILE_UPLOAD && ( parameters = { ...parameters, headers : { 'Content-Type' : 'application/json' } } );
        break;
      default :
    }
    if ( option.data ) {
      let data;
      if ( option.type === Data.TYPE.FILE_UPLOAD ) {
        data = new FormData();
        for ( let i in option.data ) {
          data.append( i, option.data[ i ] );
        }
      } else {
        data = JSON.stringify( option.data );
      }
      parameters = { ...parameters, body : data };
    }
    window.fetch( option.url, parameters )
      .then( response => response.json() )
      .then(
        ( data ) => {
          if ( data.code === 'S000000' ) {
            option.success && option.success( data.data );
          } else if ( data.hwrErrorCode?.code === 'ERR_SUCCESS' ) {
            option.success && option.success( data.candidates[ 0 ] )
          } else {
            option.error && option.error( data );
          }
        }
      );
  }
};
Data.load({url:'http://localhost/주소'});

 

 

댓글을 달아 주세요

2020. 11. 15. 12:09 DEV ENVIRONMENT
rejected - non-fast-forward, STS 이클립스에서 Git Remotes 설정

이클립스에서 GIT 설정하는 방법입니다.

인텔리제이보다 복잡하네요.

 

 

1. Git Repositories열기

메뉴 > Windows > Show View > Other...

Git > Git Repositories

 

 

2. 패치 설정

프로젝트 > Remotes > origin > 패치주소에 마우스오른쪽 > Configure Fetch...

 

 

2-1. Advanced...

 

 

2-2. Source ref:, Destination ref: 수정

refs/heads/master

refs/remotes/origin/master

 

 

2-3. Add Spec > Finish

 

 

2-4. Save and Fetch

 

 

3. 푸시 설정

프로젝트 > Remotes > origin > 푸시주소에 마우스오른쪽 > Configure Push...

패치설정과 동일하게 작업하세요.

 

 

댓글을 달아 주세요

2020. 11. 15. 10:34 DEV ENVIRONMENT
젠킨스 접속 포트 변경, AWS EC2 Jenkins Port

젠킨스 포트 변경하는 방법 입니다.

로컬에서 설치하신 분들은 편집기로 수정하면 됩니다.

AWS EC2에 설치했기 때문에 설정파일이 리눅스 기준으로 되어있습니다.

 

 

1. 터미널로 EC2접속

 

 

2. 명령어 실행

sudo vi /etc/sysconfig/jenkins

 

 

3. 설정파일 편집

JENKINS_PORT="8080" 부분을 찾아서 변경

JENKINS_PORT="원하는포트"

변경 후에 ":wq[엔터]" 입력하면 저장/편집종료 입니다.

 

 

 

 

4. 젠킨스 재시작

sudo service jenkins restart

 

 

댓글을 달아 주세요

2020. 10. 21. 10:57 DEV ENVIRONMENT
AttributeError: type object 'Callable' has no attribute '_abc_registry', 파이썬 PyAutoGui 설치 오류

PyAutoGUI 설치중 에러가 발생했습니다.

콜러블은 abc레지스트리 속성이 없다?!?!

AttributeError: type object 'Callable' has no attribute '_abc_registry'

 

 

typing 패키지 삭제

패키지중에 typing이란 패키지가 있으면 설치가 안됩니다.

pip uninstall typing

 

 

pyautogui 설치

pip install pyautogui

 

 

 

 

댓글을 달아 주세요

2020. 10. 20. 17:24 DEV ENVIRONMENT
인텔리제이 파이썬 패키지 설치 실패 PIP 업그레이드, PYTHON PYCHARM INTELLIJ

인텔리제이에서 파이썬 패키지 설치중 오류가 발생했습니다.

그래서 자세히 보니까 PIP가 업그레이드 되었다고 합니다.

PIP가 업글되는지는 몰랐네요.

 

 

설치 오류 발생 > Details... 클릭

 

 

오류 메세지중에 PIP를 업그레이드해보라고 적혀있습니다.

C:\Users....................... --upgrade pip 까지 복사

WARNING: You are using pip version 20.1.1; however, version 20.2.4 is available.
You should consider upgrading via the 'C:\Users\qqqqqqqq\AppData\Local\Programs\Python\Python38-32\python.exe -m pip install --upgrade pip' command.

 

 

시작 > 실행 > cmd (명령프롬프트 실행)

PIP업그레이드 명령어 붙여넣기 > 엔터

 

 

 

 

 

댓글을 달아 주세요

2020. 10. 19. 13:29 DEV ENVIRONMENT
인텔리제이에서 안드로이드 네이티브 템플릿 가져오기, Intellij Import Native Template Module

이제 안드로이드 스튜디오를 안쓰고 인텔리제이에서 안드로이드 개발을 하고 있습니다.
그래서그런지 메뉴명이 조금씩 틀립니다. (버전이 다른건지...)

 

어쨌든 구글 애드몹 네이티브 광고 달기 예제에 네이티브템플릿을 모듈가져오기로 임포트 하라는데,
인텔리제이는 조금 다릅니다.

 

 

1. File > New > Module...

 

 

2. New Module > Android > Import Gradle Project

Source directory 선택 (.gradle이 있는 디렉토리 선택, nativetemplates)

 

 

3. 그래들 싱크가 끝나면 정상적으로 임포트 된 모듈을 확인할 수 있습니다.

 

 

댓글을 달아 주세요

2020. 10. 13. 11:22 DEV ENVIRONMENT
디비버 쿼리 실행 단축키 오류, SQL문 실행 옵션 설정, DBEAVER ORACLE QUERY EXECUTE SHORT-CUT OPTIONS

DBEAVER에서

1. Ctrl+Enter를 입력하면 현재 커서가 위치한 쿼리를 실행해줍니다.

2. Alt+X는 쿼리가 한개면 좋은데 쿼리가 여러개가 한 편집기에 같이 있으면 긁어서 실행해야되서 귀찮음

 

 

그런데 다른 툴과다르게 Ctrl+Enter는 그지같이 공백라인이 있으면 오류가 발생합니다.

(어쩔땐 되고 어쩔땐 되길래 한참을 모르다가 알게됨)

 

옵션중에 '줄바꿈을 다른쿼리로 인식한다'고 체크되있어서 나는 오류였습니다.

 

 

메뉴 > 윈도우 > 설정 > 편집기 > SQL 편집기 > SQL 실행

Blank line is statement delimiter 체크 해제

 

 

 

 

쿼리 실행 오류, 커서 위치에 따라서 다양한 오류가 발생합니다.

 

 

쿼리안에 공백이 있으면 오류가 발생합니다.

 

댓글을 달아 주세요

2020. 10. 8. 12:41 DEV ENVIRONMENT
Markdown processor: "redcarpet" is not a valid Markdown processor

_config.yml 안에 redcarpet을 kramdown으로 변경하면 됩니다.

옛날버전이 레드카펫이라는걸 썼는데, 지금은 람다운을 쓴다나 어쩐다나... 그렇다네요.

 

 

로컬 서버 명령어 실행 후 오류 발생

jekyll serve

bundle exec jekyll servce

Markdown processor: "redcarpet" is not a valid Markdown processor

 

 

_config.yml 파일 수정

markdown: redcarpet
을
markdown: kramdown
로 수정

 

 

다시 실행

 

 

댓글을 달아 주세요

2020. 9. 15. 12:35 DEV ENVIRONMENT
DBEAVER 오라클 데이타베이스 접속하기, oracle database instantclient

dbeaver는 지원하는 데이타베이스가 아주 많습니다.

이번에는 오라클 데이타베이스에 접속해보겠습니다.

오라클 접속시에 사용되는 instantclient의 tnsnames.ora를 설정하지 않아도 됩니다.

그래도 instantclient 패키지는 필요합니다.

 

 

1. Select your database - 오라클 데이타베이스 선택

 

2. Oracle Connection Settings - 호스트, 데이타베이스(SID), 사용자명, 비밀번호, 클라이언트(instantclient경로)

 

 

 

 

3. Download driver files - 필요한 라이브러리, 파일 설치

 

 

4. 오라클 데이타베이스 접속

 

댓글을 달아 주세요

2020. 9. 15. 10:16 DEV ENVIRONMENT
DBEAVER JAVA VM 설정하기, javaw.exe in your current PATH

dbeaver실행하다가 다음과 같은 오류가 나면 자바를 못찾아서 발생하는 오류 입니다.

디비버도 이클립스 기반이기때문에 이클립스와 같은 형식의 설정파일이 있습니다.

설치경로(압축푼곳)에 있는 dbeaver.ini에 java 경로를 지정해주면 됩니다.

 

 

dbeaver.ini 파일 수정 - 경로는 자신의 java 경로에 맞게 설정하세요.
-vm
\자바jdkjrd위치\bin

-vm
\PROGRAMS\jdk1.8.0_202\bin
-startup
plugins/org.eclipse.equinox.launcher_1.5.700.v20200207-2156.jar
--launcher.library
plugins/org.eclipse.equinox.launcher.win32.win32.x86_64_1.1.1100.v20190907-0426
-vmargs
-XX:+IgnoreUnrecognizedVMOptions
--add-modules=ALL-SYSTEM
-Xms64m
-Xmx1024m

 

 

dbeaver 실행

 

 

댓글을 달아 주세요

2020. 8. 21. 23:59 DEV ENVIRONMENT
[MAC/PYTHON] 맥북에서 파이썬3 셀레니엄 설치, installing selenium on MacBook

웹브라우저를 제어하려고 셀레니엄을 설치하겠습니다.

 

pip명령어가 없는 분들은

https://blog.nachal.com/1530

참고하시고 pip 설치후에 selenium을 설치하시면 됩니다.

 

 

셀레니엄 설치

sudo pip3 install selenium
컴퓨터 비밀번호 입력

kaudo@MacBookPro ~ % sudo pip3 install selenium
WARNING: The directory '/Users/kaudo/Library/Caches/pip' or its parent directory is not owned or is not writable by the current user. The cache has been disabled. Check the permissions and owner of that directory. If executing pip with sudo, you may want sudo's -H flag.
Collecting selenium
  Downloading selenium-3.141.0-py2.py3-none-any.whl (904 kB)
     |████████████████████████████████| 904 kB 550 kB/s 
Requirement already satisfied: urllib3 in /Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages (from selenium) (1.25.10)
Installing collected packages: selenium
Successfully installed selenium-3.141.0
kaudo@MacBookPro ~ % 

 

다른 블로그를 보고(특히 윈도우예제) pip로 인스톨하시는 분들이 있는데,

맥은 파이썬2버전이 원래 깔려있어서 pip3로 설치해야 합니다.

pip로 설치하면 제대로 작동하지 않을 수 있습니다.

 

 

파이썬2 셀레니엄 삭제

sudo pip uninstall selenium

 

 

파이썬3 셀레니엄 삭제

sudo pip3 uninstall selenium

kaudo@MacBookPro ~ % sudo pip uninstall selenium
WARNING: The directory '/Users/kaudo/Library/Caches/pip' or its parent directory is not owned or is not writable by the current user. The cache has been disabled. Check the permissions and owner of that directory. If executing pip with sudo, you may want sudo's -H flag.
Found existing installation: selenium 3.141.0
Uninstalling selenium-3.141.0:
  Would remove:
    /Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/selenium-3.141.0.dist-info/*
    /Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/selenium/*
Proceed (y/n)? y
  Successfully uninstalled selenium-3.141.0
kaudo@MacBookPro ~ % 

 

 

댓글을 달아 주세요

최근에 올라온 글

최근에 달린 댓글