기존에 rpm을 통해 설치한 package가 있는데 이를 지우고 싶은 경우가 있다. 가령 다음과 같은 상황이다. 사정상 더 낮은 버전의 zabbix를 설치해야 하는데 이미 최신버전이 깔려있어서 설치를 할 수 없다. 그래서 기존에 설치된 package를 삭제하고자 한다. rpm 으로 설치된 package를 일단 확인을 한다. $ rpm -qa | grep [package 명] 설치를 확인했으면 지워준다. rpm -e 명령어를 통해 삭제할 수 있다. $ rpm -e [삭제할 package명] 삭제를 하고 확인을 한번 해준다. 삭제가 정상적으로 된것을 확인할 수 있다. 만약 삭제가 정상적으로 안되고 dependency 관련 오류가 난다면 다음과 같이 한다. $ rpm -e [삭제할 package명] --nod..
web/was 세팅을 마치고 브라우저에서 잘 연결이 되는지 확인을 하려고 nginx에 설정한 도메인을 딱 치는순간! 왜 이런 오류가 날까? 원인을 파악해 보니 web서버에서 was서버로 (물리적으로 다른 서버) 연결을 하는 경우만 이렇다. web to web 은 nginx 설정대로 아주 잘 된다. 그렇다는것은 web 서버와 was 서버간의 방화벽이 문제가 될수 있는다는 것이다. 방화벽이 열렸는지 확인할 수 있는 방법은 telnet도 있지만 오늘은 netcat (or ncat)에 대해서 살펴보겠다. (기존의 netcat을 크게 개선시킨것이 ncat 이라고 한다.) 일단 nc가 설치가 되었는지 확인을 해본다. 역시 깔려있지 않다. 인생이 그렇게 호락호락하지는 않은것 같다. $ yum install nc yu..
springboot 로 프로젝트를 구성하고 배포환경을 구성하였다. 이제 실행 스크립트만 작성을 하면 되는데 문제가 생겼다. 내장 was를 사용하기에 springboot 실행/중지 파일 (start.sh/stop.sh) 을 직접 만들어줬고 이를 통해 실행을 하려 한다. start.sh ( before ) #!/bin/bash java -jar /springboot jar경로/sample.jar --spring.profiles.active=dev 이걸 jenkins의 Execute Shell을 통해 혹은 linux shell에서 실행을 한다면 springboot가 background로 실행되는것이 아니라 실행된 상태로 끊어지지 않고 대기한다. 이걸 ctrl+c 와 같은 행위로 멈춘다면 실행도 멈추게 된다. ..
배포환경을 구성하다보면 서버간 ssh 연결이 안되는 경우(거의 대부분)을 볼수 있다. 이럴 경우에는 방화벽으로 막혀 있는것이 아니라면 hosts.allow 설정으로 해결할 수 있다. 배포서버를 A, 개발서버를 B 라고 한다면 A가 source, B가 destination이 된다. 이때는 hosts.allow 를 설정은 B에서 하면 된다. 주석이 끝나는 부분 다음에 다음과 같이 설정한다. B 서버 hosts.allow (vi /etc/hosts.allow) 설정 sshd:ip1 ip2 ip3 이런식으로 공백을 두고 여러 IP를 입력할 수 있다. sshd 외에 pop, vsftpd, sendmail 등의 프로세스도 제어할 수 있다. 또한 모든 프로세스를 허용 하려면 ALL: ip1 ip2 ip3 이런식으로 ..
CentOS에서 JAVA를 설치해보자. openjdk11 을 설치할것이기 때문에 이것부터 구해야 한다. Archived OpenJDK GA Releases Archived OpenJDK General-Availability Releases This page is an archive of previously released builds of the JDK licensed under the GNU General Public License, version 2, with Classpath Exception. WARNING: These older versions of the JDK are provided to he jdk.java.net 여기에서 다운로드 받을 수 있다. 다운로드를 받았으면 압축을 풀어준다. $ ..
리린이(리눅스어린이)에게 서버 구성의 임무가 주어졌다. 리눅스를 많이 사용해보긴 했어도 남이 구성한 환경 위에서 기본적인 명령어나 shell script 정도 만들어서 동작시키고 하는것이 전부였는데 처음부터 구성을 해야 한다. 처음부터 하나씩 해보자. 일단은 사용자 추가 및 폴더 권한을 설정해서 특정 사용자는 특정 폴더에서만 작업을 진행하도록 해야한다. Group 생성 및 User 생성 root 계정으로 접속 후 $ groupadd -g 1010 testdev 이렇게 그룹부터 생성을 해준다. 1010 이라고 하는건 gruop_id (gid) 이다. 1000 이후의 숫자를 중복이 안되게 넣어주면 된다. 중복이 안되나 확인을 하려면 혹은 그룹이 잘 생성되었는지 확인을 하려면 $ vi /etc/group 으로..
서버는 영원히 부팅된채로 동작할 수 없다. 패치에 따라 혹은 새로 반영해야할 무언가가 있으면 재부팅을 해줘야 한다. 그럼 재부팅을 할때마다 서비스를 수동으로 다 동작시켜야하는가? 물론 아니다. 다 방법이 있다. 윈도우 서버 같은 경우는 '서비스' 에 들어가서 우클릭으로 해당 서비스가 재기동이 될때 자동으로 실행시킬것인지 수동으로 실행시킬것인지 결정을 할 수 있고 리눅스의 경우는 rc.local 파일에서 이와 유사한 행동을 할 수 있다. 이 rc.local을 이용해서 서버 재기동시 자동으로 서비스를 올리는 방법에 대해 알아보겠다. rc.local 은 부팅시 서비스를 자동으로 실행해주게끔 해주는 역할을 한다. 부팅시 다른것을 다 하고 이 rc.local이 동작한다고 생각하면 된다. 보통의 경우는 /etc/r..
지난번에 "Jenkins에서 Build FAILURE 시 특정 위치에 로그남기기"를 하며 거기에서 사용된 Shell Script가 있다. Jenkins에서 Build FAILURE 시 특정 위치에 로그 남기기 Jenkins에서 빌드를 하던지 배치를 돌리던지 할때 오류가 발생을 할 수 있다. 이때 오류에 대해서 즉각 noti를 받고 싶은 경우라면 일반적으로는 Jenkins와 연동이 되는 email noti를 받던지 slack을 통해� oingdaddy.tistory.com 여기에 나온 Shell Script 는 다음과 같다. #! /bin/bash jobstatus=$(cat /app/cqm/mbr/ci/log/jenkins.log | tail -1 | cut -f 3 -d':') if [ "${jobst..