서버 설정 · 22 min read · Nov 04, 2025
완벽한 서버 - Debian 10 (Nginx, BIND, Dovecot, ISPConfig 3.2)

이 튜토리얼은 ISPConfig 3.2 설치를 위해 Nginx, BIND, Dovecot이 포함된 Debian 10 서버를 준비하는 방법과 ISPConfig 3.2를 설치하는 방법을 보여줍니다. ISPConfig 3는 웹 브라우저를 통해 다음 서비스를 구성할 수 있는 웹 호스팅 제어판입니다: Apache 또는 nginx 웹 서버, Postfix 메일 서버, Courier 또는 Dovecot IMAP/POP3 서버, MySQL, BIND 또는 MyDNS 네임서버, PureFTPd, SpamAssassin, ClamAV 등. 이 설정은 Nginx 웹 서버, BIND를 DNS 서버로, Dovecot을 IMAP / POP3 서버로 포함합니다.
1 사전 참고
이 튜토리얼에서는 호스트 이름 server1.example.com과 IP 주소 192.168.0.100, 게이트웨이 192.168.0.1을 사용합니다. 이러한 설정은 귀하의 경우 다를 수 있으므로 적절한 곳에서 교체해야 합니다. 진행하기 전에 Debian 10의 최소 설치가 필요합니다. 이는 호스팅 제공업체의 Debian 최소 이미지일 수 있으며, 기본 시스템을 설정하기 위해 Minimal Debian Server 튜토리얼을 사용할 수 있습니다.
아래의 모든 명령은 root 사용자로 실행됩니다. root 사용자로 직접 로그인하거나 일반 사용자로 로그인한 후 다음 명령을 사용하여
su -서버에서 root 사용자로 전환한 후 진행하십시오. 중요: ‘su -‘를 사용해야 하며 ‘su’만 사용하지 마십시오. 그렇지 않으면 Debian에 의해 PATH 변수가 잘못 설정됩니다.
2 SSH 서버 설치
시스템 설치 중 OpenSSH 서버를 설치하지 않았다면 지금 설치할 수 있습니다:
apt-get -y install ssh openssh-server이제부터는 PuTTY와 같은 SSH 클라이언트를 사용하여 작업 스테이션에서 Debian 10 서버에 연결하고 이 튜토리얼의 나머지 단계를 따를 수 있습니다.
3 셸 텍스트 편집기 설치 (선택 사항)
이 튜토리얼에서는 nano 텍스트 편집기를 사용합니다. 일부 사용자는 고전적인 vi 편집기를 선호하므로 두 편집기를 모두 설치하겠습니다. 기본 vi 프로그램은 Debian 및 Ubuntu에서 이상한 동작을 하므로 이를 수정하기 위해 vim-nox를 설치합니다:
apt-get -y install nano vim-nox(다른 텍스트 편집기(예: joe)를 사용하는 경우 이 작업을 수행할 필요는 없습니다.)
4 호스트 이름 구성
서버의 호스트 이름은 “server1.example.com”과 같은 하위 도메인이어야 합니다. “example.com”과 같은 하위 도메인 부분이 없는 도메인 이름을 호스트 이름으로 사용하지 마십시오. 이는 나중에 메일 설정에 문제를 일으킬 수 있습니다. 먼저 /etc/hosts에서 호스트 이름을 확인하고 필요에 따라 변경해야 합니다. 해당 줄은 다음과 같아야 합니다: “IP 주소 - 공백 - 전체 호스트 이름 포함 도메인 - 공백 - 하위 도메인 부분”. /etc/hosts를 편집합니다. 다음과 같이 보이도록 만듭니다:
nano /etc/hosts127.0.0.1 localhost.localdomain localhost
192.168.0.100 server1.example.com server1
# 다음 줄은 IPv6 지원 호스트에 바람직합니다
::1 localhost ip6-localhost ip6-loopback
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters그런 다음 /etc/hostname 파일을 편집합니다:
nano /etc/hostname여기에는 하위 도메인 부분만 포함되어야 하며, 우리의 경우:
server1마지막으로 변경 사항을 적용하기 위해 서버를 재부팅합니다:
reboot다시 로그인하고 다음 명령으로 호스트 이름이 올바른지 확인합니다:
hostname
hostname -f출력은 다음과 같아야 합니다:
root@server1:/tmp# hostname
server1
root@server1:/tmp# hostname -f
server1.example.com5 Debian 설치 업데이트
먼저 /etc/apt/sources.list에 buster/updates 리포지토리가 포함되어 있는지 확인합니다(이는 ClamAV 바이러스 스캐너의 최신 업데이트를 항상 받을 수 있도록 합니다 - 이 프로젝트는 매우 자주 릴리스를 게시하며, 때때로 이전 버전이 작동을 멈춥니다), 그리고 contrib 및 non-free 리포지토리가 활성화되어 있는지 확인합니다.
nano /etc/apt/sources.listdeb http://deb.debian.org/debian/ buster main contrib non-free
deb-src http://deb.debian.org/debian/ buster main contrib non-free
deb http://security.debian.org/debian-security buster/updates main contrib non-free
deb-src http://security.debian.org/debian-security buster/updates main contrib non-free다음 명령을 실행하여
apt-get updateapt 패키지 데이터베이스를 업데이트하고
apt-get upgrade최신 업데이트를 설치합니다(있는 경우).
6 기본 셸 변경
/bin/sh는 /bin/dash에 대한 심볼릭 링크이지만, 우리는 /bin/bash가 필요합니다. 따라서 다음과 같이 합니다:
dpkg-reconfigure dash기본 시스템 셸로 dash를 사용하시겠습니까? (/bin/sh)? <– 아니요
이 작업을 수행하지 않으면 ISPConfig 설치가 실패합니다.
7 시스템 시계 동기화
시스템 시계를 인터넷을 통한 NTP (network time protocol) 서버와 동기화하는 것이 좋습니다. 다음 명령을 실행하십시오:
apt-get install ntp그러면 시스템 시간이 항상 동기화됩니다.
8 Postfix, Dovecot, MySQL, rkhunter 및 binutils 설치
Postfix, Dovecot, MySQL, rkhunter 및 Binutils를 단일 명령으로 설치할 수 있습니다:
apt-get install postfix postfix-mysql postfix-doc mariadb-client mariadb-server openssl getmail4 rkhunter binutils dovecot-imapd dovecot-pop3d dovecot-mysql dovecot-sieve dovecot-lmtpd sudo curl다음 질문을 받게 됩니다:
메일 구성의 일반 유형: <– 인터넷 사이트
시스템 메일 이름: <– server1.example.com
MariaDB / MySQL 설치를 보안하고 테스트 데이터베이스를 비활성화하려면 다음 명령을 실행합니다:
mysql_secure_installation우리는 설치 중에 새 비밀번호를 설정했기 때문에 MariaDB root 비밀번호를 변경할 필요가 없습니다. 질문에 다음과 같이 답하십시오:
루트 비밀번호를 변경하시겠습니까? [Y/n] <-- y
새 비밀번호: <-- 새 데이터베이스 루트 비밀번호 입력
새 비밀번호를 다시 입력하십시오: <-- 데이터베이스 루트 비밀번호 반복
익명 사용자 제거? [Y/n] <-- y
원격에서 루트 로그인 금지? [Y/n] <-- y
테스트 데이터베이스 및 이에 대한 접근 제거? [Y/n] <-- y
권한 테이블을 지금 다시 로드하시겠습니까? [Y/n] <-- y그런 다음 Postfix에서 TLS/SSL 및 제출 포트를 엽니다:
nano /etc/postfix/master.cf제출 및 smtps 섹션의 주석을 제거하고 필요한 경우 다음과 같이 master.cf 파일의 이 섹션이 아래와 정확히 같도록 줄을 추가합니다. 중요: smtps 및 제출로 시작하는 줄 앞의 #를 제거하고 이러한 줄 이후의 -o 줄에서만 제거하지 마십시오!
[...]
submission inet n - y - - smtpd
-o syslog_name=postfix/submission
-o smtpd_tls_security_level=encrypt
-o smtpd_sasl_auth_enable=yes
-o smtpd_client_restrictions=permit_sasl_authenticated,reject
# -o smtpd_reject_unlisted_recipient=no
# -o smtpd_client_restrictions=$mua_client_restrictions
# -o smtpd_helo_restrictions=$mua_helo_restrictions
# -o smtpd_sender_restrictions=$mua_sender_restrictions
# -o smtpd_recipient_restrictions=
# -o smtpd_relay_restrictions=permit_sasl_authenticated,reject
# -o milter_macro_daemon_name=ORIGINATING
smtps inet n - y - - smtpd
-o syslog_name=postfix/smtps
-o smtpd_tls_wrappermode=yes
-o smtpd_sasl_auth_enable=yes
-o smtpd_client_restrictions=permit_sasl_authenticated,reject
# -o smtpd_reject_unlisted_recipient=no
# -o smtpd_client_restrictions=$mua_client_restrictions
# -o smtpd_helo_restrictions=$mua_helo_restrictions
# -o smtpd_sender_restrictions=$mua_sender_restrictions
# -o smtpd_recipient_restrictions=
# -o smtpd_relay_restrictions=permit_sasl_authenticated,reject
# -o milter_macro_daemon_name=ORIGINATING
[...] 그 후 Postfix를 재시작합니다:
service postfix restartMariaDB가 localhost뿐만 아니라 모든 인터페이스에서 수신 대기하도록 하려면 /etc/mysql/mariadb.conf.d/50-server.cnf를 편집하고 bind-address = 127.0.0.1 줄의 주석을 제거합니다:
nano /etc/mysql/mariadb.conf.d/50-server.cnf[...]
# skip-networking 대신 기본값은 이제
# localhost에서만 수신 대기하는 것입니다.
# 이는 더 호환성이 좋고 덜 안전하지 않습니다.
#bind-address = 127.0.0.1
[...] 파일을 저장합니다. 그런 다음 MariaDB의 비밀번호 인증 방법을 기본으로 설정하여 나중에 PHPMyAdmin에 root 사용자로 연결할 수 있도록 합니다:
echo "update mysql.user set plugin = 'mysql_native_password' where user='root';" | mysql -u root파일 /etc/mysql/debian.cnf를 편집하고 MYSQL / MariaDB 루트 비밀번호를 해당 행에서 두 번 설정합니다.
nano /etc/mysql/debian.cnf추가해야 할 MySQL 루트 비밀번호는 빨간색으로 표시됩니다. 이 예제에서 비밀번호는 “howtoforge”입니다.
# Debian 스크립트용으로 자동 생성되었습니다. 수정하지 마십시오!
[client]
host = localhost
user = root
password = howtoforge
socket = /var/run/mysqld/mysqld.sock
[mysql_upgrade]
host = localhost
user = root
password = howtoforge
socket = /var/run/mysqld/mysqld.sock
basedir = /usr‘ Error in accept: Too many open files ‘ 오류를 방지하기 위해 이제 MariaDB에 대해 더 높은 열린 파일 제한을 설정합니다.
편집기로 /etc/security/limits.conf 파일을 엽니다:
nano /etc/security/limits.conf파일 끝에 다음 줄을 추가합니다.
mysql soft nofile 65535
mysql hard nofile 65535그런 다음 mkdir 명령으로 새 디렉토리 /etc/systemd/system/mysql.service.d/를 생성합니다.
mkdir -p /etc/systemd/system/mysql.service.d/그 안에 새 파일을 추가합니다:
nano /etc/systemd/system/mysql.service.d/limits.conf다음 줄을 해당 파일에 붙여넣습니다:
[Service]
LimitNOFILE=infinity파일을 저장하고 nano 편집기를 닫습니다.
그런 다음 systemd를 다시 로드하고 MariaDB를 재시작합니다:
systemctl daemon-reload
systemctl restart mariadb경고를 무시합니다: “ Warning: The unit file, source configuration file or drop-ins of mariadb.service changed on disk. Run ‘systemctl daemon-reload’ to reload units. “.
dbconfig-common 시스템을 설치합니다:
apt-get install dbconfig-common dbconfig-mysql현재 Debian dbconfig-common 시스템에 RoundCube 설치를 방해하는 문제가 있으므로 다음 명령을 실행하여 수정합니다:
sed -i -r 's/_dbc_nodb="yes" dbc_mysql_exec/_dbc_nodb="yes"; dbc_mysql_exec/g' /usr/share/dbconfig-common/internal/mysql이제 네트워킹이 활성화되어 있는지 확인합니다. 다음 명령을 실행합니다:
netstat -tap | grep mysql출력은 다음과 같아야 합니다:
root@server1:~# netstat -tap | grep mysql
tcp6 0 0 [::]:mysql [::]:* LISTEN 4027/mysqld
root@server1:~#9 Amavisd-new, SpamAssassin 및 ClamAV 설치
amavisd-new, SpamAssassin 및 ClamAV를 설치하려면 다음 명령을 실행합니다:
apt-get install amavisd-new spamassassin clamav clamav-daemon unzip bzip2 arj nomarch lzop cabextract p7zip p7zip-full unrar lrzip 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 libdbd-mysql-perl postgreyISPConfig 3 설정은 amavisd를 사용하여 내부적으로 SpamAssassin 필터 라이브러리를 로드하므로 RAM을 확보하기 위해 SpamAssassin을 중지할 수 있습니다:
systemctl stop spamassassin
systemctl disable spamassassin10 Nginx, PHP (PHP-FPM) 및 Fcgiwrap 설치
Nginx는 Debian용 패키지로 제공되며 다음과 같이 설치할 수 있습니다:
apt-get install nginx시스템에 Apache2가 이미 설치되어 있다면 지금 중지하십시오…
systemctl stop apache2“ Failed to stop apache2.service: Unit apache2.service not loaded. “ 메시지는 괜찮으며 오류를 나타내지 않습니다.
… 그리고 Apache의 시스템 시작 링크를 제거합니다:
systemctl disable apache2그 후 nginx를 시작합니다:
systemctl start nginx(만약 Apache2와 nginx가 모두 설치되어 있다면, ISPConfig 3 설치 프로그램이 어떤 것을 사용할지 물어볼 것입니다 - 이 경우 nginx라고 대답하십시오. 만약 이 두 개 중 하나만 설치되어 있다면, ISPConfig가 필요한 구성을 자동으로 수행합니다.)
PHP 7.3을 nginx에서 작동하게 하려면 PHP-FPM을 통해 설치합니다( PHP-FPM (FastCGI Process Manager)은 모든 크기의 사이트, 특히 더 바쁜 사이트에 유용한 몇 가지 추가 기능이 있는 대체 PHP FastCGI 구현입니다.) 다음과 같이 설치합니다:
apt-get install php7.3-fpmPHP-FPM은 /var/run/php/php7.3-fpm.sock 소켓에서 FastCGI 서버를 실행하는 데몬 프로세스입니다.
PHP에서 MySQL 지원을 얻으려면 php7.3-mysql 패키지를 설치할 수 있습니다. 애플리케이션에 필요할 수 있는 다른 PHP 모듈도 설치하는 것이 좋습니다. 다음과 같이 사용 가능한 PHP 모듈을 검색할 수 있습니다:
apt-cache search php7필요한 모듈을 선택하고 다음과 같이 설치합니다:
apt-get install php7.3 php7.3-common php7.3-gd php7.3-mysql php7.3-imap php7.3-cli php7.3-cgi php-pear mcrypt imagemagick libruby php7.3-curl php7.3-intl php7.3-pspell php7.3-recode php7.3-sqlite3 php7.3-tidy php7.3-xmlrpc php7.3-xsl memcached php-memcache php-imagick php-gettext php7.3-zip php7.3-mbstring memcached php7.3-soap php7.3-fpm php7.3-opcache php-apcu그런 다음 /etc/php/7.3/fpm/php.ini를 엽니다…
nano /etc/php/7.3/fpm/php.ini… 그리고 cgi.fix_pathinfo=0 및 시간대를 설정합니다:
[...]
cgi.fix_pathinfo=0
[...]
date.timezone="Europe/Berlin"
[...] (사용 가능한 모든 시간대는 /usr/share/zoneinfo 디렉토리 및 하위 디렉토리에서 찾을 수 있습니다.)
이제 PHP-FPM을 다시 로드합니다:
systemctl restart php7.3-fpmnginx에서 CGI 지원을 얻으려면 Fcgiwrap을 설치합니다.
Fcgiwrap은 복잡한 CGI 스크립트에도 작동해야 하며, 각 vhost가 자체 cgi-bin 디렉토리를 사용할 수 있도록 해주기 때문에 공유 호스팅 환경에서도 사용할 수 있습니다.
fcgiwrap 패키지를 설치합니다:
apt-get install fcgiwrap설치 후 fcgiwrap 데몬이 이미 시작되어 있어야 하며, 소켓은 /var/run/fcgiwrap.socket입니다. 실행되지 않는 경우 fservice fcgiwrap 스크립트를 사용하여 시작할 수 있습니다.
이제 모든 것이 완료되었습니다! 이제 nginx vhost를 생성할 때 ISPConfig가 올바른 vhost 구성을 처리합니다.
10.1 phpMyAdmin 설치
Debian 10부터 PHPMyAdmin은 더 이상 .deb 패키지로 제공되지 않습니다. 따라서 소스에서 설치합니다.
PHPMyadmin을 위한 폴더를 생성합니다:
mkdir /usr/share/phpmyadmin
mkdir /etc/phpmyadmin
mkdir -p /var/lib/phpmyadmin/tmp
chown -R www-data:www-data /var/lib/phpmyadmin
touch /etc/phpmyadmin/htpasswd.setup/tmp 디렉토리로 이동하여 PHPMyAdmin 소스를 다운로드합니다:
cd /tmp
wget https://files.phpmyadmin.net/phpMyAdmin/4.9.0.1/phpMyAdmin-4.9.0.1-all-languages.tar.gz다운로드한 아카이브 파일을 압축 해제하고 파일을 /usr/share/phpmyadmin 폴더로 이동한 후 /tmp 디렉토리를 정리합니다.
tar xfz phpMyAdmin-4.9.0.1-all-languages.tar.gz
mv phpMyAdmin-4.9.0.1-all-languages/* /usr/share/phpmyadmin/
rm phpMyAdmin-4.9.0.1-all-languages.tar.gz
rm -rf phpMyAdmin-4.9.0.1-all-languages제공된 샘플 파일을 기반으로 PHPMyAdmin을 위한 새 구성 파일을 생성합니다:
cp /usr/share/phpmyadmin/config.sample.inc.php /usr/share/phpmyadmin/config.inc.phpnano 편집기로 구성 파일을 엽니다:
nano /usr/share/phpmyadmin/config.inc.php32자 길이의 안전한 비밀번호(블로우피쉬 비밀)를 설정합니다:
$cfg['blowfish_secret'] = 'bD3e6wva9fnd93jVsb7SDgeiBCd452Dh'; /* COOKIE AUTH를 위해 반드시 입력해야 합니다! */내 예제 블로우피쉬 비밀을 사용하지 말고, 자신만의 것을 설정하십시오!
그런 다음 PHPMyAdmin이 임시 파일을 저장하는 데 사용할 디렉토리를 설정하는 줄을 추가합니다:
$cfg['TempDir'] = '/var/lib/phpmyadmin/tmp';다음 단계에서는 phpMyadmin 구성 저장소(데이터베이스)를 구성합니다.
MariaDB에 root 사용자로 로그인합니다:
mysql -u root -pMariaDB 셸에서 PHPMyAdmin을 위한 새 데이터베이스를 생성합니다:
MariaDB [(none)]> CREATE DATABASE phpmyadmin;그런 다음 새 사용자를 생성합니다:
MariaDB [(none)]> CREATE USER 'pma'@'localhost' IDENTIFIED BY 'mypassword';위의 명령과 아래의 명령에서 mypassword를 선택한 안전한 비밀번호로 교체하고 두 번 모두 같은 비밀번호를 사용하십시오. 그런 다음 사용자가 이 데이터베이스에 접근할 수 있도록 권한을 부여하고 데이터베이스 권한을 다시 로드합니다.
MariaDB [(none)]> GRANT ALL PRIVILEGES ON phpmyadmin.* TO 'pma'@'localhost' IDENTIFIED BY 'mypassword' WITH GRANT OPTION;
MariaDB [(none)]> FLUSH PRIVILEGES;
MariaDB [(none)]> EXIT마지막으로 SQL 테이블을 데이터베이스에 로드합니다:
mysql -u root -p phpmyadmin < /usr/share/phpmyadmin/sql/create_tables.sql요청 시 MariaDB 루트 비밀번호를 입력합니다.
이제 구성 파일에서 phpmyadmin 사용자 세부정보를 설정하기만 하면 됩니다. 다시 nano 편집기로 파일을 엽니다:
nano /usr/share/phpmyadmin/config.inc.php아래 줄을 찾을 때까지 스크롤하고 편집합니다:
/* 저장소를 조작하는 데 사용되는 사용자 */
$cfg['Servers'][$i]['controlhost'] = 'localhost';
$cfg['Servers'][$i]['controlport'] = '';
$cfg['Servers'][$i]['controluser'] = 'pma';
$cfg['Servers'][$i]['controlpass'] = 'mypassword';
/* 저장소 데이터베이스 및 테이블 */
$cfg['Servers'][$i]['pmadb'] = 'phpmyadmin';
$cfg['Servers'][$i]['bookmarktable'] = 'pma__bookmark';
$cfg['Servers'][$i]['relation'] = 'pma__relation';
$cfg['Servers'][$i]['table_info'] = 'pma__table_info';
$cfg['Servers'][$i]['table_coords'] = 'pma__table_coords';
$cfg['Servers'][$i]['pdf_pages'] = 'pma__pdf_pages';
$cfg['Servers'][$i]['column_info'] = 'pma__column_info';
$cfg['Servers'][$i]['history'] = 'pma__history';
$cfg['Servers'][$i]['table_uiprefs'] = 'pma__table_uiprefs';
$cfg['Servers'][$i]['tracking'] = 'pma__tracking';
$cfg['Servers'][$i]['userconfig'] = 'pma__userconfig';
$cfg['Servers'][$i]['recent'] = 'pma__recent';
$cfg['Servers'][$i]['favorite'] = 'pma__favorite';
$cfg['Servers'][$i]['users'] = 'pma__users';
$cfg['Servers'][$i]['usergroups'] = 'pma__usergroups';
$cfg['Servers'][$i]['navigationhiding'] = 'pma__navigationhiding';
$cfg['Servers'][$i]['savedsearches'] = 'pma__savedsearches';
$cfg['Servers'][$i]['central_columns'] = 'pma__central_columns';
$cfg['Servers'][$i]['designer_settings'] = 'pma__designer_settings';
$cfg['Servers'][$i]['export_templates'] = 'pma__export_templates';편집한 줄은 빨간색으로 표시했습니다. mypassword를 phpmyadmin 사용자에 대해 선택한 비밀번호로 교체하십시오. 또한 줄 앞의 //가 제거된 점에 유의하십시오!
ISPConfig 3.2를 설치한 후에는 다음과 같이 phpMyAdmin에 접근할 수 있습니다:
ISPConfig 앱 vhost는 포트 8081에서 phpMyAdmin 구성을 제공하므로 http://server1.example.com:8081/phpmyadmin 또는 http://server1.example.com:8081/phpMyAdmin을 사용하여 phpMyAdmin에 접근할 수 있습니다.
웹사이트에서 사용할 수 있는 /phpmyadmin 또는 /phpMyAdmin 별칭을 사용하려면 Apache보다 약간 더 복잡합니다. nginx는 전역 별칭(즉, 모든 vhosts에 대해 정의할 수 있는 별칭)을 지원하지 않기 때문입니다. 따라서 phpMyAdmin에 접근하려는 각 vhost에 대해 이러한 별칭을 정의해야 합니다.
이렇게 하려면 나중에 ISPConfig의 웹사이트 옵션 탭의 nginx 지시어 필드에 다음을 붙여넣습니다:
location /phpmyadmin {
root /usr/share/;
index index.php index.html index.htm;
location ~ ^/phpmyadmin/(.+\.php)$ {
try_files $uri =404;
root /usr/share/;
fastcgi_pass unix:/var/run/php/php7.3-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $request_filename;
include /etc/nginx/fastcgi_params;
fastcgi_param PATH_INFO $fastcgi_script_name;
fastcgi_buffer_size 128k;
fastcgi_buffers 256 4k;
fastcgi_busy_buffers_size 256k;
fastcgi_temp_file_write_size 256k;
fastcgi_intercept_errors on;
}
location ~* ^/phpmyadmin/(.+\.(jpg|jpeg|gif|css|png|js|ico|html|xml|txt))$ {
root /usr/share/;
}
}
location /phpMyAdmin {
rewrite ^/* /phpmyadmin last;
}http s를 vhost에 사용하는 경우 phpMyAdmin 구성에 fastcgi_param HTTPS on; 줄을 다음과 같이 추가해야 합니다:
location /phpmyadmin {
root /usr/share/;
index index.php index.html index.htm;
location ~ ^/phpmyadmin/(.+\.php)$ {
try_files $uri =404;
root /usr/share/;
fastcgi_pass unix:/var/run/php/php7.3-fpm.sock;
fastcgi_param HTTPS on; # <-- 이 줄을 추가하십시오
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $request_filename;
include /etc/nginx/fastcgi_params;
fastcgi_param PATH_INFO $fastcgi_script_name;
fastcgi_buffer_size 128k;
fastcgi_buffers 256 4k;
fastcgi_busy_buffers_size 256k;
fastcgi_temp_file_write_size 256k;
fastcgi_intercept_errors on;
}
location ~* ^/phpmyadmin/(.+\.(jpg|jpeg|gif|css|png|js|ico|html|xml|txt))$ {
root /usr/share/;
}
}
location /phpMyAdmin {
rewrite ^/* /phpmyadmin last;
}http와 https를 모두 사용하는 경우 $https 변수를 사용할 수 있습니다. 다시 nginx 지시어 필드로 가서 fastcgi_param HTTPS on; 대신 fastcgi_param HTTPS $https; 줄을 추가하여 http 및 https 요청 모두에 대해 phpMyAdmin을 사용할 수 있도록 합니다:
location /phpmyadmin {
root /usr/share/;
index index.php index.html index.htm;
location ~ ^/phpmyadmin/(.+\.php)$ {
try_files $uri =404;
root /usr/share/;
fastcgi_pass unix:/var/run/php/php7.3-fpm.sock;
fastcgi_param HTTPS $https; # <-- 이 줄을 추가하십시오
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $request_filename;
include /etc/nginx/fastcgi_params;
fastcgi_param PATH_INFO $fastcgi_script_name;
fastcgi_buffer_size 128k;
fastcgi_buffers 256 4k;
fastcgi_busy_buffers_size 256k;
fastcgi_temp_file_write_size 256k;
fastcgi_intercept_errors on;
}
location ~* ^/phpmyadmin/(.+\.(jpg|jpeg|gif|css|png|js|ico|html|xml|txt))$ {
root /usr/share/;
}
}
location /phpMyAdmin {
rewrite ^/* /phpmyadmin last;
}11 Let’s Encrypt 설치
ISPConfig는 이제 acme.sh를 Let’s Encrypt 클라이언트로 사용하고 있습니다. 다음 명령을 사용하여 acme.sh를 설치합니다:
curl https://get.acme.sh | sh -s12 Mailman 설치
ISPConfig를 사용하면 Mailman 메일링 리스트를 관리(생성/수정/삭제)할 수 있습니다. 이 기능을 사용하려면 다음과 같이 Mailman을 설치합니다:
apt-get install mailman최소한 하나의 언어를 선택합니다. 예:
지원할 언어: <– en (영어)
누락된 사이트 목록 <– 확인
Mailman을 시작하기 전에 mailman이라는 첫 번째 메일링 리스트를 생성해야 합니다:
newlist mailmanroot@server1:~# newlist mailman
메일링 리스트를 운영하는 사람의 이메일을 입력하십시오: <– 관리자 이메일 주소, 예: [email protected]
초기 mailman 비밀번호: <– mailman 리스트의 관리자 비밀번호
메일링 리스트를 생성하려면 /etc/aliases(또는 동등한) 파일을 편집하여 다음 줄을 추가하고, possibly running the newaliases' 프로그램: ## mailman 메일링 리스트 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" Enter를 눌러 mailman 소유자에게 알립니다... <-- ENTER root@server1:~# 그런 다음 /etc/aliases를 엽니다... ``` nano /etc/aliases ``` ... 그리고 다음 줄을 추가합니다: ``` [...] ## mailman 메일링 리스트 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를 재시작합니다: ``` systemctl restart postfix ``` 그런 다음 Mailman 데몬을 시작합니다: ``` systemctl restart mailman ``` ISPConfig 3를 설치한 후에는 다음과 같이 Mailman에 접근할 수 있습니다: ISPConfig 앱 vhost는 포트 8081에서 Mailman 구성을 제공하므로 http://server1.example.com:8081/cgi-bin/mailman/admin/–.| |/ / | / \/ __ __ | | __ / /
| | `–. \ __/ | | / \| ‘ \| | |/ ` | | |
| |_/ / | | __/\ () | | | | | | | (| | __\ \
_/__/_| _/\/|| ||| |_, | __/ / |
|__/
초기 구성
운영 체제: Debian 10.0 (Buster) 또는 호환 가능
다음은 기본 구성을 위한 몇 가지 질문이 있을 것입니다.
기본값은 [대괄호]에 있으며
“quit”(따옴표 없이)를 입력하면 설치 프로그램이 중지됩니다.
언어 선택 (en,de) [en]: <– 엔터를 누르십시오
설치 모드 (standard,expert) [standard]: <– 엔터를 누르십시오
서버의 전체 자격 호스트 이름 (FQDN), 예: server1.domain.tld [server1.canomi.com]: <– 엔터를 누르십시오
MySQL 서버 호스트 이름 [localhost]: <– 엔터를 누르십시오
MySQL 서버 포트 [3306]: <– 엔터를 누르십시오
MySQL 루트 사용자 이름 [root]: <– 엔터를 누르십시오
MySQL 루트 비밀번호 []: <– MySQL 루트 비밀번호를 입력하십시오
생성할 MySQL 데이터베이스 [dbispconfig]: <– 엔터를 누르십시오
MySQL 문자 집합 [utf8]: <– 엔터를 누르십시오
Apache와 nginx가 감지되었습니다. ISPConfig에 사용할 서버를 선택하십시오: (apache,nginx) [apache]: <– nginx
Postgrey 구성
Postfix 구성
4096 비트 RSA 개인 키 생성
……………………………………………………………..++
……………………………………………………………………………………………………………………….++
‘smtpd.key’에 새 개인 키를 작성하는 중입니다.
—–
인증서 요청에 통합될 정보를 입력해야 합니다.
입력하는 내용은 ‘구별 이름’ 또는 DN이라고 합니다.
몇 가지 필드가 있지만 일부는 비워둘 수 있습니다.
일부 필드에는 기본값이 있습니다.
‘.’를 입력하면 필드가 비워집니다.
—–
국가 이름 (2자리 코드) [AU]: <– 2자리 국가 코드를 입력하십시오
주 또는 지방 이름 (전체 이름) [Some-State]: <– 주 이름을 입력하십시오
지역 이름 (예: 도시) []: <– 도시를 입력하십시오
조직 이름 (예: 회사) [Internet Widgits Pty Ltd]: <– 회사 이름을 입력하거나 엔터를 누르십시오
조직 단위 이름 (예: 섹션) []: <– 엔터를 누르십시오
공통 이름 (예: 서버 FQDN 또는 귀하의 이름) []: <– 서버 호스트 이름을 입력하십시오. 내 경우: server1.example.com
이메일 주소 []: <– 엔터를 누르십시오
메일링 리스트 구성
Dovecot 구성
Spamassassin 구성
Amavisd 구성
Getmail 구성
BIND 구성
Jailkit 구성
Pureftpd 구성
Nginx 구성
vlogger 구성
[정보] 서비스 Metronome XMPP 서버가 감지되지 않았습니다
UFW 방화벽 구성
Fail2ban 구성
[정보] 서비스 OpenVZ가 감지되지 않았습니다
앱 vhost 구성
ISPConfig 설치
ISPConfig 포트 [8080]:
관리자 비밀번호 [admin]: <– 원하는 ISPConfig 관리자 사용자 비밀번호를 입력하십시오
ISPConfig 웹 인터페이스에 대한 보안(SSL) 연결을 원하십니까 (y,n) [y]: <– 엔터를 누르십시오
4096 비트 길이의 RSA 개인 키 생성
…………………..++
………………………………………………………………………………………………………………..++
e는 65537 (0x10001)입니다.
인증서 요청에 통합될 정보를 입력해야 합니다.
입력하는 내용은 ‘구별 이름’ 또는 DN이라고 합니다.
몇 가지 필드가 있지만 일부는 비워둘 수 있습니다.
일부 필드에는 기본값이 있습니다.
‘.’를 입력하면 필드가 비워집니다.
—–
국가 이름 (2자리 코드) [AU]: <– 2자리 국가 코드를 입력하십시오
주 또는 지방 이름 (전체 이름) [Some-State]: <– 주 이름을 입력하십시오
지역 이름 (예: 도시) []: <– 도시를 입력하십시오
조직 이름 (예: 회사) [Internet Widgits Pty Ltd]: <– 회사 이름을 입력하거나 엔터를 누르십시오
조직 단위 이름 (예: 섹션) []: <– 엔터를 누르십시오
공통 이름 (예: 서버 FQDN 또는 귀하의 이름) []: <– 서버 호스트 이름을 입력하십시오. 내 경우: server1.example.com
이메일 주소 []: <– 엔터를 누르십시오
다음 ‘추가‘ 속성을 입력하십시오
인증서 요청과 함께 전송됩니다
도전 비밀번호 []: <– 엔터를 누르십시오
선택적 회사 이름 []: <– 엔터를 누르십시오
RSA 키 작성 중
DBServer 구성
ISPConfig crontab 설치
root에 대한 crontab 없음
getmail에 대한 crontab 없음
IP 주소 감지
서비스를 재시작하는 중 …
설치 완료.
설치 프로그램은 모든 기본 서비스를 자동으로 구성하므로 수동 구성은 필요하지 않습니다.
그 후 http(s)://server1.example.com:8080/ 또는 http(s)://192.168.1.100:8080/에서 ISPConfig 3에 접근할 수 있습니다( http 또는 https는 설치 중에 선택한 것에 따라 다릅니다). 사용자 이름 admin과 비밀번호 admin으로 로그인하십시오(첫 로그인 후 기본 비밀번호를 변경해야 합니다):


마지막으로 RoundCube 설치의 일부 권한을 수정합니다.
chown root:ispapps /etc/roundcube/debian-db.php chmod 640 /etc/roundcube/debian-db.php chown root:ispapps /etc/roundcube/config.inc.php chmod 640 /etc/roundcube/config.inc.php chown -R ispapps:adm /var/log/roundcube chmod -R 750 /var/log/roundcube chown -R ispapps:ispapps /var/lib/roundcube/temp chmod -R 750 /var/lib/roundcube/temp
시스템이 이제 사용 준비가 완료되었습니다.
ISPConfig와 RoundCube 웹메일을 통합하기 위한 몇 가지 플러그인이 존재합니다. ISPConfig RoundCube 플러그인 설치 지침을 확인하십시오.
## 20.1 ISPConfig 3 매뉴얼
ISPConfig 3 사용 방법을 배우기 위해 ISPConfig 3 매뉴얼을 다운로드하는 것을 강력히 권장합니다.
300페이지 이상에 걸쳐 ISPConfig의 개념(관리자, 재판매자, 클라이언트)을 다루고, ISPConfig 3 설치 및 업데이트 방법을 설명하며, ISPConfig의 모든 양식 및 양식 필드에 대한 참조와 유효한 입력 예제를 포함하고, ISPConfig 3에서 가장 일반적인 작업에 대한 튜토리얼을 제공합니다. 또한 서버를 더 안전하게 만드는 방법을 설명하고 마지막에 문제 해결 섹션이 포함되어 있습니다.
## 21 이 튜토리얼의 가상 머신 이미지 다운로드
이 튜토리얼은 VMWare 및 Virtualbox와 호환되는 ovf/ova 형식의 즉시 사용 가능한 가상 머신 이미지로 제공됩니다. 가상 머신 이미지는 다음 로그인 세부정보를 사용합니다:
SSH / 셸 로그인
사용자 이름: administrator
비밀번호: howtoforge
사용자 이름: root
비밀번호: howtoforge
ISPConfig 로그인
사용자 이름: admin
비밀번호: howtoforge
MySQL 로그인
사용자 이름: root
비밀번호: howtoforge
VM의 IP는 192.168.0.100이며, /etc/network/interfaces 파일에서 변경할 수 있습니다. 위의 모든 비밀번호를 변경하여 가상 머신을 보호하십시오.
## 22 링크
- Debian: http://www.debian.org/
- ISPConfig: http://www.ispconfig.org/새 게시물을 받은 편지함에서 받기
스팸은 없습니다. 언제든지 구독 해지 가능합니다.