최근 서버가 자꾸 shutdown 되는 상황이 발생하여 로그를 살펴보았습니다.

사용중인 운영체제는 CentOS 7 64비트입니다.


cat /var/log/messages | grep 'System is powering down.'


불규칙적으로 서버가 꺼지는 현상이 발생했는데, 신기하게도 비정상 종료가 아니라 정상 종료(Shutdown)였습니다.

파워나 보드 등의 부품 문제로 인한 갑작스런 전원 종료는 아닌 것입니다.


누군가 리눅스를 일부러 끄고 있다는 생각이 들어 해킹을 의심했으나, 로그에서 다음과 같은 부분을 발견했습니다.


Jan 10 22:23:31 localhost systemd-logind: Power key pressed.

Jan 10 22:23:31 localhost systemd-logind: Powering Off...


놀랍게도 전원 버튼이 눌려 시스템이 꺼지고 있었습니다. 그런데 주변에 물어봐도 아무도 누른 사람이 없습니다.

이 상태로 한 2주 지나니까 이젠 시스템을 켜면 3초 안에 자동으로 꺼집니다. 그리고 다시 알아서 켜지고, 반복됩니다.


전원 버튼 고장으로 결론을 내릴 수밖에 없는 상황입니다.


그런데 이미 제 TS140은 구입 후 1년이 경과하여 무상 RMA 불가하고, 해외 수입 제품이므로 국내 유상 A/S도 불가능합니다.

TS140 Front Bezel을 구입하여 교체하면 되지만 일단 당장 서버를 살리고 봐야 하니 나중으로 미룹니다.



메인보드의 우측하단에 전면부 패널과의 연결 케이블이 있습니다.

이 케이블을 Plug-Out 하였더니 시스템이 꺼졌다 켜졌다 하는 일은 사라졌습니다.

아무래도 전원 버튼 고장이 확실해 보입니다.



그런데 전원 버튼 연결선을 뽑아버렸으니 컴퓨터를 켤 방법이 없어졌습니다.

전원 시그널 핀 2개를 드라이버로 쇼트 내면 켜지긴 합니다만, 이걸 매 번 옆커버 따서 할 수는 없는 일입니다.



그래서 꼼수를 써 봅니다. 부팅 시 F1을 눌러 CMOS를 들어가면 파워 설정이 있습니다.

이 중에서 '전원 케이블이 연결되면 자동으로 시스템이 켜지도록' 하는 옵션이 존재합니다.

이 옵션을 ON으로 하여, 전원선을 뽑았다 꽂으면 시스템이 켜지도록 하였습니다.



전원을 끄는 것은 문제가 없습니다. 리눅스에서 shutdown 명령어로 종료하도록 합니다.



일단 이렇게 조치하여, Front Bezel이 도착할 때까지는 운영이 가능하겠습니다.

맥(Mac OS X)에 Java 8 (JRE, JDK, jdk1.8) 설치하는 방법입니다.


기존에 Legacy Java 6(2015-001)을 설치했더라도 상관 없습니다.

두 Java는 서로 영향 없이 맥에 공존하게 됩니다.




1. 다운로드 및 설치

우선 말씀드릴 점은, 여러가지 사유로 인해 JRE보다 JDK를 설치하는게 일이 간단합니다.


어차피 Java 8 설치하시는 분들은 Eclipse 혹은 관련 개발을 위함이라 생각되기 때문에

JRE는 건너뛰고 JDK를 설치하도록 합니다. (JDK는 JRE를 포함하고 있습니다.)


http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html




2. 터미널 명령어 java를 jre1.8로 연결

현재 상태에서 터미널에 java -version 을 치면 두 가지 케이스로 나눠지는데

  첫째는, 아무런 Java를 설치하지 않아 설치 창이 튀어나오는 경우

  둘째는, java 1.6.0이 설치되어 있다고 나오는 경우


어쨌거나 두 케이스 다 Java 8과는 연결되지 않기 때문에 새로이 연결하도록 합시다.


본 작업은 /usr/bin 디렉토리 내의 파일을 변경하므로, rootless 기능을 꺼야 가능합니다.

끄는 방법은 구글링을 하시기 바랍니다.


ls /Library/Java/JavaVirtualMachines


위 명령어로 현재 설치된 jdk1.8의 폴더명을 알아냅니다.


sudo rm /usr/bin/java

sudo ln -s /Library/Java/JavaVirtualMachines/jdk1.8.0_91.jdk/Contents/Home/bin/java /usr/bin/java




3. 끝

연결이 끝났습니다.

java -version 을 쳐서 Java 1.8.0 버전을 확인하고 기분 좋아하도록 합니다.

StartSSL에서 인증서 발급 받는 방법은 해당 글에서 확인하시기 바랍니다.


- 본 글은 RedHat 계열 기준으로 작성되었습니다. Debian, Ubuntu는 내용이 다릅니다.

- 본 글은 CentOS 7 기준으로 작성되었으며, 아파치는 yum 기반 설치를 가정합니다.



1. 아파치 SSL 모듈 설치


yum -y install mod_ssl



2. 서버에 인증서 저장


mkdir /etc/httpd/conf/ssl


# /etc/httpd/conf/ssl 경로에 아래의 인증서 파일들을 저장합니다.

# 경로는 바뀌어도 상관 없습니다. 아래 4번 항목에서 해당 경로를 수정해 주면 됩니다.


# 넣어야 하는 인증서 관련 파일:

#     acu.pe.kr.crt (도메인 인증서) (StartSSL에서 제공하는 zip 파일에 동봉)

#     private.key (비밀키)


# 인증서 파일들에 대한 권한 설정

chown -R root.root /etc/httpd/conf/ssl

chmod -R 644 /etc/httpd/conf/ssl



3. 아파치 설정 파일(httpd.conf)에 SSL 모듈 로드, 옵션 파일 추가


vi /etc/httpd/conf/httpd.conf


# 아래 내용 추가 (빨간 부분을 서버에 맞게 수정)

LoadModule ssl_module modules/mod_ssl.so

Listen 443

<VirtualHost *:443>

    ServerName acu.pe.kr

    ServerAlias www.acu.pe.kr

    DocumentRoot /var/www/html

    SSLEngine on

    SSLCertificateFile /etc/httpd/conf/ssl/acu.pe.kr.crt

    SSLCertificateKeyFile /etc/httpd/conf/ssl/private.key

</VirtualHost>



4. 아파치 재시작


systemctl restart httpd


# 아파치 실행 시 비밀키(private.key)의 pass phrase를 물어봅니다.

# 비밀키를 생성할 때 입력했던 비밀번호를 입력하시면 됩니다.


# 아파치를 실행할 때마다 pass pharase를 입력하기가 귀찮으시면

# 인증서에 아예 비밀번호를 입력시킬 수 있습니다.

openssl rsa -in /etc/httpd/conf/ssl/private.key -out /etc/httpd/conf/ssl/private.key


# 단, 이렇게 되면 이제부터 개인키 파일이 외부로 노출되어서는 절대 안됩니다.

# 또한 작업하기 전의 원본 파일을 별도로 백업해 두시기 바랍니다. (갱신 시 필요)



5. SSL 적용 테스트


테스트 사이트: https://www.digicert.com/help/



*. 에러 발생 시


이런 메시지가 출력되면 실행에 실패한 것임:

Job for httpd.service failed because the control process exited with error code.


왜 실행이 실패했는 지 로그 확인:

systemctl status -l httpd


문제: (98)Address already in use: AH00072: make_sock: could not bind to address [::]:443

이유: 다른 프로세스가 443 포트를 이미 사용중이므로, 해당 프로세스를 종료해야 함

해결: netstat -tunap | grep 443 명령어로 어떤 프로세스가 사용중인지 확인 후 종료

해결: 해결이 안되면 아파치 설정에 Listen 443이 중복 선언된 것, 따라서 주석 처리


문제: 홈페이지 접속 시 신뢰할 수 없는 인증서 메시지가 출력됨

증상: 서버의 인증서(crt)와 브라우저에 나타난 인증서의 지문(fingerprint)이 같지 않음

증상: Common Name(CA)에 이상한 랜덤 숫자가 표시됨

이유: 인증서가 아파치에 제대로 로드되지 않아 엉뚱한 인증서를 클라이언트에 제공함

해결: httpd.conf의 VirtualHost 443이 도메인을 잘 낚아채도록 수정


+ Recent posts