存档

文章标签 ‘mysql’

Windows下的PHP安装文件线程安全和非线程安全的区别

2014年11月25日 没有评论

从2000年10月20日发布的第一个Windows版的PHP3.0.17开始的都是线程安全的版本,这是由于与Linux/Unix系统是采用 多进程的工作方式不同的是Windows系统是采用多线程的工作方式。如果在IIS下以CGI方式运行PHP会非常慢,这是由于CGI模式是建立在多进程 的基础之上的,而非多线程。一般我们会把PHP配置成以ISAPI的方式来运行,ISAPI是多线程的方式,这样就快多了。但存在一个问题,很多常用的 PHP扩展是以Linux/Unix的多进程思想来开发的,这些扩展在ISAPI的方式运行时就会出错搞垮IIS。而用线程安全版本的话顶多只是搞跨某个 线程,而不会影响到整个IIS的安全。

当然在IIS下CGI模式才是 PHP运行的最安全方式,但CGI模式对于每个HTTP请求都需要重新加载和卸载整个PHP环境,其消耗是巨大的。为了兼顾IIS下PHP的效率和安全, 有人给出了FastCGI的解决方案。FastCGI可以让PHP的进程重复利用而不是每一个新的请求就重开一个进程。同时FastCGI也可以允许几个 进程同时执行。这样既解决了CGI进程模式消耗太大的问题,又利用上了CGI进程模式不存在线程安全问题的优势。

因此,如果是使用ISAPI的方式来运行PHP就必须用Thread Safe(线程安全)的版本;而用FastCGI模式运行PHP的话就没有必要用线程安全检查了,用None Thread Safe(NTS,非线程安全)的版本能够更好的提高效率。
因此,如果是使用ISAPI的方式来运行PHP就必须用Thread Safe(线程安全)的版本;而用FastCGI模式运行PHP的话就没有必要用线程安全检查了,用None Thread Safe(NTS,非线程安全)的版本能够更好的提高效率。
附:德问相关问题摘录
下载PHP安装文件时,我看到有两种不同的二进制文件,像是非线程安全(Non Thread Safe)和线程安全(Thread Safe),比如该页面所列:http://windows.php.net/download/。这个是什么意思,之间有什么区别?

这个主要是针对web server 而言,在windows环境下,如果你使用的web server 是apchae 或者 iis 7以下版本,则应该选择线程安全的安装文件,而如果你使用Fast-cgi模式时,可以选择非线程安全,因为 web sever 本身能保证线程安全。
当然还有二进制文件编译时所使用的编译器:vc9 (vs系列) vc6(gcc)

如楼上所言,是针对web server的,部分web server在处理应用请求的时候是用多线程而非多进程的方式处理,线程方式因为涉及到共享寄存器和内存,所以很容易出错,这个时候程序就需要花一些额外的经历去处理寄存器中的数据一致性,即保证线程安全。
所以是否采用线程安全主要看你的web server所采用的PHP请求处理方式,如果是多线程处理,那么请选择线程安全的,否则选择非线程安全的,如楼上所说Fast-cgi方式可选择非线程安全的

MySQL 配置优化

2014年10月25日 没有评论

安装MySQL后,配置文件my.cnf在 /MySQL安装目录/share/mysql目录中,该目录中还包含多个配置文件可供参考,有my-large.cnf ,my-huge.cnf, my-medium.cnf,my-small.cnf,分别对应大中小型数据库应用的配置。win环境下即存在于MySQL安装目录中的.ini文件。

下面列出了对性能优化影响较大的主要变量,主要分为连接请求的变量和缓冲区变量。

1. 连接请求的变量:

1) max_connections
MySQL的最大连接数,增加该值增加mysqld 要求的文件描述符的数量。如果服务器的并发连接请求量比较大,建议调高此值,以增加并行连接数量,当然这建立在机器能支撑的情况下,因为如果连接数越多,介于MySQL会为每个连接提供连接缓冲区,就会开销越多的内存,所以要适当调整该值,不能盲目提高设值。

数值过小会经常出现ERROR 1040: Too many connections错误,可以过’conn%’通配符查看当前状态的连接数量,以定夺该值的大小。

show variables like ‘max_connections’ 最大连接数

show status like ‘max_used_connections’响应的连接数

如下:

mysql> show variables like ‘max_connections‘;

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

| Variable_name | Value |

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

| max_connections | 256  |

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

mysql> show status like ‘max%connections‘;

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

| Variable_name  | Value |

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

| max_used_connections | 256|

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

max_used_connections / max_connections * 100% (理想值≈ 85%)

如果max_used_connections跟max_connections相同 那么就是max_connections设置过低或者超过服务器负载上限了,低于10%则设置过大。

2) back_log
MySQL能暂存的连接数量。当主要MySQL线程在一个很短时间内得到非常多的连接请求,这就起作用。如果MySQL的连接数据达到max_connections时,新来的请求将会被存在堆栈中,以等待某一连接释放资源,该堆栈的数量即back_log,如果等待连接的数量超过back_log,将不被授予连接资源。

back_log值指出在MySQL暂时停止回答新请求之前的短时间内有多少个请求可以被存在堆栈中。只有如果期望在一个短时间内有很多连接,你需要增加它,换句话说,这值对到来的TCP/IP连接的侦听队列的大小。

当观察你主机进程列表(mysql> show full processlist),发现大量264084 | unauthenticated user | xxx.xxx.xxx.xxx | NULL | Connect | NULL | login | NULL 的待连接进程时,就要加大back_log 的值了。

默认数值是50,可调优为128,对于Linux系统设置范围为小于512的整数。

3) interactive_timeout
一个交互连接在被服务器在关闭前等待行动的秒数。一个交互的客户被定义为对mysql_real_connect()使用CLIENT_INTERACTIVE 选项的客户。

默认数值是28800,可调优为7200。

2. 缓冲区变量

全局缓冲:

4) key_buffer_size
key_buffer_size指定索引缓冲区的大小,它决定索引处理的速度,尤其是索引读的速度。通过检查状态值Key_read_requests和Key_reads,可以知道key_buffer_size设置是否合理。比例key_reads / key_read_requests应该尽可能的低,至少是1:100,1:1000更好(上述状态值可以使用SHOW STATUS LIKE ‘key_read%’获得)。

key_buffer_size只对MyISAM表起作用。即使你不使用MyISAM表,但是内部的临时磁盘表是MyISAM表,也要使用该值。可以使用检查状态值created_tmp_disk_tables得知详情。

举例如下:

mysql> show variables like ‘key_buffer_size‘;

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

| Variable_name | Value |

+———————+————+

| key_buffer_size | 536870912 |

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

key_buffer_size为512MB,我们再看一下key_buffer_size的使用情况:

mysql> show global status like ‘key_read%‘;

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

| Variable_name  | Value |

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

| Key_read_requests| 27813678764 |

| Key_reads   | 6798830 |

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

一共有27813678764个索引读取请求,有6798830个请求在内存中没有找到直接从硬盘读取索引,计算索引未命中缓存的概率:

key_cache_miss_rate =Key_reads / Key_read_requests * 100%,设置在1/1000左右较好

默认配置数值是8388600(8M),主机有4GB内存,可以调优值为268435456(256MB)。

5) query_cache_size
使用查询缓冲,MySQL将查询结果存放在缓冲区中,今后对于同样的SELECT语句(区分大小写),将直接从缓冲区中读取结果。

通过检查状态值Qcache_*,可以知道query_cache_size设置是否合理(上述状态值可以使用SHOW STATUS LIKE ‘Qcache%’获得)。如果Qcache_lowmem_prunes的值非常大,则表明经常出现缓冲不够的情况,如果Qcache_hits的值也非常大,则表明查询缓冲使用非常频繁,此时需要增加缓冲大小;如果Qcache_hits的值不大,则表明你的查询重复率很低,这种情况下使用查询缓冲反而会影响效率,那么可以考虑不用查询缓冲。此外,在SELECT语句中加入SQL_NO_CACHE可以明确表示不使用查询缓冲。

与查询缓冲有关的参数还有query_cache_type、query_cache_limit、query_cache_min_res_unit。

query_cache_type指定是否使用查询缓冲,可以设置为0、1、2,该变量是SESSION级的变量。

query_cache_limit指定单个查询能够使用的缓冲区大小,缺省为1M。

query_cache_min_res_unit是在4.1版本以后引入的,它指定分配缓冲区空间的最小单位,缺省为4K。检查状态值Qcache_free_blocks,如果该值非常大,则表明缓冲区中碎片很多,这就表明查询结果都比较小,此时需要减小query_cache_min_res_unit。

举例如下:

mysql> show global status like ‘qcache%‘;

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

| Variable_name | Value  |

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

| Qcache_free_blocks  | 22756  |

| Qcache_free_memory  | 76764704 |

| Qcache_hits      | 213028692 |

| Qcache_inserts     | 208894227 |

| Qcache_lowmem_prunes | 4010916 |

| Qcache_not_cached | 13385031 |

| Qcache_queries_in_cache | 43560 |

| Qcache_total_blocks | 111212  |

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

mysql> show variables like ‘query_cache%‘;

+————————————–+————–+

| Variable_name      | Value  |

+————————————–+———–+

| query_cache_limit      | 2097152 |

| query_cache_min_res_unit  | 4096   |

| query_cache_size      | 203423744 |

| query_cache_type      | ON  |

| query_cache_wlock_invalidate | OFF  |

+————————————–+—————+

查询缓存碎片率= Qcache_free_blocks / Qcache_total_blocks * 100%

如果查询缓存碎片率超过20%,可以用FLUSH QUERY CACHE整理缓存碎片,或者试试减小query_cache_min_res_unit,如果你的查询都是小数据量的话。

查询缓存利用率= (query_cache_size – Qcache_free_memory) / query_cache_size * 100%

查询缓存利用率在25%以下的话说明query_cache_size设置的过大,可适当减小;查询缓存利用率在80%以上而且Qcache_lowmem_prunes > 50的话说明query_cache_size可能有点小,要不就是碎片太多。

查询缓存命中率= (Qcache_hits – Qcache_inserts) / Qcache_hits * 100%

示例服务器查询缓存碎片率=20.46%,查询缓存利用率=62.26%,查询缓存命中率=1.94%,命中率很差,可能写操作比较频繁吧,而且可能有些碎片。

每个连接的缓冲

6) record_buffer_size
每个进行一个顺序扫描的线程为其扫描的每张表分配这个大小的一个缓冲区。如果你做很多顺序扫描,你可能想要增加该值。

默认数值是131072(128K),可改为16773120 (16M)

7) read_rnd_buffer_size
随机读缓冲区大小。当按任意顺序读取行时(例如,按照排序顺序),将分配一个随机读缓存区。进行排序查询时,MySQL会首先扫描一遍该缓冲,以避免磁盘搜索,提高查询速度,如果需要排序大量数据,可适当调高该值。但MySQL会为每个客户连接发放该缓冲空间,所以应尽量适当设置该值,以避免内存开销过大。

一般可设置为16M

8) sort_buffer_size
每个需要进行排序的线程分配该大小的一个缓冲区。增加这值加速ORDER BY或GROUP BY操作。

默认数值是2097144(2M),可改为16777208 (16M)。

9) join_buffer_size
联合查询操作所能使用的缓冲区大小

record_buffer_size,read_rnd_buffer_size,sort_buffer_size,join_buffer_size为每个线程独占,也就是说,如果有100个线程连接,则占用为16M*100

10) table_cache
表高速缓存的大小。每当MySQL访问一个表时,如果在表缓冲区中还有空间,该表就被打开并放入其中,这样可以更快地访问表内容。通过检查峰值时间的状态值Open_tables和Opened_tables,可以决定是否需要增加table_cache的值。如果你发现open_tables等于table_cache,并且opened_tables在不断增长,那么你就需要增加table_cache的值了(上述状态值可以使用SHOW STATUS LIKE ‘Open%tables’获得)。注意,不能盲目地把table_cache设置成很大的值。如果设置得太高,可能会造成文件描述符不足,从而造成性能不稳定或者连接失败。

1G内存机器,推荐值是128-256。内存在4GB左右的服务器该参数可设置为256M或384M。

11) max_heap_table_size
用户可以创建的内存表(memory table)的大小。这个值用来计算内存表的最大行数值。这个变量支持动态改变,即set @max_heap_table_size=#

这个变量和tmp_table_size一起限制了内部内存表的大小。如果某个内部heap(堆积)表大小超过tmp_table_size,MySQL可以根据需要自动将内存中的heap表改为基于硬盘的MyISAM表。

12) tmp_table_size
通过设置tmp_table_size选项来增加一张临时表的大小,例如做高级GROUP BY操作生成的临时表。如果调高该值,MySQL同时将增加heap表的大小,可达到提高联接查询速度的效果,建议尽量优化查询,要确保查询过程中生成的临时表在内存中,避免临时表过大导致生成基于硬盘的MyISAM表。

mysql> show global status like ‘created_tmp%‘;

+——————————–+———+

| Variable_name   | Value |

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

| Created_tmp_disk_tables | 21197 |

| Created_tmp_files   | 58  |

| Created_tmp_tables  | 1771587 |

+——————————–+———–+

每次创建临时表,Created_tmp_tables增加,如果临时表大小超过tmp_table_size,则是在磁盘上创建临时表,Created_tmp_disk_tables也增加,Created_tmp_files表示MySQL服务创建的临时文件文件数,比较理想的配置是:

Created_tmp_disk_tables / Created_tmp_tables * 100%

默认为16M,可调到64-256最佳,线程独占,太大可能内存不够I/O堵塞

13) thread_cache_size
可以复用的保存在中的线程的数量。如果有,新的线程从缓存中取得,当断开连接的时候如果有空间,客户的线置在缓存中。如果有很多新的线程,为了提高性能可以这个变量值。

通过比较 Connections和Threads_created状态的变量,可以看到这个变量的作用。

默认值为110,可调优为80。

14) thread_concurrency
推荐设置为服务器 CPU核数的2倍,例如双核的CPU, 那么thread_concurrency的应该为4;2个双核的cpu, thread_concurrency的值应为8。默认为8

15) wait_timeout
指定一个请求的最大连接时间,对于4GB左右内存的服务器可以设置为5-10。

3. 配置InnoDB的几个变量

innodb_buffer_pool_size

对于InnoDB表来说,innodb_buffer_pool_size的作用就相当于key_buffer_size对于MyISAM表的作用一样。InnoDB使用该参数指定大小的内存来缓冲数据和索引。对于单独的MySQL数据库服务器,最大可以把该值设置成物理内存的80%。

根据MySQL手册,对于2G内存的机器,推荐值是1G(50%)。

innodb_flush_log_at_trx_commit

主要控制了innodb将log buffer中的数据写入日志文件并flush磁盘的时间点,取值分别为0、1、2三个。0,表示当事务提交时,不做日志写入操作,而是每秒钟将log buffer中的数据写入日志文件并flush磁盘一次;1,则在每秒钟或是每次事物的提交都会引起日志文件写入、flush磁盘的操作,确保了事务的ACID;设置为2,每次事务提交引起写入日志文件的动作,但每秒钟完成一次flush磁盘操作。

实际测试发现,该值对插入数据的速度影响非常大,设置为2时插入10000条记录只需要2秒,设置为0时只需要1秒,而设置为1时则需要229秒。因此,MySQL手册也建议尽量将插入操作合并成一个事务,这样可以大幅提高速度。

根据MySQL手册,在允许丢失最近部分事务的危险的前提下,可以把该值设为0或2。

innodb_log_buffer_size

log缓存大小,一般为1-8M,默认为1M,对于较大的事务,可以增大缓存大小。

可设置为4M或8M。

innodb_additional_mem_pool_size

该参数指定InnoDB用来存储数据字典和其他内部数据结构的内存池大小。缺省值是1M。通常不用太大,只要够用就行,应该与表结构的复杂度有关系。如果不够用,MySQL会在错误日志中写入一条警告信息。

根据MySQL手册,对于2G内存的机器,推荐值是20M,可适当增加。

innodb_thread_concurrency=8

推荐设置为 2*(NumCPUs+NumDisks),默认一般为8

MySQL忘记密码恢复密码的解决方法

2014年8月24日 没有评论

流传较广的方法,mysql中文参考手册上的,各位vps主机租用客户和服务器托管用户忘记mysql5.1管理员密码时,可以使用这种方法破解下

一、服务器环境
1、系统windows2003 中文企业版 sp2
2、mysql 5.1.55
3、php 5.2.17
4、IIS 6.0
二、破解过程
1、停止mysql服务(以管理员身份,在cmd命令行下运行)使用如下命令:
net stop mysql

2、.使用命令启动mysql数据库,命令如下

mysqld --skip-grant-tables 或者 mysqld-nt --skip-grant-tables

 

3.新开一个cmd窗口,进行如下命令操作
1、mysql -uroot
2、update mysql.user set password=password(‘root123456′) where user=’root’;

root123456就是你新的root密码。

4、打开任务管理器,停止mysql,mysqld进程,使用net start mysql启动mysqld服务,就可以使用root用户 root密码进入数据库了(这步可以省略重启机器)
至止,win下破解密码就到这里了。以下是一些系统下的其他办法。

据说可以用直接修改user表文件的方法:
关闭MySQL,Windows下打开Mysql\data\mysql,有三个文件user.frm,user.MYD,user.MYI找个知道密码的MySQL,替换相应的这三个文件,如果user表结构没改过,一般也没人去改,替换user.MYD就可以了。
也可以直接编辑user.MYD,找个十六进制编辑器,UltraEdit就有这个功能。关闭MySQL,打开user.MYD。将用户名root后面的八个字符改为565491d704013245,新密码就是123456。或者将它们对应的十六进制数字,(左边那里,一个字符对应两个数字),改为 00 02 02 02 02 02 02 02,这就是空密码,在编辑器右边看到的都是星号*,看起来很象小数点。重开MySQL,输入root和你的新密码。
今天有点事要进mssql,因为是很久以前装的,所以忘记了sa的密码,虽然用windows身份验证就可以进,但是如果用php连接mssql时就不行了,于是google了一下,找到了解决方法.

用windows身份验证机制进去,然后
输入下列命令,执行:
exec sp_password null,’newpass’,'sa’

示例
A.无原密码的情况下更改登录密码
下面的示例将登录 Victoria 的密码更改为 123
EXEC sp_password NULL,’123′,’sa’

B.更改密码
下面的示例将登录 Victoria 的密码由 123 改为 456
EXEC sp_password ’123′,’456′

另外我发现了一个问题,那就是windows和SQL Server身份验证机制有些不同
windows身份验证

服务器地址 登陆结果
127.0.0.1 ok
localhost wrong
. ok

SQL Server身份验证

服务器地址 登陆结果
127.0.0.1 ok
localhost wrong
. wrong

另外记录一下忘记mysql 密码的取回方法
如果 MySQL 正在运行,
首先杀之: killall -TERM mysqld(如果是windows,直接调出进程管理器,结束之)
以安全模式启动 MySQ:
/usr/bin/safe_mysqld –skip-grant-tables &
(windows 下 mysql安装所以盘/mysql/bin/safe_mysqld –skip-grant-tables )
就可以不需要密码就进入 MySQL 了.
然后就是
>use mysql
>update user set password=password(“new_pass”) where user=”root”;
>flush privileges;
重新杀 MySQL,用正常方法启动 MySQL.

linux下的解决方法:

一. MySQL密码的恢复方法之一
如果忘记了MySQL的root密码,可以用以下方法重新设置:
1. KILL掉系统里的MySQL进程;
killall -TERM mysqld
2. 用以下命令启动MySQL,以不检查权限的方式启动;
safe_mysqld –skip-grant-tables &
3. 然后用空密码方式使用root用户登录 MySQL;
mysql -u root
4. 修改root用户的密码;
mysql> update mysql.user set password=PASSWORD(‘新密码’) where User=’root’;
mysql> flush privileges;
mysql> quit
重新启动MySQL,就可以使用新密码登录了。
二. MySQL密码的恢复方法二
有可能你的系统没有 safe_mysqld 程序(比如我现在用的 ubuntu操作系统, apt-get安装的mysql) , 下面方法可以恢复
1. 停止mysqld;
/etc/init.d/mysql stop
(您可能有其它的方法,总之停止mysqld的运行就可以了)
2. 用以下命令启动MySQL,以不检查权限的方式启动;
mysqld –skip-grant-tables &
3. 然后用空密码方式使用root用户登录 MySQL;
mysql -u root
4. 修改root用户的密码;
mysql> update mysql.user set password=PASSWORD(‘newpassword’) where User=’root’;
mysql> flush privileges;
mysql> quit
重新启动MySQL
/etc/init.d/mysql restart
就可以使用新密码 newpassword 登录了。

windoe下的解决方法:

1、编辑MySQL的配置文件:my.ini
一般在MySQL安装目录下有my.ini即MySQL的配置文件。
在此配置文件的最后添加如下一行:
skip-grant-tables
保存退出编辑。

2、然后重启MySQL服务
在命令行下执行:
net stop MySQL
net start MySQL

3、设置新的ROOT密码
然后再在命令行下执行:
MySQL -u root -p MySQL或mysql -u root -p
直接回车无需密码即可进入数据库了。
此时,在命令行下执行 use mysql;
现在我们执行如下语句把root密码更新为:
update user set password=password(“root”) where user=”root”;
(注意:此时不用使用mysqladmin -u root -p password ‘你的新密码’这条命令修改密码,因为’skip-grant-tables’配置,
不信的话,你可以试用一下,它肯定会报如下所示的错误:
F:\Documents and Settings\long>mysqladmin -u root -p password ‘root’
Enter password:
Warning: single quotes were not trimmed from the password by your command
line client, as you might have expected.
mysqladmin:
You cannot use ‘password’ command as mysqld runs
with grant tables disabled (was started with –skip-grant-tables).
Use: “mysqladmin flush-privileges password ‘*’” instead)
exit 退出MySQL。

4、还原配置文件并重启服务

然后修改MySQL配置文件把刚才添加的那一行’skip-grant-tables’删除。
再次重起MySQL服务,密码修改完毕。
用新密码root试一下吧,又能登入重新进入mysql了.

服务器重启后mysql服务启动得很慢的解决办法

2014年5月9日 没有评论

今天帮客户处理问题时遇到了一个非常郁闷的问题。

服务器重启后,mysql老是连接不上.网站打不开.要等上几十分钟甚至几小时MYSQL才能启动完。
并且服务器远程桌面也非常慢。经常卡死。

查了很久发现原来是C:\windows\temp下面存在大量的临时文件导致mysql启动缓慢,原因是长时间没有清理导致临时文件过多,影响到了mysql的正常启动。既然找到原因了就好下手解决问题。

经过如下方式处理后,mysql正常启动了!

开始——运行,输入CMD

然后再输入 del c:\windows\temp\*.* /s /q 回车。

就会自动删除C:\windows\temp下面所有的临时文件。

如果是Windows系统还可以使用以下方法解决。
MySQL Server目录下,打开my.ini,查找[mysqld],在其下加一行

tmpdir=”C:/mysql_temp/”

C:/mysql_temp/自己建立,这个作为mysql的临时目录。
该目录的权限仅为
Administrators:完全控制
SYSTEM:完全控制
即可。(假设你的mysql服务启动用户为”本地系统账户”)

MYsql:Plugin ‘FEDERATED’ is disabled.或1067错误 启动错误与“服务 mysql 意外停止”解决方法

2013年10月7日 没有评论

MYSQL启动报1067错误,系统日志中是“服务 mysql 意外停止” Mysql日志中则是:“Plugin ‘FEDERATED’ is disabled”

网我在网上找到解决方案:
1、在MY.INI文件中的 [mysqld] 中增加一行
tmpdir=”D:/MySQL/data/”
修改后,还是启动不了或者能启动但关机后又出现同样问题,接着我做了第二步,重启正常。

2、删除DATA目录下除数据库文件夹外的其他文件,重启mysql,问题解决。

分类: 解决方案 标签: ,

解决mysql数据库Forcing close of thread 的错误提示

2013年4月8日 没有评论

今天发现客户的网站老出现打不开的情况,发现连接数有超出的现象,但观察系统事件日志,都是下面的错误:

MySQL: Forcing close of thread **** user:”

事件类型: 警告
事件来源: MySQL
事件种类: 无
事件 ID: 100
日期: 2013-4-8
事件: 12:21:01
用户: N/A
计算机: vps12com0630
描述:
MySQL: Forcing close of thread 123756 user: ”

For more information, see Help and Support Center at http://www.mysql.com.

检查系统资源和连接数都是正常的情况下,没有找到解决办法。

在mysql配置文件my.ini 的 [mysql] 下面加上这个解决问题了!

skip-locking
skip-name-resolve

其他的同类错误要注意查看日志。新版本mysql的写法应该是:

skip-external-locking
skip-name-resolve

配置基于Windows2003集成环境IIS+Php+Mysql+Zend+Rewrite+Gzip+asp+.net+n点虚拟主机管理系统(图文)

2012年11月4日 没有评论

经常大家在使用vps及服务器时需要对一些环境进行配置,比如要在win在运行php及asp或是.net的网站,那么这么复杂的配置对一个新接触服务器管理的亲手来讲,的确有些复制,那么为了更好的服务于大家,本文以新手安装方式来建立配置基于Windows2003集成环境:

IIS+Php+Mysql+Zend+Rewrite+asp+.net+n点虚拟主机管理系统

我们从0开始,一步步建立。当我们拿到一台新的服务器或是vps时,以干净的系统为基础。一步步来操作:
一、准备工作:
1.首先我们先要确认一下我们需要安装的最基础也是最重要的iis是否有安装文件!!一般默认情况下安装系统的提供商都会给于安装文件如i386。以我们vps12.com提供给客户的环境为例。是放在c:\i386目录。可以在安装时直接调用。

2.确认下其他的软件是否下载好了。本文需要安装使用的软件有以下:
1 iis安装文i386(也有其他爱好者分享出来的专用iis6的安装文件也可以)
2 asp.net2.0
3 Rewrite for iis插件(伪静态组件)
4 n点虚拟主机管理系统
5 php for windows
6 mysql for windows
7 zend for windows
8 serv-u (ftp服务端)

ps:其中5-8软件我们用最容易的方式操作安装。要用到个软件 小骑士。是本着最为简化方式安装配置。以最快捷傻瓜式安装。

3.开始安装iis
开始 -> 设置 -> 控制面板 -> 添加或删除程序 -> 添加删除windows组件,然后找到 应用程序服务器
按如图所未勾选组件。

注意这边有个小的细节就是可以直接勾asp.net这个。然后再勾最后一个。这样就可以了。其他不要勾。

然后会提示没有文件要指定地址。然后我们选择一下 c:\i386 ,复制文件完成后。iis这样就安装完了。

详细步骤请参考图文教程:如何安装IIS  http://help.vps12.com/386.html

4. 安装asp.net 2.0 这个不用说。很容易。没有细节上的东西要注意,一直下一步就安装完成了。

5. 小骑士 (php+mysql+zend+gzip+serv-u) 都在这软件集成完成。所以我们先下载此软件。
小骑士软件下载地址:http://www.lulinke.com/
安装过程也很容易。没有多的细节上的东西要注意。一直下一步就可以完成。安装完成后我们来安装php+mysql+zend+gzip+serv-u,说明要使用这软件的好处是可以快速安装这些。对于新手比较方便。

6. Rewrite for iis插件(伪静态组件)
以上说明的软件都可以在以下找到!!
下载地址:http://pan.baidu.com/share/link?shareid=81798&uk=3878192419

7. n点虚拟主机管理系统
软件下载地址:http://www.npointhost.com/
一样此软件也是傻瓜式的配置安装。注意的是需要配置在线开设站点ftp的话需要进行设置。这也很容易都是中文的。一步步操作即可。