systemctl restart httpd
systemctl status httpd -l
아파치 시작이 안 돼서 상태를 봐도 로그에 당장 이유는 알려주지 않고 일단 안될 경우
httpd.service: main process exited, code=exited, status=1/FAILURE
Failed to start The Apache HTTP Server.
Unit httpd.service entered failed state.
httpd.service failed.
어이없게도 자체 로그는 이게 다임...
차근차근 이유를 찾아보자. 구글링해보며 시도해본 것들
문법 검사
apachectl configtest
Syntax OK.
httpd.conf의 VirtualHost 내에서 기록하는 error_log 확인하기
확인해보니
AH01892: Illegal attempt to re-initialise SSL for server (SSLEngine On should go in the VirtualHost, not in global scope.)
라는 에러가 발생하고 있었다.
포트 443이 열려있는지 확인 <방화벽, Listen 443, (클라우드 사용시) ACG 등>
SSLEngine On < 을 VirtualHost 내부에서 설정
하여 해결
httpd.conf의 error_log 확인하기
확인해보니
(28)No space left on device: AH00023: Couldn't create the rewrite-map mutex
AH00016: Configuration Failed
라는 에러가 발생하고 있었다.
아파치가 종료되어도 메모리 점유를 하고 있는 경우 공유메모리의 사용량을 먹고 있어서 이 문제가 발생한다고 하는 글을 보았다.
ipcs | grep apache(username)
ipcs -s -t | grep apache(username) | grep -v sem | cut -f1 -d' ' | awk '{print "ipcrm sem",$1}'
위 명령어를 입력하면 공유메모리의 사용량을 확인해볼 수 있는데
이거 뭐 이렇게만 나와서 봐도 뭔진 모르겠더라.
for i in `ipcs -s | grep apache(username) | awk '{print $2}'`;do ipcrm -s $i;done;
이 명령어로 삭제해준 후 다시 httpd restart 하니 해결되었다.
하지만 이 문제는 계속해서 발생할테니 스크립트로 만들어서 주기적으로 실행해주거나
커널 파라메터를 튜닝하라고 하는데.. [echo 250 32000 100 512 > /proc/sys/kernel/sem]
https://www.enteroa.com/tag/no-space-left-on-device/
추후에 SSL cron 하면서 얘도 해봐야겠다.
포트 제대로 열려 있나 확인하기
netstat -anp | grep LISTEN
netstat는 네트워크 상태를 확인하는 명령어이고 옵션을 여러 가지 붙일 수 있다.
-a: 모든 네트워크 상태 출력
-n: 도메인 숫자를 숫자로 출력
-p: PID와 사용중인 프로그램명 출력
정도를 사용하여 확인했다
'main > Server' 카테고리의 다른 글
[CentOS 7] Apache Rewrite로 http -> https, non-www -> www로 주소 Redirect 시키기 (0) | 2022.02.05 |
---|---|
[CentOS 7] https, SSL인증서 적용 (0) | 2022.02.03 |
[Linux] 파일에서 특정 검색어 포함 여부 검색하기 grep (0) | 2022.02.03 |
리눅스 서버에서 윈도우로 파일 옮기기 (scp) (0) | 2022.01.23 |
[CentOS 7] pm2에서 React 무중단 실행하기 (0) | 2022.01.20 |