完美的服务器——CentOS 7.4 与 Apache、Postfix、Dovecot、Pure-FTPD、BIND 和 ISPConfig 3.1
本教程适用于这些操作系统版本
- 中央操作系统 7
在此页
- 1 条要求
- 2 初步说明
- 3 准备服务器
- 4 启用其他存储库并安装一些软件
- 5 配额
- 在 /(根)分区上启用配额
- 在单独的 /var 分区上启用配额
本教程展示了在 CentOS 7.4(64 位)服务器上安装 ISPConfig 3.1。 ISPConfig 是一个网络托管控制面板,允许您通过网络浏览器配置以下服务:Apache 网络服务器、Postfix 邮件服务器、MySQL、BIND 名称服务器、PureFTPd、SpamAssassin、ClamAV、Mailman 等等。
1 要求
要安装这样的系统,您需要具备以下条件:
- Centos 7.4 最小服务器系统。这可以是按照我们的 Centos 7 最小服务器教程中所述从头开始安装的服务器,也可以是安装了最小 Centos 7.4 安装程序的托管公司的虚拟服务器或根服务器。
- 快速的互联网连接。
2 初步说明
在本教程中,我使用主机名 server1.example.com,IP 地址为 192.168.0.100,网关为 192.168.0.1。这些设置可能因您而异,因此您必须在适当的地方替换它们。
请注意,CentOS 平台的 ISPConfig 尚不支持 HHVM 和 XMPP。如果您想在 ISPConfig 中管理 XMPP 聊天服务器或在 ISPConfig 网站中使用 HHVM(Hip Hop 虚拟机),请使用 Debian 或 Ubuntu 16.04 作为服务器操作系统,而不是 CentOS 7.4。
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 destinationChain FORWARD (policy ACCEPT)
target prot opt source destinationChain 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 地址:
[ ~]#
如果你的网卡没有出现在那里,那么它没有在启动时启用,在这种情况下,打开文件 /etc/sysconfig/network-scripts/ifcfg-eth0
nano /etc/sysconfig/network-scripts/ifcfg-ens33
并将 ONBOOT 设置为是:
[...]
ONBOOT=yes
[...]并重启服务器。
检查您的 /etc/resolv.conf 是否列出了您之前配置的所有名称服务器:
cat /etc/resolv.conf
如果缺少名称服务器,请运行
nmtui
并再次添加缺少的名称服务器。
现在,关于配置...
调整 /etc/hosts 和 /etc/hostname
接下来,我们将编辑 /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在 /etc/hostname 文件中设置主机名。该文件应包含完全限定的域名(例如 server1.example.com 在我的例子中),而不仅仅是像“server1”这样的短名称。使用 nano 编辑器打开文件:
nano /etc/hostname
并在文件中设置主机名。
server1.example.com
保存文件并退出 nano。
禁用 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
4 启用其他存储库并安装一些软件
首先,我们导入软件包的 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 -y update
现在我们安装一些后面需要用到的软件包:
yum -y groupinstall 'Development Tools'
5 名额
(如果您选择了与我不同的分区方案,则必须调整本章以便将配额应用于您需要的分区。)
要安装配额,我们运行以下命令:
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="crashkernel=auto rd.lvm.lv=centos/root rd.lvm.lv=centos/swap 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启用配额。当您收到没有启用配额的分区的错误时,请在继续之前重新启动服务器。
6 安装Apache、MySQL、phpMyAdmin
我们可以使用一个命令安装所需的包:
yum -y install ntp httpd mod_ssl mariadb-server php php-mysql php-mbstring phpmyadmin
为保证服务器不被HTTPOXY漏洞攻击,我们将全局禁用apache中的HTTP_PROXY header。
在 httpd.conf 文件末尾添加 apache header 规则:
echo "RequestHeader unset Proxy early" >> /etc/httpd/conf/httpd.conf
并重新启动 httpd 以应用配置更改。
service httpd restart