完美的服务器——CentOS 7.1 与 Apache2、Postfix、Dovecot、Pure-FTPD、BIND 和 ISPConfig 3
本教程介绍如何在 CentOS 7.1(64 位)服务器上安装 ISPConfig 3。 ISPConfig 3 是一个网络托管控制面板,允许您通过网络浏览器配置以下服务:Apache 网络服务器、Postfix 邮件服务器、MySQL、BIND 名称服务器、PureFTPd、SpamAssassin、ClamAV、Mailman 等等。从 3.0.4 版本开始,ISPConfig 除了 Apache 之外还全面支持 nginx 网络服务器;本教程涵盖了使用 Apache 而不是 nginx 的服务器的设置。
1 要求
要安装这样的系统,您需要具备以下条件:
- Centos 7.1 最小服务器系统。这可以是按照我们的 Centos 7.1 最小服务器教程中所述从头开始安装的服务器,也可以是安装了最小 Centos 7.1 安装程序的托管公司的虚拟服务器或根服务器。
- 快速的互联网连接。
2 初步说明
在本教程中,我使用主机名 server1.example.com,IP 地址为 192.168.1.100,网关为 192.168.1.254。这些设置可能因您而异,因此您必须在适当的地方替换它们。
3 设置键盘布局
如果服务器的键盘布局与您的键盘不匹配,您可以切换到正确的键盘(在我的例子中是德语键盘布局的“de”,使用 localectl 命令:
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
输出应如下所示:
[ ~]# 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
[ ~]#
现在我将安装网络配置编辑器和基于 shell 的编辑器“nano”,我将在接下来的步骤中使用它们来编辑配置文件:
yum -y install nano wget NetworkManager-tui
如果您在安装期间没有配置您的网卡,您现在就可以配置了。跑步...
nmtui
...并转到编辑连接:

选择您的网络接口:

然后填写您的网络详细信息 - 禁用 DHCP 并填写静态 IP 地址、网络掩码、您的网关和一个或两个名称服务器,然后点击确定:

接下来选择确定以确认您在网络设置中所做的更改

并退出以关闭 nmtui 网络配置工具。

你应该跑
ifconfig
现在检查安装程序是否正确获取您的 IP 地址:
[ ~]# ifconfig
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> 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<UP,LOOPBACK,RUNNING> 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 设置为是:
[...]
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
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
# enforcing - SELinux security policy is enforced.
# permissive - SELinux prints warnings instead of enforcing.
# disabled - No SELinux policy is loaded.
SELINUX=disabled
# SELINUXTYPE= can take one of these two values:
# targeted - Targeted processes are protected,
# mls - Multi Level Security protection.
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
...并将行 priority=10 添加到 [epel] 部分:
[epel]
name=Extra Packages for 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) 和 maildir 数据 (var/vmail) 的文件系统启用了配额。在这个示例设置中,我有一个大的根分区,所以我搜索/:
mount | grep ' / '
[ ~]#
如果您有单独的 /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 ' / '
[ ~]#
当配额激活时,我们可以在挂载选项列表中看到“usrquota,grpquota”。
在单独的 /var 分区上启用配额
如果你有一个单独的 /var 分区,那么编辑 /etc/fstab 并将 ,uquota,gquota 添加到/分区 (/dev/mapper/centos-var):
nano /etc/fstab
#
# /etc/fstab
# Created by anaconda on Sun Sep 21 16:33:45 2014
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
/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