返回列表 发帖

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

前言:这一篇是我亲身配置的经历,希望大家喜欢,现在网络的教程中,PHP运行在Apache“模块”方式的文章中都少了最重要的一个步骤,也就是说按其方法配置PHP不能运行,有的太过简单,有的太过复杂,所以花了点时间整理一下。
. x6 e9 U# J+ U8 c
  ~" L9 A# U. @6 r: G2 j0 |( F一、安装PHP4  Q! k* f( [2 ^0 }: P( _, q
我们需要安装的是win32版本,下载当然也是win32版本 php4.3.0-win32.zip
/ e# y; l' e: i9 \+ z7 r1.下载后,解压到c:\php目录下。, c" r) r+ x2 L3 u
2. 把c:\php目录下的php4ts.dll php4ts.lib文件都拷贝到c:\winnt\system32目录下(即window 2000系统目录下的system32目录)。
+ Z  _# H# P7 |+ a9 I  A3. 修改php.ini文件,把c:\php目录下的php.ini-dist文件改名为php.ini 用记事本或其它可编辑文本的软件把它打开。
' a3 ^- r7 U$ _' m) A# b' w! z3.1找到register_globals = Off 改为register_globals = On
( I6 k- o  W! w; r这一步是为了使部分旧的PHP程序能正常运行;* D2 j' O) n' U7 y/ X
3.2找到 extension_dir = ./ 把它改为extension_dir = c:\php\extensions
2 N" ?, l3 @; c以下内容新手请略过5 Y; z5 ~% c! i
===============新手略过开开始================
$ n8 b1 h( s+ ]2 C- \# B刚刚的修改是指定php4扩展dll文件存放的路径 由于php4默认所带的php.ini-dist中,是关掉了所有的扩展dll的功能( Windows Extensions)
4 C  e0 k( d8 l& Y( i, `;extension=php_bz2.dll5 e/ k2 h5 K6 Z7 v/ _9 b
;extension=php_cpdf.dll
+ J' p" u- ~/ _4 `; n;extension=php_crack.dll
3 ]9 _6 m, L7 c+ |;extension=php_curl.dll; v2 L# y/ }( p) H
..... $ Z, c) ~+ Q- L. o4 q8 v9 x
要做的就是把extension前面的分号去掉就行了,当然这样是不够的。因为有些extension在我们的系统是不能使用的,比如系统中没有安装 sql server的话,那么extension=php_mssql.dll就要用;(分号)把它注释掉;2 w3 t* P* V- B6 H
其中,PHP4带了两个GD扩展,请选用一个,另一个先用分号注释掉,以免出现函数无法注册的错误;+ _2 v" [& I. M4 @9 X9 v. c
如下面
- n% Y7 D6 k1 t: s/ Q5 Mextension=php_gd.dll
7 P: [! M' l2 v* S7 [' s, U;extension=php_gd2.dll0 c1 I6 r3 |+ h+ ~  r  \
按实际所须的extension=php_xxxx.dll前面的分号都去掉。3 b/ H6 u: L0 t' g3 C
=============新手略过结束================8 m+ A4 s, J- K8 s
3.3 找到session.save_path,把这一项改为 session.save_path = c:\tmp
9 E! U2 F! K( O% `% q并在C盘建立一个TMP目录: g  f; c' J6 O  F( `  D: x1 q
3.4记得要保存刚刚的修改 并把php.ini文件放置在c:\winnt目录下。
7 D+ h+ O+ K: K1 j  L* o================================================
# R$ f" t1 o$ U5 E, F二、安装MySql
3 E4 k- [4 g$ G5 F0 Y! P# R安装MySql 当然,我在MySql.com 下载的MySql是一个压缩包,要先解压出来;再点setup.exe安装;  ]- N# ^6 o9 I0 j- Z" ]
按默认安装,即安装在c:\MySql下,安装完后,按“开始”菜单中的“运行”打进cmd进入dos窗口,进到c:\MySql\bin 目录;
! M8 j! \: ^% g  X  A! r运行mysqld-nt --install (将会出现一个Dos窗口,随即自动关闭!如果没有出任何信息,即安装到service成功!)
: g+ ?2 q  t( T9 y* q% ^- t4 ~从“开始”菜单“程序”=》“管理工具”=》“服务”,打开后,将会找到MySql,点击mouse右键 选择启动 回到刚刚的Dos窗口" ^6 Z7 Q. @5 [3 V3 @# t- N  ~
即c:\MySql\bin目录下 运行mysqladmin -u root password 123 即把root用户的密码设置为123 这一步,如果没有出错,说明初始化root密码成功;
( k( j  \# A7 Y& H( K8 \  D当然从本机进入MySql是不需要用户名和密码,但用php 程序或是其它程序连接MySql时就要用到;
  B6 g; y- y7 s测试进入 第一种方法:直接动行MySql进入MySql 的dos管理状态;+ m0 ?% r9 T7 Q: D7 \
第二种方法:运行MySql -uroot -p MySql将会提示让您输入密码,密码当然就是刚刚设置的123(当然,得按设置的密码喽,不一定得设置是123)- M& W  i  D9 G  B" J; j  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> : \( T7 I  F+ ?+ y/ S' X
即安装MySql成功。$ V4 l; E, s0 X, H/ `
==========================================
+ S. _0 t$ E3 m, a* _/ O3 s; x$ h三、安装Apache 1.3.x 及 PHP运行设置
' `- d- y6 i- J9 f1.首先下载Apache,Apache软件一般叫作apache_1_3_x.win32.exe。运行它。它会问你将Apache安装到什么地方,为他系统安全及操作容易,我们不要使用默认路径,你可以设为c:\Apache或C:\,因为马上你就要修改它的配置文件。! ?# Q+ E; a" N& Q/ x) S
如果安装没出什么错的话,Apache就可以用了。有很多readme文件可供参考,但仅有一个文件是讲Win32平台的,包括Window 9x和Windows NT。 4 T( Q2 D6 l2 D$ D) {2 |0 _
有两种方式使 PHP 工作于 Windows 下的 Apache 1.3.x。一种是 CGI 方式(php.exe),另一种是使用 Apache 模块 DLL。不管哪种方式都需要停止 Apache,编辑 httpd.conf 来配置 Apache 以加入PHP支持。 ) n4 v- G* |1 V& ~& _# K
值得在这里指出现在 Windows 下的 SAPI 模块更加稳定了,我们推荐使用模块方式,因为更加透明和安全。 2 J: p+ K+ q/ |/ R2 `
尽管有几种不同方法在 Apache 下配置 PHP,但是对新手来说还是非常简单易用的。有关更多的 httpd.conf 配置指令请参考 Apache 文档。
8 \$ x: s6 g- Y  ]6 A& ^! Z* f0 y% D. ~如果你按照手工安装步骤一节中的说明把 PHP 解压缩到了 c:\php\ 目录下,那么需要加入以下三行到 Apache 配置文件中以 CGI 方式安装:
9 N% I; |2 ~+ j6 T9 t8 i9 I3 y4 h( Z
ScriptAlias /php/ "c:/php/"
" @8 r$ R" _. I; tAddType application/x-httpd-php .php .phtml 1 {8 R1 x) \+ {
Action application/x-httpd-php "/php/php.exe" . B6 S- e$ |3 n2 w" u7 g& t
注意上面的第二行在原来的 httpd.conf 中就有的,不过被注释了。还有记住用你自己放置 PHP 的路径替换 c:/php/。 1 g* |3 ]6 G" ?4 `9 `" X2 w
) O3 K, y$ ~3 l1 I
警告
" j, |1 ]$ g( l6 W9 r在 CGI 方式下,你的服务器可能会受到几种攻击的影响。请学习如何防止攻击。 3 ]8 X' {6 B- S" G3 B

5 K* q, H& Z& C, d2 g如果你想在 Apache 中用模块方式使用 PHP,确认把 php4ts.dll 拷贝到 windows/system(Windows 9x/Me)或者 winnt/system32(Windows NT/2000)或者 windows/system32(Windows XP)目录下,覆盖原来的文件。然后在 Apache 配置文件 httpd.conf 中加入以下两行:
1 a8 V* v- B2 ]1 m) ^
7 D6 t: n$ P6 V" s用自己喜爱的编辑器打开 httpd.conf,找到 LoadModule 指令的部分,在其列表的最后部分加上如下一行,+ z4 G: M- Y+ S! N  G5 z- |
对 PHP 4:; Z0 k) @" M) L* j2 J
LoadModule php4_module c:/php/sapi/php4apache.dll
, O. L3 t* t+ P, J对 PHP 5:
4 k6 m6 Y" z5 z( a& [& U% ILoadModule php5_module "c:/php/sapi/php5apache.dll"
% \' l+ k) ~4 k你可能发现在用 Windows Installer 安装了 Apache 之后需要为用 AddModule 指令定义 mod_php4.c。尤其是在定义了 ClearModuleList 指令时格外重要,向下滚动几行可以找到该指令。你将会看到 AddModule 项目的列表,在列表的最后加上这一行:
: ~4 a& R* m: o1 R6 g' bAddModule mod_php4.c
4 i. P- y" q- N对于 PHP 5 则为:
4 O- E+ X! V; J2 o1 ?! [AddModule mod_php5.c
! G" x$ Z8 G3 g* q搜索类似 # AddType allows you to tweak mime.types 的短语,你会找到一些 AddType 的项目,并且在列表的最后有这一行: AddType application/x-httpd-php .php。你可以在这里选择任何想用 PHP 解析的后缀。.php 只是所建议的一个。甚至可以包括 .html,也可以加上 .php3 来向下兼容。 * H  T7 Z8 n8 W

& B' H  ?& V! e1 [修改了配置文件之后记住重新启动 Apache,例如如果你的 Apache 是作为 Windows 的服务安装的,NET STOP APACHE 后面接上 NET START APACHE。或者用你通常使用的快捷方式。 & ^6 Y; ~& t: `9 k8 `
有两种方式使用源程序语法彩色显示特色,但是取决于你的安装方法。如果你配置了 Apache 的 SAPI 模块方式使用 PHP,那么在 httpd.conf 中(和插入 AddType application/x-httpd-php .php 是同一个位置)加入下面一行就可以使用本特色:AddType application/x-httpd-php-source .phps。
- K( B3 \. W" W& _! X- f如果你用 CGI 方式使用 PHP,那你需要用 show_source() 函数。建立一个 PHP 文件,加入以下代码:<?php show_source ("original_php_script.php"); ?>。用你想要显示源代码的文件名替换掉 original_php_script.php。
% {, ]  P) q0 t) o注: 在 Windows-Apache 组合中,所有路径中的反斜线例如 "c:\directory\file.ext" 都必须转换成斜线,如 "c:/directory/file.ext"。
2 C8 x, H( y2 l============================================5 A" O$ \8 k/ ~7 i( H# H1 v
四、实现Apache虚拟主机的两种方案
7 _6 ^1 v+ Q- ~4 J简介:这里说的虚拟主机是指在一台机器上仅运行一个httpd后台程序
9 ?9 }6 X  {) d9 `支持多个Apache服务器,如在公司财务部门有一台web服务器,名为
# }% `1 C1 E; ^account.yourdomain.com,同时又想为sales部门建立网站,网站内容也
7 H4 r1 v5 D6 O+ x放在该机器上,通过sales.yourdomain.com访问,这就要用到虚拟主机 . e7 Z7 s. @0 ]! T& E
设置。
$ k+ n: u* b) L3 v; i- {2 m设置Apache虚拟主机通常有两种方案
1 h1 [6 X7 K9 w! I+ _" M3 Y1.基于IP的虚拟主机 ( S7 o; H# B5 r* E6 v+ E
  这种方式需要在机器上设置IP别名,象上面的例子,在一台机器的 6 g% O! L+ F' M8 n. r
网卡上绑定多个IP地址去服务多个虚拟主机。
, ]1 X  c% }+ {/ g! ^& ]$ Q若该机器的IP地址为192.168.0.1(account.yourdomain.com),首先 2 D" v/ Y) {8 z3 o2 u& p
你要设置IP别名(假设用192.168.0.2作为其别名IP)。加下面的行到 % a" m* m( |+ b! ?
/etc/rc.d/rc.local,确保每次启动后自动运行。 $ f& i- K! Z6 w9 j* y1 w! ?
#/sbin/ifconfig eth0:0 192.168.0.2 netmask 255.255.255.0 broadcast \
8 R, {. a1 x* h5 a1 i6 C: U; U192.168.0.255 up
7 J6 l& @) `  G1 _3 N+ Z#/sbin/route add -host 192.168.0.2 eth0:0
5 j+ P; m3 M! u8 o% i( }4 l# c然后你需要设置/etd/httpd/conf/httpd.conf文件:
0 D5 ?9 }% u% m9 [<VirtualHost 192.168.0.2> : l$ |+ u  Z: N! T& S! \) u
ServerAdmin webmaster@yourdomain.com 4 i- I" {: p3 P/ w. @2 C
DocumentRoot /home/httpd/sales.yourdomain.com & x$ i* }" b8 X
ServerName sales.yourdomain.com " H2 g& g/ G* w$ `( c$ \% x
ErrorLog /var/log/httpd/sales.yourdomain.com/error_log
3 Z5 ~' s/ G. |6 _! t/ [) z0 DTransferLog /var/log/httpd/sales.yourdomain.com/access_log
5 p+ d+ _! k+ Z, s. b! L</VirtualHost> 3 t! ^! k6 s: ~, t! X
然后分别创建目录
# V( P$ f, w# g, G. a) k/home/httpd/sales.yourdomain.com, $ l4 n! _$ c, t5 E+ |7 ~% C$ N
/var/log/httpd/sales.yourdomain.com % a# Y; _& i- T1 f3 \
放相应的网站内容到目录/home/httpd/sales.yourdomain.com下即可,并确保
2 ?" O* ^& u% {! G你内部的DNS指定sales.yourdomain.com的A记录到IP地址192.168.0.2 。
% A' _( w; s7 J" N; G. W& H5 ]3 g注:这种基于IP的虚拟主机有一个缺点,就是你需要更多的IP地址去服务各自的
$ H# {9 r, P, S( m# y' E" }虚拟主机,如果你仅仅有一个IP地址,那么你将可以考虑用基于名字的虚拟主机
5 |4 R/ M$ `6 U8 ?$ ~9 m6 \1 u' a8 G7 b: j方案。
8 G$ H# k, S" e- q- w+ _- k8 \1 r" z: v! D. K4 `
2.基于名字的虚拟主机: + P# d  w2 h" a" i( _" M8 y
  它的优势就是不需要更多的IP地址,容易配置,不需要其它软硬件,现代的
  }: Y- @0 s5 A$ H浏览器大多都支持这种方式。与基于IP的虚拟主机一样,你需要编辑文件 8 X( m2 ^  v$ I
/etc/httpd/conf/httpd.conf / \$ g3 l5 J& H! a) J2 [6 g3 f. d
NameVirtualHost 192.168.0.1 3 o* v! i- t) N+ ~
<VirtualHost 192.168.0.1> 9 ]+ o# n$ _$ `3 ~, m! a. F& r1 C
ServerAdmin webmaster@yourdomain.com ( Z: E+ q/ D5 Y1 n) i4 O, m
DocumentRoot /home/httpd/sales.yourdomain.com
3 j. D& ^1 ~' {  @' p. W1 V; f  bServerName sales.yourdomain.com ' A6 G( b/ V3 G
ErrorLog /var/log/httpd/sales.yourdomain.com/error_log 4 q/ S. O8 w- G
TransferLog /var/log/httpd/sales.yourdomain.com/access_log ' Z& r% D% I( o' a5 k% G
</VirtualHost>
- h$ w/ a+ X% n. T; }% |- c<VirtualHost 192.168.0.1> 1 f: C4 N; [# Y* S6 S
ServerAdmin webmaster@yourdomain.com 0 r3 j: U/ Y+ z* S& k
DocumentRoot /home/httpd/hr.yourdomain.com ) z) p" C: n" z6 N  e$ E
ServerName hr.yourdomain.com & d) k7 T+ K" L' k3 T
ErrorLog /var/log/httpd/hr.yourdomain.com/error_log 5 v( x/ H9 H( Y. D
TransferLog /var/log/hr.yourdomain.com/access_log
. O$ D4 J; Z: c  d4 Q$ c7 @</VirtualHost> ! j$ `9 b  ], B5 j  `8 [6 U5 Q
注: 你需要加NameVirtualHost 指示在最前面,下面依次为各个虚拟主机,
  f. T9 B! A3 f. V5 y% j0 O为了让它工作,你需要把sales.yourdomain.com, hr.yourdomain.com的DNS   X- u' K9 y3 k8 y  C
都指向IP地址192.168.0.1
  a( a- H3 R9 N5 f8 Z上面的两种都将工作,如果是在外部网段,在互联网上提供WWW服务,你可能 " i- k- h% O1 M4 f- w
没有足够的真实IP地址来支持多个虚拟主机,便可用基于名字的虚拟主机方案,
% d& ?$ P' `, k# W8 q( k若是在内部网段上,你有较多的内部保留IP地址,将没有太大的区别。 " e8 n# t; q# n5 j, W# h. @
提示:上面所提到的相对目录可以用绝对路径代替,如:
9 ^/ K- k$ h5 g1 ~/home/httpd/hr.yourdomain.com 可改为 D:/Inetpub/wwwroot
7 Y7 x. e& m% ~4 }6 f' C==================END=======================, S# _6 z% z0 I- K. M1 a  a' I
这只是入门,只能保证你的WEB服务器能正常运,要了解更多的 PHP 及 Apache 的详细设置,还要靠大家更加深入的实践...

亲娘那# e! M* h- [' M# j2 R& I2 o
怎么没图哈
  {$ ~; \8 P) {. M  e. W应该图文结合啊% ~. [3 e( I0 N( G* h

TOP

另外可以用一个安装包安装全部PHP软件
# [. |# ]. R$ y  d% `  t下载地址:
" K( t$ V' E8 J: |/ H# P- P5 chttp://webclub.net.cn/data/phpStudy1.2.5.rar

TOP

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