서버 설정 · 6 min read · Sep 22, 2025

완벽한 서버 – Apache2, Postfix, Dovecot, Pure-FTPD, BIND 및 ISPConfig 3가 포함된 CentOS 7.1

이 튜토리얼에서는 CentOS 7.1 (64Bit) 서버에 ISPConfig 3를 설치하는 방법을 보여줍니다. ISPConfig 3는 웹 브라우저를 통해 다음 서비스를 구성할 수 있는 웹 호스팅 제어판입니다: Apache 웹 서버, Postfix 메일 서버, MySQL, BIND 네임서버, PureFTPd, SpamAssassin, ClamAV, Mailman 등. 3.0.4 버전부터 ISPConfig는 Apache 외에도 nginx 웹 서버에 대한 완전한 지원을 제공합니다. 이 튜토리얼에서는 nginx가 아닌 Apache를 사용하는 서버의 설정을 다룹니다.

1 요구 사항

이러한 시스템을 설치하려면 다음이 필요합니다:

  • Centos 7.1 최소 서버 시스템. 이는 우리의 Centos 7.1 최소 서버 튜토리얼에 설명된 대로 처음부터 설치된 서버이거나 최소 Centos 7.1 설정이 설치된 호스팅 회사의 가상 서버 또는 루트 서버일 수 있습니다.
  • 빠른 인터넷 연결.

2 사전 참고

이 튜토리얼에서는 호스트 이름 server1.example.com과 IP 주소 192.168.1.100 및 게이트웨이 192.168.1.254를 사용합니다. 이러한 설정은 귀하와 다를 수 있으므로 적절한 곳에서 교체해야 합니다.

3 키보드 레이아웃 설정

서버의 키보드 레이아웃이 귀하의 키보드와 일치하지 않는 경우, localectl 명령어로 올바른 키보드로 전환할 수 있습니다(제 경우에는 독일어 키보드 레이아웃인 “de”):

localectl set-keymap de

사용 가능한 모든 키맵의 목록을 얻으려면 다음을 실행하십시오:

localectl list-keymaps

이 튜토리얼의 끝에서 ISPConfig를 설치하고 싶습니다. ISPConfig는 제가 방화벽으로 사용하고 싶은 Bastille 방화벽 스크립트를 포함하고 있으므로 기본 CentOS 방화벽을 지금 비활성화합니다. 물론 CentOS 방화벽을 켜두고 필요에 맞게 구성할 수도 있습니다(하지만 그러면 나중에 다른 방화벽을 사용하지 말아야 합니다. 왜냐하면 그것이 CentOS 방화벽과 간섭할 가능성이 높기 때문입니다).

다음 명령어를 실행하십시오…

yum -y install net-tools  
systemctl stop firewalld.service  
systemctl disable firewalld.service

CentOS 방화벽을 중지하고 비활성화합니다.

그런 다음 방화벽이 실제로 비활성화되었는지 확인해야 합니다. 그렇게 하려면 다음 명령어를 실행하십시오:

iptables -L

출력은 다음과 같아야 합니다:

[root@server1 ~]# iptables -L  
Chain INPUT (policy ACCEPT)  
target prot opt source destination
Chain FORWARD (policy ACCEPT)  
target prot opt source destination
Chain OUTPUT (policy ACCEPT)  
target prot opt source destination

또는 firewall-cmd 명령어를 사용하십시오:

firewall-cmd --state
[root@server1 ~]# firewall-cmd --state  
not running  
[root@server1 ~]#

이제 네트워크 구성 편집기와 다음 단계에서 구성 파일을 편집하는 데 사용할 셸 기반 편집기 “nano”를 설치하겠습니다:

yum -y install nano wget NetworkManager-tui

설치 중에 네트워크 카드를 구성하지 않았다면 지금 할 수 있습니다. 다음을 실행하십시오…

nmtui

… 그리고 연결 편집으로 이동하십시오:

네트워크 인터페이스를 선택하십시오:

그런 다음 네트워크 세부정보를 입력하십시오 - DHCP를 비활성화하고 정적 IP 주소, 넷마스크, 게이트웨이 및 하나 또는 두 개의 네임서버를 입력한 후 확인을 누르십시오:

다음으로 네트워크 설정에서 변경 사항을 확인하기 위해 확인을 선택하십시오

그리고 nmtui 네트워크 구성 도구를 닫으려면 종료를 선택하십시오.

이제 다음을 실행하여 설치 프로그램이 IP 주소를 올바르게 가져왔는지 확인해야 합니다:

ifconfig
[root@server1 ~]# ifconfig
ens33: flags=4163  mtu 1500
        inet 192.168.1.100  netmask 255.255.255.0  broadcast 192.168.1.255
        inet6 fe80::20c:29ff:fecd:cc52  prefixlen 64  scopeid 0x20

        ether 00:0c:29:cd:cc:52  txqueuelen 1000  (Ethernet)
        RX packets 55621  bytes 79601094 (75.9 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 28115  bytes 2608239 (2.4 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10
        loop  txqueuelen 0  (Local Loopback)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

네트워크 카드가 여기에 표시되지 않으면 부팅 시 활성화되지 않은 것입니다. 이 경우 /etc/sysconfig/network-scripts/ifcfg-eth0 파일을 열어야 합니다:

nano /etc/sysconfig/network-scripts/ifcfg-ens33

그리고 ONBOOT을 yes로 설정하십시오:

[...]  
ONBOOT=yes  
[...]  

서버를 재부팅하십시오.

/etc/resolv.conf를 확인하여 이전에 구성한 모든 네임서버가 나열되어 있는지 확인하십시오:

cat /etc/resolv.conf

네임서버가 누락된 경우 다음을 실행하십시오:

nmtui

그리고 누락된 네임서버를 다시 추가하십시오.

이제 구성으로 넘어가겠습니다…

4 /etc/hosts 조정

다음으로 /etc/hosts를 편집합니다. 다음과 같이 만드십시오:

nano /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4  
192.168.1.100   server1.example.com     server1  
  
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6

5 SELinux 비활성화

SELinux는 CentOS의 보안 확장으로, 확장된 보안을 제공해야 합니다. 제 생각에는 안전한 시스템을 구성하는 데 필요하지 않으며, 일반적으로 장점보다 더 많은 문제를 일으킵니다(어떤 서비스가 예상대로 작동하지 않아 일주일 동안 문제 해결을 한 후, 모든 것이 괜찮았고 오직 SELinux가 문제를 일으켰다는 것을 알게 되면 생각해 보십시오). 따라서 저는 이를 비활성화합니다(나중에 ISPConfig를 설치하려면 반드시 필요합니다).

/etc/selinux/config를 편집하고 SELINUX=disabled로 설정하십시오:

nano /etc/selinux/config
# 이 파일은 시스템에서 SELinux의 상태를 제어합니다.
# SELINUX=은 다음 세 가지 값 중 하나를 가질 수 있습니다:
#     enforcing - SELinux 보안 정책이 시행됩니다.
#     permissive - SELinux가 시행하는 대신 경고를 출력합니다.
#     disabled - SELinux 정책이 로드되지 않습니다.
SELINUX=disabled
# SELINUXTYPE=은 다음 두 가지 값 중 하나를 가질 수 있습니다:
#     targeted - 대상 프로세스가 보호됩니다,
#     mls - 다중 수준 보안 보호.
SELINUXTYPE=targeted

그 후 시스템을 재부팅해야 합니다:

reboot

6 추가 리포지토리 활성화 및 소프트웨어 설치

먼저 소프트웨어 패키지에 대한 GPG 키를 가져옵니다:

rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY*

그런 다음 CentOS 시스템에서 EPEL 리포지토리를 활성화합니다. 이 튜토리얼에서 설치할 많은 패키지가 공식 CentOS 7 리포지토리에서 사용할 수 없습니다:

yum -y install epel-release
yum -y install yum-priorities

/etc/yum.repos.d/epel.repo를 편집하십시오…

nano /etc/yum.repos.d/epel.repo

… 그리고 [epel] 섹션에 priority=10 행을 추가하십시오:

[epel]
name=Enterprise Linux 7용 추가 패키지 - $basearch
#baseurl=http://download.fedoraproject.org/pub/epel/7/$basearch
mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=epel-7&arch=$basearch
failovermethod=priority
enabled=1
priority=10
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7
[...]

그런 다음 시스템의 기존 패키지를 업데이트합니다:

yum update

이제 나중에 필요한 소프트웨어 패키지를 설치합니다:

yum -y groupinstall 'Development Tools'

7 쿼터

(제가 선택한 파티션 구성 방식과 다르게 선택한 경우, 쿼터가 필요한 파티션에 적용되도록 이 장을 조정해야 합니다.)

쿼트를 설치하려면 다음 명령어를 실행합니다:

yum -y install quota

이제 웹사이트(/var/www) 및 메일 데이터(var/vmail)가 저장되는 파일 시스템에 쿼트가 이미 활성화되어 있는지 확인합니다. 이 예제 설정에서는 하나의 큰 루트 파티션이 있으므로 ‘ / ‘를 검색합니다:

mount | grep ' / '
[root@server1 ~]# mount | grep ' / '  
/dev/mapper/centos-root on / type xfs (rw,relatime,attr2,inode64,noquota)  
[root@server1 ~]#

별도의 /var 파티션이 있는 경우, 대신 다음을 사용하십시오:

mount | grep ' /var '

해당 행에 “ noquota “라는 단어가 포함되어 있으면 쿼트를 활성화하기 위해 다음 단계를 진행하십시오.

/ (루트) 파티션에서 쿼트 활성화

일반적으로 /etc/fstab 파일에서 쿼트를 활성화하지만, 파일 시스템이 루트 파일 시스템 “ / “인 경우, 쿼트는 Linux 커널의 부팅 매개변수로 활성화해야 합니다.

grub 구성 파일을 편집하십시오:

nano /etc/default/grub

GRUB_CMDLINE_LINUX로 시작하는 행을 검색하고 rootflags=uquota,gquota를 명령줄 매개변수에 추가하여 결과 행이 다음과 같아지도록 합니다:

GRUB_CMDLINE_LINUX="rd.lvm.lv=centos/swap vconsole.font=latarcyrheb-sun16 rd.lvm.lv=centos/root crashkernel=auto  vconsole.keymap=us rhgb quiet rootflags=uquota,gquota"

변경 사항을 적용하려면 다음 명령어를 실행하십시오.

cp /boot/grub2/grub.cfg /boot/grub2/grub.cfg_bak  
grub2-mkconfig -o /boot/grub2/grub.cfg

서버를 재부팅하십시오.

reboot

이제 쿼트가 활성화되었는지 확인하십시오:

mount | grep ' / '
[root@server1 ~]# mount | grep ' / '  
/dev/mapper/centos-root on / type xfs (rw,relatime,attr2,inode64,usrquota,grpquota)  
[root@server1 ~]#

쿼트가 활성화되면 마운트 옵션 목록에서 “ usrquota,grpquota “를 볼 수 있습니다.

별도의 /var 파티션에서 쿼트 활성화

별도의 /var 파티션이 있는 경우, /etc/fstab을 편집하고 / 파티션에 ,uquota,gquota를 추가합니다 ( /dev/mapper/centos-var):

nano /etc/fstab
  
#  
# /etc/fstab  
# 2014년 9월 21일 일요일 16:33:45에 anaconda에 의해 생성됨  
#  
# 참조에 의해 접근 가능한 파일 시스템은 '/dev/disk' 아래에 유지됩니다  
# 더 많은 정보는 fstab(5), findfs(8), mount(8) 및/또는 blkid(8) 매뉴얼 페이지를 참조하십시오  
#  
/dev/mapper/centos-root /                       xfs     defaults        1 1  
/dev/mapper/centos-var /var                     xfs     defaults,uquota,gquota        1 2  
UUID=9ac06939-7e43-4efd-957a-486775edd7b4 /boot                   xfs     defaults        1 3  
/dev/mapper/centos-swap swap                    swap    defaults        0 0

그런 다음 다음을 실행하십시오:

mount -o remount /var
quotacheck -avugm  
quotaon -avug

쿼트를 활성화합니다. 쿼트가 활성화된 파티션이 없다는 오류가 발생하면 계속 진행하기 전에 서버를 재부팅하십시오.

8 Apache, MySQL, phpMyAdmin 설치

필요한 패키지를 한 번의 명령어로 설치할 수 있습니다:

yum -y install ntp httpd mod_ssl mariadb-server php php-mysql php-mbstring phpmyadmin
Share: X/Twitter LinkedIn

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

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