返回列表 发帖

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

前言:这一篇是我亲身配置的经历,希望大家喜欢,现在网络的教程中,PHP运行在Apache“模块”方式的文章中都少了最重要的一个步骤,也就是说按其方法配置PHP不能运行,有的太过简单,有的太过复杂,所以花了点时间整理一下。
5 n9 p" ?% S7 k$ x
+ F6 s" m: u/ W  s一、安装PHP4; h4 C$ P# r. m5 m9 i0 j! L# r) i
我们需要安装的是win32版本,下载当然也是win32版本 php4.3.0-win32.zip
% n/ u% p2 f; p- \' }0 }1.下载后,解压到c:\php目录下。0 e3 J' v' U  R
2. 把c:\php目录下的php4ts.dll php4ts.lib文件都拷贝到c:\winnt\system32目录下(即window 2000系统目录下的system32目录)。
7 b- x1 c: K4 ~4 I5 _* H& Q3. 修改php.ini文件,把c:\php目录下的php.ini-dist文件改名为php.ini 用记事本或其它可编辑文本的软件把它打开。
4 C) E+ R1 i- V3.1找到register_globals = Off 改为register_globals = On8 s5 d: D# P7 f6 @0 U" ^2 K' h# g
这一步是为了使部分旧的PHP程序能正常运行;& n& W% S3 j9 v, a* G- ?' }2 h
3.2找到 extension_dir = ./ 把它改为extension_dir = c:\php\extensions
0 x; s5 W$ ^* u9 L7 \0 f% n2 r, [以下内容新手请略过
; R; u: D4 Y& x3 d) _* O===============新手略过开开始================1 \. C2 d! Y( `# T& d3 q
刚刚的修改是指定php4扩展dll文件存放的路径 由于php4默认所带的php.ini-dist中,是关掉了所有的扩展dll的功能( Windows Extensions) + _8 _0 }$ y  M1 k! a1 g! g
;extension=php_bz2.dll$ ^: v& x$ U* c, [( p' v3 I) E
;extension=php_cpdf.dll
8 u. ~0 p+ J$ m" u" z& i* E;extension=php_crack.dll
6 u) @2 L% R% `  O3 L;extension=php_curl.dll
0 N0 n6 m. d4 P4 \3 d.....
; R+ G  R( G& `" a6 z: s+ n$ }要做的就是把extension前面的分号去掉就行了,当然这样是不够的。因为有些extension在我们的系统是不能使用的,比如系统中没有安装 sql server的话,那么extension=php_mssql.dll就要用;(分号)把它注释掉;
" m$ L+ G& w' x* x1 e7 c0 E其中,PHP4带了两个GD扩展,请选用一个,另一个先用分号注释掉,以免出现函数无法注册的错误;
2 V  Z. M# p! D' e3 P' g如下面+ w  \3 b* C1 X. `& ?  X" I
extension=php_gd.dll
3 o& M( p! V. ];extension=php_gd2.dll
+ q8 d. ?  G& v, r; m; ~按实际所须的extension=php_xxxx.dll前面的分号都去掉。
& r) ]% L  {/ l/ x=============新手略过结束================
8 W( k: A! x$ L3.3 找到session.save_path,把这一项改为 session.save_path = c:\tmp
- t( v( v/ n$ m并在C盘建立一个TMP目录
! x: A, ^3 Z/ x9 d3.4记得要保存刚刚的修改 并把php.ini文件放置在c:\winnt目录下。
; @; B3 k& w' S% B1 G3 C% p================================================
3 e5 _- l- d& U2 G二、安装MySql
/ w, ^8 n+ }4 I8 C  p9 h. f' s. A安装MySql 当然,我在MySql.com 下载的MySql是一个压缩包,要先解压出来;再点setup.exe安装;
- J7 I$ |. e' ?) m% F% X按默认安装,即安装在c:\MySql下,安装完后,按“开始”菜单中的“运行”打进cmd进入dos窗口,进到c:\MySql\bin 目录;' h1 v8 l! S" N% @1 D+ ], h
运行mysqld-nt --install (将会出现一个Dos窗口,随即自动关闭!如果没有出任何信息,即安装到service成功!) " l$ {1 a0 A2 m+ j, J5 \; z( |9 e( D
从“开始”菜单“程序”=》“管理工具”=》“服务”,打开后,将会找到MySql,点击mouse右键 选择启动 回到刚刚的Dos窗口! Q1 D. G& k& F0 }
即c:\MySql\bin目录下 运行mysqladmin -u root password 123 即把root用户的密码设置为123 这一步,如果没有出错,说明初始化root密码成功;; o0 [, o. v4 F& M. }! E
当然从本机进入MySql是不需要用户名和密码,但用php 程序或是其它程序连接MySql时就要用到;% G( d8 z. {  D' j
测试进入 第一种方法:直接动行MySql进入MySql 的dos管理状态;0 k; T" ?$ u* `% t/ \5 [
第二种方法:运行MySql -uroot -p MySql将会提示让您输入密码,密码当然就是刚刚设置的123(当然,得按设置的密码喽,不一定得设置是123)- C  g( }. S. x$ G  O* a
出现: 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>
5 i2 _$ J+ a6 W% e" i. c4 A即安装MySql成功。
8 _9 L3 `1 P/ K7 h+ v8 |% ]# x==========================================4 s; X4 e4 {$ x( Q0 ~2 C6 L
三、安装Apache 1.3.x 及 PHP运行设置0 Z' N9 N1 U* l! L" z" G8 n
1.首先下载Apache,Apache软件一般叫作apache_1_3_x.win32.exe。运行它。它会问你将Apache安装到什么地方,为他系统安全及操作容易,我们不要使用默认路径,你可以设为c:\Apache或C:\,因为马上你就要修改它的配置文件。
% ]( `( ]! d/ X' D4 C3 K如果安装没出什么错的话,Apache就可以用了。有很多readme文件可供参考,但仅有一个文件是讲Win32平台的,包括Window 9x和Windows NT。 * R4 V/ D6 r4 c6 _# x' F0 c6 k
有两种方式使 PHP 工作于 Windows 下的 Apache 1.3.x。一种是 CGI 方式(php.exe),另一种是使用 Apache 模块 DLL。不管哪种方式都需要停止 Apache,编辑 httpd.conf 来配置 Apache 以加入PHP支持。 1 j4 }3 t' x9 i  |  Z
值得在这里指出现在 Windows 下的 SAPI 模块更加稳定了,我们推荐使用模块方式,因为更加透明和安全。
( g5 t# r* ^" T3 {' V, X. B/ k尽管有几种不同方法在 Apache 下配置 PHP,但是对新手来说还是非常简单易用的。有关更多的 httpd.conf 配置指令请参考 Apache 文档。 " Z; V- S9 C1 g& ^/ n" |
如果你按照手工安装步骤一节中的说明把 PHP 解压缩到了 c:\php\ 目录下,那么需要加入以下三行到 Apache 配置文件中以 CGI 方式安装: " e( y1 ~" H/ N. n: w3 e
9 Z4 U& g0 m1 P1 d% X
ScriptAlias /php/ "c:/php/"
0 E' J% U2 h& l% CAddType application/x-httpd-php .php .phtml ) n4 q! x6 n! R3 K$ t8 P
Action application/x-httpd-php "/php/php.exe"
9 I0 ?0 E7 p* [' ?9 \注意上面的第二行在原来的 httpd.conf 中就有的,不过被注释了。还有记住用你自己放置 PHP 的路径替换 c:/php/。
1 D: T; [- c! L2 O0 R) e; q% x/ M: H- {3 ^, z. w- e% c( A3 h. {
警告
; j. F0 R! D0 x* y4 a2 O& F在 CGI 方式下,你的服务器可能会受到几种攻击的影响。请学习如何防止攻击。 3 v+ J% U/ Q' O& R, O
, e0 `5 @. P6 M: |2 n' ~7 W
如果你想在 Apache 中用模块方式使用 PHP,确认把 php4ts.dll 拷贝到 windows/system(Windows 9x/Me)或者 winnt/system32(Windows NT/2000)或者 windows/system32(Windows XP)目录下,覆盖原来的文件。然后在 Apache 配置文件 httpd.conf 中加入以下两行: 3 T+ [. C' D7 {$ p0 Z) E

+ B. n4 s. w" n* i1 W  }; D+ z0 h; N用自己喜爱的编辑器打开 httpd.conf,找到 LoadModule 指令的部分,在其列表的最后部分加上如下一行,
3 g! G* _5 M  }4 `2 U0 P. m& m2 ]9 Y对 PHP 4:3 N; M! x* G( E9 K1 u; V
LoadModule php4_module c:/php/sapi/php4apache.dll  `0 k; f  Z3 j
对 PHP 5:
5 j" ?9 X2 V. T7 s  KLoadModule php5_module "c:/php/sapi/php5apache.dll"
3 D1 {& P0 E" W5 {, d! j& p你可能发现在用 Windows Installer 安装了 Apache 之后需要为用 AddModule 指令定义 mod_php4.c。尤其是在定义了 ClearModuleList 指令时格外重要,向下滚动几行可以找到该指令。你将会看到 AddModule 项目的列表,在列表的最后加上这一行:
  k" Z4 s4 o; x+ W3 E! dAddModule mod_php4.c
9 G' f$ @+ S, z8 O! J对于 PHP 5 则为:
  L% W5 c$ [: }9 kAddModule mod_php5.c; s  ^- |' m1 U# y" Y& |% ~' b- F' g! j
搜索类似 # AddType allows you to tweak mime.types 的短语,你会找到一些 AddType 的项目,并且在列表的最后有这一行: AddType application/x-httpd-php .php。你可以在这里选择任何想用 PHP 解析的后缀。.php 只是所建议的一个。甚至可以包括 .html,也可以加上 .php3 来向下兼容。
0 G4 y& k  a& j4 o8 N  c  W
% P) K+ y* s% n: {* s5 M修改了配置文件之后记住重新启动 Apache,例如如果你的 Apache 是作为 Windows 的服务安装的,NET STOP APACHE 后面接上 NET START APACHE。或者用你通常使用的快捷方式。
: a) v3 L0 B+ _) B% L+ x8 F; k# P有两种方式使用源程序语法彩色显示特色,但是取决于你的安装方法。如果你配置了 Apache 的 SAPI 模块方式使用 PHP,那么在 httpd.conf 中(和插入 AddType application/x-httpd-php .php 是同一个位置)加入下面一行就可以使用本特色:AddType application/x-httpd-php-source .phps。
- X/ U# z7 q) c9 L5 N2 D) f如果你用 CGI 方式使用 PHP,那你需要用 show_source() 函数。建立一个 PHP 文件,加入以下代码:<?php show_source ("original_php_script.php"); ?>。用你想要显示源代码的文件名替换掉 original_php_script.php。 # P+ D4 k3 d/ @8 m* |
注: 在 Windows-Apache 组合中,所有路径中的反斜线例如 "c:\directory\file.ext" 都必须转换成斜线,如 "c:/directory/file.ext"。) t# u6 s& g% s, r
============================================1 V# U, I' I$ q% z8 o) C
四、实现Apache虚拟主机的两种方案
( D6 D1 g# S2 C# i. h2 `简介:这里说的虚拟主机是指在一台机器上仅运行一个httpd后台程序 ) Z$ ^' {7 i- O
支持多个Apache服务器,如在公司财务部门有一台web服务器,名为
' n) ~; d; \3 |account.yourdomain.com,同时又想为sales部门建立网站,网站内容也 + e" Q: i& S* m0 @- t# |
放在该机器上,通过sales.yourdomain.com访问,这就要用到虚拟主机 4 t. g" X; Y0 C4 B5 I# o* M; j
设置。
  f: s. b" v2 ^  C, R设置Apache虚拟主机通常有两种方案
  S( _# Q. s' A# F4 }4 j1.基于IP的虚拟主机 9 D" K  |) B! O: x9 j. }: C. b
  这种方式需要在机器上设置IP别名,象上面的例子,在一台机器的
7 j: J& I" t& O" @% `网卡上绑定多个IP地址去服务多个虚拟主机。
8 i/ G9 @6 k" S4 M9 F) X若该机器的IP地址为192.168.0.1(account.yourdomain.com),首先
' @9 M: w- u' L, t你要设置IP别名(假设用192.168.0.2作为其别名IP)。加下面的行到 ' ?6 a+ \5 }2 ]# ?( x1 F  ^
/etc/rc.d/rc.local,确保每次启动后自动运行。 7 _9 T9 o. y9 {* ]" A' g( _! b
#/sbin/ifconfig eth0:0 192.168.0.2 netmask 255.255.255.0 broadcast \ % @$ Z. y( j9 t0 {7 v% M9 Z. ?5 ^- I
192.168.0.255 up
/ C- v4 l4 w, D2 E5 H#/sbin/route add -host 192.168.0.2 eth0:0 , k. d& E  c4 ~/ Y0 p' v' u% x
然后你需要设置/etd/httpd/conf/httpd.conf文件:
" ]1 A" A0 I) d<VirtualHost 192.168.0.2>   g( A; G- B) M$ n2 k
ServerAdmin webmaster@yourdomain.com ( E! N$ H9 j* e5 }# T$ K% z
DocumentRoot /home/httpd/sales.yourdomain.com ( ^) K1 p$ p+ k
ServerName sales.yourdomain.com * U" G0 r) C* f$ H' I1 N! ?* y% Y, B
ErrorLog /var/log/httpd/sales.yourdomain.com/error_log 1 r' t5 W* ?* d, l) q$ t* G
TransferLog /var/log/httpd/sales.yourdomain.com/access_log
) u6 \. j! p2 ]6 a" n9 ^</VirtualHost>
. f6 P4 i; X9 f+ h  E9 W8 J& O然后分别创建目录 " U! f; ~+ c# R& m8 V  z
/home/httpd/sales.yourdomain.com, 6 p! Z4 U/ [  {5 B- G9 g6 |, e
/var/log/httpd/sales.yourdomain.com
$ ~1 Q" T: M) z1 F放相应的网站内容到目录/home/httpd/sales.yourdomain.com下即可,并确保   `$ M9 r+ @  H$ k- S9 O
你内部的DNS指定sales.yourdomain.com的A记录到IP地址192.168.0.2 。 2 G& R9 ~7 L4 k( ^4 D
注:这种基于IP的虚拟主机有一个缺点,就是你需要更多的IP地址去服务各自的 / Q: s/ G* j3 `1 A: u4 G/ n/ A+ Q
虚拟主机,如果你仅仅有一个IP地址,那么你将可以考虑用基于名字的虚拟主机
, _1 R2 @: ]+ Z8 Y8 h方案。 : ?( o$ a) V# z- @5 o+ C
3 _" r5 Q1 O+ f' K, ?3 ^" P$ T
2.基于名字的虚拟主机:
/ h3 Q# |* C6 ~& k0 z3 `/ `, }  它的优势就是不需要更多的IP地址,容易配置,不需要其它软硬件,现代的
  R$ o" _- J  [8 B# `浏览器大多都支持这种方式。与基于IP的虚拟主机一样,你需要编辑文件
3 V5 U# Y1 }6 }, X2 q7 L/etc/httpd/conf/httpd.conf . H. E, O5 X/ y9 G1 u( B
NameVirtualHost 192.168.0.1
+ u: X; o2 H0 x) L" C5 |0 a) N# x<VirtualHost 192.168.0.1>
9 `9 M  C5 [0 G* G: }3 H* A( wServerAdmin webmaster@yourdomain.com ) v) c. r4 U% g5 D/ L
DocumentRoot /home/httpd/sales.yourdomain.com 1 C3 ^: Y/ X$ p' m6 w$ u( _
ServerName sales.yourdomain.com # @6 U! q5 g) V1 |3 }# [
ErrorLog /var/log/httpd/sales.yourdomain.com/error_log 5 H8 V% l1 h1 K3 K' d
TransferLog /var/log/httpd/sales.yourdomain.com/access_log + S- ~; Y2 N8 }: m& t
</VirtualHost>
/ ~3 e3 j5 u( L5 M6 c7 c' _<VirtualHost 192.168.0.1> 2 Y4 x3 E  O' O& I
ServerAdmin webmaster@yourdomain.com 3 G" l, m6 G: F% ?" ~( I
DocumentRoot /home/httpd/hr.yourdomain.com
1 _+ P: B6 m% p# r5 `9 m  WServerName hr.yourdomain.com
0 E( }: d; d. tErrorLog /var/log/httpd/hr.yourdomain.com/error_log
" F  V" M0 l0 t; k, A8 _1 V0 bTransferLog /var/log/hr.yourdomain.com/access_log $ [1 C8 f, R1 A% p
</VirtualHost>
! j* S1 n4 o5 D  g1 x: N% c0 o& w注: 你需要加NameVirtualHost 指示在最前面,下面依次为各个虚拟主机, 0 K* ]* c7 ^- i
为了让它工作,你需要把sales.yourdomain.com, hr.yourdomain.com的DNS & ?8 N1 M& b) X1 J
都指向IP地址192.168.0.1
+ X' t9 y: ~8 f+ G6 H& ~上面的两种都将工作,如果是在外部网段,在互联网上提供WWW服务,你可能 9 k  ]/ U7 c. n. i" {
没有足够的真实IP地址来支持多个虚拟主机,便可用基于名字的虚拟主机方案,
0 r/ G- x; j( @7 s若是在内部网段上,你有较多的内部保留IP地址,将没有太大的区别。
7 ]6 ~% y" |0 y$ G提示:上面所提到的相对目录可以用绝对路径代替,如:
0 m3 W+ S5 G0 U% f! H1 b/home/httpd/hr.yourdomain.com 可改为 D:/Inetpub/wwwroot
1 e  z* z* c9 f& ~7 j" V  Z: d8 Q, y" S==================END=======================
6 L7 n6 N; [9 Q这只是入门,只能保证你的WEB服务器能正常运,要了解更多的 PHP 及 Apache 的详细设置,还要靠大家更加深入的实践...

另外可以用一个安装包安装全部PHP软件
5 Q& Z, l( E! r3 p下载地址:1 w8 T; X2 }, v, ?& W7 y
http://webclub.net.cn/data/phpStudy1.2.5.rar

TOP

亲娘那
5 e: c8 s) v% d3 X: b/ ^8 g怎么没图哈
/ f4 K2 ]3 t" l6 B- ^应该图文结合啊
2 E6 R5 `  Y! ~& r5 o

TOP

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