本来有一台Linux服务器,运行Debian 4.0 Etach 和 ISPCP 1.0.0 RC6

近期看到ISPCP正式版已经发布好久了,就决定升级.升级路线是首先 升级Debian 到 Lenny (5.0),然后再升级ISPCP

A 升级Linux

升级的方法很简单

1) (可选的) 检查你的更新源列表(sources.list)

apt-spy -d stable -t 5 update #是用Stable或者Lenny现阶段效果应该是一样的

有些指南让你加上国家和地区参数,时间没有必要,事实上我们访问最快的源往往都在国外。

你也可以手动去更新 /etc/apt/sources.list

2) 更新系统

aptitude update && aptitude upgrade

这一步可能需要反复运行几次,如果有软件版本冲突提示,你需要运行 aptitude 手动选择冲突解决方案

一直运行到aptitude update && aptitude upgrade提示没有需要更新软件包了,系统升级完成

3)可能遇到的问题

我遇到问题是:Mysql升级到5.2以后不能自动启动了,检查 /etc/log/daemon.log发现一个提示

/etc/init.d/mysql[2130]: ERROR: Using expire_logs_days without log_bin crashes the server. See README.Debian.gz

log_bin = /var/log/mysql/mysql-bin.log
expire_logs_days = 10

修改 /etc/mysql/my.cnf 解决问题

#log_bin = /var/log/mysql/mysql-bin.log #这一行本来是被注释掉的

expire_logs_days = 10

完成上述步骤后服务器及ISPCP应该仍然可以正常工作,检查处理完可能存在的问题后,准备升级ISPCP

B) 更新 ISPCP到 1.0.2

安装ISCP官方说明逐步操作

http://www.isp-control.net/documentation/doku.php?id=start:upgrade:rc

几点说明:

1)更新/ect/apt/sourcs.list

直接使用上述apt-spy获取的sources.list,按如下格式添加 contrib 和 non-free 参数

deb http://ftp.tw.debian.org/debian/ lenny main contrib non-free

deb http://security.debian.org/ lenny/updates main contrib non-free

deb-src http://ftp.tw.debian.org/debian/ lenny main contrib non-free

2) 如果你已经采取了其他系统备份措施,官方说明中的第6步(BACKUPS)是可以跳过的

3) 第9步:【 cp -Rv /tmp/ispcp/var/* /var/ 】,你可能会遇到一个无法覆盖的提示: /var/www/ispcp/daemon/ispcp_daemon Text in busy,你可以忽略,或者先停止ispcp_daemon【/etc/init.d/ispcp_daemon stop】

4)如果你在perl ispcp-update 过程中遇到需要输入密码的步骤,如果恰好你又选择了 【auto generated 】,恩,慢慢等吧,不是死机了,就是慢。

5)如果你安装官方步骤升级完遇到服务器报”500 Server Error”错误

出现这个错误的可能原因很多,首先你需要检查你的Apache,FastCGI,PHP是否使用了非官方集成的插件,比如eAccelerator等。500错误一般出现在FastCGI和PHP引擎。

我的情况是eAccelerator版本过期,因为PHP升级了,所以需要重新编译eAccelerator

有关eAccelerator的安装和配置参阅 http://isp-control.net/documentation/doku.php?id=howto:eaccelerator

6)学会追踪分析各类日志文件是解决各类问题的最好方法,比如上述500问题,如果不是通过日志分析,想找到问题根源实在是太难。而且ISPCP默认没有启用PHP的错误日志文件记录,我还是手动修改PHP.ini,启用PHP日志后才追踪发现问题的根源的。

/var/log/* 大部分系统LOG文件都是放在这里的

7) ISPCP的配置和日志文件结构

/etc
     /apach2
             /apache2.conf           #apache 主配置文件
             /conf.d/*               #附加配置文件
             /mods-*/*               #附加MOD配置文件
             /sites-*/*              #站点配置文件
             /ispcp                  #ISPCP各客户站点配置,这个目录实际上链接到了 /sites-*/* 目录下了
     /php5
             /cgi/php.ini            #php 主配置文件
             /cli/phpini             #php 的 cli 配置文件
             /conf.d/*               #PHP 附加配置文件
     /ispcp
             /ispcp.conf             #ispcp 主配置文件
             /apache/*               #apache 相关的配置文件模板
             /fcgi/*                 #php    相关的配置文件模板和脚本模板
             /*other                 #应该是其他一些相关配置的模板
/var/www
     /fcgi                           #各客户站点的PHP配置文件及FastCGI的PHP启动脚本
             /domain.com             #一个站点
                /php5/php.ini        #PHP 的站点配置文件
                /php5-fcgi-starter   #启动PHP 的FASTCGI脚本
     /ispcp                          #ispcp的运行文件
             /gui                    #管理站点文件
     /virtual/domain.com             #各个客户站点主目录
             /htdocs                 #网站根目录
             /errors                 #错误提示的相关文件HTML
             /cgi-bin                #脚本目录
             /backups                #备份文件,自动/手动
             /logs                   #这个不用说了吧,默认的这里放的是Apache的LOG文件
             /phptmp                 #脚本临时文件,默认的Session文件放这里的
/var/log
     /kern.log                       #系统核心
     /daemon.log                     #系统服务
     /mysql.err
     /mysql.log
     /mysql/*                        #Mysql想关的LOG
     /apache2/*                      #Apache的LOG(Combined,error,traf,suexec等到)还有各个站点,
                                     #这里的LOG和/var/www/virtual//domain.com/log 是什么关系我还没搞清楚

8) 关于修改ISPCP配置模板文件以后如何刷新各站点,请参阅:

http://www.isp-control.net/documentation/doku.php?id=howto:ispcp:regenerate_config

关于PHP的站点配置文件刷新,官方说明有误刷新前你必须删除原有的站点配置文件,才会刷新,另外master站点不会刷新的。

ISPCP的各处PHP配置文件加载顺序为
1 /etc/php5/cgi/php.ini
2 /var/www/fcgi/domain.com/php5/php.ini
3 /etc/php5/conf.d/*

下面的配置会覆盖上面的配置,所以你可以把共性的配置定义放到conf.d目录下,专门建立一个文件放置。而把需要每个站点单独配置的特别是设计路径的配置项放到parts/php.ini中,然后刷新生效。

下面是我的对配置文件的修改

;添加到 /etc/ispcp/fcgi/parts/php5/php.ini 结尾
[Append per site]
eaccelerator.cache_dir = "{WWW_DIR}/{DMN_NAME}/phptmp"
error_log               = {WWW_DIR}/{DMN_NAME}/logs/php-error.log
;添加到 /etc/php5/conf.d/my.ini

disable_functions = show_source, system, shell_exec, passthru, exec, phpinfo, shell, symlink, popen, proc_open

file_uploads		= On

upload_max_filesize	= 20M
post_max_size		= 30M

;memory_limit		= 128M

max_input_time		= 300
;max_execution_time	= 30 

error_reporting      =  E_ALL & ~E_NOTICE | E_WARNING | E_STRTCT
log_errors             = On
display_errors	= Off

下面是我写的一个自动刷新ISPCP PHP配置文件的脚本

#!/bin/sh
/etc/init.d/ispcp_daemon stop

echo 'Enter the password of root for mysql'
mysql -u root -p < ispcp-reset-site-status.sql

echo 'Wating........'
rm -r ispcp-conf-backups
mkdir -p ispcp-conf-backups
mv /var/www/fcgi/*.* ispcp-conf-backups

/var/www/ispcp/engine/ispcp-rqst-mngr
/etc/init.d/ispcp_daemon start

/etc/init.d/apache2 restart

配套的SQL文件,务必保存成文件名:ispcp-reset-site-status.sql,并放到和上面脚本相同的目录下

USE ispcp;
UPDATE `domain` SET `domain_status` = 'change' WHERE `domain_status` = 'ok';
UPDATE `subdomain` SET `subdomain_status` = 'change' WHERE `subdomain_status` = 'ok';
UPDATE `domain_aliasses` SET `alias_status` = 'change' WHERE `alias_status` = 'ok';

(20)


发表评论

电子邮件地址不会被公开。