์ด ๊ธ์ ์ฟ ๋ฒ๋คํฐ์ค ๊ณต๋ถํ ํ์ ์ ๋จ๊ธฐ๊ธฐ ์ํ ๊ธ์ ๋๋ค. ์ฟ ๋ฒ๋คํฐ์ค์์ ํ๋ ์์ฒด์ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ฉด ํ๋๋ฅผ ์๋ ๋ณต๊ตฌํด์ ํ๋๊ฐ ํญ์ ๋์ํ๋๋ก ๋ณด์ฅํ๋ ๊ธฐ๋ฅ์ด ์์ต๋๋ค. deployment๋ก ์์ฑํ ์ค๋ธ์ ํธ์ ๊ทธ๋ฅ ํ๋ ์ค๋ธ์ ํธ 2๊ฐ๊ฐ ์๊ณ , ์ด๋ฅผ ์ญ์ ํ๋ค๊ณ ํ์ ์ kubectl get pods ๋ช ๋ น์ด๋ก์ค๋ธ์ ํธ๋ค์ ํ์ธํด๋ณด๋ฉด deployment ์ค๋ธ์ ํธ๋ง ์ด์์์ต๋๋ค. deployment ์์ ์๋ replicat์ ์ ์ํด์ ํ๋์ ๊ฐฏ์๋ฅผ ์ ์งํ๋ ค๊ณ ํ๊ธฐ ๋๋ฌธ์ deployment๋ก ์์ฑํ ํ๋๋ค์ ์ญ์ ๋๋ ๋ค์ ์์ฑ์ด ๋ฉ๋๋ค. age๋ฅผ ๋ด๋ ๋ค์ ์์ฑ๋๊ฑธ ์ ์ ์์ต๋๋ค. ํ์ง๋ง ๊ทธ๋ฅ ํ๋๋ ์ด๋ฅผ ๊ด๋ฆฌํ๋ ์ปจํธ๋กค๋ฌ๊ฐ ์๊ธฐ ๋๋ฌธ์ ์๋๋ณต๊ตฌ๊ฐ ๋ณด์ฅ๋์ง ์์ต๋๋ค. *์ฐธ๊ณ : ์ปจํธ๋กค๋ฌ๋ ์ฟ ๋ฒ๋คํฐ์ค ํด๋ฌ์คํฐ..
์ด ๊ธ์ ์ฟ ๋ฒ๋คํฐ์ค ๊ณต๋ถํ ํ์ ์ ๋จ๊ธฐ๊ธฐ ์ํ ๊ธ์ ๋๋ค. ๋ฐฐํฌํ ํ๋์ ์ ๊ทผ ํ๊ธฐ ์ํด์๋ $ kubectl exec -it nginx-pod -- /bin/bash ๋ช ๋ น์ด๋ฅผ ์ ๋ ฅํด์ฃผ์ด์ผ ํฉ๋๋ค. ์๋ 2๊ฐ์ ๋ช ๋ น์ด๋ฅผ ์์ ๋ก ๋ค์ด๋ณด๊ฒ ์ต๋๋ค. $ kubectl exec -it nginx-pod ls -l /run $ kubectl exec -it nginx-pod -- ls -l /run ์ฒซ๋ฒ์งธ ๋ช ๋ น์ด๋ -l ์ต์ ์ exec์ ์ต์ ์ผ๋ก ์ธ์ํ๊ธฐ ๋๋ฌธ์ ์๋ฌ๊ฐ ๋ฐ์ํฉ๋๋ค. ๋ฐ๋ผ์ ๋๋ฒ์งธ ๋ช ๋ น์ด๋ฅผ ์ฌ์ฉํ๊ฒ ๋๋ค๋ฉด ์๋ํ๋๋ก /run์ ๊ถํ์ ๋ณผ ์ ์์ต๋๋ค. ์ด์ฒ๋ผ ๊ตณ์ด ํ์ํ์ง ์์๋ exec๋ฅผ ์ฌ์ฉํ ๋ ๋ช ์์ ์ผ๋ก '--'๋ฅผ ์ฌ์ฉํ๋ฉด ์๋ฌ๋ฅผ ์ค์ผ ์ ์์ต๋๋ค.
distro-stable version ์ค์น (apt) ๊ฐ๋จํ๊ฒ apt๋ฅผ ์ด์ฉํด ์ค์นํด๋ณด๊ฒ ์ต๋๋ค. $ sudo apt update $ sudo apt install nodejs $ sudo apt install npm ๊ทธ๋ฐ๋ฐ ๋ฒ์ ์ด ๋๋ฌด ๋ฎ์ต๋๋ค. ์ต์ ๋ฒ์ ์ ๋ฐ๊ธฐ ์ํด PPA(Personal package archive)๋ฅผ ์ฌ์ฉํด๋ณด๊ฒ ์ต๋๋ค. PPA๋ก ์ค์น NodeSource์ ์ํด ๊ด๋ฆฌ๋๋ PPA์์ ์ข ๋ ์ต์ ๋ฒ์ ์ ๋ฐ์๋ณด๊ฒ ์ต๋๋ค. ๊ฒ์๋ฌผ ์์ฑ ์ผ์ ๊ธฐ์ค LTS ๋ฒ์ ์ 12.18.3, Latest ๋ฒ์ ์ 14.7.0์ธ๋ฐ Latest์ธ 14๋ฒ์ ์ผ๋ก ์ค์นํด๋ณด๊ฒ ์ต๋๋ค. $ curl -sL https://deb.nodesource.com/setup_14.x -o nodesource_14_setup.sh ์ค..
์ด ๊ธ์ ์ฟ ๋ฒ๋คํฐ์ค ๊ณต๋ถํ ํ์ ์ ๋จ๊ธฐ๊ธฐ ์ํ ๊ธ์ ๋๋ค. ๊ธฐ๋ณธ ์ค๋ธ์ ํธ๋ก ์ฟ ๋ฒ๋คํฐ์ค ํด๋ฌ์คํฐ๋ฅผ ๊ตฌ์ฑํ ์ ์์ง๋ง ํ๊ณ๊ฐ ์์ต๋๋ค. ์ด๋ฌํ ํ๊ณ๋ฅผ ๊ทน๋ณตํ๊ณ ์ ๊ธฐ๋ณธ ์ค๋ธ์ ํธ ์ธ ๋ค์ํ ์ค๋ธ์ ํธ๋ค์ด ์กด์ฌํ๋๋ฐ ์ด๋ฒ์ ๋ํ๋ก์ด๋จผํธ ์ค๋ธ์ ํธ์ ๋ํด ์์๋ณด๊ฒ ์ต๋๋ค. ๋ํ๋ก์ด๋จผํธ ๋ํ๋ก์ด๋จผํธ๋ ํ๋ง๋๋ก ํ๋ + ๋ ํ๋ฆฌ์นด์ ์ ๋๋ค. * ์ฐธ๊ณ : ๋ ํ๋ฆฌ์นด์ ์ ํ๋์ ์๋ฅผ ๋ณด์ฅํด์ฃผ๋ ์ค๋ธ์ ํธ์ ๋๋ค. ์ฟ ๋ฒ๋คํฐ์ค ํด๋ฌ์คํฐ์์์ API ์๋ฒ์ ์ปจํธ๋กค๋ฌ ๋งค๋์ ๋ ๋จ์ํ ํ๋์ ๊ฐ์๊ฐ ์๋ ๋ํ๋ก์ด๋จผํธ์ฒ๋ผ ๋ค์ํ ์ค๋ธ์ ํธ๋ฅผ ๊ฐ์ํฉ๋๋ค. ๋ํ๋ก์ด๋จผํธ๋ฅผ ์์ฑํ ๋ ์ฌ์ฉํ๋ ๋ช ๋ น์ด๋ก๋ ๊ธฐ๋ณธ์ ์ผ๋ก create, apply ์ ์ฌ์ฉํฉ๋๋ค. ๋ํ๋ก์ด๋จผํธ๋ก ์์ฑํ ํ๋๋ฅผ ๋๋ฆฌ๊ณ ์ถ์ผ๋ฉด scale ๋ช ๋ น์ด๋ฅผ ๋ค์ ์ณ์ผํ์ง๋ง yaml์ ์ฌ์ฉํ์ฌ ๋ํ..
์ด ๊ธ์ ์ฟ ๋ฒ๋คํฐ์ค ๊ณต๋ถํ ํ์ ์ ๋จ๊ธฐ๊ธฐ ์ํ ๊ธ์ ๋๋ค. ์ค๋ธ์ ํธ๋? ํ๋์ ๋ํ๋ก์ด๋จผํธ๋ ์คํ๊ณผ ์ํ๊ฐ์ ๊ฐ์ง๋ ๋ฐ ์ด๋ฌํ ํ๋์ ๋ํ๋ก์ด๋จผํธ๋ฅผ ๊ฐ๋ณ ์์ฑ์ ํฌํจํด ๋ถ๋ฅด๋ ๋จ์๊ฐ ์ค๋ธ์ ํธ์ ๋๋ค. * ์ฐธ๊ณ : ํ๋๋ ์ค๋ธ์ ํธ์ด๋ค. ๊ธฐ๋ณธ ์ค๋ธ์ ํธ ๊ธฐ๋ณธ ์ค๋ธ์ ํธ์ ์ข ๋ฅ๋ก๋ ํ๋, ๋ค์์คํ์ด์ค, ๋ณผ๋ฅจ, ์๋น์ค์ ๋๋ค. ํ๋ ์ฟ ๋ฒ๋คํฐ์ค์์ ์คํ๋๋ ์ต์๋จ์์ ๋๋ค. ๋ ๋ฆฝ์ ์ธ ๊ณต๊ฐ๊ณผ IP๋ฅผ ๊ฐ์ง๋ฉฐ, ํ๋ ์ด์์ ์ปจํ ์ด๋๋ฅผ ๊ฐ์ง์ง๋ง ๋ณดํต 1 ํ๋ 1 ์ปจํ ์ด๋ ๊ตฌ์กฐ์ ๋๋ค. ๋ค์์คํ์ด์ค ์ฟ ๋ฒ๋คํฐ์ค ํด๋ฌ์คํฐ์์ ์ฌ์ฉ๋๋ ๋ฆฌ์์ค๋ค์ ๊ตฌ๋ถํด ๊ด๋ฆฌํ๋ ๊ทธ๋ฃน์ ๋๋ค. ๋ณผ๋ฅจ ๊ธฐ๋ณธ์ ์ผ๋ก ํ๋๋ ์ด๋์ ์์๋๋ ๊ฐ๋ ์ด ์๋์ง๋ง ํ๋๊ฐ ์ฌ๋ผ์ง๋๋ผ๋ ๋ณด์กด ๊ฐ๋ฅํ๊ฒ ํด์ฃผ๋ ์ค๋ธ์ ํธ์ ๋๋ค. * ์ฐธ๊ณ : ํ๋๋ ์ธ์ ๋ ์ฃฝ์์ ์๋ ์ค๋ธ์ ํธ์ ๋๋ค...
์ด ๊ธ์ ์ฟ ๋ฒ๋คํฐ์ค ๊ณต๋ถํ ํ์ ์ ๋จ๊ธฐ๊ธฐ ์ํ ๊ธ์ ๋๋ค. ์ค๋ธ์ ํธ๋ฅผ ์์ฑํ ๋ ๋ช ๋ น์ด๋ง์ผ๋ก ํ๊ณ๊ฐ ์์ด yaml์ ์คํ์ ์์ฑ ํ ์์ฑํฉ๋๋ค. ์์ฑํ yaml ํ์ผ ๊ธฐ์ค์ผ๋ก run, create, apply๋ก ์ค๋ธ์ ํธ๋ฅผ ์์ฑํ๋๋ฐ create, apply์ ์ฃผ๋ก ์ฌ์ฉํฉ๋๋ค. run๊ณผ create ๋น๊ต run์ ํ๋ 1๊ฐ๋ง ์์ฑํ๊ณ ๊ด๋ฆฌํด์ค๋๋ค. create๋ ๊ทธ๋ฃน ๋ด ํ๋ 1๊ฐ๋ฅผ ์์ฑํ๊ณ ๊ด๋ฆฌํด์ค๋๋ค. run์ผ๋ก ์์ฑํ ํ๋๋ ์ด์ฝํ์ด1๊ฐ์ด๊ณ , create๋ก ์์ฑํ ํ๋๋ ์ด์ฝํ์ด ๋ฐ์ค ์์ ์๋ ์ด์ฝํ์ด1๊ฐ์ ๋๋ค. create๊ณผ apply ๋น๊ต ์ค๋ธ์ ํธ๊ฐ ๋ํ๋ก์ด๋จผํธ ์ผ ๊ฒฝ์ฐ replicas ๋ฅผ ์ง์ ํด์ฃผ์ด์ ํ๋์ ๊ฐฏ์๋ฅผ ๋ณด์ฅ๋ฐ์ ์ ์์ต๋๋ค. ๋ง์ฝ create๋ฅผ ์ด์ฉํ์ฌ ๋ํ๋ก์ด๋จผํธ ์์ฑํ์ ๊ฒฝ์ฐ y..
์ฟ ํค(Cookie) ์ ์ฅํ๊ธฐ var setCookie = function(name, value, exp) { var date = new Date(); date.setTime(date.getTime() + exp*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + date.toUTCString() + ';path=/'; }; // setCookie(๋ณ์์ด๋ฆ, ๋ณ์๊ฐ, ๊ธฐ๊ฐ); setCookie("expend", "true", 1); ์ฟ ํค(Cookie) ๊ฐ์ ธ์ค๊ธฐ var getCookie = function(name) { var value = document.cookie.match('(^|;) ?' + name + '=([^;]*)(;|$..
์ ๊ฐ์ ๊ฒฝ์ฐ Elasitc Search๋ฅผ ์ฌ์ฉํ ๋ ์ง์ API ๋ฌธ์ ๋ณด๊ณ ์๋ฐ ์ฝ๋๋ก ์์ฑํฉ๋๋ค. API ๋ฌธ์๊ฐ ์์ด์ด๊ธด ํ์ง๋ง ์๋นํ ์์ธํ ๋์์์ต๋๋ค. ์๋ ๋งํฌ๋ Elasitc Search ๊ณต์ API ๋ฐ ์ฌ์ฉ๋ฒ ๋ฌธ์์ ๋๋ค. Java High Level REST Client | Java REST Client [master] | Elastic The Java High Level REST Client works on top of the Java Low Level REST client. Its main goal is to expose API specific methods, that accept request objects as an argument and return response objects,..
์ ๊ฐ์ ๊ฒฝ์ฐ Elasitc Search๋ฅผ ์ฌ์ฉํ ๋ ์ง์ API ๋ฌธ์ ๋ณด๊ณ ์๋ฐ ์ฝ๋๋ก ์์ฑํฉ๋๋ค. ์๋ ๋งํฌ๋ Elasitc Search ๊ณต์ API Basic Authentication ์ ๋๋ค. Basic authentication | Java REST Client [7.14] | Elastic Configuring basic authentication can be done by providing an HttpClientConfigCallback while building the RestClient through its builder. The interface has one method that receives an instance of org.apache.http.impl.nio.client.Ht..
์๋ฒ์ ElasticSearch๋ฅผ ๊ตฌ์ถํ์ผ๋ฉด ๋ด๋ถ ๋ง๊ณ ์ธ๋ถ์์ ์ ๊ทผ์ด ๊ฐ๋ฅํด์ผํฉ๋๋ค. ๋ฐ๋ผ์ ์ด๋ฒ ๊ธ์์๋ ์ธ๋ถ ์ ๊ทผ์ ๋ํด ์์๋ด ๋๋ค. ์๋ฒ๋ CentOS7์ด๊ณ , ElasticSearch์ 7.13.4๋ฒ์ ์ ๋๋ค. ๋น์ฐํ ElasticSearch๋ ์ ์ ์ค์น๋์ด์์ด์ผ ํฉ๋๋ค. [ElasticSearch] ์๋ฒ ๋ด ElasticSearch ์ค์นํ๊ธฐ ์๋ฒ๋ CentOS7 ๊ธฐ์ค์ ๋๋ค. Elastic Search๋ JVM์์ ๋์๊ฐ๊ธฐ ๋๋ฌธ์ 1.8 ์ด์์ JDK๊ฐ ์ค์น๋์ด์ผ ํฉ๋๋ค. JDK๊ฐ ์ ์์ ์ผ๋ก ์ค์น๋์๋ค ๊ฐ์ ํ๊ฒ ์งํํ๊ฒ ์ต๋๋ค. [STEP1] Elastic Search repo ํ์ผ ์์ฑ $.. kingofbackend.tistory.com [STEP1] ์๋ ๋ช ๋ น์ด๋ฅผ ์ ๋ ฅํด์ค๋๋ค. $ vi /hom..
ElasticSearch๋ url์ ์ด์ฉํด์ ์ฝ๊ฒ ๋ฐ์ดํฐ ์ ์ก์ด ๊ฐ๋ฅํ๊ธฐ ๋๋ฌธ์ ElasticSearch๋ฅผ ์ด์ฉํ์ฌ ์๋น์ค๋ฅผ ํ ๋ ๋ฐ๋์ ๋ณด์์ค์ ์ ํด์ฃผ์ด์ผ ํฉ๋๋ค. ๋ง์ฝ ํด์ฃผ์ง ์๋๋ค๋ฉด ์์์ ์ฌ์ฉ์๊ฐ ๋ง์๋๋ก CRUD ์์ ์ด ๊ฐ๋ฅํฉ๋๋ค. ๋ฐ๋ผ์ ์ด๋ฒ ๊ธ์์๋ ElasticSearch์ Kibana์ ๋ณด์์ ์ ์ฉํ๋ ค๊ณ ํฉ๋๋ค. *์ฐธ๊ณ : ๋ณด์ ์ ์ฉ ๋ฒ์ ์๋ ๊ณต์ ํํ์ด์ง์ ์์ธํ ๋์์์ต๋๋ค. Set up minimal security for Elasticsearch | Elasticsearch Guide [7.12] | Elastic The ES_PATH_CONF variable is the path for the Elasticsearch configuration files. If you inst..
[STEP1] open-jdk 1.8 ์ค์น # yum install java-1.8.0-openjdk # yum install java-1.8.0-openjdk-devel ์ค์น๊ฐ ์๋ฃ๋๋ฉด /usr/bin/๊ฒฝ๋ก์ java๊ฐ ์์ฑ๋ฉ๋๋ค. * ์ฐธ๊ณ : ๋ฆฌ๋ ์ค์์๋ JDK์ JRE๋ ๋ณ๋์ ํจํค์ง์ ๋๋ค. java-๋ฒ์ -openjdk ํจํค์ง๊ฐ JRE, java-๋ฒ์ -openjdk-devel ํจํค์ง๊ฐ JDK๋ผ๊ณ ์๊ฐํ๋ฉด ๋ฉ๋๋ค. JDK๊ฐ JRE์ ์์กด์ฑ์ด ์์ต๋๋ค. yum์ผ๋ก JDK๋ฅผ ์ค์นํ๋ผ๊ณ ํ๋ฉด JRE๋ฅผ ๋จผ์ ์ค์นํฉ๋๋ค. [STEP2] ํ๊ฒฝ๋ณ์ ๋ฑ๋ก /usr/bin/java ๊ฒฝ๋ก์ ์ฌ๋ณผ๋ฆญ๋งํฌ๊ฐ ๊ฑธ๋ ค์๊ธฐ ๋๋ฌธ์ ์ค์ ๊ฒฝ๋ก๋ฅผ ์ฐพ์์ ํ๊ฒฝ๋ณ์์ ๋ฑ๋กํด์ฃผ์ด์ผ ํฉ๋๋ค. # readlink -f /usr/bin/java..
Kubernetes์์ ์๋น์ค ์ฐ๊ฒฐ์ ์ํด ์ฌ์ฉํ๋ port ์ ํ์ ์ ๋ฆฌ Port ์ ํ ์ ๋ฆฌ NodePort ์ธ๋ถ์์ ์ ์ํ๊ธฐ ์ํด ์ฌ์ฉํ๋ ํฌํธ port Cluster ๋ด๋ถ์์ ์ฌ์ฉํ Service ๊ฐ์ฒด์ ํฌํธ targetPort Service๊ฐ์ฒด๋ก ์ ๋ฌ๋ ์์ฒญ์ Pod(deployment)๋ก ์ ๋ฌํ ๋ ์ฌ์ฉํ๋ ํฌํธ โ ์ ์ฒด ์๋น์ค ํ๋ฆ์ผ๋ก ๋ณด๋ฉด NodePort --> Port --> targetPort โ ์์ - ์๋ Service ๋ฆฌ์์ค์์ ์ ์ํ port์ ํ๋ฆ์ ๊ทธ๋ฆผ๊ณผ ๊ฐ์ด ํํ ๊ฐ๋ฅํจ. apiVersion: v1 kind: Service metadata: name: helloworld-service spec: ports: - nodePort: 31001 port: 8080 targetPort..
์์ธ java.lang.OutofMemoryError: unable to create new native thread ๋ฆฌ๋ ์ค์์ ElasticSearch๋ฅผ ์ค์นํ๊ณ ์คํํ๋ ค๋๋ฐ ์์ ๊ฐ์ ์๋ฌ๊ฐ ๋ฐ์ํ์์ต๋๋ค. ๋ฆฌ๋ ์ค์์๋ OS์์์ ์ฐ๋ ๋ ์ ํ ์ค์ ์ด ๊ฑธ๋ ค์์ต๋๋ค. unlimit -a ๋ช ๋ น์ด๋ก soft์ process๋ฅผ ๋ณผ ์ ์์ต๋๋ค. [root@femarketWEB default]# ulimit -a core file size (blocks, -c) 0 data seg size (kbytes, -d) unlimited scheduling priority (-e) 0 file size (blocks, -f) unlimited pending signals (-i) 15026 max locked memo..
์๋ฒ๋ CentOS7๋ฒ์ ์ด๊ณ , ํฐ์บฃ 8๋ฒ์ ์ ๋๋ค. ์ ํจ์ค์ ์ฌ๋ผ๊ฐ ์๋ ํ๋ก์ ํธ์ server.xml ์ค ์ ๋ณด๋ ์๋ ์ฝ๋์ ๊ฐ์ต๋๋ค. ์ ํจ์ค์์ ๋น๋ ๊ตฌ์ฑ์ ์์ํ๋ฉด, ์๋์ผ๋ก ์ ํจ์ค๊ฐ ํ๋ก์ ํธ.war ํ์ผ์ ์์ฑํด์ค๋๋ค. ๊ทธ๋ฆฌ๊ณ ์๋๋ฐฐํฌ ์ค์ ๊น์ง ์งํํ๋ฉด ์์ ์ ๋ณด๋ฅผ ๋ฐํ์ผ๋ก ํด๋น ๋๋ ํฐ๋ฆฌ์ war ํ์ผ์ ๋ง๋ค์ด์ค๋๋ค. ๊ทธ๋ฆฌ๊ณ unpackWARs ํ๋กํผํฐ๋ก ์ธํด war ํ์ผ์ ์์ถ์ด ํด์ ๋ฉ๋๋ค. /var/lib/jenkins/workspace ์์น์ job ์ด๋ฆ ๊ธฐ์ค์ผ๋ก ๋๋ ํฐ๋ฆฌ๋ค์ด ์์ฑ๋๊ณ , ๋๋ ํฐ๋ฆฌ ์์ warํ์ผ์ด ๋ง๋ค์ด์ง๋๋ค. ์ด ๋๋ ํฐ๋ฆฌ ์์ ๋ง๋ค์ด์ง war๊ฐ ์ด๋ป๊ฒ ์ ์ค์ ํ ๋๋ ํฐ๋ฆฌ๋ก ์ด๋๋๋ ์ง๋ ์ ๋ชจ๋ฅด๊ฒ ์ต๋๋ค .. ์๋ง Deploy war/ear to a container ๋ผ๋ ์ ํจ..
Elasticsearch 5.0 ์ดํ์์๋ root์์ elasticsearch๋ฅผ ์คํํ ์ ์๊ฒ ํ๊ธฐ ๋๋ฌธ์ sudo ๋ช ๋ น์ด๋ฅผ ์ฌ์ฉํ๋ค๊ณ Elasticsearch๋ฅผ ์คํ ํ ์ ์์ต๋๋ค. ๊ณ์ ์ ์๋ก ์์ฑ ํ ํ ๊ถํ์ ๋ถ์ฌํ์ฌ ๊ทธ ๊ณ์ ์ผ๋ก ์คํํ๋ฉด ํด๊ฒฐ๋ฉ๋๋ค. es ๊ณ์ ์ ์ถ๊ฐํด์ค๋๋ค. $ useradd es ํด๋น ๋๋ ํฐ๋ฆฌ๋ฅผ ์์ ์๋ฅผ es๋ก ๋ณ๊ฒฝํฉ๋๋ค. $ chown -R es:es /usr/share/elasticsearch ๊ณ์ ์ es๋ก ๋ฐ๊ฟ๋๋ค. $ su es es ๊ณ์ ์ผ๋ก Elastic Search๋ฅผ ์คํํฉ๋๋ค. $ /usr/share/elasticsearch/bin/elasticsearch *์ฐธ๊ณ : /usr/share/elasticsearch ๋๋ ํฐ๋ฆฌ ๋ง๊ณ ๋ ์ถ๊ฐ์ ์ผ๋ก elasticsear..
์๋ฒ๋ CentOS7 ๊ธฐ์ค์ ๋๋ค. Elastic Search๋ JVM์์ ๋์๊ฐ๊ธฐ ๋๋ฌธ์ 1.8 ์ด์์ JDK๊ฐ ์ค์น๋์ด์ผ ํฉ๋๋ค. JDK๊ฐ ์ ์์ ์ผ๋ก ์ค์น๋์๋ค ๊ฐ์ ํ๊ฒ ์งํํ๊ฒ ์ต๋๋ค. [STEP1] Elastic Search repo ํ์ผ ์์ฑ $ vi /etc/yum.repos.d/elasticsearch.repo repo ํ์ผ์ ์์ฑ ํ elasticsearch.repo์ ์๋์ ๊ฐ์ ๋ด์ฉ์ ์ ์ต๋๋ค. * ์ฐธ๊ณ : yum์ด ์๋ tar.gz ๋ก ๋ค์ด๋ฐ๊ณ ์ถ์ผ์ ๋ถ๋ค์ ์๋ ๋งํฌ๋ฅผ ํ์ธํ์๊ธฐ ๋ฐ๋๋๋ค. Install Elasticsearch from archive on Linux or MacOS | Elasticsearch Guide [7.14] | Elastic Typically, any clus..
๊ฐ๋จํ Maven Job์ ์ค์ ํ๋ ๋ฐฉ๋ฒ๊ณผ ๊ทธ ์ค์ ์ ๋ํด ์์๋ณด๊ฒ ์ต๋๋ค. ํ๋ฌ๊ทธ์ธ ํ๋ฌ๊ทธ์ธ์ ๊ธฐ๋ณธ ์ค์ ์ผ๋ก ์ค์น๋๋ ํ๋ฌ๊ทธ์ธ ์ธ ๋ค์ 2๊ฐ์ง๋ฅผ ์ค์นํ์์ต๋๋ค. Maven Integration plugin์ Maven Project Job์ ์์ฑ ๊ฐ๋ฅ์ผ ํด์ฃผ๊ณ , Deploy to container Plugin์ ๋น๋ ํ ํฐ์บฃ ์๋ฒ์ ์๋๋ฐฐํฌํ๊ฒ ํด์ค๋๋ค. ๊ทธ๋ฆฌ๊ณ Subversion Plug-in์ SVN์ ์ฌ์ฉํ๊ฒ ํด์ค๋๋ค. ์์ฑํ Job ์ข ๋ฅ Maven project๋ก Job์ ์์ฑํ์์ต๋๋ค. Job ์ค์ General job์ ๊ธฐ๋ณธ์ ์ธ ์ค์ ์ ์ ์ํฉ๋๋ค. ํฌ๊ฒ ๋์ฌ๊ฒจ๋ณผ๋งํ ์ต์ ์ ์์ต๋๋ค. ํ๋จ์ ๋ณด์๋ฉด JDK ๋ผ๋๊ฒ ์๋๋ฐ ์๋ณด์ด์๋ ๋ถ๋ ์์ ๊ฒ๋๋ค. Global Tool Configuration..
vi /etc/sysconfig/jenkins ๋ก vi ์๋ํฐ๋ฅผ ์ฐ ํ ๋นจ๊ฐ์ ๋ถ๋ถ์ ์๋์ ๊ฐ์ด ์์ ํด์ค๋๋ค. JENKINS_JAVA_OPTIONS="-Dorg.apache.commons.jelly.tags.fmt.timeZone=Asia/Seoul"
์ ํจ์ค๋ ์ํํธ์จ์ด ๊ฐ๋ฐ ์ ์ง์์ ์ผ๋ก ํตํฉ ์๋น์ค๋ฅผ ์ ๊ณตํ๋ ํด์ ๋๋ค. CI(Continuous Integration) ํด ์ด๋ผ๊ณ ํํํฉ๋๋ค. ์ ํจ์ค์ ๋ํด ์์๋ณด๊ธฐ ์ ์ ์ฐ์ CI/CD์ ๋ํด ๋จผ์ ์์๋ณด๊ฒ ์ต๋๋ค. CI/CD๋? CI๋ Continuous Integration ์ฆ, ์ง์์ ์ธ ํตํฉ์ด๋ผ๋ ์๋ฏธ์ ๋๋ค. ์ง์์ ์ธ ํตํฉ์ด๋, ์ดํ๋ฆฌ์ผ์ด์ ์ ์๋ก์ด ์ฝ๋ ๋ณ๊ฒฝ ์ฌํญ์ด ์ ๊ธฐ์ ์ผ๋ก ๋น๋ ๋ฐ ํ ์คํธ ๋์ด ๊ณต์ ๋ ํฌ์งํ ๋ฆฌ์ ํตํฉํ๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค. (๊ฐ๋ฅํ๋ค๋ฉด ํ๋ฃจ์ ์ฌ๋ฌ๋ฒ๊น์ง) ์ด๋ฌํ CI์ ํต์ฌ ๋ชฉํ๋ ๋ฒ๊ทธ๋ฅผ ์ ์ํ๊ฒ ์ฐพ์ ํด๊ฒฐํ๊ณ , ์ํํธ์จ์ด์ ํ์ง์ ๊ฐ์ ํ๊ณ , ์๋ก์ด ์ ๋ฐ์ดํธ์ ๊ฒ์ฆ ๋ฐ ๋ฆด๋ฆฌ์ฆ์ ์๊ฐ์ ๋จ์ถ์ํค๋ ๊ฒ์ ์์ต๋๋ค. CD๋? ํด์ํ์๋ฉด, ์ง์์ ์ธ ์๋น์ค ์ ๊ณต ํน์ ์ง์์ ์ธ ๋ฐฐํฌ ๋ผ๋..
/var/lib/jenkins/workspace/ ๋ก ์ด๋ ํ ๋ถ์ง ์๊ฒ ํ๋ ค๋ ํ๋ก์ ํธ๋ก ์ด๋ํฉ๋๋ค. ํฐ์บฃ์ด ์๋ ์ ํจ์ค ๋ด workplace์ ๋๋ค. ํ๋ก์ ํธ์ pom.xml์ ์๋์ ๊ฐ์ด ์ถ๊ฐํด์ค๋๋ค. ..... ${project.name} .... ๊ทธ ํ ๋ค์ ๋น๋ํ๊ฒ ๋๋ฉด ๋ค์ 1.0.0-BUILD-SNAPSHOT์ด ๋ถ์ง ์์ต๋๋ค.
ํ ์คํธ ์๋ฒ ๋ด ์ ํจ์ค ์ค์นํ๋ ๋ฐฉ๋ฒ์ ๋๋ค. ์๋ฒ๋ CentOS7 ๊ธฐ์ค์ ๋๋ค. [STEP1] ์ ํจ์ค๊ฐ ์ค์น๋์ด์๋ ํ์ธํ๊ธฐ $ yum list installed | grep jenkins [STEP2] ์ ํจ์ค ์ค์นํ๊ธฐ [STEP2-1] url์ ํด๋นํ๋ ํ์ผ์ /etc/yum.repos.d/jenkins.repo ๊ฒฝ๋ก์ ๋ค์ด $ wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo [STEP2-2] key import $ rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key [STEP2-3] ์ ํจ์ค ์ค์น $ yum install jenkin..
๋ก์ปฌ์ด ์๋ ํ ์คํธ ์๋ฒ๋ด tomcat8 ์ค์นํ๋ ๋ฐฉ๋ฒ์ ๋ํด ์์๋ณด๊ฒ ์ต๋๋ค. ์๋ฒ๋ CentOS ๊ธฐ์ค์ ๋๋ค. ์์ฃผ ๊ธฐ์ด์ ์ธ ๋ฆฌ๋ ์ค ๋ช ๋ น์ด๋ ์๋ค๊ณ ๊ฐ์ ํ์ฌ ์งํํฉ๋๋ค. [STEP1] Apach Tomcat ์ฌ์ดํธ ์ ์ Apach Tomcat ์ ๋ค์ด๊ฐ๋๋ค. ์ ๋ 8๋ฒ์ ์ ์ฌ์ฉํ ๊ฒ์ด๊ธฐ์ Tomcat8์ ๋๋ฌ์ค๋๋ค. ์ค๋ฅธ์ชฝ ๋ฒํผ์ ๋๋ฌ "๋งํฌ ์ฃผ์ ๋ณต์ฌ"๋ฅผ ๋๋ฌ์ค๋๋ค. [STEP2] wget ์ค์นํ๊ธฐ ์๋ฒ์ ์ ์ ํ ์๋ ๋ช ๋ น์ด๋ฅผ ์ ๋ ฅํด์ค๋๋ค. yum install -y wget * ์ฐธ๊ณ : yum์ ๋ ๋ํ ๊ณ์ด์์ ์ฌ์ฉํ๋ ํจํค์ง ๋งค๋์ , wget๋ ์น ์๋ฒ๋ก๋ถํฐ ์ปจํ ์ธ ๋ฅผ ๊ฐ์ ธ์ค๋ ํ๋ก๊ทธ๋จ [STEP3] ์๋ง์ ์์น์ ํฐ์บฃ ์ค์น ๋ฐ ์์ถ ํ๊ธฐ ์ ๋ /var/lib/tomcat-feadmin ์์น์ ํฐ์บฃ..
์ด ๊ธ์ Song Seunggeun ๋์ ๊ธ์ ๋ณด๊ณ ์์ฑํ ๊ธ์ด๋ฉฐ, ํ๋ฝ์ ๋ฐ์์ต๋๋ค. ๋ ผ๋์ ์ฌ์ง๊ฐ ์์ ์ ์์ง๋ง, ์๋ฐ์คํฌ๋ฆฝํธ๋ 2021๋ ํ์ฌ ์ํํธ์จ์ด ์ ๊ณ์์ ๊ฐ์ฅ ์ ๋ช ํ ์ธ์ด๋ผ๊ณ ํ ์ ์์ต๋๋ค. 2020๋ Github์ ๋ถ์์ ๋ฐ๋ฅด๋ฉด ์๋ฐ์คํฌ๋ฆฝํธ๋ 2014๋ ์ด๋๋ก ํญ์ ์ํฅ๋ ฅ ์๋ ์ธ์ด์๊ณ , ์๋ฐ์คํฌ๋ฆฝํธ์ ์น์ฒ์ด๋ผ๊ณ ํ ์ ์๋ ํ์ ์คํฌ๋ฆฝํธ ๋ํ ๊ทธ ์์๊ฐ 4์์ ๋ฌํฉ๋๋ค. ์๋ฐ์คํฌ๋ฆฝํธ๋ ์ด๋ป๊ฒ ์ด๋ ๊ฒ ์ ๋ช ํด์ง ์ ์์์๊น์? ํ์ด์ฌ, ์๋ฐ, C ๋ฑ์ ์ ํต์ ๊ฐ์๋ค, ๊ทธ๋ฆฌ๊ณ Golang, Rust, Swift, Dart ๋ฑ์ ์ ํฅ ๊ฐ์๋ค๊ณผ์ ๊ฒฝ์์์ ์๋ฐ์คํฌ๋ฆฝํธ๋ ์ด๋ป๊ฒ ์ฐ์๋ฅผ ์ ํ ์ ์์์๊น์? ์ด๋ฒ ๊ธ์์๋ ํด๋ ์ดํผ ํฌ๋ฆฌ์คํ ์จ ๊ต์์ ํ๊ดด์ ํ์ ์ด๋ก ์ ์ด์ฉํด์ ์๋ฐ์คํฌ๋ฆฝํธ๊ฐ ์ฑ์ฅํ ..
๋ก์ปฌ ์๋ฒ๊ฐ ์๋ ํ ์คํธ ์๋ฒ์์ ์ ํจ์ค๋ฅผ ์ด์ฉํ์ฌ CI/CD๋ฅผ ํด๋ณด๊ฒ ์ต๋๋ค. ์๋ฒ๋ CentOS7 ๊ธฐ์ค์ ๋๋ค. ๋ค์๊ณผ ๊ฐ์ ์์๋ก ์งํํฉ๋๋ค. KTCloud๋ฅผ ์ด์ฉํ์ฌ ์๋ฒ ๊ตฌ์ถ(์๋ต) ํ ์คํธ ์๋ฒ ๋ด ํฐ์บฃ(port80), JDK(1.8.x) ์ค์น ํ ์คํธ ์ ํจ์ค ์๋ฒ ๊ตฌ์ถ ํ ์คํธ ์๋ฒ ๋ด ์ ํจ์ค๋ฅผ ํตํด ๋น๋์ ๊ณผ ์๋๋ฐฐํฌ ์งํ [Jenkins] CI/CD์ ์ฐ๋ฆฌ์ ์น์ ํ ๋น์ Jenkins ์ ํจ์ค๋ ์ํํธ์จ์ด ๊ฐ๋ฐ ์ ์ง์์ ์ผ๋ก ํตํฉ ์๋น์ค๋ฅผ ์ ๊ณตํ๋ ํด์ ๋๋ค. CI(Continuous Integration) ํด ์ด๋ผ๊ณ ํํํฉ๋๋ค. ์ ํจ์ค์ ๋ํด ์์๋ณด๊ธฐ ์ ์ ์ฐ์ CI/CD์ ๋ํด ๋จผ์ ์์๋ณด๊ฒ ์ต๋๋ค. CI kingofbackend.tistory.com [STEP1] ํ ์คํธ ์๋ฒ ๋ด ํฐ์บฃ(port80)..
OS ์ข ๋ฅ OS ๋ ํฌ๊ฒ Windows, Linux, Unix, MacOS 4๊ฐ์ง๋ก ๋ถ๋ฅ๋ฉ๋๋ค. Linux ์ข ๋ฅ Linux ๋ ํฌ๊ฒ ๋ ๋ํ, ๋ฐ๋น์, ์ฐ๋ถํฌ 3๊ฐ์ง๋ก ๋ถ๋ฅ๋๋ฉฐ, ๊ณ์ด์ ๋ฐ๋ฅธ ํจํค์ง ๊ด๋ฆฌ ๋ช ๋ น์ด๊ฐ ๋ค๋ฆ ๋๋ค ๋ ๋ํ ๊ณ์ด์ yum ์ ์ฌ์ฉํ๊ณ ๋ ๋ํ ์ํฐํ๋ผ์ด์ฆ ํ๋๋ผ CentOS ๋ฐ๋น์, ์ฐ๋ถํฌ ๊ณ์ด์ apt-get ์ ์ฌ์ฉํฉ๋๋ค.
wget vs curl wget ๊ณผ curl ์ ๋ ๋ค ์น ์๋ฒ๋ก๋ถํฐ ์ปจํ ์ธ ๋ฅผ ๊ฐ์ ธ์ค๋ Linux ์ปค๋งจ๋์ ๋๋ค. wget ๊ณผ curl ์ ๊ฑฐ์ ์ ์ฌํ์ง๋ง ์กฐ๊ธ ๋ค๋ฅธ ๋ถ๋ถ์ด ์์ต๋๋ค. ๊ณตํต์ HTTP, HTTPS, FTP ํ๋กํ ์ฝ์ ํตํด ์ปจํ ์ธ ๋ฅผ ๋ค์ด๋ก๋ ํ๋ ์ปค๋งจํธ ๋ผ์ธ ํด์ ๋๋ค. HTTP POST request ๋ฅผ ์ง์ํฉ๋๋ค. (์ฆ, ์น์ฌ์ดํธ๋ก ๋ฐ์ดํฐ๋ฅผ ์ ์กํ ์ ์์ต๋๋ค.) HTTP ์ฟ ํค๋ฅผ ์ง์ํฉ๋๋ค. ์คํฌ๋ฆฝํธ์ฒ๋ผ ์ฌ์ฉ์ ์ธํฐ๋ ์ ์์ด ์ํ๋ ์ ์๋๋ก ์ค๊ณ๋์์ต๋๋ค. ์คํ์์ค์ด๋ฉฐ ๋ฌด๋ฃ์ ๋๋ค. 90๋ ๋์ ์์ํ ํ๋ก์ ํธ์ ๋๋ค. (wget ์ 1995๋ , curl ์ 1996๋ ์ ์์ํ์ต๋๋ค.) metalink ๋ฅผ ์ง์ํฉ๋๋ค. ์ฐจ์ด์ wget ๊ฐ๋จํ๊ณ ์ง๊ด์ ์ ๋๋ค. ๋ณ๋์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ง์ํ์ง ์์ต๋๋ค...
์ด ๊ธ์ DevEric ๋์ ๊ธ์ ์ฐธ๊ณ ํ์์ต๋๋ค. ํธ๋์ญ์ ์ propagation ์ค์ ์ด๋ Spring์์ ์ฌ์ฉํ๋ ์ด๋ ธํ ์ด์ '@Transactional'์ ํด๋น ๋ฉ์๋๋ฅผ ํ๋์ ํธ๋์ญ์ ์์์ ์งํํ ์ ์๋๋ก ๋ง๋ค์ด์ฃผ๋ ์ญํ ์ ํฉ๋๋ค. ์ด๋ ํธ๋์ญ์ ๋ด๋ถ์์ ํธ๋์ญ์ ์ ๋ ํธ์ถํ๋ค๋ฉด ์คํ๋ง์์๋ ์ด๋ป๊ฒ ์ฒ๋ฆฌํ๊ณ ์์๊น์? ์๋ก์ด ํธ๋์ญ์ ์ด ์์ฑ๋ ์๋ ์๊ณ , ์ด๋ฏธ ํธ๋์ญ์ ์ด ์๋ค๋ฉด ๋ถ๋ชจ ํธ๋์ญ์ ์ ํฉ๋ฅํ ์๋ ์์ ๊ฒ์ ๋๋ค. ์งํ๋๊ณ ์๋ ํธ๋์ญ์ ์์ ๋ค๋ฅธ ํธ๋์ญ์ ์ด ํธ์ถ๋ ๋ ์ด๋ป๊ฒ ์ฒ๋ฆฌํ ์ง ์ ํ๋ ๊ฒ์ 'ํธ๋์ญ์ ์ ์ ํ ์ค์ '์ด๋ผ๊ณ ๋ถ๋ฆ ๋๋ค. ์ ํ ์ค์ ์ต์ ํธ๋์ญ์ ์ ์ ํ ์ค์ ์ '@Transactional'์ ์ต์ 'propagation'์ ํตํด ์ค์ ํ ์ ์์ต๋๋ค. ๊ฐ ์ต์ ์ ์๋์ ๊ฐ์ต๋..
Sims๋์ ๊ธ์ ์ฐธ๊ณ ํ์์ต๋๋ค. ํ๋ก๊ทธ๋๋ฐ์ ํ๋ค ๋ณด๋ฉด ๋ค์ํ ์ค๋ฅ๊ฐ ๋ฐ์ํ๊ธฐ ์ฝ์ต๋๋ค. ๊ฐ์ฅ ๋ํ์ ์ธ ์๋ก๋ file์ ์ฝ์ผ๋ ค๊ณ ํ๋๋ฐ ํด๋น file์ด ์๋ ๊ฒฝ์ฐ, 0์ผ๋ก ๋๋๋ ๊ฒฝ์ฐ ๋ฑ๋ฑ.. ์ฝ๊ฒ ์ ํ ์ ์๋ ์ค๋ฅ๋ค์ด ๋ง์ด ์์ฃ . ์ด๋ฌํ ์ค๋ฅ๋ฅผ ์ฒ๋ฆฌํ๋ ๊ฒ์ '์์ธ ์ฒ๋ฆฌ'๋ผ ๋ณผ ์ ์์ต๋๋ค. ๊ทธ๋ผ ์ด๋ป๊ฒ ์์ธ ์ฒ๋ฆฌ๋ฅผ ํ ์ ์๋์ง ์ดํด๋ณด๋๋ก ํฉ์๋ค. ์์ธ์ฒ๋ฆฌ != ๋ฒ๊ทธ ์, ์ผ๋จ ์ค๋ฅ๋ฅผ ๋ถ๋ฅํด ๋ด ์๋ค. ์์์ ๊ฐ๋จํ๊ฒ 2๊ฐ์ง ์ค๋ฅ๋ฅผ ๋ง์๋๋ ธ์ต๋๋ค. ์ฒซ ๋ฒ์งธ๋ ํ์ผ์ด ์กด์ฌํ์ง ์๋ ๊ฒฝ์ฐ, ๋ ๋ฒ์งธ๋ 0์ผ๋ก ๋๋์์ ๋ ์ค๋ฅ์ ๋๋ค. ๋ ๋ค ์ค๋ฅ์ง๋ง ์์ธํ ์ดํด๋ณด๋ฉด ํน์ง์ด ์กฐ๊ธ ๋ค๋ฆ ๋๋ค. ์ฒซ ๋ฒ์งธ, ํ์ผ์ด ์กด์ฌํ์ง ์๋ ๊ฒฝ์ฐ์ ์ค๋ฅ๋ ํ๋ก๊ทธ๋๋จธ๊ฐ ์์์ ํ๊ณ ์์ธ ์ฒ๋ฆฌ๋ฅผ ํด์ค์ผ ํ๋ ๊ฒฝ์ฐ์ ๋๋ค. ์ฆ, ..
// ๋ฐ๋ณตํด์ ํ์ํ ๋ด์ฉ ํน์ ๋ฐ๋ณตํ ๊ตฌ๋ฌธ ์ด ๋, ์ํ์ฉ ๋ณ์๋ฅผ status๋ผ๊ณ ์ง์ ํ๋ค๋ฉด ์๋์ ๊ฐ์ด ํ์ฉํ ์ ์๋ค. ${status.current} ํ์ฌ for๋ฌธ์ ํด๋นํ๋ ๋ฒํธ ${status.index} 0๋ถํฐ์ ์์ ${status.count} 1๋ถํฐ์ ์์ ${status.first} ์ฒซ ๋ฒ์งธ์ธ์ง ์ฌ๋ถ ${status.last} ๋ง์ง๋ง์ธ์ง ์ฌ๋ถ ${status.begin} for๋ฌธ์ ์์ ๋ฒํธ ${status.end} for๋ฌธ์ ๋ ๋ฒํธ ${status.step} for๋ฌธ์ ์ฆ๊ฐ๊ฐ ํ์ฉ ์ / ์ฝ์ด์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค.