返回列表 发帖

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

前言:这一篇是我亲身配置的经历,希望大家喜欢,现在网络的教程中,PHP运行在Apache“模块”方式的文章中都少了最重要的一个步骤,也就是说按其方法配置PHP不能运行,有的太过简单,有的太过复杂,所以花了点时间整理一下。6 B! K: m7 |( r
  l3 {1 J2 V* {5 q) q6 x
一、安装PHP42 \2 O6 d# r5 K
我们需要安装的是win32版本,下载当然也是win32版本 php4.3.0-win32.zip! S5 ~, m$ f9 S4 z$ I9 J3 O
1.下载后,解压到c:\php目录下。( R; \: I0 b( ~! }4 l2 N; {
2. 把c:\php目录下的php4ts.dll php4ts.lib文件都拷贝到c:\winnt\system32目录下(即window 2000系统目录下的system32目录)。
# H: m% z: ]( r8 |) r$ z3. 修改php.ini文件,把c:\php目录下的php.ini-dist文件改名为php.ini 用记事本或其它可编辑文本的软件把它打开。+ g+ M% G$ ~" N3 Y- K
3.1找到register_globals = Off 改为register_globals = On
9 C+ P3 w" y$ K6 o  T这一步是为了使部分旧的PHP程序能正常运行;
" r& ]; ^+ Z$ e7 W$ Z4 y3 n2 H& j8 g3.2找到 extension_dir = ./ 把它改为extension_dir = c:\php\extensions  s$ K- _/ d" z/ E7 V, s
以下内容新手请略过6 Z( n8 ?0 ^" G' ^1 `; s' y4 V
===============新手略过开开始================
& `! y1 i3 Q8 @) _刚刚的修改是指定php4扩展dll文件存放的路径 由于php4默认所带的php.ini-dist中,是关掉了所有的扩展dll的功能( Windows Extensions) & }6 x7 e$ G0 P  @
;extension=php_bz2.dll+ g- x4 F! ?, d* v2 U: i
;extension=php_cpdf.dll
4 ]2 X1 j' s! ^% z% R;extension=php_crack.dll
6 g$ b5 Z  Q. y3 ?;extension=php_curl.dll
7 l5 y' q  V9 I.....
' E, F3 X( x6 l: P, b* J: d要做的就是把extension前面的分号去掉就行了,当然这样是不够的。因为有些extension在我们的系统是不能使用的,比如系统中没有安装 sql server的话,那么extension=php_mssql.dll就要用;(分号)把它注释掉;
% I) }, g  H3 |. B4 h' q. G其中,PHP4带了两个GD扩展,请选用一个,另一个先用分号注释掉,以免出现函数无法注册的错误;
! ~- l5 ~4 _7 R" ?0 U. A) `' ^如下面
- n; R" i$ S: a, Qextension=php_gd.dll3 ]4 B: X  k$ g
;extension=php_gd2.dll
! }5 b' W) Q$ Y, j9 Q) _按实际所须的extension=php_xxxx.dll前面的分号都去掉。
6 C! E% o( q" M' O, B; [=============新手略过结束================* Z1 U7 y" @& j8 J1 P* R# a+ G1 n1 G
3.3 找到session.save_path,把这一项改为 session.save_path = c:\tmp
9 S0 x+ s; v8 ?6 f3 l并在C盘建立一个TMP目录
% ~8 v. ^6 C7 l, V, D3.4记得要保存刚刚的修改 并把php.ini文件放置在c:\winnt目录下。! @; S$ A( G( ]
================================================
* g% D2 c8 N% |1 }8 o二、安装MySql# j# g9 d4 A4 E  H/ U/ T
安装MySql 当然,我在MySql.com 下载的MySql是一个压缩包,要先解压出来;再点setup.exe安装;& c% M3 _3 F* B7 J
按默认安装,即安装在c:\MySql下,安装完后,按“开始”菜单中的“运行”打进cmd进入dos窗口,进到c:\MySql\bin 目录;
2 _/ j" E0 Y' M+ i3 i7 y! ]运行mysqld-nt --install (将会出现一个Dos窗口,随即自动关闭!如果没有出任何信息,即安装到service成功!)
/ x1 y, \4 O5 w7 ?5 o从“开始”菜单“程序”=》“管理工具”=》“服务”,打开后,将会找到MySql,点击mouse右键 选择启动 回到刚刚的Dos窗口7 \9 ]0 i3 p- `! s3 K0 t& q; ]: w6 i
即c:\MySql\bin目录下 运行mysqladmin -u root password 123 即把root用户的密码设置为123 这一步,如果没有出错,说明初始化root密码成功;/ v0 n; K# Q1 S
当然从本机进入MySql是不需要用户名和密码,但用php 程序或是其它程序连接MySql时就要用到;
& v* [1 i) F( e" Z- k! |" y7 Q测试进入 第一种方法:直接动行MySql进入MySql 的dos管理状态;6 S( C6 y* ~$ F! k0 N9 [- x
第二种方法:运行MySql -uroot -p MySql将会提示让您输入密码,密码当然就是刚刚设置的123(当然,得按设置的密码喽,不一定得设置是123)
7 L" O1 @. S4 ~: l  g. Z出现: 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> & r1 C$ N3 I% y$ t4 t1 }$ ~/ ]- D
即安装MySql成功。
: y5 ^* N( L' P4 t: R==========================================2 o8 ~2 x7 B# o: F) Z% _6 D
三、安装Apache 1.3.x 及 PHP运行设置' c$ [( \" e/ a( o1 o" R$ R9 }$ b
1.首先下载Apache,Apache软件一般叫作apache_1_3_x.win32.exe。运行它。它会问你将Apache安装到什么地方,为他系统安全及操作容易,我们不要使用默认路径,你可以设为c:\Apache或C:\,因为马上你就要修改它的配置文件。. k+ W/ J& b4 _9 p# b# B' B) I3 m' s
如果安装没出什么错的话,Apache就可以用了。有很多readme文件可供参考,但仅有一个文件是讲Win32平台的,包括Window 9x和Windows NT。
" `; Q' z% }2 j有两种方式使 PHP 工作于 Windows 下的 Apache 1.3.x。一种是 CGI 方式(php.exe),另一种是使用 Apache 模块 DLL。不管哪种方式都需要停止 Apache,编辑 httpd.conf 来配置 Apache 以加入PHP支持。 $ o1 m, o3 D. t, H; @+ A2 v
值得在这里指出现在 Windows 下的 SAPI 模块更加稳定了,我们推荐使用模块方式,因为更加透明和安全。
/ r- P. @& C- o, q尽管有几种不同方法在 Apache 下配置 PHP,但是对新手来说还是非常简单易用的。有关更多的 httpd.conf 配置指令请参考 Apache 文档。
2 q: ?  E- \- R3 V2 T4 t如果你按照手工安装步骤一节中的说明把 PHP 解压缩到了 c:\php\ 目录下,那么需要加入以下三行到 Apache 配置文件中以 CGI 方式安装: 9 V7 {: u$ E7 F/ C
! g' ~% F. d6 }1 m. m
ScriptAlias /php/ "c:/php/" $ ~: S/ x. V2 J  E7 ]9 @+ V
AddType application/x-httpd-php .php .phtml
" m/ t% O# K  d* k" y  b" RAction application/x-httpd-php "/php/php.exe" " P4 w5 {. k% w% e5 E
注意上面的第二行在原来的 httpd.conf 中就有的,不过被注释了。还有记住用你自己放置 PHP 的路径替换 c:/php/。
: ^- Q' [) h. t. [9 g
! J/ p% |( P, V0 m警告 " W6 y# R: M% i9 x2 g) K  v2 b: P! H
在 CGI 方式下,你的服务器可能会受到几种攻击的影响。请学习如何防止攻击。
" g1 o( ]8 I/ K' f0 o; c. `/ u, Y5 ?: Q3 S. p/ R
如果你想在 Apache 中用模块方式使用 PHP,确认把 php4ts.dll 拷贝到 windows/system(Windows 9x/Me)或者 winnt/system32(Windows NT/2000)或者 windows/system32(Windows XP)目录下,覆盖原来的文件。然后在 Apache 配置文件 httpd.conf 中加入以下两行:
" i/ B& q4 s, W! g- n' o% S5 j) @' m4 H7 o
用自己喜爱的编辑器打开 httpd.conf,找到 LoadModule 指令的部分,在其列表的最后部分加上如下一行,# U& H, M% w' a* ]  H' c: ?" ^
对 PHP 4:
1 \' R$ |( W, Z- M# eLoadModule php4_module c:/php/sapi/php4apache.dll8 @9 v) H1 `/ d0 c3 O2 j( s8 X, N
对 PHP 5:# c, g) U- L0 v- Z
LoadModule php5_module "c:/php/sapi/php5apache.dll"7 A0 y" ^& B2 i: C0 p# W
你可能发现在用 Windows Installer 安装了 Apache 之后需要为用 AddModule 指令定义 mod_php4.c。尤其是在定义了 ClearModuleList 指令时格外重要,向下滚动几行可以找到该指令。你将会看到 AddModule 项目的列表,在列表的最后加上这一行:
* L* I0 `1 r4 B  M* X, KAddModule mod_php4.c
6 [0 I# B! ^2 @- D8 l: k2 K1 Y对于 PHP 5 则为:$ {5 P3 _! D- E) {6 M/ G$ Y
AddModule mod_php5.c. N2 Z9 P" Y7 C! p- h3 d) n& K
搜索类似 # AddType allows you to tweak mime.types 的短语,你会找到一些 AddType 的项目,并且在列表的最后有这一行: AddType application/x-httpd-php .php。你可以在这里选择任何想用 PHP 解析的后缀。.php 只是所建议的一个。甚至可以包括 .html,也可以加上 .php3 来向下兼容。
' h/ y9 s4 f1 {" A3 A, o- O$ Z9 |& V$ g; Z( U# ^* K
修改了配置文件之后记住重新启动 Apache,例如如果你的 Apache 是作为 Windows 的服务安装的,NET STOP APACHE 后面接上 NET START APACHE。或者用你通常使用的快捷方式。
" U2 j- i. ]3 V3 U( W+ Z1 p7 ]有两种方式使用源程序语法彩色显示特色,但是取决于你的安装方法。如果你配置了 Apache 的 SAPI 模块方式使用 PHP,那么在 httpd.conf 中(和插入 AddType application/x-httpd-php .php 是同一个位置)加入下面一行就可以使用本特色:AddType application/x-httpd-php-source .phps。
( d7 ~( @9 \) I7 [, T如果你用 CGI 方式使用 PHP,那你需要用 show_source() 函数。建立一个 PHP 文件,加入以下代码:<?php show_source ("original_php_script.php"); ?>。用你想要显示源代码的文件名替换掉 original_php_script.php。 7 x! M5 w) l6 V4 _
注: 在 Windows-Apache 组合中,所有路径中的反斜线例如 "c:\directory\file.ext" 都必须转换成斜线,如 "c:/directory/file.ext"。
! B$ `* r4 S# p$ ^, C' v( U8 J============================================" l. Q: ~# J2 A
四、实现Apache虚拟主机的两种方案
! F: r; v$ p$ }. m4 h简介:这里说的虚拟主机是指在一台机器上仅运行一个httpd后台程序 / Z0 c  h) d$ G) w# F  f1 l
支持多个Apache服务器,如在公司财务部门有一台web服务器,名为 0 b0 i8 ^% f) F6 ?0 s, ~
account.yourdomain.com,同时又想为sales部门建立网站,网站内容也
$ L. [3 G9 K1 B/ O) J3 ^放在该机器上,通过sales.yourdomain.com访问,这就要用到虚拟主机 0 l6 I3 M" n; f! ]% c% o
设置。 8 _! u5 h, Q+ G  m' |: \- e
设置Apache虚拟主机通常有两种方案
% P! H, f* P0 d! i5 H# ~: u* z# I( k1 t1.基于IP的虚拟主机
& D: t2 Q% f0 w0 t6 F' b2 B) _; L+ |  这种方式需要在机器上设置IP别名,象上面的例子,在一台机器的
" Q( @0 m1 s& L' {; D, r% E9 Z+ e网卡上绑定多个IP地址去服务多个虚拟主机。
1 h4 x  s: M# |, o0 @若该机器的IP地址为192.168.0.1(account.yourdomain.com),首先 4 K5 T4 U9 Y0 f
你要设置IP别名(假设用192.168.0.2作为其别名IP)。加下面的行到
, c3 h+ O7 ]$ D$ M) ?% I/etc/rc.d/rc.local,确保每次启动后自动运行。 : R9 U: g- O+ Q/ ?6 ?
#/sbin/ifconfig eth0:0 192.168.0.2 netmask 255.255.255.0 broadcast \ * L6 f8 P: c' w" E
192.168.0.255 up
) V7 t9 w8 m7 _/ |#/sbin/route add -host 192.168.0.2 eth0:0 9 a9 |8 n! U7 t6 F& n4 c
然后你需要设置/etd/httpd/conf/httpd.conf文件: & U* {# X! e+ O3 {" r# ?2 @' l1 g
<VirtualHost 192.168.0.2> ) x$ c. E& B/ Q1 A7 ^, ]- F
ServerAdmin webmaster@yourdomain.com
0 ~1 h" ]3 O6 \* P3 P% F* i! rDocumentRoot /home/httpd/sales.yourdomain.com 3 H, F! ]$ z9 {& `: ^. u9 Q! q
ServerName sales.yourdomain.com . t0 W9 C* C3 z) ^& C3 q% ^: H$ h* }
ErrorLog /var/log/httpd/sales.yourdomain.com/error_log
" W: a1 d, @/ P9 T7 |* i5 O2 PTransferLog /var/log/httpd/sales.yourdomain.com/access_log ' c$ Q: d# z/ i- T
</VirtualHost>
3 |5 F4 }; v) B" S; ~: P: \然后分别创建目录
9 y& `/ ]9 Z6 \: p: L/home/httpd/sales.yourdomain.com, * X, W) [" |( D! q2 E8 q; z
/var/log/httpd/sales.yourdomain.com
0 a# X5 K( @! d1 G8 z; z放相应的网站内容到目录/home/httpd/sales.yourdomain.com下即可,并确保 / ^1 O& k+ |# K9 L& Y% R/ I
你内部的DNS指定sales.yourdomain.com的A记录到IP地址192.168.0.2 。 $ L% {: Z& O/ f! I8 r
注:这种基于IP的虚拟主机有一个缺点,就是你需要更多的IP地址去服务各自的
* t0 s% Y1 a- S9 Q: o  `虚拟主机,如果你仅仅有一个IP地址,那么你将可以考虑用基于名字的虚拟主机
3 ^: K  G  `' d4 x7 ^+ @& t' m方案。
! {! X, n) n9 D) {% d  J6 P: \/ ^4 b  e; L0 h* v1 [+ t. i/ o$ ~
2.基于名字的虚拟主机:
2 g: K" S/ c/ e  它的优势就是不需要更多的IP地址,容易配置,不需要其它软硬件,现代的 ! p2 ?0 q; P9 t3 k! Q
浏览器大多都支持这种方式。与基于IP的虚拟主机一样,你需要编辑文件 : p! v: i8 U+ ^+ w9 ~8 R; I+ |8 H
/etc/httpd/conf/httpd.conf
" x! l& M8 o, [5 YNameVirtualHost 192.168.0.1 7 c+ K  g2 i" g* A  ]1 ?
<VirtualHost 192.168.0.1> $ v5 S$ F+ G4 S0 h) q- I
ServerAdmin webmaster@yourdomain.com 7 |5 g% b: @6 A( _$ H1 f8 v
DocumentRoot /home/httpd/sales.yourdomain.com ! y" @# P. n6 Y& H: s% X% n6 N
ServerName sales.yourdomain.com ( f2 |3 P  R/ y6 i+ N
ErrorLog /var/log/httpd/sales.yourdomain.com/error_log ; ~1 N. V, p/ g, N. Y
TransferLog /var/log/httpd/sales.yourdomain.com/access_log
- x5 S) P0 ?( B2 e$ w1 g& P</VirtualHost> $ H, A& G0 X9 F) f; T
<VirtualHost 192.168.0.1>
# d9 D6 I9 g7 E2 q0 X  zServerAdmin webmaster@yourdomain.com
0 x" L' f5 K6 }) ]9 MDocumentRoot /home/httpd/hr.yourdomain.com ) k! Y1 ^5 }  a* B0 F
ServerName hr.yourdomain.com
' C5 e9 ]% D1 c0 ^) {. B: Z9 qErrorLog /var/log/httpd/hr.yourdomain.com/error_log
% ]5 {' T4 X) {: @TransferLog /var/log/hr.yourdomain.com/access_log
1 R5 e! h. t1 T! \" \</VirtualHost> 5 X- L( E  V, \8 L+ s
注: 你需要加NameVirtualHost 指示在最前面,下面依次为各个虚拟主机,
! H9 s7 o& t' N/ P: ^为了让它工作,你需要把sales.yourdomain.com, hr.yourdomain.com的DNS
0 Z( K6 U; s% V: S1 D8 I/ ?! |都指向IP地址192.168.0.1 2 M0 ?& ~$ S9 u" S+ U
上面的两种都将工作,如果是在外部网段,在互联网上提供WWW服务,你可能 4 v$ [2 b. E" d" ^
没有足够的真实IP地址来支持多个虚拟主机,便可用基于名字的虚拟主机方案, + x/ e% m6 A+ b0 D& @& b" h' R
若是在内部网段上,你有较多的内部保留IP地址,将没有太大的区别。 ' z& S4 H% {& U
提示:上面所提到的相对目录可以用绝对路径代替,如:
' z& v4 I8 E) O/home/httpd/hr.yourdomain.com 可改为 D:/Inetpub/wwwroot) b& o- c: g) t# W
==================END=======================
+ R5 D. h4 [! b, r' S! H9 d这只是入门,只能保证你的WEB服务器能正常运,要了解更多的 PHP 及 Apache 的详细设置,还要靠大家更加深入的实践...

另外可以用一个安装包安装全部PHP软件
" L# K6 I+ R- p) m' W; Z下载地址:$ ~& K' n0 L( n2 K, a* p
http://webclub.net.cn/data/phpStudy1.2.5.rar

TOP

亲娘那3 I2 z4 v) M+ {6 S0 ~0 f! }# P) o
怎么没图哈+ s/ h% a+ J6 x. ~+ C# P
应该图文结合啊2 v0 ^) j2 Z6 s- y$ m

TOP

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