本来有一台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
修改 /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';