라이센스 발급을 위해서 호스트 네임을 변경하여야 하는 경우가 생겼습니다.


localhost 뭔가 좀  서버를 여러개 쓰기 위해서는 필요하다고 생각 되었으며 


hostnamectl set-hostname changehostname





hostnamectl set-hostname changehostname

간단 사용이네요 ㅎ

'GNU > LINUX' 카테고리의 다른 글

[Centos 7] TUI (TextMode) 에서 터미널 꺼짐 막기  (0) 2018.08.07
[CentOS7] TextMode 에서 한글 깨짐 현상  (0) 2018.08.06
Segmentation Fault  (0) 2016.07.15
COMMAND - alias, unalias  (0) 2016.06.24
COMMAND - SCP(Secure Copy)  (0) 2016.06.23

A 서버에서 JEUS 6,7,8을 사용중에 B서버로 이동 해야 하는 경우가 생겼습니다.


JEUS 6,7은 너무 레거시하다보니 8만을 옮기기로 하는데 재설치할 필요없이 JEUS 폴더를 통째로 되다는 이야기를 들었습니다.


그래서 폴더를 통째로 이동하였습니다.


/home/계정명/jeus8 에 위치할 수 있도록




커맨드 라인에서 다음과 같이 가져옵니다.


scp -r server@127.10.1.1:~/jeus8 ./



 scp 명령을 이용해서 설치된 jeus8 폴더를 통째로 가져옵니다. -r(순환) 옵션을 넣어주지 않으면 실패하기 때문에 꼭 넣어 줘야 하며


sudo를 작성해서 할 경우 jeus 폴더가 root 계정 권한이 되어서 추후 사용에 문제가 될 수 있으니 기본 계정으로 가져오시면 됩니다.


가져온 후에 DAS를 띄우기 위해서 startDomainAdminServer를 실행하여도 아무 동작이 되지 않습니다.


!!! JEUS_HOME을 잡아줘야 합니다.


1. JEUS_HOME 잡기 


/home/계정명/.bash_profile 을 열어서 제우스 홈을 추가 해줍니다.


vi .bash_profile


.....
     export JEUS_HOME="/home/test/jeus8"
     PATH=$PATH:$HOME/.local/bin:$HOME/bin:/usr/java/jdk1.8.0_152/bin:$JEUS_HOME/bin

     export PATH
.....

export JEUS_HOME="/home/test/jeus8"

PATH 의 끝에 $JEUS_HOME/bin 을 추가해줍니다. 


추가 후 저장 ESC ->(Shift + ; ) -> wq  (기본적인 vim 의 수정후 저장 명령입니다.)


저장 후에  echo $JEUS_HOME -> 해도 나타나지 않습니다.


bash_profile의 경우는 Linux 가 부팅될 때 실행되는 스크립트 중 하나이기 때문에 저장을 하였다 해도 재부팅을 하여야 다시 읽어 들입니다.


하지만 재부팅을 하지 않고 읽어 들이는 방법이 하나 있는데 source를 입력하면 됩니다.


source .bash_profile


작성된 스크립트들을 한번 실행해줍니다. (오류가 있다면 오류를 내뱉겠지만 오류가 없으실 겁니다.)


이제 echo $JEUS_HOME


// 결과


/home/test/jeus8


이제 DAS인 startDomainAdminServer를 실행하게 되면 



음 실행이 되지않습니다.


JAVA_HOME 세팅이 잘못된것 같은데 기존에 있던 A서버에서는 자바 1.7을 쓰고있었나 봅니다.


그런데 지금 서버에는 자바 홈이 1.8로 잘잡혀있는 상태다보니 제우스의 자바홈을 설정해주어야 하는데


그곳이 바로


JEUS_HOME/bin/jeus.properties 에 있습니다.



jeus.properties에 jdk 가 1.7로 잡혀있던 것입니다.


해당 자바 홈을 다시 잡아주고 :wq 로 저장합니다.


startDomainAdminServer -uadministrator -p123qwe


실행 결과


<<__Exception__>> 

jeus.deploy.RegisteredFileNotFoundException : The application's [testProject] file was not found : /home/Aserver/warFolder/testProject.war


음 기존에 서버에서 세팅되었던 JEUS 관련 디플로이 설정 등이 해당 서버에 세팅되어있지 않다보니까 이런 저러한 에러들이 발생합니다.


물론 정상적으로 실행은 되었지만 환경 파일때문에  해당 에러는 디플로이 할때마다 나타날거 같습니다.


제일 쉬운 방법은 webadmin 을 이용한 방법입니다.


1. localhost:9736/webadmin/ 으로 접속

 administartor id 기존 pw로 입력 로그인


좌측에 Application 선택 후  Applications 에 기존에 세팅되었던 값들을 제거 합니다.


2. 설정 창에서 applicaton 을 제거 


vi $JEUS_HOME/domains/jeus_domain/config/domain.xml


에 들어가서 필요없는 application 을 지우거나 path 를 다시 설정 하면 됩니다.


ps aux | grep jeus 로 제우스 확인 후 pid를


kill -9 pid로 종료


startDomainAdminServer -uadministrator -p123qwe -> 정상 !


이제 관련된 ip 와 포트로 접속 해보시면 됩니다.




















군산집

메뉴 : 아구찜 소 (35,000원) + 볶음밥 (2,000원)

total : 38,000원 (계산서에 1000원이 더붙었는데 이유는 모르겠음)

후기 

깍돌이 : 별3개가 나오기 아까울정도로 아구찜양이 가격대비 너무 떨어짐. (최악)

적다보니 가격이 천원이 더 추가됐는데 이유를 모르겠음 다음부턴 확실히 확인해야지 (천원짜리 메뉴가없어 해당 가격이 나올수가 없음)

깍순이 : 볶음밥아니였으면 무조건 별 2개 




안녕하세요 오늘은 Chrome 64 업데이트 노트 에 대해서 확인해보려고합니다.


** 해당 내용은 아래의 URL에 전부 다 나와있는 내용입니다.

Update Release Note URL

https://developers.google.com/web/updates/2017/11/devtools-release-notes



2018년 1월 19일 에 업데이트 되었으며 크게 바뀐점은


1. Performance Monitor : 페이지 성능을 실시간으로 확인


2. Console Sidebar : 콘솔에 필요없는 것들은 줄이고 중요 한 메시지들에 집중


3. Group Similar Console message : 유사한 콘솔 메시지들에 대한 그룹화 


** chrome://version/ 을 url에 입력하면 Chrome 버전에 대한 정보가 나타납니다. 


확인 후 진행시 가장 최 상단에


Chrome64.0.3282.119 (공식 빌드) (64비트) (cohort: 64_119_win)

이와 같이 나타납니다. 



1. Performance Monitor 


성능 테스트를 하고 싶은 페이지를 Chrome으로 접속 후 F12(개발자 도구창)


을 연 후에


Ctrl + Shift + P 를 누릅니다.



해당과 같은 창이 나타나게 되는데 이부분에서 Performance Monitor를 검색하게 되면 



해당메뉴가 나타나며 엔터를 치게 되면 개발자 도구창 하위에




해당과 같은 성능 모니터링이 나타나게 됩니다.


현재는 무난하지만 특정 이벤트를 마구 지정해보겠습니다. ( 해당 사이트에 )


특정 데이터를 실시간으로 받아서 차트 2개를 그리는 작업을 하였습니다.


CPU Usage 가 순간적으로 올라가는 것이 확인됩니다. 아직 무리가 되는 작업은 아닌것으로 보입니다.


앞으로 Chrome 브라우저에서의 성능은 이것으로 확인하면 될것 같네요 


**





Ctrl + Shift + P 를 누른 후에 


FPS를 입력하게 되면 해당 페이지 창에서 해당과 같은 화면도 같이 확인이 가능합니다. 


2. Console SideBar


개발하다보면 Console.log Console.warn Console.error 등을 많이 사용하게 되는데


해당사용에 대한 편리함을 제공 해줍니다.




해당 빨간줄을 클릭하게되면



해당과 같이 콘솔 사이드 바를 통해서 원하는 콘솔 오류만 골라서볼수 있게 됩니다.




3. Group Similar Console messages


많은 유사 메시지들이 나타나는 것들에 대해서 묶어서 보여주게 되는 기능이며 아래 와 같은 체크 메뉴로 enabled disabled 가 가능합니다.


enabled 시에 묶여있는 메시지들을 클릭시에 Expand 도 가능하니 참고 바랍니다.







**   CSS3 Hover Effects



transition :box-shadow  0.2s;   참조 



NPM(Node Package Manager) 에 대해서는 이제 어떤건지 대략적으로 알수 있을 것 같습니다.


이제부터는 NPM 에서 사용하였던 모듈들에 대해서 리스트를 작성 하도록 할려고 합니다.


이번에는 2번째 모듈인  cors (Cross Origin Resource Sharing)  모듈에 대해서 간단하게 보려고 합니다.


왜 두번째로 cors를 하였냐면 가장 맨 처음에 부딪치는 이슈이기 때문입니다. 


122.118.155.163:3000 으로 node서버를 진행시


122.118.155.163 에서 node 실행 인데 3000 port로 Listen 중 이며



122.118.155.163:8888 에서 웹서버가 디플로이 (Deploy) 된 상태 에서 클라이언트가 


122.118.155.163 으로 ajax 요청을 보내게되면 크로스 도메인 이슈가 나타나게 된다.


웹서버(웹프로젝트)는 8888에 떠있지만 실제로 요청을 받는 API 서버는 3000 포트에서 받고 있기 때문이다. 


해당 크로스 도메인에 대해서는 따로 찾아 보시길 바라고 해당 의 경우에는 


3000으로 Listen 중인 이 서버가 같은 IP를 사용하고 있지라도 CORS 문제로 인해서 restapi 를 사용할수가 없게 된다. - 보안 상의 이유로 안된다고 하는데 해당 사항에 대해서는 찾아서 이 글에 수정 하도록 하겠습니다.



XMLHttpRequest cannot load http://xx.xx.xx.xx/xxx. Request header field Content-Type is not allowed by Access-Control-Allow-Headers. 

출처: http://blog.opid.kr/430 [opid's document]

해당 에러 메시지 가 나타났을 경우에 CORS 이슈가 나타났다고 할수 있습니다.


** IE에서 간혹 cors를 설정 하였는데도 불구하고 SEC7118 XMLHttpRequest CORS 라는 에러를 내 뿜는


경우가 있는데 해당은 IE 11 버그입니다. (Windows 10 으로 가서 실행시는 나타나지 않는)


CORS이슈가있으면 response, request가 되지 않습니다. 



이에 대해서 여러가지 방법이 있는데 

1. ajax의 dataType을 jsonp 로 바꾸는 법 


2. 헤더의 크로스 도메인 을 허가하는 방법 

  -> PHP  header("Access-Control-Allow-Origin: *");

  -> JSP  <% response.addHeader("Access-Control-Allow-Origin","*"); %>



3.  Node에서는 cors 모듈을 설치 하는 법

현재는 NPM에 대한 이야기 이므로  cors 모듈을 설치하여서 해결하는 방법이 있습니다.

express-cors 도있고 cors도 있는데  express-cors는 npm 검색시에도 잘 나오지 않고 npm에서 cors로 검색시에 가장 인기가 많은 cors 모듈을 사용하였으니 해당 모듈에 대해서 간단하게 

소개하겠습니다.


cors 검색하게되면 가장 상단에 


Node.js CORS middleware 2.8.4 가 보일 겁니다. 해당 클릭 

설명에 보시면  Connect/Express middleware that can be used to enable CORS with various options.


cors를 활성화 해준다고 되어있습니다. 여러 기능도 포함하여서


설치

-> npm 모듈이기 때문에 npm 으로 설치 합니다. 해당 설명도 진행할수록 생략 하도록 하겠습니다.


npm install cors


사용

npm cors 페이지 참조 

1. 모든 도메인 요청 활성화(모든 작업 CORS 허용 테스트용)

// 익스프레스 모듈 require 및 app 설정 (해당 방식은 express 에서 사용하도록 한 규약? 같은 방식)

var express = require('express')

var app =express();

// install cors 로 설치 하였기 때문에 cors 모듈 require

var cors = require('cors')


// cors () 사용  // 모든 도메인에 대한 Request 활성화  -> 좋지 않은 방식 

app.use(cors());


사용

2. 싱글 라우트에 대한 도메인 활성화(특정 작업에 대해서만 CORS허용)

// 익스프레스 사용

var express = require('express');

var app = express();


// cors 사용

var cors = require('cors');


// ***********  products/:id 에 대한 url 라우팅시에만  cors 를 허용 

app.get('/products/:id', cors(), function(req,res,next) {

res.json({msg:'This is CORS-enabled for a single Route'});

})


사용

3. CORS Config settings(setting 값을 수정하여서 CORS 허용 IP지정)

var express = require('express');

var app = expresS();


var corsOptions = {

origin :'http://example.com',

optionsSuccessStatus:200; // IE 11이나 여러 스마트 TV들에 대한 확인 

};


app.get('/products/:id',cors(corsOptions),function(req,res,next){

res.json({msg:' This is CORS-enabled for only example.com.'});

});

사용

4. CORS w/ Dynamic Origin  동적으로 읽어서 사용 

whitelist 배열을 push 로 추가하여서 실시간으로 허용 및 제거 가능 


// 앞 부분 생략


var whitelist = ['http://example1.com','http://example2.com']

var corsOptions = {

origin: function(origin,callback)    {

if(whitelist.indexOf(origin) !==-1){

callback (null,true);

} else{

callback (new Error('Not allowed by CORS'))

}

}

}


app.get('/products/:id', cors(corsOptions),function(req,res,next){

res.json({msg: 'This is CORS-enabled for a whitelisted domain.'})

});


5. ETC CORS pre-Flight  CORS 비동기 사용 , CORS 제거 등에 대한 내용은

www.npmjs.com 에 cors 검색 후 확인 하시면 될것 같습니다.












NPM (Node Package Manager) 노드에서 사용하는 패키지 


uglify-js : 경량화 도구로써 자바스크립트 코드에 대해 공백을 제거하거나 코드를 가볍게 만들어줌


우선 www.npmjs.com 에 접속 



find packages 에 uglify-js 검색 


검색 후 리스트 중 최상단에 uglify-js (alexlamsl) // JavaScript parser, mangler/compressor and beautifier toolkit 클릭


안에 설명에 따른 설치를 보면


npm install uglify-js -g


또는


npm install uglify-js 로 설치를 할수 있으며


**ps -g옵션은 글로벌이란 뜻으로 어느 위치에서나 해당 명령어를 사용할수 있게 해주는 옵션 


( centos 기준으로  bash_profile에 넣어서 처리를 해주는게 아닌가 싶음 *추측 -> 확인되는 대로 글 수정 예정 )



-g 가 없을 시에는 lcoal 로 되며 현재 프로젝트 안에서만 사용이 가능 하다 



설치 후에 사용은 uglifyjs [input files] [option] 으로 사용한다고 적혀있다.



npm install uglify-js -g 로 설치 한 후에


uglifyjs 로 명령으로 실행하기전에 text.js를 생성


ugly.js


function ugly(ugly)

{

console.log("ugly");

console.log(ugly);

}

ugly("text Ugly");



와같이 작성후  (ESC 누른후 :  wq 엔터 -> vi 저장 단축키)


node ugly.js 실행시 다음과 같은 화면이 나타남 




이제 uglifyjs ugly.js 실행



 해당  입력이 위와같이 변함을 확인 할 수 있다. 


-m 옵션을 써서 uglifyjs ugly.js -m 을 써 주게 되면


위의 Local 변수인 ugly -> l 로 변환됨을 할수 있다. 이러한 변수명 까지 수정해준다.


새로운 파일로 추출해내기 위해서는


uglifyjs ugly.js -o ugly.min.js  와 같이 입력시 


ugliy.min.js 로 나타남을 확인 


해당 옵션을 같이 써서


uglifyjs ugly.js -m -o ugly.min.js 로 하게 되면 Local 변수로 수정하면서 다른 파일로 추출이 됨을 확인할수 있다.


안녕하세요 Jenkins 를 재설치 하게 되서 다른 방법으로 소개 하려고합니다.


// 젠킨스 공식 홈페이지

https://jenkins.io/



1. 메인 홈페이지 이동 후 Download 클릭 



2.  하단으로 스크롤



최신 버전 선택 


3. 다운로드 

(보이는 메뉴얼 대로 wget 으로 받아도 되고 저는 jenkins-2.117-1.1noarch.rpm 을 받아서 FTP로 옮겼습니다.)




4. root 계정으로 접속

명령어 입력

 rpm -Uvh jenkins-2.117-1.1.noarch.rpm







5. Jenkins Port 설정(루트 계정)

Default 8080 을 쓰지만 예약 포트라 겹칠 일이 있어 변경해줍니다.



vi /etc/sysconfig/jenkins



6. /etc/init.d/jenkins start or /etc/init.d/jenkins restart


Starting jenkins (via systemctl):  Job for jenkins.service failed because the control process exited w                                                                ith error code. See "systemctl status jenkins.service" and "journalctl -xe" for details.


에러가 났습니다.


 jenkins.service - LSB: Jenkins Automation Server

   Loaded: loaded (/etc/rc.d/init.d/jenkins; bad; vendor preset: disabled)

   Active: failed (Result: exit-code) since 월 2018-04-16 19:19:38 KST; 2min 32s ago

     Docs: man:systemd-sysv-generator(8)

  Process: 24668 ExecStart=/etc/rc.d/init.d/jenkins start (code=exited, status=1/FAILURE)


 4월 16 19:19:38 localhost.localdomain systemd[1]: Starting LSB: Jenkins Automation Server...

 4월 16 19:19:38 localhost.localdomain runuser[24673]: pam_unix(runuser:session): session opened for user jenkins by (uid=0)

 4월 16 19:19:38 localhost.localdomain jenkins[24668]: Starting Jenkins bash: /usr/bin/java: 그런 파일이나 디렉터리가 없습니다

 4월 16 19:19:38 localhost.localdomain jenkins[24668]: [실패]

 4월 16 19:19:38 localhost.localdomain systemd[1]: jenkins.service: control process exited, code=exited status=1

 4월 16 19:19:38 localhost.localdomain systemd[1]: Failed to start LSB: Jenkins Automation Server.

 4월 16 19:19:38 localhost.localdomain systemd[1]: Unit jenkins.service entered failed state.

 4월 16 19:19:38 localhost.localdomain systemd[1]: jenkins.service failed.


에러메시지 대로 systemctl status jenkins.service는 확인해봅니다.


확인해보니 

 jenkins.service - LSB: Jenkins Automation Server

   Loaded: loaded (/etc/rc.d/init.d/jenkins; bad; vendor preset: disabled)

   Active: failed (Result: exit-code) since 월 2018-04-16 19:19:38 KST; 2min 32s ago

     Docs: man:systemd-sysv-generator(8)

  Process: 24668 ExecStart=/etc/rc.d/init.d/jenkins start (code=exited, status=1/FAILURE)


 4월 16 19:19:38 localhost.localdomain systemd[1]: Starting LSB: Jenkins Automation Server...

 4월 16 19:19:38 localhost.localdomain runuser[24673]: pam_unix(runuser:session): session opened for user jenkins by (uid=0)

 4월 16 19:19:38 localhost.localdomain jenkins[24668]: Starting Jenkins bash: /usr/bin/java: 그런 파일이나 디렉터리가 없습니다

 4월 16 19:19:38 localhost.localdomain jenkins[24668]: [실패]

 4월 16 19:19:38 localhost.localdomain systemd[1]: jenkins.service: control process exited, code=exited status=1

 4월 16 19:19:38 localhost.localdomain systemd[1]: Failed to start LSB: Jenkins Automation Server.

 4월 16 19:19:38 localhost.localdomain systemd[1]: Unit jenkins.service entered failed state.

 4월 16 19:19:38 localhost.localdomain systemd[1]: jenkins.service failed.



이부분이 눈에 들어옵니다. jenkins 스크립트가 제대로 실행이 되지 않는 것 같아서


jenkins 스크립트를 까봅니다. 




자바 홈이 잡혀 있지 않았습니다.

/usr/bin/java -> 나의 자바 홈으로 변경(/usr/java/jdk1.8.0_152/bin/java

// 자바 바이너리를 타겟으로 하셔야 합니다. 



** 성공 

7. 웹으로 접속 ip:8888

 Unlock Jenkins


같은 동일 PC에서 하신다면 localhost:8888 


// 위에 8888로 설정하였기 때문에 혹시 안된다면 8080으로 해보셔도 되고 재시작을 해보시고 8888로 하시면 됩니다. 위에서 설정만 하고 말았다면 적용이 안되어있을수 있음 

** 접속이 안되는 경우 방화벽 문제일 확률이 높으니 테스트용으로

systemctl stop firewalld  실행 후 접속 시 정상접속 확인 됩니다.

접속 후 해당 부분에 입력 하는 키는

cat /var/lib/jenkins/secrets/initialAdminPassword 에 있는 키를 입력 하면 됩니다.



** JENKINS_HOME ="var/lib/jenkins" // 5단계까지는 접속 해도 아무것도 없습니다.



8. Customize Jenkins

Install suggested plugins 설치 (기본 설치 이므로 원하지 않는다면 선택하지 않아도 됩니다.



[설치 중 화면]


9. Admin 계정 생성(Root)

// 해당 계정으로만 jenkins의 플러그인 설치 및 쉘 스크립트 작성이 가능하기 때문에 유의 바람





접속 화면




자바스크립트의 배열 [ ] 의 경우에는


length 를 통하여 길이를 간단하고 손쉽게 가져 올 수 있습니다.


하지만 obj의 경우에는 length 를 지정하게 되면 undefined 가 나타납니다.


obj 의 경우 length 의 길이를 구하기 위해서는


Object.keys를 이용해야 합니다.


 

var objS = {name:"test",ttt:"NewTest",kim:"kim"};

console.log("obj.length : ",objS.length);
console.log("Object.keys Length : ",Object.keys(objS).length);

Object.keys에 대해 간단하게 적어 보면


Object.keys(obj)

obj -> 열거형 고유 속성이 반환될 개체


return Value -> 지정된 개체의 모든 나열형 속성들을 나타내는 문자열 배열

나열형 속성들을 나타낸다고 되어있다.


속성열 나열 테스트


var myObj = Object.create({}, {
  getFoo: {
    value: function () { return this.foo; }
  } 
});
myObj.foo  = 1;
myObj.foo2 = 2;
myObj.foo3 = 3;

console.log(myObj);
console.log(Object.keys(myObj)); 


결과

{foo: 1, foo2: 2, foo3: 3, getFoo: ƒ}

(3) ["foo", "foo2", "foo3"]



display : block 

한줄에 나열하지 않으며 해당 태그 자체를 한줄로 표현합니다.

(기본적으로 width 100%)

margin,width,height 속성 정의 가능합니다.


display : inline

줄을 바꾸지 않고 다른 요소와 함께 한 행에 위치하려는 성향 ex: a태그

(width 와 height 속성이 적용되지 않음 margin-top,margin-bottom 속성 적용 X)

최소한의 간격 유지를 위해서 기본 내부 margin 5px 발생 (웹브라우저에 의해)

inline 태그는 높이와 너비가 품고있는 내부 요소의 부피에 맞게 맞춰 집니다.


display : inline-block

margin,width,height 몸두 제어 가능 

(좌우 5px의 기본 여백 )

inline-block의 너비와 높이는 품고있는 내부 요소에 맞춰지며 width,height를 적용가능 합니다.






유명갈매기

★★

메뉴 : 갈매기살(양념) *2 (30,000원) + 갈매기살(생) *4 (60,000원) + 냉면 * 2 (6,000원)

total : 96,000원

후기 

깍돌이 : 이런 갈매기살 처음 먹어봄 회식이였지만 내돈 내고 한번 더 올수 있는 집

깍돌이 선임님 : 오랜만에 왔는데 역시 맛있네 

깍돌이 선임님2 : 꺳잎 싸먹으니까 진짜 맛있다.





+ Recent posts