묻고답하기

# 설치 시도 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 파일 첨부하였습니다 ㅠ_ㅜ

내부에서 테스트용으로 쓰는 서버라서 도메인은 실제 도메인이 아닌 변경 하였습니다.

고수님들의 답변을 간절히 기다리고 있습니다.

태그 연관 글
  1. [2019/08/02] 포럼 Which One is Better Mysql or MariaDB? by Adi *1
  2. [2018/09/03] 묻고답하기 [보안] 이번에 XE4 오픈소스 게시판을 utf-8 버전으로 업그레이드 했는데... by Hi_Roy *2
  3. [2017/04/19] 묻고답하기 견적내기페이지 문의 by 일반 *1
  4. [2016/12/20] 묻고답하기 XE mySQL에서 by James 009 *1