﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>PHP博客-Programming Life-随笔分类-Mysql</title><link>http://www.phpweblog.net/killjin/category/309.html</link><description>相信不能相信的，完成不能完成的。矛盾，就象征进步。</description><language>zh-cn</language><lastBuildDate>Sat, 05 Jan 2008 09:22:42 GMT</lastBuildDate><pubDate>Sat, 05 Jan 2008 09:22:42 GMT</pubDate><ttl>60</ttl><item><title>linux下忘记了mysql的root用户密码解决办法</title><link>http://www.phpweblog.net/killjin/archive/2008/01/05/2641.html</link><dc:creator>Prog</dc:creator><author>Prog</author><pubDate>Fri, 04 Jan 2008 19:14:00 GMT</pubDate><guid>http://www.phpweblog.net/killjin/archive/2008/01/05/2641.html</guid><wfw:comment>http://www.phpweblog.net/killjin/comments/2641.html</wfw:comment><comments>http://www.phpweblog.net/killjin/archive/2008/01/05/2641.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.phpweblog.net/killjin/comments/commentRss/2641.html</wfw:commentRss><trackback:ping>http://www.phpweblog.net/killjin/services/trackbacks/2641.html</trackback:ping><description><![CDATA[一、以系统的root用户（什么，你的系统的root用户密码也忘了。那只好看我另外一篇linux下忘记root用户的解决办法了先解决这个问题）登陆系统，进入终端
<p>　　[root@localhost /]#
<p>　　二、杀掉mysql进程
<p>　　方法1、[root@localhost /]#killall mysqld
<p>　　方法2、[root@localhost /]#ps -aux&nbsp; //查看所有进程，找到mysql进程的pid
<p>　　然后
<p>　　[root@localhost /]#kill pid&nbsp;&nbsp; //pid是mysql的进程号
<p>　　三、用--skip-grant-tables参数启动mysqld
<p>　　[root@localhost /]#/usr/local/mysql/bin/mysqld_safe --skip-grant-tables&amp;&nbsp;
<p>　　// 其中/usr..../bin是我的mysql安装目录
<p>　　[root@localhost /]#/usr/local/mysql/bin/mysql&nbsp; //进入mysql
<p>　　mysql&gt; use mysql&nbsp;&nbsp; //切换到mysql database</p>
<p>　　mysql&gt; UPDATE user SET password=password('123456') WHERE user='root';
<p>　　//将root密码该为123456了
<p>　　四、注意事项
<p>　　The full command to load MySQL like this is:
<p>　　mysqld_safe --skip-grant-tables --autoclose
<p>　　(Editor's Note: Our technical reviewer found that he had to launch the mysqld_safe command
<p>　　without the '--autoclose' flag, otherwise the daemon never started.)
<p>　　这是国外网站说的，我没用autoclosa也成功了
<p>　　但是我在执行/usr/local/mysql/bin/mysqld_safe --skip-grant-tables&amp;即出现错误提示：
<p>　　./mysqld_safe
<p>　　starting mysqld daemon with databases from /usr/local/var
<p>　　STOPPING server from pid file /usr/local/var/localhost.localdomain.pid
<p>　　mysqld&nbsp; ended
<p>　　然后进入/usr/local/var/
<p>　　vi ./localhost.localdomain.err 内容如下：
<p>　　050410 04:02:59 mysqld started
<p>　　050410 4:03:00 InnoDB:Operating system error number 13 in a file operation.
<p>　　InnoDB:The error means mysqld does not have the access rights to
<p>　　InnoDB:the directory.
<p>　　InnoDB:File name ./ibdata1
<p>　　InnoDB:File operation call:'create'.
<p>　　InnoDB:Cannot continue operation.
<p>　　050410 04:03:00 mysqld ended
<p>　　怀疑是./var目录的访问权限，故如下操作：
<p>　　chmod 777 ./var
<p>　　然后重新执行后台，仍出以上错误，但在localhost.localdomain.err文件中的错误信息已改为找不到一个叫做
<p>　　help.*的文件了(这个文件名我记不得了)
<p>　　这是因为我的mysql安装目录的读写权限是这样造成的
<p>　　mysql安装目录属于用户root，但是群组是mysql的
<p>　　把群组也改为root即可。 </p>
<img src ="http://www.phpweblog.net/killjin/aggbug/2641.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.phpweblog.net/killjin/" target="_blank">Prog</a> 2008-01-05 03:14 <a href="http://www.phpweblog.net/killjin/archive/2008/01/05/2641.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Mysql 列类型概述</title><link>http://www.phpweblog.net/killjin/archive/2007/12/31/2625.html</link><dc:creator>Prog</dc:creator><author>Prog</author><pubDate>Sun, 30 Dec 2007 20:30:00 GMT</pubDate><guid>http://www.phpweblog.net/killjin/archive/2007/12/31/2625.html</guid><wfw:comment>http://www.phpweblog.net/killjin/comments/2625.html</wfw:comment><comments>http://www.phpweblog.net/killjin/archive/2007/12/31/2625.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.phpweblog.net/killjin/comments/commentRss/2625.html</wfw:commentRss><trackback:ping>http://www.phpweblog.net/killjin/services/trackbacks/2625.html</trackback:ping><description><![CDATA[MySQL支持大量的列类型，它可以被分为3类：数字类型、日期和时间类型以及字符串(字符)类型。本节首先给出可用类型的一个概述，并且总结每个列类型的存储需求，然后提供每个类中的类型性质的更详细的描述。概述有意简化，更详细的说明应该考虑到有关特定列类型的附加信息，例如你能为其指定值的允许格式。 <br><br>由MySQL支持的列类型列在下面。下列代码字母用于描述中： <br><br>M <br>指出最大的显示尺寸。最大的合法的显示尺寸是 255 。 <br>D <br>适用于浮点类型并且指出跟随在十进制小数点后的数码的数量。最大可能的值是30，但是应该不大于M-2。 <br>方括号(&#8220;[&#8221;和&#8220;]&#8221;)指出可选的类型修饰符的部分。 <br><br>注意，如果你指定一个了为ZEROFILL，MySQL将为该列自动地增加UNSIGNED属性。 <br><br>TINYINT[(M)] [UNSIGNED] [ZEROFILL] <br>一个很小的整数。有符号的范围是-128到127，无符号的范围是0到255。 <br><br><br>SMALLINT[(M)] [UNSIGNED] [ZEROFILL] <br>一个小整数。有符号的范围是-32768到32767，无符号的范围是0到65535。 <br><br>MEDIUMINT[(M)] [UNSIGNED] [ZEROFILL] <br>一个中等大小整数。有符号的范围是-8388608到8388607，无符号的范围是0到16777215。 <br><br>INT[(M)] [UNSIGNED] [ZEROFILL] <br>一个正常大小整数。有符号的范围是-2147483648到2147483647，无符号的范围是0到4294967295。 <br><br>INTEGER[(M)] [UNSIGNED] [ZEROFILL] <br>这是INT的一个同义词。 <br><br>BIGINT[(M)] [UNSIGNED] [ZEROFILL] <br><br>一个大整数。有符号的范围是-9223372036854775808到9223372036854775807，无符号的范围是0到 <br><br>18446744073709551615。注意，所有算术运算用有符号的BIGINT或DOUBLE值完成，因此你不应该使用大于9223372036854775807（63位)的有符号大整数，除了位函数！注意，当两个参数是INTEGER值时，-、+和*将使用BIGINT运算！这意味着如果你乘2个大整数(或来自于返回整数的函数)，如果结果大于9223372036854775807，你可以得到意外的结果。一个浮点数字，不能是无符号的，对一个单精度浮点数，其精度可以是&lt;=24，对一个双精度浮点数，是在25 和53之间，这些类型如FLOAT和DOUBLE类型马上在下面描述。FLOAT(X)有对应的FLOAT和DOUBLE相同的范围，但是显示尺寸和小数位数是未定义的。在MySQL3.23中，这是一个真正的浮点值。在更早的MySQL版本中，FLOAT(precision)总是有2位小数。该句法为了ODBC兼容性而提供。 <br><br>FLOAT[(M,D)] [ZEROFILL] <br>一个小(单精密)浮点数字。不能无符号。允许的值是-3.402823466E+38到-1.175494351E-38，0 和1.175494351E-38到3.402823466E+38。M是显示宽度而D是小数的位数。没有参数的FLOAT或有&lt;24 的一个参数表示一个单精密浮点数字。 <br><br>DOUBLE[(M,D)] [ZEROFILL] <br>一个正常大小(双精密)浮点数字。不能无符号。允许的值是-1.7976931348623157E+308到-2.2250738585072014E-308、 0和2.2250738585072014E-308到1.7976931348623157E+308。M是显示宽度而D是小数位数。没有一个参数的DOUBLE或FLOAT(X)（25 &lt; = X &lt; = 53）代表一个双精密浮点数字。 <br><br>DOUBLE PRECISION[(M,D)] [ZEROFILL] <br><br><br>REAL[(M,D)] [ZEROFILL] <br>这些是DOUBLE同义词。 <br><br>DECIMAL[(M[,D])] [ZEROFILL] <br>一个未压缩(unpack)的浮点数字。不能无符号。行为如同一个CHAR列：&#8220;未压缩&#8221;意味着数字作为一个字符串被存储，值的每一位使用一个字符。小数点，并且对于负数，&#8220;-&#8221;符号不在M中计算。如果D是0，值将没有小数点或小数部分。DECIMAL值的最大范围与DOUBLE相同，但是对一个给定的DECIMAL列，实际的范围可以通过M和D的选择被限制。如果D被省略，它被设置为0。如果M被省掉，它被设置为10。注意，在MySQL3.22里，M参数包括符号和小数点。 <br><br>NUMERIC(M,D) [ZEROFILL] <br>这是DECIMAL的一个同义词。 <br><br>DATE <br>一个日期。支持的范围是'1000-01-01'到'9999-12-31'。MySQL以'YYYY-MM-DD'格式来显示DATE值，但是允许你使用字符串或数字把值赋给DATE列。 <br><br>DATETIME <br>一个日期和时间组合。支持的范围是'1000-01-01 00:00:00'到'9999-12-31 23:59:59'。MySQL以'YYYY-MM-DD HH:MM:SS'格式来显示DATETIME值，但是允许你使用字符串或数字把值赋给DATETIME的列。 <br><br>TIMESTAMP[(M)] <br>一个时间戳记。范围是'1970-01-01 00:00:00'到2037年的某时。MySQL以YYYYMMDDHHMMSS、YYMMDDHHMMSS、YYYYMMDD或YYMMDD格式来显示TIMESTAMP值，取决于是否M是14（或省略)、12、8或6，但是允许你使用字符串或数字把值赋给TIMESTAMP列。一个TIMESTAMP列对于记录一个INSERT或UPDATE操作的日期和时间是有用的，因为如果你不自己给它赋值，它自动地被设置为最近操作的日期和时间。你以可以通过赋给它一个NULL值设置它为当前的日期和时间。 <br>TIME <br>一个时间。范围是'-838:59:59'到'838:59:59'。MySQL以'HH:MM:SS'格式来显示TIME值，但是允许你使用字符串或数字把值赋给TIME列。 <br><br>YEAR[(2|4)] <br>一个2或4位数字格式的年(缺省是4位)。允许的值是1901到2155，和0000（4位年格式），如果你使用2位，1970-2069( 70-69)。MySQL以YYYY格式来显示YEAR值，但是允许你把使用字符串或数字值赋给YEAR列。（YEAR类型在MySQL3.22中是新类型。） <br><br>CHAR(M) [BINARY] <br>一个定长字符串，当存储时，总是是用空格填满右边到指定的长度。M的范围是1 ～ 255个字符。当值被检索时，空格尾部被删除。CHAR值根据缺省字符集以大小写不区分的方式排序和比较，除非给出BINARY关键词。NATIONAL CHAR（短形式NCHAR)是ANSI SQL的方式来定义CHAR列应该使用缺省字符集。这是MySQL的缺省。CHAR是CHARACTER的一个缩写。 <br><br>[NATIONAL] VARCHAR(M) [BINARY] <br>一个变长字符串。注意：当值被存储时，尾部的空格被删除(这不同于ANSI SQL规范)。M的范围是1 ～ 255个字符。 VARCHAR值根据缺省字符集以大小写不区分的方式排序和比较，除非给出BINARY关键词值。 VARCHAR是CHARACTER VARYING一个缩写。 <br><br>TINYBLOB <br><br>TINYTEXT <br>一个BLOB或TEXT列，最大长度为255(2^8-1)个字符。 <br>BLOB <br><br><br>TEXT <br>一个BLOB或TEXT列，最大长度为65535(2^16-1)个字符。 <br><br>MEDIUMBLOB <br><br>MEDIUMTEXT <br>一个BLOB或TEXT列，最大长度为16777215(2^24-1)个字符。 <br>LONGBLOB <br><br>LONGTEXT <br>一个BLOB或TEXT列，最大长度为4294967295(2^32-1)个字符。 <br><br>ENUM('value1','value2',...) <br>枚举。一个仅有一个值的字符串对象，这个值式选自与值列表'value1'、'value2', ...,或NULL。一个ENUM最多能有65535不同的值。 <br><br>SET('value1','value2',...) <br>一个集合。能有零个或多个值的一个字符串对象，其中每一个必须从值列表'value1', 'value2', ...选出。一个SET最多能有64个成员。</ca>
<img src ="http://www.phpweblog.net/killjin/aggbug/2625.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.phpweblog.net/killjin/" target="_blank">Prog</a> 2007-12-31 04:30 <a href="http://www.phpweblog.net/killjin/archive/2007/12/31/2625.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>char,varchar,nvarchar的区别 datetime和smalldatetime的区别</title><link>http://www.phpweblog.net/killjin/archive/2007/12/31/2624.html</link><dc:creator>Prog</dc:creator><author>Prog</author><pubDate>Sun, 30 Dec 2007 20:29:00 GMT</pubDate><guid>http://www.phpweblog.net/killjin/archive/2007/12/31/2624.html</guid><wfw:comment>http://www.phpweblog.net/killjin/comments/2624.html</wfw:comment><comments>http://www.phpweblog.net/killjin/archive/2007/12/31/2624.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.phpweblog.net/killjin/comments/commentRss/2624.html</wfw:commentRss><trackback:ping>http://www.phpweblog.net/killjin/services/trackbacks/2624.html</trackback:ping><description><![CDATA[<p>char,varchar,nvarchar的区别 datetime和smalldatetime的区别 ，这个版比较简单但很实用，</p>
<p>char,varchar,nvarchar的区别</p>
<p>平时的ASCII汉字为两个字节</p>
<p>字符串为 dj小溅溅<br>char&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 100&nbsp;&nbsp;&nbsp; 8个字节，92个空格<br>varchar&nbsp;&nbsp; 100&nbsp;&nbsp;&nbsp; 8个字节，无空格&nbsp;&nbsp;&nbsp; 最长为1-8000<br>nvarchar 100&nbsp;&nbsp;&nbsp; 10个字节，无空格，每个汉字为一个字符（适合中文,韩文），但如果是英文的话也是占两个位置，双字节来存储数，最长1-4000，可变长度 Unicode 数据，如果存储数据如果存在单字节时，它也是以双字节来占用存储空间的。</p>
<p>datetime和smalldatetime的区别</p>
<p>smalldatetime 只能精确到分<br>datetime 能精确到秒</p>
<p>&#160;</p>
<p>&#160;</p>
<p>&#160;</p>
<p>=======================================</p>
<p>&#160;</p>
<p>Varchar 对每个英文(ASCII)字符都占用2个字节，对一个汉字也只占用两个字节<br>char 对英文(ASCII)字符占用1个字节，对一个汉字占用2个字节</p>
<p><br>Varchar 的类型不以空格填满，比如varchar(100)，但它的值只是"qian",则它的值就是"qian"<br>而char 不一样，比如char(100),它的值是"qian"，而实际上它在数据库中是"qian "(qian后共有96个空格，就是把它填满为100个字节)。<br>由于char是以固定长度的，所以它的速度会比varchar快得多!但程序处理起来要麻烦一点，要用trim之类的函数把两边的空格去掉! </p>
<p>N表示Unicode常量，可以解决多语言字符集之间的转换问题，见联机帮助 姓名，和房间通常都是用varchar这个数据类型 </p>
<p>数据库定义到char类型的字段时 char、nchar、varchar、nvarchar、text、ntext中哪一种呢 　</p>
<p>数据库定义到char类型的字段时，不知道大家是否会犹豫一下，到底选char、nchar、varchar、nvarchar、text、ntext中哪一种呢？结果很可能是两种，一种是节俭人士的选择：最好是用定长的，感觉比变长能省些空间，而且处理起来会快些，无法定长只好选用定长，并且将长度设置尽可能地小；另一种是则是觉得无所谓，尽量用可变类型的，长度尽量放大些。</p>
<p>　　鉴于现在硬件像萝卜一样便宜的大好形势，纠缠这样的小问题实在是没多大意义，不过如果不弄清它，总觉得对不起劳累过度的CPU和硬盘。</p>
<p>下面开始了(以下说明只针对SqlServer有效)：</p>
<p>1、当使用非unicode时慎用以下这种查询： <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; select f from t where f = N'xx'</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 原因：无法利用到索引，因为数据库会将f先转换到unicode再和N'xx'比较</p>
<p>2、char 和相同长度的varchar处理速度差不多（后面还有说明）</p>
<p>3、varchar的长度不会影响处理速度！！！（看后面解释）</p>
<p>4、索引中列总长度最多支持总为900字节，所以长度大于900的varchar、char和大于450的nvarchar,nchar将无法创建索引</p>
<p>5、text、ntext上是无法创建索引的</p>
<p>6、O/R Mapping中对应实体的属性类型一般是以string居多，用char[]的非常少，所以如果按mapping的合理性来说，可变长度的类型更加吻合</p>
<p>7、一般基础资料表中的name在实际查询中基本上全部是使用like '%xx%'这种方式，而这种方式是无法利用索引的，所以如果对于此种字段，索引建了也白建</p>
<p>8、其它一些像remark的字段则是根本不需要查询的，所以不需要索引</p>
<p>9、varchar的存放和string是一样原理的，即length {block}这种方式，所以varchar的长度和它实际占用空间是无关的</p>
<p>10、对于固定长度的字段，是需要额外空间来存放NULL标识的，所以如果一个char字段中出现非常多的NULL，那么很不幸，你的占用空间比没有NULL的大（但这个大并不是大太多，因为NULL标识是用bit存放的，可是如果你一行中只有你一个NULL需要标识，那么你就白白浪费1byte空间了，罪过罪过！），这时候，你可以使用特殊标识来存放，如：'NV'</p>
<p>11、同上，所以对于这种NULL查询，索引是无法生效的，假如你使用了NULL标识替代的话，那么恭喜你，你可以利用到索引了</p>
<p>12、char和varchar的比较成本是一样的，现在关键就看它们的索引查找的成本了，因为查找策略都一样，因此应该比较谁占用空间小。在存放相同数量的字符情况下，如果数量小，那么char占用长度是小于varchar的，但如果数量稍大，则varchar完全可能小于char，而且要看实际填充数值的充实度，比如说varchar(3)和char(3)，那么理论上应该是char快了，但如果是char(10)和varchar(10)，充实度只有30%的情况下，理论上就应该是varchar快了。因为varchar需要额外空间存放块长度，所以只要length(1-fillfactor)大于这个存放空间（好像是2字节)，那么它就会比相同长度的char快了。</p>
<p>13、nvarchar比varchar要慢上一些，而且对于非unicode字符它会占用双倍的空间，那么这么一种类型推出来是为什么呢？对，就是为了国际化，对于unicode类型的数据，排序规则对它们是不起作用的，而非unicode字符在处理不同语言的数据时，必须指定排序规则才能正常工作，所以n类型就这么一点好处。</p>
<p><br>总结陈词： <br>1、如果数据量非常大，又能100%确定长度且保存只是ansi字符，那么char <br>2、能确定长度又不一定是ansi字符或者，那么用nchar； <br>3、不确定长度，要查询且希望利用索引的话，用nvarchar类型吧，将它们设到400； <br>4、不查询的话没什么好说的，用nvarchar(4000) <br>5、性格豪爽的可以只用3和4，偶尔用用1，毕竟这是一种额外说明，等于告诉别人说，我一定需要长度为X位的数据</p>
<img src ="http://www.phpweblog.net/killjin/aggbug/2624.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.phpweblog.net/killjin/" target="_blank">Prog</a> 2007-12-31 04:29 <a href="http://www.phpweblog.net/killjin/archive/2007/12/31/2624.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>一个产品属于多个分类的数据库结构</title><link>http://www.phpweblog.net/killjin/archive/2007/12/28/2614.html</link><dc:creator>Prog</dc:creator><author>Prog</author><pubDate>Thu, 27 Dec 2007 17:58:00 GMT</pubDate><guid>http://www.phpweblog.net/killjin/archive/2007/12/28/2614.html</guid><wfw:comment>http://www.phpweblog.net/killjin/comments/2614.html</wfw:comment><comments>http://www.phpweblog.net/killjin/archive/2007/12/28/2614.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.phpweblog.net/killjin/comments/commentRss/2614.html</wfw:commentRss><trackback:ping>http://www.phpweblog.net/killjin/services/trackbacks/2614.html</trackback:ping><description><![CDATA[如果一个产品属于多个分类，建议使用如下表结构设计&nbsp; &nbsp;<br><br>产品表&nbsp; &nbsp;tblproducts&nbsp; &nbsp;{productid,productname} <br>分类表&nbsp; &nbsp;tblclass&nbsp; &nbsp;{classid,classname} <br>分类与产品对应起来&nbsp; &nbsp;tblclassid&nbsp; &nbsp;{id,productid,classid} 
<img src ="http://www.phpweblog.net/killjin/aggbug/2614.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.phpweblog.net/killjin/" target="_blank">Prog</a> 2007-12-28 01:58 <a href="http://www.phpweblog.net/killjin/archive/2007/12/28/2614.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>收集了两个MySql my.cnf 文件。</title><link>http://www.phpweblog.net/killjin/archive/2007/12/27/2609.html</link><dc:creator>Prog</dc:creator><author>Prog</author><pubDate>Thu, 27 Dec 2007 14:06:00 GMT</pubDate><guid>http://www.phpweblog.net/killjin/archive/2007/12/27/2609.html</guid><wfw:comment>http://www.phpweblog.net/killjin/comments/2609.html</wfw:comment><comments>http://www.phpweblog.net/killjin/archive/2007/12/27/2609.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.phpweblog.net/killjin/comments/commentRss/2609.html</wfw:commentRss><trackback:ping>http://www.phpweblog.net/killjin/services/trackbacks/2609.html</trackback:ping><description><![CDATA[<p>DirectAdmin 官方的一个：<br><a href="http://help.directadmin.com/item.php?id=44">http://help.directadmin.com/item.php?id=44</a></p>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><span style="FONT-WEIGHT: bold; COLOR: #800000">[</span><span style="COLOR: #800000">mysqld</span><span style="FONT-WEIGHT: bold; COLOR: #800000">]</span><span style="COLOR: #000000"><br>skip-locking<br>skip-innodb<br>query_cache_limit</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">1M<br>query_cache_size</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">32M<br>query_cache_type</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000"><br>max_connections</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">500</span><span style="COLOR: #000000"><br>interactive_timeout</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">100</span><span style="COLOR: #000000"><br>wait_timeout</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">100</span><span style="COLOR: #000000"><br>connect_timeout</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">10</span><span style="COLOR: #000000"><br>thread_cache_size</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">128</span><span style="COLOR: #000000"><br>key_buffer</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">16M<br>join_buffer</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">1M<br>max_allowed_packet</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">16M<br>table_cache</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">1024</span><span style="COLOR: #000000"><br>record_buffer</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">1M<br>sort_buffer_size</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">2M<br>read_buffer_size</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">2M<br>max_connect_errors</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">10</span><span style="COLOR: #000000"><br>#&nbsp;Try&nbsp;number&nbsp;of&nbsp;CPU's*</span><span style="COLOR: #000000">2</span><span style="COLOR: #000000">&nbsp;for&nbsp;thread_concurrency<br>thread_concurrency</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">2</span><span style="COLOR: #000000"><br>myisam_sort_buffer_size</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">64M<br>log-bin<br>server-id</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000"><br><br></span><span style="FONT-WEIGHT: bold; COLOR: #800000">[</span><span style="COLOR: #800000">safe_mysqld</span><span style="FONT-WEIGHT: bold; COLOR: #800000">]</span><span style="COLOR: #000000"><br>err-log</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">/var/log/mysqld.log<br>open_files_limit</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">8192</span><span style="COLOR: #000000"><br><br></span><span style="FONT-WEIGHT: bold; COLOR: #800000">[</span><span style="COLOR: #800000">mysqldump</span><span style="FONT-WEIGHT: bold; COLOR: #800000">]</span><span style="COLOR: #000000"><br>quick<br>max_allowed_packet</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">16M<br><br></span><span style="FONT-WEIGHT: bold; COLOR: #800000">[</span><span style="COLOR: #800000">mysql</span><span style="FONT-WEIGHT: bold; COLOR: #800000">]</span><span style="COLOR: #000000"><br>no-auto-rehash<br>#safe-updates<br><br></span><span style="FONT-WEIGHT: bold; COLOR: #800000">[</span><span style="COLOR: #800000">isamchk</span><span style="FONT-WEIGHT: bold; COLOR: #800000">]</span><span style="COLOR: #000000"><br>key_buffer</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">64M<br>sort_buffer</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">64M<br>read_buffer</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">16M<br>write_buffer</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">16M<br><br></span><span style="FONT-WEIGHT: bold; COLOR: #800000">[</span><span style="COLOR: #800000">myisamchk</span><span style="FONT-WEIGHT: bold; COLOR: #800000">]</span><span style="COLOR: #000000"><br>key_buffer</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">64M<br>sort_buffer</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">64M<br>read_buffer</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">16M<br>write_buffer</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">16M<br><br></span><span style="FONT-WEIGHT: bold; COLOR: #800000">[</span><span style="COLOR: #800000">mysqlhotcopy</span><span style="FONT-WEIGHT: bold; COLOR: #800000">]</span><span style="COLOR: #000000"><br>interactive-timeout<br></span></div>
<br>国外热心人：<br>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><span style="FONT-WEIGHT: bold; COLOR: #800000">[</span><span style="COLOR: #800000">mysqld</span><span style="FONT-WEIGHT: bold; COLOR: #800000">]</span><span style="COLOR: #000000"><br>datadir</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">/var/lib/mysql<br>socket</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">/var/lib/mysql/mysql.sock<br>skip-locking<br>#skip-networking<br>safe-show-database<br>query_cache_limit</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">1M<br>query_cache_size</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">64M&nbsp;##&nbsp;32MB&nbsp;for&nbsp;every&nbsp;1GB&nbsp;of&nbsp;RAM<br>query_cache_type</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000"><br>max_user_connections</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">200</span><span style="COLOR: #000000"><br>max_connections</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">500</span><span style="COLOR: #000000"><br>interactive_timeout</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">10</span><span style="COLOR: #000000"><br>wait_timeout</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">20</span><span style="COLOR: #000000"><br>connect_timeout</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">20</span><span style="COLOR: #000000"><br>thread_cache_size</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">128</span><span style="COLOR: #000000"><br>key_buffer</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">128M&nbsp;##&nbsp;64MB&nbsp;for&nbsp;every&nbsp;1GB&nbsp;of&nbsp;RAM<br>join_buffer</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">1M<br>max_connect_errors</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">20</span><span style="COLOR: #000000"><br>max_allowed_packet</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">16M<br>table_cache</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">1024</span><span style="COLOR: #000000"><br>record_buffer</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">1M<br>sort_buffer_size</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">2M&nbsp;##&nbsp;1MB&nbsp;for&nbsp;every&nbsp;1GB&nbsp;of&nbsp;RAM<br>read_buffer_size</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">2M&nbsp;##&nbsp;1MB&nbsp;for&nbsp;every&nbsp;1GB&nbsp;of&nbsp;RAM<br>read_rnd_buffer_size</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">2M&nbsp;&nbsp;##&nbsp;1MB&nbsp;for&nbsp;every&nbsp;1GB&nbsp;of&nbsp;RAM<br>thread_concurrency</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">2</span><span style="COLOR: #000000">&nbsp;##&nbsp;Number&nbsp;of&nbsp;CPUs&nbsp;x&nbsp;</span><span style="COLOR: #000000">2</span><span style="COLOR: #000000"><br>myisam_sort_buffer_size</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">64M<br>server-id</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000"><br>log_slow_queries</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">/var/log/mysql-slow-queries.log<br>long_query_time</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">2</span><span style="COLOR: #000000"><br>collation-server</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">latin1_general_ci<br>old-passwords<br><br></span><span style="FONT-WEIGHT: bold; COLOR: #800000">[</span><span style="COLOR: #800000">mysql.server</span><span style="FONT-WEIGHT: bold; COLOR: #800000">]</span><span style="COLOR: #000000"><br>user</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">mysql<br>basedir</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">/var/lib<br><br></span><span style="FONT-WEIGHT: bold; COLOR: #800000">[</span><span style="COLOR: #800000">safe_mysqld</span><span style="FONT-WEIGHT: bold; COLOR: #800000">]</span><span style="COLOR: #000000"><br>err-log</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">/var/log/mysqld.log<br>pid-file</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">/var/lib/mysql/mysql.pid<br>open_files_limit</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">8192</span><span style="COLOR: #000000"><br><br></span><span style="FONT-WEIGHT: bold; COLOR: #800000">[</span><span style="COLOR: #800000">mysqldump</span><span style="FONT-WEIGHT: bold; COLOR: #800000">]</span><span style="COLOR: #000000"><br>quick<br>max_allowed_packet</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">16M<br><br></span><span style="FONT-WEIGHT: bold; COLOR: #800000">[</span><span style="COLOR: #800000">mysql</span><span style="FONT-WEIGHT: bold; COLOR: #800000">]</span><span style="COLOR: #000000"><br>no-auto-rehash<br>#safe-updates<br><br></span><span style="FONT-WEIGHT: bold; COLOR: #800000">[</span><span style="COLOR: #800000">isamchk</span><span style="FONT-WEIGHT: bold; COLOR: #800000">]</span><span style="COLOR: #000000"><br>key_buffer</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">32M<br>sort_buffer</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">32M<br>read_buffer</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">16M<br>write_buffer</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">16M<br><br></span><span style="FONT-WEIGHT: bold; COLOR: #800000">[</span><span style="COLOR: #800000">myisamchk</span><span style="FONT-WEIGHT: bold; COLOR: #800000">]</span><span style="COLOR: #000000"><br>key_buffer</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">32M<br>sort_buffer</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">32M<br>read_buffer</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">16M<br>write_buffer</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">16M<br><br></span><span style="FONT-WEIGHT: bold; COLOR: #800000">[</span><span style="COLOR: #800000">mysqlhotcopy</span><span style="FONT-WEIGHT: bold; COLOR: #800000">]</span><span style="COLOR: #000000"><br>interactive-timeout</span></div>
<img src ="http://www.phpweblog.net/killjin/aggbug/2609.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.phpweblog.net/killjin/" target="_blank">Prog</a> 2007-12-27 22:06 <a href="http://www.phpweblog.net/killjin/archive/2007/12/27/2609.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Install and Configure MySQL on Linux</title><link>http://www.phpweblog.net/killjin/archive/2007/12/09/2512.html</link><dc:creator>Prog</dc:creator><author>Prog</author><pubDate>Sat, 08 Dec 2007 21:15:00 GMT</pubDate><guid>http://www.phpweblog.net/killjin/archive/2007/12/09/2512.html</guid><wfw:comment>http://www.phpweblog.net/killjin/comments/2512.html</wfw:comment><comments>http://www.phpweblog.net/killjin/archive/2007/12/09/2512.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.phpweblog.net/killjin/comments/commentRss/2512.html</wfw:commentRss><trackback:ping>http://www.phpweblog.net/killjin/services/trackbacks/2512.html</trackback:ping><description><![CDATA[<p>用 <a href="http://www.mysql.com/" target=_blank><font color=#cc0000>MySQL</font></a> 有年头了，写篇简单的文档来记录下自己的常用安装和配置过程。本文旨在介绍如何在 Linux 系统上安装 MySQL 数据库服务器，以及基本配置。本文仅仅提供一份快速指南，请访问 MySQL 官方网站获取详细安装、配置指南。</p>
<p>OS: Red Hat Enterprise Linux AS 3.0<br>MySQL: 5.0.22</p>
<p>源码 tarball 放置在 /home/huangys , 安装目的地是/opt/mysql</p>
<p><strong>1. 准备</strong></p>
<p>创建一个用户来运行 MySQL 守护进程。<br><font face="courier new,courier"># groupadd mysqlg<br># useradd &#8211;g mysqlg &#8211;M &#8211;s /sbin/nologin mysqld</font></p>
<p>解包<br><font face="courier new,courier"># cd /home/huangys<br># tar zxvf mysql-5.0.22.tar.gz</font></p>
<p><strong>2. 配置编译选项</strong></p>
<p><font face="courier new,courier"># cd mysql-5.0.22<br># ./configure --prefix=/opt/mysql --with-charset=utf8 --with-extra-charsets=all --with-tcp-port=3306 --with-unix-socket-path=/tmp/mysql.sock --with-mysqld-user=mysqld --with-federated-storage-engine</font></p>
<p><em>选项说明：</em><br><font face="courier new,courier">--prefix=/opt/mysql</font> 将MySQL安装到目录<font face="courier new,courier">/opt/mysql</font>下<br><font face="courier new,courier">--with-charset=utf8</font> 指定缺省字符集为utf8<br><font face="courier new,courier">--with-extra-charsets=all</font> 将MySQL所有支持的字符集编译进来<br><font face="courier new,courier">--with-tcp-port=3306</font> 指定此MySQL实例将监听TCP 3306端口<br><font face="courier new,courier">--with-unix-socket-path=/tmp/mysql.sock</font> 指定UNIX socket文件的路径（为绝对路径）<br><font face="courier new,courier">--wih-mysqld-user=mysqld</font> 指定用来运行MySQL守护进程的用户<br><font face="courier new,courier">--with-federated-storage-engine</font> 支持federated存储引擎</p>
<p>通过指令 configure --help 可以查看全部选项信息。</p>
<p><strong>3. 编译、安装</strong></p>
<p><font face="courier new,courier"># make<br># make install</font></p>
<p><strong>4. 初始化</strong></p>
<p><font face="courier new,courier"># scripts/mysql_install_db</font><br>这将会在安装目录 <font face="courier new,courier">/opt/mysql</font> 下创建 MySQL 的数据目录 <font face="courier new,courier">var</font></p>
<p><strong>5. 配置</strong></p>
<p>在 MySQL 提供的支持文件中复制一个合适的配置档到 MySQL 数据目录中，并命名为 my.cnf<br><font face="courier new,courier"># cp support-files/my-huge.cnf /opt/mysql/var/my.cnf</font></p>
<p>主要修改点在 [mysqld] 配置块中：</p>
<p>指定允许的最大包尺寸：<br>max_allowed_packet = 2M</p>
<p>指定最大连接数（默认为100）：<br>max_connections = 1000</p>
<p>指定服务器端字符集：<br>character_set_server = utf8</p>
<p>强制指定连接使用的字符集：<br>init_connect = 'set names utf8'<br>（注意：若连接时使用的是 super user ，则此项不会被执行，MySQL 文档对此有<a href="http://dev.mysql.com/doc/refman/5.1/en/server-system-variables.html" target=_blank><font color=#cc0000>详细解释</font></a>。）</p>
<p>指定安装目录和数据目录：<br>basedir = /opt/mysql2/<br>datadir = /opt/mysql2/var/</p>
<p>忽略Berkeley DB:<br>skip-bdb<br>（同理，若也打算忽略 InnoDB，则使用 skip-innodb）</p>
<p>配置InnoDB:<br>innodb_data_home_dir = /opt/mysql2/var/<br>innodb_data_file_path = ibdata1:500M;ibdata2:50M:autoextend<br>innodb_log_group_home_dir = /opt/mysql2/var/<br>innodb_log_arch_dir = /opt/mysql2/var/<br>innodb_buffer_pool_size = 384M<br>innodb_additional_mem_pool_size = 20M<br>innodb_log_file_size = 100M<br>innodb_log_buffer_size = 8M<br>innodb_flush_log_at_trx_commit = 1<br>innodb_lock_wait_timeout = 50</p>
<p>完成编辑此配置档后，记得顺便修改一下 MySQL 数据目录的 ownership:<br><font face="courier new,courier"># cd /opt/mysql<br># chown &#8211;Rc mysqld.mysqlg var</font></p>
<p><strong>6. 控制脚本</strong></p>
<p>MySQL提供了一个脚本文件，可以用来方便地控制MySQL守护进程。<br><font face="courier new,courier"># cp support-files/mysql.server /opt/mysql/bin/mysqlctl<br># cd /opt/mysql/bin<br># chmod 755 mysqlctl</font></p>
<p>启动：<br><font face="courier new,courier"># /opt/mysql/bin/mysqlctl start</font><br>停止：<br><font face="courier new,courier"># /opt/mysql/bin/mysql stop</font></p>
<p>注意，若启用了 InnoDB 存储引擎，那么第一次启动 MySQL 服务器时，速度会比较慢，因为需要分配在配置档中定义的空间、生成相应的数据文件、日志文件等。</p>
<p><strong>7. Security</strong></p>
<p>安全问题在哪里都是很重要的，特别是对于初安装的新系统而言，尤其如此。</p>
<p>MySQL 往往携带有四个缺省用户，分别是 'root'@'localhost', 'root'@'%', ''@'localhost', ''@'%'.<br>除了第一个本地root，其他三个（任意来源的root，以及两个匿名用户）都应该删除：</p>
<p><font face="courier new,courier">mysql&gt; use mysql<br>mysql&gt; delete from user where user='';<br>mysql&gt; delete from user where user='root' and host='%';</font></p>
<p>这唯一保留的用户 root@localhost 的密码默认为空，当然不好。为它加上密码：</p>
<p><font face="courier new,courier"># /opt/mysql/bin/mysqladmin -uroot -hlocalhost -P3306 -p password my_pass</font></p>
<p>指令中的 my_pass 就是设定的密码，注意，不要用单引号把它括起来。 </p>
<p><strong>8. Appendix</strong></p>
<p><font face="courier new,courier">[root@tbox2 root]# cat /etc/redhat-release<br>Red Hat Enterprise Linux AS release 3 (Taroon)</p>
<p>[root@tbox2 root]# uname -a<br>Linux tbox2.test.net 2.4.21-4.ELsmp #1 SMP Fri Oct 3 17:52:56 EDT 2003 i686 i686 i386 GNU/Linux</p>
<p>[root@tbox2 root]# rpm -qa | grep gcc<br>libgcc-ssa-3.5ssa-0.20030801.41<br>gcc-g77-3.2.3-20<br>gcc-ssa-3.5ssa-0.20030801.41<br>gcc-objc-ssa-3.5ssa-0.20030801.41<br>compat-gcc-c++-7.3-2.96.122<br>compat-gcc-7.3-2.96.122<br>gcc-c++-3.2.3-20<br>gcc-gnat-3.2.3-20<br>gcc-objc-3.2.3-20<br>gcc-c++-ssa-3.5ssa-0.20030801.41<br>gcc-java-ssa-3.5ssa-0.20030801.41<br>libgcc-3.2.3-20<br>gcc-3.2.3-20<br>gcc-java-3.2.3-20<br>gcc-g77-ssa-3.5ssa-0.20030801.41</p>
<p>[root@tbox2 root]# rpm -qa | grep glibc<br>glibc-headers-2.3.2-95.3<br>glibc-common-2.3.2-95.3<br>glibc-utils-2.3.2-95.3<br>glibc-kernheaders-2.4-8.34<br>glibc-devel-2.3.2-95.3<br>compat-glibc-7.x-2.2.4.32.5<br>glibc-2.3.2-95.3<br>glibc-profile-2.3.2-95.3</p>
<p>[root@tbox2 root]# /opt/mysql/bin/mysql --version<br>/opt/mysql/bin/mysql&nbsp; Ver 14.12 Distrib 5.0.22, for pc-linux-gnu (i686) using&nbsp; EditLine wrapper</font></p>
<img src ="http://www.phpweblog.net/killjin/aggbug/2512.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.phpweblog.net/killjin/" target="_blank">Prog</a> 2007-12-09 05:15 <a href="http://www.phpweblog.net/killjin/archive/2007/12/09/2512.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Mysql 重启命令 和 locate命令</title><link>http://www.phpweblog.net/killjin/archive/2007/11/20/2356.html</link><dc:creator>Prog</dc:creator><author>Prog</author><pubDate>Tue, 20 Nov 2007 14:54:00 GMT</pubDate><guid>http://www.phpweblog.net/killjin/archive/2007/11/20/2356.html</guid><wfw:comment>http://www.phpweblog.net/killjin/comments/2356.html</wfw:comment><comments>http://www.phpweblog.net/killjin/archive/2007/11/20/2356.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.phpweblog.net/killjin/comments/commentRss/2356.html</wfw:commentRss><trackback:ping>http://www.phpweblog.net/killjin/services/trackbacks/2356.html</trackback:ping><description><![CDATA[<p>$mysql_dir/bin/mysqladmin -u root -p shutdown<br>$mysql_dir/bin/safe_mysqld &amp;<br><br>或者<br><br>killall mysqld<br>mysqld_safe &amp;<br><br>----------------------------------<br>freebsd 文件系统 uts<br>lighttpd 轻量级的 web服务器<br><br>------------------------------locate---------------------<br>名称：locate<br>使用权限：所有使用者<br>使用方式： locate [-q] [-d &lt;path&gt;] [--database=&lt;path&gt;] &lt;search string&gt;<br>locate [-r &lt;regexp&gt;] [--regexp=&lt;regexp&gt;]<br>locate [-qv] [-o &lt;file&gt;] [--output=&lt;file&gt;] <br>locate [-e &lt;dir1,dir2,...&gt;] [-f &lt;fstype1,...&gt;] &lt;[-l &lt;level&gt;] [-c]<br>&lt;[-U ] [-u]&gt;<br>locate [-Vh] [--version] [--help]<br>说明： <br>locate 让使用者可以很快速的搜寻档案系统内是否有指定的档案。其方法是先建立一个包括系统内所有档案名称及路径的资料库，之后当寻找时就只需查询这个资料库，而不必实际深入档案系统之中了。 </p>
<p>在一般的 distribution 之中，资料库的建立都被放在 contab 中自动执行。一般使用者在使用时只要用 </p>
<p># locate your_file_name</p>
<p>的型式就可以了。 参数： <br>-u<br>-U &lt;dir&gt;<br>建立资料库，-u 会由根目录开始，-U 则可以指定开始的位置。 </p>
<p>-e &lt;dir&gt;<br>将 &lt;dir&gt; 排除在寻找的范围之外。 </p>
<p>-l &lt;level&gt;<br>如果 &lt;level&gt; 是 1．则启动安全模式。在安全模式下，使用者不会看到权限无法看到的档案。这会始速度减慢，因为 locate 必须至实际的档案系统中取得档案的权限资料。 </p>
<p>-f &lt;filetype&gt;<br>将特定的档案系统排除在外，例如我们没有到理要把 proc 档案系统中的档案放在资料库中。 </p>
<p>-q <br>安静模式，不会显示任何错误讯息。 </p>
<p>-n &lt;num&gt;<br>至多显示 &lt;num&gt; 个输出。 </p>
<p>-r &lt;reg&gt;<br>使用正规运算式 &lt;reg&gt; 做寻找的条件。 </p>
<p>-o &lt;file&gt;<br>指定资料库存的名称。 </p>
<p>-d &lt;dir&gt;<br>指定资料库的路径 </p>
<p>-h<br>显示辅助讯息 </p>
<p>-v<br>显示更多的讯息 </p>
<p>-V<br>显示程式的版本讯息 范例： </p>
<p>locate chdrv&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : 寻找所有叫 chdrv 的档案<br>locate -n 100 a.out&nbsp;&nbsp;&nbsp;&nbsp; : 寻找所有叫&nbsp; a.out 的档案，但最多只显示 100 个</p>
<p>locate -u&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : 建立资料库<br></p>
<img src ="http://www.phpweblog.net/killjin/aggbug/2356.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.phpweblog.net/killjin/" target="_blank">Prog</a> 2007-11-20 22:54 <a href="http://www.phpweblog.net/killjin/archive/2007/11/20/2356.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>centos 5.0 编译安装apache 2.2.6+php5.2.5+mysql5.0.46+Zend Optimizer 3.3.0+eacc</title><link>http://www.phpweblog.net/killjin/archive/2007/11/04/2169.html</link><dc:creator>Prog</dc:creator><author>Prog</author><pubDate>Sun, 04 Nov 2007 10:37:00 GMT</pubDate><guid>http://www.phpweblog.net/killjin/archive/2007/11/04/2169.html</guid><wfw:comment>http://www.phpweblog.net/killjin/comments/2169.html</wfw:comment><comments>http://www.phpweblog.net/killjin/archive/2007/11/04/2169.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.phpweblog.net/killjin/comments/commentRss/2169.html</wfw:commentRss><trackback:ping>http://www.phpweblog.net/killjin/services/trackbacks/2169.html</trackback:ping><description><![CDATA[<div class=t_msgfont id=postmessage_1394>V2.0 2007年10月14日 操作系统更新为<strong><font color=#ff0000>centos</font></strong> <strong><font color=#ff0000>5.0</font></strong>&nbsp;&nbsp;apache 更新为2.2.6版本， php更新为5.2.5,增加集成Suhosin补丁，mysql 更新为<strong><font color=#ff0000>5.0</font></strong>.46, Zend Optimizer 更新为3.3.0。解决新平台下的一些问题。修正文字错误。<br><br>v1.2 2007年2月12日 apache 更新为2.2.4版本，增加mod_ssl和openssl支持，增加apr和apr-util的编译， php更新为5.2.1,增加集成Suhosin补丁，mysql 更新为<strong><font color=#ff0000>5.0</font></strong>.33, Zend Optimizer 更新为3.2.2，增加phpmyadmin。修改一些文字错误。<br><br>v1.0 2007年1月11日<br><br>先声明，我绝对是个Linux的菜鸟，以下的这些文字个人的安装笔记，是参考了网上许多高手的成功经验组合而成的，说实话我自己的东西不多 ：）我想把这些经验写下来，既可以对其他跟我一样摸索的兄弟一个经验，也可以防止以后自己都忘记了，嘿嘿。<br><br>所以如果某个大虾看到我借用了你的资源，请你不要生气。也欢迎大家进行指点。<br><br>1、下载<strong><font color=#ff0000>centos</font></strong> 5<br>我是下载的DVD版本，大家也可以下载服务器CD安装版本，其实都差不多。大家可以到这儿下载，速度很快的。<br><a href="http://ftp.iasi.roedu.net/mirrors/centos.org/5/isos/i386/CentOS-5.0-i386-bin-DVD.iso" target=_blank>http://ftp.iasi.roedu.net/mirror ... .0-i386-bin-DVD.iso</a><br><br>当然也可以在windows下用BT或迅雷下载，速度也很不错的。<br><br>下载后当然就刻录成光盘。我建议你刻录DVD啦，如果是菜鸟，也可以在图形界面进行学习，不会这么抓不住头脑。<br><br>2、（1）安装CentOS 5<br>作为服务器，不安装不需要的组件，所以在选择组件的时候，除了选择FTP SERVER外取消所有组件的选择。也不要选web服务器。因为我们后面要手动<strong><font color=#ff0000>编译安装</font></strong>。<br><br><br>系统约定RPM包和源码包存放位置<br><br>RPM包和源码包存放位置 /usr/local/src<br>源码包<strong><font color=#ff0000>编译安装</font></strong>位置(prefix) /usr/local/xxx<br>脚本以及维护程序存放位置 /usr/local/sbin<br>MySQL 数据库位置 /var/lib/mysql<br>Apache 网站根目录 /home/www<br>Apache 虚拟主机日志根目录 /data/logs/www<br>yum RPM包信息文件 /etc/yum.list<br><br>3、系统环境部署及调整<br><br>（1）. 检查系统是否正常<br># more /var/log/messages //检查有无系统内核级错误信息<br># demesg //检查硬件设备是否有错误信息<br># ifconfig //检查网卡设置是否正确<br># ping <a href="http://www.163.com/" target=_blank>www.163.com</a> // 检查网络是否正常<br><br>（2）. 关闭不需要的服务<br># export LANG='en_US' //设置语言<br># setup //选择启动的服务<br>进入system service 选项。<br>以space 键选定所需服务。<br>以下仅列出需要启动的服务，未列出的服务一律关闭：<br>crond<br>irqbalance 仅当服务器CPU为S.M.P架构或支持双核心、HT技术时，才需开启，否则关闭。<br>microcode_ctl<br>network<br>vsftpd<br>sshd<br>syslog<br><br>（3）、修改/etc/yum.repos.d/CentOS-Base.repo，将镜象站点地址改为在中国的镜象站点地址。不然我们通过yum安装软件速度会极慢。修改如下：<br><br># CentOS-Base.repo<br>#<br># This file uses a new mirrorlist system developed by Lance Davis for CentOS.<br># The mirror system uses the connecting IP address of the client and the<br># update status of each mirror to pick mirrors that are updated to and<br># geographically close to the client.&nbsp;&nbsp;You should use this for CentOS updates<br># unless you are manually picking other mirrors.<br>#<br># If the mirrorlist= does not work for you, as a fall back you can try the <br># remarked out baseurl= line instead.<br>#<br>#<br><br>[base]<br>name=CentOS-$releasever - Base<br>baseurl=http://mirror.be10.com/<strong><font color=#ff0000>centos</font></strong>/$releasever/os/$basearch/<br>gpgcheck=1<br>gpgkey=http://mirror.<strong><font color=#ff0000>centos</font></strong>.org/<strong><font color=#ff0000>centos</font></strong>/RPM-GPG-KEY-CentOS-5<br>protect=1<br><br>#released updates <br>[updates]<br>name=CentOS-$releasever - Updates<br>baseurl=http://mirror.be10.com/<strong><font color=#ff0000>centos</font></strong>/$releasever/updates/$basearch/<br>gpgcheck=1<br>gpgkey=http://mirror.<strong><font color=#ff0000>centos</font></strong>.org/<strong><font color=#ff0000>centos</font></strong>/RPM-GPG-KEY-CentOS-5<br>protect=1<br><br>#packages used/produced in the build but not released<br>[addons]<br>name=CentOS-$releasever - Addons<br>baseurl=http://mirror.be10.com/<strong><font color=#ff0000>centos</font></strong>/$releasever/addons/$basearch/<br>gpgcheck=1<br>gpgkey=http://mirror.<strong><font color=#ff0000>centos</font></strong>.org/<strong><font color=#ff0000>centos</font></strong>/RPM-GPG-KEY-CentOS-5<br>protect=0<br><br>#additional packages that may be useful<br>[extras]<br>name=CentOS-$releasever - Extras<br>baseurl=http://mirror.be10.com/<strong><font color=#ff0000>centos</font></strong>/$releasever/extras/$basearch/<br>gpgcheck=1<br>gpgkey=http://mirror.<strong><font color=#ff0000>centos</font></strong>.org/<strong><font color=#ff0000>centos</font></strong>/RPM-GPG-KEY-CentOS-5<br>protect=0<br><br>#additional packages that extend functionality of existing packages<br>[<strong><font color=#ff0000>centos</font></strong>plus]<br>name=CentOS-$releasever - Plus<br>baseurl=http://mirror.be10.com/<strong><font color=#ff0000>centos</font></strong>/$releasever/<strong><font color=#ff0000>centos</font></strong>plus/$basearch/<br>gpgcheck=1<br>enabled=0<br>gpgkey=http://mirror.<strong><font color=#ff0000>centos</font></strong>.org/<strong><font color=#ff0000>centos</font></strong>/RPM-GPG-KEY-CentOS-5<br>protect=1<br><br>#contrib - packages by Centos Users<br>[contrib]<br>name=CentOS-$releasever - Contrib<br>baseurl=http://mirror.be10.com/<strong><font color=#ff0000>centos</font></strong>/$releasever/contrib/$basearch/<br>gpgcheck=1<br>enabled=0<br>protect=0<br>gpgkey=http://mirror.<strong><font color=#ff0000>centos</font></strong>.org/<strong><font color=#ff0000>centos</font></strong>/RPM-GPG-KEY-CentOS-5<br><br>#packages in testing<br>[testing]<br>name=CentOS-5 - Testing<br>baseurl=http://mirror.be10.com/<strong><font color=#ff0000>centos</font></strong>/5/testing/i386/<br><br>gpgcheck=1<br>enabled=0<br>protect=0<br><br><br>保存。<br><br>（2）更新系统，我们使用yum,<br><br>然后执行：<br># yum upgrade<br>建议更新所有列出的程序，rhel 5.X的稳定性还要继续努力呢。<br><br><br>（4）、定时校正服务器时间<br># yum install ntp<br># crontab -e<br>0 23 * * * root /usr/sbin/ntpdate 210.72.145.44 &gt; /dev/null 2&gt;&amp;1<br><br>以上命令设置好后存盘。您的机器将在每天的23:00根据中国国家授时中心的NTP服务器时间自动校准时间。<br><br>(5). 对TCP/IP网络参数进行调整，加强抗SYN Flood能力<br># echo 'net.ipv4.tcp_syncookies = 1' &gt;&gt; /etc/sysctl.conf //将net.ipv4.tcp_syncookies = 1写入sysctl.conf 文件<br># sysctl -p //查看<br><br>（6）、FTP服务器的配置<br>vi /etc/vsftpd/vsftpd.conf<br>把anonymous_enable=YES注释掉不允许匿名登录。<br>把chroot_list_enable=YES<br>chroot_list_file=/etc/vsftpd.chroot_list<br>前的注释去掉。<br>把ftpd_banner=*前的注释去掉。后面改成你的欢迎信息(这样设置可以避免显示ftp服务器的版本信息)<br>然后保存，service vsftpd start就可以了。<br><br>这时应当添加用户，因为root默认不能通过FTP方式登录。<br><br># adduser username<br># passwd userpassword<br><br>这样对于我们上传一些文件到系统中很方便。<br><br><br>4. 重新启动系统<br># init 6<br><br><br>5. 使用 yum 程序安装所需开发包（以下为标准的 RPM 包名称）<br># yum install gcc gcc-c++ gcc-g77 flex bison autoconf automake bzip2-devel zlib-devel ncurses-devel libjpeg-devel libpng-devel libtiff-devel freetype-devel pam-devel openssl-devel libxml2-devel<br><br>#这里我们将编译GD所必须的一些小软件比如libpng,libtiff,freetype,libjpeg,等先用RPM的方式一并安装好，避免手动编译浪费时间，同时也能避免很多错误，这几个小软件的编译很麻烦。这几个小软件编译错误了，GD当然安装不了，php5的编译当然也没戏了。所以我们抓大放小，对这些小牛鬼蛇神采取快速简洁的方式进行安装。并且对服务器的性能也不能产生什么影响。<br>另外libxml2系统已经默认安装了，所以我们不需要手工编译了，直接安装它的开发包就行了。<br><br>6. 源码<strong><font color=#ff0000>编译安装</font></strong>所需包 (Source)<br>(1) GD2<br># cd /usr/local/src<br># wget <a href="http://www.boutell.com/gd/http/gd-2.0.34.tar.gz" target=_blank>http://www.boutell.com/gd/http/gd-2.0.34.tar.gz</a><br># tar xzvf gd-2.0.34.tar.gz<br># cd gd-2.0.34<br># CHOST="i686-pc-linux-gnu" CFLAGS="-O3 -msse2 -mmmx -Wall -W -mfpmath=sse -mcpu=pentium4 -march=pentium4 -pipe -fomit-frame-pointer" CXXFLAGS="-O3 -msse2 -mmmx -Wall -W -mfpmath=sse -funroll-loops -mcpu=pentium4 -march=pentium4 -pipe -fomit-frame-pointer" ./configure --prefix=/usr/local/gd2 --mandir=/usr/share/man //./configure 配置。<br><br># make //make 是用来编译的，它从 Makefile 中读取指令，然后编译。<br># make install //make install 是用来安装的，它也从 Makefile 中读取指令，安装到指定的位置。<br><br>(2) Apache 日志截断程序<br># cd /usr/local/src<br># wget <a href="http://cronolog.org/download/cronolog-1.6.2.tar.gz" target=_blank>http://cronolog.org/download/cronolog-1.6.2.tar.gz</a><br># tar xzvf cronolog-1.6.2.tar.gz<br># cd cronolog-1.6.2<br># ./configure --prefix=/usr/local/cronolog<br># make<br># make install<br><br><br>7、编译mysql <strong><font color=#ff0000>5.0</font></strong>.46<br>mysql <strong><font color=#ff0000>5.0</font></strong>.46是企业版本，貌似双数版本都是企业版本了。个人觉得代码质量要比社区版本要好一些。大家可以下载，免费使用。并不需要向mysql公司交钱。<br><br>cd /usr/local/src<br># wget <a href="http://mirror.provenscaling.com/mysql/enterprise/source/5.0/mysql-5.0.46.tar.gz" target=_blank>http://mirror.provenscaling.com/ ... mysql-<strong><font color=#ff0000>5.0</font></strong>.46.tar.gz</a><br># tar xzvf mysql-<strong><font color=#ff0000>5.0</font></strong>.46.tar.gz<br># cd mysql-<strong><font color=#ff0000>5.0</font></strong>.46<br><br>修改mysql 客户端最大连接数， 默认的只有100,远远达不到我们的要求。<br><br># vi sql/mysqld.cc<br><br>搜索找到下面一行：<br>{"max_connections", OPT_MAX_CONNECTIONS,<br>"The number of simultaneous clients allowed.", (gptr*) &amp;max_connections,<br>(gptr*) &amp;max_connections, 0, GET_ULONG, REQUIRED_ARG, 100, 1, 16384, 0, 1,<br>0},<br><br>将其中的100改为1500, 当然小点也可以，根据你的需要来，不建议改的太大。<br><br>{"max_connections", OPT_MAX_CONNECTIONS,<br>"The number of simultaneous clients allowed.", (gptr*) &amp;max_connections,<br>(gptr*) &amp;max_connections, 0, GET_ULONG, REQUIRED_ARG, 1500, 1, 16384, 0, 1,<br>0},<br><br>保存。<br><br># CHOST="i686-pc-linux-gnu" CFLAGS="-O3 -msse2 -mmmx -Wall -W -mfpmath=sse -mcpu=pentium4 -march=pentium4 -pipe -fomit-frame-pointer" CXXFLAGS="-O3 -msse2 -mmmx -Wall -W -mfpmath=sse -funroll-loops -mcpu=pentium4 -march=pentium4 -pipe -fomit-frame-pointer" ./configure --prefix=/usr/local/mysql --localstatedir=/var/lib/mysql --with-comment=Source --with-server-suffix=-enterprise-gpl --with-mysqld-user=mysql --without-debug --with-big-tables --with-charset=utf8 --with-collation=utf8_general_ci --with-extra-charsets=all --with-pthread --enable-static --enable-thread-safe-client --with-client-ldflags=-all-static --with-mysqld-ldflags=-all-static --enable-assembler --without-innodb --without-ndb-debug --without-isam<br><br><br>配置成功会提示：<br><br>MySQL has a Web site at <a href="http://www.mysql.com/" target=_blank>http://www.mysql.com/</a> which carries details on the<br>latest release, upcoming features, and other information to make your<br>work or play with MySQL more productive. There you can also find<br>information about mailing lists for MySQL discussion.<br><br>Remember to check the platform specific part of the reference manual for<br>hints about installing MySQL on your platform. Also have a look at the<br>files in the Docs directory.<br><br>Thank you for choosing MySQL!<br><br>// 注意 ，CHOST="i686-pc-linux-gnu" CFLAGS="-O3 -msse2 -mmmx -Wall -W -mfpmath=sse -mcpu=pentium4 -march=pentium4 -pipe -fomit-frame-pointer" CXXFLAGS="-O3 -msse2 -mmmx -Wall -W -mfpmath=sse -funroll-loops -mcpu=pentium4 -march=pentium4 -pipe -fomit-frame-pointer" 这个环境参数只针对intel P4 芯片，如果你的CPU是AMD的，注意不能使用。请查看相应的编译优化参数。否则程序会无法编译，即使编译成功也无法运行，嘿嘿。<br><br>关于其他CPU的优化请看我的BLOG的一篇转贴：<br><a href="http://www.cnprint.org/bbs/blogs/1/blog43.html" target=_blank>http://www.cnprint.org/bbs/blogs/1/blog43.html</a><br><br><br># make<br>编译的时间可能会比较长，毕竟优化的比较厉害。<br><br># make install<br><br><strong><font color=#ff0000>编译安装</font></strong>完成后执行后续操作：<br># useradd mysql //添加 mysql 用户<br># cd /usr/local/mysql<br># bin/mysql_install_db --user=mysql<br># chown -R root:mysql . //设置权限，注意后面有一个 "."<br># chown -R mysql /var/lib/mysql //设置 mysql 目录权限<br># chgrp -R mysql . //注意后面有一个 "."<br># cp share/mysql/my-medium.cnf /etc/my.cnf<br># cp share/mysql/mysql.server /etc/rc.d/init.d/mysqld //开机自动启动 mysql。<br># chmod 755 /etc/rc.d/init.d/mysqld<br># chkconfig --add mysqld<br># /etc/rc.d/init.d/mysqld start //启动 MySQL<br># bin/mysqladmin -u root password "password_for_root"<br># service mysqld stop //关闭 MySQL<br><br>8. <strong><font color=#ff0000>编译安装</font></strong> Apache<br># cd /usr/local/src<br># wget <a href="http://www.ip97.com/apache.org/httpd/httpd-2.2.6.tar.gz" target=_blank>http://www.ip97.com/apache.org/httpd/httpd-2.2.6.tar.gz</a><br># tar zxvf httpd-2.2.6.tar.gz<br># cd httpd-2.2.6<br><br>依次安装apr和apr-util<br><br># cd srclib/apr<br># CHOST="i686-pc-linux-gnu" CFLAGS="-O3 -msse2 -mmmx -Wall -W -mfpmath=sse -mcpu=pentium4 -march=pentium4 -pipe -fomit-frame-pointer" CXXFLAGS="-O3 -msse2 -mmmx -Wall -W -mfpmath=sse -funroll-loops -mcpu=pentium4 -march=pentium4 -pipe -fomit-frame-pointer" ./configure --prefix=/usr/local/apr --enable-threads --enable-other-child --enable-static<br># make &amp;&amp; make install<br><br># cd ../apr-util<br># CHOST="i686-pc-linux-gnu" CFLAGS="-O3 -msse2 -mmmx -Wall -W -mfpmath=sse -mcpu=pentium4 -march=pentium4 -pipe -fomit-frame-pointer" CXXFLAGS="-O3 -msse2 -mmmx -Wall -W -mfpmath=sse -funroll-loops -mcpu=pentium4 -march=pentium4 -pipe -fomit-frame-pointer" ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr/ --with-mysql=/usr/local/mysql<br># make &amp;&amp; make install<br><br>cd /usr/local/src/httpd-2.2.6<br># CHOST="i686-pc-linux-gnu" CFLAGS="-O3 -msse2 -mmmx -Wall -W -mfpmath=sse -mcpu=pentium4 -march=pentium4 -pipe -fomit-frame-pointer" CXXFLAGS="-O3 -msse2 -mmmx -Wall -W -mfpmath=sse -funroll-loops -mcpu=pentium4 -march=pentium4 -pipe -fomit-frame-pointer" ./configure --prefix=/usr/local/apache2 --enable-mods-shared=all --with-mysql=/usr/local/mysql --enable-cache --enable-file-cache --enable-mem-cache --enable-disk-cache --enable-static-support --enable-static-htpasswd --enable-static-htdigest --enable-static-rotatelogs --enable-static-logresolve --enable-static-htdbm --enable-static-ab --enable-static-checkgid --disable-cgid --disable-cgi --with-apr=/usr/local/apr/ --with-apr-util=/usr/local/apr-util/ --enable-ssl --with-ssl=/usr/include/openssl<br><br># make<br># make install<br># echo '/usr/local/apache2/bin/apachectl start ' &gt;&gt; /etc/rc.local //将 apachectl 的调用加入到你的系统启动文件中。<br><br>注解：<br>./configure //配置源代码树<br>--prefix=/usr/local/apache2 //体系无关文件的顶级安装目录PREFIX ，也就Apache的安装目录。<br>--enable-module=so //打开 so 模块，so 模块是用来提 DSO 支持的 apache 核心模块<br>--enable-mods-shared=all //编译全部的模板，对于不需要我们可以在httpd.conf去掉。<br>--enable-cache //支持缓存<br>--enable-file-cache //支持文件缓存<br>--enable-mem-cache //支持记忆缓存<br>--enable-disk-cache //支持磁盘缓存<br>--enable-static-support //支持静态连接(默认为动态连接)<br>--enable-static-htpasswd //使用静态连接编译 htpasswd - 管理用于基本认证的用户文件<br>--enable-static-htdigest //使用静态连接编译 htdigest - 管理用于摘要认证的用户文件<br>--enable-static-rotatelogs //使用静态连接编译 rotatelogs - 滚动 Apache 日志的管道日志程序<br>--enable-static-logresolve //使用静态连接编译 logresolve - 解析 Apache 日志中的IP地址为主机名<br>--enable-static-htdbm //使用静态连接编译 htdbm - 操作 DBM 密码数据库<br>--enable-static-ab //使用静态连接编译 ab - Apache HTTP 服务器性能测试工具<br>--enable-static-checkgid //使用静态连接编译 checkgid<br>--disable-cgid //禁止用一个外部 CGI 守护进程执行CGI脚本<br>--disable-cgi //禁止编译 CGI 版本的 PHP<br>--enable-ssl // 编译 ssl模块。<br><br>我们不再使用worker模式编译apache，worker模式和php貌似有一些不协调不稳定之处。所以使用了默认的perfork模式。<br><br>将apache设置成开机自启动:<br><br>在/etc/rc.d/rc.local文件中加入一行<br>/usr/local/apache2/bin/apachectl start<br>这样每次重新启动系统以后,apache也会随系统一起启动.<br><br>或者<br># cp /usr/local/apache2/bin/apachectl /etc/rc.d/init.d/httpd<br>然后 vi /etc/rc.d/init.d/httpd 添加(#!/bin/sh下面)<br># chkconfig: 2345 10 90<br># description: Activates/Deactivates Apache Web Server<br>最后，运行chkconfig把Apache添加到系统的启动服务组里面：<br># chkconfig --add httpd<br># chkconfig httpd on<br><br><br>9、编译php 5.2.5-devel。<br>php 5.2.4有点小BUG，无法在<strong><font color=#ff0000>centos</font></strong> 5上正常编译，官方已经在php5.2.5中修复了。所以我们使用php 5.2.5进行编译。<br>Suhosin是php增强型安全补丁，可以编译到静态内核中，也可以编译成php动态扩展。我个人强烈你建议安装成静态内核。Suhosin已经进入freebsd和gentoo的ports。下面的以下先说静态安装步骤。当然你也可以在安装php后将它编译成php的动态扩展。<br><br># cd /usr/local/src<br># wget <a href="http://cn.php.net/get/php-5.2.5.tar.gz/from/this/mirror" target=_blank>http://cn.php.net/get/php-5.2.5.tar.gz/from/this/mirror</a><br>wget <a href="http://www.hardened-php.net/suhosin/_media/suhosin-patch-5.2.5-0.9.6.2.patch.gz" target=_blank>http://www.hardened-php.net/suho ... .5-0.9.6.2.patch.gz</a><br># tar zxvf php-5.2.5.tar.gz<br># gunzip suhosin-patch-5.2.1-0.9.6.2.patch.gz<br># cd php-5.2.5<br><br># CHOST="i686-pc-linux-gnu" CFLAGS="-O3 -msse2 -mmmx -Wall -W -mfpmath=sse -mcpu=pentium4 -march=pentium4 -pipe -fomit-frame-pointer" CXXFLAGS="-O3 -msse2 -mmmx -Wall -W -mfpmath=sse -funroll-loops -mcpu=pentium4 -march=pentium4 -pipe -fomit-frame-pointer" ./configure --prefix=/usr/local/php --with-apxs2=/usr/local/apache2/bin/apxs --with-pear=/usr/share/php --with-zlib-dir --with-bz2 --with-libxml-dir=/usr --with-gd=/usr/local/gd2 --enable-gd-native-ttf --enable-gd-jis-conv --with-freetype-dir --with-jpeg-dir --with-png-dir --with-ttf=shared,/usr --enable-mbstring --with-mysql=/usr/local/mysql --with-mysqli=/usr/local/mysql/bin/mysql_config --with-config-file-path=/etc --with-iconv --disable-ipv6 --enable-static --enable-maintainer-zts --enable-zend-multibyte --enable-inline-optimization --enable-zend-multibyte --enable-sockets --enable-soap --with-openssl<br><br>配置成功会提示：<br><br>+--------------------------------------------------------------------+<br>| License:&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;|<br>| This software is subject to the PHP License, available in this&nbsp; &nbsp;&nbsp;&nbsp;|<br>| distribution in the file LICENSE.&nbsp;&nbsp;By continuing this installation |<br>| process, you are bound by the terms of this license agreement.&nbsp; &nbsp;&nbsp;&nbsp;|<br>| If you do not agree with the terms of this license, you must abort |<br>| the installation process at this point.&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; |<br>+--------------------------------------------------------------------+<br><br>Thank you for using PHP.<br><br><br># make<br><br># make install<br><br># cp php.ini-recommended /etc/php.ini<br><br><br>在这里也顺便说一下将suhosin安装成为php的动态扩展的方法。毕竟网上根本不见它的中文安装教程。<br><br>虽然我个人不推荐这种方式。<br><br>wget <a href="http://www.hardened-php.net/suhosin/_media/suhosin-0.9.16.tgz" target=_blank>http://www.hardened-php.net/suhosin/_media/suhosin-0.9.16.tgz</a><br>tar zxvf suhosin-0.9.16.tgz<br>cd suhosin-0.9.16<br>./configure --with-php-config=/usr/local/php/bin/php-config<br>make<br>make install<br><br>会提示编译的模块存在的目录，记住它。<br>Installing shared extensions: /usr/local/php/lib/php/extensions/no-debug-non-zts-20060613/<br><br>然后在php.ini中增加一行下列语句。<br>extension=/usr/local/php/lib/php/extensions/no-debug-non-zts-20060613/suhosin.so<br><br>10 、整合apache 与php<br># vi /usr/local/apache2/conf/httpd.conf<br>在最后一行加上：<br>AddType application/x-httpd-php .php<br><br>查找：(设置 WEB 默认文件)<br>DirectoryIndex index.html<br>替换为：<br>DirectoryIndex index.php index.html index.htm //在 WEB 目录不到默认文件，httpd 就会执行 /var/www/error/noindex.html<br><br>找到这一段：<br># AllowOverride controls what directives may be placed in .htaccess files.<br># It can be "All", "None", or any combination of the keywords:<br># Options FileInfo AuthConfig Limit<br>#<br>AllowOverride none<br><br>更改为AllowOverride all<br>允许apache rewrite<br><br># 监听443端口,支持https连接<br>取消注释 httpd.conf 中的 Include conf/extra/httpd-ssl.conf<br><br>保存httpd.conf，退出。<br><br># /usr/local/apache2/bin/apachectl restart //重启 Apache<br><br>这时会出现错误：<br><br>/usr/local/apache2/bin/apachectl start<br>httpd: Syntax error on line 107 of /usr/local/apache2/conf/httpd.conf: Cannot load /usr/local/apache2/modules/libphp5.so into server: /usr/local/apache2/modules/libphp5.so: cannot restore segment prot after reloc: Permission denied<br><br>不急，我们慢慢解决。<br><br>先重启下机器：<br>reboot<br>这个Permission denied问题，在<strong><font color=#ff0000>centos</font></strong> 5下面一般是Selinux引起的，作为生产用服务器，我建议你千万别草率地关掉Selinux一了百了。就像家里的防盗网，阻碍了你的猫自由进出窗户，你不能为了猫方便，就把防盗网简单拆除是同样的道理。我看见网上许多人建议把Selinux简单关闭来解决这个问题，很不以为然。<br>我们可以这样操作：<br><br># audit2allow -d<br>allow initrc_t usr_t:file execmod;<br>allow mount_t default_t:file execute;<br><br><br># cd /etc/selinux/targeted/modules/<br># audit2allow -M local -d<br><br>屏幕产生如下提示：<br><br>产生类型强制文件：local.te<br>正在编译策略<br>checkmodule -M -m -o local.mod local.te<br>semodule_package -o local.pp -m local.mod<br><br>********************重要 ***********************<br><br>为了在内核中加载这个新创建的策略软件包，<br>您需要执行 <br><br>semodule -i local.pp<br><br>我们运行<br><br># semodule -i local.pp<br><br>这样就让Selinux加载了新的规则。<br><br>更详细的内容请看我在BLOG上的转贴：<br><br><a href="http://www.cnprint.org/bbs/blogs/1/blog48.html" target=_blank>http://www.cnprint.org/bbs/blogs/1/blog48.html</a><br><br>reboot<br><br>哈哈，apache不会再报错了吧？<br>这样我保留了selinux的功能，同时apache也能正常运行。<br><br>11. 查看确认 L.A.M.P 环境信息<br>vi /usr/local/apache2/htdocs/phpinfo.php<br><br>新增加下面一行，并保存。<br><br><br><br># chmod 755 /usr/local/apache2/htdocs/phpinfo.php<br><br>用浏览器打开 <a href="http://127.0.0.1/phpinfo.php" target=_blank>http://127.0.0.1/phpinfo.php</a><br><br><br># echo ' ' &gt; /usr/local/apache2/htdocs/testdb.php<br># chmod 755 /usr/local/apache2/htdocs/testdb.php<br># service mysqld start<br>用浏览器打开 <a href="http://127.0.0.1/testdb.php" target=_blank>http://127.0.0.1/testdb.php</a><br>检查 phpinfo 中的各项信息是否正确。<br><br>12、设置SSL并创建自己的CA<br><br># cd /usr/share/ssl/misc<br><br># ./CA -newca<br><br>屏幕上出现如下的提示:CA certificate filename (or enter to create)<br><br>这是要求输入要创建的CA的证书文件名, 可以直接回车或输入证书文件名。<br><br>Making CA certificate ...<br>Generating a 1024 bit RSA private key<br>.........++++++<br>................................++++++<br>writing new private key to './demoCA/private/./cakey.pem'<br>Enter PEM pass phrase:<br><br>Verifying password - Enter PEM pass phrase:-<br><br>此时要求输入和验证CA的私钥口令、国家代码（中国是CN）、省份、城市或地区、组织或企业名称、部门名称、CA的名称或服务器的主机名称、管理员电子邮件地址。<br><br>至此,在当前目录下生成了demoCA的目录,CA的证书就在该目录下,文件名为cacert.pem<br><br>生成服务器的证书请求<br><br># ./CA -newreq<br><br>屏幕上出现如下的提示:<br><br>Generating a 1024 bit RSA private key<br>.....................................................++++++<br>.....++++++<br>writing new private key to 'newreq.pem'<br>Enter PEM pass phrase:<br>Verifying password - Enter PEM pass phrase:<br><br>此时要求输入和验证服务器的私钥口令、国家代码（中国是CN）、省份、城市或地区、组织或企业名称、部门名称、CA的名称或服务器的主机名称、管理员电子邮件地址。<br><br>Please enter the following 'extra' attributes<br><br>to be sent with your certificaterequest<br><br>A challenge password []:<br><br>An optional company name []:<br><br>.Request (and private key) is in newreq.pem<br><br>这是要求输入服务器的相关信息。<br><br>此时,在当前目录下生成了一个名为newreq.pem的文件,包含了要生成服务器数字证书的请求。<br><br>签署证书<br><br># ./CA -sign<br><br>屏幕上出现如下的提示:<br><br>Using configuration from /usr/share/ssl/openssl.cnf<br><br>Enter PEM pass phrase:<br><br>此时一样需要输入CA的私钥口令、国家代码（中国是CN）、省份、城市或地区、组织或企业名称、部门名称、CA的名称或服务器的主机名称、管理员电子邮件地址。<br><br>Certificate is to be certified until Nov 19 13:46:19 2002 GMT (365 days)<br><br>Sign the certificate? [y/n]:y<br><br>这时显示证书请求文件中的各项信息,并询问是否要签署证书，回答y，进行签署。<br><br>1 out of 1 certificate requests certified, commit? [y/n]y<br><br>回答y,会显示已经签署的证书的信息,并在当前目录下生成服务器的证书文件newcert.pem。<br><br># mkdir /usr/local/apache2/conf/ssl.crt/<br># mkdir /usr/local/apache2/conf/ssl.key/<br># cp newcert.pem /usr/local/apache2/conf/ssl.crt/server.pem<br># cp newreq.pem /usr/local/apache2/conf/ssl.key/server.pem<br><br><br>更改服务器的证书文件的相关配置<br># vi /usr/local/apache2/conf/extra/httpd-ssl.conf<br><br>查找并修改<br><br># Server Certificate:<br># Point SSLCertificateFile at a PEM encoded certificate. If<br># the certificate is encrypted, then you will be prompted for a<br># pass phrase. Note that a kill -HUP will prompt again. Keep<br># in mind that if you have both an RSA and a DSA certificate you<br># can configure both in parallel (to also allow the use of DSA<br># ciphers, etc.)<br>SSLCertificateFile /usr/local/apache2/conf/ssl.crt/server.pem<br>#SSLCertificateFile /usr/local/apache2/conf/server-dsa.crt<br><br># Server Private Key:<br># If the key is not combined with the certificate, use this<br># directive to point at the key file. Keep in mind that if<br># you've both a RSA and a DSA private key you can configure<br># both in parallel (to also allow the use of DSA ciphers, etc.)<br>SSLCertificateKeyFile /usr/local/apache2/conf/ssl.key/server.pem<br>#SSLCertificateKeyFile /usr/local/apache2/conf/server-dsa.key<br><br><br>示例文件<br><br>在SSL的根目录中生成一个index.html,它是如下所示:<br><br>＜html＞<br><br>这是SSL示例!<br><br>＜/html＞<br><br>测试<br><br>假如Web服务器的DNS名称是<a href="http://www.cnprint.org/" target=_blank>www.cnprint.org</a>.<br><br>在浏览器的URL地址栏里输入 <a href="http://www.cnprint.org/%EF%BC%8C%E6%B5%8F%E8%A7%88%E5%99%A8%E4%BE%BF%E4%BC%9A%E6%98%BE%E7%A4%BAAPACHE%E5%AE%89%E8%A3%85%E6%97%B6%E7%A1%AE%E7%9C%81%E7%9A%84Test" target=_blank>http://www.cnprint.org/，浏览器便会显示APACHE安装时确省的Test</a> Page.<br><br>在浏览器的URL地址栏里输入 <a href="https://www.cnprint.org/%EF%BC%8C%E6%B3%A8%E6%84%8F:%E6%98%AF" target=_blank>https://www.cnprint.org/，注意:是</a> https 而不是http !<br><br>浏览器会提示站点已经采用了SSL进行数据的加密传输.由于我们的CA证书不是浏览器缺省的信任的根证书,所以,浏览器会说无法确认服务器的证书可信。暂时不管,一直NEXT,最后,浏览器会显示:这是SSL示例!<br><br>可以把CA的证书放在非SSL的站点上,让浏览器下载并安装CA证书,并将其设置成可信任的根证书,便可解决上面的问题.8 解除HTTPD起动时的口令输入。<br><br>由于安全的原因,Web服务器的私钥是口令加密了的，每次重新起动HTTPD或Linux时,都会要求输入Web服务器的私钥的口令。<br><br>如果要解除HTTPD起动时的口令输入,可以这样:<br><br># cd /usr/local/apache2/conf/ssl.key/<br># cp server.pem server.pem.org<br># openssl rsa -in server.pem.org -out server.pem<br># chmod 400 server.pem<br><br>另外在网上看到一个方法，我没有试。有兴趣的可以试下。<br><br>创建SSL密码自动应答文件，否则每次Apache启动的时候，都会要求你输入SSL的密码.<br>创建 /usr/local/apache2/conf/ssl.key/sendsslpwd ,内容如下.<br>#!/bin/bash<br>SSLpasswd="YOUR PASSPHRASE"<br>echo $SSLpasswd<br>chmod 755 /usr/local/apache2/conf/ssl.key/sendsslpwd<br><br><br>此时，Web服务器的私钥已经没有口令加密,一定要确保server.pem文件除root外,任何用户均无权读取它。<br><br><br>13、安装 Zend Optimizer<br># cd /usr/local/src<br># wget <a href="http://downloads.zend.com/optimizer/3.3.0/ZendOptimizer-3.3.0-linux-glibc21-i386.tar.gz" target=_blank>http://downloads.zend.com/optimi ... glibc21-i386.tar.gz</a><br># tar xzvf ZendOptimizer-3.3.0-linux-glibc21-i386.tar.gz<br># ./ZendOptimizer-3.3.0-linux-glibc21-i386/install.sh<br>按照它的提示一步步进行就行了。<br>总之一句话。如果你的服务器环境不需要ZendOptimizer，那么能不安就不安装这个。避免和eaccelerator冲突。<br><br>14、安装eaccelerator // eaccelerator是php的加速软件，使用后php的执行效率会有较大幅度的提升。目前eaccelerator 0.9.5.2已经和ZendOptimizer-3.3.0能够基本上兼容啦。不过我个人觉得，ZendOptimizer-3.3.0没有加速的功能，反而使php运行变慢，只是起到了运行zend加密文件的作用而已。闲话不多说了，大家有兴趣的，可以去google下。<br><br># cd /usr/local/src<br># wget <a href="http://bart.eaccelerator.net/source/0.9.5.2/eaccelerator-0.9.5.2.tar.bz2" target=_blank>http://bart.eaccelerator.net/sou ... tor-0.9.5.2.tar.bz2</a><br># tar -jxvf eaccelerator-0.9.5.2.tar.bz2<br># cd eaccelerator-0.9.5.2<br><br>export PHP_PREFIX="/usr/local/php"<br>$PHP_PREFIX/bin/phpize //指定一下php的目录<br><br># ./configure --enable-eaccelerator=shared --with-php-config=$PHP_PREFIX/bin/php-config // 设置<br><br># make &amp; make install<br><br><strong><font color=#ff0000>编译安装</font></strong>后我们会看到屏幕提示的eaccelerator.so所在的目录，比如我得到的是/usr/local/php/lib/php/extensions/no-debug-zts-20060613/eaccelerator.so，记住这个路径，待会要用到。<br><br>修改php.ini（安装完zend之后，php.ini存放于/usr/local/Zend/etc）<br>在文件最后，zend之前，注意，这部分内容务必放在zend之前，不然可能会出现不可预期的服务器问题。添加下列信息：<br><br>[eaccelerator]<br>extension="/usr/local/php/lib/php/extensions/no-debug-zts-20060613/eaccelerator.so"<br>eaccelerator.shm_size="32"<br>eaccelerator.cache_dir="/tmp/eaccelerator"<br>eaccelerator.enable="1"<br>eaccelerator.optimizer="1"<br>eaccelerator.check_mtime="1"<br>eaccelerator.debug="0"<br>eaccelerator.filter=""<br>eaccelerator.shm_max="0"<br>eaccelerator.shm_ttl="0"<br>eaccelerator.shm_prune_period="0"<br>eaccelerator.shm_only="0"<br>eaccelerator.compress="1"<br>eaccelerator.compress_level="9"<br><br>解释:<br>zend_extension 是安装完程序自动指示给我们的<br>eaccelerator.shm_size="32" 缓存大小单位MB<br>eaccelerator.cache_dir="/tmp/eaccelerator" 缓存路径<br><br># mkdir /tmp/eaccelerator // 建立目录<br># chmod 0777 /tmp/eaccelerator // 修改目录属性<br><br>最后重新启动apachectl<br><br>重启apache，phpinfo显示：<br>This program makes use of the Zend Scripting Language Engine:<br>Zend Engine v2.2.0, Copyright (c) 1998-2006 Zend Technologies<br>with eAccelerator v0.9.5.2, Copyright (c) 2004-2006 eAccelerator, by eAccelerator<br>with Zend Extension Manager v1.0.11, Copyright (c) 2003-2006, by Zend Technologies<br>with Zend Optimizer v3.3.0, Copyright (c) 1998-2006, by Zend Technologies<br><br>也会有eAccelerator的具体信息。<br><br>15、安装phpmyadmin，管理mysql数据库<br><br># cd /usr/local/apache2/htdocs/<br># wget <a href="http://nchc.dl.sourceforge.net/sourceforge/phpmyadmin/phpMyAdmin-2.11.1-all-languages-utf-8-only.tar.gz" target=_blank>http://nchc.dl.sourceforge.net/s ... s-utf-8-only.tar.gz</a><br><br># tar zxvf phpMyAdmin-2.11.1-all-languages-utf-8-only.tar.gz<br># mv phpMyAdmin-2.11.1-all-languages-utf-8-only phpmyadmin<br><br># cd phpmyadmin/libraries<br><br>修改配置文件<br># vi config.default.php<br><br>找到这几行进行修改：<br>$cfg['Servers'][$i]['auth_type'] = 'http'; // Authentication method (valid choices: config, http, HTTP, signon or cookie)<br>$cfg['Servers'][$i]['user'] = 'root'; // MySQL user<br>$cfg['Servers'][$i]['password'] = 'PASSWORD'; // MySQL password (only needed<br><br>经过这几个步骤，我们一个比较安全的LAMP服务器就环境基本建立成功啦。感觉上也不是很难，是吧？</div>
<img src ="http://www.phpweblog.net/killjin/aggbug/2169.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.phpweblog.net/killjin/" target="_blank">Prog</a> 2007-11-04 18:37 <a href="http://www.phpweblog.net/killjin/archive/2007/11/04/2169.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>