  
- UID
- 1
- 帖子
- 738
- 精华
- 28
- 积分
- 14171
- 金币
- 2376
- 威望
- 1647
- 贡献
- 1324
|
Windows下的 Apache + PHP + MySql + 虚拟主机 设置全功略
前言:这一篇是我亲身配置的经历,希望大家喜欢,现在网络的教程中,PHP运行在Apache“模块”方式的文章中都少了最重要的一个步骤,也就是说按其方法配置PHP不能运行,有的太过简单,有的太过复杂,所以花了点时间整理一下。" B: |7 j; M$ @# Q9 J. b
Z4 d3 U; I" M7 ?一、安装PHP4
+ H6 d# J/ T+ g5 S/ m2 @我们需要安装的是win32版本,下载当然也是win32版本 php4.3.0-win32.zip* T7 Y$ o* ~8 q
1.下载后,解压到c:\php目录下。
9 V; O' o/ j8 K0 \2. 把c:\php目录下的php4ts.dll php4ts.lib文件都拷贝到c:\winnt\system32目录下(即window 2000系统目录下的system32目录)。- u$ b7 w C* l8 ~/ U- b7 J
3. 修改php.ini文件,把c:\php目录下的php.ini-dist文件改名为php.ini 用记事本或其它可编辑文本的软件把它打开。& Z- j0 p1 a- D( `1 r
3.1找到register_globals = Off 改为register_globals = On
. d7 `. _7 S; ^9 h0 i& }这一步是为了使部分旧的PHP程序能正常运行;
8 S' M9 H7 J2 i. M5 Q, y' u3.2找到 extension_dir = ./ 把它改为extension_dir = c:\php\extensions
$ Q- E% R/ h7 v8 E! Y2 g' K; R以下内容新手请略过2 D ^( k: ? z# [2 X/ F3 e q( f
===============新手略过开开始================
3 ^; \# r( k% k刚刚的修改是指定php4扩展dll文件存放的路径 由于php4默认所带的php.ini-dist中,是关掉了所有的扩展dll的功能( Windows Extensions) / k/ c1 u. }1 w1 D: V
;extension=php_bz2.dll; C9 s; E6 l6 i/ A
;extension=php_cpdf.dll
1 f2 w2 ?$ K7 p7 r+ C& \;extension=php_crack.dll
/ `# L6 V7 z5 y& j3 B& F# c };extension=php_curl.dll4 n4 x' u' p j( J; `* J" ]
..... ( y, q( K1 D3 d* i# k- C& ^) L7 K
要做的就是把extension前面的分号去掉就行了,当然这样是不够的。因为有些extension在我们的系统是不能使用的,比如系统中没有安装 sql server的话,那么extension=php_mssql.dll就要用;(分号)把它注释掉;
0 e: P3 t: t/ p6 n5 r8 V其中,PHP4带了两个GD扩展,请选用一个,另一个先用分号注释掉,以免出现函数无法注册的错误;
6 ]- q5 B& E! E" e如下面
Y, {$ `; s: S% J, S$ Lextension=php_gd.dll
( n/ v: u$ |, D/ B' a$ i+ I0 R' o8 v;extension=php_gd2.dll5 |; o7 d! M* `9 Z4 m
按实际所须的extension=php_xxxx.dll前面的分号都去掉。
/ v, z8 ~% ~8 i, d5 E. o1 P=============新手略过结束================
6 R, k# Z/ z7 y5 J7 F( b3.3 找到session.save_path,把这一项改为 session.save_path = c:\tmp
4 |4 d( F, U; H" G% K并在C盘建立一个TMP目录
; l, Q5 n( @, G) d) E3.4记得要保存刚刚的修改 并把php.ini文件放置在c:\winnt目录下。( |. ]/ J& p# [/ }1 c* \; c" B8 p( W
================================================* d0 W8 {3 `3 S# ]; |7 {5 S) ]
二、安装MySql" R9 E) u; d, C7 ^$ v
安装MySql 当然,我在MySql.com 下载的MySql是一个压缩包,要先解压出来;再点setup.exe安装;
& _0 |1 ]1 z3 T& K) O按默认安装,即安装在c:\MySql下,安装完后,按“开始”菜单中的“运行”打进cmd进入dos窗口,进到c:\MySql\bin 目录;: j# S# ~# I3 |# F r8 i" X+ C
运行mysqld-nt --install (将会出现一个Dos窗口,随即自动关闭!如果没有出任何信息,即安装到service成功!)
. t% [- j# e2 t: r从“开始”菜单“程序”=》“管理工具”=》“服务”,打开后,将会找到MySql,点击mouse右键 选择启动 回到刚刚的Dos窗口0 W8 j6 y- I7 F, k# R
即c:\MySql\bin目录下 运行mysqladmin -u root password 123 即把root用户的密码设置为123 这一步,如果没有出错,说明初始化root密码成功;# I- _& X, F; q: h6 o6 K- q' o# x
当然从本机进入MySql是不需要用户名和密码,但用php 程序或是其它程序连接MySql时就要用到;
+ M5 g* s7 x9 H测试进入 第一种方法:直接动行MySql进入MySql 的dos管理状态;
5 I; ]" ] |) k5 e* H第二种方法:运行MySql -uroot -p MySql将会提示让您输入密码,密码当然就是刚刚设置的123(当然,得按设置的密码喽,不一定得设置是123)
3 x* w$ _* y; s+ a$ `7 L7 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> $ ?! ^; q7 k% f/ y2 ?8 O& f" `
即安装MySql成功。
7 w/ q. q0 k$ @& g6 a2 Q==========================================
4 O$ z! w6 @' N2 P三、安装Apache 1.3.x 及 PHP运行设置 `0 F: q: V% J5 |0 m1 p
1.首先下载Apache,Apache软件一般叫作apache_1_3_x.win32.exe。运行它。它会问你将Apache安装到什么地方,为他系统安全及操作容易,我们不要使用默认路径,你可以设为c:\Apache或C:\,因为马上你就要修改它的配置文件。( I. i, \9 i0 O; i# s1 E1 X
如果安装没出什么错的话,Apache就可以用了。有很多readme文件可供参考,但仅有一个文件是讲Win32平台的,包括Window 9x和Windows NT。
; T( x% d+ n' @有两种方式使 PHP 工作于 Windows 下的 Apache 1.3.x。一种是 CGI 方式(php.exe),另一种是使用 Apache 模块 DLL。不管哪种方式都需要停止 Apache,编辑 httpd.conf 来配置 Apache 以加入PHP支持。
- e3 }* u% w. T* X9 w T& o值得在这里指出现在 Windows 下的 SAPI 模块更加稳定了,我们推荐使用模块方式,因为更加透明和安全。 , c$ m5 W+ d3 Z3 x3 J4 @
尽管有几种不同方法在 Apache 下配置 PHP,但是对新手来说还是非常简单易用的。有关更多的 httpd.conf 配置指令请参考 Apache 文档。
& w" `! b9 a1 G6 d$ K9 o. {7 B如果你按照手工安装步骤一节中的说明把 PHP 解压缩到了 c:\php\ 目录下,那么需要加入以下三行到 Apache 配置文件中以 CGI 方式安装:
7 @1 J; z. ?) V/ i8 v1 S
; M h; t3 e& h5 i( w/ j6 TScriptAlias /php/ "c:/php/" / r2 t8 Y7 Q2 E% r+ c
AddType application/x-httpd-php .php .phtml
; ?; m, d3 d6 }% LAction application/x-httpd-php "/php/php.exe"
0 n- E- j7 v" @; J注意上面的第二行在原来的 httpd.conf 中就有的,不过被注释了。还有记住用你自己放置 PHP 的路径替换 c:/php/。 , T- q& r$ I3 j* C! u' L
# f1 v) m! \- d5 t/ `警告
6 N1 L% ^% x4 t在 CGI 方式下,你的服务器可能会受到几种攻击的影响。请学习如何防止攻击。 # m- i1 F7 F/ i) c8 @ v5 v9 ]
5 @& l+ H, d& N, E" k" d' a
如果你想在 Apache 中用模块方式使用 PHP,确认把 php4ts.dll 拷贝到 windows/system(Windows 9x/Me)或者 winnt/system32(Windows NT/2000)或者 windows/system32(Windows XP)目录下,覆盖原来的文件。然后在 Apache 配置文件 httpd.conf 中加入以下两行:
A1 h3 m! P( e) F. d3 R9 p8 [7 r. q/ {0 ^- I0 {! _% J
用自己喜爱的编辑器打开 httpd.conf,找到 LoadModule 指令的部分,在其列表的最后部分加上如下一行,! S. J P# T6 f
对 PHP 4:
7 N! o. C" Q0 Y) _' z% c# ^2 [% m: HLoadModule php4_module c:/php/sapi/php4apache.dll$ P) ^' }, C3 J: k
对 PHP 5:
0 o+ s& I6 y4 l. M MLoadModule php5_module "c:/php/sapi/php5apache.dll"
S: J5 A0 c& N4 f4 z* \& w你可能发现在用 Windows Installer 安装了 Apache 之后需要为用 AddModule 指令定义 mod_php4.c。尤其是在定义了 ClearModuleList 指令时格外重要,向下滚动几行可以找到该指令。你将会看到 AddModule 项目的列表,在列表的最后加上这一行:
. M3 c% X, n8 D5 ?AddModule mod_php4.c- q, S) E1 H. g. v5 C2 M0 [
对于 PHP 5 则为:5 T h3 X5 f q- | d
AddModule mod_php5.c
3 J$ K7 V6 b: h$ D, w搜索类似 # AddType allows you to tweak mime.types 的短语,你会找到一些 AddType 的项目,并且在列表的最后有这一行: AddType application/x-httpd-php .php。你可以在这里选择任何想用 PHP 解析的后缀。.php 只是所建议的一个。甚至可以包括 .html,也可以加上 .php3 来向下兼容。
2 P8 `8 Q. c: p% y" Z
$ D0 i( M7 I2 l' r' @. j8 w修改了配置文件之后记住重新启动 Apache,例如如果你的 Apache 是作为 Windows 的服务安装的,NET STOP APACHE 后面接上 NET START APACHE。或者用你通常使用的快捷方式。 5 V! Q. m) q$ O3 v
有两种方式使用源程序语法彩色显示特色,但是取决于你的安装方法。如果你配置了 Apache 的 SAPI 模块方式使用 PHP,那么在 httpd.conf 中(和插入 AddType application/x-httpd-php .php 是同一个位置)加入下面一行就可以使用本特色:AddType application/x-httpd-php-source .phps。
( N: D& m3 B. l1 S0 p. K% p如果你用 CGI 方式使用 PHP,那你需要用 show_source() 函数。建立一个 PHP 文件,加入以下代码:<?php show_source ("original_php_script.php"); ?>。用你想要显示源代码的文件名替换掉 original_php_script.php。 9 C1 \: l* l+ q+ h9 A
注: 在 Windows-Apache 组合中,所有路径中的反斜线例如 "c:\directory\file.ext" 都必须转换成斜线,如 "c:/directory/file.ext"。
! \- J: |" |: R4 m0 h============================================
( _/ R, C I" w. ]5 m4 _: R四、实现Apache虚拟主机的两种方案, F4 x0 a8 U9 P/ i! z
简介:这里说的虚拟主机是指在一台机器上仅运行一个httpd后台程序
7 n4 C/ o# ?) P( w; h3 z支持多个Apache服务器,如在公司财务部门有一台web服务器,名为 $ `/ F( R, o! K
account.yourdomain.com,同时又想为sales部门建立网站,网站内容也
2 m' f# M$ u8 T* j放在该机器上,通过sales.yourdomain.com访问,这就要用到虚拟主机
# j; M. ]7 N D, ?设置。
9 ]6 h! N- [ e4 F3 P设置Apache虚拟主机通常有两种方案 4 i* N9 h' z5 S) X" N) ~2 Z: \
1.基于IP的虚拟主机 8 p I0 [7 ?$ v' w. m: K- e4 n
这种方式需要在机器上设置IP别名,象上面的例子,在一台机器的 * {+ W# H; d( g6 H* t1 U
网卡上绑定多个IP地址去服务多个虚拟主机。
! }7 q& C. Z5 ^7 y若该机器的IP地址为192.168.0.1(account.yourdomain.com),首先 ) o( E1 {2 Y. q; y* O! [
你要设置IP别名(假设用192.168.0.2作为其别名IP)。加下面的行到 0 e1 `4 H% z5 ]# U: g4 O
/etc/rc.d/rc.local,确保每次启动后自动运行。 4 k1 {) Y" u0 X( X
#/sbin/ifconfig eth0:0 192.168.0.2 netmask 255.255.255.0 broadcast \ ' ^. n9 N, x \9 D
192.168.0.255 up
# X# z$ z$ c8 Y# d0 o* L#/sbin/route add -host 192.168.0.2 eth0:0 7 g( c, W9 A c+ V9 @+ @
然后你需要设置/etd/httpd/conf/httpd.conf文件: 1 A7 {/ c; F# c- [$ T
<VirtualHost 192.168.0.2>
" T+ C' l7 s: F2 K4 a; o( _ServerAdmin webmaster@yourdomain.com
w, v* Z$ N( h; p! m- Z5 v7 ODocumentRoot /home/httpd/sales.yourdomain.com
9 `- Q" Z. `' S' t. v2 Y9 h; `1 QServerName sales.yourdomain.com
4 h; m1 B# v; ^3 o: O# ?# @: B* }ErrorLog /var/log/httpd/sales.yourdomain.com/error_log
; l; Q, p- w: M h0 uTransferLog /var/log/httpd/sales.yourdomain.com/access_log
+ k0 d @& [6 ~9 k5 j</VirtualHost>
0 ?0 {/ [. D8 q* h然后分别创建目录
, _1 ^9 ^- e/ D6 W: r. g! b/home/httpd/sales.yourdomain.com, / o4 ` l" S8 @. I8 G, Q4 @
/var/log/httpd/sales.yourdomain.com 0 H3 A, ~' f) C( k
放相应的网站内容到目录/home/httpd/sales.yourdomain.com下即可,并确保 + h% W; C0 k3 B4 p% d
你内部的DNS指定sales.yourdomain.com的A记录到IP地址192.168.0.2 。 ) x9 c& B6 c- x0 t
注:这种基于IP的虚拟主机有一个缺点,就是你需要更多的IP地址去服务各自的 9 Z: y. [2 g8 o
虚拟主机,如果你仅仅有一个IP地址,那么你将可以考虑用基于名字的虚拟主机 ( H! i6 t* o7 H$ @
方案。
- ~5 Z; O2 @3 z8 |' k# r
- }" i8 t( @7 Z. } {, H- o2.基于名字的虚拟主机:
J6 n0 Q. S/ r& a6 `/ a$ k 它的优势就是不需要更多的IP地址,容易配置,不需要其它软硬件,现代的
$ B& f$ O. M. ~. z* f. S浏览器大多都支持这种方式。与基于IP的虚拟主机一样,你需要编辑文件 " u% h5 C% J/ z' g/ x5 D
/etc/httpd/conf/httpd.conf
/ X8 H Q& W& K) ]3 XNameVirtualHost 192.168.0.1
9 ?7 E& \8 I8 T1 F3 U9 V' [6 ?<VirtualHost 192.168.0.1> ( I8 \0 G/ d- O; u) W6 K _
ServerAdmin webmaster@yourdomain.com $ J* ]" v' ]1 Z& e' x
DocumentRoot /home/httpd/sales.yourdomain.com % X" h* t! g- D' s4 ], t
ServerName sales.yourdomain.com
# q7 G4 c. Y- PErrorLog /var/log/httpd/sales.yourdomain.com/error_log , q; d, P* V% }9 k- z
TransferLog /var/log/httpd/sales.yourdomain.com/access_log + O9 s; \8 C$ ?+ X3 x) q+ j$ _
</VirtualHost>
3 Q/ g/ q0 i5 i! D& h1 [<VirtualHost 192.168.0.1>
4 w2 a% i3 S# b& ~& [ServerAdmin webmaster@yourdomain.com * C4 ^6 |3 ~) Y( l3 L
DocumentRoot /home/httpd/hr.yourdomain.com ; N" _/ E) i" r9 x
ServerName hr.yourdomain.com
0 y- `- N$ C& a# `ErrorLog /var/log/httpd/hr.yourdomain.com/error_log 5 ]6 j- J( o' H: m5 |' E
TransferLog /var/log/hr.yourdomain.com/access_log - Z; q9 Y9 ?4 e% N
</VirtualHost> & n8 h4 o, m8 z8 }) g9 \
注: 你需要加NameVirtualHost 指示在最前面,下面依次为各个虚拟主机,
- ^$ G1 a3 ~- ^8 T$ _# \2 q为了让它工作,你需要把sales.yourdomain.com, hr.yourdomain.com的DNS
8 l* w/ _8 p4 N都指向IP地址192.168.0.1
X' ~- R4 ^1 U4 G* m/ O6 D3 d上面的两种都将工作,如果是在外部网段,在互联网上提供WWW服务,你可能
( }0 \; ~5 T! q2 \( b. J3 A没有足够的真实IP地址来支持多个虚拟主机,便可用基于名字的虚拟主机方案, . I% Q8 Q7 v% i5 A/ E) F
若是在内部网段上,你有较多的内部保留IP地址,将没有太大的区别。 ; S5 u( [0 f+ z7 i( g9 F+ ?
提示:上面所提到的相对目录可以用绝对路径代替,如:
9 O B9 n! P8 e" ^, }1 p& r/home/httpd/hr.yourdomain.com 可改为 D:/Inetpub/wwwroot
5 \! O; n w. l' `==================END=======================3 b- U2 j; x" v3 c
这只是入门,只能保证你的WEB服务器能正常运,要了解更多的 PHP 及 Apache 的详细设置,还要靠大家更加深入的实践... |
|