레이블이 배포인 게시물을 표시합니다. 모든 게시물 표시
레이블이 배포인 게시물을 표시합니다. 모든 게시물 표시

2021-08-16

0816 maven+jenkins빌드하기

 기존 프로젝트를 젠킨스를 이용하여 빌드해보았다.

1.jdk1.8버전을 사용하도록 설계한 프로젝트인데 젠킨스 설정에는 jdk15밖에 없어서 에러남

2. jdk1.8다운로드 후 젠킨스 관리 - global tools에 jdk1.8버전 path잡아준 후 

3. 프로젝트 jdk설정에 1.8로 잡기

4. 현재 에러

INFO] 
[INFO] --- maven-clean-plugin:2.5:clean (default-clean) @ udada ---
[INFO] Deleting C:\Users\dbrtm\.jenkins\workspace\udada-jenkins-v2\target
[INFO] 
[INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ udada ---
[WARNING] Using platform encoding (MS949 actually) to copy filtered resources, i.e. build is platform dependent!
[INFO] Copying 19 resources
[INFO] 
[INFO] --- maven-compiler-plugin:2.5.1:compile (default-compile) @ udada ---
[WARNING] File encoding has not been set, using platform encoding MS949, i.e. build is platform dependent!
[INFO] Compiling 109 source files to C:\Users\dbrtm\.jenkins\workspace\udada-jenkins-v2\target\classes
[INFO] -------------------------------------------------------------
[ERROR] COMPILATION ERROR : 
[INFO] -------------------------------------------------------------
[ERROR] bad path element "C:\Users\dbrtm\.m2\repository\com\oracle\database\security\oraclepki\19.10.0.0\..\oracle.osdt\osdt_cert.jar": no such file or directory

---------------------------------------------------------------------

의존성 라이브러리가 없어서 에러나는듯. 수정해본다!
아이고 드디어 성공했다.
에러1 - 테스트에서 현재상태 DB와 매치되지않는 상태의 메소드있었던것
에러2 - 한글 인코딩 문제. apach-maven-plugin 에 configuration 의 encoding 항목을 수정한다.
에러3 - 테스트 없는데 jacoco보고 테스트 분석하라고 해서 에러남
드디어 빌드완료! 

2021-08-14

0814 maven으로 젠킨스빌드하기

 1. maven 직접다운로드한후 path설정해줘도 되고(시스템변수, 환경변수편집)

2. 젠킨스의 download automatically를 이용해서 maven 직접다운로드 해줘도 됨.

3. jdk설정을 해줘야 하는데, 오라클은 jdk다운로드할때 아이디비번인증을 필요로 하기 때문에 automatically download대신에 미리 pc에 다운로드해둔 자바 경로입력한다. (bin은 빼고넣으면 됨) 

4. maven으로 빌드하기 설정을 했으나 

[INFO] Scanning for projects...
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  0.113 s
[INFO] Finished at: 2021-08-14T17:38:08+09:00
[INFO] ------------------------------------------------------------------------
[ERROR] The goal you specified requires a project to execute but there is no POM in this directory (C:\Users\dbrtm\.jenkins\workspace\mari-jdbc-jenkins). Please verify you invoked Maven from the correct directory. -> [Help 1]
[ERROR] 
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR] 
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MissingProjectException
Build step 'Invoke top-level Maven targets' marked build as failure
An attempt to send an e-mail to empty list of recipients, ignored. 

Finished: FAILURE


에러가발생했따~~~ 

아마 . maven프로젝트가 아니라 gradle 프로젝트라서그런듯?


-------------------------------------------------------------------------

https://miiingo.tistory.com/171<<<이분의 글이 도움이 되었다!!

build를 gradle로 설정 변경하고, 

task에는 간단하게

clean

build만 적고

buildfile에 build.gradle을 입력


성공!!


결국 정리하자면


젠킨스설치 -> 자바path, maven, gradle설정해주기(자동다운로드) -> 해당 프로젝트의 빌드 환경에 맞게 빌드 스크립트 작성하기 -> save ->빌드

2021-08-13

0813 jenkins 설치 및 설정하기

 


1. 현재 jdk가지고 있는 버전이 15인데 젠킨스는 8,11만 (일단은)지원중.

그래서 --enable-future-java 옵션붙임

2. 포트는 뜨는데 자꾸 localhost접속이 안되서

--httpPort=9191옵션붙임

3. java -jar jenkins.war --옵션들

4. 젠킨스관련 설정파일들은 기본적으로 C: 사용자/사용자명/.Jenkins안에저장된다

이 안에 default어드민패스워드도 저장되어있음. (secrets폴더)




패스워드 입력


젠킨스가 추천하는 플러그인들을 다운로드해보자.

2021-07-07

0707 서버를 올린적이 없는데 자동으로 올라간다?

 

로컬 서버를 올린 적이 없는데 포트가 충돌나서 열수없다고 한다?

혹시몰라서 aws EC2 도 중지시키고 ( 여기 문제는 애초에 아니겠지. 내가 서버를 안띄웠는데?? 게다가 로컬접속인데?)

프로퍼티 파일의 server.port도 바꿔서 시도했는데 또 충돌나서 안된다고 함?? 뭐지 이건??

게다가 로그인도 안됨(??) 뭐야 대체 어디서 실행되고 있는거야!!!

내가 서버를 백그라운드로 올린 적이 있었나? 뭔가 이상하다. 살펴보아야 겠음. ;;  


포트번호 8989로 이상하게 바꾸고 다시 인텔리제이가동시켜도- 똑같이 충돌난다구 함. 왜냐~~ 왜냐구~~

2021-06-23

0623 aws 원격서버에서 build , 서버 띄우기

sudo chmod 777 ./gradlew

sudo ./gradlew build

sudo가 짱이야 ^ㅁ^~~




빌드 성공~!!!!
--------------------------------------------------------------------------------------

Error: Unable to access jarfile boot-imageboard-jpa-mybatis-0.0.1-SNAPSHOT

또 에러가 떴다.........
하나를 해결하면...하나가 또안되고...흑흑흑...


서버떴다!!!!
단순히 그냥 내가 .jar라는 확장자를 안붙여서 안뜬거였다.ㅎㅎ
cd build/libs
java -jar ~~~.jar

드디어 떴다 ㅜㅜㅜㅜㅜㅜ!!!으와악~~~~

0623 aws putty로 접속하기

 1. 어제까지 잘되던 접속이 탄력적ip를 할당받고 나니 되지 않았다.

검색해보니- putty를 이용해서 pem 파일을 바꾸어주어야한다고 한다.

2. putty 설치, ppk생성

3. 계속 connection timeout 에러가 뜬다....

4. 인바운드규칙 내ip로 들어갈수있게 다시 설정하고

5. 혹시 방화벽문제인가 싶어서 방화벽도 건드려봄(;;)

6. 그러고나니까 에러메시지가바뀌었다!!!

https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=whapkj303&logNo=221572086785

<<이분 말씀대로 하니까 성공했다!!!

ubuntu@publicIP주소

로 접근해야했던것!!


접속 성공!!

2021-06-21

0621 aws 배포를 위한 준비

1. RDS의 VPN인바운드 규칙 편집: 내Ip에서만 가능하도록

2. application.properties작성 -> url부분을 localhost가 아니라 해당 aws의 엔드포인트로 적어준다. username과 password도 RDS를 만들때 넣었던 username,password로 수정한다

spring.datasource.url=jdbc:mariadb://aws-mariadb.cbu0yucsi29x.ap-northeast-2.rds.amazonaws.com:3306/boot

3. heidiSQL로 새로운 데이터베이스 생성

4.  인텔리제이로 build한 후 해당 데이터베이스에 테이블이 잘 생성되는지 확인 ( jpa를 쓰고 있기때문에 테이블이 없을 시 자동생성된다)

5. 탄력적 ip할당

6. 탄력적 ip를 내 EC2와 연결

7. RD2의 인바운드 규칙 편집: 해당 EC2에서 데이터베이스에 접근할수있게 private ip를 등록해준다.

8. EC2의 보안그룹 편집: 클라이언트에서 접근할수있게끔 포트번호를 열어준다.

9. ssh로 우분투 서버 접속

10. git clone 레포지토리경로 : 원하는 프로젝트 받아오기

11.     ./gradlew clean package 했으나 -> permission에러뜸

12. gradlew build -> 그런 명령어 없다고 에러뜸

13 . gradle -v로 gradle 버전 확인 . 알고보니 gradle이 아직 우분투서버에 설치되어있지 않았다.

14. sudo apt-get install gradle 로 gradle을 설치

--------------------------------------------------------

15 . gradlew build명령어가 계속 안먹고. JAVA_HOME을 다시 설정하라는 메시지만 뜨는거다.왤까!~ 하고 찾아보다가!! sudo명령어를 붙이니 잘 먹는다!

https://wickies.tistory.com/102?category=768093 <<이분의 글이 많은 도움이 되었다!! 감사합니다!^ㅁ^

sudo chmod 777 ./gradlew

sudo ./gradlew build


-----------------------------------------


30분내내... 76%이 화면에서 안넘어간다는건....문제가 있다는 거겠지...? 까야악.


-----------------------------------------------------

30분넘게 빌드가 안된다는 건 뭔가 문제가 있다는 것. 이번엔 로컬에서 빌드해보았다.

Build Faild.아무래도 지금 RDS에 접속하는데 문제가 있는듯함. 더 찾아보자.

-> 어 아니다.....그냥 내 test순서의 문제인가... 더미 데이터를 좀 넣어두어야 겠다. 

0621 RDS mariadb생성

 


RDS생성완료
왼쪽 메뉴바에서 데이터베이스 -> VPC 보안 그룹 -> 인바운드 규칙 편집

우선 배포전의 실험사항이므로 어디서나 접속할 수 있도록 시험해보고. 내 아이피 주소로 편집.
보안/그룹에서 엔드포인트 주소를 복사붙여넣기하여
만든 id/password로 heidiSQL으로 접속해본다

성공적으로 접속완료!

2021-06-20

0621 aws ssh접속 및 mariadb 설치, root 패스워드 설정

 

1. aws서버에 ssh로 원격접속하기


(키 페어가 존재하는 폴더에서 ) ssh -i "docker-example"ubuntu@172.31.6.82

뒤의 ip는 public ip로 써야한다. 난 현재 고정ip가 아니라서 계속 바뀌고 있음. 바부같이 private ip로 계속 치고있어서 접속 안되구있었다.


2. sudo apt update로 업뎃하면 뭔가 좌라락 받아진다.

3 sudo apt-get install -y mariadb-server

마리아 db서버를 ubuntu에 설치.

4. sudo mysql 

마리아 db에 접속

5. show databases;

기본적으로 생성되어있는 데이터베이스들을 보여준다.

6. select version();

마리아db의 버전을 확인할 수 있다.


https://m.blog.naver.com/6116949/221992559683

<<위 게시글을 참고해서,

7. mariadb 패스워드 설정 및 접속하기

먼저 show databases;해서 데이터베이스를 확인하고

use mysql해서 데이터베이스를 선택하고

update user set plugin ='' where user='root';

set password = password('사용할패스워드입력하기');

flush privilegies;

이후 다시 ubuntu@계정으로 돌아와서 

mysql -u root -p로 접속시도

패스워드에 설정한 패스워드를 입력하면 mariadb에 성공적으로 접속할수있다!!


-----------------------

이것저것 찾아보다가 잘 모르겠어서 결국 RDS설치중


0620 스터디

 1. jar 와 war?

war: 톰캣이 어플리케이션 바깥에 있다. 하나의 톰캣으로 여러개의 다른 어플리케이션을 돌릴 수 있다. 즉 별도의 웹서버와 웹 어플리케이션을 필요로 한다. 또한 war 방식의 패키지 구조를 사용한다.(WEB-INF 가 있는 jsp구조)

스프링부트의 경우 내장톰캣이 있어서 '실행가능한 jar(Executable jar)로 동작한다.

2. 어플리케이션마다 필요한 JDK버전, 톰캣버전이 상이한데.. jar로 배포하는 경우 그러면 운영체제 하나에서 돌아가는 모든 어플리케이션의 버전을 통일해주어야 함. -> 격리된 환경에서의 배포가 필요!!( 그래서 도커를 쓴다)

3. 도커를 사용하면- 같은 포트로 어플리케이션을 돌릴수있다!!

왜냐하면 운영체제 관점에서는 도커도 하나의 어플리케이션이기때문에

운영체제 { 12345포트 도커1: {8080 WAS}

               12346포트 도커2: {8080 WAS}

               12347포트 도커3: {8080  WAS} }

이런 식으로 되어있기 때문이다!! 그래서 같은 8080포트로 어플리케이션을 부를 수 있게 된다.

4. jar안에는 JDK가 포함되어있고, path를 유지하므로- 다른 환경일지라도 동일한 실행을 보장할 수 있다.??

5. PATH : java. 어플리케이션을 실행해주는 녀석 . 경로는 한개.

CLASSPATH: 프로그램이 실행될때 필요한 자원의 경로들. 여러개가 될 수 있다. 여기를 순회하면서 요구하는 파일이 있는지 찾아서 실행. (ex) application.properties )

6. 상대경로가 숨어있다

spring.datasource.url=jdbc: sqlite:[프로그램ROOT]sample.db

->절대경로로 바꾸어서 다시 실행해보기

7. 배포를 시도해보기!!!

2021-06-16

0616 build환경의 차이?


인텔리제이안에서 build했을때는 SQLite안에 있는 데이터가 나오는데



콘솔에서 환경변수로 --spring.profiles.active=dev로 배포하면


데이터가 나오지 않는다. 

이건 당연한건가...? 아니면 뭔가 내가 잘못하고 있는건가...?

무얼 모르는지를 몰라서 어디를 공부해야할지 난감한걸.

0616 내 db는 어디로??

 

default properties파일로 불러오면 이렇게 db데이터가 잘 불러와지는데. (그리고 그때마다 자동으로 테스트가 실행되어 100단위로 데이터가 늘어나고 있다 (웃음))

dev properties로 빌드하면 데이터가 0가 나온다. 왜지?? 내 sqldb에 더미 데이터 들어있는데... 그거랑은 별개인건가?? 이 개념이 혼란스럽군.

2021-06-15

0615 타임리프 template 경로 못찾는 문제 해결!!!

  Error resolving template [board/list], template might not exist or might not be accessible by any of the configured Template Resolvers


뭔가 uri에서 꼬인것같은데... 어디가 잘못된거냐구~~
아까 설정한 templates 에서 슬래쉬 뺴니까, list페이지만 나오고 나머지는 또 잘 안나오더라.
더많이 검색해보아야겠음 .ㅜㅜ

------------------------------







template 파싱하는 경로를 기본값으로 두고.
리턴 하는 페이지 앞글자에서 슬래쉬를 제외했더니
에러 메시지가 변경되었다!!!
이건..  템플릿(html)안의 문제다!!!!좋아!! 이제 html안의 url를 고쳐보자~

-----------------------------------------------------------------------------------------------------


마찬가지로 템플릿 페이지 안에서 다른 페이지를 부르는 경로 앞의 슬래쉬를 제거하고 다시 빌드 후 배포하였더니- 이제 잘 찾아진다!!!! 야호!!!!! 신난다!!!

https://myserena.tistory.com/155 <<위 글이 엄청난 도움이 되었다. 감사합니다!!!

0615 SQLite + Spring boot + JPA

 



프로젝트를 빌드하면 해당 프로젝트 파일 내에 db가 생성된다. ( 이걸 모르고 C드라이브의 SQLite에서 헤매고 있었다,,,)


윈도우 콘솔에서 새 데이터베이스 열기로 확인할 수 있다.

0615 하나의 어플리케이션에 여러개의 DB환경설정을 적용하기

 1. 개발환경에서는 SQLlite를 사용하고, 실 배포환경에서는 mariaDB를 사용하기 시도!!!

2. 프로퍼티 파일을 두개 만든다. 규칙은

application-{별명}.properties


그러면 @Profiles라는 어노테이션으로도 해당 프로퍼티를 돌릴수 있다.

해당 dev프로퍼티 파일안에는


3. 프로퍼티 별명을 위와 같이 설정해주고, develop환경에서 쓸 SQLlite의 환경설정을 셋팅했다. 



4. 디폴트 프로퍼티 파일에 아래와 같은 설정을 사용하면 - dev라는 이름의 프로퍼티파일을 이용해서 어플리케이션이 동작하게 된다. 

5. 배포시에는 java -jar mariworld.jar --spring.profiles.active=dev

라는 환경변수를 통해 돌릴수있다.


6. SQLlite설정 에러시

1) 프로퍼티 파일 안에 jpa dialect설정 제대로 되어있는지 확인하기

2) dependency에 dialect관련 2개 제대로 들어와있는지 확인하기 




0615 template 파싱 에러 수정

 template might not exist or might not be accessible by any of the configured Template Resolvers


라는 에러 발생.

기본적으로 스프링 부트는 템플릿엔진의 경로를 spring.thymeleaf.prefix=classpath:/templates/

라고 잡기 때문에, 

<th:block th:replace="~{/fragment/layout::setContent(~{this::content})}">
이런식으로 설정해두면 - 슬래쉬가 두번 들어가서 경로를 못찾았던 것이다. 
즉 이러한 경우 url경로는 templates//fragment/layout~~ 이 된다. 
인텔리제이는 똑똑해서 이러한 에러를 잡아주었지만, 빌드후 배포해보니 여기서 계속 에러가 나서 
페이지를 불러오지 못하는 에러가 있었다.

따라서 스프링이 기본적으로 auto-config해놓은 타임리프 기본경로의 classpath를 위와 같이 수정. 슬래쉬만 뺐다. 



잘 돌아간다!!!

2021-06-14

0614 터미널로 프로젝트 빌드 및 실행하기

 

1. 해당 프로젝트의 gradle.bat 가 존재하는 디렉토리로 이동해서  콘솔창 열기

2. gradlew build






3. cd build/libs 로 이동하기
4. java -jar 프로젝트명.jar
 ( 탭을 누르면 자동완성)


5. 프로젝트가 실행된다.!!


--------------------

템플릿엔진을 못찾는다. url경로를 찾는방식에 뭔가 문제가 있는듯함



2021-06-05

0605 아마존 ec2 ssh로 접속하기

 1. 

공개키가 있는 폴더로 이동 -> ssh -i "키 이름" 계정이름(기본적으로, ubuntu) @ 퍼블릭 IP혹은 DNS 

정확히 입력했는데도 계속 permission denied(public key)오류가 나서 왜일까? 했는데 , cmd창을 관리자 권한으로 실행하지 않아서였다. 속성 - 고급 - 보안 탭에서 '항상 관리자권한으로 실행하기' 로 수정, 

-> 접속 잘 된다!!

2. TODO

- jdk 설치

- 자바 symbolic link 설정 & path설정

- source명령어로 실행반영

- git설치 (이미 설치되어 있음) 

- git clone 주소 : 내가 올린 코드들이 복사된다. 

- 컴파일 & 빌드진행 ( ./mvnw clean package 혹은 ./gradlew )

- jar 파일 실행 (java -D옵션 -jar) : 서버를 올린다, & 옵션을 붙여서 독립적으로 뜨도록하기

- curl localhost:8080으로 접속해보기(로컬) 

- 8080으로 해당 dns 혹은 ip로 접속해보기(원격)


3. 

java -version과

javac -version으로 설치되어있는지 확인하면- 우분투가 똑똑해서.. 알아서 다운로드할 파일을 제시해준다. 다운로드


자바 PATH설정중(vi편집기로 쓰고있었다) 권한 없음 에러

https://keepdev.tistory.com/3

이렇게 해결!!

https://philip1994.tistory.com/71

sudo reboot로 리부팅하고 ssh로 다시 접속->자바 패스가 잘 설치된 것을 확인할 수 있다!!




4. git clone uri

하고 -> pom.xml있는 디렉토리로 이동 -> ./mvnw하는데도 계속 퍼미션 에러

1) root로 접속했는데도(sudo su ) 퍼미션 에러떠서 검색검색

2)https://www.slipp.net/questions/468 <<해당링크로 해결!! ./mvnw 명령어자체의 권한을 재설정하였고 ./mvnw clean package시 잘 작동되었다!

 

빌드 success확인!


5. cd target => jar파일이 생성된 것을 확인 할 수 있다 
java -jar (탭누르면 해당 jar파일 이름 자동완성) 
& 옵션으로 서버를 띄우면!!



우와!!! 이렇게 원격에서 접속할 수 있다!!!!
놀라움.....멋지다....
서버...즐거버....히히


curl명령어를 이용하면, local에서도 확인해볼 수 있다. 

2021-06-01

0601 Gradle 빌드 속도 개선

 1. 어플리케이션 빌드하는데만 38s!!!! 걸려서 뭘 어떻게 업데이트할 수가 없는 상황이었다. 1분이상 걸리기도 했다...

2. 빌드 task를 확인하는데 - resource를 process하는데서 엄청나게 시간을 잡아먹고 있었다. 

3. 알고보니 사용하지 않는 svg같은 이미지들, js파일등이 용량을 차지하고 있었기 때문이었다. 그래서 static폴더안의 사용하지 않는 resources들을 깔끔하게 정리했다. 

4. 다른 사람이 미리 만든 템플릿을 사용하면 내가 css를 손대지 않아도 되므로 좋긴 하지만, 이러한 점들을 커스터마이징해서 - 사용할 것만 남기고 나머지는 없애준다!!


5. 또한 css가 css를 부르는 경우도 있으므로 파일을 열어서 꼼꼼히 확인후 사용할 것들만 남겨준다. 


6. 결과 processResouces속도가 비약적으로 향상된 것을 확인할 수 있다!!! 이제 1~2s안에 빌드를 완료한다. 

0328 fdisk, mkfs, mount, fstab

 1. 하드디스크를 붙인다. 2. fdisk -l로 하드디스크를 확인한다.  - interactiive한 커맨드모드 사용하여 (m) 붙인 하드디스크의 파티셔닝을 한다.  - 마지막에 w를 해야 실제로 반영이 된다.  3. mkfs를 하여 어떤 파일시스...