서버 설정 · 3 min read · Oct 08, 2025

완벽한 서버 - CentOS 6.3 x86_64 (nginx, Dovecot, ISPConfig 3) - 페이지 4

11 Dovecot 설치

Dovecot은 다음과 같이 설치할 수 있습니다:

yum install dovecot dovecot-mysql

이제 시스템 시작 링크를 생성하고 Dovecot을 시작합니다:

chkconfig –levels 235 dovecot on
/etc/init.d/dovecot start

12 Postfix 설치

Postfix는 다음과 같이 설치할 수 있습니다:

yum install postfix

그런 다음 Sendmail을 끄고 Postfix를 시작합니다:

chkconfig –levels 235 sendmail off
chkconfig –levels 235 postfix on
/etc/init.d/sendmail stop
/etc/init.d/postfix restart

13 Getmail 설치

Getmail은 다음과 같이 설치할 수 있습니다:

yum install getmail

14 Amavisd-new, SpamAssassin 및 ClamAV 설치

amavisd-new, spamassassin 및 clamav를 설치하려면 다음 명령을 실행합니다:

yum install amavisd-new spamassassin clamav clamd unzip bzip2 unrar perl-DBD-mysql

그런 다음 freshclam, amavisd 및 clamd.amavisd를 시작합니다:

sa-update
chkconfig –levels 235 amavisd on
chkconfig –del clamd
chkconfig –levels 235 clamd.amavisd on
/usr/bin/freshclam
/etc/init.d/amavisd start
/etc/init.d/clamd.amavisd start

15 Nginx, PHP5 (PHP-FPM) 및 Fcgiwrap 설치

Nginx는 CentOS 6.3 (EPEL에서)용 패키지로 제공되며 다음과 같이 설치할 수 있습니다:

yum install nginx

시스템에 Apache2가 이미 설치되어 있다면 지금 중지하십시오…

/etc/init.d/httpd stop

… 그리고 Apache의 시스템 시작 링크를 제거합니다:

chkconfig --del httpd

그런 다음 nginx의 시스템 시작 링크를 생성하고 시작합니다:

chkconfig –levels 235 nginx on
/etc/init.d/nginx start

(만약 Apache2와 nginx가 모두 설치되어 있다면, ISPConfig 3 설치 프로그램이 어떤 것을 사용할 것인지 물어볼 것입니다 - 이 경우 nginx라고 대답하십시오. 이 둘 중 하나만 설치되어 있다면, ISPConfig가 필요한 구성을 자동으로 수행합니다.)

PHP5를 nginx에서 PHP-FPM을 통해 작동하게 만들 수 있습니다 (PHP-FPM (FastCGI Process Manager)은 모든 크기의 사이트, 특히 더 바쁜 사이트에 유용한 추가 기능이 있는 대체 PHP FastCGI 구현입니다). php-fpm을 php-cli 및 MySQL을 PHP 스크립트에서 사용하려는 경우 필요한 php-mysql과 같은 일부 PHP5 모듈과 함께 설치할 수 있습니다:

yum install php-fpm php-cli php-mysql php-gd php-imap php-ldap php-odbc php-pear php-xml php-xmlrpc php-pecl-apc php-magickwand php-magpierss php-mbstring php-mcrypt php-mssql php-shout php-snmp php-soap php-tidy

다음으로 /etc/php.ini를 엽니다…

vi /etc/php.ini

… 그리고 오류 보고를 변경합니다 (더 이상 공지가 표시되지 않도록):

| [...] ;error_reporting = E_ALL & ~E_DEPRECATED error_reporting = E_ALL & ~E_NOTICE [...] |

또한 cgi.fix_pathinfo=0으로 설정합니다:

vi /etc/php.ini

| [...] ; cgi.fix_pathinfo는 CGI에 대한 *실제* PATH_INFO/PATH_TRANSLATED 지원을 제공합니다. PHP의 ; 이전 동작은 PATH_TRANSLATED를 SCRIPT_FILENAME으로 설정하고 PATH_INFO가 무엇인지 이해하지 못했습니다. ; PATH_INFO에 대한 자세한 내용은 cgi 사양을 참조하십시오. 이를 1로 설정하면 PHP CGI가 사양에 맞게 경로를 수정합니다. 0으로 설정하면 PHP가 이전과 같이 동작합니다. 기본값은 1입니다. 스크립트를 수정하여 ; PATH_TRANSLATED가 아닌 SCRIPT_FILENAME을 사용해야 합니다. ; http://www.php.net/manual/en/ini.core.php#ini.cgi.fix-pathinfo cgi.fix_pathinfo=0 [...] |

(이 작업을 수행해야 하는 이유는 http://wiki.nginx.org/Pitfalls를 읽어보십시오.)

또한 PHP 스크립트를 브라우저에서 호출할 때 /var/log/php-fpm/www-error.log에서 다음과 같은 오류를 피하기 위해:

[08-Aug-2011 18:07:08] PHP Warning: phpinfo(): 시스템의 시간대 설정에 의존하는 것은 안전하지 않습니다. date.timezone 설정 또는 date_default_timezone_set() 함수를 사용해야 합니다. 이러한 방법 중 하나를 사용했지만 여전히 이 경고가 표시된다면, 시간대 식별자를 잘못 입력했을 가능성이 높습니다. /usr/share/nginx/html/info.php의 2번째 줄에서 'CEST/2.0/DST'에 대해 'Europe/Berlin'을 선택했습니다.

… /etc/php.ini에서 date.timezone을 설정해야 합니다:

| [...] [Date] ; 날짜 함수에서 사용하는 기본 시간대를 정의합니다. ; http://www.php.net/manual/en/datetime.configuration.php#ini.date.timezone date.timezone = "Europe/Berlin" [...] |

시스템에 대한 올바른 시간대를 찾으려면 다음을 실행하십시오:

cat /etc/sysconfig/clock

[root@server1 tmp]# cat /etc/sysconfig/clock
ZONE=”Europe/Berlin”
[root@server1 tmp]#

다음으로 php-fpm의 시스템 시작 링크를 생성하고 시작합니다:

chkconfig –levels 235 php-fpm on
/etc/init.d/php-fpm start

PHP-FPM은 포트 9000에서 FastCGI 서버를 실행하는 데몬 프로세스입니다 (init 스크립트는 /etc/init.d/php-fpm입니다).

nginx에서 CGI 지원을 받으려면 Fcgiwrap을 설치합니다.

Fcgiwrap은 복잡한 CGI 스크립트에도 작동해야 하는 CGI 래퍼이며, 각 vhost가 자신의 cgi-bin 디렉토리를 사용할 수 있도록 해주기 때문에 공유 호스팅 환경에서 사용할 수 있습니다.

CentOS 6.3에 대한 fcgiwrap 패키지가 없으므로 직접 빌드해야 합니다. 먼저 몇 가지 필수 패키지를 설치합니다:

yum install fcgi-devel

이제 다음과 같이 fcgiwrap을 빌드할 수 있습니다:

cd /usr/local/src/
git clone git://github.com/gnosek/fcgiwrap.git
cd fcgiwrap
autoreconf -i
./configure
make
make install

이렇게 하면 fcgiwrap이 /usr/local/sbin/fcgiwrap에 설치됩니다.

다음으로 fcgiwrap을 데몬으로 실행할 수 있도록 해주는 spawn-fcgi 패키지를 설치합니다:

yum install spawn-fcgi

/etc/sysconfig/spawn-fcgi를 엽니다…

vi /etc/sysconfig/spawn-fcgi

… 그리고 파일을 다음과 같이 수정합니다:

| # "spawn-fcgi" 서비스가 작동하기 전에 몇 가지 작업 옵션을 설정해야 합니다. # SOCKET이 파일을 가리키면, 이 파일은 init 스크립트에 의해 정리됩니다. # # spawn-fcgi(1)를 참조하여 모든 가능한 옵션을 확인하십시오. # # 예: #SOCKET=/var/run/php-fcgi.sock #OPTIONS="-u apache -g apache -s $SOCKET -S -M 0600 -C 32 -F 1 -P /var/run/spawn-fcgi.pid -- /usr/bin/php-cgi" FCGI_SOCKET=/var/run/fcgiwrap.socket FCGI_PROGRAM=/usr/local/sbin/fcgiwrap FCGI_USER=apache FCGI_GROUP=apache FCGI_EXTRA_OPTIONS="-M 0770" OPTIONS="-u $FCGI_USER -g $FCGI_GROUP -s $FCGI_SOCKET -S $FCGI_EXTRA_OPTIONS -F 1 -P /var/run/spawn-fcgi.pid -- $FCGI_PROGRAM" |

이제 사용자 nginx를 그룹 apache에 추가합니다:

usermod -a -G apache nginx

spawn-fcgi의 시스템 시작 링크를 생성합니다…

chkconfig --levels 235 spawn-fcgi on

… 그리고 다음과 같이 시작합니다:

/etc/init.d/spawn-fcgi start

이제 /var/run/fcgiwrap.socket에서 fcgiwrap 소켓을 찾을 수 있으며, 이는 사용자 및 그룹 apache에 의해 소유됩니다 (일부 스크립트, 예: Mailman은 사용자/그룹 apache로 실행되기를 기대하므로, nginx 사용자/그룹으로 spawn-fcgi를 실행하지 않고 nginx를 apache 그룹에 추가합니다).

Share: X/Twitter LinkedIn

새 게시물을 받은 편지함에서 받기

스팸은 없습니다. 언제든지 구독 해지 가능합니다.