<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>简单生活@NET &#187; ispcp</title>
	<atom:link href="http://lee.kometo.com/archives/tag/ispcp/feed" rel="self" type="application/rss+xml" />
	<link>http://lee.kometo.com</link>
	<description>正确的判断来自经验，但经验往往来自错误的判断</description>
	<lastBuildDate>Tue, 10 Aug 2010 11:01:45 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>从Etach到Lenny，Debian+ISPCP升级笔记</title>
		<link>http://lee.kometo.com/archives/385</link>
		<comments>http://lee.kometo.com/archives/385#comments</comments>
		<pubDate>Fri, 30 Oct 2009 04:00:42 +0000</pubDate>
		<dc:creator>kometo</dc:creator>
				<category><![CDATA[IT前沿]]></category>
		<category><![CDATA[WEB应用开发]]></category>
		<category><![CDATA[Debian]]></category>
		<category><![CDATA[ispcp]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[log]]></category>
		<category><![CDATA[server]]></category>

		<guid isPermaLink="false">http://lee.kometo.com/?p=385</guid>
		<description><![CDATA[本来有一台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 &#38;&#38; aptitude upgrade 这一步可能需要反复运行几次，如果有软件版本冲突提示，你需要运行 aptitude 手动选择冲突解决方案 一直运行到aptitude update &#38;&#38; 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. [...]]]></description>
			<content:encoded><![CDATA[<p>本来有一台Linux服务器，运行Debian 4.0 Etach 和 ISPCP 1.0.0 RC6</p>
<p>近期看到ISPCP正式版已经发布好久了,就决定升级.升级路线是首先 升级Debian 到 Lenny (5.0),然后再升级ISPCP</p>
<h2>A 升级Linux</h2>
<p>升级的方法很简单</p>
<p><strong>1) (可选的) 检查你的更新源列表（sources.list)</strong></p>
<p>apt-spy -d stable -t 5 update #是用Stable或者Lenny现阶段效果应该是一样的</p>
<p>有些指南让你加上国家和地区参数，时间没有必要，事实上我们访问最快的源往往都在国外。</p>
<p>你也可以手动去更新 /etc/apt/sources.list</p>
<p><strong>2) 更新系统</strong></p>
<p>aptitude update &amp;&amp; aptitude upgrade</p>
<p>这一步可能需要反复运行几次，如果有软件版本冲突提示，你需要运行 aptitude 手动选择冲突解决方案</p>
<p>一直运行到aptitude update &amp;&amp; aptitude upgrade提示没有需要更新软件包了，系统升级完成</p>
<p><strong>3)可能遇到的问题</strong></p>
<p>我遇到问题是：Mysql升级到5.2以后不能自动启动了，检查 /etc/log/daemon.log发现一个提示</p>
<blockquote><p>/etc/init.d/mysql[2130]: ERROR: Using expire_logs_days without log_bin crashes the server. See README.Debian.gz</p>
</blockquote>
<div id="_mcePaste" style="position: absolute; overflow-x: hidden; overflow-y: hidden; width: 1px; height: 1px; top: 0px; left: -10000px;">log_bin = /var/log/mysql/mysql-bin.log</div>
<div id="_mcePaste" style="position: absolute; overflow-x: hidden; overflow-y: hidden; width: 1px; height: 1px; top: 0px; left: -10000px;">expire_logs_days = 10</div>
<p>修改 /etc/mysql/my.cnf 解决问题</p>
<blockquote><p>#log_bin = /var/log/mysql/mysql-bin.log #这一行本来是被注释掉的</p>
<p>expire_logs_days = 10</p>
</blockquote>
<p>完成上述步骤后服务器及ISPCP应该仍然可以正常工作，检查处理完可能存在的问题后，准备升级ISPCP</p>
<h2>B) 更新 ISPCP到 1.0.2</h2>
<p>安装ISCP官方说明逐步操作</p>
<p><a href="http://www.isp-control.net/documentation/doku.php?id=start:upgrade:rc" target="_blank">http://www.isp-control.net/documentation/doku.php?id=start:upgrade:rc</a></p>
<p>几点说明：</p>
<p><span id="more-385"></span></p>
<p><strong>1）更新/ect/apt/sourcs.list</strong></p>
<p>直接使用上述apt-spy获取的sources.list,按如下格式添加 contrib 和 non-free 参数</p>
<blockquote><p>deb http://ftp.tw.debian.org/debian/ lenny main <strong>contrib non-free</strong></p>
<p>deb http://security.debian.org/ lenny/updates main <strong>contrib non-free</strong></p>
<p>deb-src http://ftp.tw.debian.org/debian/ lenny main <strong>contrib non-free</strong></p>
</blockquote>
<p><strong>2)</strong> 如果你已经采取了其他系统备份措施，官方说明中的第6步（BACKUPS）是可以跳过的</p>
<p><strong>3)</strong> 第9步：【 cp -Rv /tmp/ispcp/var/* /var/ 】，你可能会遇到一个无法覆盖的提示： /var/www/ispcp/daemon/ispcp_daemon Text in busy，你可以忽略，或者先停止ispcp_daemon【/etc/init.d/ispcp_daemon stop】</p>
<p><strong>4）</strong>如果你在perl ispcp-update 过程中遇到需要输入密码的步骤，如果恰好你又选择了 【auto generated 】，恩，慢慢等吧，不是死机了，就是慢。</p>
<p><strong>5）</strong>如果你安装官方步骤升级完遇到服务器报”500 Server Error”错误</p>
<p>出现这个错误的可能原因很多，首先你需要检查你的Apache，FastCGI，PHP是否使用了非官方集成的插件，比如eAccelerator等。500错误一般出现在FastCGI和PHP引擎。</p>
<p>我的情况是eAccelerator版本过期，因为PHP升级了，所以需要重新编译eAccelerator</p>
<p>有关eAccelerator的安装和配置参阅 <a href="http://isp-control.net/documentation/doku.php?id=howto:eaccelerator" target="_blank">http://isp-control.net/documentation/doku.php?id=howto:eaccelerator</a></p>
<p><strong>6）</strong>学会追踪分析各类日志文件是解决各类问题的最好方法，比如上述500问题，如果不是通过日志分析，想找到问题根源实在是太难。而且ISPCP默认没有启用PHP的错误日志文件记录，我还是手动修改PHP.ini，启用PHP日志后才追踪发现问题的根源的。</p>
<p>/var/log/* 大部分系统LOG文件都是放在这里的</p>
<p><strong>7) </strong>ISPCP的配置和日志文件结构</p>
<pre>/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 是什么关系我还没搞清楚
</pre>
<p>8) 关于修改ISPCP配置模板文件以后如何刷新各站点，请参阅：</p>
<p><a href="http://www.isp-control.net/documentation/doku.php?id=howto:ispcp:regenerate_config" target="_blank">http://www.isp-control.net/documentation/doku.php?id=howto:ispcp:regenerate_config</a></p>
<p>关于PHP的站点配置文件刷新，官方说明有误刷新前你必须删除原有的站点配置文件，才会刷新，另外master站点不会刷新的。</p>
<p>ISPCP的各处PHP配置文件加载顺序为<br />
1 /etc/php5/cgi/php.ini<br />
2 /var/www/fcgi/domain.com/php5/php.ini<br />
3 /etc/php5/conf.d/*</p>
<p>下面的配置会覆盖上面的配置，所以你可以把共性的配置定义放到conf.d目录下，专门建立一个文件放置。而把需要每个站点单独配置的特别是设计路径的配置项放到parts/php.ini中，然后刷新生效。</p>
<p>下面是我的对配置文件的修改</p>
<pre lang="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
</pre>
<pre lang="ini">;添加到 /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 &amp; ~E_NOTICE | E_WARNING | E_STRTCT
log_errors             = On
display_errors	= Off
</pre>
<p>下面是我写的一个自动刷新ISPCP PHP配置文件的脚本</p>
<pre lang="sh">#!/bin/sh
/etc/init.d/ispcp_daemon stop

echo 'Enter the password of root for mysql'
mysql -u root -p &lt; 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
</pre>
<p>配套的SQL文件，务必保存成文件名：ispcp-reset-site-status.sql，并放到和上面脚本相同的目录下</p>
<pre lang="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';
</pre>
]]></content:encoded>
			<wfw:commentRss>http://lee.kometo.com/archives/385/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
