返回列表 发帖

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

前言:这一篇是我亲身配置的经历,希望大家喜欢,现在网络的教程中,PHP运行在Apache“模块”方式的文章中都少了最重要的一个步骤,也就是说按其方法配置PHP不能运行,有的太过简单,有的太过复杂,所以花了点时间整理一下。
  l6 k: b9 D& f! {! C  H: B. C
" O  j4 J$ P9 Y* i8 Y& \* l一、安装PHP49 v, `' ?$ B  H0 ~7 X- S
我们需要安装的是win32版本,下载当然也是win32版本 php4.3.0-win32.zip
% _+ d& }/ V+ n0 m8 W: L# l1.下载后,解压到c:\php目录下。
$ @9 Q9 _+ \" ~2 y2. 把c:\php目录下的php4ts.dll php4ts.lib文件都拷贝到c:\winnt\system32目录下(即window 2000系统目录下的system32目录)。; H7 A) F% D9 i% _/ D
3. 修改php.ini文件,把c:\php目录下的php.ini-dist文件改名为php.ini 用记事本或其它可编辑文本的软件把它打开。' x  ]( V! w! h$ q2 @
3.1找到register_globals = Off 改为register_globals = On
$ D/ Q0 T! x2 i+ E8 r& s这一步是为了使部分旧的PHP程序能正常运行;
2 ^- U6 p( t( Q/ w3.2找到 extension_dir = ./ 把它改为extension_dir = c:\php\extensions2 I7 A; ?- F$ R% {9 |+ e
以下内容新手请略过5 O% p8 P1 C7 o
===============新手略过开开始================; t2 E2 e$ u/ N' J5 v0 E: |, p
刚刚的修改是指定php4扩展dll文件存放的路径 由于php4默认所带的php.ini-dist中,是关掉了所有的扩展dll的功能( Windows Extensions) 6 V1 H( [' \- Z$ U- T
;extension=php_bz2.dll: g. h0 @! d+ `( [
;extension=php_cpdf.dll5 R' ?( ?7 [, p/ \* {  _9 V/ {
;extension=php_crack.dll4 d3 t( o! f& K2 T1 I: i
;extension=php_curl.dll' [% Q! n& j/ k. X1 v
.....
( v* r4 {% g% v; ^& u  A5 F; t要做的就是把extension前面的分号去掉就行了,当然这样是不够的。因为有些extension在我们的系统是不能使用的,比如系统中没有安装 sql server的话,那么extension=php_mssql.dll就要用;(分号)把它注释掉;
) n; L: z6 |! \5 y其中,PHP4带了两个GD扩展,请选用一个,另一个先用分号注释掉,以免出现函数无法注册的错误;& i: \$ L! ?/ {  z
如下面
1 ]# ~' F, p& o7 u& qextension=php_gd.dll
' V1 j9 b0 x9 O9 D1 M0 A;extension=php_gd2.dll: k0 G2 P9 ~$ Z* B' s$ r* g3 A  I; ^" S
按实际所须的extension=php_xxxx.dll前面的分号都去掉。
/ G" }' ]) x: z: p=============新手略过结束================
# \6 ^; t2 U6 f9 I3.3 找到session.save_path,把这一项改为 session.save_path = c:\tmp" E4 e9 g$ E) N) _1 M
并在C盘建立一个TMP目录
4 [+ K8 k+ w7 o. O8 |3.4记得要保存刚刚的修改 并把php.ini文件放置在c:\winnt目录下。8 U8 N0 f/ I3 d. |
================================================/ z/ h* ~" v, J$ W+ d: R8 h
二、安装MySql9 |# i8 d: Y- t# D
安装MySql 当然,我在MySql.com 下载的MySql是一个压缩包,要先解压出来;再点setup.exe安装;
2 q3 ~$ q* G5 ?! Z4 T+ V6 t% F! H按默认安装,即安装在c:\MySql下,安装完后,按“开始”菜单中的“运行”打进cmd进入dos窗口,进到c:\MySql\bin 目录;* V6 U) D* F; c1 ?; H9 x3 U( c
运行mysqld-nt --install (将会出现一个Dos窗口,随即自动关闭!如果没有出任何信息,即安装到service成功!) 2 P2 u+ \$ s% B# j; E8 x& T
从“开始”菜单“程序”=》“管理工具”=》“服务”,打开后,将会找到MySql,点击mouse右键 选择启动 回到刚刚的Dos窗口
/ p9 g& \% T5 c+ x" E* X. S6 b即c:\MySql\bin目录下 运行mysqladmin -u root password 123 即把root用户的密码设置为123 这一步,如果没有出错,说明初始化root密码成功;
; Q0 F3 I6 F; O5 A3 r  X3 A当然从本机进入MySql是不需要用户名和密码,但用php 程序或是其它程序连接MySql时就要用到;) Q, {/ V* {" h  V9 s6 z
测试进入 第一种方法:直接动行MySql进入MySql 的dos管理状态;
. _* U8 \& N# L* G第二种方法:运行MySql -uroot -p MySql将会提示让您输入密码,密码当然就是刚刚设置的123(当然,得按设置的密码喽,不一定得设置是123)7 o7 g- F- z: 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> , C& P3 Q' p! q
即安装MySql成功。
6 U& G7 b) f- r- ?==========================================. V" d6 G6 y' o0 A/ L  N0 K
三、安装Apache 1.3.x 及 PHP运行设置
( g1 z# e  p5 l, i4 P) `" g1.首先下载Apache,Apache软件一般叫作apache_1_3_x.win32.exe。运行它。它会问你将Apache安装到什么地方,为他系统安全及操作容易,我们不要使用默认路径,你可以设为c:\Apache或C:\,因为马上你就要修改它的配置文件。
$ A- @/ c( @$ q6 t如果安装没出什么错的话,Apache就可以用了。有很多readme文件可供参考,但仅有一个文件是讲Win32平台的,包括Window 9x和Windows NT。
& t  s# O3 p2 d7 Y% ^1 G& A有两种方式使 PHP 工作于 Windows 下的 Apache 1.3.x。一种是 CGI 方式(php.exe),另一种是使用 Apache 模块 DLL。不管哪种方式都需要停止 Apache,编辑 httpd.conf 来配置 Apache 以加入PHP支持。
9 n6 d% Y$ s9 M; Y3 c值得在这里指出现在 Windows 下的 SAPI 模块更加稳定了,我们推荐使用模块方式,因为更加透明和安全。 / ?9 b! S% N( f( v* n% z
尽管有几种不同方法在 Apache 下配置 PHP,但是对新手来说还是非常简单易用的。有关更多的 httpd.conf 配置指令请参考 Apache 文档。 , \" {  o+ A0 ]
如果你按照手工安装步骤一节中的说明把 PHP 解压缩到了 c:\php\ 目录下,那么需要加入以下三行到 Apache 配置文件中以 CGI 方式安装:
0 m$ D- g7 K0 E/ ^" A. q4 n" b9 R# |8 ^7 l1 C
ScriptAlias /php/ "c:/php/"
1 ~. g: v# U$ `& p+ n5 V4 OAddType application/x-httpd-php .php .phtml
% G5 Y, Z; C, U/ G" m' LAction application/x-httpd-php "/php/php.exe"
- U4 w" F) [: D: w" L注意上面的第二行在原来的 httpd.conf 中就有的,不过被注释了。还有记住用你自己放置 PHP 的路径替换 c:/php/。
- ^7 A3 d( N1 d3 [# E+ w; g/ @4 i' m2 d9 o$ U. f! r  D
警告
) a1 @/ [5 D- V. g0 o4 d. c1 r在 CGI 方式下,你的服务器可能会受到几种攻击的影响。请学习如何防止攻击。 - F6 p  M0 m" w* @! K3 K& I7 v

. u5 A1 V3 R3 O# y6 E  N如果你想在 Apache 中用模块方式使用 PHP,确认把 php4ts.dll 拷贝到 windows/system(Windows 9x/Me)或者 winnt/system32(Windows NT/2000)或者 windows/system32(Windows XP)目录下,覆盖原来的文件。然后在 Apache 配置文件 httpd.conf 中加入以下两行: : V* Z0 n! c+ x5 N- n1 i( u! V$ X: }
; h5 L9 K0 c; a' x( ~% }; Z
用自己喜爱的编辑器打开 httpd.conf,找到 LoadModule 指令的部分,在其列表的最后部分加上如下一行,
6 ^- P( z5 c9 N. i0 e对 PHP 4:
3 |) V; B9 n' ?9 ?LoadModule php4_module c:/php/sapi/php4apache.dll* |/ B3 J6 V; B( T" V
对 PHP 5:, h+ e1 Y) u% J- H- }. s: r
LoadModule php5_module "c:/php/sapi/php5apache.dll"
7 J* {5 o: ^( J1 `! q" {你可能发现在用 Windows Installer 安装了 Apache 之后需要为用 AddModule 指令定义 mod_php4.c。尤其是在定义了 ClearModuleList 指令时格外重要,向下滚动几行可以找到该指令。你将会看到 AddModule 项目的列表,在列表的最后加上这一行:$ j$ X0 u$ I  s1 F9 ~
AddModule mod_php4.c3 V+ \* j, ^6 F3 D+ B
对于 PHP 5 则为:0 X. `7 U2 i8 }, I; K) p4 f& w
AddModule mod_php5.c# X; v4 P( V! |, K& g/ Y5 `
搜索类似 # AddType allows you to tweak mime.types 的短语,你会找到一些 AddType 的项目,并且在列表的最后有这一行: AddType application/x-httpd-php .php。你可以在这里选择任何想用 PHP 解析的后缀。.php 只是所建议的一个。甚至可以包括 .html,也可以加上 .php3 来向下兼容。
9 ^! o3 F5 x1 J8 d) L! `3 o- t0 Y/ g+ @% K# c
修改了配置文件之后记住重新启动 Apache,例如如果你的 Apache 是作为 Windows 的服务安装的,NET STOP APACHE 后面接上 NET START APACHE。或者用你通常使用的快捷方式。
7 C, l  ~5 n  \8 x( _有两种方式使用源程序语法彩色显示特色,但是取决于你的安装方法。如果你配置了 Apache 的 SAPI 模块方式使用 PHP,那么在 httpd.conf 中(和插入 AddType application/x-httpd-php .php 是同一个位置)加入下面一行就可以使用本特色:AddType application/x-httpd-php-source .phps。 " T- h* t+ e! E) O
如果你用 CGI 方式使用 PHP,那你需要用 show_source() 函数。建立一个 PHP 文件,加入以下代码:<?php show_source ("original_php_script.php"); ?>。用你想要显示源代码的文件名替换掉 original_php_script.php。 ! P1 G" ?# q" a. \( V- D
注: 在 Windows-Apache 组合中,所有路径中的反斜线例如 "c:\directory\file.ext" 都必须转换成斜线,如 "c:/directory/file.ext"。- g& r8 p% |& r. a) e+ \
============================================% _9 n$ o1 N$ O( |5 Z' e
四、实现Apache虚拟主机的两种方案: X+ x) {3 P5 d
简介:这里说的虚拟主机是指在一台机器上仅运行一个httpd后台程序
) X) Q2 ~( d% {4 f支持多个Apache服务器,如在公司财务部门有一台web服务器,名为   {! q1 j' g, O5 L3 Y9 z
account.yourdomain.com,同时又想为sales部门建立网站,网站内容也 ; h: a6 _) W" @3 Q/ F
放在该机器上,通过sales.yourdomain.com访问,这就要用到虚拟主机
" A, v) z) u" X+ \  x设置。 ' O+ q# j( }0 z) x/ D
设置Apache虚拟主机通常有两种方案
" z! |% G* j  h. e) X1.基于IP的虚拟主机 3 P( a7 j) ^2 `- T3 G, m
  这种方式需要在机器上设置IP别名,象上面的例子,在一台机器的 ' ^3 q7 t* t8 ]; {! {9 z
网卡上绑定多个IP地址去服务多个虚拟主机。
( {2 O9 U% x( w( t! h5 Q( v' D若该机器的IP地址为192.168.0.1(account.yourdomain.com),首先
$ `6 V( y* D/ n+ K( H1 y- G$ B) m你要设置IP别名(假设用192.168.0.2作为其别名IP)。加下面的行到
2 \/ l9 b" B) ^( J/etc/rc.d/rc.local,确保每次启动后自动运行。 9 n* g& A% A9 D$ |1 T9 R
#/sbin/ifconfig eth0:0 192.168.0.2 netmask 255.255.255.0 broadcast \
- i6 |- t& \5 z3 X% F* o4 A0 g192.168.0.255 up
% r: e/ Y0 Q3 ]* @/ k% Q#/sbin/route add -host 192.168.0.2 eth0:0
( L! g. ~% @0 ]2 p& [然后你需要设置/etd/httpd/conf/httpd.conf文件:
2 x2 t) e9 h2 b& e5 a; j<VirtualHost 192.168.0.2>
; m, i- B" y/ eServerAdmin webmaster@yourdomain.com   I' L# B4 `* l
DocumentRoot /home/httpd/sales.yourdomain.com ! F! Y* m7 U& [" b/ ?. H
ServerName sales.yourdomain.com 2 |" C: ?, t6 \* o3 g4 n5 r
ErrorLog /var/log/httpd/sales.yourdomain.com/error_log # s  n1 Z5 ]0 G" v& w8 c
TransferLog /var/log/httpd/sales.yourdomain.com/access_log
3 N( k8 s4 m; d7 `/ |4 X</VirtualHost>
* [+ ~$ E/ l7 H5 f然后分别创建目录 7 @) \, l, R- D7 ?" z
/home/httpd/sales.yourdomain.com, # ?. i2 C, C9 A( O  _* c! c
/var/log/httpd/sales.yourdomain.com 8 F8 Z" _4 M9 w* o8 i
放相应的网站内容到目录/home/httpd/sales.yourdomain.com下即可,并确保
/ x, k9 I" |) d( k9 h你内部的DNS指定sales.yourdomain.com的A记录到IP地址192.168.0.2 。 2 c3 n* r; K; ~* x4 Q6 T. d- @- M
注:这种基于IP的虚拟主机有一个缺点,就是你需要更多的IP地址去服务各自的
% L3 C- u0 t' y+ ~8 d虚拟主机,如果你仅仅有一个IP地址,那么你将可以考虑用基于名字的虚拟主机 # t' ^; N2 ?! p
方案。 0 c# J+ D* n8 B- c4 e

8 d6 q, s3 y) \! o6 D2.基于名字的虚拟主机:
9 B, f. q2 F% l2 D, _  它的优势就是不需要更多的IP地址,容易配置,不需要其它软硬件,现代的
9 i) k6 I1 a- m0 h! W  ^浏览器大多都支持这种方式。与基于IP的虚拟主机一样,你需要编辑文件 + @4 Y, i) z9 p1 F
/etc/httpd/conf/httpd.conf 1 n: r* b% S: g4 `  b/ b% w- E
NameVirtualHost 192.168.0.1
2 ^7 U" w7 v4 [3 C<VirtualHost 192.168.0.1>
1 s+ S) r: K% g5 ~ServerAdmin webmaster@yourdomain.com
8 e( ~" V+ c' I0 q7 i! ~$ vDocumentRoot /home/httpd/sales.yourdomain.com 6 F7 z: f% [0 p- c6 h9 X( k
ServerName sales.yourdomain.com 4 m" C% l  F, A" E, H! G; I) q
ErrorLog /var/log/httpd/sales.yourdomain.com/error_log
) G4 Q) g- n0 |TransferLog /var/log/httpd/sales.yourdomain.com/access_log
) I2 H3 q, c8 t5 d& }" p* h</VirtualHost>
( M7 p/ R' V* |9 l+ Q' U0 f4 s<VirtualHost 192.168.0.1>
: v8 {" X7 O6 x1 Q$ jServerAdmin webmaster@yourdomain.com 2 \# H% z' p3 r, n# n0 k
DocumentRoot /home/httpd/hr.yourdomain.com   Y3 Z8 s; x: H* `8 P* }! }# L
ServerName hr.yourdomain.com , X" `: \# a0 s2 k2 k
ErrorLog /var/log/httpd/hr.yourdomain.com/error_log
. U3 I. d; A' i# l3 Q" X- y4 eTransferLog /var/log/hr.yourdomain.com/access_log
: y  H' r* Z* z+ @</VirtualHost>
9 ~+ W6 b, e( Z4 r1 d. p$ _! W8 \注: 你需要加NameVirtualHost 指示在最前面,下面依次为各个虚拟主机, ; x: Q3 F- d6 g! C1 ^& W
为了让它工作,你需要把sales.yourdomain.com, hr.yourdomain.com的DNS + i) ~# @7 A; p! i, d2 w: i
都指向IP地址192.168.0.1
/ j! ~6 Z$ g: {9 q  `上面的两种都将工作,如果是在外部网段,在互联网上提供WWW服务,你可能   h8 H6 d6 f- R: y) G
没有足够的真实IP地址来支持多个虚拟主机,便可用基于名字的虚拟主机方案,
: h) M1 g( c% k8 z4 o& S若是在内部网段上,你有较多的内部保留IP地址,将没有太大的区别。 9 S, F5 s! H+ N; X: D
提示:上面所提到的相对目录可以用绝对路径代替,如: 6 _! T, E6 E2 l1 q) _0 p
/home/httpd/hr.yourdomain.com 可改为 D:/Inetpub/wwwroot, E; `9 H+ c# m" Y# M
==================END=======================
' x* \# b4 j. ]/ t& V* \这只是入门,只能保证你的WEB服务器能正常运,要了解更多的 PHP 及 Apache 的详细设置,还要靠大家更加深入的实践...

亲娘那
/ R8 \: L5 |  S0 ]怎么没图哈
2 S* ^: l) \8 k6 H+ K' L2 w应该图文结合啊
( P. l; t+ [$ k' h6 P& s$ W

TOP

另外可以用一个安装包安装全部PHP软件. I  L4 _5 n3 L0 I
下载地址:
( d! I+ G$ C2 ]7 _) `http://webclub.net.cn/data/phpStudy1.2.5.rar

TOP

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