php 에서 dbcon 작성 할때 localhost가 안먹을때.

서버에 APM 이 정상 설치가 되어 있으나

php 로 dbcon 을 할때 127.0.0.1은 먹고 localhost 로는 접속이 불가능할때가 있다.

 

먼저 mysql로 로그인을 하여 소켓 위치를 파악하자.

 

php.ini 파일에서 mysql.default_socket 을 일치시켜준다.

 

그다음 아파치나 php-fpm을 재시작 ‘ㅅ’a

 

php 5.6이상 fsockopen 문제

php 5.6 이상 버전에서 인증서를 확인하는 옵션인 verify_peer 의 값이 flase => true로 변경이 되었다.
때문에 이와 관련하여 (대부분 PG연동) php 5.6 버전과 php 7.0 버전은 PG결재 진행이 안될 수 있다.
http://php.net/manual/kr/migration56.openssl.php

  • 서버의 php 버전이 5.6 이상이고 외부로 HTTPS 통신을 할때 발생한다.

에러메세지는 대략 다음과 같다.
Warning: fsockopen(): SSL operation failed with code 1. OpenSSL Error messages: error:14090086:SSL routines:ssl3_get_server_certificate:certificate verify failed in

 

일반적으로 신뢰할수 있는 CA 값을 서버에 /etc/pki/tls/cert.pem 에 저장하고 있다.(아래 명령어로 확인)

단지 특정 외부에서 사용하는 인증서의 ROOT CA 가 서버내 ca-certificates  파일내에 없는것이다 ‘ㅅ’a

해결을 위해서는 서버에 ca-certificates 을 업데이트 하면 되겠다.

해결이 안된다면 아래와 같이 인증서 확인을 끄는 방법으로 php 소스코드를 수정해야 한다.

 

원본: 작동불가 코드

위와 같은 fsockopen 을 아래와 같이 stream_socket_client 으로 대체 하면서
verify_peer 와 verify_host 를 false 로 옵션을 변경하는것으로 해결이 가능하다.

수정본: 작동가능 코드

php 소수 수정을 이용한 해결 방법은 아래 글을 참조하였습니다 🙂
https://blog.e2info.co.jp/2015/12/29/php5-6でカード決済できない

memcache 설치 및 session.cache 운용

memcached 는 서버의 메모리를 할당해서 사용할수 있는 데몬의 일종이다.

파일캐시, 쿼리캐시, 세션캐시 등을 할 수 있으나 파일 캐시, 쿼리캐시는 최근에 사용되는 자체 데몬의 캐시가 오히려 더 효율적이기 때문에 사용치 않는다.

때문에 여기서는 세션캐시 부분만을 설명할 예정이다.

1. 설치

pecl, phpize, php-config 경로는 자신의 php 경로에 맞게 수정되어야 한다 ‘ㅅ’a

 

2. 실행 및 데몬 자동 실행 등록

 

3. php.ini 설정 ( session 은 기존 설정값 변경 / 다른 부분은 추가. ) ( php 7.0 – memecahe을 포함 한다 )

 

설정 후 아파치를 재시작 하거나 php-fpm 일경우 php 을 재시작 하면 적용이 된다.
용량이나 포트등은 /etc/sysconfig/memcached 에서 설정할 수 있다.
기본 설정인 32M 의 경우 약 25000개의 세션을 버티는거 같다 = =a

 

4. 주의 사항.
일반적으로 문제가 생기지는 않으나 그누보드4 & 5 의 경우에 문제가 발생한다.
common.php 파일부분에 수정을 가해야만 정상동작 할 수 있다.

그누보드5

그누보드4

물론 위에서 설명한 php.ini 설정을 하지 못했다면 더 어려워지겠다 =3=a

 

일반적인 /tmp 를 사용하거나 그누보드처럼 자체 폴더에 세션을 생성 하는 방법은 그 폴더에 32000여개의 파일이상이 생성이 될경우 사이트 속도가 매우 느려질 수 있다. ( 10초이상 걸릴 수도 있다. )
즉 사이트가 대형화가 된 경우의 속도 저하를 방지 한다.

그누보드의 경우 각 접속 뿐만 아니라 각 게시물의 xx번 읽음 체크를 위해 세션을 이용하기도 하기 때문에 이 느려지는시점은 본인 생각보다 빨리 올 수 있다.

 

운영중인 memcached 의 자원 관리를 위해 memcache.php 를 운용해서 확인할 수 있다.
https://github.com/lagged/memcache.php

CentOS7 – proftpd 설정.

RHEL 7, CentOS 7 에서 epel 레포지트리 추가 후 proftpd 설치를 할경우.

기존 버전과 틀리게 proftpd-1.3.5b 가 설치된다. (CentOS6은 proftpd-1.3.3g)

 

문제는 conf 파일이 호환 되지 않아서 ‘ㅅ’a 기존 잘운영하건 conf를 복사해서 붙여넣을 경우 작동하지 않는다.

그래서 그냥.. 설정값  ‘ㅅ’a 업데이트 (그냥 무리없이 쓸수 있는 설정이다. 당연히 어나니머스 ftp는 사용 안함)

기존과 틀려진 부분은 기존에 Certificate 와 Key 를 구분하여 받아 들였는데 pure-ftpd 처럼 한파일로 받는다.
TLS 설정을 안한경우 TLSEngine off 로 한다.

FTP용 인증서 발급 방법은 TLS통신을 위한 Public Certificate 발급&갱신을 확인 한당 ‘ㅅ’a

open-DKIM 설치

Open-dkim 은 서버에 설치되어 운영 되고 발송되는 메일의 스팸처리 확률을 낮추어 주는 메일 익스텐션 이라고 보면 된다.
사이트를 운영하면서 구글에 대량메일을 보내려면 필수 적이라고 보면 된다.

회원 가입 축하메일등의 짜잘한 부분 말고 ‘ㅅ’a
뭐 안내라든가 그런거 수천통씩 보내야 할때.. 국내에서는 kisarbl 에 화이트IP를 등록하는 방법으로
보내지지만 구글한텐 안통하기 때문에 구글에서 제안한 opendkim을 서버에 설치해서 해결 하는것이다.

 

여기서는 CentOS6 + Sendmail 에 적용 하는 방법을 나열함. ‘ㅅ’a

 

open-DKIM 은 epel 레포지트리에 포함 되어 있어서 yum 으로 설치 할수 있다.

설치는 벌써 끝. ‘ㅅ’a

 

근데 open-DKIM은 설정이 어렵다 ‘ㅅ’a
폴더를 만들고.

그다음 DKIM 키를 생성한다.

 

이후 생성한 DKIM 정보를 아래 파일들에 삽입해야 한다 ‘ㅅ’a
/etc/opendkim/KeyTable (키테이블이 사용할 DKIM key를 선언.)

/etc/opendkim/SigningTable (사용할 메일주소와 키테이블을 매칭한다.)

/etc/opendkim/TrustedHosts 이파일은 sendmail 메일의 access.db 와 기능이 설정법 및 기능이 같다.
즉 DKIM사이닝을 해줄 IP 및 사이닝을 사용할 도메인을 추가한다.

 

이후에 아래 명령어로 생성된 DKIM 값을 발췌해서.

DNS 서버의 zone 파일에서 아래와 같이 TXT 값을 삽입한다. – 괄호랑 주석은 제거한다. ‘ㅅ’a

 

/etc/opendkim.conf 을 아래와 같이 수정한다.

 

그후 서비스 시작 및 init.d에 등록.

 


 

자 이제 sendmail 에 open-DKIM 연결고리만 만들어 주면 된다 ‘ㅅ’b
/etc/mail/sendmail.mc 파일에 아래와 같은 내용을 삽입한다.

그후에 적용 및 sendmail 재시작.

 

그후에 메일 발송 테스트를 해서 메일 헤더에 DKIM-Signature 부분이 삽입이 되었는지 확인한다 ‘ㅅ’b
구글 메일로 메일을 발송하고 아래와 같이 확인한다.