使用ISPConfig 3在Debian上挤压专用Web,电子邮件,DNS和MySQL数据库服务器的多服务器设置
版本1.0
作者:Till Brehm <t [dot] brehm [at] projektfarm [dot] com>
本教程将介绍如何安装具有专用Web,电子邮件,数据库和两个DNS服务器的ISPConfig 3多服务器设置,所有这些服务器都通过单个ISPConfig 3控制面板进行管理。 下面描述的设置使用五个服务器,只需添加更多的服务器即可将其轻松扩展到更多的服务器。 例如,如果您想要有两个邮件服务器,请执行这两个服务器上第2章的设置步骤。 如果要设置更多的Web服务器,请在专家模式的所有其他Web服务器上安装ISPConfig,除了第一个。
1安装五个Debian基础系统
在此设置中,将有一个主服务器(运行Web服务器和ISPConfig控制面板界面)以及四个用于数据库,电子邮件和DNS的从服务器。
要安装群集设置,我们需要五台服务器(或虚拟服务器),并安装Debian 6.0。 基本设置在以下教程中在第1步 - 6中描述:
https://www.youcl.com/info/6346
仅安装完美服务器教程的第1步 - 6,而不是其他步骤,因为它们不同于群集设置!
在我的例子中,我使用以下五个服务器的主机名和IP地址:
网络服务器
主机名: web.example.tld
IP地址: 192.168.0.105
邮件服务器
主机名: mail.example.tld
IP地址: 192.168.0.106
DB服务器
主机名: db.example.tld
IP地址: 192.168.0.107
DNS服务器(主)
主机名: ns1.example.tld
IP地址: 192.168.0.108
DNS服务器(二级)
主机名: ns2.example.tld
IP地址: 192.168.0.109
在下一个安装步骤中会发生这些主机名或IP地址,您必须更改它们以匹配服务器的IP和主机名。
2安装Web服务器
编辑主机文件,并添加所有服务器的IP地址和主机名。 必须调整主机名和IP地址以匹配您的设置。
vi /etc/hosts
127.0.0.1 localhost 192.168.0.105 web.example.tld 192.168.0.106 mail.example.tld 192.168.0.107 db.example.tld 192.168.0.108 ns1.example.tld 192.168.0.109 ns2.example.tld # The following lines are desirable for IPv6 capable hosts ::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
跑...
apt-get update
...更新apt包数据库; 然后运行...
apt-get upgrade
...安装最新的更新(如果有的话)。
通过互联网将系统时钟与NTP( n etwork协议)服务器同步是个好主意。 只需运行...
apt-get -y install ntp ntpdate
...和您的系统时间将始终保持同步。
安装MySQL服务器。 每个服务器都需要一个MySQL服务器实例,因为ISPConfig使用它来同步服务器之间的配置。
apt-get -y install mysql-client mysql-server
在安装程序请求时输入MySQL的新密码。
我们希望MySQL监听主服务器上的所有接口,而不是本地主机,因此我们编辑/etc/mysql/my.cnf
并注释掉bind-address = 127.0.0.1行
:
vi /etc/mysql/my.cnf
[...] # Instead of skip-networking the default is now to listen only on # localhost which is more compatible and is not less secure. #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-curl 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 libruby libapache2-mod-ruby libapache2-mod-perl2 sudo zip wget
您将看到以下问题:
Web服务器自动重新配置:
< - apache2
然后运行以下命令启用Apache模块suexec,重写,ssl,actions和include:
a2enmod suexec rewrite ssl actions include ruby dav_fs dav auth_digest
可以使用以下命令安装PureFTPd和配额:
apt-get -y install pure-ftpd-common pure-ftpd-mysql quota quotatool
编辑文件/ 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”)。 州或省名称(全名)[某些州]:
< - 输入您的州或省名称。 地点名称(例如,城市)[]:
< - 输入您的城市。 组织名称(例如,公司)[互联网Widgits有限公司]:
< - 输入您的组织名称(例如,您公司的名称)。 组织单位名称(如部分)[]:
< - 输入您的组织单位名称(例如“IT部门”)。 通用名称(例如,您的姓名)[]:
< - 输入系统的完全限定域名(例如“server1.example.com”)。 电子邮件地址[]:
< - 输入您的电子邮件地址。
更改SSL证书的权限:
chmod 600 /etc/ssl/private/pure-ftpd.pem
然后重新启动PureFTPd:
/etc/init.d/pure-ftpd-mysql restart
编辑/ etc / fstab
。 我看起来像这样(我添加了usrjquota = aquota.user,grpjquota = aquota.group,jqfmt = vfsv0
到具有挂载点的分区)
vi /etc/fstab
# /etc/fstab: static file system information. # # Use 'blkid' to print the universally unique identifier for a # device; this may be used with UUID= as a more robust way to name devices # that works even if disks are added and removed. See fstab(5). # # <file system> <mount point> <type> <options> <dump> <pass> proc /proc proc defaults 0 0 # / was on /dev/sda1 during installation UUID=92bceda2-5ae4-4e3a-8748-b14da48fb297 / ext3 errors=remount-ro,usrjquota=aquota.user,grpjquota=aquota.group,jqfmt=vfsv0 0 1 # swap was on /dev/sda5 during installation UUID=e24b3e9e-095c-4b49-af27-6363a4b7d094 none swap sw 0 0 /dev/scd0 /media/cdrom0 udf,iso9660 user,noauto 0 0 /dev/fd0 /media/floppy0 auto rw,user,noauto 0 0 |
要启用配额,请运行以下命令:
mount -o remount /
quotacheck -avugm
quotaon -avug
安装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 # Generate static reports: #10 03 * * * www-data [ -x /usr/share/awstats/tools/buildstatic.sh ] && /usr/share/awstats/tools/buildstatic.sh |
安装Jailkit:仅当您希望chroot SSH用户时才需要Jailkit。 它可以安装如下(重要: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 jailkit_2.14-1_*.deb
rm -rf jailkit-2.14*
安装fail2ban:这是可选的,但建议,因为ISPConfig监视器尝试显示日志:
apt-get install fail2ban
要使fail2ban监视PureFTPd,请创建文件/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: \(.*@<HOST>\) \[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 root用户记录。 最简单的方法是使用我们已经安装的基于web的phpmyadmin管理工具。 在网络浏览器中打开URL http://192.168.0.105/phpmyadmin
,以MySQL root用户身份登录并执行这些MySQL查询:
CREATE USER 'root'@'192.168.0.106' IDENTIFIED BY 'myrootpassword';
GRANT ALL PRIVILEGES ON * . * TO 'root'@'192.168.0.106' 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.0.107' IDENTIFIED BY 'myrootpassword';
GRANT ALL PRIVILEGES ON * . * TO 'root'@'192.168.0.107' 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.0.108' IDENTIFIED BY 'myrootpassword';
GRANT ALL PRIVILEGES ON * . * TO 'root'@'192.168.0.108' 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.0.109' IDENTIFIED BY 'myrootpassword';
GRANT ALL PRIVILEGES ON * . * TO 'root'@'192.168.0.109' 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'@'db.example.tld' IDENTIFIED BY 'myrootpassword';
GRANT ALL PRIVILEGES ON * . * TO 'root'@'db.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.0.106
- 192.168.0.109
)替换为服务器的IP地址,并替换mail.example.tld
, db.example.tld
, ns1.example.tld
和ns2.example。 tld
与您的服务器的主机名和myrootpassword
具有所需的root密码。
单击重新加载权限按钮或重新启动MySQL。 然后关闭phpmyadmin。
返回到server1.example.tld
的shell,并下载最新的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
安装方式(标准,专家)[标准]:
< - 专家
服务器的全限定主机名(FQDN),例如server2.domain.tld [web.example.tld]:
< - web.example.tld
MySQL服务器主机名[localhost]:
< - localhost
MySQL root用户名[root]:
< - root
MySQL root密码[]:
< - 在这里输入您的MySQL root密码
MySQL数据库创建[dbispconfig]:
< - dbispconfig
MySQL charset [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]:
< - y
安装ISPConfig Web界面(y,n)[y]:
< - y
ISPConfig端口[8080]:
< - 8080 为ISPConfig Web界面启用SSL(y,n)[y]:
< - y
国家名称(2个字母代码)[AU]: < - ENTER
州或省名(全名)[部分状态]: < - ENTER
地点名称(例如,城市)[]: < - ENTER
组织名称(如公司)[互联网Widgits有限公司]: < - ENTER
组织单位名称(例如,部分)[]: < - ENTER
通用名称(例如,您的姓名)[]: < - ENTER
电子邮件地址[]: < - ENTER
挑战密码[]: < - ENTER
可选的公司名称[]:
< - ENTER
清理安装目录:
cd /tmp
rm -rf /tmp/ispconfig3_install/install
rm -f /tmp/ISPConfig-3-stable.tar.gz