返回列表 发帖

Windows下的 Apache + PHP + MySql + 虚拟主机 设置全功略

前言:这一篇是我亲身配置的经历,希望大家喜欢,现在网络的教程中,PHP运行在Apache“模块”方式的文章中都少了最重要的一个步骤,也就是说按其方法配置PHP不能运行,有的太过简单,有的太过复杂,所以花了点时间整理一下。& D! _5 L7 R# \* @

' t! \! T+ Y. v- v# ~5 v( w! i2 w一、安装PHP47 Y* _6 Y- s+ s! M2 S
我们需要安装的是win32版本,下载当然也是win32版本 php4.3.0-win32.zip) m% q8 s) @& ^. w% |5 @4 L$ C3 H
1.下载后,解压到c:\php目录下。! F8 L9 C0 ]& \0 d
2. 把c:\php目录下的php4ts.dll php4ts.lib文件都拷贝到c:\winnt\system32目录下(即window 2000系统目录下的system32目录)。0 b, ~# j3 ~  `  J+ s
3. 修改php.ini文件,把c:\php目录下的php.ini-dist文件改名为php.ini 用记事本或其它可编辑文本的软件把它打开。3 f0 Q6 ]8 g3 v+ s( u
3.1找到register_globals = Off 改为register_globals = On
" J4 y7 A. B* `: u1 w这一步是为了使部分旧的PHP程序能正常运行;: @# F- P( h  c7 O3 |6 ]
3.2找到 extension_dir = ./ 把它改为extension_dir = c:\php\extensions" f- k! z+ W- c  A. m
以下内容新手请略过
3 ?# w3 K( ?" x# c: _% ]===============新手略过开开始================7 A( M. z* ~- G, N. {
刚刚的修改是指定php4扩展dll文件存放的路径 由于php4默认所带的php.ini-dist中,是关掉了所有的扩展dll的功能( Windows Extensions) $ E! A4 P2 J4 p3 A. S* W/ |. h
;extension=php_bz2.dll! z& F  t: p# y" Q
;extension=php_cpdf.dll
8 h  p$ G# l) Y0 z% Z1 J;extension=php_crack.dll
* w/ |9 e7 s' d8 s" ~;extension=php_curl.dll9 F' w% u7 V2 F- a9 H* R
.....
# R& s) G% H* {2 C要做的就是把extension前面的分号去掉就行了,当然这样是不够的。因为有些extension在我们的系统是不能使用的,比如系统中没有安装 sql server的话,那么extension=php_mssql.dll就要用;(分号)把它注释掉;
" a& \( G0 A0 n其中,PHP4带了两个GD扩展,请选用一个,另一个先用分号注释掉,以免出现函数无法注册的错误;
8 Y# `$ F# g! e5 L& K; ]如下面' r3 u+ \  }4 n" `( ]* _
extension=php_gd.dll; [) V! s4 {- e! d8 J
;extension=php_gd2.dll2 [$ o" i4 l: d' u7 x  H8 [, p
按实际所须的extension=php_xxxx.dll前面的分号都去掉。% R; a* G6 R1 t* s2 G0 Y% z
=============新手略过结束================; J3 X- `. C; J! @! W1 b
3.3 找到session.save_path,把这一项改为 session.save_path = c:\tmp; z3 I: M* n% j6 u2 L6 u; }, r
并在C盘建立一个TMP目录; D) V( _- j6 }% Z% z7 n7 ^
3.4记得要保存刚刚的修改 并把php.ini文件放置在c:\winnt目录下。
. n+ z' H8 R, ]4 p, }7 g. }================================================3 \4 ]4 W% z7 s7 a! N: n
二、安装MySql7 i: ]! C7 t4 i) y- \( d
安装MySql 当然,我在MySql.com 下载的MySql是一个压缩包,要先解压出来;再点setup.exe安装;+ B( l3 P9 q1 A0 G- Q
按默认安装,即安装在c:\MySql下,安装完后,按“开始”菜单中的“运行”打进cmd进入dos窗口,进到c:\MySql\bin 目录;2 D  x! a1 U! v. Q! N
运行mysqld-nt --install (将会出现一个Dos窗口,随即自动关闭!如果没有出任何信息,即安装到service成功!)
8 h7 B. H* z1 ]- b7 ~% S1 w从“开始”菜单“程序”=》“管理工具”=》“服务”,打开后,将会找到MySql,点击mouse右键 选择启动 回到刚刚的Dos窗口
; ~, v1 M% q* Z0 t: M3 b即c:\MySql\bin目录下 运行mysqladmin -u root password 123 即把root用户的密码设置为123 这一步,如果没有出错,说明初始化root密码成功;
, E8 }" N$ I' T当然从本机进入MySql是不需要用户名和密码,但用php 程序或是其它程序连接MySql时就要用到;$ k, B2 c' _& l$ m, v- L, E
测试进入 第一种方法:直接动行MySql进入MySql 的dos管理状态;: i! ~7 S7 o1 q+ G
第二种方法:运行MySql -uroot -p MySql将会提示让您输入密码,密码当然就是刚刚设置的123(当然,得按设置的密码喽,不一定得设置是123)
+ t2 v: K% C( |0 s& {出现: C:\MySql\bin>MySql -uroot -p Enter password: ********** Welcome to the MySql monitor. Commands end with ; or \g. Your MySQL connection id is 4 to server version: 3.27.44-nt Type 'help;' or '\h' for help. Type '\c' to clear the buffer. mysql>
# `' _3 D. C# Y% x7 ?即安装MySql成功。
2 `; ]9 X( I1 |/ w0 c1 C$ Y2 j==========================================
$ w0 F0 @& \* [1 U( R- q三、安装Apache 1.3.x 及 PHP运行设置6 @. H, Q, o. u
1.首先下载Apache,Apache软件一般叫作apache_1_3_x.win32.exe。运行它。它会问你将Apache安装到什么地方,为他系统安全及操作容易,我们不要使用默认路径,你可以设为c:\Apache或C:\,因为马上你就要修改它的配置文件。
. ]! d$ C( w" E3 d, y: J; Z) \如果安装没出什么错的话,Apache就可以用了。有很多readme文件可供参考,但仅有一个文件是讲Win32平台的,包括Window 9x和Windows NT。
+ N8 [6 r9 F& l  s  w有两种方式使 PHP 工作于 Windows 下的 Apache 1.3.x。一种是 CGI 方式(php.exe),另一种是使用 Apache 模块 DLL。不管哪种方式都需要停止 Apache,编辑 httpd.conf 来配置 Apache 以加入PHP支持。 : A* O: ~2 y4 `6 v( @  E
值得在这里指出现在 Windows 下的 SAPI 模块更加稳定了,我们推荐使用模块方式,因为更加透明和安全。 4 L9 ~' `/ J. E9 X7 X7 H
尽管有几种不同方法在 Apache 下配置 PHP,但是对新手来说还是非常简单易用的。有关更多的 httpd.conf 配置指令请参考 Apache 文档。
- T9 V: Y; K- O" @( n, R如果你按照手工安装步骤一节中的说明把 PHP 解压缩到了 c:\php\ 目录下,那么需要加入以下三行到 Apache 配置文件中以 CGI 方式安装: : z: m! k& S% }( D/ L: f
/ J2 I: @# k# U6 ]* J
ScriptAlias /php/ "c:/php/" * b* M7 \$ q' |
AddType application/x-httpd-php .php .phtml
- y) E" B. g$ p" z! kAction application/x-httpd-php "/php/php.exe"
4 K2 j' j/ @* o注意上面的第二行在原来的 httpd.conf 中就有的,不过被注释了。还有记住用你自己放置 PHP 的路径替换 c:/php/。 4 |: W' C3 d' p# u6 C0 [
% D- J7 g/ \) d' d* H4 ^8 O
警告 & X9 r3 v) f* S7 z4 [8 y' t
在 CGI 方式下,你的服务器可能会受到几种攻击的影响。请学习如何防止攻击。
6 ^9 i4 }( O4 h
& l" L1 F1 Z6 O( g* J) `如果你想在 Apache 中用模块方式使用 PHP,确认把 php4ts.dll 拷贝到 windows/system(Windows 9x/Me)或者 winnt/system32(Windows NT/2000)或者 windows/system32(Windows XP)目录下,覆盖原来的文件。然后在 Apache 配置文件 httpd.conf 中加入以下两行: ! J2 x8 i* U" ?7 T

& T3 F: B0 A1 a: y( u用自己喜爱的编辑器打开 httpd.conf,找到 LoadModule 指令的部分,在其列表的最后部分加上如下一行,$ Q; |2 |& `+ k+ {: g
对 PHP 4:8 g# X! f4 W, O6 U6 d4 W# g
LoadModule php4_module c:/php/sapi/php4apache.dll/ t, a- a' u) T$ ?( z( M
对 PHP 5:" G% Q$ D4 I  ?& ^3 c) Y9 ]
LoadModule php5_module "c:/php/sapi/php5apache.dll"' e" P6 G* C3 \+ a2 c4 h
你可能发现在用 Windows Installer 安装了 Apache 之后需要为用 AddModule 指令定义 mod_php4.c。尤其是在定义了 ClearModuleList 指令时格外重要,向下滚动几行可以找到该指令。你将会看到 AddModule 项目的列表,在列表的最后加上这一行:1 m: V5 ^5 v2 E  U& Z0 r
AddModule mod_php4.c
9 P) `1 B9 p7 a+ e$ Q对于 PHP 5 则为:
8 i7 f/ |6 h7 S( Y" O8 R+ ], v$ q, }AddModule mod_php5.c1 i  K) G1 A/ t' G8 S9 F
搜索类似 # AddType allows you to tweak mime.types 的短语,你会找到一些 AddType 的项目,并且在列表的最后有这一行: AddType application/x-httpd-php .php。你可以在这里选择任何想用 PHP 解析的后缀。.php 只是所建议的一个。甚至可以包括 .html,也可以加上 .php3 来向下兼容。 / B# X7 v  g" K5 Q5 w0 D% q

, I( X/ N1 M3 `修改了配置文件之后记住重新启动 Apache,例如如果你的 Apache 是作为 Windows 的服务安装的,NET STOP APACHE 后面接上 NET START APACHE。或者用你通常使用的快捷方式。
2 S" Y  d" |: O- @. T; t4 |有两种方式使用源程序语法彩色显示特色,但是取决于你的安装方法。如果你配置了 Apache 的 SAPI 模块方式使用 PHP,那么在 httpd.conf 中(和插入 AddType application/x-httpd-php .php 是同一个位置)加入下面一行就可以使用本特色:AddType application/x-httpd-php-source .phps。 6 S- I0 V( O4 J; O: o& e: Z
如果你用 CGI 方式使用 PHP,那你需要用 show_source() 函数。建立一个 PHP 文件,加入以下代码:<?php show_source ("original_php_script.php"); ?>。用你想要显示源代码的文件名替换掉 original_php_script.php。 6 d2 B' D; f- V4 U4 A
注: 在 Windows-Apache 组合中,所有路径中的反斜线例如 "c:\directory\file.ext" 都必须转换成斜线,如 "c:/directory/file.ext"。
- f; z. z; h- [% ?& m============================================( b, V  V1 r/ \# E3 _# F
四、实现Apache虚拟主机的两种方案
7 B* Y0 x5 Q% `/ w, B简介:这里说的虚拟主机是指在一台机器上仅运行一个httpd后台程序 3 w( r9 A; I; j1 w- B0 h
支持多个Apache服务器,如在公司财务部门有一台web服务器,名为
1 F2 ^# H4 [% G( H( n! M! gaccount.yourdomain.com,同时又想为sales部门建立网站,网站内容也 & B; L6 D- N$ S* |
放在该机器上,通过sales.yourdomain.com访问,这就要用到虚拟主机
1 T1 g/ y# _% ]! a设置。
% i/ }7 J9 J# L! d8 a. ]设置Apache虚拟主机通常有两种方案 # a' R4 E7 ^3 L: ^8 t
1.基于IP的虚拟主机 3 D! {6 R" J0 X$ q# j% p
  这种方式需要在机器上设置IP别名,象上面的例子,在一台机器的
) n, x$ R; a( W网卡上绑定多个IP地址去服务多个虚拟主机。 ' o8 [! ~4 x, A+ E( l
若该机器的IP地址为192.168.0.1(account.yourdomain.com),首先 2 v7 T/ V" z- q
你要设置IP别名(假设用192.168.0.2作为其别名IP)。加下面的行到 9 x- q8 M, F" ]3 Z3 v% z' o
/etc/rc.d/rc.local,确保每次启动后自动运行。
6 E' S5 m. E4 o; A: w#/sbin/ifconfig eth0:0 192.168.0.2 netmask 255.255.255.0 broadcast \ * @( T- Y) q' `" [9 t
192.168.0.255 up 8 D5 Y5 A) n# f/ _' C0 `
#/sbin/route add -host 192.168.0.2 eth0:0 : ^- i! }# H3 Q& t$ U4 B& I
然后你需要设置/etd/httpd/conf/httpd.conf文件:
' C9 y! K2 u$ Y9 {1 u<VirtualHost 192.168.0.2> ; u3 D. n* I1 ?& ~3 k" Y
ServerAdmin webmaster@yourdomain.com / W0 s1 e" O0 ?6 O1 [1 {( {
DocumentRoot /home/httpd/sales.yourdomain.com - O' y9 L1 c. u
ServerName sales.yourdomain.com + b( }* M* @: r- ~! F, ^
ErrorLog /var/log/httpd/sales.yourdomain.com/error_log
5 }4 S8 G* j2 TTransferLog /var/log/httpd/sales.yourdomain.com/access_log 9 A5 {, i: P2 i. _
</VirtualHost> ) y  \6 Y7 r4 j( I. H( a4 ]  d
然后分别创建目录
" W" v2 q( a( a  B# @/home/httpd/sales.yourdomain.com, & x+ j+ q( f* z. ^! ^# I+ Q
/var/log/httpd/sales.yourdomain.com * u$ L9 B6 U5 R3 m9 {' A" {6 V. b
放相应的网站内容到目录/home/httpd/sales.yourdomain.com下即可,并确保 ( r% h; x, t( y8 B5 R$ V
你内部的DNS指定sales.yourdomain.com的A记录到IP地址192.168.0.2 。
/ A+ ~& Y( n, L% k% J6 g3 A注:这种基于IP的虚拟主机有一个缺点,就是你需要更多的IP地址去服务各自的
# u" I  n+ s" w) l. d虚拟主机,如果你仅仅有一个IP地址,那么你将可以考虑用基于名字的虚拟主机 * n+ d# [' \6 y( J) t$ u. U" C- w
方案。
8 |) ]7 E. \3 {; i+ Q; w
, p& H0 Z: E. ?( u2.基于名字的虚拟主机: 3 }8 `# f: B# ?+ g, f# u" N
  它的优势就是不需要更多的IP地址,容易配置,不需要其它软硬件,现代的
7 T1 D' p1 d! t0 o浏览器大多都支持这种方式。与基于IP的虚拟主机一样,你需要编辑文件
2 {5 {. U& @9 D/ S" V* {/etc/httpd/conf/httpd.conf
/ r  O# ?4 l9 Y* [NameVirtualHost 192.168.0.1 . {) X# s6 h2 r7 k& q3 O2 {. s
<VirtualHost 192.168.0.1>
  @5 Q) S$ o6 B6 \: |5 D$ C; HServerAdmin webmaster@yourdomain.com 6 p' K2 u8 r; R0 d; J; t
DocumentRoot /home/httpd/sales.yourdomain.com ' \" i+ r- _: N
ServerName sales.yourdomain.com
! s' R. e  M. s# I9 bErrorLog /var/log/httpd/sales.yourdomain.com/error_log ) x7 q( W8 x, t9 m, L( `2 t
TransferLog /var/log/httpd/sales.yourdomain.com/access_log
8 U3 G* z# e' e& d, p! `& S# t</VirtualHost> 6 E8 U9 z+ z% N1 c% Y
<VirtualHost 192.168.0.1>
# `# B7 h4 d% N( _! s9 D9 ~: dServerAdmin webmaster@yourdomain.com * w3 K! t+ n2 }; k
DocumentRoot /home/httpd/hr.yourdomain.com ( a6 |& Y' f4 G$ E* x/ L
ServerName hr.yourdomain.com 3 f# M* i' p5 X
ErrorLog /var/log/httpd/hr.yourdomain.com/error_log
/ R$ f  V) X* r6 b; rTransferLog /var/log/hr.yourdomain.com/access_log
: u+ S" N) F( j" ]0 F1 g" T</VirtualHost> & A/ W6 A* o( q7 V4 I
注: 你需要加NameVirtualHost 指示在最前面,下面依次为各个虚拟主机, & a2 r! V) k$ u1 v; N0 J
为了让它工作,你需要把sales.yourdomain.com, hr.yourdomain.com的DNS
/ j/ c& m7 r+ @8 |1 |都指向IP地址192.168.0.1
& p" }- C# I: j+ b. T! [# h% y1 J, p上面的两种都将工作,如果是在外部网段,在互联网上提供WWW服务,你可能
, Q0 Q4 X& V, L+ z7 Q) H: B没有足够的真实IP地址来支持多个虚拟主机,便可用基于名字的虚拟主机方案, ) _/ x1 }4 n+ R) Z7 G7 w
若是在内部网段上,你有较多的内部保留IP地址,将没有太大的区别。 ) F0 A. G' t/ B  f8 T, s- A
提示:上面所提到的相对目录可以用绝对路径代替,如: % a- H. M! I: ?+ b. _- }
/home/httpd/hr.yourdomain.com 可改为 D:/Inetpub/wwwroot9 T3 _. h$ Z  A2 T9 D
==================END=======================, N- \, j+ y7 }
这只是入门,只能保证你的WEB服务器能正常运,要了解更多的 PHP 及 Apache 的详细设置,还要靠大家更加深入的实践...

另外可以用一个安装包安装全部PHP软件
8 B! @$ O- }/ C6 l& M: I下载地址:
8 |5 ~( U; \1 H$ |http://webclub.net.cn/data/phpStudy1.2.5.rar

TOP

亲娘那
4 G2 P6 j- i7 O- e- `  l2 E4 _  @1 H怎么没图哈! Q, T9 [4 }5 I+ T  [6 S* E
应该图文结合啊
5 f5 B6 F5 T$ _( `, W  w; @

TOP

返回列表
【捌玖网络】已经运行: