获得本站免费赞助空间请点这里
返回列表 发帖

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

前言:这一篇是我亲身配置的经历,希望大家喜欢,现在网络的教程中,PHP运行在Apache“模块”方式的文章中都少了最重要的一个步骤,也就是说按其方法配置PHP不能运行,有的太过简单,有的太过复杂,所以花了点时间整理一下。
) {; H3 g3 H( S" D1 W  }7 v# k3 v5 z2 q: t; Y; a, h
一、安装PHP4
: s: B" T; Q+ ], a我们需要安装的是win32版本,下载当然也是win32版本 php4.3.0-win32.zip1 S/ i: L: t9 t8 c6 _$ u4 a
1.下载后,解压到c:\php目录下。
; m* R7 n! N4 ]6 t2. 把c:\php目录下的php4ts.dll php4ts.lib文件都拷贝到c:\winnt\system32目录下(即window 2000系统目录下的system32目录)。
  w! J- \/ p! _3. 修改php.ini文件,把c:\php目录下的php.ini-dist文件改名为php.ini 用记事本或其它可编辑文本的软件把它打开。
$ v& @" N7 ~) v# M! M- n/ [* s9 W3.1找到register_globals = Off 改为register_globals = On
( o  r; G0 A" m: X3 B4 O7 g+ a这一步是为了使部分旧的PHP程序能正常运行;7 s5 ^9 G, A. v2 k
3.2找到 extension_dir = ./ 把它改为extension_dir = c:\php\extensions, ?8 b/ b: a5 C' m3 L$ z
以下内容新手请略过
9 s2 \# [6 L1 x  q/ V& N8 {  q===============新手略过开开始================
) M, q7 e/ j! Y# @  r刚刚的修改是指定php4扩展dll文件存放的路径 由于php4默认所带的php.ini-dist中,是关掉了所有的扩展dll的功能( Windows Extensions) , M9 c+ \* S* Z
;extension=php_bz2.dll" y0 A, d( ]) U0 b# [* o  Q. O
;extension=php_cpdf.dll" i8 |/ k* s9 {7 c0 x
;extension=php_crack.dll
8 D% F0 y. [3 C;extension=php_curl.dll; R8 o) C8 k) Z. A
.....
6 r# A1 d! {: n4 m+ M& F! }要做的就是把extension前面的分号去掉就行了,当然这样是不够的。因为有些extension在我们的系统是不能使用的,比如系统中没有安装 sql server的话,那么extension=php_mssql.dll就要用;(分号)把它注释掉;
+ ?' J5 v+ \6 c  y& L) C+ p其中,PHP4带了两个GD扩展,请选用一个,另一个先用分号注释掉,以免出现函数无法注册的错误;3 {' y) D5 X  K, T' u* i* Y7 |6 o" \, Q
如下面; A1 R5 X: q1 X
extension=php_gd.dll
/ N5 r- u* C' h' N  {& C( A* E, q  o( b;extension=php_gd2.dll+ j4 p- r. g, ?! p
按实际所须的extension=php_xxxx.dll前面的分号都去掉。
* i/ \& ]/ C2 X! _) b=============新手略过结束================
' J4 {: p1 X0 {- I* \! A3.3 找到session.save_path,把这一项改为 session.save_path = c:\tmp
, `; x6 S% W: x* n$ o, [并在C盘建立一个TMP目录
- R8 N9 E( M1 L1 O6 D0 \3.4记得要保存刚刚的修改 并把php.ini文件放置在c:\winnt目录下。7 T: I( i( f+ [0 `5 l7 p
================================================0 q7 Y& {) D" h$ S6 w. R
二、安装MySql5 O0 y5 |  l, v
安装MySql 当然,我在MySql.com 下载的MySql是一个压缩包,要先解压出来;再点setup.exe安装;4 ~, A+ p6 }3 p
按默认安装,即安装在c:\MySql下,安装完后,按“开始”菜单中的“运行”打进cmd进入dos窗口,进到c:\MySql\bin 目录;
+ ]+ w% I' H- U2 k. ^) R+ G9 |运行mysqld-nt --install (将会出现一个Dos窗口,随即自动关闭!如果没有出任何信息,即安装到service成功!)
- q& m  x/ L. y, D5 ]从“开始”菜单“程序”=》“管理工具”=》“服务”,打开后,将会找到MySql,点击mouse右键 选择启动 回到刚刚的Dos窗口+ h3 _- L* \4 f% m
即c:\MySql\bin目录下 运行mysqladmin -u root password 123 即把root用户的密码设置为123 这一步,如果没有出错,说明初始化root密码成功;
8 c9 ~4 E! P" q2 z7 p: R% c当然从本机进入MySql是不需要用户名和密码,但用php 程序或是其它程序连接MySql时就要用到;
1 K5 S3 J4 {; W- k; D! `测试进入 第一种方法:直接动行MySql进入MySql 的dos管理状态;( J) m; q/ d8 L. P/ r: ]! c; N
第二种方法:运行MySql -uroot -p MySql将会提示让您输入密码,密码当然就是刚刚设置的123(当然,得按设置的密码喽,不一定得设置是123), r; k9 e% u) L" Y4 d) r, B4 o1 x
出现: 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>
+ ~1 H* L' L" t即安装MySql成功。+ `* X+ q* ?1 u/ S
==========================================
2 j$ y5 d0 x/ \( R6 w7 P三、安装Apache 1.3.x 及 PHP运行设置
" n$ N4 [9 S; G1.首先下载Apache,Apache软件一般叫作apache_1_3_x.win32.exe。运行它。它会问你将Apache安装到什么地方,为他系统安全及操作容易,我们不要使用默认路径,你可以设为c:\Apache或C:\,因为马上你就要修改它的配置文件。
+ _$ a0 G4 i7 k3 b# y如果安装没出什么错的话,Apache就可以用了。有很多readme文件可供参考,但仅有一个文件是讲Win32平台的,包括Window 9x和Windows NT。 3 j# q# a7 G! u( Y4 O2 `5 `
有两种方式使 PHP 工作于 Windows 下的 Apache 1.3.x。一种是 CGI 方式(php.exe),另一种是使用 Apache 模块 DLL。不管哪种方式都需要停止 Apache,编辑 httpd.conf 来配置 Apache 以加入PHP支持。
$ l1 t, o4 `+ _值得在这里指出现在 Windows 下的 SAPI 模块更加稳定了,我们推荐使用模块方式,因为更加透明和安全。
. L- Y/ {. M+ y尽管有几种不同方法在 Apache 下配置 PHP,但是对新手来说还是非常简单易用的。有关更多的 httpd.conf 配置指令请参考 Apache 文档。 ( t- t: E* l: ?5 ^0 Z9 b! n6 Z3 V# v4 U
如果你按照手工安装步骤一节中的说明把 PHP 解压缩到了 c:\php\ 目录下,那么需要加入以下三行到 Apache 配置文件中以 CGI 方式安装:
1 |+ m3 T; b! m) x/ u. f. t% N
8 @% S! b2 U& l0 t+ lScriptAlias /php/ "c:/php/"   s, K7 l1 C6 I
AddType application/x-httpd-php .php .phtml 5 ?; R+ k* Q( H3 u
Action application/x-httpd-php "/php/php.exe"
( P/ u8 K2 ?/ O7 ]0 r注意上面的第二行在原来的 httpd.conf 中就有的,不过被注释了。还有记住用你自己放置 PHP 的路径替换 c:/php/。 ) c6 o: q  A3 `5 x: u% `

+ C+ x4 r9 m) }3 l0 Q! ?警告
) b# u1 O# P) J) e  @( J  C在 CGI 方式下,你的服务器可能会受到几种攻击的影响。请学习如何防止攻击。
+ A8 n/ L6 s( l$ M) ?# w9 I
" ]+ L" V0 [+ _; ~1 i如果你想在 Apache 中用模块方式使用 PHP,确认把 php4ts.dll 拷贝到 windows/system(Windows 9x/Me)或者 winnt/system32(Windows NT/2000)或者 windows/system32(Windows XP)目录下,覆盖原来的文件。然后在 Apache 配置文件 httpd.conf 中加入以下两行:
1 d/ \4 G, j0 j
3 q" w* c- d! ?+ x5 Q# D/ ^用自己喜爱的编辑器打开 httpd.conf,找到 LoadModule 指令的部分,在其列表的最后部分加上如下一行,
: M) l4 R( r0 w7 V- g对 PHP 4:
4 l  w* }$ W% W/ [9 |/ J! a  C  |  CLoadModule php4_module c:/php/sapi/php4apache.dll
  k5 X: @  n9 `4 j7 y对 PHP 5:: s; E, r: C# h- `0 K* p* ~
LoadModule php5_module "c:/php/sapi/php5apache.dll". Z' K' G: v3 K1 T( \+ B
你可能发现在用 Windows Installer 安装了 Apache 之后需要为用 AddModule 指令定义 mod_php4.c。尤其是在定义了 ClearModuleList 指令时格外重要,向下滚动几行可以找到该指令。你将会看到 AddModule 项目的列表,在列表的最后加上这一行:
2 L5 L5 g; e# y5 D" pAddModule mod_php4.c
- g1 k1 ?2 N3 [" ?9 t; v对于 PHP 5 则为:
# T" B' z1 _8 m" c6 u8 n9 sAddModule mod_php5.c1 f7 s# }4 x9 e+ Z2 ?8 |* ]5 I
搜索类似 # AddType allows you to tweak mime.types 的短语,你会找到一些 AddType 的项目,并且在列表的最后有这一行: AddType application/x-httpd-php .php。你可以在这里选择任何想用 PHP 解析的后缀。.php 只是所建议的一个。甚至可以包括 .html,也可以加上 .php3 来向下兼容。
: k9 K( I4 {4 \6 I+ t# h2 O$ A- j' n1 C0 K# N
修改了配置文件之后记住重新启动 Apache,例如如果你的 Apache 是作为 Windows 的服务安装的,NET STOP APACHE 后面接上 NET START APACHE。或者用你通常使用的快捷方式。
7 @3 k+ {3 I9 V; Q/ x: Z有两种方式使用源程序语法彩色显示特色,但是取决于你的安装方法。如果你配置了 Apache 的 SAPI 模块方式使用 PHP,那么在 httpd.conf 中(和插入 AddType application/x-httpd-php .php 是同一个位置)加入下面一行就可以使用本特色:AddType application/x-httpd-php-source .phps。 0 g# ?: O4 \5 }5 a
如果你用 CGI 方式使用 PHP,那你需要用 show_source() 函数。建立一个 PHP 文件,加入以下代码:<?php show_source ("original_php_script.php"); ?>。用你想要显示源代码的文件名替换掉 original_php_script.php。 $ r# t  w1 O- }- s6 {+ w
注: 在 Windows-Apache 组合中,所有路径中的反斜线例如 "c:\directory\file.ext" 都必须转换成斜线,如 "c:/directory/file.ext"。* y3 X$ h; L' v  J7 ~. M: A
============================================
6 t1 {2 y+ D7 c* s% b; B2 F4 L四、实现Apache虚拟主机的两种方案9 I1 `8 v" [5 L
简介:这里说的虚拟主机是指在一台机器上仅运行一个httpd后台程序 - b, i! p  j% G9 O6 X/ w8 I3 B) `
支持多个Apache服务器,如在公司财务部门有一台web服务器,名为
$ v- [3 `% V0 \* D4 m6 jaccount.yourdomain.com,同时又想为sales部门建立网站,网站内容也 : q& [9 v& V2 x6 z* j$ n8 i6 V
放在该机器上,通过sales.yourdomain.com访问,这就要用到虚拟主机
# g! N5 u/ Y) E% a设置。
5 U! ]2 Q5 v+ W+ |3 Z设置Apache虚拟主机通常有两种方案 * x# G( h7 Y" \
1.基于IP的虚拟主机
. ?; P; t/ B5 S3 w# R# [4 H% c  这种方式需要在机器上设置IP别名,象上面的例子,在一台机器的 : G5 j- t9 g3 t! C! g7 N- _: [- C
网卡上绑定多个IP地址去服务多个虚拟主机。   Q% M" C* B& ^& n- Q) e* l' t* J+ v0 Q$ _
若该机器的IP地址为192.168.0.1(account.yourdomain.com),首先
( l  v% U, Q2 Z你要设置IP别名(假设用192.168.0.2作为其别名IP)。加下面的行到 $ r: m& B$ K; |& [, u7 D
/etc/rc.d/rc.local,确保每次启动后自动运行。 7 S, y* X* F: W! ?% l3 _7 n
#/sbin/ifconfig eth0:0 192.168.0.2 netmask 255.255.255.0 broadcast \ 7 F- {3 B/ f4 A' L* u! X
192.168.0.255 up / Q) g% L3 X+ i
#/sbin/route add -host 192.168.0.2 eth0:0 ' K3 Z# p/ Y7 D; W
然后你需要设置/etd/httpd/conf/httpd.conf文件:
$ R' w5 _7 W( J* R, E, L: ]7 F<VirtualHost 192.168.0.2> 2 P3 t6 `+ k1 V# ?2 M5 r* N5 p
ServerAdmin webmaster@yourdomain.com
% ^& q$ l! Q  \DocumentRoot /home/httpd/sales.yourdomain.com
: `  f2 X/ j8 r6 ~, \ServerName sales.yourdomain.com 9 E" Y8 _6 f' ]9 _8 D
ErrorLog /var/log/httpd/sales.yourdomain.com/error_log
4 B0 C0 b7 {/ STransferLog /var/log/httpd/sales.yourdomain.com/access_log
, }9 E  e/ o, {. t8 A0 _. X% _</VirtualHost> 1 j7 W. F  `  r
然后分别创建目录 2 E2 V! ?; _+ i! ]; b+ _
/home/httpd/sales.yourdomain.com,
% S3 ~! s8 o0 d- M" K" w4 K4 @) {2 s/var/log/httpd/sales.yourdomain.com
" Y2 \# \5 B- V5 Y9 c+ e放相应的网站内容到目录/home/httpd/sales.yourdomain.com下即可,并确保
4 g/ `; S5 h* Z6 c! {你内部的DNS指定sales.yourdomain.com的A记录到IP地址192.168.0.2 。 % C. d" K3 K9 Y# |
注:这种基于IP的虚拟主机有一个缺点,就是你需要更多的IP地址去服务各自的 0 I6 D" O4 J7 M3 a' d. A) u
虚拟主机,如果你仅仅有一个IP地址,那么你将可以考虑用基于名字的虚拟主机
! a& ^! I/ i  e1 T7 a方案。
* Q! L$ ]$ \: s6 a6 q( s9 M, j4 ~* E/ s5 @9 F
2.基于名字的虚拟主机:
+ j5 G) f$ k  A  H: P* C  M  它的优势就是不需要更多的IP地址,容易配置,不需要其它软硬件,现代的
5 c5 ]! J3 B# U8 [浏览器大多都支持这种方式。与基于IP的虚拟主机一样,你需要编辑文件 1 G! m, q- D0 S$ C( @  f
/etc/httpd/conf/httpd.conf * W" d# U' n+ [
NameVirtualHost 192.168.0.1
; z' X0 s0 ]0 j5 W6 Q# F<VirtualHost 192.168.0.1>
* p7 b: W2 d/ X, ^ServerAdmin webmaster@yourdomain.com # X8 i0 G1 O, |: u+ V: H
DocumentRoot /home/httpd/sales.yourdomain.com
0 J7 w+ U# i! H0 `! d& ~8 U$ G  MServerName sales.yourdomain.com
4 p0 o1 [( L6 `# v! G( v+ l7 p1 p" OErrorLog /var/log/httpd/sales.yourdomain.com/error_log
9 M) h) ]: C" G9 rTransferLog /var/log/httpd/sales.yourdomain.com/access_log
+ [2 r0 E# Q2 v2 O- w9 _% Q; o</VirtualHost> ( y* _( u- O8 M3 Z. W
<VirtualHost 192.168.0.1>
) R6 I1 ?, b" l& x" q, `* MServerAdmin webmaster@yourdomain.com 0 B( e/ _6 {+ X" L
DocumentRoot /home/httpd/hr.yourdomain.com , B- H; m8 s' p1 C
ServerName hr.yourdomain.com $ D1 h8 d; I8 p% n. ?8 o; U
ErrorLog /var/log/httpd/hr.yourdomain.com/error_log ' M& _: z9 k( O/ b0 R
TransferLog /var/log/hr.yourdomain.com/access_log 5 G$ G6 Z' O9 H: ~& n
</VirtualHost>
: p( @+ e+ z4 Q2 w; d. w+ Z注: 你需要加NameVirtualHost 指示在最前面,下面依次为各个虚拟主机,
4 j6 t' F; [" Z4 m3 M1 M( H/ H为了让它工作,你需要把sales.yourdomain.com, hr.yourdomain.com的DNS . @+ t$ {9 V* G, m3 ^* p( j' S
都指向IP地址192.168.0.1
. K+ a; Y+ V. B, x) G: L0 F9 }: G# R上面的两种都将工作,如果是在外部网段,在互联网上提供WWW服务,你可能 6 U0 ~; G2 C/ g$ U) x. w, i" x
没有足够的真实IP地址来支持多个虚拟主机,便可用基于名字的虚拟主机方案,
/ c1 U  D! m) Y( M若是在内部网段上,你有较多的内部保留IP地址,将没有太大的区别。
9 E& C9 m8 ?8 e9 A8 s, N: [提示:上面所提到的相对目录可以用绝对路径代替,如: 1 g. p! ]$ C: _/ s) u) e7 o0 F% `' m
/home/httpd/hr.yourdomain.com 可改为 D:/Inetpub/wwwroot
7 N1 D/ ~5 S5 D4 a==================END=======================
" I/ z1 v. e3 S. ]9 P" P7 o* L这只是入门,只能保证你的WEB服务器能正常运,要了解更多的 PHP 及 Apache 的详细设置,还要靠大家更加深入的实践...

另外可以用一个安装包安装全部PHP软件
. u$ F5 K6 C3 D+ @2 }下载地址:. B- ]$ F1 G, y* v: Z. Q: P
http://webclub.net.cn/data/phpStudy1.2.5.rar

TOP

亲娘那" ?/ q" ~) K8 ~! g
怎么没图哈
& S8 E6 k- ^2 A: [应该图文结合啊3 _: `5 E' x' S+ h6 T  }! p9 R  K

TOP

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