서버 설치 · 9 min read · Jan 25, 2026
완벽한 서버 - Debian 8.4 Jessie (Apache2, BIND, Dovecot, ISPConfig 3.1) - 페이지 2
10 Apache2, PHP, FCGI, suExec, Pear, phpMyAdmin 및 mcrypt 설치
Apache2, PHP5, phpMyAdmin, FCGI, suExec, Pear 및 mcrypt는 다음과 같이 설치할 수 있습니다:
apt-get install apache2 apache2.2-common apache2-doc apache2-mpm-prefork apache2-utils libexpat1 ssl-cert libapache2-mod-php5 php5 php5-common php5-gd php5-mysql php5-imap phpmyadmin php5-cli php5-cgi libapache2-mod-fcgid apache2-suexec php-pear php-auth php5-mcrypt mcrypt php5-imagick imagemagick libruby libapache2-mod-python php5-curl php5-intl php5-memcache php5-memcached php5-pspell php5-recode php5-sqlite php5-tidy php5-xmlrpc php5-xsl memcached libapache2-mod-passenger다음 질문이 표시됩니다:
Web server to reconfigure automatically: <- apache2
Configure database for phpmyadmin with dbconfig-common? <- yes
Enter the password of the administrative user? <- yourrootmysqlpassword
Enter the phpmyadmin application password? <- Just press enter그런 다음 다음 명령을 실행하여 Apache 모듈 suexec, rewrite, ssl, actions 및 include를 활성화합니다(웹DAV를 사용하려면 dav, dav_fs 및 auth_digest도 포함):
a2enmod suexec rewrite ssl actions include dav_fs dav auth_digest cgi headers서버가 HTTPOXY 취약점을 통해 공격받지 않도록 하기 위해, /etc/apache2/conf-available/httpoxy.conf 구성 파일을 추가하여 HTTP_PROXY 헤더를 전역적으로 비활성화합니다.
sudo nano /etc/apache2/conf-available/httpoxy.conf다음 내용을 파일에 붙여넣습니다:
RequestHeader unset Proxy early
그리고 다음 명령을 실행하여 모듈을 활성화합니다:
a2enconf httpoxy
service apache2 restart10.1 HHVM (HipHop Virtual Machine) 설치
이 단계에서는 공식 Debian 저장소에서 HHVM을 설치합니다. HHVM 저장소를 추가하고 키를 가져옵니다.
sudo apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 0x5a16e7281be7a449
echo deb http://dl.hhvm.com/debian jessie main | sudo tee /etc/apt/sources.list.d/hhvm.list패키지 목록을 업데이트합니다:
sudo apt-get update그리고 HHVM을 설치합니다:
sudo apt-get install hhvm10.2 SuPHP 설치 (선택 사항, 권장하지 않음)
업데이트된 참고 사항: SuPHP는 더 이상 설치하지 않아야 하며, 11단계로 진행하십시오.
Debian Jessie에서는 SuPHP를 사용할 수 없습니다. ISPConfig에서는 php-fpm 및 php-fcgi와 같은 더 나은 PHP 모드를 사용할 수 있으므로 suphp 모드를 더 이상 사용하지 않아야 합니다. 레거시 이유로 suphp가 정말 필요하다면, 이 장의 단계를 따라 수동으로 컴파일하십시오. 그러나 설치를 권장하지 않습니다.
apt-get install apache2-dev build-essential autoconf automake libtool flex bison debhelper binutilscd /usr/local/src
wget http://suphp.org/download/suphp-0.7.2.tar.gz
tar zxvf suphp-0.7.2.tar.gz
wget -O suphp.patch https://lists.marsching.com/pipermail/suphp/attachments/20130520/74f3ac02/attachment.patch
patch -Np1 -d suphp-0.7.2 < suphp.patch
cd suphp-0.7.2
autoreconf -if
./configure --prefix=/usr/ --sysconfdir=/etc/suphp/ --with-apr=/usr/bin/apr-1-config --with-apache-user=www-data --with-setid-mode=owner --with-logfile=/var/log/suphp/suphp.log
make
make install suphp 구성 디렉토리 및 suphp.conf 파일을 생성합니다:
mkdir /var/log/suphp
mkdir /etc/suphp
nano /etc/suphp/suphp.conf[global]
;Path to logfile
logfile=/var/log/suphp/suphp.log
;Loglevel
loglevel=info
;User Apache is running as
webserver_user=www-data
;Path all scripts have to be in
docroot=/var/www
;Path to chroot() to before executing script
;chroot=/mychroot
; Security options
allow_file_group_writeable=false
allow_file_others_writeable=false
allow_directory_group_writeable=false
allow_directory_others_writeable=false
;Check wheter script is within DOCUMENT_ROOT
check_vhost_docroot=true
;Send minor error messages to browser
errors_to_browser=false
;PATH environment variable
env_path=/bin:/usr/bin
;Umask to set, specify in octal notation
umask=0022
; Minimum UID
min_uid=100
; Minimum GID
min_gid=100
[handlers]
;Handler for php-scripts
x-httpd-suphp="php:/usr/bin/php-cgi"
;Handler for CGI-scripts
x-suphp-cgi=execute:!self
umask=0022그런 다음 Apache에서 suphp 모듈을 로드하는 구성 파일을 추가합니다:
echo "LoadModule suphp_module /usr/lib/apache2/modules/mod_suphp.so" > /etc/apache2/mods-available/suphp.load그리고 /etc/apache2/mods-available/suphp.conf를 엽니다…
nano /etc/apache2/mods-available/suphp.conf… 다음 내용을 추가합니다:
AddType application/x-httpd-suphp .php .php3 .php4 .php5 .phtml
suPHP_AddHandler application/x-httpd-suphp
suPHP_Engine on
# By default, disable suPHP for debian packaged web applications as files
# are owned by root and cannot be executed by suPHP because of min_uid.
suPHP_Engine off
# # Use a specific php config file (a dir which contains a php.ini file)
# suPHP_ConfigPath /etc/php5/cgi/suphp/
# # Tells mod_suphp NOT to handle requests with the type .
# suPHP_RemoveHandler
Apache에서 suphp 모듈을 활성화합니다:
a2enmod suphp그런 다음 Apache를 재시작합니다:
service apache2 restart11 Let’s Encrypt 설치
ISPConfig 3.1은 무료 SSL 인증 기관인 Let’s Encrypt를 지원합니다. Let’s Encrypt 기능을 사용하면 ISPConfig 내에서 웹사이트에 대한 무료 SSL 인증서를 생성할 수 있습니다.
이제 Let’s Encrypt 지원을 추가하겠습니다.
mkdir /opt/certbot
cd /opt/certbot
wget https://dl.eff.org/certbot-auto
chmod a+x ./certbot-auto이제 certboot-auto 명령을 실행하여 소프트웨어와 그 종속성을 다운로드하고 설치합니다.
./certbot-auto명령이 “구성 파일에서 이름을 찾을 수 없습니다”라고 알려주고 계속할 것인지 묻습니다. 여기서 “아니오”를 선택하십시오. 인증서는 ISPConfig에 의해 생성됩니다.

12 PHP-FPM 및 XCache 설치
XCache는 PHP 중간 코드를 캐싱하고 최적화하기 위한 무료 오픈 PHP opcode 캐셔입니다. eAccelerator 및 APC와 같은 다른 PHP opcode 캐셔와 유사합니다. PHP 페이지 속도를 높이기 위해 이러한 것 중 하나를 설치하는 것이 강력히 권장됩니다.
12.1 PHP-FPM (권장)
ISPConfig 3.0.5부터 Apache와 함께 사용할 수 있는 추가 PHP 모드가 있습니다: PHP-FPM.
Apache와 함께 PHP-FPM을 사용하려면 mod_fastcgi Apache 모듈이 필요합니다(이것을 mod_fcgid와 혼동하지 마십시오 - 매우 유사하지만 PHP-FPM을 mod_fcgid와 함께 사용할 수 없습니다). PHP-FPM 및 mod_fastcgi는 다음과 같이 설치할 수 있습니다:
apt-get install libapache2-mod-fastcgi php5-fpm모듈을 활성화하고 Apache를 재시작하는 것을 잊지 마십시오:
a2enmod actions fastcgi alias
service apache2 restart12.2 XCache 설치
XCache는 다음과 같이 설치할 수 있습니다:
apt-get install php5-xcache이제 Apache를 재시작합니다:
service apache2 restart13 Mailman 설치
ISPConfig를 사용하면 Mailman 메일링 리스트를 관리(생성/수정/삭제)할 수 있습니다. 이 기능을 사용하려면 다음과 같이 Mailman을 설치하십시오:
apt-get install mailman최소한 하나의 언어를 선택하십시오. 예:
Languages to support: <-- en (English)
Missing site list <-- OkMailman을 시작하기 전에 mailman이라는 첫 번째 메일링 리스트를 생성해야 합니다:
newlist mailmanroot@server1:~# newlist mailman
Enter the email of the person running the list: <-- admin email address, e.g. [email protected]
Initial mailman password: <-- admin password for the mailman list
To finish creating your mailing list, you must edit your /etc/aliases (or
equivalent) file by adding the following lines, and possibly running the
`newaliases' program:
## mailman mailing list
mailman: "|/var/lib/mailman/mail/mailman post mailman"
mailman-admin: "|/var/lib/mailman/mail/mailman admin mailman"
mailman-bounces: "|/var/lib/mailman/mail/mailman bounces mailman"
mailman-confirm: "|/var/lib/mailman/mail/mailman confirm mailman"
mailman-join: "|/var/lib/mailman/mail/mailman join mailman"
mailman-leave: "|/var/lib/mailman/mail/mailman leave mailman"
mailman-owner: "|/var/lib/mailman/mail/mailman owner mailman"
mailman-request: "|/var/lib/mailman/mail/mailman request mailman"
mailman-subscribe: "|/var/lib/mailman/mail/mailman subscribe mailman"
mailman-unsubscribe: "|/var/lib/mailman/mail/mailman unsubscribe mailman"
Hit enter to notify mailman owner... <-- ENTER
root@server1:~#그런 다음 /etc/aliases를 엽니다…
nano /etc/aliases… 다음 줄을 추가합니다:
[...]
## mailman mailing list
mailman: "|/var/lib/mailman/mail/mailman post mailman"
mailman-admin: "|/var/lib/mailman/mail/mailman admin mailman"
mailman-bounces: "|/var/lib/mailman/mail/mailman bounces mailman"
mailman-confirm: "|/var/lib/mailman/mail/mailman confirm mailman"
mailman-join: "|/var/lib/mailman/mail/mailman join mailman"
mailman-leave: "|/var/lib/mailman/mail/mailman leave mailman"
mailman-owner: "|/var/lib/mailman/mail/mailman owner mailman"
mailman-request: "|/var/lib/mailman/mail/mailman request mailman"
mailman-subscribe: "|/var/lib/mailman/mail/mailman subscribe mailman"
mailman-unsubscribe: "|/var/lib/mailman/mail/mailman unsubscribe mailman"실행:
newaliases그리고 Postfix를 재시작합니다:
service postfix restart마지막으로 Mailman Apache 구성을 활성화해야 합니다:
ln -s /etc/mailman/apache.conf /etc/apache2/conf-enabled/mailman.conf이것은 모든 Apache vhosts에 대해 /cgi-bin/mailman/이라는 별칭을 정의합니다. 즉, http://server1.example.com/cgi-bin/mailman/admin/에서 메일링 리스트의 Mailman 관리 인터페이스에 접근할 수 있으며, 메일링 리스트 사용자에 대한 웹 페이지는 http://server1.example.com/cgi-bin/mailman/listinfo/에서 찾을 수 있습니다.
http://server1.example.com/pipermail에서 메일링 리스트 아카이브를 찾을 수 있습니다.
그런 다음 Apache를 재시작합니다:
service apache2 restart그런 다음 Mailman 데몬을 시작합니다:
service mailman start14 PureFTPd 및 Quota 설치
PureFTPd 및 quota는 다음 명령으로 설치할 수 있습니다:
apt-get install pure-ftpd-common pure-ftpd-mysql quota quotatool파일 /etc/default/pure-ftpd-common을 편집합니다…
nano /etc/default/pure-ftpd-common… 시작 모드가 standalone으로 설정되어 있고 VIRTUALCHROOT=true로 설정되어 있는지 확인합니다:
[...]
STANDALONE_OR_INETD=standalone
[...]
VIRTUALCHROOT=true
[...] 이제 PureFTPd를 구성하여 FTP 및 TLS 세션을 허용합니다. FTP는 모든 비밀번호와 모든 데이터가 일반 텍스트로 전송되기 때문에 매우 안전하지 않은 프로토콜입니다. TLS를 사용하면 전체 통신을 암호화할 수 있어 FTP를 훨씬 더 안전하게 만들 수 있습니다.
FTP 및 TLS 세션을 허용하려면 다음을 실행합니다:
echo 1 > /etc/pure-ftpd/conf/TLSTLS를 사용하려면 SSL 인증서를 생성해야 합니다. 나는 /etc/ssl/private/에 생성하므로 먼저 해당 디렉토리를 생성합니다:
mkdir -p /etc/ssl/private/그런 다음 SSL 인증서를 다음과 같이 생성할 수 있습니다:
openssl req -x509 -nodes -days 7300 -newkey rsa:2048 -keyout /etc/ssl/private/pure-ftpd.pem -out /etc/ssl/private/pure-ftpd.pemCountry Name (2 letter code) [AU]: <-- Enter your Country Name (e.g., "DE").
State or Province Name (full name) [Some-State]: <-- Enter your State or Province Name.
Locality Name (eg, city) []: <-- Enter your City.
Organization Name (eg, company) [Internet Widgits Pty Ltd]: <-- Enter your Organization Name (e.g., the name of your company).
Organizational Unit Name (eg, section) []: <-- Enter your Organizational Unit Name (e.g. "IT Department").
Common Name (eg, YOUR name) []: <-- Enter the Fully Qualified Domain Name of the system (e.g., "server1.example.com").
Email Address []: <-- Enter your Email Address.SSL 인증서의 권한을 변경합니다:
chmod 600 /etc/ssl/private/pure-ftpd.pem그런 다음 PureFTPd를 재시작합니다:
service pure-ftpd-mysql restart/etc/fstab을 편집합니다. 내 것은 다음과 같습니다(나는 /에 마운트 지점이 있는 파티션에 usrjquota=quota.user,grpjquota=quota.group,jqfmt=vfsv0를 추가했습니다):
nano /etc/fstab# /etc/fstab: static file system information.
#
# Use 'blkid' to print the universally unique identifier for a
# device; this may be used with UUID= as a more robust way to name devices
# that works even if disks are added and removed. See fstab(5).
#
#
# / was on /dev/sda1 during installation
UUID=3dc3b58d-97e5-497b-8254-a913fdfc5408 / ext4 errors=remount-ro,usrjquota=quota.user,grpjquota=quota.group,jqfmt=vfsv0 0 1
# swap was on /dev/sda5 during installation
UUID=36bf486e-8f76-492d-89af-5a8eb3ce8a02 none swap sw 0 0
/dev/sr0 /media/cdrom0 udf,iso9660 user,noauto 0 0 쿼터를 활성화하려면 다음 명령을 실행합니다:
mount -o remount /quotacheck -avugm
quotaon -avug15 BIND DNS 서버 설치
BIND는 다음과 같이 설치할 수 있습니다:
apt-get install bind9 dnsutils서버가 가상 머신인 경우 DNSSEC 서명을 위한 더 높은 엔트로피를 얻기 위해 haveged 데몬을 설치하는 것이 강력히 권장됩니다. 비가상 서버에서도 haveged를 설치할 수 있으며, 해가 되지 않습니다.
apt-get install haveged이 주제에 대한 설명은 여기에서 찾을 수 있습니다.
16 Webalizer 및 AWStats 설치
Webalizer 및 AWStats는 다음과 같이 설치할 수 있습니다:
apt-get install webalizer awstats geoip-database libclass-dbi-mysql-perl libtimedate-perl그런 다음 /etc/cron.d/awstats를 엽니다…
nano /etc/cron.d/awstats… 그리고 해당 파일의 모든 내용을 주석 처리합니다:
#MAILTO=root
#*/10 * * * * www-data [ -x /usr/share/awstats/tools/update.sh ] && /usr/share/awstats/tools/update.sh
# Generate static reports:
#10 03 * * * www-data [ -x /usr/share/awstats/tools/buildstatic.sh ] && /usr/share/awstats/tools/buildstatic.sh17 Jailkit 설치
Jailkit은 SSH 사용자를 chroot하려는 경우에만 필요합니다. 다음과 같이 설치할 수 있습니다(중요: Jailkit은 ISPConfig 이전에 설치해야 하며, 이후에 설치할 수 없습니다!):
apt-get install build-essential autoconf automake libtool flex bison debhelper binutilscd /tmp
wget http://olivier.sessink.nl/jailkit/jailkit-2.19.tar.gz
tar xvfz jailkit-2.19.tar.gz
cd jailkit-2.19
./debian/rules binary이제 Jailkit.deb 패키지를 다음과 같이 설치할 수 있습니다:
cd ..
dpkg -i jailkit_2.19-1_*.deb
rm -rf jailkit-2.19*18 fail2ban 및 UFW 방화벽 설치
이것은 선택 사항이지만 권장됩니다. 왜냐하면 ISPConfig 모니터가 로그를 표시하려고 시도하기 때문입니다:
apt-get install fail2banPureFTPd 및 Dovecot을 모니터링하도록 fail2ban을 설정하려면 /etc/fail2ban/jail.local 파일을 생성합니다:
nano /etc/fail2ban/jail.local[pureftpd]
enabled = true
port = ftp
filter = pureftpd
logpath = /var/log/syslog
maxretry = 3
[dovecot-pop3imap]
enabled = true
filter = dovecot-pop3imap
action = iptables-multiport[name=dovecot-pop3imap, port="pop3,pop3s,imap,imaps", protocol=tcp]
logpath = /var/log/mail.log
maxretry = 5
[postfix-sasl]
enabled = true
port = smtp
filter = postfix-sasl
logpath = /var/log/mail.log
maxretry = 3그런 다음 다음 두 필터 파일을 생성합니다:
nano /etc/fail2ban/filter.d/pureftpd.conf[Definition]
failregex = .*pure-ftpd: \(.*@\) \[WARNING\] Authentication failed for user.*
ignoreregex = nano /etc/fail2ban/filter.d/dovecot-pop3imap.conf[Definition]
failregex = (?: pop3-login|imap-login): .*(?:Authentication failure|Aborted login \(auth failed|Aborted login \(tried to use disabled|Disconnected \(auth failed|Aborted login \(\d+ authentication attempts).*rip=(?P\S*),.*
ignoreregex = 그런 다음 postfix-sasl 필터 파일에 ignoreregex 줄을 추가하려면 다음을 실행합니다:
echo "ignoreregex =" >> /etc/fail2ban/filter.d/postfix-sasl.conf그런 다음 fail2ban을 재시작합니다:
service fail2ban restartUFW 방화벽을 설치하려면 다음 apt 명령을 실행합니다:
apt-get install ufw새 게시물을 받은 편지함에서 받기
스팸은 없습니다. 언제든지 구독 해지 가능합니다.