웹메일 UI 단은 PHP를 사용하고 있는데요 기존에 PHP 버전이 너무 낮어서 최신 UI를 적용할 수 없었습니다.

이에 따라 해결 방법을 모색 중 php-fpm을 통해서 최신 UI를 적용할 수 있었습니다.

먼저 결과 화면입니다. 좌측이 최신 UI를 적용한 사진입니다.

 
 
 
 
 
 
 
 
 
 

기존에는 PC 외에는 사용이 힘들었으나 새로운 UI 적용으로 모바일, 태블릿 등 과 같이 반응형으로 동작합니다.

기존 apache2.2 php 5.3 mysql 5.1

신규 apache2.4 php 5.5 mysql 5.8

로 변경하였으며 테스트로 php 버전을 많이 올리진 않았지만 php-fpm으로 설정한다면 향후 버전을 다르게 적용하여도 유연하게 대처 가능할 것으로 보입니다.

모든 테스트는 도커에서 진행이 되었으며 도커허브에 이미지를 푸시 완료하였습니다.

1.0에는 신규 버전에 맞게 웹메일을 구성을 했고

1.1에는 기존 버전으로 설정해 예전 프로젝트가 돌아갈 수 있게끔 설정하였습니다.

https://mysql.tistory.com/25

 

이미지를 올리고 나서 해야 할 설정은 이전 포스팅에 남겼고 추가적으로 php-fpm 프로세스가 정상적으로 떠있는지 확인 후 필요에 따라 재시작을 할 수 있습니다. 또한 9000번 9001번 포트포워딩이 필요합니다.

netstat -nltp | grep php

systemctl stop php53-fpm
systemctl stop php55-fpm
systemctl start php53-fpm
systemctl start php55-fpm

docker run --privileged -d -p 80:80 -p 143:143 -p 25:25 -p 9000:9000 -p 9001:9001 -v /home/centos/files:/usr/local/files --name test centos:7 /sbin/init
docker exec -t test /bin/bash
 

php는 /usr/local/밑 php53 php55 디렉터리에 있습니다.

cd /usr/local/

/usr/local/apache/conf/httpd.conf

LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so
LoadModule proxy_module modules/mod_proxy.so
LoadModule rewrite_module modules/mod_rewrite.so
#LoadModule php5_module modules/libphp5.so
LoadModule cgi_module modules/mod_cgi.so

<IfModule dir_module>
DirectoryIndex index.html index.cgi index.php
</IfModule>

/usr/local/apache/conf/extra/httpd-vhosts.conf - 웹메일

<VirtualHost *:80>
    DocumentRoot "경로"
    ServerName 주소
    <IfModule proxy_fcgi_module>
        ProxyPassMatch ^/(.*\.php(/.*)?)$ fcgi://127.0.0.1:9000/경로/$1
    </IfModule>
    <Directory /경로>
        Options Indexes FollowSymLinks
        AllowOverride All
        Require all granted
    </Directory>

    ErrorLog "logs/주소-error_log"
    CustomLog "logs/주소-access_log" common
</VirtualHost>

/usr/local/apache/conf/extra/httpd-vhosts.conf - 프로젝트

<VirtualHost *:80>
    DocumentRoot "경로"
    ServerName 주소
    <IfModule proxy_fcgi_module>
        ProxyPassMatch ^/(.*\.php(/.*)?)$ fcgi://127.0.0.1:9001/경로/$1
    </IfModule>
    <Directory /경로>
        RewriteEngine On
        RewriteBase /
        RewriteCond %{REQUEST_URI} !^(/index\.php|/images|/js|/css|/robots\.txt|/favicon\.ico)
        RewriteCond %{REQUEST_FILENAME} !-f
        RewriteCond %{REQUEST_FILENAME} !-d
        RewriteRule ^(.*)$ index.php/$1 [L]

        Options Indexes FollowSymLinks
        AllowOverride None
        Require all granted
    </Directory>

    ErrorLog "logs/주소-error_log"
    CustomLog "logs/주소-access_log" common
</VirtualHost>

/home2/webmail/config/config.inc.php

새로운 UI를 적용하니 smtp 디폴트 포트가 587로 잡혀있었습니다. 저는 25번 포트를 사용하였습니다.

// ----------------------------------
// SMTP
// ----------------------------------
$config['smtp_server'] = 'mail.도메인주소';

// SMTP port. Use 25 for cleartext, 465 for Implicit TLS, or 587 for STARTTLS (default)
$config['smtp_port'] = 25;

// provide an URL where a user can get support for this Roundcube installation
// PLEASE DO NOT LINK TO THE ROUNDCUBE.NET WEBSITE HERE!
$config['support_url'] = '';

5.5 configure

./configure --prefix=/usr/local/php55 --enable-fpm --with-fpm-user=nobody --with-fpm-group=nobody --with-config-file-path=/usr/local/php55/etc --enable-sigchild --with-libxml-dir --with-openssl --with-zlib --with-mysqli --with-zlib-dir--with-bz2 --enable-calendar --with-curl --enable-dba --with-gdbm --enable-exif --enable-ftp --with-gd --with-jpeg-dir --with-png-dir --with-freetype-dir --enable-gd-native-ttf --with-gettext --with-imap=/usr/local/imap-2007f --with-imap-ssl --with-kerberos --enable-mbstring --with-mhash --with-mcrypt --enable-sockets --enable-sysvmsg --enable-sysvsem --enable-sysvshm --enable-wddx --enable-opcache --enable-zip --with-pdo-mysql --with-snmp --enable-intl --with-apxs2=/usr/local/apache/bin/apxs  --with-mysql=/usr/local/mysql

5.3 configure

./configure --prefix=/usr/local/php53 --with-config-file-path=/usr/local/php53/etc --with-mysql=/usr/local/mysql --with-mysqli --with-libxml-dir --with-pcre-dir --with-mcrypt=/usr/lib64 --with-gd --with-jpeg-dir --with-png-dir --with-gettext --with-freetype-dir --with-bz2 --with-iconv-dir --with-zlib --with-zlib-dir --with-curl --enable-fpm --with-fpm-user=nobody --with-fpm-group=nobody --with-icu-dir=/usr --enable-intl --enable-sockets --enable-gd-native-ttf --enable-gd-jis-conv --enable-ftp --enable-zip --enable-calendar --enable-mbstring --enable-bcmath --enable-openssl --enable-exif --enable-fd-setsize=4096 --disable-short-tags --disable-ipv6

5.3 버전은 -enable-fpm과 --with-apxs2=/usr/local/apache/bin/apxs를 동시에 환경설정을 주었을 때 컴파일 에러가 발생되어 후자를 제거하였습니다.

php55 필요 라이브러리

yum -y install bzip2-devel gdbm gdbm-devel libc-client libc-client-devel net-snmp-devel pam-devel

cd/usr/local/src
wget https://www.mirrorservice.org/sites/ftp.cac.washington.edu/imap/imap-2007f.tar.gz
tar xvzf imap-2007f.tar.gz
cd imap-2007f
make lr5 PASSWDTYPE=std SSLTYPE=unix.nopwd EXTRACFLAGS=-fPIC IP=4
mkdir /usr/local/imap-2007f/
mkdir /usr/local/imap-2007f/include/
mkdir /usr/local/imap-2007f/lib/
cp c-client/*.h /usr/local/imap-2007f/include/
cp c-client/*.c /usr/local/imap-2007f/lib/
cp c-client/c-client.a /usr/local/imap-2007f/lib/libc-client.a

php 설치 완료 후 fpm 설정

php55는 php 5.5 디렉터리로 컴파일 설치 때 prefix 한 위치입니다.

php 5.3 일 때는 php53으로 변경해서 작성하면 됩니다.

cp -arp php.ini-development /usr/local/php55/etc/php.ini
cp -arp /usr/local/php55/etc/php-fpm.conf.default /usr/local/php55/etc/php-fpm.conf
cp -arp sapi/fpm/init.d.php-fpm /etc/init.d/php55-fpm
chmod 700 /etc/init.d/php55-fpm
chkconfig --add php55-fpm
chkconfig php55-fpm on

번외로 아파치 모듈 추가 방법

기존 아파치 컴파일 환경설정 값으로 ./configure --enable-so 옵션이 있었어야 모듈을 동적으로 추가 가능하다.

/usr/local/http/bin/apxs -i -a -c /아파치컴파일위치/modules/mapper혹은proxy/mod_xxxx.c
댓글
최근에 올라온 글
최근에 달린 댓글
링크
Total
Today
Yesterday