2009年3月15日星期日

Discuz论坛首页五格修改代码解析之二(discuz.htm)

Discuz论坛首页五格修改代码解析之二(discuz.htm)
discuz.htm的文件主要就是把index.php里面定义的数据取出来,然后按照htm的布局和CSS样式表的定义,按一定的样式显示出来

1.用户信息
<td valign="top"><div class="left" style="line-height: 18px;">
<span class="bold">
    判断是否已登录,如果已登录显示当前用户名,否则显示游客
    <!--{if $gid &amp;amp;#124;&amp;amp;#124; !$discuz_uid}--><a href="$indexname">$bbname</a>
    <!--{else}-->$discuz_user<!--{/if}-->
判断是否创建了博客,如果创建则链接到我的个人空间,如果没有则链接到开通博客页面
<!--{if $supe_status &amp;amp;&amp;amp; $discuz_uid}-->
    -
    <!--{if !$xspacestatus}-->
   <a href="$supe_siteurl/index.php?action/register" target="_blank">{lang supe_signin_xspace}</a>
    <!--{else}-->
   <a href="$supe_siteurl/index.php?action/space/uid/$discuz_uid" target="_blank">{lang supe_myxspace}</a>
    <!--{/if}-->
<!--{/if}-->
</span>
<br />
显示积分
{lang credits}: <span class="bold smalltxt">$credits</span> <span id="creditlist">{lang credits_detail}
调用javascript显示详细积分情况
<script type="text/javascript">menuregister(false, "creditlist", true)</script></span>
<br>{lang index_status}:
判断是否有有效日期,显示所在用户组名和有效天数
<!--{if $validdays}-->
    <a href="member.php?action=groupexpiry"><span class="bold">$grouptitle</span>($validdays)</a>
<!--{else}-->
    <span class="bold">$grouptitle</span><!--{/if}-->
    <br />
如果系统允许隐身,并且已经登录,显示当前登录状态
<!--{if $allowinvisible &amp;amp;&amp;amp; $discuz_uid}-->{lang online_status}:
    如果没有隐身显示切换到隐身模式
    <!--{if !empty($invisible)}-->
   <a href="member.php?action=switchstatus" title="{lang login_switch_normal_mode}">{lang login_invisible_mode}</a>
    <!--{else}-->
   <a href="member.php?action=switchstatus" title="{lang login_switch_invisible_mode}">{lang login_normal_mode}</a>
    <!--{/if}-->
<!--{/if}--><br>
   下面是我添加的当前用户浏览器和操作系统信息,从index.php中定义的变量中获取数据
当前时间:<span class="smalltxt">$currentdate</span><br>
{lang your_lastvisit} <span class="smalltxt">$lastvisittime</span><br><br />
浏览器:<span class="smalltxt">$visitor_browser</span><br>
操作系统:<span class="smalltxt">$visitor_os</span>

</div>
</td>
其实这部分代码原来都是在头部的,我只不过把它们换了个地方,重新排列了一下,所以只要知道每个语句的意思,论坛样式你想改成什么样子就什么样子。


2.随机图片
<td class="altbg1" align="center" valign="top">
<iframe name="I1" src="pic.php" width="200" height="168" frameborder=0 scrolling=no marginwidth="2" marginheight="2" align="right"></iframe>
</td>
图片切换效果的功能是在pic.php页面中实现的,这个页面我第三节讲,这块使用了一个iframe ,iframe的好处就是,页面可以异步载入,也就是首页和pic.php是分开来载入的,互不影响。因为flash的加载图片速度比较慢,如果不用iframe,首页的载入速度会受到一定的影响。

3.最新主题
<td valign="top">
取出index.php中获取的主题列表数组$new_post_threadlist,并把每次循环取出的一个专题存入$nthread临时数组
<!--{loop $new_post_threadlist $nthread}-->
       <table border="0" width='100%' cellspacing="2">
      <tr>
         <td height="12" width='100%'><FONT face=Wingdings>z</FONT>
            判断当前取出主题的回复数
            <!--{if $nthread[replies]}-->
            分别取出这个主题各个属性,包括高亮显示样式,截取长度的标题,作者,浏览数,回复数等
            <a href="viewthread.php?tid=$nthread[tid]" $nthread['highlight'] title="最新话题 {LF}所在论坛: $nthread[forumname]{LF}主题标题: $nthread[subject] {LF}主题作者: $nthread[author]{LF}发表时间: $nthread[date]{LF}浏览次数: $nthread[views] 次 {LF}回复次数: $nthread[replies] 次{LF}最后回复: $nthread[lastreplytime]{LF}{lang lastpost}: $nthread[lastposter]" >$nthread[view_subject]</a>
            <!--{else}-->
            如果没有回复贴,显示出来的信息略有不同
            <a href="viewthread.php?tid=$nthread[tid]" $nthread['highlight'] title="最新话题 {LF}所在论坛: $nthread[forumname]{LF}主题标题: $nthread[subject] {LF}主题作者: $nthread[author]{LF}发表时间{lang time}: $nthread[date]{LF}浏览次数: $nthread[views] 次 {LF}回复次数: $nthread[replies] 次{LF}{lang replies}: 暂时没有回复" >$nthread[view_subject]</a>
             <!--{/if}-->
         </td>
      </tr>
       </table>
   <!--{/loop}--></td>

Discuz论坛首页五格修改代码解析之一(index.php)

Discuz论坛首页五格修改代码解析之一(index.php)来自网上!!共享给大家!

这是参考别人的代码修改来的,发现大家对首页修改都挺感兴趣,我就把首页五格代码解释说明一下。我是写.NET程序的,因为觉得Discuz论坛不错,所以用这套系统来构建了这个网站,也是刚接触PHP,主要是写给初学者看的,有不对的地方,还请PHP高手指教。
下面开始,我做的这个五格主要修改了两个文件,index.php,discuz.htm,添加了pic.php,还有pixviewer.swf。
index.php和discuz.htm的关系有点像.NET里面的Code behind,显示结果由aspx页面负责,数据处理由cs文件负责。这里index.php负责定义各种变量,调用数据库获取各种数据,discuz.htm加上css样式表文件就负责把index.php里面的数据按一定的样式显示出来。所以你要修改首页各个区域的功能或者数据就要修改index.php,修改首页的显示样式就修改discuz.htm。
Discuz论坛的换肤功能也是基于这种原理实现的,我们下载的模版文件里面都是一些定义了位置和样式的htm和css文件,而论坛的代码不用修改,因为逻辑和数据不变。经典的MVC模式也是一样的,数据,显示,控制分离。扯远了,呵呵
先看一下index.php。
1.添加require_once DISCUZ_ROOT.'./include/forum.func.php';
这个文件里面主要包含了一些常用的函数,添加它主要是为了调用这个函数function convertip($ip),这个函数会去查找ipdata目录下面的wry.dat,wry.dat里面包含了几乎全世界的IP地址段和物理地址的映射,convertip会把获取当前的客户端IP地址转换成物理地址,这样就可以在用户信息里面显示来访者的位置了,但是我的首页用户信息里面并没有显示来访者位置,因为我觉得访问的人肯定是自己在哪的,而且查找wry.dat会消耗一定的资源。虽然看着很酷:)下面的浏览器和操作系统也是为了填满区域才添加的,所以如果你不需要convertip功能的话,完全可以不添加require_once DISCUZ_ROOT.'./include/forum.func.php'。
如果要显示就添加,然后在index.php中定义$mem_home = convertip($onlineip);在discuz.htm里面用户信息的DIV里面“来访者位置mem_home调用一下就可以了。
2.获取客户端用户信息
if(strpos($HTTP_SERVER_VARS[HTTP_USER_AGENT], "MSIE 6.0")) {
            $visitor_browser = "Internet Explorer 6.0";
       } elseif(strpos($HTTP_SERVER_VARS[HTTP_USER_AGENT], "MSIE 5.5")) {
            $visitor_browser = "Internet Explorer 5.5";
       }
这段代码的意思是从用户的http请求的头信息中获取USERAGENT信息,USERAGENT里面包含了客户端的操作系统,浏览器,显示颜色数,操作系统语言等等的信息,取出来后判断一下是否包含"MSIE 6.0",如果包含就说明是Microsoft的IE6.0,并把这个结果赋值给$visitor_browser 变量,如果不包含就继续判断其他浏览器类型。在discuz.htm中浏览器visitor_browser就把用户的浏览器类型显示出来了。
下面的
       if(strpos($HTTP_SERVER_VARS[HTTP_USER_AGENT], "NT 5.1")) {
            $visitor_os = "Windows XP";
       }elseif(strpos($HTTP_SERVER_VARS[HTTP_USER_AGENT], "NT 5.2")) {
            $visitor_os = "Windows Server 2003";
       }  
判断的就是操作系统类型。
3.下面解释一下最新主题区域的代码
$hack_cut_str =29;
//定义截取的标题长度
$hack_cut_strauthor = 9;
//定义截取的作者姓名长度
$new_post_threadlist = array();
//定义一个数组存放最后的主题列表
$nthread = array();
//定义一个临时数组,存放从数据库取出的主题的一些属性
$query = $db->query("SELECT t.*, f.name FROM {$tablepre}threads t, {$tablepre}forums f WHERE t.fid<>'$fid' AND f.fid=t.fid ORDER BY t.dateline DESC LIMIT 0, 8");
//执行SQL语句,$tablepre是全局变量,定义了数据库表名的前缀,默认是cdb_,threads 表存放主题,forums 存放版块和板块组,ORDER BY t.dateline DESC指按照帖子的发布时间倒序排列,Limit 0,8取开始的8条,这条SQL语句的意思就是从主题中取出最新的8个。Discuz论坛的数据库表结构和关系我会在以后专门发帖说明。
while($nthread = $db->fetch_array($query)) {
//每次从数据库中取出一条数据添加到nthread 这个临时数组中,一直循环到取不出数据位置,因为前面SQL语句LIMIT 0, 8,所以最多也就取8次
       $nthread['forumname'] = $nthread['name'];
       //将数据库取出的版块名称'name' 赋值给nthread的'forumname'
       $nthread['view_subject'] = cutstr($nthread['subject'],$hack_cut_str);
      //将主题名称按$hack_cut_str的长度截取存放在'view_subject'
       $nthread['view_author'] = cutstr($nthread['author'],$hack_cut_strauthor);
       //将主题作者按$hack_cut_strauthor的长度截取存放在'view_author'
       $nthread['date']= gmdate("$dateformat $timeformat", $nthread['dateline'] + $timeoffset * 3600);
       //将主题发布时间赋值给nthread的'date'
   $nthread['lastreplytime']= gmdate("$dateformat $timeformat", $nthread[lastpost] + ($timeoffset * 3600));
       //将主题最后发布时间时间赋值给nthread的'date'
       if($nthread['highlight']) {
       //判断主题是否高亮显示,如果高亮,增加粗体斜体下划线等样式
            $string = sprintf('%02d', $nthread['highlight']);
            $stylestr = sprintf('%03b', $string[0]);
            $nthread['highlight'] = 'style="';
            $nthread['highlight'] .= $stylestr[0] ? 'font-weight: bold;' : '';
            $nthread['highlight'] .= $stylestr[1] ? 'font-style: italic;' : '';
            $nthread['highlight'] .= $stylestr[2] ? 'text-decoration: underline;' : '';
            $nthread['highlight'] .= $string[1] ? 'color: '.$colorarray[$string[1]] : '';
            $nthread['highlight'] .= '"';
       } else {
            $nthread['highlight'] = '';
       }
       $new_post_threadlist[] = $nthread;
       //将每次取到的主题添加到$new_post_threadlist数组中。
}
其他几个版块也是一样的,只不过定义了不同变量名称和SQL语句。
例如
"SELECT t.*, f.name FROM {$tablepre}threads t, {$tablepre}forums f WHERE t.fid<>'$fid' AND f.fid=t.fid   AND t.closed !=1 AND t.replies !=0 ORDER BY t.lastpost DESC LIMIT 0, 8" 就是最新回复
"SELECT t.*, f.name FROM {$tablepre}threads t, {$tablepre}forums f WHERE t.fid<>'$fid' AND f.fid=t.fid   AND t.closed !=1 AND t.replies !=0 ORDER BY t.views DESC LIMIT 0, 8"就是热门贴,因为是按帖子的浏览次数倒序查询出来的。
"SELECT t.*, f.name FROM {$tablepre}threads t, {$tablepre}forums f WHERE digest>'0' AND t.fid<>'$fid' AND f.fid=t.fid ORDER BY t.dateline DESC LIMIT 0, 10"就是取精华贴

2009年3月11日星期三

LAMP环境怎样配置?

LAMP环境怎样配置?
要有LINUX主机(可以虚拟机上配置一个) APPSERV,MYSQL 和PHP


给你个说明
你先看下
看完先别晕 不懂的话随时可以发消息给我
虚拟机是个软件,安装后可用来创建虚拟机,在虚拟机上再安装系统,在这个虚拟系统上再安装应用软件,所有应用就像操作一台真正的电脑,因此,我们 可以利用虚拟机学习安装操作系统、学用Ghost、分区,格式化,测试各种软件或病毒验证等工作,甚至可以组建网络。即使误操作都不会对你的真实计算机造 成任何影响,因此虚拟机是个学习电脑知识的好帮手。或许你会问,是不是跟影子系统差不多啊?虚拟机可不同于影子系统PowerShadow,影子模式重启 后,所有操作完好如初,且不能转储,因此影子系统更像还原精灵,而虚拟机才是学电脑的最佳拍档!

大家知道,目前常用的虚拟机主要有VMware和Virtual PC。Virtual PC操作简便,容易上手,适合初学者(本文下有下载链接),但其功能没有VMware强大。VMware采用固定内存分配,占用资源大,可进入虚拟系统 后,操作时的速度却明显比VPC快的多,这是由于VMware调用了更多的真实的系统配置!而且它完美支持Linux,其独有的“快照”功能,提供了便捷 的软硬件测试环境切换,其“捕捉屏幕”和“捕捉视频”功能,是交流学习的有用工具,这些都是Virtual PC所没有的。VMware更像一台真实的机器,今天给大家介绍的虚拟机就是目前广为使用的——VMware Workstation。

以下是笔者初装VMware虚拟机以来,对其安装步骤和使用的一点总结,以给初学者指个方向,少走弯路。

1.下载VMware
官网查看最新版本: http://www.vmware.com/download/ws/
未来软件园下载页: http://www.orsoon.com/soft/search.asp?keyword=VMware&act=topic&x=17&y=18
绿盟VMware下载页:http://www.xdowns.com/tag.asp?keyword=VMware+Workstation+&act=Topic&classid=&btn.x=29&btn.y=16
七喜下载站下载页: http://www.baidu.com/s?tn=baitu_pg&ie=gb2312&bs=%3F+site%3Ays168.com&sr=&z=&cl=3&f=8&wd=VMware++site%3Awww.7xdown.com&ct=0
东东在用VMware Workstation 6.0.2 59824完美汉化绿色精简版: 微软网盘本地下载(支持迅雷) 新浪共享下载

2.安装VMware
安装版基本点NEXT一路安装下去,非常简单,若弹出没有经过Windows兼容性验证提示没有关系,请继续安装,装完后或许还要运行汉化包或注册机或把 “汉化文件”里的文件复制到安装目录下覆盖原文件,这些需根据你下载的版本而定,学会看说明就好了。绿色的免安装,只需运行"@install.cmd” 或"安装.bat "或"!)绿化.bat"等。添加服务可以以后网络设置时再做,也可参看下文6中内容,如想实现主机和虚拟机同时上网,则即刻添加服务3。发送主程序 vmware.exe的快捷方式到桌面上,方便日后使用。

3.新建虚拟机
运行vmware.exe--新建虚拟机--在虚拟机向导中点“下一步”--选典型--选操作系统(版本)--虚拟机名称位置--选“桥接”或“NAT”网络(见下文6)--默认磁盘容量--完成

4.安装虚拟操作系统
启动虚拟机前,先在虚拟设备窗口设置虚拟机内存和CD-ROM,你的内存足够大可设为接近物理内存的一半或推荐默认值,设置"CD-ROM",根据你现在 是否有安装光盘或下载的ISO镜像系统来选择“物理光驱”或是“iso镜像”,如果你有一张系统光盘请选择“使用物理驱动器”并把光盘放入光驱,如果你有 一个已下载好的ISO镜像系统,请选则“使用ISO镜像”并浏览到此镜像“打开”,最后要点OK确认 。启动虚拟机时要在VMware窗口内快速用鼠标点击一下就能激活VMware操作了,将鼠标键盘从虚拟机操作环境切回到物理机,需要按下 Ctrl+Alt键。安装虚拟系统像真实安装一样,也要先进行BIOS设置,启动系统时,按屏幕下方提示快速按F2键可进行虚拟机的Phoenix BIOS设置,用光标键依次选择到Boot— CD-ROM Drive,按Shift+"+"键2次,使其变为首行,再按F10保存退出,就设置好CD-ROM首启动了(另外了解一下:按F12键是选择网络启动; 按ESC键是选择启动菜单、且仅此次使用此设置)。接下来进行分区和格式化,可用安装版Windows光盘或镜像在安装系统时进行(这个有点麻烦哦,建议 先只分个主分区,装完系统后再分更方便),也可用下载的Ghost版系统里的工具在安装系统前进行,一般多数系统光盘启动菜单下都有PQ等分区工 具,Dos工具箱里还有更多分区工具,如FDISK、PartitionMagic(PQ)、DM、DiskGenius、Partition Manager(PM)等,用这些工具分区后不要忘记激活主分区,否则首装Ghost系统后无法成功引导。ghost版操作系统安装简单,一般启动系统 后,选择第一项就自动安装了,一般是无人值守的自动安装;安装原版操作系统,启动时,当弹出Press any key to boot form CD... 要在虚拟机窗口内点击一下激活键盘后,再按任意键才有效,然后就能正常安装了。
提示:
① 若用PQ或PM分区,不要忘了激活主分区,好多人安装ghost版系统首次不能成功就在于此。在PQ中,右击主分区C:—进阶—设置为作用—执行—确定, 成功激活C:后,C:的"状态"会由“无”设置成“作用”。同样,若用PM分区,也要将C:的“设置活动"由“否”设置为“是”,否则首次安装Ghost 版系统后将无法引导。笔者用PM分区时,还遇到过另个问题,装完ghost版系统后却不能成功启动(左上角只有一个不动的光标),尝试利用dos工具箱中 的DISKGEN修复好的,利用其“工具”菜单下的“修复主引导记录”来修复,你若也遇到此麻烦也可如此试试。
② 安装虚拟系统时或装完虚拟系统后的任何时侯,随时可进行镜像“快照”,以后测试时就能快速回到以前快照的位置,以方便回到需要的测试环境,这个功能为测试系统或软件极为方便。
③若出现输入序列号注册的提示,是因你开始没有运行"安装.bat"就启动了虚拟机造成的。解决方法:关闭并退出虚拟机--重启主机--运行"卸载.bat"--运行"安装.bat"--安装必要的服务(一般选1或3)--退出--启动虚拟机。

5.安装VMware Tools (VMware工具可以认为是虚拟操作系统的驱动)
运行已经安装好的虚拟操作系统,同时按Ctrl+Alt键,将鼠标键盘从虚拟机操作环境切回到物理机,在VMware窗口菜单--点“虚拟机”--“安装 VMware工具” --默认设置下一路NEXT完成安装,装完VMware工具后可明显提高显示效果和鼠标效能,还可以在宿主机和虚拟机之间用拖动复制文件了。注意,或许有 的绿色版不能自动运行“安装VMware工具”,在虚拟机中,打开“我的电脑”看看“VMware工具”是否以加载到了虚拟光驱设备中了,如果有双击运行 就好了。如果没有,设置虚拟设备"CD-ROM"是“iso镜像”,浏览到解压文件夹中的“windows.iso”,再次进入虚拟系统,再打开“我的电 脑”,看到虚拟机的光驱驱动器多出来个“VMware工具”,然后运行之就可以安装VMware Tools了,如果还不能看到这个“VMware工具”驱动器,重启虚拟机试试,或直接解压“windows.iso”并运行里面的setup.exe安 装,然后重启虚拟机就好了。

6. VMware网络设置:
以笔者的绿色精简版VMware6.0.2单机ADSL宽带拨号上网为例
①桥接网络:可实现在虚拟机或宿主机任其一上网。如果安装时没有选择“桥接”,请在虚拟机设备“以太网”网络连接中选择“桥接”,然后运行安装文件夹中 的"服务.cmd"(有的绿色版中叫"server.bat),只需运行第一个“启动-本机网络服务”,然后在虚拟机中建立一个与宿主机同样的用户名和密 码的“宽带连接”,不需要其他别的设置了,主机和虚拟机TCP/IP属性设置就用默认的自动获得就好了,以后即可用虚拟机或宿主机其一上网了,但二者只能 用其一上网。
②NAT网络:可实现主机和虚拟机同时共享上网。如果安装时没有选择“NAT"网络模式,请在虚拟机设备“以太网”网络连接中选择“NAT”,然后运行安 装文件夹中的"启动服务.cmd”,运行第3个---“DHCP和NAT服务-共享上网”,弹出没有经过Windows兼容性验证提示,请点“仍然继续” 并多等会儿。装完后到虚拟机窗口点“编辑”---“虚拟网络设备”,在“虚拟网络编辑器”窗口中分别启动“DHCP”和“NAT”服务就好了,虚拟机里不 用建立“宽带连接”,主机和虚拟机也不用再进行其他的网络设置了,重启虚拟机,主机宽带连接后,虚拟机里直接运行IE浏览器就可以上网了。
如果物理机是路由共享上网的,在虚拟机里选“桥接”并安装桥接服务(第一项),就能跟主机同时共享上网了。
了解:有的版本启动宿主机后首次进入虚拟机还要右击右下“网卡图标”选“连接”,才可上网。还有,有的精简版VM 或许不能使用其“虚拟网络设置”,所以只能使用“桥接”上网,东东提供的版本可以实现主机和虚拟机同时共享上网。

7。共享文件夹设置:
据说虚拟机中的“共享”在windows系统中存在漏洞,因为除了测试电脑安全外,虚拟机里很少装杀毒软件的,黑客会利用这个共享文件夹漏洞穿透虚拟机,VMware官方也承认了,还是不用的好,主机和虚拟机之间能相互复制文件也够用了,想学的百度搜搜吧。

8..卸载VMware
绿色版:关掉虚拟机电源,在虚拟机左栏列表中右击,选则“在磁盘中删除”(此步也可退出虚拟机,手动按虚拟机保存路径删除整个虚拟机文件夹),最后运行"@Uninst.cmd”或"!)卸载.bat",然后删除安装文件夹;
安装版:关掉虚拟机电源,在虚拟机左栏列表中右击,选则“在磁盘中删除”,再到控制面板--“添加删除”中正常卸载虚拟机软件。




1. 终端
2. 输入命令 cd /usr/ 回车
进入libxml2源码所在目录
3. 执行 tar -zxvf libxml2-2.6.11.tar.gz
解压libxml2源码.
4. 系统自动列出各解压项.
小提示:解压完成后可以执行 clear 命令清屏
5. 执行 cd libxml2-2.6.11
进入解压出来的目录
6. 执行 ./configure
7. 执行 make
编译源码.
8. 执行 make install
安装libxml2

安装MySQL

1. 执行 cd /home
去到mysql源码所在目录.
执行 ls -l
可以列出当前目录的文件列表.
2. 执行 groupadd mysql新建MYSQL用户
3. 执行 useradd -g mysql mysql 并加到组里
4. 执行 tar -zxvf mysql-5.0.18.tar.gz 解压mysql源码
5. 执行 cd mysql-5.0.18 进入刚解压出来的目录
6. 执行./configure --prefix=/server/mysql --with-xcharset=all --with-charset=gbk
....设置安装目录并支持中文要好久的我就跳过了。。
7. 执行 make 编译源码要好几分钟虚拟机更久。。。跳过。。
8. 执行 make install 编译并安装
9. 执行 /server/mysql/bin/mysql_install_db --user=mysql
10. 执行 cp support-files/my-medium.cnf /etc/my.cnf
将mysql配置文档复制到/etc/目录下并保存为my.cnf
11. 执行 cp support-files/mysql.server /etc/rc.d/init.d/mysqld
12. 执行 chmod 700 /etc/rc.d/init.d/mysqld
13. 执行 chkconfig --add mysqld
14. 执行 cd /server/mysql
进入mysql安装目录.
并执行 chown -R root .
注意:不要漏了后面的 ".".
15. 执行 chown -R mysql var
16. 执行 chgrp -R mysql .
不要漏掉".".
#权限设置
# chown -R root /server/mysql
# chgrp -R mysql /server/mysql
# chown -R root /server/mysql/bin
# chgrp -R mysql /server/mysql/bin
# chown -R root /server/mysql/var/
# chgrp -R mysql /server/mysql/var/
# chmod 777 /server/mysql/var/
# chown -R root /server/mysql/var/mysql
# chgrp -R mysql /server/mysql/var/mysql
# chmod 777 /server/mysql/var/mysql
# chown -R root /server/mysql/var/mysql/*
# chgrp -R mysql /server/mysql/var/mysql/*
# chmod 777 /server/mysql/var/mysql/*
# chmod 777 /server/mysql/lib/mysql/libmysqlclient.a
执行 /server/mysql/bin/mysqld_safe --user=mysql &
启动mysql.
18. 在出现 mysqld ended 的时候.点击回车.回到命令行
# netstat -atln
看看有没有3306的端口打开,如果mysqld不能启动,看看/server/mysql/var下的出错日志,一般都是目录权限没有设置好的问题
# ln -s /server/mysql/bin/mysql /sbin/mysql
# ln -s /server/mysql/bin/mysqladmin /sbin/mysqladmin
# mysqladmin -uroot password "13145200" #设置root帐户的密码我就先不设置了。。。
# mysql -uroot -p
# 输入你设置的密码
mysql>use mysql;
mysql>delete from user where password=""; #删除用于本机匿名连接的空密码帐号
mysql>flush privileges;
mysql>quit
MYSQL到这里就装好了。。。
安装Apache

1. 执行 cd /home
回到apache源码所在目录.
2. 执行 tar -zxvf httpd-2.2.4.tar.gz
3. 执行 cd httpd-2.2.4可能是版本问题。。
4. 执行 ./configure --prefix=/server/apache --enable-so
5. 执行 make
6. 执行 make install
7. 执行 /server/apache/bin/apachectl start 启动apache.

安装php

1. 执行 cd /home
回到php源码所在目录.
2. 执行 tar -zxvf php-5.2.1.tar.gz
3. 执行 cd php-5.2.1
4. 执行 ./configure --prefix=/server/php --with-mysql=/server/mysql --with-apxs2=/server/apache/bin/apxs
5. 执行 make
6. 执行 make install
7. 执行 cp php.ini-dist /usr/local/lib/php.ini
配置Apache关联php
1. 执行 vi /server/apache/conf/httpd.conf
用vi编辑器打开apache的配置文件.
2.进入的是vi的命令行方式.
3. 输入 /LoadModule
然后点击 回车
其中/LoadModule 是向下查找 LoadModule.?LoadModule是向上查找
4. 我们可以看到 LoadModule php5_module modules/libphp5.so
这是我们安装时设置好的.但也务必检查一下.我的是正确的了
5. 输入 /AddType
6. 我们可以看到 AddType application/x-gzip .tgz
7. 点击 i 进入 插入编辑方式
右下角会出现插入字样.
8. 将光标移到AddType application/x-gzip .tgz后面.回车后加入一行
AddType application/x-httpd-php .php
9. 点击 Esc 键.回到vi命令行方式.
并输入 /DirectoryIndex
10. 点击 i 键进入 插入编辑方式.并且在 DirectoryIndex index.html
后面加一空格再加index.php
11. 点击 Esc 键.回到vi命令行方式.
输入 :wq 然后点击回车
其中 :wq 是存盘退出的命令

安装ZendOptimizer

1. 执行 cd /home
回到 ZendOptimizer 源码所在目录.
2. 执行 tar -zxvf ZendOptimizer-3.2.6-linux-glibc21-i386.tar.gz
3. 执行 cd ZendOptimizer-3.2.6-linux-glibc21-i386
4. 执行 ./install
5. 进入如下的ZendOptimizer安装界面.点击回车
6. 点击回车
7. 在 Yes 上点击回车
8. 这里填写ZendOptimizer安装路径.我们将它安装在 /server/ZendOptimizer
下.填写 /server/ZendOptimizer 后点击 Tab 键.在 ok 上面点击回车
9. 这里选择php.ini所在位置.我们在之前的安装中已经将php.ini复制到了/usr/local/lib
下.所以这里不用修改.在 OK 上点击回车
10. 我们用的正是apache.在Yes上点击回车
11. 这里填写apachectl的位置.我们的是在/server/apache/bin/apachectl
输入 /server/apache/bin/apachectl 后,点击 Tab 键移动光标到 OK 上.然后点击回车
12. 点击回车
13. 点击回车
14. 点击回车 重启apache
15. 点击回车 完成ZendOptimizer的安装
环境测试

安装完成后.我们来测试一下之前配置的环境是否正确

1. 再次重启apache.执行 /server/apache/bin/apachectl -k restart

尽管安装ZendOptimizer时已经重启了apache,但我们还是要执行如下命令重启apache
以确保apache修改的配置已经从新加载入来.请大家务必不要漏了这一步.
2. 执行 vi /server/apache/htdocs/phpinfo.php
在网站根目录下建立一个phpinfo.php的文件.
3. 点击 i 键进入 插入编辑方式.
4. 输入
<?php
phpinfo();
?>
5. 点击 Esc 键回到vi 命令行方式.输入 :wq 回车
系统将保存phpinfo.php文件,并退出vi编辑器
6. 在浏览器打开 http://192.168.6.33/phpinfo.php
如果出现如下界面则说明php已经安装好了.
7. 测试 php 是否和 mysql 关联.
执行 vi /server/apache/htdocs/test.php
这一步忘了截图.大家执行了就行了

8. 点击 i 键进入 插入编辑方式.并输入
<?php
//phpfans http://www.phpfans.net
$conn = mysql_connect("localhost","root","");
if($conn) echo "<h1>succeed</h1>";
else echo "<h1>fail</h1>":
?>

9. 点击 Esc 键回到vi 命令行方式.并输入 :wq 然后点击回车
10. 在浏览器中打开 http://192.168.6.33/phpmyadmin可能语句错误先不管它。。
出现如下界面则说明php已经成功关联mysql了
安装phpMyAdmin

1. 执行 cd /home
回到phpmyadmin源码所在目录.
2. 执行 tar -zxvf phpMyAdmin-2.10.0.2-all-languages.tar.gz
解压phpmyadmin.
3. 执行 cp -r phpMyAdmin-2.10.0.2-all-languages/ /server/apache/htdocs/phpmyadmin/
将phpmyadmin剪切到网站根目录下
基本上就差不多了。。。我来设置一下。。我先设置MYSQL密码
设了密码之后这里就连不上了。。要在网页中设置一下。。。我就不设置了我来做一个在linux下安装BBS的演示。。。
新版mysql+apache+php Linux安装指南刚刚看到有人贴win下安装步骤

刚好今天公司网站的新服务器到手。花了一上午安装mysql+php+apache。

新版的老版的还是有些不同的。现在把步骤帖一下

安装步骤:

1.mysql

在如下页面下载mysql的for linux rpm包
http://www.mysql.com/downloads/down...3.52-1.i386.rpm
http://www.mysql.com/downloads/down...3.52-1.i386.rpm

存至/home/tmp目录

命令列表:
cd /home/tmp
rpm -ivh MySQL-3.23.52-1.i386.rpm #安装mysql server
rpm -ivh MySQL-client-3.23.52-1.i386.rpm #安装mysql client
/usr/mysql/safe_mysqld & #启动mysql server
mysql #运行mysql 客户端,并开放root用户的远程访问权限。以便调试
use mysql
update user set host = '%' where user = 'root' and host <> 'localhost';
flush privileges;
quit

至此mysql安装完成

2.apache

在如下页面下载apache的for linux 的源码包

http://www.apache.org/dist/httpd/apache_1.3.26.tar.gz

存至/home/tmp目录

命令列表:
cd /home/tmp
tar -zxvf apache_1.3.26.tar.gz
mv apache_1.3.26.tar.gz apache
cd apache
./configure --prefix=/usr/local/apache --enable-module=so
make
make install

安装apache至/usr/local/apache 并配置apache支持dso方式

3.php

在如下页面下载php的for linux 的源码包

http://www.php.net/get_download.php?df=php-4.2.3.tar.gz

存至/home/tmp目录

命令列表:
cd /home/tmp
tar -zxvf php-4.2.3.tar.gz
mv php-4.2.3.tar.gz php
cd php
./configure --prefix=/usr/local/php --with-apxs=/usr/local/apache/bin/apxs --with-config-file-path=/usr/local/lib --enable-track-vars --with-xml --with-mysql
make
make install
cp php.ini-dist /usr/local/lib/php.ini

以dso方式安装php至/usr/local/php 设置配置文件目录为/usr/local/lib 开启mysql,xml支持

4.配置

vi /usr/local/apache/conf/httpd.conf
对apache做如下配置
#将ServerAdmin 一行改为您的邮箱地址

#DocumentRoot "/home/httpd/html/" 此处为html文件主目录

# 同上

#Options FollowSymLinks MultiViews 为安全起见,去掉"Indexes"

#
# DirectoryIndex default.php default.phtml default.php3 default.html default.htm
#
#设置apache的默认文件名次序

#AddType application/x-httpd-php .php .phtml .php3 .inc
#AddType application/x-httpd-php-source .phps
#设置php文件后缀

存盘退出
vi /usr/local/lib/php.ini
#register-golbals = On

存盘退出

5.启动服务
/usr/local/apache/bin/apachectl start

6.备注
apache在linux下的默认最大进程数为256,无论如何修改httpd.conf都不能超过这个限制。如果想加大这个限制,在编译 apache前编辑/home/tmp/apache/src/include/httpd.h,将其中#define HARD_SERVER_LIMIT 256 一行改为#define HARD_SERVER_LIMIT 2048后再编译apache,

apache 1.3.26中mod_so似乎已经不是默认模块了。编译时候需加上--enable-module=so,我第一次编译没加此参数,结果php编译时无法找到apxs

php 4.2.3中默认配置文件路径似乎变了。编译时需加上 --with-config-file-path=/usr/local/lib 参数,我第一次编译完php.ini放了n个地方都没有用。不得已。只能加上这个参数。


















ubuntu上安装oracle11g的方法
花了半天时间,在Ubuntu 8.04 LTS上顺利安装ORACLE 11g.下面说说大概的步骤.

1.确保安装了以下程序:

sudo apt-get install build-essential libaio1 gawk ksh libmotif3 alien libtool lsb-rpm

2.

cd /bin
ln -sf bash /bin/sh

3.增加用户和组

addgroup oinstall
addgroup dba
addgroup nobody
useradd -g oinstall -G dba -p passwd -d /home/oracle -s /bin/bash oracle
usermod -g nobody nobody

4.
mkdir /home/oracle
chown -R oracle:dba /home/oracle

ln -s /usr/bin/awk /bin/awk
ln -s /usr/bin/rpm /bin/rpm
ln -s /usr/bin/basename /bin/basename

5.
mkdir /etc/rc.d
for i in 0 1 2 3 4 5 6 S ; do ln -s /etc/rc$i.d /etc/rc.d/rc$i.d ; done

mkdir -p /opt/ora11
chown -R oracle:dba /opt

6.编辑/etc/sysctl.conf,增加以下内容:

fs.file-max = 65535
kernel.shmall = 2097152
kernel.shmmax = 2147483648
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
net.ipv4.ip_local_port_range = 1024 65535
net.core.rmem_default = 1048576
net.core.rmem_max = 1048576
net.core.wmem_default = 262144
net.core.wmem_max = 262144

7.编辑/etc/security/limits.conf,增加以下内容:

oracle soft nproc 2047
oracle hard nproc 16383
oracle soft nofile 1023
oracle hard nofile 65535

8.编辑/etc/pam.d/login,增加以下内容:

session required /lib/security/pam_limits.so
session required pam_limits.so

9.执行:

sysctl -p

10.

su - oracle

以上命令需以root用户执行,接下来切换至oracle用户.

11.切换至安装目录,开始安装.我选择了英语作为安装时显示的语言.

export LANG=en_CN
./runInstaller

12.安装过程中提示运行以下两个脚本:

orainstRoot.sh
root.sh

12.安装过程中检测到系统未装有GLIBC环境,忽略后,未发现对安装和运行有多大影响.

13.切记,安装时选择自定义,并且选择数据库的字符集为 ZHS16GBK!

因为忘记了这个选项,我只好删掉数据库,重新建了一个,浪费了半个小时的时间.

PS.ORACLE 11g好像不支持更改数据库的字符集了...或是我没有找到正确的方法

14.安装完成后,数据库的连接和查询异常之慢,GOOGLE之,然后尝试着把网络的DNS服务器全给删了,解决.

15.两个常用的工具:dbca和netca.

世界顶级网管利器--PacketShaper

产品咨询热线:13602849240

1. 网络管理面临的问题

几年来,随着互联网的快速发展,无论在生活和工作上,大众对互联网的依赖程度越来越强,政府部门和企业都相继摆脱以往存储资料的方式,运用电脑进行资料的存储和使用,实现数据的信息化管理。存储数量如此庞大的数据,需要组建一个服务器的处理中心,加上其他员工的工作需要,组建一个大型的网络成为政府部门和企业的基本设施。聘请专业的网络管理人员管理大型的网络是有必要的。

政府部门和企业数据大集中和关键网络应用的大量部署已经给网络和网络维护人员带来巨大的压力。网络管理人员管理这么一个大型的网络,工作量非常繁重,而且总会遇到各种问题。员工浏览网站或者安装不安全的软件时感染了木马或者病毒,导致电脑出现问题,甚至引起整个局域网络的问题,影响其他员工的正常工作需要;员工从网络下载与工作无关的软件或者在线观看电视剧、电影,在线听音乐等其他娱乐,影响了其他正常业务甚至是关键业务的使用;政府部门网站或企业网站的访问量不断增加,领导和员工总是反映网络速度不够快,不能满足正常使用。网络带宽从增加到,但带宽依然不够用。很多时候网络管理员面对这一系列的问题却无法短时间内解决,导致网络使用的延迟甚至网络瘫痪,严重影响政府部门或企业的正常运作,甚至被逼停止工作,导致工作进度受到严重影响,直接引致损失。

面对这一系列的网络问题,网络管理人员费尽心思,始终无法合理地解决这些问题,使网络保持正常运作。如今,一种针对网络管理问题的新产品出现了——PacketShaper

2. PacketShaper的出现

PacketShaper的出现,大大减轻了网络管理人员的工作量,同时有效地保证网络达到最优化的使用。

3. PacketShaper的作用

PacketShaper是一种智能应用流量管理及加速的设备,致力于解决网络设施和应用系统之间的服务断层。它首先可以弥补现有网络设备、网管平台对应用的“透明度”不足的问题;其次,它还可以发现IT基础设施安全方面的“隐患”,即时地堵住安全漏洞,做到防患于未然;它与传统产品最大的不同在于它不但可以发现应用方面的性能问题,而且还可以解决这些问题,以达到保障关键业务的目的;同时,它还可以立足在现有设施的基础上,通过提高资源利用率加速应用的传输,改善应用的响应时延,改善终端用户和客户的访问效率,使得资源的投资回报最大化。

PacketShaper使用独特的应用情报,以加强其所有的WAN优化技术,合理地把应用和网络实现智能化覆盖,确保关键业务应用的持续可用性,优化应用性能,信息传递,提高员工工作效率,主动的管理风险,确保IT投资回报

4. PacketShaper的工作原理

PacketShaper是一个完整的设备,有助于连接应用与网络之间的距离。它提供几种不同的模块集成在一个简单的系统上, PacketShaper的解决方案是灵活的、独一无二。

PacketShaper使用模块化的形式,反映客户的业务需求,并为他们的网络提供纳入的能见度,使他们能够看到网络出现什么问题,然后着手加以解决。下面简单介绍PacketShaper的工作原理。

4.1 监控模块

监控模块支持能见度,并且与所有PacketShaper标配,网络管理人员所需要管理的网络问题,所有在网络上的申请,在监控模块内,在您允许建立服务的水平上,利用跟踪和回应,帮助您诊断问题和解决问题。如果这些问题出现在网络上,网络管理人员可以使用合适的工具,以计算出如何修复出现的问题。(关于PacketShaper更多详细的资料和解决方案请浏览我们公司的网站:www.cnwit.com)

4.2 整形模块

整形模块让您可以轻松控制带宽分配。 网络服务质量的供应可以协助网络管理人员的工作,确保其他人在关键业务上的应用,例如语音,为客户的关键ERP(企业资源管理计划)应用或任何适用于网络的应用提供服务。它可以帮助你保护网络及应用免受新出现的威胁影响(即分布式拒绝服务攻击,蠕虫,病毒等等)。基本上,它允许员工使用网络服务与关键业务的使用。(关于PacketShaper更多详细的资料和解决方案请浏览我们公司的网站:www.cnwit.com)

4.3 压缩模块

压缩模块是帮助网络管理人员创建带宽。通过对传输数据进行压缩,减少不断提高的通信量对网络流量的影响,实现网络服务容量的增加,以缓解网络挤塞情况。(关于PacketShaper更多详细的资料和解决方案请浏览我们公司的网站:www.cnwit.com)

4.4 加速模块

加速模块可以提高网络的性能,有助于克服议定书设计的限制及延时,加快应用程序的网络性能,实现网络的加速。(关于PacketShaper更多详细的资料和解决方案请浏览我们公司的网站:www.cnwit.com)

4.5 集中管理

对传输数据进行集中式的管理,尽量减少对网络维护的成本,而且保险中心和报告中心可以添加到PacketShaper的部署内,令总拥有成本(TCO)降低,实现成本得最少化。(关于PacketShaper更多详细的资料和解决方案请浏览我们公司的网站:www.cnwit.com)

4.6 其他功能

除了以上5个功能外,PacketShaper还有其他的功能,例如基于WCCP V2同iShared在中心网络部署PacketShaper,边缘网络部署SkyX设备;CISP版本的设备,增大并发主机数(400K到800K)、IP Filter(20到2000)、Load Splitting等等。(关于PacketShaper更多详细的资料和解决方案请浏览我们公司的网站:www.cnwit.com)

5. 集成网络应用优化的好处

PacketShaper将监控、整形、压缩、加速结合起来,使网络管理人员能够管理整个过程。网络管理人员可以评估出现网络问题的具体位置,然后智能地选择合适的工具解决问题。由于PacketShaper的加速功能,您无须对网络的带宽进行扩展,除非您有应用或者网络环境的需要。PacketShaper也可以让您轻松解决您可能没有预期出现的新问题。您可能从来都没有想过可以管理整个过程,包括从评估到主动发现问题,到选择合适的工具解决问题。

由于这些不同的优化工具之间具有非常关键的反馈关系。因此,QoS策略控制应用网络管道,利用压缩改变网络管道的大小,加速了解需要充满多大管道,而上述三项工作需要一起开展。否则,它不知道如何快速去处理问题。因此,在一个PacketShaper中,所有这些关键技术都是完美地协同工作。这些关键技术需要一起工作来优化您的客户环境的应用。

最后,PacketShaper的目的是管理所有类型的应用,包括客户的、延迟敏感的应用。此外,PacketShaper还可以管理文件和档案、语音和视频、IT基础设施的DNS、DHCP,以及对娱乐和恶意攻击的管理。PacketShaper能帮助您非常有效地管理整个网络应用过程及管理所有类型的应用。

2009年3月9日星期一

查机票网站

http://www.kuxun.cn/                  酷讯网

http://www.china-sss.com/index.htm            春秋航空

2009年3月4日星期三

核心交换机的网络数据不断的掉包

http://itknowledgeexchange.techtarget.com/itanswers/

这个可以用show interface或者show int summar看带宽使用情况、输入输出队列是否占满。假如带宽被占满肯定是要丢包的。还可以用sh proc cpu看看系统资源消耗情况。一般这种可能性最大
另外比较大的可能是物理层质量不好造成的,用sh inter看CRC错误,正常情况应该几乎没有,超过1%就有问题了,原因有端口质量、网线质量不好,电气环境不好也有可能。

bit、Byte、bps、Bps、pps、Gbps的详细说明及换算

bit、Byte、bps、Bps、pps、Gbps的详细说明及换算

bit

电脑记忆体中最小的单位,在二进位电脑系统中,每一bit 可以代表0 或 1 的数位讯号。

Byte

字节单位,一般表示存储介质大小的单位,一个B(常用大写的B来表示Byte)可代表一个字元(A~Z)、数字(0~9)、或符号(,.?!%&+-*/),但中文字需要2个Byte。

1 Byte = 8    bits
1 KB   = 1024 Bytes
1 MB   = 1024 KB
1 GB   = 1024 MB
注意:在计算存储介质大小时,需要用2的n次方来换算(1KB = 2^10 Bytes)。

bps

“bits per second”常用于表示数据机及网络通讯的传输速率。例如GigabitEthernet端口:
5 minute input rate 38410000 bits/sec, 6344 packets/sec
382410000 bits/sec = 382.41Mbps
所以常说的快速以太网能达到百兆传输,其实实际传输文件大小只有10MB = 100Mb
注意:在计算传输速率时,直接用1000来换算(1 Mb = 1000 Kb = 1000,000 bit)。

Bps

“Byte per second”电脑一般都以Bps显示速度,但有时会跟传输速率混淆,例如ADSL宣称的带宽为1Mbps ,但在实际应用中,下载速度没有1MB ,只有1Mbps/8 = 128kBps

也就是说与传输速度有关的b一般指的是bit。
与容量有关的B一般指的是Byte。

pps - 包转发率

包转发率标志了交换机转发数据包能力的大小。单位一般位pps(包每秒),一般交换机的包转发率在几十Kpps到几百Mpps不等。包转发速率是指交换机每秒可以转发多少百万个数据包(Mpps),即交换机能同时转发的数据包的数量。
包转发率以数据包为单位体现了交换机的交换能力。

Gbps - 背板带宽

交换机的背板带宽,是交换机接口处理器或接口卡和数据总线间所能吞吐的最大数据量。背板带宽标志了交换机总的数据交换能力,单位为Gbps,也叫交 换带宽,一般的交换机的背板带宽从几Gbps到上百Gbps不等。一台交换机的背板带宽越高,所能处理数据的能力就越强,但同时设计成本也会越高。

从以下两个方面可以判断一台交换机背板带宽的可用性:
1、(所有端口容量×端口数量×2)小于等于背板带宽,可实现全双工无阻塞交换,证明交换机具有发挥最大数据交换性能的条件。
2、满配置吞吐量(Mpps) = 满配置GE端口数×1.488Mpps,其中1个千兆端口在包长为64字节时的理论吞吐量为1.488Mpps。

GE端口理论吞吐量-1.488Mpps

以太网传输最小包长是64字节。包转发线速的衡量标准是以单位时间内发送64byte的数据包(最小包)的个数作为计算基准的。

对于千兆以太网来说,计算方法如下:
1000Mbps/((64B+8B+12B)×8bit)=1.488095pps
说明:当以太网帧为64Byte时,需考虑8Byte的前导符和12Byte的帧间隙的固定开销。
在以太网中,每个帧头都要加上了8个字节的前导符,前导符的作用在于告诉监听设备数据将要到来。然后,以太网中的每个帧之间都要有帧间隙,即每发完一个帧 之后要等待一段时间再发另外一个帧,在以太网标准中规定最小是12个字节,然而帧间隙在实际应用中有可能会比12个字节要大,在这里我用了最小值。每个帧 都要有20个字节的固定开销。(另外这20字节的信息是不能通过抓包软件抓下来的)
因此一个全双工线速的千兆以太网端口在转发64Byte包时的包转发率为1.488Mpps。

以下是常用以太网端口的包转发率:

1、万兆以太网:14.88Mpps
2、千兆以太网:1.488Mpps
3、百兆以太网:0.1488Mpps

本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u2/61187/showart_1194563.html