서버 설정 · 9 min read · Dec 17, 2025
전용 웹 및 MySQL, 이메일 및 DNS 서버가 있는 가상 다중 서버 환경 - 페이지 2
5 가상 서버 생성
이제 OVZ 웹 패널을 사용하여 가상 서버를 생성합니다. 패널에 로그인하고 IP 주소 아래에 IP를 추가합니다. 그런 다음 localhost와 OS 템플릿을 클릭합니다.
이제 가상 서버용 템플릿을 다운로드해야 합니다. Install New OS Template -> Contributed를 클릭하고 debian-6.0-amd64-minimal을 선택합니다.
이제 localhost로 돌아가서 가상 서버 만들기를 클릭합니다. 아래와 같이 필드를 채웁니다:
- 서버 ID (VEID): 숫자 (IP의 마지막 부분을 선택하겠습니다, 첫 번째는 2)
- OS 템플릿: 이미 올바른 것을 선택했습니다
- 서버 템플릿: 무제한
- IP 주소: 192.168.1.2
- 호스트 이름: web.example.tld
- DNS 서버: 8.8.4.4 8.8.8.8 (구글의 DNS)
- 나머지는 그대로 두고 디스크 공간, RAM 및 CPU를 원하는 대로 할당합니다…
이 단계를 모든 가상 서버에 대해 반복합니다 (최종적으로 4번: 웹, 메일, 2x DNS).
5.1 가상 서버 준비
이제 모든 가상 서버에 로그인하고 다음 명령을 실행해야 합니다:
apt-get update && apt-get -y upgrade && apt-get -y dist-upgrade
apt-get -y install nano wget ntp ntpdate
이 명령은 최신 버전으로 업그레이드하고 일부 누락된 패키지를 설치합니다.
6 전용 서버 설치
6.1 웹/DB 서버 설치
hosts 파일을 편집하고 모든 서버의 IP 주소와 호스트 이름을 추가합니다. 호스트 이름과 IP 주소는 설정에 맞게 조정해야 합니다.
nano /etc/hosts
127.0.0.1 localhost
192.168.1.2 web.example.tld
192.168.1.3 mail.example.tld
192.168.1.4 ns1.example.tld
192.168.1.5 ns2.example.tld
# IPv6 지원 호스트에 대해 바람직한 다음 줄
::1 localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
ff02::3 ip6-allhosts서버의 호스트 이름을 설정합니다:
echo web.example.tld > /etc/hostname
/etc/init.d/hostname.sh start
MySQL 서버를 설치합니다. ISPConfig가 서버 간의 구성을 동기화하는 데 사용되므로 모든 서버에 MySQL 서버 인스턴스가 필요합니다.
apt-get -y install mysql-client mysql-server
설치 프로그램에서 요청할 때 MySQL의 새 비밀번호를 입력합니다.
MySQL이 마스터 서버의 모든 인터페이스에서 수신 대기하도록 하려면, localhost뿐만 아니라 /etc/mysql/my.cnf를 편집하고 bind-address = 127.0.0.1 줄을 주석 처리합니다:
nano /etc/mysql/my.cnf
[...]
# skip-networking 대신 기본값은 이제 localhost에서만 수신 대기하는 것입니다.
# 이는 더 호환성이 좋고 덜 안전하지 않습니다.
#bind-address = 127.0.0.1
[...] 그런 다음 MySQL을 재시작합니다:
/etc/init.d/mysql restart
이제 Apache2, PHP5, phpMyAdmin, FCGI, suExec, Pear 및 mcrypt를 다음과 같이 설치합니다:
apt-get -y 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 libapache2-mod-suphp libopenssl-ruby libapache2-mod-ruby sudo zip wget
다음 질문이 표시됩니다:
웹 서버를 자동으로 재구성할까요: <– apache2
그런 다음 다음 명령을 실행하여 Apache 모듈 suexec, rewrite, ssl, actions, headers, expires 및 include를 활성화합니다:
a2enmod suexec rewrite ssl actions include ruby dav_fs dav auth_digest headers expires
PureFTPd는 다음 명령으로 설치할 수 있습니다:
apt-get -y install pure-ftpd-common pure-ftpd-mysql
파일 /etc/default/pure-ftpd-common을 편집합니다…
vi /etc/default/pure-ftpd-common
… 그리고 virtualchroot가 VIRTUALCHROOT=true로 설정되어 있는지 확인합니다:
[...]
VIRTUALCHROOT=true
[...] 이제 PureFTPd를 구성하여 FTP 및 TLS 세션을 허용합니다. FTP는 모든 비밀번호와 모든 데이터가 일반 텍스트로 전송되기 때문에 매우 안전하지 않은 프로토콜입니다. TLS를 사용하면 전체 통신을 암호화할 수 있으므로 FTP를 훨씬 더 안전하게 만들 수 있습니다.
FTP 및 TLS 세션을 허용하려면 다음을 실행합니다:
echo 1 > /etc/pure-ftpd/conf/TLS
TLS를 사용하려면 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.pem
국가 이름 (2자리 코드) [AU]: <– 귀하의 국가 이름 입력 (예: “DE”).
주 또는 지방 이름 (전체 이름) [Some-State]: <– 귀하의 주 또는 지방 이름 입력.
지역 이름 (예: 도시) []: <– 귀하의 도시 입력.
조직 이름 (예: 회사) [Internet Widgits Pty Ltd]: <– 귀하의 조직 이름 입력 (예: 회사 이름).
조직 단위 이름 (예: 섹션) []: <– 귀하의 조직 단위 이름 입력 (예: “IT 부서”).
일반 이름 (예: 귀하의 이름) []: <– 시스템의 완전한 도메인 이름 입력 (예: “web.example.tld”).
이메일 주소 []: <– 귀하의 이메일 주소 입력.
SSL 인증서의 권한을 변경합니다:
chmod 600 /etc/ssl/private/pure-ftpd.pem
vlogger, webalizer 및 awstats를 설치합니다:
apt-get -y install vlogger webalizer awstats
그런 다음 /etc/cron.d/awstats를 엽니다…
vi /etc/cron.d/awstats
… 그리고 해당 파일의 두 cron 작업을 주석 처리합니다:
#*/10 * * * * www-data [ -x /usr/share/awstats/tools/update.sh ] && /usr/share/awstats/tools/update.sh
# 정적 보고서 생성:
#10 03 * * * www-data [ -x /usr/share/awstats/tools/buildstatic.sh ] && /usr/share/awstats/tools/buildstatic.shJailkit을 설치합니다: Jailkit은 SSH 사용자를 chroot하려는 경우에만 필요합니다. 다음과 같이 설치할 수 있습니다 (중요: Jailkit은 ISPConfig 이전에 설치해야 하며, 이후에 설치할 수 없습니다!):
apt-get -y install build-essential autoconf automake1.9 libtool flex bison debhelper
cd /tmp
wget http://olivier.sessink.nl/jailkit/jailkit-2.14.tar.gz
tar xvfz jailkit-2.14.tar.gz
cd jailkit-2.14
./debian/rules binary
cd ..
dpkg -i jailkit2.14-1.deb
rm -rf jailkit-2.14
fail2ban을 설치합니다: 이는 선택 사항이지만 권장됩니다. ISPConfig 모니터가 로그를 표시하려고 시도하기 때문입니다:
apt-get install fail2ban
PureFTPd를 모니터링하도록 fail2ban을 설정하려면 /etc/fail2ban/jail.local 파일을 생성합니다:
vi /etc/fail2ban/jail.local
[pureftpd]
enabled = true
port = ftp
filter = pureftpd
logpath = /var/log/syslog
maxretry = 3그런 다음 다음 필터 파일을 생성합니다:
vi /etc/fail2ban/filter.d/pureftpd.conf
[Definition]
failregex = .*pure-ftpd: \(.*@\) \[WARNING\] Authentication failed for user.*
ignoreregex = 그런 다음 fail2ban을 재시작합니다:
/etc/init.d/fail2ban restart
다음으로 ISPConfig 3을 설치합니다. 최신 ISPConfig 3 안정 릴리스의 다운로드 URL을 얻으려면 ISPConfig 웹사이트를 방문하십시오: http://www.ispconfig.org/ispconfig-3/download/
이 서버는 ISPConfig 제어판 인터페이스를 실행하는 설정의 마스터 서버입니다. 설치 중에 다른 MySQL 인스턴스가 이 노드의 MySQL 데이터베이스에 연결할 수 있도록 하려면, 각 슬레이브 서버 호스트 이름 및 IP 주소에 대한 MySQL 루트 사용자 레코드를 마스터 데이터베이스에 추가해야 합니다. 이를 가장 쉽게 수행하는 방법은 이미 설치한 웹 기반 phpmyadmin 관리 도구를 사용하는 것입니다. 웹 브라우저에서 URL http://192.168.1.2/phpmyadmin을 열고 MySQL 루트 사용자로 로그인한 후 다음 MySQL 쿼리를 실행합니다:
CREATE USER ‘root’@’192.168.1.3’ IDENTIFIED BY ‘myrootpassword’;
GRANT ALL PRIVILEGES ON . TO ‘root’@’192.168.1.3’ IDENTIFIED BY ‘myrootpassword’ WITH GRANT OPTION MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0 ;
CREATE USER ‘root’@’192.168.1.4’ IDENTIFIED BY ‘myrootpassword’;
GRANT ALL PRIVILEGES ON . TO ‘root’@’192.168.1.4’ IDENTIFIED BY ‘myrootpassword’ WITH GRANT OPTION MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0 ;
CREATE USER ‘root’@’192.168.1.5’ IDENTIFIED BY ‘myrootpassword’;
GRANT ALL PRIVILEGES ON . TO ‘root’@’192.168.1.5’ IDENTIFIED BY ‘myrootpassword’ WITH GRANT OPTION MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0 ;
CREATE USER ‘root’@’mail.example.tld’ IDENTIFIED BY ‘myrootpassword’;
GRANT ALL PRIVILEGES ON . TO ‘root’@’mail.example.tld’ IDENTIFIED BY ‘myrootpassword’ WITH GRANT OPTION MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0 ;
CREATE USER ‘root’@’ns1.example.tld’ IDENTIFIED BY ‘myrootpassword’;
GRANT ALL PRIVILEGES ON . TO ‘root’@’ns1.example.tld’ IDENTIFIED BY ‘myrootpassword’ WITH GRANT OPTION MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0 ;
CREATE USER ‘root’@’ns2.example.tld’ IDENTIFIED BY ‘myrootpassword’;
GRANT ALL PRIVILEGES ON . TO ‘root’@’ns2.example.tld’ IDENTIFIED BY ‘myrootpassword’ WITH GRANT OPTION MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0 ;
위의 SQL 명령에서 IP 주소 (192.168.1.3 - 192.168.1.5)를 서버의 IP 주소로 바꾸고 mail.example.tld, ns1.example.tld 및 ns2.example.tld를 서버의 호스트 이름으로 바꾸고 myrootpassword를 원하는 루트 비밀번호로 바꿉니다.
권한 새로 고침 버튼을 클릭하거나 MySQL을 재시작합니다. 그런 다음 phpmyadmin을 닫습니다.
web.example.tld의 셸로 돌아가서 최신 ISPConfig 3 안정 릴리스를 다운로드합니다:
cd /tmp
wget
http://www.ispconfig.org/downloads/ISPConfig-3-stable.tar.gz
tar xfz ISPConfig-3-stable.tar.gz
cd ispconfig3_install/install/
그런 다음 설치 스크립트를 시작합니다:
php -q install.php
언어 선택 (en,de) [en]: <– en
설치 모드 (standard,expert) [standard]: <– expert
서버의 완전한 호스트 이름 (FQDN), 예: server2.domain.tld [web.example.tld]: <– web.example.tld
MySQL 서버 호스트 이름 [localhost]: <– localhost
MySQL 루트 사용자 이름 [root]: <– root
MySQL 루트 비밀번호 []: <– 여기에서 MySQL 루트 비밀번호를 입력합니다
생성할 MySQL 데이터베이스 [dbispconfig]: <– dbispconfig
MySQL 문자 집합 [utf8]: <– utf8
이 서버가 기존 ISPConfig 다중 서버 설정에 참여할까요 (y,n) [n]: <– n
메일 구성 (y,n) [y]: <– n
Jailkit 구성 (y,n) [y]: <– y
FTP 서버 구성 (y,n) [y]: <– y
DNS 서버 구성 (y,n) [y]: <– n
Apache 서버 구성 (y,n) [y]: <– y
방화벽 서버 구성 (y,n) [y]: <–n
ISPConfig 웹 인터페이스 설치 (y,n) [y]: <–y
ISPConfig 포트 [8080]: <– 8080
ISPConfig 웹 인터페이스에 대한 SSL 활성화 (y,n) [y]: <– y
국가 이름 (2자리 코드) [AU]: <– ENTER
주 또는 지방 이름 (전체 이름) [Some-State]: <– ENTER
지역 이름 (예: 도시) []: <– ENTER
조직 이름 (예: 회사) [Internet Widgits Pty Ltd]: <– ENTER
조직 단위 이름 (예: 섹션) []: <– ENTER
일반 이름 (예: 귀하의 이름) []: <– ENTER
이메일 주소 []: <– ENTER
도전 비밀번호 []: <– ENTER
선택적 회사 이름 []: <– ENTER
설치 디렉토리를 정리합니다:
cd /tmp
rm -rf /tmp/ispconfig3_install/install
rm -f /tmp/ISPConfig-3-stable.tar.gz
6.2 메일 서버 설치
hosts 파일을 편집하고 모든 서버의 IP 주소와 호스트 이름을 추가합니다. 호스트 이름과 IP 주소는 설정에 맞게 조정해야 합니다.
nano /etc/hosts
127.0.0.1 localhost
192.168.1.2 web.example.tld
192.168.1.3 mail.example.tld
192.168.1.4 ns1.example.tld
192.168.1.5 ns2.example.tld
# IPv6 지원 호스트에 대해 바람직한 다음 줄
::1 localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
ff02::3 ip6-allhosts서버의 호스트 이름을 설정합니다:
echo mail.example.tld > /etc/hostname
echo mail.example.tld > /etc/mailname
/etc/init.d/hostname.sh start
postfix, dovecot 및 MySQL을 한 번의 명령으로 설치합니다:
apt-get -y install postfix postfix-mysql postfix-doc mysql-client mysql-server openssl getmail4 rkhunter binutils dovecot-imapd dovecot-pop3d
설치 프로그램에서 요청할 때 mysql의 새 비밀번호를 입력하고 다음 질문에 대해 아래와 같이 답변합니다:
구성의 일반 유형? <– 인터넷 사이트
메일 이름? <– mail.example.tld
amavisd-new, SpamAssassin 및 ClamAV를 설치하려면 다음을 실행합니다:
apt-get -y install amavisd-new spamassassin clamav clamav-daemon zoo unzip bzip2 arj nomarch lzop cabextract apt-listchanges libnet-ldap-perl libauthen-sasl-perl clamav-docs daemon libio-string-perl libio-socket-ssl-perl libnet-ident-perl zip libnet-dns-perl
서버에서 메일링리스트를 사용하려면 mailman을 설치합니다. 이 단계는 선택 사항입니다. mailman은 apache 웹 서버를 필요로 하므로 메일 서버에서 apache 인스턴스를 실행하고 싶지 않다면 mailman을 설치하지 마십시오.
apt-get -y install mailman
mailman의 apt 설치 프로그램은 그런 다음 메일링 리스트에 대한 언어를 선택하라는 메시지를 표시합니다. mailman에서 사용하려는 모든 언어를 활성화합니다. 그런 다음 “mailman” 메일링 리스트를 생성합니다.
newlist mailman
메일링 리스트 관리자의 이메일 주소와 새 비밀번호를 입력합니다. 이것이 mailman 설치의 마지막 단계입니다. 다음 명령은 모든 서버에서 독립적으로 실행해야 하며, mailman을 설치했는지 여부와 관계없이 실행해야 합니다.
그런 다음 ISPConfig용 PHP 기반 셸 스크립트를 실행할 수 있도록 PHP의 명령줄 버전을 설치합니다:
apt-get -y install php5-cli php5-mysql php5-mcrypt mcrypt
fail2ban을 설치합니다: 이는 선택 사항이지만 권장됩니다. ISPConfig 모니터가 로그를 표시하려고 시도하기 때문입니다:
apt-get install fail2ban
PureFTPd 및 Dovecot를 모니터링하도록 fail2ban을 설정하려면 /etc/fail2ban/jail.local 파일을 생성합니다:
vi /etc/fail2ban/jail.local
[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그런 다음 다음 필터 파일을 생성합니다:
vi /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 = 그런 다음 fail2ban을 재시작합니다:
/etc/init.d/fail2ban restart
이제 이 서버에 ISPConfig 3을 설치하겠습니다. 최신 ISPConfig 3 안정 릴리스의 다운로드 URL을 얻으려면 ISPConfig 웹사이트를 방문하십시오: http://www.ispconfig.org/ispconfig-3/download/
최신 ISPConfig 3 안정 릴리스를 다운로드합니다:
cd /tmp
wget
http://www.ispconfig.org/downloads/ISPConfig-3-stable.tar.gz
tar xfz ISPConfig-3-stable.tar.gz
cd ispconfig3_install/install/
그런 다음 설치 스크립트를 시작합니다:
php -q install.php
언어 선택 (en,de) [en]: <– en
설치 모드 (standard,expert) [standard]: <– expert
서버의 완전한 호스트 이름 (FQDN), 예: server1.domain.tld [mail.example.tld]: <– mail.example.tld
MySQL 서버 호스트 이름 [localhost]: <– localhost
MySQL 루트 사용자 이름 [root]: <– root
MySQL 루트 비밀번호 []: <– 여기에서 MySQL 루트 비밀번호를 입력합니다
생성할 MySQL 데이터베이스 [dbispconfig]: <– dbispconfig
MySQL 문자 집합 [utf8]: <– utf8
이 서버가 기존 ISPConfig 다중 서버 설정에 참여할까요 (y,n) [n]: <– y
MySQL 마스터 서버 호스트 이름 []: <– web.example.tld
MySQL 마스터 서버 루트 사용자 이름 [root]: <– root
MySQL 마스터 서버 루트 비밀번호 []: <– 마스터 서버의 루트 비밀번호를 입력합니다
MySQL 마스터 서버 데이터베이스 이름 [dbispconfig]: <– dbispconfig
메일 구성 (y,n) [y]: <– y
국가 이름 (2자리 코드) [AU]: <– DE (여기에서 거주하는 국가의 ISO 코드 입력)
주 또는 지방 이름 (전체 이름) [Some-State]: <– Niedersachsen (여기에서 거주하는 주 입력)
지역 이름 (예: 도시) []: <– Lueneburg (여기에서 도시 입력)
조직 이름 (예: 회사) [Internet Widgits Pty Ltd]: <– ENTER
조직 단위 이름 (예: 섹션) []: <– ENTER
일반 이름 (예: 귀하의 이름) []: <– ENTER
이메일 주소 []: <– ENTER
Jailkit 구성 (y,n) [y]: <– n
FTP 서버 구성 (y,n) [y]: <– n
DNS 서버 구성 (y,n) [y]: <– n
Apache 서버 구성 (y,n) [y]: <– n
방화벽 서버 구성 (y,n) [y]: <–n
ISPConfig 웹 인터페이스 설치 (y,n) [y]: <–n
실행…
rm -f /var/www/ispconfig
… /var/www 디렉토리에서 ISPConfig 인터페이스 링크를 제거합니다.
설치 디렉토리를 정리합니다:
rm -rf /tmp/ispconfig3_install/install
rm -f /tmp/ISPConfig-3-stable.tar.gz
새 게시물을 받은 편지함에서 받기
스팸은 없습니다. 언제든지 구독 해지 가능합니다.