手机浏览 RSS 2.0 订阅 膘叔的简单人生 , 腾讯云RDS购买 | 超便宜的Vultr , 注册 | 登陆
浏览模式: 标准 | 列表Tag:翻译

MySQL配置文件my.cnf 例子最详细翻译

对于my.cnf,我一向是懒得看的,因为在windows下面mysql默认有四个ini文件,只要拿其中的一个改为my.ini就行了。一般是拿最大的那个改,而且因为很少用innodb之类的,所以真正改的也就是第一个区块的内容。

看到冰山上的播客上面有翻译,于是COPY过来,与大家分享一下,毕竟即使不是你自己配置数据库,但了解一下也好。

XML/HTML代码
  1. #BEGIN CONFIG INFO  
  2. #DESCR: 4GB RAM, 只使用InnoDB, ACID, 少量的连接, 队列负载大  
  3. #TYPE: SYSTEM  
  4. #END CONFIG INFO  
  5. #  
  6. # 此mysql配置文件例子针对4G内存,并在www.bt285.cn bt下载与 www.5a520.cn 小说520,这两个日ip 2w ,pv 20w  测试过的。  
  7. # 主要使用INNODB  
  8. #处理复杂队列并且连接数量较少的mysql服务器  
  9. #  
  10. # 将此文件复制到/etc/my.cnf 作为全局设置,  
  11. # mysql-data-dir/my.cnf 作为服务器指定设置  
  12. # (@localstatedir@ for this installation) 或者放入  
  13. # ~/.my.cnf 作为用户设置.  
  14. #  
  15. # 在此配置文件中, 你可以使用所有程序支持的长选项.  
  16. # 如果想获悉程序支持的所有选项  
  17. # 请在程序后加上”–help”参数运行程序.  
  18. #  
  19. # 关于独立选项更多的细节信息可以在手册内找到  
  20. #  
  21. #  
  22. # 以下选项会被MySQL客户端应用读取.  
  23. # 注意只有MySQL附带的客户端应用程序保证可以读取这段内容.  
  24. # 如果你想你自己的MySQL应用程序获取这些值  
  25. # 需要在MySQL客户端库初始化的时候指定这些选项  
  26. #  
  27. [client]  
  28. #password = [your_password]  
  29. port = @MYSQL_TCP_PORT@  
  30. socket = @MYSQL_UNIX_ADDR@  
  31. # *** 应用定制选项 ***  
  32. #  
  33. #  MySQL 服务端  
  34. #  
  35. [mysqld]  
  36. # 一般配置选项  
  37. port = @MYSQL_TCP_PORT@  
  38. socket = @MYSQL_UNIX_ADDR@  
  39. # back_log 是操作系统在监听队列中所能保持的连接数,  
  40. # 队列保存了在MySQL连接管理器线程处理之前的连接.  
  41. # 如果你有非常高的连接率并且出现”connection refused” 报错,  
  42. # 你就应该增加此处的值.  
  43. # 检查你的操作系统文档来获取这个变量的最大值.  
  44. # 如果将back_log设定到比你操作系统限制更高的值,将会没有效果  
  45. back_log = 50  
  46. # 不在TCP/IP端口上进行监听.  
  47. # 如果所有的进程都是在同一台服务器连接到本地的mysqld,  
  48. # 这样设置将是增强安全的方法  
  49. # 所有mysqld的连接都是通过Unix sockets 或者命名管道进行的.  
  50. # 注意在windows下如果没有打开命名管道选项而只是用此项  
  51. # (通过 “enable-named-pipe” 选项) 将会导致mysql服务没有任何作用!  
  52. #skip-networking  
  53. # MySQL 服务所允许的同时会话数的上限  
  54. # 其中一个连接将被SUPER权限保留作为管理员登录.  
  55. # 即便已经达到了连接数的上限.  
  56. max_connections = 100  
  57. 一般像在我这个www.bt285.cn pv 10w   max_connections=30 就够了。但是如果页面都像http://www.bt285.cn/content.php?id=1196863 这个甜性涩爱页面一样,max_connections=30是不够的。  
  58. # 每个客户端连接最大的错误允许数量,如果达到了此限制.  
  59. # 这个客户端将会被MySQL服务阻止直到执行了”FLUSH HOSTS” 或者服务重启  
  60. # 非法的密码以及其他在链接时的错误会增加此值.  
  61. # 查看 “Aborted_connects” 状态来获取全局计数器.  
  62. max_connect_errors = 10  
  63. # 所有线程所打开表的数量.  
  64. # 增加此值就增加了mysqld所需要的文件描述符的数量  
  65. # 这样你需要确认在[mysqld_safe]中 “open-files-limit” 变量设置打开文件数量允许至少4096  
  66. table_cache = 2048  
  67. # 允许外部文件级别的锁. 打开文件锁会对性能造成负面影响  
  68. # 所以只有在你在同样的文件上运行多个数据库实例时才使用此选项(注意仍会有其他约束!)  
  69. # 或者你在文件层面上使用了其他一些软件依赖来锁定MyISAM表  
  70. #external-locking  
  71. # 服务所能处理的请求包的最大大小以及服务所能处理的最大的请求大小(当与大的BLOB字段一起工作时相当必要)  
  72. # 每个连接独立的大小.大小动态增加  
  73. max_allowed_packet = 16M  
  74. # 在一个事务中binlog为了记录SQL状态所持有的cache大小  
  75. # 如果你经常使用大的,多声明的事务,你可以增加此值来获取更大的性能.  
  76. # 所有从事务来的状态都将被缓冲在binlog缓冲中然后在提交后一次性写入到binlog中  
  77. # 如果事务比此值大, 会使用磁盘上的临时文件来替代.  
  78. # 此缓冲在每个连接的事务第一次更新状态时被创建  
  79. binlog_cache_size = 1M  
  80. # 独立的内存表所允许的最大容量.  
  81. # 此选项为了防止意外创建一个超大的内存表导致永尽所有的内存资源.  
  82. max_heap_table_size = 64M  
  83. # 排序缓冲被用来处理类似ORDER BY以及GROUP BY队列所引起的排序  
  84. # 如果排序后的数据无法放入排序缓冲,  
  85. # 一个用来替代的基于磁盘的合并分类会被使用  
  86. # 查看 “Sort_merge_passes” 状态变量.  
  87. # 在排序发生时由每个线程分配  
  88. sort_buffer_size = 8M  
  89. # 此缓冲被使用来优化全联合(full JOINs 不带索引的联合).  
  90. # 类似的联合在极大多数情况下有非常糟糕的性能表现,  
  91. # 但是将此值设大能够减轻性能影响.  
  92. # 通过 “Select_full_join” 状态变量查看全联合的数量  
  93. # 当全联合发生时,在每个线程中分配  
  94. join_buffer_size = 8M  
  95. # 我们在cache中保留多少线程用于重用  
  96. # 当一个客户端断开连接后,如果cache中的线程还少于thread_cache_size,  
  97. # 则客户端线程被放入cache中.  
  98. # 这可以在你需要大量新连接的时候极大的减少线程创建的开销  
  99. # (一般来说如果你有好的线程模型的话,这不会有明显的性能提升.)  
  100. thread_cache_size = 8  
  101. # 此允许应用程序给予线程系统一个提示在同一时间给予渴望被运行的线程的数量.  
  102. # 此值只对于支持 thread_concurrency() 函数的系统有意义( 例如Sun Solaris).  
  103. # 你可可以尝试使用 [CPU数量]*(2..4) 来作为thread_concurrency的值  
  104. thread_concurrency = 8  
  105. # 查询缓冲常被用来缓冲 SELECT 的结果并且在下一次同样查询的时候不再执行直接返回结果.  
  106. # 打开查询缓冲可以极大的提高服务器速度, 如果你有大量的相同的查询并且很少修改表.  
  107. # 查看 “Qcache_lowmem_prunes” 状态变量来检查是否当前值对于你的负载来说是否足够高.  
  108. # 注意: 在你表经常变化的情况下或者如果你的查询原文每次都不同,  
  109. # 查询缓冲也许引起性能下降而不是性能提升.  
  110. query_cache_size = 64M  
  111. # 只有小于此设定值的结果才会被缓冲  
  112. # 此设置用来保护查询缓冲,防止一个极大的结果集将其他所有的查询结果都覆盖.  
  113. query_cache_limit = 2M  
  114. # 被全文检索索引的最小的字长.  
  115. # 你也许希望减少它,如果你需要搜索更短字的时候.  
  116. # 注意在你修改此值之后,  
  117. # 你需要重建你的 FULLTEXT 索引  
  118. ft_min_word_len = 4  
  119. # 如果你的系统支持 memlock() 函数,你也许希望打开此选项用以让运行中的mysql在在内存高度紧张的时候,数据在内存中保持锁定并且防止可能被swapping out  
  120. # 此选项对于性能有益  
  121. #memlock  
  122. # 当创建新表时作为默认使用的表类型,  
  123. # 如果在创建表示没有特别执行表类型,将会使用此值  
  124. default_table_type = MYISAM  
  125. # 线程使用的堆大小. 此容量的内存在每次连接时被预留.  
  126. # MySQL 本身常不会需要超过64K的内存  
  127. # 如果你使用你自己的需要大量堆的UDF函数  
  128. # 或者你的操作系统对于某些操作需要更多的堆,  
  129. # 你也许需要将其设置的更高一点.  
  130. thread_stack = 192K  
  131. # 设定默认的事务隔离级别.可用的级别如下:  
  132. # READ-UNCOMMITTED, READ-COMMITTED, REPEATABLE-READ, SERIALIZABLE  
  133. transaction_isolation = REPEATABLE-READ  
  134. # 内部(内存中)临时表的最大大小  
  135. # 如果一个表增长到比此值更大,将会自动转换为基于磁盘的表.  
  136. # 此限制是针对单个表的,而不是总和.  
  137. tmp_table_size = 64M  
  138. # 打开二进制日志功能.  
  139. # 在复制(replication)配置中,作为MASTER主服务器必须打开此项  
  140. # 如果你需要从你最后的备份中做基于时间点的恢复,你也同样需要二进制日志.  
  141. log-bin=mysql-bin  
  142. # 如果你在使用链式从服务器结构的复制模式 (A->B->C),  
  143. # 你需要在服务器B上打开此项.  
  144. # 此选项打开在从线程上重做过的更新的日志,  
  145. # 并将其写入从服务器的二进制日志.  
  146. #log_slave_updates  
  147. # 打开全查询日志. 所有的由服务器接收到的查询 (甚至对于一个错误语法的查询)  
  148. # 都会被记录下来. 这对于调试非常有用, 在生产环境中常常关闭此项.  
  149. #log  
  150. # 将警告打印输出到错误log文件.  如果你对于MySQL有任何问题  
  151. # 你应该打开警告log并且仔细审查错误日志,查出可能的原因.  
  152. #log_warnings  
  153. # 记录慢速查询. 慢速查询是指消耗了比 “long_query_time” 定义的更多时间的查询.  
  154. # 如果 log_long_format 被打开,那些没有使用索引的查询也会被记录.  
  155. # 如果你经常增加新查询到已有的系统内的话. 一般来说这是一个好主意,  
  156. log_slow_queries  
  157. # 所有的使用了比这个时间(以秒为单位)更多的查询会被认为是慢速查询.  
  158. # 不要在这里使用”1″, 否则会导致所有的查询,甚至非常快的查询页被记录下来(由于MySQL 目前时间的精确度只能达到秒的级别).  
  159. long_query_time = 2  
  160. # 在慢速日志中记录更多的信息.  
  161. # 一般此项最好打开.  
  162. # 打开此项会记录使得那些没有使用索引的查询也被作为到慢速查询附加到慢速日志里  
  163. log_long_format  
  164. # 此目录被MySQL用来保存临时文件.例如,  
  165. # 它被用来处理基于磁盘的大型排序,和内部排序一样.  
  166. # 以及简单的临时表.  
  167. # 如果你不创建非常大的临时文件,将其放置到 swapfs/tmpfs 文件系统上也许比较好  
  168. # 另一种选择是你也可以将其放置在独立的磁盘上.  
  169. # 你可以使用”;”来放置多个路径  
  170. # 他们会按照roud-robin方法被轮询使用.  
  171. #tmpdir = /tmp  
  172. # ***  复制有关的设置  
  173. # 唯一的服务辨识号,数值位于 1 到 2^32-1之间.  
  174. # 此值在master和slave上都需要设置.  
  175. # 如果 “master-host” 没有被设置,则默认为1, 但是如果忽略此选项,MySQL不会作为master生效.  
  176. server-id = 1  
  177. # 复制的Slave (去掉master段的注释来使其生效)  
  178. #  
  179. # 为了配置此主机作为复制的slave服务器,你可以选择两种方法:  
  180. #  
  181. # 1) 使用 CHANGE MASTER TO 命令 (在我们的手册中有完整描述) -  
  182. #    语法如下:  
  183. #  
  184. #    CHANGE MASTER TO MASTER_HOST=<host>MASTER_PORT=<port>,  
  185. #    MASTER_USER=<user>MASTER_PASSWORD=<password> ;  
  186. #  
  187. #    你需要替换掉 <host><user><password> 等被尖括号包围的字段以及使用master的端口号替换<port> (默认3306).  
  188. #  
  189. #    例子:  
  190. #  
  191. #    CHANGE MASTER TO MASTER_HOST=’125.564.12.1′, MASTER_PORT=3306,  
  192. #    MASTER_USER=’joe’, MASTER_PASSWORD=’secret’;  
  193. #  
  194. # 或者  
  195. #  
  196. # 2) 设置以下的变量. 不论如何, 在你选择这种方法的情况下, 然后第一次启动复制(甚至不成功的情况下,  
  197. #     例如如果你输入错密码在master-password字段并且slave无法连接),  
  198. #    slave会创建一个 master.info 文件,并且之后任何对于包含在此文件内的参数的变化都会被忽略  
  199. #    并且由 master.info 文件内的内容覆盖, 除非你关闭slave服务, 删除 master.info 并且重启slave 服务.  
  200. #    由于这个原因,你也许不想碰一下的配置(注释掉的) 并且使用 CHANGE MASTER TO (查看上面) 来代替  
  201. #  
  202. # 所需要的唯一id号位于 2 和 2^32 - 1之间  
  203. # (并且和master不同)  
  204. # 如果master-host被设置了.则默认值是2  
  205. # 但是如果省略,则不会生效  
  206. #server-id = 2  
  207. #  
  208. # 复制结构中的master - 必须  
  209. #master-host = <hostname>  
  210. #  
  211. # 当连接到master上时slave所用来认证的用户名 - 必须  
  212. #master-user = <username>  
  213. #  
  214. # 当连接到master上时slave所用来认证的密码 - 必须  
  215. #master-password = <password>  
  216. #  
  217. # master监听的端口.  
  218. # 可选 - 默认是3306  
  219. #master-port = <port>  
  220. # 使得slave只读.只有用户拥有SUPER权限和在上面的slave线程能够修改数据.  
  221. # 你可以使用此项去保证没有应用程序会意外的修改slave而不是master上的数据  
  222. #read_only  
  223. #*** MyISAM 相关选项  
  224. # 关键词缓冲的大小, 一般用来缓冲MyISAM表的索引块.  
  225. # 不要将其设置大于你可用内存的30%,  
  226. # 因为一部分内存同样被OS用来缓冲行数据  
  227. # 甚至在你并不使用MyISAM 表的情况下, 你也需要仍旧设置起 8-64M 内存由于它同样会被内部临时磁盘表使用.  
  228. key_buffer_size = 32M  
  229. # 用来做MyISAM表全表扫描的缓冲大小.  
  230. # 当全表扫描需要时,在对应线程中分配.  
  231. read_buffer_size = 2M  
  232. # 当在排序之后,从一个已经排序好的序列中读取行时,行数据将从这个缓冲中读取来防止磁盘寻道.  
  233. # 如果你增高此值,可以提高很多ORDER BY的性能.  
  234. # 当需要时由每个线程分配  
  235. read_rnd_buffer_size = 16M  
  236. # MyISAM 使用特殊的类似树的cache来使得突发插入  
  237. # (这些插入是,INSERT … SELECT, INSERT … VALUES (…), (…), …, 以及 LOAD DATA  
  238. # INFILE) 更快. 此变量限制每个进程中缓冲树的字节数.  
  239. # 设置为 0 会关闭此优化.  
  240. # 为了最优化不要将此值设置大于 “key_buffer_size”.  
  241. # 当突发插入被检测到时此缓冲将被分配.  
  242. bulk_insert_buffer_size = 64M  
  243. # 此缓冲当MySQL需要在 REPAIR, OPTIMIZE, ALTER 以及 LOAD DATA INFILE 到一个空表中引起重建索引时被分配.  
  244. # 这在每个线程中被分配.所以在设置大值时需要小心.  
  245. myisam_sort_buffer_size = 128M  
  246. # MySQL重建索引时所允许的最大临时文件的大小 (当 REPAIR, ALTER TABLE 或者 LOAD DATA INFILE).  
  247. # 如果文件大小比此值更大,索引会通过键值缓冲创建(更慢)  
  248. myisam_max_sort_file_size = 10G  
  249. # 如果被用来更快的索引创建索引所使用临时文件大于制定的值,那就使用键值缓冲方法.  
  250. # 这主要用来强制在大表中长字串键去使用慢速的键值缓冲方法来创建索引.  
  251. myisam_max_extra_sort_file_size = 10G  
  252. # 如果一个表拥有超过一个索引, MyISAM 可以通过并行排序使用超过一个线程去修复他们.  
  253. # 这对于拥有多个CPU以及大量内存情况的用户,是一个很好的选择.  
  254. myisam_repair_threads = 1  
  255. # 自动检查和修复没有适当关闭的 MyISAM 表.  
  256. myisam_recover  
  257. # 默认关闭 Federated  
  258. skip-federated  
  259. # *** BDB 相关选项 ***  
  260. # 如果你运行的MySQL服务有BDB支持但是你不准备使用的时候使用此选项. 这会节省内存并且可能加速一些事.  
  261. skip-bdb  
  262. # *** INNODB 相关选项 ***  
  263. # 如果你的MySQL服务包含InnoDB支持但是并不打算使用的话,  
  264. # 使用此选项会节省内存以及磁盘空间,并且加速某些部分  
  265. #skip-innodb  
  266. # 附加的内存池被InnoDB用来保存 metadata 信息  
  267. # 如果InnoDB为此目的需要更多的内存,它会开始从OS这里申请内存.  
  268. # 由于这个操作在大多数现代操作系统上已经足够快, 你一般不需要修改此值.  
  269. # SHOW INNODB STATUS 命令会显示当先使用的数量.  
  270. innodb_additional_mem_pool_size = 16M  
  271. # InnoDB使用一个缓冲池来保存索引和原始数据, 不像 MyISAM.  
  272. # 这里你设置越大,你在存取表里面数据时所需要的磁盘I/O越少.  
  273. # 在一个独立使用的数据库服务器上,你可以设置这个变量到服务器物理内存大小的80%  
  274. # 不要设置过大,否则,由于物理内存的竞争可能导致操作系统的换页颠簸.  
  275. # 注意在32位系统上你每个进程可能被限制在 2-3.5G 用户层面内存限制,  
  276. # 所以不要设置的太高.  
  277. innodb_buffer_pool_size = 2G  
  278. # InnoDB 将数据保存在一个或者多个数据文件中成为表空间.  
  279. # 如果你只有单个逻辑驱动保存你的数据,一个单个的自增文件就足够好了.  
  280. # 其他情况下.每个设备一个文件一般都是个好的选择.  
  281. # 你也可以配置InnoDB来使用裸盘分区 - 请参考手册来获取更多相关内容  
  282. innodb_data_file_path = ibdata1:10M:autoextend  
  283. # 设置此选项如果你希望InnoDB表空间文件被保存在其他分区.  
  284. # 默认保存在MySQL的datadir中.  
  285. #innodb_data_home_dir = <directory>  
  286. # 用来同步IO操作的IO线程的数量. This value is  
  287. # 此值在Unix下被硬编码为4,但是在Windows磁盘I/O可能在一个大数值下表现的更好.  
  288. innodb_file_io_threads = 4  
  289. # 如果你发现InnoDB表空间损坏, 设置此值为一个非零值可能帮助你导出你的表.  
  290. # 从1开始并且增加此值知道你能够成功的导出表.  
  291. #innodb_force_recovery=1  
  292. # 在InnoDb核心内的允许线程数量.  
  293. # 最优值依赖于应用程序,硬件以及操作系统的调度方式.  
  294. # 过高的值可能导致线程的互斥颠簸.  
  295. innodb_thread_concurrency = 16  
  296. # 如果设置为1 ,InnoDB会在每次提交后刷新(fsync)事务日志到磁盘上,  
  297. # 这提供了完整的ACID行为.  
  298. # 如果你愿意对事务安全折衷, 并且你正在运行一个小的食物, 你可以设置此值到0或者2来减少由事务日志引起的磁盘I/O  
  299. # 0代表日志只大约每秒写入日志文件并且日志文件刷新到磁盘.  
  300. # 2代表日志写入日志文件在每次提交后,但是日志文件只有大约每秒才会刷新到磁盘上.  
  301. innodb_flush_log_at_trx_commit = 1  
  302. # 加速InnoDB的关闭. 这会阻止InnoDB在关闭时做全清除以及插入缓冲合并.  
  303. # 这可能极大增加关机时间, 但是取而代之的是InnoDB可能在下次启动时做这些操作.  
  304. #innodb_fast_shutdown  
  305. # 用来缓冲日志数据的缓冲区的大小.  
  306. # 当此值快满时, InnoDB将必须刷新数据到磁盘上.  
  307. # 由于基本上每秒都会刷新一次,所以没有必要将此值设置的太大(甚至对于长事务而言)  
  308. innodb_log_buffer_size = 8M  
  309. # 在日志组中每个日志文件的大小.  
  310. # 你应该设置日志文件总合大小到你缓冲池大小的25%~100%  
  311. # 来避免在日志文件覆写上不必要的缓冲池刷新行为.  
  312. # 不论如何, 请注意一个大的日志文件大小会增加恢复进程所需要的时间.  
  313. innodb_log_file_size = 256M  
  314. # 在日志组中的文件总数.  
  315. # 通常来说2~3是比较好的.  
  316. innodb_log_files_in_group = 3  
  317. # InnoDB的日志文件所在位置. 默认是MySQL的datadir.  
  318. # 你可以将其指定到一个独立的硬盘上或者一个RAID1卷上来提高其性能  
  319. #innodb_log_group_home_dir  
  320. # 在InnoDB缓冲池中最大允许的脏页面的比例.  
  321. # 如果达到限额, InnoDB会开始刷新他们防止他们妨碍到干净数据页面.  
  322. # 这是一个软限制,不被保证绝对执行.  
  323. innodb_max_dirty_pages_pct = 90  
  324. # InnoDB用来刷新日志的方法.  
  325. # 表空间总是使用双重写入刷新方法  
  326. # 默认值是 “fdatasync”, 另一个是 “O_DSYNC”.  
  327. #innodb_flush_method=O_DSYNC  
  328. # 在被回滚前,一个InnoDB的事务应该等待一个锁被批准多久.  
  329. # InnoDB在其拥有的锁表中自动检测事务死锁并且回滚事务.  
  330. # 如果你使用 LOCK TABLES 指令, 或者在同样事务中使用除了InnoDB以外的其他事务安全的存储引擎  
  331. # 那么一个死锁可能发生而InnoDB无法注意到.  
  332. # 这种情况下这个timeout值对于解决这种问题就非常有帮助.  
  333. innodb_lock_wait_timeout = 120  
  334. [mysqldump]  
  335. # 不要在将内存中的整个结果写入磁盘之前缓存. 在导出非常巨大的表时需要此项  
  336. quick  
  337. max_allowed_packet = 16M  
  338. [mysql]  
  339. no-auto-rehash  
  340. # 仅仅允许使用键值的 UPDATEs 和 DELETEs .  
  341. #safe-updates  
  342. [isamchk]  
  343. key_buffer = 512M  
  344. sort_buffer_size = 512M  
  345. read_buffer = 8M  
  346. write_buffer = 8M  
  347. [myisamchk]  
  348. key_buffer = 512M  
  349. sort_buffer_size = 512M  
  350. read_buffer = 8M  
  351. write_buffer = 8M  
  352. [mysqlhotcopy]  
  353. interactive-timeout  
  354. [mysqld_safe]  
  355. # 增加每个进程的可打开文件数量.  
  356. # 警告: 确认你已经将全系统限制设定的足够高!  
  357. # 打开大量表需要将此值设高 j  
  358. open-files-limit = 8192  

Tags: mysql, 配置, 翻译

[转载]使用IIS 7.0 PowerShell 创建web站点,Web应用,虚拟路径和应用程序池

在博客园代震军BLOG 上,他翻译了:使用IIS 7.0 PowerShell 创建web站点,Web应用,虚拟路径和应用程序池,因为可能会在以后使用windows服务器,所以相对比较关心一下,也就复制了一份做为资料。

原文网址:http://www.cnblogs.com/daizhj/archive/2008/12/22/1352019.html
作者:代震军(我看原文最后还有个人信息,也一并转载,省得说我复制部份,呵呵)

原文如下:

      原文链接:Creating Web-Sites, Web Applications, Virtual Directories and Application Pools

      在本文中您将学会如何去创建WEB站点,Web Applications, 虚拟目录和应用程序池.

介绍

      IIS PowerShell 名空间包括诸如: Web-Sites, Apps, Virtual Directories 和 Application Pools. 

使用内置的PowerShell cmdlets可以很容易创建一个名空间项和管理该项.

创建Web站点

      如果您熟悉PowerShell 的话,就会知道在各种PowerShell 名空间下New-Item cmdlet 通常被用于创建

新项。 举个例子,当前命令 "New-Item c:\TestDirectory" 会创建一个新的文件夹 (尽管多数人使用New-Item

的别名命令 "MD" 或 "MKDIR" ). 在IIS 7.0 PowerShell 名空间下,New-Item 也常用于创建新的Web站点.

参数

      在创建一个文件系统路径时,您需要指定一个路径名称. 不巧的是当前创建WEB站点时这是不够的. 除了像

文件系统路径这样的参数之外,还需要network bindings. 下面的命令用于创建一个新的WEB站点并使用dir命令

进行显示:

 

PS IIS:\Sites> New-Item iis:\Sites\TestSite -bindings @{protocol="http";bindingInformation=":80:TestSite"-physicalPath c:\test

PS IIS:\Sites
> dir

Name             ID   State      Physical Path                  Bindings
----             --   -----      -------------                  --------
Default Web Site 1    Started    f:\inetpub\wwwroot             http *:80:
TestSite         
2    Started    c:\test                        http :80:TestSite 

 

     这里直接使用了 -physicalPath 参数. 然而您可能会问: -bindings 看起来咋这么复杂?.

     在构造时通常使用hashtable (在 这里 了解更多PowerShell hash tables信息). hash table 中的键值对表示一个

设置集合,该集合在IIS站点bindings section中会反射出相关属性:

 

<bindings>
        
<binding protocol="http" bindingInformation=":80:TestSite" />
</bindings> 

 

      现在我们找出了一个使用hash table的原因: IIS 配置是可以使用属性进行扩展的。 (查看 这里 了解更多信息) . 您

可以想像一下使用其它属性扩展 <binding> 元素节点.  hash table 的键值对提供了这种弹性.

      坦白说,该语法有一点复杂. 我们正在考虑在Tech Preview中封装一些典型任务:比如创建站点的方法或脚本。

删除站点

      下面是删除刚创建的站点.

PS IIS:\ >Remove-Item IIS:\Sites\TestSite 

创建Web Applications

    创建Web Applications 要比创建站点要容易. 下面: 

PS IIS:\> New-Item 'IIS:\Sites\Default Web Site\DemoApp' -physicalPath c:\test -type Application 
 

Name                     ApplicationPool          EnabledProtocols         PhysicalPath
----                     ---------------          ----------------         ------------
DemoApp                  DefaultAppPool           http                     c:\test 

 

     您仅需指定的一个参数是 type (-type) ,因为在一个站点下,您可能要创建一个Applications 或一个虚拟路径.

通过指定 -type 参数,就会告之 IIS Provider 要创建一个application.

 

     要删除这个 application 的话,也可以使用Remove-Item(见上面删除站点).  

创建虚拟目录

      要创建虚拟目录,您也要使用New-Item cmdlet. 下面会在指定站点(Default Web Site)下创建两个虚拟目录。

一个位于站点下,一个位于刚创建的 Web Application (DemoApp)下面.

 

 

PS IIS:\> New-Item 'IIS:\Sites\Default Web Site\DemoVirtualDir1' -type VirtualDirectory -physicalPath c:\test\virtualDirectory1

Name                                              PhysicalPath
----                                              ------------
DemoVirtualDir1                                   c:\test\virtualDirectory1


PS IIS:\
> New-Item 'IIS:\Sites\Default Web Site\DemoApp\DemoVirtualDir2' -type VirtualDirectory -physicalPath c:\test\virtualDirectory2

Name                                              PhysicalPath
----                                              ------------
DemoVirtualDir2                                   c:\test\virtualDirectory2

 

创建应用程序池

 

      创建应用程序池更简单. 仅需指定一个名称即可.

PS IIS:\> new-item AppPools\DemoAppPool

Name                     State
----                     -----
DemoAppPool              {}

      简单吧,不是吗? 现在让我们将这些知识点连起来做一个完整的方案.

将所有知识点连在一起

    在这个方案中,我们将执行下面这些步骤:

  1. 创建一系列的文件系统路径用于绑定站点, web applications 和虚拟文件。
  2. 向新创建的目录下拷贝一些简单的web内容。
  3. 创建一个新的应用程序池。
  4. 创建一个新的站点,一个新的 application 以及两个虚拟目录并将其绑到新创建的应用程序池上。
  5. 使用浏览器请求(访问这些内容)。

步骤 1: 创建目录

   我们使用 New-Item cmdlet 来创建新的文件系统目录. 执行下面命令 (如不想指定-type 参数的话,可使用'md'):

New-Item C:\DemoSite -type Directory

New
-Item C:\DemoSite\DemoApp -type Directory

New
-Item C:\DemoSite\DemoVirtualDir1 -type Directory

New
-Item C:\DemoSite\DemoVirtualDir2 -type Directory 

 

步骤 2: 拷贝内容

      现在向这些目录中写入一些 html 内容(文件):

Set-Content C:\DemoSite\Default.htm "DemoSite Default Page"

Set
-Content C:\DemoSite\DemoApp\Default.htm "DemoSite\DemoApp Default Page"

Set
-Content C:\DemoSite\DemoVirtualDir1\Default.htm "DemoSite\DemoVirtualDir1 Default Page"

Set
-Content C:\DemoSite\DemoVirtualDir2\Default.htm "DemoSite\DemoApp\DemoVirtualDir2 Default Page"

 

 

步骤 3: 创建新的应用程序池

     为站点创建一个新的应用程序池 'DemoAppPool' (如之前的例子中您也创建的话,请先删除它).  

New-Item IIS:\AppPools\DemoAppPool

Step 4: 创建新的站点, Web Applications 和虚拟目录并绑定到应用程序池上

     这里简化一下,我们创建 DemoSite, DemoApp 和两个虚拟目录:

      DemoVirtualDir1 绑定到DemoSite 下

      DemoVirtualDir2 绑定到DemoApp 下

     我们将DemoSite 和 DemoApp 绑定到之前创建的 DemoAppPool 上. 为了不与'Default Web Site' 冲突,

这里DemoSite 的端口设置为 8080: 

New-Item IIS:\Sites\DemoSite -physicalPath C:\DemoSite -bindings @{protocol="http";bindingInformation=":8080:"}

Set
-ItemProperty IIS:\Sites\DemoSite -name applicationPool -value DemoAppPool

New
-Item IIS:\Sites\DemoSite\DemoApp -physicalPath C:\DemoSite\DemoApp -type Application

Set
-ItemProperty IIS:\sites\DemoSite\DemoApp -name applicationPool -value DemoAppPool

New
-Item IIS:\Sites\DemoSite\DemoVirtualDir1 -physicalPath C:\DemoSite\DemoVirtualDir1 -type VirtualDirectory

New
-Item IIS:\Sites\DemoSite\DemoApp\DemoVirtualDir2 -physicalPath C:\DemoSite\DemoVirtualDir2 -type VirtualDirectory

 

     好,下面就要请求这些web 内容了。

步骤 5: 请求Web 内容

     当然,您可以打开浏览器并敲入地址 http://localhost:8080/ ,以及其它链接(上面已创建)。但本文是PowerShell

的walkthrough 所以我们使用 .NET WebClient classes 来实现这个请求:

 

$webclient = New-Object Net.WebClient

$webclient.DownloadString("http://localhost:8080/");

$webclient.DownloadString("http://localhost:8080/DemoApp");

$webclient.DownloadString("http://localhost:8080/DemoVirtualDir1");

$webclient.DownloadString("http://localhost:8080/DemoApp/DemoVirtualDir2");

If you feeling adventurous you can also use Internet Explorer object itself:

$ie = new-object -com InternetExplorer.Application

$ie.Visible = $true

$ie.Navigate(http://localhost:8080/);

 

总结

     本文中,您了解了如何使用PowerShell创建WEB站点, Web Applications, 虚拟目录和应用程序池.

除此之外,我们还使用 PowerShell 创建了一个功能(函数)化的完整方案.

 

     译者注: PowerShell Provider for IIS 7.0 (x86) - CTP2下载连接,请点击这里:)

     

     当然除了上面的方式来管理IIS站点之外,还可以使用Microsoft.Web.Administration(该dll位于"Windows\

System32\inetsrv目录下)。下面的PS脚本就是实现指量创建,删除等站点操作功能的:

 

function Setup-IIS
{
    
param([int]$NumSites)
    
for($i=0 ; $i -lt $NumSites ;  $i++)
    {
        
$Appfolder = "c:\inetpub\webroot\Site$i"
        
if (-not (test-path $Appfolder))
        {
            md 
$AppFolder -force | out-null
            
$defaultHTM = "$Appfolder\default.htm"
            echo 
"This is site $i" | out-file $defaultHTM
        }
    }
}
function Cleanup-IIS
{
    
param([int]$NumSites)
    [System.Reflection.Assembly]
::LoadWithPartialName("Microsoft.Web.Administration"

    
$mgr = new-object Microsoft.Web.Administration.serverManager 

    
for($i=0 ; $i -lt $NumSites ;  $i++)
    {
        
$AppPoolName= "AppPool_$i"
        
$SiteName = "WebSite_$i"
        
$Appfolder = "c:\inetpub\webroot\Site$i"
        
$mgr.Sites.Remove($mgr.Sites[$SiteName])
        
$mgr.ApplicationPools.Remove($mgr.ApplicationPools[$AppPoolName])
        
if (test-path $Appfolder)
        {
            rd 
$Appfolder -recurse
        }
    }
    
$mgr.CommitChanges()


function Makewebs-IIS
{
    
param([int]$NumSites

    
$start = get-date
    [System.Reflection.Assembly]
::LoadWithPartialName("Microsoft.Web.Administration"| out-null 

    
$mgr = new-object Microsoft.Web.Administration.serverManager 

    
for($i=0 ; $i -lt $NumSites ;  $i++)
    {
        
$AppPoolName= "AppPool_$i"
        
$SiteName = "WebSite_$i"
        
$portNumber = 8000 + $i
        
$mgr.ApplicationPools.Add($AppPoolName| out-null
        
$Appfolder = "c:\inetpub\webroot\Site$i" 

        
$site = $mgr.Sites.Add($SiteName,$Appfolder,$portNumber)
        
$site.ServerAutoStart = $true 

        
$app = $site.Applications[0]
        
$app.ApplicationPoolName = $AppPoolName
        
#$site.Bindings.Add("*:$portNumber:", "http") | out-null            
    }
    
$mgr.CommitChanges() 

    
$duration = [DateTime]::Now - $start
    write
-host "Total seconds: " + $duration.TotalSeconds.Tostring()
}

 

     我们只要以“管理员身份”运行Powershell,并在命令行下输入如下(以创建站点为例)代码:   

>Makewebs-IIS 10

 

     这样就会批量创建10web站点了:)

     好了,今天的内容就先到这里了。


     原文链接:http://www.cnblogs.com/daizhj/archive/2008/12/10/1352019.html

     作者: daizhj, 代震军

     Tags: iis7,powershell,powershell provider

     网址: http://daizhj.cnblogs.com/

————EOF————

由于PowerShell将会成为未来CMD的替代品,对于它,有很多人都在关注着,也曾经下载了一个关于PowerShell的介绍和简单使用 的PDF,(在家里),等有空的时候也一并上传

 

Tags: iis, power shell, 翻译, 转载

haohappy的努力

国内的PHP程序员对于haohappy应该算是比较熟悉的一位吧,很早的PHP手册翻译,他就参与了其中,《Programming PHP》第二版,就是他进行翻译的,而且他在phpchina上开了专版,说是提交了多少个勘误的,可以送一本修订版或者另一本PHP的杂志,然而我在提交了十多个BUG后,因为工作关系被我放弃了。

不过那段时间,我确实是对照了原版和他的翻译版差不多看了一遍。虽然有一些翻译在语义上和我有些区别,但这毕竟是没有办法的事情。每个人对于一件事物的理解都会有偏差,无所谓谁对谁错(当然也可能确实是我理解错了)。

对于PHP的贡献,他不止这一点,他在看到目前PHP手册没人翻译后,终于忍不住了,开始下决心对手册再次进行翻译:http://blog.csdn.net/Haohappy2004/archive/2008/12/13/3511730.aspx,http://blog.csdn.net/Haohappy2004/archive/2008/12/14/3514421.aspx;

想期待他翻译的朋友要等一段时间了,在这段时间内,大家可以去CU找honestQiao的新版本进行下载:http://bbs.chinaunix.net/thread-999247-1-1.html,或者找本站的置顶贴进行下载。

等新版的翻译好了,我也会同步到本地。一来可以自用,二来可以为使用网通的朋友们下载进行提速。哈哈

Tags: php, haohappy, 手册, manual, 翻译