返回列表 发帖

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

前言:这一篇是我亲身配置的经历,希望大家喜欢,现在网络的教程中,PHP运行在Apache“模块”方式的文章中都少了最重要的一个步骤,也就是说按其方法配置PHP不能运行,有的太过简单,有的太过复杂,所以花了点时间整理一下。
9 i8 o! u3 P8 x3 r3 B* d* s4 T
* r7 f& }. _8 L一、安装PHP42 Q! S( ?2 [  }* ~; o" A  Y/ k
我们需要安装的是win32版本,下载当然也是win32版本 php4.3.0-win32.zip
/ ]8 b6 Z6 N' }- Y1.下载后,解压到c:\php目录下。
  G' o- M1 ~: d: A+ A2. 把c:\php目录下的php4ts.dll php4ts.lib文件都拷贝到c:\winnt\system32目录下(即window 2000系统目录下的system32目录)。- I* f  h7 ^  W! P5 h( G. e6 M& p  b
3. 修改php.ini文件,把c:\php目录下的php.ini-dist文件改名为php.ini 用记事本或其它可编辑文本的软件把它打开。9 B5 K7 F3 N: z
3.1找到register_globals = Off 改为register_globals = On( F5 t6 H" g( N( w# T3 ^9 |' e$ J* j
这一步是为了使部分旧的PHP程序能正常运行;: C, }+ c% E/ `3 |
3.2找到 extension_dir = ./ 把它改为extension_dir = c:\php\extensions; c0 `5 R" G7 ?8 L3 L
以下内容新手请略过
* V! c" g  k  Y5 K0 ~===============新手略过开开始================
* ?- [# \' V, ~刚刚的修改是指定php4扩展dll文件存放的路径 由于php4默认所带的php.ini-dist中,是关掉了所有的扩展dll的功能( Windows Extensions) 0 S! o  ^7 \5 H
;extension=php_bz2.dll5 T' y7 Z* X" d% C8 v5 `, l% W
;extension=php_cpdf.dll1 ]$ s) ]6 `3 d* h9 l8 f  F. k
;extension=php_crack.dll
$ ]  Y0 t. M8 n! ^, D( r;extension=php_curl.dll/ k/ ]0 M) Y( @" X3 U6 F9 `
.....
  z3 j# }1 r+ ?要做的就是把extension前面的分号去掉就行了,当然这样是不够的。因为有些extension在我们的系统是不能使用的,比如系统中没有安装 sql server的话,那么extension=php_mssql.dll就要用;(分号)把它注释掉;
) J$ E) r) @) v" ?其中,PHP4带了两个GD扩展,请选用一个,另一个先用分号注释掉,以免出现函数无法注册的错误;- {) f- t' o- `6 t
如下面0 C! O$ J& {8 y$ _' ^
extension=php_gd.dll  z. T. S8 f! X7 E
;extension=php_gd2.dll3 W# ]0 p3 L( h" M. h6 q8 q3 G
按实际所须的extension=php_xxxx.dll前面的分号都去掉。
# a& \* O' f( S" |# @/ R* R. ]=============新手略过结束================! q0 w* M* t( `
3.3 找到session.save_path,把这一项改为 session.save_path = c:\tmp8 d1 B+ m/ e# ]
并在C盘建立一个TMP目录
9 [* |/ g  S/ Z0 j, e0 G' E  b3.4记得要保存刚刚的修改 并把php.ini文件放置在c:\winnt目录下。) h9 U! w0 K5 L; q: Z# J; p
================================================3 |1 T0 o8 K' \: z5 ]' J, T( K
二、安装MySql
5 y! K; G; \; b: v* C安装MySql 当然,我在MySql.com 下载的MySql是一个压缩包,要先解压出来;再点setup.exe安装;+ |& U8 \& X1 D9 F
按默认安装,即安装在c:\MySql下,安装完后,按“开始”菜单中的“运行”打进cmd进入dos窗口,进到c:\MySql\bin 目录;; S+ G. t- }0 O/ F
运行mysqld-nt --install (将会出现一个Dos窗口,随即自动关闭!如果没有出任何信息,即安装到service成功!) 7 d) L- s1 R. B0 h
从“开始”菜单“程序”=》“管理工具”=》“服务”,打开后,将会找到MySql,点击mouse右键 选择启动 回到刚刚的Dos窗口
  r; P) O6 N; b$ }4 s1 F即c:\MySql\bin目录下 运行mysqladmin -u root password 123 即把root用户的密码设置为123 这一步,如果没有出错,说明初始化root密码成功;3 Q, c7 w1 R, k2 `" W6 w
当然从本机进入MySql是不需要用户名和密码,但用php 程序或是其它程序连接MySql时就要用到;2 ]2 r. C6 a7 c' S
测试进入 第一种方法:直接动行MySql进入MySql 的dos管理状态;
/ @) ~; N3 s$ f& \4 Q第二种方法:运行MySql -uroot -p MySql将会提示让您输入密码,密码当然就是刚刚设置的123(当然,得按设置的密码喽,不一定得设置是123)) b$ r; x, v1 {, m4 n
出现: 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> ' l$ h' l( a* d0 G
即安装MySql成功。, p& Z: C% ]! r$ T( m# ?% I
==========================================2 I7 E  k: u) K( g5 Z
三、安装Apache 1.3.x 及 PHP运行设置
4 \, G" K0 e2 u1 `1.首先下载Apache,Apache软件一般叫作apache_1_3_x.win32.exe。运行它。它会问你将Apache安装到什么地方,为他系统安全及操作容易,我们不要使用默认路径,你可以设为c:\Apache或C:\,因为马上你就要修改它的配置文件。
, l; n/ C8 |8 e" T! h1 E( N如果安装没出什么错的话,Apache就可以用了。有很多readme文件可供参考,但仅有一个文件是讲Win32平台的,包括Window 9x和Windows NT。
- S5 w" Q& n) d, _  g有两种方式使 PHP 工作于 Windows 下的 Apache 1.3.x。一种是 CGI 方式(php.exe),另一种是使用 Apache 模块 DLL。不管哪种方式都需要停止 Apache,编辑 httpd.conf 来配置 Apache 以加入PHP支持。 ! p8 L3 U( X( A6 s7 K. m( N* y
值得在这里指出现在 Windows 下的 SAPI 模块更加稳定了,我们推荐使用模块方式,因为更加透明和安全。
1 l* {2 D/ C; U3 L) p尽管有几种不同方法在 Apache 下配置 PHP,但是对新手来说还是非常简单易用的。有关更多的 httpd.conf 配置指令请参考 Apache 文档。 " c/ P: U7 X! C; i# h0 \% q7 y
如果你按照手工安装步骤一节中的说明把 PHP 解压缩到了 c:\php\ 目录下,那么需要加入以下三行到 Apache 配置文件中以 CGI 方式安装: + q* L) c2 \- U; p$ Q6 {9 M$ V

  f6 L: A% n) i6 ^  l: KScriptAlias /php/ "c:/php/"
- k0 X8 J5 h: T, o$ J: u/ w" {$ yAddType application/x-httpd-php .php .phtml : y( i( X. F* y8 F8 _2 L' Z
Action application/x-httpd-php "/php/php.exe"
6 E2 O4 s+ @2 ~5 j7 M注意上面的第二行在原来的 httpd.conf 中就有的,不过被注释了。还有记住用你自己放置 PHP 的路径替换 c:/php/。
3 Q# e6 b9 ], b+ U- G- m, q& q0 r/ ^. q% Q  ~
警告 1 K( F6 a! a5 a% Q8 l( [) d  e
在 CGI 方式下,你的服务器可能会受到几种攻击的影响。请学习如何防止攻击。
0 K. W2 U5 a- V  ^0 [9 e0 c- \
' b/ ?3 i/ }/ s* C如果你想在 Apache 中用模块方式使用 PHP,确认把 php4ts.dll 拷贝到 windows/system(Windows 9x/Me)或者 winnt/system32(Windows NT/2000)或者 windows/system32(Windows XP)目录下,覆盖原来的文件。然后在 Apache 配置文件 httpd.conf 中加入以下两行:
$ C4 y  T) ?. v9 @  R
  c+ g# i) r  V用自己喜爱的编辑器打开 httpd.conf,找到 LoadModule 指令的部分,在其列表的最后部分加上如下一行,8 c; t% v3 @$ L$ k
对 PHP 4:& |) i3 E: g! |4 g+ T% P7 ~8 u
LoadModule php4_module c:/php/sapi/php4apache.dll$ ]  K; [& }+ z& A
对 PHP 5:( d( R0 ]3 a! A+ F$ W% I
LoadModule php5_module "c:/php/sapi/php5apache.dll"& A8 C8 }! C1 p3 B
你可能发现在用 Windows Installer 安装了 Apache 之后需要为用 AddModule 指令定义 mod_php4.c。尤其是在定义了 ClearModuleList 指令时格外重要,向下滚动几行可以找到该指令。你将会看到 AddModule 项目的列表,在列表的最后加上这一行:& k2 K6 C- C" J2 e7 E
AddModule mod_php4.c; @" n& X$ `: p* k5 r9 W
对于 PHP 5 则为:
, A6 v) x  I5 S! l. i7 E+ L* _7 SAddModule mod_php5.c- b, U# N. o5 o: F5 a2 U# L4 Y6 V
搜索类似 # AddType allows you to tweak mime.types 的短语,你会找到一些 AddType 的项目,并且在列表的最后有这一行: AddType application/x-httpd-php .php。你可以在这里选择任何想用 PHP 解析的后缀。.php 只是所建议的一个。甚至可以包括 .html,也可以加上 .php3 来向下兼容。
# H6 v6 c! ^" Z/ Z5 n" q
5 `6 O( {0 S. m" U修改了配置文件之后记住重新启动 Apache,例如如果你的 Apache 是作为 Windows 的服务安装的,NET STOP APACHE 后面接上 NET START APACHE。或者用你通常使用的快捷方式。
% ]6 [0 D, s- _$ [" @( {; T& Q: G有两种方式使用源程序语法彩色显示特色,但是取决于你的安装方法。如果你配置了 Apache 的 SAPI 模块方式使用 PHP,那么在 httpd.conf 中(和插入 AddType application/x-httpd-php .php 是同一个位置)加入下面一行就可以使用本特色:AddType application/x-httpd-php-source .phps。
4 f" Y  Z* h4 |/ p8 `2 t+ c; w4 M) U- S如果你用 CGI 方式使用 PHP,那你需要用 show_source() 函数。建立一个 PHP 文件,加入以下代码:<?php show_source ("original_php_script.php"); ?>。用你想要显示源代码的文件名替换掉 original_php_script.php。 6 S: }4 u; b) o6 y
注: 在 Windows-Apache 组合中,所有路径中的反斜线例如 "c:\directory\file.ext" 都必须转换成斜线,如 "c:/directory/file.ext"。
) X( O4 i! q" P- O$ D============================================$ ~" ^5 e/ T7 a6 M
四、实现Apache虚拟主机的两种方案
2 g+ Z- H2 C& i( @# l9 z8 ?# S3 S* i简介:这里说的虚拟主机是指在一台机器上仅运行一个httpd后台程序
! V! d, W0 v' S! j' x; U支持多个Apache服务器,如在公司财务部门有一台web服务器,名为
0 }2 }. \: B5 X# C  faccount.yourdomain.com,同时又想为sales部门建立网站,网站内容也
" t& {, \- K/ V* m1 D放在该机器上,通过sales.yourdomain.com访问,这就要用到虚拟主机 4 f7 [/ q4 O) k6 P0 o
设置。 1 @  Q8 [- |! b4 ~3 l' T8 t
设置Apache虚拟主机通常有两种方案
. v0 ~6 k8 \# _( ~& f1.基于IP的虚拟主机 9 x; \6 s. j* E. w* p9 R
  这种方式需要在机器上设置IP别名,象上面的例子,在一台机器的 ! ^0 x- D+ G% ~1 e, ~5 `5 j
网卡上绑定多个IP地址去服务多个虚拟主机。
; R4 s& @2 ^; G; h& Y若该机器的IP地址为192.168.0.1(account.yourdomain.com),首先
( u( e" V- K: l7 z/ C) y( u; G5 P) l, i你要设置IP别名(假设用192.168.0.2作为其别名IP)。加下面的行到 # ?) y' e$ k, C8 K
/etc/rc.d/rc.local,确保每次启动后自动运行。
5 x' o: g8 ^/ L8 V+ r6 j9 Q#/sbin/ifconfig eth0:0 192.168.0.2 netmask 255.255.255.0 broadcast \ 2 }6 F2 T2 s0 C4 \" f. L/ v
192.168.0.255 up
$ D( P" J  D7 z* y: U* x1 l1 \/ Z#/sbin/route add -host 192.168.0.2 eth0:0 . {1 c( M6 H; `- n. q7 D8 c
然后你需要设置/etd/httpd/conf/httpd.conf文件: $ G, a! y, j5 q! t2 _0 o; U
<VirtualHost 192.168.0.2> " O, n9 {1 F  ^7 o
ServerAdmin webmaster@yourdomain.com 7 j' i8 b* e+ M7 Y% i
DocumentRoot /home/httpd/sales.yourdomain.com 7 T! d  p% U6 P: z5 {5 ~% f: F6 G
ServerName sales.yourdomain.com 3 s5 z- Z1 w8 M; s  J$ t4 U9 M3 A
ErrorLog /var/log/httpd/sales.yourdomain.com/error_log * S7 O( J7 O0 [6 [4 O
TransferLog /var/log/httpd/sales.yourdomain.com/access_log
  A& k9 j) k' Z; |( |9 O$ g# _</VirtualHost> % ^2 [8 X; G1 h7 f; f; k
然后分别创建目录
* ~5 b/ [- l, {! B+ m/home/httpd/sales.yourdomain.com,
3 C6 K6 {3 R$ l: z7 B/var/log/httpd/sales.yourdomain.com / K" g9 k2 `# v' i
放相应的网站内容到目录/home/httpd/sales.yourdomain.com下即可,并确保
3 v% w# B; J1 b/ j你内部的DNS指定sales.yourdomain.com的A记录到IP地址192.168.0.2 。 8 `$ B2 r8 e: V: V4 k
注:这种基于IP的虚拟主机有一个缺点,就是你需要更多的IP地址去服务各自的
' m& o1 P6 |0 V8 o虚拟主机,如果你仅仅有一个IP地址,那么你将可以考虑用基于名字的虚拟主机 ; Z/ {5 g. J+ s$ c2 I
方案。
5 n+ F" T+ D8 B$ n& K; k+ |2 R9 z: E2 Y0 z; i/ ?( h
2.基于名字的虚拟主机:
! A2 t/ ?: l$ a  它的优势就是不需要更多的IP地址,容易配置,不需要其它软硬件,现代的 * |" a8 u. Y2 Z$ A
浏览器大多都支持这种方式。与基于IP的虚拟主机一样,你需要编辑文件
4 K# H; P0 y5 U" J, U3 p/etc/httpd/conf/httpd.conf & H1 f5 u9 T  `; `8 i4 m
NameVirtualHost 192.168.0.1   \/ b& j# e, g
<VirtualHost 192.168.0.1>
, \% g7 I. G. L" Q# r9 T) `ServerAdmin webmaster@yourdomain.com 7 t4 u  h4 n5 {! c- g6 K
DocumentRoot /home/httpd/sales.yourdomain.com ) l# R6 c# K: b9 V3 `+ X+ Q
ServerName sales.yourdomain.com 9 l& N7 K5 J& ~* a# T
ErrorLog /var/log/httpd/sales.yourdomain.com/error_log
2 V* p; D; s( ^; {+ H; BTransferLog /var/log/httpd/sales.yourdomain.com/access_log
( S* R3 {4 l4 k  d5 p3 h</VirtualHost> " ]! m" [3 @8 `5 z# C* ], C
<VirtualHost 192.168.0.1>
2 }& G% `1 H, w! l, i: TServerAdmin webmaster@yourdomain.com # ]! m' q: R  J) x
DocumentRoot /home/httpd/hr.yourdomain.com + i% N' T0 D+ p+ k. d! ?- h2 S
ServerName hr.yourdomain.com   j. X% n8 j+ c% [8 X
ErrorLog /var/log/httpd/hr.yourdomain.com/error_log . o) L( c7 T7 z1 S; K; w
TransferLog /var/log/hr.yourdomain.com/access_log
% Z8 J$ ~/ T; |* z) E5 E</VirtualHost> 0 K4 k) G6 ?+ r2 F( B  O7 ?' o
注: 你需要加NameVirtualHost 指示在最前面,下面依次为各个虚拟主机,
$ e6 W( {" n5 J5 x  Z7 ?- n为了让它工作,你需要把sales.yourdomain.com, hr.yourdomain.com的DNS 4 t5 {4 o! j; v  @5 [  D6 l3 p
都指向IP地址192.168.0.1
; ^) v: v" `* @3 F0 w; }. p3 I上面的两种都将工作,如果是在外部网段,在互联网上提供WWW服务,你可能
, Q8 I: ?2 y4 g5 w6 W2 a; [$ P没有足够的真实IP地址来支持多个虚拟主机,便可用基于名字的虚拟主机方案, 2 e) J. l# u6 a  ]6 X
若是在内部网段上,你有较多的内部保留IP地址,将没有太大的区别。 - T( `: ]1 H" ]8 H" v
提示:上面所提到的相对目录可以用绝对路径代替,如: * A" ^6 z% o- \# M- `
/home/httpd/hr.yourdomain.com 可改为 D:/Inetpub/wwwroot
) u. b7 K" F: P3 v( |==================END=======================  N$ H4 n2 Q9 V4 C# Q/ ~" }2 I
这只是入门,只能保证你的WEB服务器能正常运,要了解更多的 PHP 及 Apache 的详细设置,还要靠大家更加深入的实践...

另外可以用一个安装包安装全部PHP软件
! i9 x& M1 B8 s* y" E下载地址:
% T2 b# ?0 H) O2 y; I( S$ K2 W+ {# Qhttp://webclub.net.cn/data/phpStudy1.2.5.rar

TOP

亲娘那8 T0 i  D* l; v, C* t( r
怎么没图哈% Y: D. M& l& U6 r7 Z' b& T
应该图文结合啊
' W# M( g" j' U3 M

TOP

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