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

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

前言:这一篇是我亲身配置的经历,希望大家喜欢,现在网络的教程中,PHP运行在Apache“模块”方式的文章中都少了最重要的一个步骤,也就是说按其方法配置PHP不能运行,有的太过简单,有的太过复杂,所以花了点时间整理一下。
6 e: m' \1 W  d1 X( C( M+ o5 T0 J) `& J  {0 P# a. W
一、安装PHP4, q$ |/ L! {- g! r
我们需要安装的是win32版本,下载当然也是win32版本 php4.3.0-win32.zip1 \6 h2 M" t) [" O
1.下载后,解压到c:\php目录下。
% [1 _0 v1 r( l7 @2. 把c:\php目录下的php4ts.dll php4ts.lib文件都拷贝到c:\winnt\system32目录下(即window 2000系统目录下的system32目录)。- o" |; Q$ ?4 m$ P
3. 修改php.ini文件,把c:\php目录下的php.ini-dist文件改名为php.ini 用记事本或其它可编辑文本的软件把它打开。
% n/ L! B! i! a/ f" @& P3.1找到register_globals = Off 改为register_globals = On
) i* W5 W" C$ ]这一步是为了使部分旧的PHP程序能正常运行;
" y4 N1 s  B. {) x0 k3.2找到 extension_dir = ./ 把它改为extension_dir = c:\php\extensions" Y- B7 V/ y3 ~
以下内容新手请略过  Z/ t6 @, L* s4 O% i: D4 i# R
===============新手略过开开始================
( |( J0 w6 {$ k* Q  {刚刚的修改是指定php4扩展dll文件存放的路径 由于php4默认所带的php.ini-dist中,是关掉了所有的扩展dll的功能( Windows Extensions) # z1 }9 {) V" b, {! V
;extension=php_bz2.dll
: w1 D+ ]8 p; D) H8 A' N/ x+ K;extension=php_cpdf.dll
! U: A$ x+ Q' l;extension=php_crack.dll1 p- A$ Q2 j) Z9 \2 S' t
;extension=php_curl.dll2 e/ Q0 P) V1 H$ a
..... / a% n8 Z  c: Q$ B# S
要做的就是把extension前面的分号去掉就行了,当然这样是不够的。因为有些extension在我们的系统是不能使用的,比如系统中没有安装 sql server的话,那么extension=php_mssql.dll就要用;(分号)把它注释掉;
: @5 {1 i! _  ~4 [6 Q( K其中,PHP4带了两个GD扩展,请选用一个,另一个先用分号注释掉,以免出现函数无法注册的错误;
/ p3 w' i: o2 m4 \如下面
) v% M9 Z0 ~/ E/ L7 }$ gextension=php_gd.dll$ Z+ z  ?) ~3 T" ^8 \- ?! T- S
;extension=php_gd2.dll7 G" P0 y. M7 ]) |2 m* T
按实际所须的extension=php_xxxx.dll前面的分号都去掉。% J% s1 M( j8 t" S& l
=============新手略过结束================) \1 q1 e6 ~, y. e3 G0 i
3.3 找到session.save_path,把这一项改为 session.save_path = c:\tmp
/ m5 S* r/ H( R7 E% _并在C盘建立一个TMP目录
# f6 [" n, X2 t& s& x# c$ g3.4记得要保存刚刚的修改 并把php.ini文件放置在c:\winnt目录下。, j' Z, B3 H& a1 E
================================================/ h8 F; l7 c% v: q
二、安装MySql
# m9 m; E/ ^0 g7 z安装MySql 当然,我在MySql.com 下载的MySql是一个压缩包,要先解压出来;再点setup.exe安装;
% e0 f! H9 R# c! `! f. r按默认安装,即安装在c:\MySql下,安装完后,按“开始”菜单中的“运行”打进cmd进入dos窗口,进到c:\MySql\bin 目录;
1 M/ X( H9 q6 n+ ?- m7 W运行mysqld-nt --install (将会出现一个Dos窗口,随即自动关闭!如果没有出任何信息,即安装到service成功!)
! h( K7 ]3 P: N* A从“开始”菜单“程序”=》“管理工具”=》“服务”,打开后,将会找到MySql,点击mouse右键 选择启动 回到刚刚的Dos窗口
* Y- ^( n3 V, K. [* k5 K  ^即c:\MySql\bin目录下 运行mysqladmin -u root password 123 即把root用户的密码设置为123 这一步,如果没有出错,说明初始化root密码成功;
2 p: N* [. a) f  C4 H$ Y4 O" d当然从本机进入MySql是不需要用户名和密码,但用php 程序或是其它程序连接MySql时就要用到;( ^! Z/ H) N* y( |
测试进入 第一种方法:直接动行MySql进入MySql 的dos管理状态;. q! }4 Q9 G0 @  U5 s9 Z% A4 c' t/ x
第二种方法:运行MySql -uroot -p MySql将会提示让您输入密码,密码当然就是刚刚设置的123(当然,得按设置的密码喽,不一定得设置是123)' L3 I+ J# k" m1 Q6 r: f( J
出现: 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>
" a3 O) _' y: H, `6 `即安装MySql成功。' Y) U& I, V( c1 u% {. {7 a
==========================================5 z8 b7 P3 ^0 ?, e) s
三、安装Apache 1.3.x 及 PHP运行设置5 \. f: E1 |4 p1 r, b+ g9 P7 h
1.首先下载Apache,Apache软件一般叫作apache_1_3_x.win32.exe。运行它。它会问你将Apache安装到什么地方,为他系统安全及操作容易,我们不要使用默认路径,你可以设为c:\Apache或C:\,因为马上你就要修改它的配置文件。
) a% w/ M- x6 `1 a8 l如果安装没出什么错的话,Apache就可以用了。有很多readme文件可供参考,但仅有一个文件是讲Win32平台的,包括Window 9x和Windows NT。
7 l# ]; t3 X# z# {有两种方式使 PHP 工作于 Windows 下的 Apache 1.3.x。一种是 CGI 方式(php.exe),另一种是使用 Apache 模块 DLL。不管哪种方式都需要停止 Apache,编辑 httpd.conf 来配置 Apache 以加入PHP支持。 ; G* k  _/ r% m; M: [$ y5 l
值得在这里指出现在 Windows 下的 SAPI 模块更加稳定了,我们推荐使用模块方式,因为更加透明和安全。
* }3 y4 j2 E7 U2 }# l尽管有几种不同方法在 Apache 下配置 PHP,但是对新手来说还是非常简单易用的。有关更多的 httpd.conf 配置指令请参考 Apache 文档。 " T8 z( T- F9 L) J/ F4 Q
如果你按照手工安装步骤一节中的说明把 PHP 解压缩到了 c:\php\ 目录下,那么需要加入以下三行到 Apache 配置文件中以 CGI 方式安装:
$ K" c0 p" l8 [8 c; T+ C- o, G+ L' Y2 h
  u8 Q- F2 p* j6 k: R2 }ScriptAlias /php/ "c:/php/" . d2 O4 L9 [" @. P* z# j5 r
AddType application/x-httpd-php .php .phtml 0 r. p; r- N. B5 M
Action application/x-httpd-php "/php/php.exe" , j5 ^* S. \. E- m5 E3 s
注意上面的第二行在原来的 httpd.conf 中就有的,不过被注释了。还有记住用你自己放置 PHP 的路径替换 c:/php/。 , q, {! o" d7 N  V8 v( ^6 f

7 t  H8 h, ?7 z警告 : n% l( F& ~" Y, S
在 CGI 方式下,你的服务器可能会受到几种攻击的影响。请学习如何防止攻击。 1 u; m, u+ N( G% x) {( d: G

- t4 [6 K. _8 ]7 S+ g如果你想在 Apache 中用模块方式使用 PHP,确认把 php4ts.dll 拷贝到 windows/system(Windows 9x/Me)或者 winnt/system32(Windows NT/2000)或者 windows/system32(Windows XP)目录下,覆盖原来的文件。然后在 Apache 配置文件 httpd.conf 中加入以下两行: ) J. H3 P' K# ?5 A! U  m: v9 T
& m8 |6 g1 c, v3 p4 Q$ f
用自己喜爱的编辑器打开 httpd.conf,找到 LoadModule 指令的部分,在其列表的最后部分加上如下一行,
( p' m9 k3 h3 J4 v: X) \对 PHP 4:
* D) g, ?$ m1 YLoadModule php4_module c:/php/sapi/php4apache.dll' @% r6 K8 i# r  |1 B3 D* i
对 PHP 5:
6 Z, ]- m* O9 LLoadModule php5_module "c:/php/sapi/php5apache.dll"
" L; g2 y8 r* {, C2 p- I. k你可能发现在用 Windows Installer 安装了 Apache 之后需要为用 AddModule 指令定义 mod_php4.c。尤其是在定义了 ClearModuleList 指令时格外重要,向下滚动几行可以找到该指令。你将会看到 AddModule 项目的列表,在列表的最后加上这一行:
5 q& ?" J7 Z8 [AddModule mod_php4.c
. j% p+ K5 m3 O- W% \对于 PHP 5 则为:7 g' A7 u" \9 y& X
AddModule mod_php5.c2 R% L9 R' c% l# O. p1 Q
搜索类似 # AddType allows you to tweak mime.types 的短语,你会找到一些 AddType 的项目,并且在列表的最后有这一行: AddType application/x-httpd-php .php。你可以在这里选择任何想用 PHP 解析的后缀。.php 只是所建议的一个。甚至可以包括 .html,也可以加上 .php3 来向下兼容。 / G9 ^" ?$ C" {2 `3 @/ d& P* n

4 L5 v) B2 I8 _3 K& \6 k修改了配置文件之后记住重新启动 Apache,例如如果你的 Apache 是作为 Windows 的服务安装的,NET STOP APACHE 后面接上 NET START APACHE。或者用你通常使用的快捷方式。 + A. {5 k) v! F
有两种方式使用源程序语法彩色显示特色,但是取决于你的安装方法。如果你配置了 Apache 的 SAPI 模块方式使用 PHP,那么在 httpd.conf 中(和插入 AddType application/x-httpd-php .php 是同一个位置)加入下面一行就可以使用本特色:AddType application/x-httpd-php-source .phps。
7 x7 D# c+ A' f+ H9 H如果你用 CGI 方式使用 PHP,那你需要用 show_source() 函数。建立一个 PHP 文件,加入以下代码:<?php show_source ("original_php_script.php"); ?>。用你想要显示源代码的文件名替换掉 original_php_script.php。   d* h% J9 D( p* }' }
注: 在 Windows-Apache 组合中,所有路径中的反斜线例如 "c:\directory\file.ext" 都必须转换成斜线,如 "c:/directory/file.ext"。
1 x8 u# I: r- m/ s6 N& R; B$ T============================================
$ Y- Q; ~4 S3 ]' ~3 j四、实现Apache虚拟主机的两种方案
0 S, j3 V7 N, X5 [, I简介:这里说的虚拟主机是指在一台机器上仅运行一个httpd后台程序 - |4 N! V5 t: C( |
支持多个Apache服务器,如在公司财务部门有一台web服务器,名为 + `$ ]) a- E2 }1 X5 K5 i& t
account.yourdomain.com,同时又想为sales部门建立网站,网站内容也
# y" C' c. K: S& L- a- \2 N放在该机器上,通过sales.yourdomain.com访问,这就要用到虚拟主机
/ e0 q! x- ]7 [% a  Y. {6 ^设置。 1 D% L) C3 m* m6 u4 y" z) m
设置Apache虚拟主机通常有两种方案
1 E/ I+ f  C. b! e1.基于IP的虚拟主机
& f0 Q3 Q: P, D+ r6 |0 R* P! S  这种方式需要在机器上设置IP别名,象上面的例子,在一台机器的 3 J1 y" M9 g6 N' s0 t
网卡上绑定多个IP地址去服务多个虚拟主机。 # R1 ?+ F, w  w) V, ~' i
若该机器的IP地址为192.168.0.1(account.yourdomain.com),首先
6 j) j4 _8 l1 B0 F你要设置IP别名(假设用192.168.0.2作为其别名IP)。加下面的行到 9 R  H. H- Z( V/ ~$ Y4 i
/etc/rc.d/rc.local,确保每次启动后自动运行。 0 m5 [+ w8 U4 ?- n7 l  y  w7 R
#/sbin/ifconfig eth0:0 192.168.0.2 netmask 255.255.255.0 broadcast \
- X% W! t; R4 q192.168.0.255 up 5 b% b$ W1 g8 M/ E1 I
#/sbin/route add -host 192.168.0.2 eth0:0 ) W5 D! J$ F# p$ l9 A
然后你需要设置/etd/httpd/conf/httpd.conf文件:
) i4 X3 p; l* ~: F<VirtualHost 192.168.0.2>
1 E4 I* e: a/ p0 \" W# A% S: rServerAdmin webmaster@yourdomain.com
" a1 p" U- A( U9 ?DocumentRoot /home/httpd/sales.yourdomain.com % ?; v- i: k9 e$ x8 W# N) J6 E2 Y
ServerName sales.yourdomain.com 1 C8 J, [* [6 Z$ Q! G1 F* S
ErrorLog /var/log/httpd/sales.yourdomain.com/error_log ! K3 d( ]5 a0 q9 q
TransferLog /var/log/httpd/sales.yourdomain.com/access_log   q6 g9 i$ z# v: A+ E
</VirtualHost>
: v9 C/ ^2 c+ L' d7 K6 R9 g/ p然后分别创建目录 3 P* F. L6 }3 C0 V$ i' \# p5 f
/home/httpd/sales.yourdomain.com,
. d  s2 ^- N" H; v, I/var/log/httpd/sales.yourdomain.com # s5 U3 `3 f, ^0 P  r* J" o
放相应的网站内容到目录/home/httpd/sales.yourdomain.com下即可,并确保 , j& W, h6 J- W: I6 z3 ~
你内部的DNS指定sales.yourdomain.com的A记录到IP地址192.168.0.2 。
$ t( I! |7 m% ~; _注:这种基于IP的虚拟主机有一个缺点,就是你需要更多的IP地址去服务各自的
4 F" f1 h# k" y) `6 T虚拟主机,如果你仅仅有一个IP地址,那么你将可以考虑用基于名字的虚拟主机 , D1 u/ g; o9 [' C0 j  P
方案。 & w/ @! {" ?+ f# i8 a
$ d; r. b* N+ o( x% N3 C4 }" z
2.基于名字的虚拟主机:
- e7 f6 f. o2 J6 ~" _  它的优势就是不需要更多的IP地址,容易配置,不需要其它软硬件,现代的
6 H; Y' e- [7 c  G- c6 z浏览器大多都支持这种方式。与基于IP的虚拟主机一样,你需要编辑文件 ) ]8 [' i1 o5 u/ \
/etc/httpd/conf/httpd.conf
. z+ e# A7 d% \% w& r- Z, PNameVirtualHost 192.168.0.1 9 _5 ~; F: C8 `
<VirtualHost 192.168.0.1> 8 P3 y) F' ?  @4 W- d: j
ServerAdmin webmaster@yourdomain.com
6 [) b0 g; X* Z, UDocumentRoot /home/httpd/sales.yourdomain.com
+ |# i6 D$ d" b/ r. b9 `% g, r. b0 l8 LServerName sales.yourdomain.com
* D1 T  J6 W6 K5 A- a# S3 tErrorLog /var/log/httpd/sales.yourdomain.com/error_log
) \6 C/ ~. s( ATransferLog /var/log/httpd/sales.yourdomain.com/access_log ( O4 `# p0 T7 b/ K& q5 N' D
</VirtualHost>
( e5 f$ ]1 P" r. w' |$ d" {<VirtualHost 192.168.0.1>
% S+ P" A! n  L7 aServerAdmin webmaster@yourdomain.com
) Z$ m7 j% g/ v; Q  n  D6 U; B3 ?: QDocumentRoot /home/httpd/hr.yourdomain.com
6 a9 q$ j  q; Y* \' yServerName hr.yourdomain.com
* M6 y$ M/ b4 l' bErrorLog /var/log/httpd/hr.yourdomain.com/error_log 6 l9 n. v4 @5 j
TransferLog /var/log/hr.yourdomain.com/access_log 1 V2 o/ y" \# X! ~; Z+ ]
</VirtualHost> : M0 ]5 [  w% v; a. o
注: 你需要加NameVirtualHost 指示在最前面,下面依次为各个虚拟主机,
$ q) o  p. i7 o, k2 ?* E为了让它工作,你需要把sales.yourdomain.com, hr.yourdomain.com的DNS
& {# U5 \# D) `; {) F1 H都指向IP地址192.168.0.1 % D# e( R! P! w! w7 P
上面的两种都将工作,如果是在外部网段,在互联网上提供WWW服务,你可能 8 r, c" ]2 V: a0 c* S. r7 _
没有足够的真实IP地址来支持多个虚拟主机,便可用基于名字的虚拟主机方案,
0 F( K6 `5 j7 V2 f+ p5 `  @若是在内部网段上,你有较多的内部保留IP地址,将没有太大的区别。
/ R/ A4 F( C, w( g/ q2 `提示:上面所提到的相对目录可以用绝对路径代替,如:
7 f' _& W* Q% @) T; p/home/httpd/hr.yourdomain.com 可改为 D:/Inetpub/wwwroot/ ]" t. ^0 i0 d8 Q! U' C
==================END=======================+ O( Q5 e' e. {* X" S5 V! F+ j
这只是入门,只能保证你的WEB服务器能正常运,要了解更多的 PHP 及 Apache 的详细设置,还要靠大家更加深入的实践...

另外可以用一个安装包安装全部PHP软件0 I2 G0 T7 y& d: A+ _
下载地址:" y$ k6 }' ~  N/ ^
http://webclub.net.cn/data/phpStudy1.2.5.rar

TOP

亲娘那
6 p5 c/ Y$ B8 ~9 l2 N9 v: G* d: |怎么没图哈  V5 B& y/ o1 N# r
应该图文结合啊- P, }* o! ^6 O& T1 K

TOP

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