服务器维护,服务器代维,安全设置,漏洞扫描,入侵检测服务

运维之家

 找回密码
 注册
搜索
查看: 5799|回复: 0

Ubuntu Server 安装 IspCP Omega 虚拟主机管理平台系统

[复制链接]
dirtysea 发表于 2010-7-23 17:52:43 | 显示全部楼层 |阅读模式
IspCP Omega 简单介绍:
IspCP 是作为另一款开源虚拟主机管理系统 VHCS2 的替代产品,采用 Apache2+PHP5(fastcgi模式,支持每个虚机独立的php.ini)+MySQL5(提供内置的 phpmyadmin) 提供 Web 服务(也支持传统的 CGI),FTP 采用 Proftpd(也支持 webftp 功能),邮件是 postfix+courier+squirrermail,和 IspCP 管理平台(PHP 代码,支持管理员、代理商、虚拟主机用户三级用户,相互之间可以自由切换,自由增加子域名、FTP、MySQL、Mail 账号),另外对于每个虚拟主机都有独立的每天完整备份机制(可以用 FTP 下载)。

参考网站和官方文档:
http://isp-control.net/
http://www.isp-control.net/documentatio ... ion/ubuntu

实测环境:
Ubuntu Server 8.04.2 hardy
最好是使用全新安装的系统。

安装前的准备工作:
升级系统,直接以 root 身份来执行:
代码:
sudo -s
apt-get update && apt-get dist-upgrade


然后,清理一下系统:
代码:
apt-get remove ppp pppconfig pppoeconf ubuntu-standard
update-inetd --remove daytime
update-inetd --remove telnet
update-inetd --remove time
update-inetd --remove finger
update-inetd --remove talk
update-inetd --remove ntalk
update-inetd --remove ftp
update-inetd --remove discard
apt-get autoremove
dpkg -l | grep ^rc | awk '{print $2}' | xargs dpkg -P
aptitude purge ~ilinux-image-.*\(\!`uname -r`\)


安装 ispcp 需要的软件包
下载解压 ispcp:
代码:
cd /root
wget http://sourceforge.net/project/d ... p_id=189485&filename=ispcp-omega-1.0.0.tar.bz2
tar xjf ispcp-omega-1.0.0.tar.bz2
cd ./ispcp-omega-1.0.0

在进行下一步之前**下 ubuntu 的版本:
代码:
cat /etc/issue

根据版本选择具体的脚本,
8.04:
代码:
apt-get install $(cat ./docs/Ubuntu/ubuntu-packages-hardy)

8.10:
代码:
apt-get install $(cat ./docs/Ubuntu/ubuntu-packages-interpid)

建议系统已经安装相关软件包的,使用 apt-get remove 替换上面的代码先卸载,并清除配置文件。一定要先备份相关配置和数据。
对于 courier 的配置,选择“no”。
postfix 选择“Internet site”,然后填“root”。接下来的域是在安装系统时填写的,最好不要用未来准备使用的域名(否则收不到邮件,因为系统接管了,不能作为虚拟域)。最后选择“no”。
proftpd 选择“Standalone”即可。
rootkithunter 选择两个“Yes”。
这些配置不一定全会设置,看之前是否有安装过。

配置安装脚本
可选的操作,建议事先修改一下 ispcp.conf 文件。
代码:
nano ./configs/ubuntu/ispcp.conf

修改下面的设置:
代码:
DEFAULT_ADMIN_ADDRESS = larryli@test.com # 管理员邮箱
BASE_SERVER_IP = 0.0.0.0 # 监控所有 IP
BASE_SERVER_VHOST = admin.test.com # ispcp 的域名
PHP_FASTCGI = fastcgi # 使用 fastcgi 另一个不能用
AWSTATS_ACTIVE = yes # 开启 awstats 统计
BACKUP_HOUR = 5 # 自动备份的时间
BACKUP_MINUTE = 1
DATE_FORMAT = Y-m-d # 日期格式


安装 ispcp
代码:
make -f Makefile.ubuntu install

复制所有的编译好的目录和文件进系统(在复制之前,建议备份,可以根据要复制的文件或目录来查看备份)
代码:
cp -Rv /tmp/ispcp/* /

等待脚本执行完成后,再运行安装脚本:
代码:
cd /var/www/ispcp/engine/setup

建议另外打开一个控制台运行下面的命令,以便安装脚本获取随机数:
代码:
perl -le '$_ = 1; (1 x $_) !~ /^(11+)\1+$/ && print while $_++';

如果,遇到脚本有卡死的现象,就只有在服务器上登录一个控制台,随便按几下键盘。之前我有在 putty 虚拟控制台上安装,总是在下面的一步过不去。。。
另外,安装时需要 mysql 的 root 密码。
代码:
./ispcp-setup

要填写的选项,上面基本已经设置过了。需要再次重申的就是,一定要用 fastcgi。密码的设置只需要记下 ispcp 管理员的那个。postfix 和 proftpd 的让脚本自动生成就不用管了。
安装完成后,可以先手工清除临时文件:
代码:
rm -fR /tmp/ispcp

重启系统:
代码:
shutdown -r now

然后,访问设置的 ispcp 域名。比如 http://admin.test.com
登录后访问 http://admin.test.com/admin/multilanguage.php 上传中文语言包(语言包 ispcp 有自带),然后在 http://admin.test.com/admin/settings.php 设置为默认语言。

双线主机的 IP 设置
ispcp 能管理服务器的多个 ip,但是国内的双线主机实际是要在两个 ip 上同时设置。
代码:
nano /etc/ispcp/ispcp.conf

修改内容:
代码:
BASE_SERVER_IP = 0.0.0.0

然后
代码:
nano /etc/apache2/sites-enabled/00_master.conf

修改
代码:
<VirtualHost 0.0.0.0:80>

重启 apache
代码:
/etc/init.d/apache2 restart

在 ispcp 的 ip 管理 http://admin.test.com/admin/ip_manage.php 删除原有的 ip,增加 0.0.0.0 这个 ip 即可。

模板修改
模板在 /var/www/ispcp/gui/themes/ 目录,貌似只支持 omega 这一个,直接修改它的文件好了。
建议修改 /var/www/ispcp/gui/domain_default_page/ 的默认虚拟主机页面和 /var/www/ispcp/gui/errordocs/ 的默认出错页面。
对于在线修改错误页面中文乱码的问题:
代码:
nano /var/www/ispcp/gui/client/error_edit.php

修改如下:
代码:
# 找到 $tpl->assign(array('ERROR' => htmlentities($error))); 修改为
$tpl->assign(array('ERROR' => htmlspecialchars($error)));

另外还有:
代码:
nano /var/www/ispcp/gui/include/ispcp-lib.php

修改:
代码:
# 修改 $_POST    = $purifier->purifyArray($_POST);
   if (isset($_POST['error']) && isset($_POST['uaction']) && $_POST['uaction'] === 'updt_error') $error = $_POST['error'];
   $_POST    = $purifier->purifyArray($_POST);
   if (isset($_POST['error']) && isset($_POST['uaction']) && $_POST['uaction'] === 'updt_error') $_POST['error'] = $error;


修改默认模板后邮件乱码的问题
这个没完全修改好,可能有些邮箱收到的邮件标题还是会有问题:
代码:
nano /var/www/ispcp/gui/include/admin-functions.php

内容如下:
代码:
# 找到 function encode($in_str, $charset = 'UTF-8') { 的 if ($out_str && $charset) { 行,增加
      if (function_exists('mb_strlen')) {
          $start = "=?" . $charset . "?B?";
          $end = "?=";
          $encoded = "";

          $mb_length = mb_strlen($out_str, $charset);
          // Each line must have length <= 75, including $start and $end
          $length = 75 - strlen($start) - strlen($end);
          // Average multi-byte ratio
          $ratio = $mb_length / strlen($out_str);
          // Base64 has a 4:3 ratio
          $offset = $avgLength = floor($length * $ratio * .75);

          for ($i = 0; $i < $mb_length; $i += $offset) {
               $lookBack = 0;

             do {
                 $offset = $avgLength - $lookBack;
                 $chunk = mb_substr($out_str, $i, $offset, $charset);
                 $chunk = base64_encode($chunk);
                 $lookBack++;
               }
               while (strlen($chunk) > $length);

               $encoded .= $chunk . "\r\n";
          }

          // Chomp the last linefeed
          return $start . substr($encoded, 0, -strlen("\r\n")) . $end;

      }


允许增加一个字母的子域名
很多时候用户希望域名越短越好,ispcp 则不允许。。。
代码:
nano /var/www/ispcp/gui/include/input-checks.php

在 chk_username 中,找到:
代码:
if (!preg_match("/^[A-Za-z0-9][A-Za-z0-9\.\-_]*[A-Za-z0-9]$/D", $username))

修改为:
代码:
if (!preg_match("/^[A-Za-z0-9][A-Za-z0-9\.\-_]*$/D", $username))

在 check_dn_token 中找到:
代码:
if (!preg_match("/^([A-Za-z0-9])([A-Za-z0-9\-]*)([A-Za-z0-9])$/D", $data))

修改为:
代码:
if (!preg_match("/^([A-Za-z0-9])([A-Za-z0-9\-]*)$/D", $data))


安装 Zend Optimizer
先下载好了,具体请访问 http://www.zend.com/
代码:
cd /tmp
tar zxvf ~/ZendOptimizer-3.3.3-linux-glibc23-i386.tar.gz
cd ZendOptimizer-3.3.3-linux-glibc23-i386/
./install.sh

安装时选择 php.ini 目录为 /etc/php5/cgi,不使用 Apache。
完成后,修改下面的文件:
代码:
nano /etc/ispcp/fcgi/parts/master/php5/php.ini
nano /etc/ispcp/fcgi/parts/php5/php.ini
nano /var/www/fcgi/master/php5/php.ini

内容均为在最后增加:
代码:
[Zend]
zend_extension_manager.optimizer=/usr/local/Zend/lib/Optimizer-3.3.3
zend_extension_manager.optimizer_ts=/usr/local/Zend/lib/Optimizer_TS-3.3.3
zend_optimizer.version=3.3.3
zend_extension=/usr/local/Zend/lib/ZendExtensionManager.so
zend_extension_ts=/usr/local/Zend/lib/ZendExtensionManager_TS.so

当然也可以把这个单独保存为 zend.ini 到 conf.d 目录。就像下面提到的方法。
上面的修改对于已存在的虚拟主机需要一一修改各自的 php.ini 才行。

安装 mcrypt 或其他 PHP 扩展
代码:
nano /etc/php5/conf.d/mcrypt.ini

内容为:
代码:
extension=mcrypt.so

然后,做一个软链接:
代码:
ln -s /etc/php5/conf.d/mcrypt.ini /etc/php5/cgi/conf.d/mcrypt.ini

上诉修改后都需要重启 apache。

对于 ispcp 的使用无需多言,很简单明了。
目前只是支持 php5 和 cgi,不过直接修改配置文件可以让虚拟主机支持 tomcat/jsp、python 等其他语言,只是没有管理平台可用。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|小黑屋|手机版|Archiver|运维之家

GMT+8, 2024-3-28 16:24 , Processed in 0.135073 second(s), 14 queries .

Powered by Dirtysea

© 2008-2020 Dirtysea.com.

快速回复 返回顶部 返回列表