网站运维、系统运维管理研究
2006/10/23心情故事

33条评论
86 views

www.0591ok.com榕城社区诞生了

一段时间准备,在周末终于把榕城社区给上线了

http://www.0591ok.com,榕城社区,福州本地化、城市生活社区

终于把这个域名给定位并安置下来了……

接下来的就是很头痛的事,怎么去宣传,怎么把人气提高呢?

这是很大的问题,因为是搞技术的,对提升人气方面还真没办法;

谁能给我帮助啊!!

今天给领导写了信反馈,姑且记录一下吧

以前曾经分析过google免费邮局会不会给我们带来影响,现在看来倒不是google自身引起影响,而是由它引起的国内邮箱提供商的反应会给我们带来影响;

继google推出邮局之后,MSN随后也加大了免费邮局的空间和用户数,不过邮局MSN在国内访问的速度实在不理想,估计用的人也不多;

sohu 前段时间也推出了免费邮局服务,我试用了感觉不怎么样,虽然也可以自定义一些logo,介绍之类的,但邮箱感觉不怎么样,所以也只是一些个人站长可能会使用;

昨天居然发现了网易也推出了domain 信箱即免费邮局服务公测,马上申请了试用:

后台:

1、注册需要先有一个网易帐号,做了MX记录后登入即可申请;也可随时注销服务;

2、使用coremail系统,支持反垃圾,反病毒;

3、用户数默认50个,没有看到说可以不可以增多;

4、每个用户空间为2G,可设置某一个用户为管理用户;

5、管理可支持添加用户,查看用户列表,别名列表;

6、可批量添加用户;

7、可创建别名用户,用户列表用户,可做私人列表,开放列表等,也可做象我们那种只有hr才可以发信给all的设置;

8、可更改企业概况,如企业名称,企业概况介绍;

9支持邮件汇总帐号(如果有邮件发送到域名不存在的帐号,则全部自动转发进此帐号),即将开放

10、可支持是否开放企业通讯录;

11、支持企业公告栏;

12、支持用户批量导入,导出(.csv格式);

13、支持首页设置,可自定义邮箱首页颜色,首页新闻栏,企业logo,首页banner等;

14、同一管理帐号还可继续添加域申请;

前台:

1、风格使用网易极速风格;

2、前台支持使用企业logo;

3、支持快捷键n写信,c添加通讯录等;

4、支持双克隆(邮件+通讯录);

5、支持参数设置,过滤器,自定义黑白名单等

3、其他跟现有的126.com信箱基本一致;

2006/10/22杂七杂八

33条评论
46 views

网易也搞免费邮局了…..

真是爱死google,他的动作可胃引发了国内免费邮箱大战

先是gmail 1G,使得国内网站纷纷推出G级邮箱服务;

接着是gmaol domian,免费的企业邮局服务;

让MSN、SOHU都来跟风了;

前几天注册了个sohu的免费企业邮局,感觉不怎么样,就没在继续使用了;

今天发现国内免费邮箱的老大网易也推出免费的域名邮箱了,反正有空闲着域名,也注册一个来试用吧;

哎哟,糟糕,DNS还没通过验证,还没生效,过要会才可继续测试用……

在管理看也是极速风格,估计应该界面上还是保持网易的ajax风格,应该还不错!

先发个管理地址吧:http://ym.126.com/0591ok.com/panel

申请地址:http://ym.126.com

等DNS MX记录生效了好好测试一下,网易的信箱还是满喜欢的……

2006/10/18WEB服务器

41条评论
38 views

apache 2.2 与之前版面的差异

用了一段时间的apache2.2版。因为一直都只有一个站点,所以没怎么在意;

昨天想加上一个分站点,按原来的方式做一直出错,仔细看了之后,apache2.2 的conf目录下多了extra,里面有几个配置文件:

httpd-autoindex.conf

httpd-dav.conf

httpd-default.conf

httpd-info.conf

httpd-languages.conf

httpd-manual.conf

httpd-mpm.conf

httpd-multilang-errordoc.conf

httpd-ssl.conf

httpd-userdir.conf

httpd-vhosts.conf

对了就是最后一个httpd-vhosts.conf

进去把默认例子站点注释点,然后加上两个站点,一个原来的,一个现在要加上的

如:

<VirtualHost *:80>

ServerAdmin zhanggs@***.com

DocumentRoot /home/web_data/track.***.com

ServerName realsky.***.com

ErrorLog logs/realsky.err_log

Options Indexes FollowSymLinks

CustomLog logs/realsky_log common

</VirtualHost>

<VirtualHost *:80>

ServerAdmin zhanggs@***.com

DocumentRoot /home/web_data/gg.***.com

ServerName gg.***.com

ErrorLog logs/gg.err_log

Options Indexes FollowSymLinks

CustomLog logs/gg_log common

</VirtualHost>

再到httpd.conf里

# Virtual hosts

Include conf/extra/httpd-vhosts.conf

里把Include conf/extra/httpd-vhosts.conf前的#注释去掉

apachectl restart

还是有点问题,第一个站点正常,第二个站点居然提示没权限,又找了一翻,这样解决;

在http.conf 里把

<Directory />

Options FollowSymLinks

AllowOverride None

o&#114;der deny,allow

Deny from all

</Directory>

改成

<Directory />

Options FollowSymLinks

AllowOverride None

o&#114;der deny,allow

#Deny from all

</Directory>

apachectl restart

测试,成功了……

2006/10/16心情故事

43条评论
73 views

开发需求

忙碌的日子终于使服务器稳定下来了……

接下来就要全力攻邮局

今天先完成开发需求吧……

希望不要再有什么事来打扰

看来在进行需求之前还得先完成服务器的自动备份方案

2006/10/14心情故事

38条评论
93 views

忙碌的九月十月!

8月转了部门,本以为可以轻松点,可以好好的看书备考!

计划不如事实走得快,这两个月恰好是最忙的两个月,以后不知怎样……

迷你……租用……管理外包……博饼……小鱼……邮局……

晕头转向了……

看来这次又浪费钱在报考上了……郁闷

Mysql 数据库字符集转换及版本升级/降级的详细教程

本文为穆亦风原创,原帖地址 http://club.muzone.cn/viewthread.php?tid=28605

转贴请注明出处,非常感谢!

最近discuz发布了新的版本,免费了,用的人更多了,以前使用其它论坛程序和discuz2.5/3.0的纷纷转换或升级到discuz4.0,可见discuz作为中国人开发的php论坛程序,确实是非常优秀的,在大家欣喜若狂的时候,也遇到了一些问题

看到不少用户反映转换完以后是乱码的情况,出现这种现象的主要原因是这类用户使用的都是mysql4.1以上的版本.下面作一个说明,希望出现这个问题的朋友都能耐心的把这个文档看完!!!

MySQL 4.1开始,对多语言的支持有了很大变化 (这导致了问题的出现)。尽管大部分的地方 (包括个人使用和主机提供商),MySQL 3、4.0 仍然占主导地位;但 MySQL 4.1 乃至5.0是 MySQL 官方推荐的数据库,已经有主机提供商开始提供并将会越来越多;因为 latin1 在许多地方 (下边会详细描述具体是哪些地方) 作为默认的字符集,成功的蒙蔽了许多 PHP 程序的开发者和用户,掩盖了在中文等语言环境下会出现的问题。

MySQL 4.1开始把多国语言字符集分的更加详细,所以导致数据库迁移,或则dz论坛升级到4.0后(dz4.0开始使用gbk或utf-8编码)出现乱码问题。

MySQL 4.1的字符集支持(Character Set Support)有两个方面:字符集(Character set)和排序方式(Collation)。对于字符集的支持细化到四个层次: 服务器(server),数据库(database),数据表(table)和连接(connection)。

查看系统的字符集和排序方式的设定可以通过下面的两条命令:

引用自
QUOTE:

mysql> SHOW VARIABLES LIKE &#39;character_set_%&#39;;

+————————–+—————————-+

| Variable_name | Value |

+————————–+—————————-+

| character_set_client | latin1 |

| character_set_connection | latin1 |

| character_set_database | latin1 |

| character_set_results | latin1 |

| character_set_server | latin1 |

| character_set_system | utf8 |

| character_sets_dir | /usr/share/mysql/charsets/ |

+————————–+—————————-+

7 rows in set (0.00 sec)

mysql> SHOW VARIABLES LIKE &#39;collation_%&#39;;

+———————-+——————-+

| Variable_name | Value |

+———————-+——————-+

| collation_connection | latin1_swedish_ci |

| collation_database | latin1_swedish_ci |

| collation_server | latin1_swedish_ci |

+———————-+——————-+

3 rows in set (0.00 sec)

MySQL 4.1 对于字符集的指定可以细化到一台机器上安装的 MySQL,其中的一个数据库,其中的一张表,其中的一栏,应该用什么字符集。但是,传统的 Web 程序在创建数据库和数据表时并没有使用那么复杂的配置,它们用的是默认的配置,那么,默认的配置从何而来呢?

编译 MySQL 时,指定了一个默认的字符集,这个字符集是 latin1;

安装 MySQL 时,可以在配置文件 (my.ini) 中指定一个默认的的字符集,如果没指定,这个值继承自编译时指定的;

启动 mysqld 时,可以在命令行参数中指定一个默认的的字符集,如果没指定,这个值继承自配置文件中的;

此时 character_set_server 被设定为这个默认的字符集;

当创建一个新的数据库时,除非明确指定,这个数据库的字符集被缺省设定为 character_set_server;

当选定了一个数据库时,character_set_database 被设定为这个数据库默认的字符集;

在这个数据库里创建一张表时,表默认的字符集被设定为 character_set_database,也就是这个数据库默认的字符集;

当在表内设置一栏时,除非明确指定,否则此栏缺省的字符集就是表默认的字符集;

这个字符集就是数据库中实际存储数据采用的字符集,mysqldump 出来的内容就是这个字符集下的;

当我们按照原来的方式通过PHP存取MySQL数据库时,就算设置了表的默认字符集为utf8并且通过UTF-8编码发送查询,你会发现存入数据库的仍然是乱码。问题就出在这个connection连接层上。

想要进行“正确”的存储和得到“正确”的结果,最方便的是在所有query开始之前执行一下:

SET NAMES &#39;gbk&#39;;

其中gbk是数据库字符集。

它相当于下面的三句指令:

SET character_set_client = gbk;

SET character_set_results = gbk;

SET character_set_connection = gbk;

4.1和5.0默认使用的是latin1字符集(木头:妈的,老外真霸道,妄想让全世界都是使用瑞典字符集吗)

如果我们只想使用gbk字符集存储和获取数据,

我们在编译mysql 4.1和 5.0的时候,需要注意在my.ini或者my.cnf中添加两处参数

引用自
[mysqld]

default-character-set=utf8

引用自
[mysqld]

#settings for clients (connection, results, clients)

[mysql]

default-character-set=utf8

下面我们来说主题,如何转换数据库字符集

两种方法

引用自
第一种—-更改存储字符集

主要的思想就是把数据库的字符集有latin1改为gbk,big5,或者utf8; 以下操作必须拥有主机权限。假设当前操作的数据库名为:database

导出

首先需要把数据导为mysql4.0的格式,具体的命令如下:

mysqldump -uroot -p –default-character-set=latin1 –set-charset=gbk –skip-opt databse > d4.sql

mysqldump的参数参照:

MySql数据库备份mysqldump参数选项

–default-characte-set 以前数据库的字符集,这个一般情况下都是latin1的,

–set-charset 导出的数据的字符集,这个可以设置为gbk,utf8,或者big5

导入

首先使用下面语句新建一个GBK字符集的数据库(test)

Cr&#101;ate DATABASE `d4` DEFAULT CHARACTER SET gbk COLLATE gbk_chinese_ci;

然后把刚才导出的数据导入到当前的数据库中就ok了。

mysql -uroot -p –default-character-set=gbk -f d4<d4.sql

通过以上的导出和导入就把数据库的字符集改为正确的存储方式了。

其中d4为新建库的名称,d4.sql为导出文件的名字

但是这种方法,发现数据库数据存储量无端变大30%,真是郁闷

引用自

另外一种其实原理相同,但是需要手动操作,一般用于第一种方法失败后的选择

不过这种方法如果数据库很大,估计很难做,因为光打开文件就能让你死机

首先还是用phpmyadmin或者用mysql本身的dump导出 .sql文件

然后用UltraEdit打开你备份的所有xxxx.sql文件,查找

引用自
DEFAULT CHARSET=latin1

latin1这里也许是别的,反正是你不想要的,要转成gbk或者big5的字符集

把这个替换为“空”

在查找

引用自
Cr&#101;ate TABLE cdb_sessions (

sid char(6) character set latin1 collate latin1_bin NOT NULL default &#39;&#39;,

ip1 tinyint(3) unsigned NOT NULL default &#39;0&#39;,

ip2 tinyint(3) unsigned NOT NULL default &#39;0&#39;,

ip3 tinyint(3) unsigned NOT NULL default &#39;0&#39;,

ip4 tinyint(3) unsigned NOT NULL default &#39;0&#39;,

uid mediumint(8) unsigned NOT NULL default &#39;0&#39;,

username char(15) NOT NULL default &#39;&#39;,

groupid smallint(6) unsigned NOT NULL default &#39;0&#39;,

styleid smallint(6) unsigned NOT NULL default &#39;0&#39;,

invisible tinyint(1) NOT NULL default &#39;0&#39;,

`action` tinyint(1) unsigned NOT NULL default &#39;0&#39;,

lastactivity int(10) unsigned NOT NULL default &#39;0&#39;,

fid smallint(6) unsigned NOT NULL default &#39;0&#39;,

tid mediumint(8) unsigned NOT NULL default &#39;0&#39;,

nickname char(15) NOT NULL default &#39;&#39;,

UNIQUE KEY sid (sid)

) ENGINE=HEAP MAX_ROWS=1000;

替换为

引用自
Cr&#101;ate TABLE `cdb_sessions` (

`sid` char(6) binary NOT NULL default &#39;&#39;,

`ip1` tinyint(3) unsigned NOT NULL default &#39;0&#39;,

`ip2` tinyint(3) unsigned NOT NULL default &#39;0&#39;,

`ip3` tinyint(3) unsigned NOT NULL default &#39;0&#39;,

`ip4` tinyint(3) unsigned NOT NULL default &#39;0&#39;,

`uid` mediumint(8) unsigned NOT NULL default &#39;0&#39;,

`username` char(15) NOT NULL default &#39;&#39;,

`groupid` smallint(6) unsigned NOT NULL default &#39;0&#39;,

`styleid` smallint(6) unsigned NOT NULL default &#39;0&#39;,

`invisible` tinyint(1) NOT NULL default &#39;0&#39;,

`action` tinyint(1) unsigned NOT NULL default &#39;0&#39;,

`lastactivity` int(10) unsigned NOT NULL default &#39;0&#39;,

`fid` smallint(6) unsigned NOT NULL default &#39;0&#39;,

`tid` mediumint(8) unsigned NOT NULL default &#39;0&#39;,

`nickname` char(15) NOT NULL default &#39;&#39;,

UNIQUE KEY `sid` (`sid`)

) TYPE=HEAP MAX_ROWS=2000;

这一步更为简单的办法就是删除掉关于cdb_sessions表的这一段,将来全新装一个d4,将这个表导出

将其内容复制,粘贴到 sql文件的最后面

保存后,再把这个sql文件导入到你的库中

就OK了

用这两种方法就可以很方便的把4.1和5.0的mysql数据库降级到4.0

简单的过程就是

A导出4.1/5.0的库

B进行处理,转换成gbk字符集

C彻底卸载4.1或者5.0

D安装4.0.26

E然后导入处理完的库

降级的时候导出库可以用这个方法

mysqldump -uroot -p –default-character-set=latin1 –set-charset=gbk –skip-opt databse –compatible=mysql40 > d4.sql

这样导出的就是4.0的库勒

至于mysql版本的升级,

如果数据文件中有中文信息,那么将MySQL 4.0的数据文件,直接拷贝到MySQL 4.1中就是不可以的,即便在my.ini中设置了default-character-set为正确的字符集。虽然貌似没有问题,但MySQL 4.1的字符集有一处非常恼人的地方,以gbk为例,原本MySQL 4.0数据中varchar,char等长度都会变为原来的一半,这样存储中文容量不变,而英文的存储容量就少了一半。这是直接拷贝数据文件带来的最大问题。

所以,升级的根本,如果想使用“正确”的字符集,还是先用mysqldump导出成文件,然后导入。

这里顺便提一个我的好友深海写的

用于MySQL4.1的论坛数据库字符集整理工具。

刚写的,处理部分代码可能写得有点龌龊,但是不影响使用,

主要用于处理整理MySQL4.1指定数据库、表、字段的字符集。

适用于将非允许的字符集范围内的数据结构(无数据!!)整理为适合Discuz!允许的字符集范围。

[down=attachment/month_0610/620061013144932.zip]点击下载此文件[/down]

看到一个discuz上的高手写的服务器优化篇

转自discuz,忽略了一些图片,都是win2000下的图片,没得看的!

win2000/2003 Discuz生存环境搭建及基础优化 攻略

副标题: win2000/2003 Php+ZendOptimizer+Mysql+eaccelerator配置及基础优化全攻略

关键字 discuz php zendoptimizer mysql eaccelerator my.ini php.ini 安装 优化

本帖即我原创,欢迎转贴,但请注明出处,另外如果大家还有哪方面感兴趣的我没写到,请跟帖,我将补充

首先,下载需要安装的软件,我已经整理好,放到穆族社区的服务器,请根据连接下载。

Php-4.4.1

http://www.muzone.cn/soft/php-4.4.1-Win32.zip

ZendOptimizer-2.6.0

http://www.muzone.cn/soft/ZendOptimizer-2.6.0-Windows-i386.exe

Mysql-4.0.26

http://www.muzone.cn/soft/mysql-4.0.26-win32.zip

Eaccelerator 加速及缓存软件

http://www.muzone.cn/soft/eaccelerator.rar

当然,这个eaccelerator针对php有不同版本的,如果您安装的不是php4.4.1,可以在这里找到您需要的版本

http://www.arnot.info/eaccelerator/

phpMyAdmin-2.7.0-pl1 Mysql管理软件,日常维护必备

http://www.muzone.cn/soft/phpMyAdmin-2.7.0-pl1.zip

第一节,基础安装。

一,安装mysql

首先,我们安装Mysql 4.0.26,之所以选择这个版本,是因为这个版本比较稳定,

而且有关字符集和兼容性也没那么麻烦,如果没有特殊需要,不推荐使用Mysql4.1和mysql5.0

新的版本,也许功能上更强,但是没有经历过太长时间的考验,稳定性和兼容性及使用便捷性不是很佳

下载mysql-4.0.26-win32.zip,解压缩,直接运行安装文件。

我是装在D:/mysql 因为C盘经常会因为各种原因重装系统,数据放在该盘不易备份和转移

选择安装目录, D:/mysql ,提示目录不存在,建立与否,确认,然后按照提示一路安装下去即可

安装完毕后,运行 D:/mysql/bin/mysqld-nt.exe

然后运行 D:/mysql/bin/winmysqladmin.exe

输入帐号 root 密码 任意输入 (因为这一步的密码设置,实际上是不生效的,需要使用phpmyadmin修改确认)

重新启动服务器,检查系统服务中,是否如图所示

至此mysql的基本 安装完成,进一步的设置和My.ini优化,将在下一节说明

二,安装PHP

需要说明的是

php有CGI和ISAPI是两种 运行的方式

CGI 更消耗资源,容易因为超时而没有反映,但是实际上比较安全

ISAPI是大C推荐的模式,负载能力强,节省资源,但是安全性略差于CGI

我的教程中说的是ISAPI方式

解压缩php-4.4.1-Win32.zip,将第二层目录php-4.4.1-Win32,改名为 php

然后复制到 c:/ 成为 c:/php 并将其目录安全属性,添加 everyone 可读取和运行权限

但是鉴于NT系统种种怪异现象,我们可以给与everyone所有权限,只是安全性有一点点问题

(其理论性,只需要Guest组具备读取和运行权限,以及IIS所用到的IIS_WPG可以读取运行就行,但实际上往往会出现一些比较离奇的问题,本教程不作深入探讨)

然后将php.ini-dist 改名为 php.ini

将php4ts.dll复制到系统目录的 system32目录中

win2000: c:/winnt/system32/

win2003: c:/windows/system32/

打开,php.ini 找到

CODE:

extension_dir = &#34;./&#34; 改为

CODE:

extension_dir = &#34;c:/php/extensions/&#34;

然后打开 Internet 信息服务(IIS)管理器

修改你的站点属性,选中主目录,使其可以使用纯脚本

然后点 配置 进入 应用程序配置 点添加 如图所示

可执行文件 C:phpsapiphp4isapi.dll

扩展名 .php

将“脚本引擎”“确认文件是否存在”选中,然后确认。

win2000中,到此一般就可以支持php脚本了。

2K和03中也可以再设置ISAPI筛选其保其运行正常

如果状态为绿色箭头,即可,该步非必要性操作。

win2003中,还需要设置IIS的WEB服务扩展器

添加一个新的WEB扩展器,扩展名为.php,要求的文件C:phpsapiphp4isapi.dll,设置扩展状态为允许。

设置完后如图

完成所有操作后,重新启动IIS服务。

到此,PHP的基本安装已经完成,我们已经使网站支持PHP脚本。

检查方法是,新建一个文本文件,内容为

CODE:

改名为 php.php

放到您的网站根目录,访问这个文件,如果显示了您的php详细信息,即成功,类似

关于进一步设置和php.ini的优化,我们将在下一节继续探讨。

三,安装ZendOptimizer

安装ZendOptimizer,不仅是一些商用PHP必备的条件,也可以大幅度的提高php文件运行的效率。

下载ZendOptimizer-2.6.0-Windows-i386.exe 直接运行安装

请注意如下提示,根据提示仔细安装。

必须选择您使用的WEB SERVER 为IIS,否则将有不可预知的错误发生。如图

确认后,下一步,点击浏览,选择您的php.ini所在目录,这一点也不能错。如图

然后根据提示安装,过程中,他会 停止 和 重新启动 您的IIS服务,并将原 php.ini 备份为 php.ini.Zend_Optimizer_bak

如果一切顺利,您的 php.ini文件的尾部,将多出

CODE:

[Zend]

zend_extension_manager.optimizer_ts=&#34;C:Program FilesendOptimizerlibOptimizer-2.6.0&#34;

zend_extension_ts=&#34;C:Program FilesendOptimizerlibendExtensionManager.dll&#34;

zend_optimizer.optimization_level=15并且检查C:Program FilesendOptimizerlibOptimizer-2.6.0 的目录安全属性是否有系统读取和运行的权限

至此,ZendOptimizer的基本安装已经完成,更多设置和优化,将在下一节说明。

基本安装到此结束,此环境已经完全可以运行discuz及各种php程序。

下面我们来讲基本的设置和优化。

第二节,基础设置及优化

关键字 my.ini php.ini eaccelerator 穆亦风

一,Mysql的进一步设置及优化。

登录数据库

  “命令提示字符”窗口录入,

  录入cd C:mysqlin 并按下回车键,将目录切换为 cd C:mysqlin

  再键入命令mysql -uroot -p,回车后提示你输密码,如果刚安装好MYSQL,超级用户root是没有密码的,故直接回车即可进入到MYSQL中了,MYSQL的提示符是:mysql>

  修改密码

  C:mysqlin提示符下录入:

  格式:mysqladmin –u用户名 -p旧密码 password 新密码

  例如:给root加个密码ab12。键入以下命令:

  mysqladmin -uroot password ab12

  建立数据库

  格式:cr&#101;ate database 库名;

  例如:建立新数据库discuz

  在MYSQL的提示符下:mysql> 录入 cr&#101;ate database discuz;

  显示数据库

  格式:show databases;

  注意是databases而不是database

  建立新用户

  格式:grant all privileges on 数据库.* to 用户名@登录主机 identified by &#34;密码&#34;;

  例如:增加一个用户test密码为1234,让他只可以在localhost上登录,并可以对数据库discuz进行所有的操作(localhost指本地主机,即MYSQL数据库所在的那台主机),

  在MYSQL的提示符下:mysql> 录入grant all privileges on discuz.* to test@localhost identified by &#34;1234&#34;;

  通过以上操作,你建立一个新的数据库 discuz,并增加了一个名为test对discuz数据库有所有操作权限。

  注意:以上仅仅是简单的Mysql操作命令,如果你需要了解更加详细的资料,请查阅Mysql相关操作说明文档。

点击 《MySQL管理员指南》

首先,在上一节,我们安装的mysql,实际上没有设置root帐号的密码,这是极不安全的

下载 phpMyAdmin-2.7.0-pl1.zip 将子目录 phpMyAdmin-2.7.0-pl1 修改为 任意名称,复制到您的网站根目录

这个目录的名称最好复杂,不易被猜解,防止他人使用

然后修改config.default.php

找到

$cfg[&#39;PmaAbsoluteUri&#39;] = &#39;&#39;;修改为

$cfg[&#39;PmaAbsoluteUri&#39;] = &#39;http://test.muzone.cn/89xd983s&#39;;即您的网站网址及phpmyadmin具体所在目录

找到

$cfg[&#39;blowfish_secret&#39;] = &#39;&#39;;修改为

$cfg[&#39;blowfish_secret&#39;] = &#39;muzone&#39;;

这个地方的值主要用作与加密您的cookie,可以任意设置

找到

$cfg[&#39;Servers&#39;][$i][&#39;auth_type&#39;] = &#39;config&#39;;修改为

$cfg[&#39;Servers&#39;][$i][&#39;auth_type&#39;] = &#39;cookie&#39;;此处为关键修改,设置完后,只有输入正确的帐号和密码才可以管理您的mysql

全部修改完毕,保存后,通过您的phpmyadmin 访问并管理您的mysql

第一次登陆,由于我们没有设置root的密码,所以帐号填 root 密码空,即可登陆

进入后第一件事情,就是修改root帐号的密码

登陆以后,点权限,修改root帐号,点最后的编辑按钮

设置密码,如图

密码设置成功后,需要重新登陆,至此,便可以对mysql进行各种管理,phpmyadmin的操作网上有很多教程

我这里就不详细讲了

至于 my.ini的设置,我们将在下一节详细讲解

二,安装 Eaccelerator 加速及缓存软件

安装 Eaccelerator 加速及缓存软件,可以加速php文件的读取和运行速度,并将一些mysql查询及php文件缓存起来

减轻服务器的负担,从而达到对论坛的大幅度加速和负载能力的提高,这个软件我在许多大站上作过试验

效果非常显著!其效果可询问若干长期由我维护的大论坛站长。

安装eaccelerator非常简单,

首先,下载eaccelerator.rar

解压缩后,一个是安装说明,一个是所需要的dll文件。

将eaccelerator_win_4.4.1.dll 复制到 c:/php/extensions/

打开c:/php/php.ini

找到

[Zend]

zend_extension_manager.optimizer_ts=&#34;C:Program FilesendOptimizerlibOptimizer-2.6.0&#34;

zend_extension_ts=&#34;C:Program FilesendOptimizerlibendExtensionManager.dll&#34;

zend_optimizer.optimization_level=15

替换为

[Zend]

zend_extension_ts=&#34;C:phpextensionseaccelerator_win_4.4.1.dll&#34;

eaccelerator.shm_size=&#34;16&#34;

eaccelerator.cache_dir=&#34;c: emp&#34;

eaccelerator.enable=&#34;1&#34;

eaccelerator.optimizer=&#34;1&#34;

eaccelerator.check_mtime=&#34;1&#34;

eaccelerator.debug=&#34;0&#34;

eaccelerator.filter=&#34;&#34;

eaccelerator.shm_max=&#34;0&#34;

eaccelerator.shm_ttl=&#34;0&#34;

eaccelerator.shm_prune_period=&#34;0&#34;

eaccelerator.shm_only=&#34;0&#34;

eaccelerator.compress=&#34;1&#34;

eaccelerator.compress_level=&#34;9&#34;

zend_extension_manager.optimizer_ts=&#34;C:Program FilesendOptimizerlibOptimizer-2.6.0&#34;

zend_extension_ts=&#34;C:Program FilesendOptimizerlibendExtensionManager.dll&#34;

zend_optimizer.optimization_level=15在C盘根目录建立一个文件夹, c:/temp 将这个目录授予 everyone 所有权限(实际上只要有写入,修改,读取即可)

重新启动IIS

在phpmyadmin中,察看php信息,看看是否如图所示

如果有加载eaccelerator的信息,说明安装成功。

至此,对于php的第一步优化完成。

下面我们要修改php.ini的其它项

二,对php.ini进行最基本的设置和优化

对于php.ini的优化和设置,非常多样化,根据不同的程序需要和服务器配置,各人都有不同的方案

这里我不会说的太过详细,仅提供一些基本的。

大家可以阅读 php.ini 基本 中文说明 http://club.muzone.cn/viewthread.php?tid=27800

首先,由于discuz的验证码需要,我们需要打开GD库的支持

第一节中,我们已经设置好了扩展库的目录,即extension_dir = &#34;c:/php/extensions/&#34;

下面我们只需要找到

;extension=php_gd2.dll将前面的冒号去掉,即

extension=php_gd2.dll然后保存php.ini,即可

然后,我们可以先做一项对于页面处理效果比较明显的设置

output_buffering = Off

  输出缓存允许你甚至在输出正文内容之后发送 header(标头,包括cookies)行 其代价是输出层减慢一点点速度。你可以使用输出缓存在运行时打开输出缓存, 或者在这里将指示设为 On 而使得所有文件的输出缓存打开。

  output_handler = ; 你可以重定向你的脚本的所有输出到一个函数,

  那样做可能对处理或以日志记录它有用。

  例如若你将这个output_handler 设为ob_gzhandler, 则输出会被透明地为支持gzip或deflate编码的浏览器压缩。

  设一个输出处理器自动地打开输出缓冲。找到这个

output_buffering = Off 修改为

output_buffering = On注意,不要设置数值,只需要设置为On即可。

相应的,你还可以在你的discuz后台,打开gzip支持,也是优化的一项内容。

有些朋友为了安全,还启用了php的安全模式,这个也是一办法,但是比较麻烦

大家可以到网上搜索一项相关的内容,我这里就不说了,毕竟对于效率没什么显著的意义。

另外有些朋友需要使用全局变量和MAGIC,这是一些php程序的必备条件,discuz2.0也需要

可以打开,不过安全性能将降低,方法很简单。

找到

register_globals = Off ;和

magic_quotes_gpc = Off ; 将其修改为On即可

还有,一些朋友经常反映无法上传较大的文件或者后台备份数据经常超时,那么可以找到

max_execution_time = 30 ; 这个是每个脚本运行的最长时间,可以自己修改加长,单位秒

max_input_time = 60 ; 这是每个脚本可以消耗的时间,单位也是秒

memory_limit = 8M ; 这个是脚本运行最大消耗的内存,也可以自己加大

upload_max_filesize = 2M ; 上载文件的最大许可大小 ,自己改吧,一些图片论坛需要这个更大的值

关于效率,还有一个,就是,php.ini的zend配置,在php.ini中,底部

有一行

zend_optimizer.optimization_level=15如果您的机器配置足够好,可以优化这里

这里最为重点的部分,仔细看!Zend Opt总共有10个优化过程,从理论上说开的越多性能越好。当然,理论和实际永远都存在着差距。优化过程开启的越多对性能消耗也相对也越大,Zend Opt的10个优化过程并不相同也就是说效果不是平均的。Zend公司定义的最高值(High模式)为15,这里15指的是开启1-4号优化过程。当然,很多朋友并不满足于此,毕竟最高也只开启4个优化过程连总数的一半都没有。各个优化过程的对应的数字代码(值)如下:

不使用 0 所以15只是开了前四个,如果您的内存足够多,也可以开更高,如设置为1023,即打开所有加速过程

12月21日补充,一些朋友反映,php经常报错,显示PHP has encountered an Access Violation at XXXXXX

很多人说,是php版本的问题,其实不然,可以从四个地方来看这个问题

1,是否zend所需的dll文件所在目录给的权限不够,必须有读取和运行的权限

2,是否使用的2003,设置过应用池,比如池中限制了什么什么,调整一下再试试看,是否好了,呵呵

3,php.ini有两个地方没有设置,而且一些程序必须用到的

A

将;upload_tmp_dir该行的注释符,即前面的分号“;”去掉,使该行在php.ini文档中起作用。upload_tmp_dir是用来定义上传文件存放的临时路径,在这里你还可以给其定义一个绝对路径,例如:upload_tmp_dir = d:upload  当然,此时你的d:upload目录必须有读写权限。

这里我设置为

upload_tmp_dir = c: emp (因为前面建立了这个文件夹,我图省事,呵呵)

B

出现这样的错误语句一般是因为你的php.ini中关于session.save_path一项没有设置好,解决的方法是将session.save_path和session.cookie_path 设置置为

session_save_path = c: emp

session.cookie_path = c: emp

然后在c:目录下建立一个temp目录,即可(前面我们的eaccelerarot正好用到,建立过这么一个文件夹)

最后

还有一些关于邮件的设置,大家如果装了mail server 还有需要在win下使用邮件发送的,可能需要设置

大家根据我的中文说明自己调整

进阶设置及优化

第三节中,暂时没有想到有什么可以给大家说得,只有大家比较关心的

mysql优化了

所以先说说这个,其实这个,很复杂,对于不同的网站,其在线,访问量,帖子数量,网络情况,以及机器配置

都有关系,优化不是一次可以完成的,需要不断的观察和调试,以取得最佳效果

下面我引用 Asiwish和老高的两篇优化措施,给大家看看

这些设置,只要通过修改 win2000的c:/winnt/my.ini 或者 win2003的 c:/windows/my.ini 来实现

首先,我们打开这个文件,先将最底部的密码项改成其它的,这个对数据库本身没影响,主要是防止一些有心人获取这个密码,对我们不利

然后大家看看两个例子,其中一些设置,略懂的英文的,即明白是什么意思,

不懂得可以去 http://cb.kingsoft.com 查单词,我懒得一个个对照写说明了

一个是 千人在线,1G内存的

#This File was made using the WinMySQLAdmin 1.4 Tool

#2004-2-23 16:28:14

#Uncomment o&#114; Add only the keys that you know how works.

#Read the MySQL Manual for instructions

[mysqld]

basedir=D:/mysql

#bind-address=210.5.*.*

datadir=D:/mysql/data

#language=D:/mysql/share/your language directory

#slow query log#=

#tmpdir#=

#port=3306

set-variable = max_connections=1500

skip-locking

#skip-networking

set-variable = key_buffer=384M

set-variable = max_allowed_packet=1M

set-variable = table_cache=512

set-variable = sort_buffer=2M

set-variable = record_buffer=2M

set-variable = thread_cache=8

# Try number of CPU&#39;s*2 for thread_concurrency

set-variable = thread_concurrency=8

set-variable = myisam_sort_buffer_size=64M

#set-variable = connect_timeout=5

#set-variable = wait_timeout=5

server-id = 1

[isamchk]

set-variable = key_buffer=128M

set-variable = sort_buffer=128M

set-variable = read_buffer=2M

set-variable = write_buffer=2M

[myisamchk]

set-variable = key_buffer=128M

set-variable = sort_buffer=128M

set-variable = read_buffer=2M

set-variable = write_buffer=2M

[WinMySQLadmin]

Server=D:/mysql/bin/mysqld-nt.exe这个方案,整体够用了,但是在pconnect和最大连接数上,需要研究

max_connections没必要那么大,我个人认为几百就够,否则给服务器加大了不少负担,经常会当机

连接超时的设置也要根据实际情况调整,大家可以自由调整,然后观察效果如何。

下面是老高两年前的一些建议,大家参考一下

  7、MYSQL 的优化(/etc/my.cnf)

1)确认在“[mysqld]”部分加入了“skip-innodb”和“skip-bdb”参数;

2)确认在“[mysqld]”部分加入了“skip-name-resolve”和“skip-locking”参数;

3)如果不需要的话,可以将二进制日志(binlog)停掉,方法是将“log-bin”注释掉;

4)在内存允许的情况下,对一些参数进行重新配置,目标在于将大部分操作集中于内存中,尽量不进行磁盘操作,对于我的 MYSQL 服务器我是如下修改的,基于 2G 内存情况:

[mysqld]

set-variable = key_buffer=512M

set-variable = max_allowed_packet=4M

set-variable = table_cache=1024

set-variable = thread_cache=64

set-variable = join_buffer_size=32M

set-variable = sort_buffer=32M

set-variable = record_buffer=32M

set-variable = max_connections=512

set-variable = wait_timeout=120

set-variable = interactive_timeout=120

set-variable = max_connect_errors=30000

set-variable = long_query_time=1

set-variable = max_heap_table_size=256M

set-variable = tmp_table_size=128M

set-variable = thread_concurrency=8

set-variable = myisam_sort_buffer_size=128M

你可以根据“show status”命令返回的状态进行微调。我主要注意以下变量的数值,越小越好,最好为零:)

Cr&#101;ated_tmp_disk_tables

Cr&#101;ated_tmp_tables

Cr&#101;ated_tmp_files

Slow_queries另外 mysql wait_timeout 那个值设置大了没用 做10左右就可了 (大C说得)

wait_timeout是使用长久连线时 空闲进程的控制 只要数据库在连接状态 他是不进行干预的 不管是否有查询或更新操作 把这个设置小一点 再使用pconnect就比较理想了 ;)

timeout的時間﹐我的經驗值是5-20﹐看你的SERVER的訪問量了~~ (梦飞说的)

访问量越大 这个值就应该越小 否则留出的空闲进程太多 会占用不必要的内存

在一个15分钟在线3000人的论坛上 设置为3比较合适 同时打开pconnect

另外,我再引用一篇文章

数据库连接过多的错误,可能的原因分析及解决办法

分析

系统不能连接数据库,关键要看两个数据:

1、数据库系统允许的最大可连接数max_connections。这个参数是可以设置的。如果不设置,默认是100。最大是16384。

2、数据库当前的连接线程数threads_connected。这是动态变化的。

查看max_connections、max_connections的办法见后。

如果 threads_connected == max_connections 时,数据库系统就不能提供更多的连接数了,这时,如果程序还想新建连接线程,数据库系统就会拒绝,如果程序没做太多的错误处理,就会出现类似强坛的报错信息。

因为创建和销毁数据库的连接,都会消耗系统的资源。而且为了避免在同一时间同时打开过多的连接线程,现在编程一般都使用所谓数据库连接池技术。

但数据库连接池技术,并不能避免程序错误导致连接资源消耗殆尽。

这种情况通常发生在程序未能及时释放数据库连接资源或其他原因造成数据库连接资源不能释放,但强坛系统估计不会发生这种低级的编程错误。

该错误的简便的检查办法是,在刷新强坛页面时,不断监视threads_connected的变化。如果max_connections足够大,而threads_connected值不断增加以至达到max_connections,那么,就应该检查程序了。当然,如果采用数据库连接池技术,threads_connected增长到数据库连接池的最大连接线程数时,就不再增长了。

从强坛出错的情况看,更大的可能性是数据库系统没能进行适当地配置。下面提出一点建议。供参考

让你们的工程师把MySQL的最大允许连接数从默认的100调成32000。这就不会老出现连接过多的问题了。

查看max_connections

进入MySQL,用命令:show variables

查看数据库最大可连接数的变量值:max_connections

查看threads_connected

进入MySQL,用命令:show status

查看当前活动的连接线程变量值:threads_connected

设置max_connections

设置办法是在my.cnf文件中,添加下面的最后红色的一行:

——————————————————————————–

[mysqld]

port=3306

#socket=MySQL

skip-locking

set-variable = key_buffer=16K

set-variable = max_allowed_packet=1M

set-variable = thread_stack=64K

set-variable = table_cache=4

set-variable = sort_buffer=64K

set-variable = net_buffer_length=2K

set-variable = max_connections=32000

——————————————————————————–

修改完毕后,重启MySQL即可。当然,为了确保设置正确,应该查看一下max_connections。

注意:

1、虽然这里写的32000。但实际MySQL服务器允许的最大连接数16384;

2、除max_connections外,上述其他配置应该根据你们系统自身需要进行配置,不必拘泥;

3、添加了最大允许连接数,对系统消耗增加不大。

4、如果你的mysql用的是my.ini作配置文件,设置类似,但设置的格式要稍作变通。可见,mysql的优化,是多样化,且根据环境不同,必须灵活调整的,大家不可生搬硬套,自己慢慢体会吧

我这次的教程,就写到这里,感谢大家对我的支持

如果有什么不足,欢迎提出来,我做补充

返回顶部