많은 분들의 조언을 구합니다: CentOS 7 에서 구버전 MySQL, Apache, PHP 컴파일 설치하고 난 후 httpd 가동시 에러

bnsonear의 이미지

안녕하세요, 클릭해 들어와 주셔서 감사합니다.

개발일과는 전혀 연이 없었는데,
어쩌다가 LAMP 웹서버를 셋팅해야하는 일을 맡게되었습니다.

매우 구버전의 AMP기반으로 작성된 홈페이지 소스가 돌아갈 수 있게
LAMP 웹서버를 구축하는 것이 맡겨진 임무입니다.

리눅스에 대한 체계적인 지식은 전혀 없으며,
DOS, 윈도우, batch script 만지던 경험에
에러메시지별 구글링 사례를 더한 사상누각 수준의 지식만 리눅스에 대해 가지고 있습니다.

현 상태는, 울프데일 + G41에 DVD로 설치된 CentOS 7.8를 바탕으로

MySQL 5.1.37, APR 1.5.2, APR-UTIL 1.5.4, PCRE 8.39, HTTPD 2.4.39, PHP 5.2.17을
차례대로 소스 컴파일 설치하였습니다.
PHP 설치 직전에는
mysql-connector-c-devel-6.1.11-1.el7.x86_64.rpm과
mysql-connector-c-shared-6.1.11-1.el7.x86_64.rpm 도 설치하였습니다.

구버전을 억지로 설치하다보니, configuration 단계에서도 에러가 많이 발생하여
MySQL에서는 GCC 버전 관련 오류로 인한 abi_check를 제거하는 패치를 소스에 적용하기도 했고,
PHP에서는 https://www.centos.org/forums/viewtopic.php?t=53046의 조언을 따라 libxml2 관련된 소스를 변경하는 패치를 적용하기도 했으며, 무엇보다도 configure: error: Cannot find libmysqlclient_r under/usr/local/mysql.을 해결하기 위해 https://blog.csdn.net/u010832551/article/details/79034749 의 조언을 따라

cd /usr/lib64 && ln -s libmysqlclient.so.18 libmysqlclient_r.so 라는 명령어로
없는 파일을 있는 것처럼 하여 make install 까지 마쳤습니다.

현재 상태는 /usr/local/apache/bin/apachectl restart 를 시도할 경우,

httpd: Syntax error on line 56 of /etc/httpd/conf/httpd.conf: Cannot load /usr/local/apache/modules/libphp5.so into server: /usr/local/apache/modules/libphp5.so: symbol zlibVersion, version libmysqlclient_18 not defined in file libmysqlclient.so.18 with link time reference

라는 에러메시지를 보이는 상태입니다.

PHP의 configuration단계를 넘기기 위해
사용했던 so 파일이 문제를 일으켰다고 생각하고 있는데요,

1. 약 5개월전 사용한 설치과정 메모를 그대로 사용하였고, 그때는 CentOS 7.7에 MySQL을 5.1.72로 설치한 것 외에는 인지하는 큰 차이가 없었음에도 이런 메시지 없이 정상가동에 성공했었습니다. (정상가동이란: 홈페이지가 웹브라우저에서 보이기 시작, apache restart등도 잘 되었음)

그래서 make disclean이라는 명령어로 PHP, APACHE, MySQL 순서로 지우고 MySQL부터 5.1.72로 덮어쓴다는 생각으로 PHP까지 다시 configuration과 make install까지 마쳤지만,
위 에러메시지는 계속 나타납니다.

2. 현재의 에러메시지와 가장 비슷한 검색결과는 https://my.oschina.net/machogyb/blog/2877534 의 글인데, 그곳의 조언을 사용해서 yum install mysql-libs -y
하면 Package 1:mariadb-libs-5.5.64-1.el7.x86_64 already installed and latest version
Nothing to do
라는 결과만 얻습니다. mariaDB는 MySQL이 Oracle에 먹히고 한참 후에 나온, 적어보 MySQL 5.1.X보다는 훨씬 최근의 버전인 Fork로 알고있는데,
원치는 않았지만 이와같이 최근 버전이 CentOS 7.8 clean install 때부터 설치되어 있던지라 패키지에 손을 못대지 못했습니다.

3. 현 상태에서 어떻게 하면 위 httpd.conf Syntax 에러를 해결할 수 있을 까요? 혹시나 싶어 설치 과정에 사용했던 명령어들을 기재해봅니다.

yum -y install ncurses-devel
 
yum --setopt=group_package_types=mandatory,default,optional group install "Development Tools"
 
tar xvfz mysql-5.1.72.tar.gz && cd /usr/local/src/mysql-5.1.72
 
./configure --prefix=/usr/local/mysql   --localstatedir=/usr/local/mysql/data  --enable-shared --with-extra-charsets=all  
 
make && make install

tar xvfz apr-1.5.2.tar.gz && cd /usr/local/src/apr-1.5.2
 
./configure --prefix=/usr/local/apr 
 
make && make install

tar xvfz apr-util-1.5.4.tar.gz && cd /usr/local/src/apr-util-1.5.4
 
./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr --with-crypto
 
make && make install

tar xvfz pcre-8.39.tar.gz && cd /usr/local/src/pcre-8.39
 
yum -y install zlib-devel
 
yum -y install bzip2-devel-1.0.6-13.el7.x86_64 
 
yum -y install readline-devel-6.2-11.el7.x86_64
 
./configure --prefix=/usr/local/pcre --docdir=/usr/share/doc/pcre-8.39 --enable-unicode-properties --enable-pcre16 --enable-pcre32 --enable-pcregrep-libz  --enable-pcregrep-libbz2  --enable-pcretest-libreadline  --disable-static 
 
make && make install

tar xvfz httpd-2.4.39.tar.gz && cd /usr/local/src/httpd-2.4.39
 
./configure  --prefix=/usr/local/apache  --sysconfdir=/etc/httpd/conf --enable-rule=SHARED_CORE --enable-so --enable-rewrite --enable-vhost-alias --enable-ssl --enable-proxy --enable-shared=max --enable-modules=shared --enable-mods-shared=all --enable-mpms-shared=all --with-apr=/usr/local/apr --with-charset=utf-8 --with-apr-util=/usr/local/apr-util --with-extra-charsets=all

tar xvfz php-5.2.17.tar.gz && cd /usr/local/src/php-5.2.17
 
yum -y install libxml2-devel
 
cd /usr/lib64 && ln -s libjpeg.so.62.1.0 libjpeg.so 
 
yum -y install curl-devel && yum -y install gdbm-devel && yum -y install libjpeg-devel && yum -y install libpng* && yum -y install freetype-devel
 
cd /usr/local/src && rpm -i -v -h mysql-connector-c-devel-6.1.11-1.el7.x86_64.rpm mysql-connector-c-shared-6.1.11-1.el7.x86_64.rpm
 
cd /usr/lib64 && ln -s libmysqlclient.so.18 libmysqlclient_r.so 
 
cd /usr/local/src/php-5.2.17 && patch -p0 <  libxml29_compat.patch
 
./configure --prefix=/usr/local/php --with-libdir=lib64 --with-apxs2=/usr/local/apache/bin/apxs --with-mysql --with-libxml-dir --with-config-file-path=/usr/local/apache/conf --with-gd --with-png-dir --with-zlib-dir --with-jpeg-dir --with-kerberos --with-freetype-dir --enable-mbstring --enable-sockets --disable-debug --enable-gd-native-ttf --enable-dba=shared --with-iconv-dir --with-curl 
 
make && make install

긴 글 읽어주셔서 감사합니다.
기본지식이 없다보니 어떠한 부문을 보여드려야 조언을 받을 수 있는지도 몰라 설치 명령어를 다 적어보았니다.

많은 지적 부탁드립니다. 감사합니다.

세벌의 이미지

MySQL 라이선스가 어려운데... MariaDB는 어떤가요? https://mariadb.org/
기존 응용프로그램 소스는 안 건드리고 낮은 버전 php 설치해서 돌리려는 생각 자체인가요?
별로 바람직해 보이지 않네요.

최신 버전 아파치, 최신 버전 mariaDB, 최신 버전 php 를 설치한 다음,
거기서 프로그램이 제대로 돌아가도록 응용프로그램 소스를 건드리는 게 낫지 않을까요?

bnsonear의 이미지

바로 보셨습니다,
소스를 건드릴 수 있는 상황이 아니라서 (비용)
소스 제작환경에 억지로 맞추어내야 하는 상황입니다.

어렵게 만들어 버린 상황입니다만,
현 상태에서 에러만 어떻게 통과할 수 있는 꼼수가 있을까요?

조언 부탁드립니다.

김정균의 이미지

apache 만 뺀다면 굳이 컴파일 하지 말고 CentOS 에 있는 것을 사용해도 될 것 같은데요.

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.