묻고답하기
XE mysqli_innodb 설치 진행 안되는 문제, sock 방식 연결
2016.04.06 19:45
# 설치 시도 XE 버전 : XE v1.8.18 (가장 최신)
# 문제점 : XE 설치 창에서 "DB 정보 입력" 부분에서 > "환경 설정" 으로 진행 불가함.
sock 방식으로 연결을 하기위해, 적절히 DB 정보를 입력해 준것 같은데.
DB 정보를 입력해도 mysqli 및 mysqli_innodb 선택 후 진행하면 진행이 안됨.
브라우져의 XE 상에서 에러 메시지나 아무런 메시지도 없음. 무반응. DB 계정 정보 비번등은 정확함.
mysql 및 mysql_innodb 선택 후 진행하면 정상적으로 > "환경 설정" 으로 진행 설치됨.
단순히 PHP 버전과의 호환성 문제 인지, 아니면 제가 서버 설정을 잘 못 한것인지 알 수 없네요 ㅠ_ㅜ
공부한다고 많이 공부해서 적절히 설정한 것 같은데 무반응이라서 멘붕 상태 입니다.
# 시스템 사양 및 설치 항목 :
* OS : Linux CentOS 7
* Apache : httpd-2.4.6-40.el7.centos.x86_64
* DB : mariadb-server-5.5.44-2.el7.centos.x86_64
* PHP : php-5.4.16-36.el7.x86_64
* PHP 관련 주요 모듈 :
기본적인 것들은 대부분 설치 하였고, 중요 모듈 들은 아래와 같음.
php-mysqlnd-5.4.16-36.el7.x86_64 PHP 5.4 이상이라서 php-mysql(미설치) 대신 php-mysqlnd만 설치
php-fpm-5.4.16-36.el7.x86_64 현재 PHP-FPM 상태 세팅되어 있음
php-pecl-zendopcache-7.0.5-1.el7.x86_64 PHP 5.4 버전이라 임의로 설치함
php-pecl-apcu-4.0.10-1.el7.x86_64 유저캐시 지원용 임의로 설치함
# 시스템 설정 : 글이 길어질 수 있어서, 세부적인 설정을 제외한 중요 항목들만 글에 적음.
(설치 방법) 위의 것들 모두 yum 으로 간편하게 설치 한 후에 아래와 같이 중요 항목들 설정함.
sock 방식을 사용하기 위해서 연동 관련 설정은 정상적으로 처리한 듯 보임. 모두 nobody 유저로 가동함.
* Apache : Event-MPM 방식으로 작동함. PHP-FPM 과 sock 방식으로 연결되어 있음.
User nobody
Group nobody
<IfModule mpm_event_module> Event-MPM 방식 작동 하도록 적절히 설정함
<FilesMatch \.php$>
SetHandler "proxy:unix:/var/run/php5-fpm.sock|fcgi://127.0.0.1/" PHP-FPM 과 sock 방식 연결됨
</FilesMatch>
AddType text/html .php
DirectoryIndex index.php
</IfModule>
<VirtualHost *:80> 가상 호스트 지정 사용함 (여러 홈페이지 운영위해)
ServerName domain.com
ServerAlias www.domain.com
ServerAdmin webmaster@domain.com
DocumentRoot "/home/username/public_html" 사용자 계정 특정 폴더에 임의로 웹 서비스함
<Directory "/home/username/public_html"> 접근 권한은 적절히 주었음. drwxrwxr-x
Options FollowSymLinks XE 설치를 위한 최소 권한
AllowOverride FileInfo XE 설치를 위한 최소 권한 : All 해도 증상 동일함
Require all granted
RewriteEngine On rewrite_mod 정상 작동 중 (활성화)
</Directory>
</VirtualHost>
* PHP : Mariadb 와 sock 방식 연결에 문제 없게 하려고, PHP 설정에도 기본 socket 위치 설정함.
[Pdo_mysql]
pdo_mysql.default_socket = /var/lib/mysql/mysql.sock
[MySQL]
mysql.default_socket = /var/lib/mysql/mysql.sock
[MySQLi]
mysqli.default_socket = /var/lib/mysql/mysql.sock
[apcu] 및 [opcache] 등은 적절히 값은 설정 했음.
* PHP-FPM : Apache 와 현재 정상적으로 sock 방식으로 연결 작동하는 듯 보임? phpinfo 는 잘 보임.
listen = /var/run/php5-fpm.sock
listen.owner = nobody
listen.group = nobody
listen.mode = 0660
user = nobody
group = nobody
* DB : PHP(PHP-FPM) 과 MariaDB 는 sock 방식으로 연결 설정 하였음. MariaDB 기본 InnoDB.
잘안되길래 /var/lib/mysql/ 폴더권한 혹시 몰라 777완전 오픈 하였으나 증상 동일함. sock파일 정상 생성됨.
[mysqld]
basedir = /var/lib/mysql
port = 3306
socket = /var/lib/mysql/mysql.sock
secure_auth = 1
skip-networking
[client]
socket = /var/lib/mysql/mysql.sock
# 증상에 대한 개인적인 생각 : 무엇이 문제인지 알 수 없음 ㅠ_ㅜ
Apache, php, php-fpm, MariaDB 모두 Log 에 딱히 에러 찍히는 것은 없는 듯;;
CentOS 7 상에서 Apache, PHP-FPM, MariaDB 프로세스는 정상 가동중.
1. 일단 Apache > PHP 및 PHP-FPM 은 정상적으로 sock 방식 연결 되는 듯 보임. phpinfo 정상 표시 작동.
일반적인 정적 웹페이지 및 DB 미사용 php 작동에는 이상 없는 듯
(웹프로그래머가 아니라서 확실 한 것은 아님 ^^;;)
2. PHP 및 PHP-FPM > MariaDB 와의 sock 방식 연결 역시 제대로 되는 듯??? 보임???
이건 확답하기가 쉽지 않음 ㅠ_ㅜ mysql 및 mysql_innodb 방식 선택 후 XE 설치는 되는데.
mysqli 및 mysqli_innodb 선택 후 진행하면 진행이 안되고 (다음 페이지 안가고) 무반응 이니;;
콘솔 상에서 MariaDB 정상적으로 접속 및 작동함.
3. 중요!!
짧은 견해로 보아, sock 방식 연결을 사용해서 XE 를 설치 할 경우...
XE 설치 할 때 일반적인 방식인 DB 호스트네임: 127.0.0.1 혹은 localhost / DB Port: 3306 가 아니라
문제 안생기도록 DB 호스트네임: localhost / DB Port: /var/lib/mysql/mysql.sock 이런 방식 혹은
DB 호스트네임: localhost:/var/lib/mysql/mysql.sock / DB Port: 3306 (Port 중요하지 않으나 기본값)
이런식으로 지정해 주어야 하는 것으로 알고 있습니다. 맞는지 모르겠네요??
xe\classes\db\DBMysql.class.php 및 DBMysqli.class.php 참고해 보았더니 둘 다 가능할 듯 보임??
DB Port: 미지정시 경고 메시지 나오고 진행 불가라 두번째 방식의 경우는 기본값 3306 그대로 냅둠.
아무튼 ^^;; 이렇게 진행하면 mysql 방식 진행되나 mysqli 방식은;; 선택은 가능하나 무반응...
4. 예상되는 상황과 질문 ㅠ_ㅜ
이것 저것 설정을 많이 변경해 보고, 권한도 최대한 777 완전 오픈해보고 해봐도 증상 동일 한듯 보임.
단순히 PHP 5.4 에서는 XE 가 호환성 문제로 비정상 작동되는 것인지??
아님 PHP 5.4 이상이라서 php-mysql(미설치) 대신 php-mysqlnd만 설치 했는데 이 부분이 문제 일까요?
아니면 제가 웹프로그래머가 아니라서 자세히는 모르겠는데.
xe\classes\db\DBMysql.class.php 및 DBMysqli.class.php 소스를 보면.
mysql 방식은 DB 호스트네임과 DB Port 를 ':' 방식으로 연결해 주어서 sock 방식 접속이 가능한데.
mysql 방식은 mysqli_connect() 부분에 보면 ':' 연결하지 않고 호출 시 각각 변수로 넘겨 주어서,
sock 방식 연결이 불가능한 걸까요??
아니면 제가, 하나의 웹서버에 모두 설치되어 있고 sock 방식을 사용해서 3306 포트를 방화벽에서 오픈하지 않았는데 그게 문제 일까요??
아~ mysqlnd 관련 모듈은 아래와 같은 것들이 정상 로드 된 것 같습니다.
mysqlnd_mysqli.so
mysqlnd_mysql.so
mysqlnd.so
pdo_mysqlnd.so
php - m | grep mysql
mysql
mysqli
mysqlnd
뭐가 문제 인지 모르겠네요 ㅠ_ㅜ
첨부파일로 phpinfo 파일 첨부하였습니다 ㅠ_ㅜ
내부에서 테스트용으로 쓰는 서버라서 도메인은 실제 도메인이 아닌 변경 하였습니다.
고수님들의 답변을 간절히 기다리고 있습니다.
- [2019/08/02] 포럼 Which One is Better Mysql or MariaDB? *2
- [2018/09/03] 묻고답하기 [보안] 이번에 XE4 오픈소스 게시판을 utf-8 버전으로 업그레이드 했는데... *2
- [2017/04/19] 묻고답하기 견적내기페이지 문의 *1
- [2016/12/20] 묻고답하기 XE mySQL에서 *1
- [2016/03/24] 묻고답하기 폴더안 txt 문서를 php explode 하여 mysql 에 넣는 과정이 안됩니다ㅠㅠ