返回列表 发帖

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

前言:这一篇是我亲身配置的经历,希望大家喜欢,现在网络的教程中,PHP运行在Apache“模块”方式的文章中都少了最重要的一个步骤,也就是说按其方法配置PHP不能运行,有的太过简单,有的太过复杂,所以花了点时间整理一下。/ ]! o$ }" F) [1 `% ~* T
  R4 Y6 w* I$ i- t& u& e8 m9 R& i0 l: `
一、安装PHP4
8 \6 U) E5 t1 B- g我们需要安装的是win32版本,下载当然也是win32版本 php4.3.0-win32.zip
! w3 k- J0 @6 T) D: b1.下载后,解压到c:\php目录下。
8 I/ ^' g' `8 \8 m1 D2. 把c:\php目录下的php4ts.dll php4ts.lib文件都拷贝到c:\winnt\system32目录下(即window 2000系统目录下的system32目录)。
0 u1 J& u* X8 h  g: C3. 修改php.ini文件,把c:\php目录下的php.ini-dist文件改名为php.ini 用记事本或其它可编辑文本的软件把它打开。
/ m" K2 R$ j7 s  R* Q+ G1 A3.1找到register_globals = Off 改为register_globals = On
8 w5 |& z  G" Y; i6 {2 N/ e& W& T这一步是为了使部分旧的PHP程序能正常运行;5 z& d% d$ K  X: S# H% ]7 j) S
3.2找到 extension_dir = ./ 把它改为extension_dir = c:\php\extensions) i9 f6 v' {2 Q& _
以下内容新手请略过
6 @: g* B$ N1 s) A" J===============新手略过开开始================
& Q4 `4 |, G$ ~" S: t刚刚的修改是指定php4扩展dll文件存放的路径 由于php4默认所带的php.ini-dist中,是关掉了所有的扩展dll的功能( Windows Extensions)
! V$ S+ V3 E. @% ?" N$ s1 f;extension=php_bz2.dll7 _6 H/ D3 H* u8 U
;extension=php_cpdf.dll. X2 ^3 Z5 X9 A3 o
;extension=php_crack.dll% e9 F( n+ B" o1 J$ ?5 }
;extension=php_curl.dll4 M+ Q/ M9 c: Z7 \- c! l& v
.....
% |4 J! i* d$ t( b要做的就是把extension前面的分号去掉就行了,当然这样是不够的。因为有些extension在我们的系统是不能使用的,比如系统中没有安装 sql server的话,那么extension=php_mssql.dll就要用;(分号)把它注释掉;' p+ {  m9 \3 L, R
其中,PHP4带了两个GD扩展,请选用一个,另一个先用分号注释掉,以免出现函数无法注册的错误;
4 J% k4 w5 s0 {8 U如下面* c; i7 x( E2 w# b1 E( b8 N$ F
extension=php_gd.dll1 L* L0 S- I* }  y9 v
;extension=php_gd2.dll
9 `2 N! f' R% f. b按实际所须的extension=php_xxxx.dll前面的分号都去掉。
2 z8 t0 }9 W6 X: ~2 E- Z8 R=============新手略过结束================
+ d& n9 Y$ h+ i( N9 J, ~3 J3.3 找到session.save_path,把这一项改为 session.save_path = c:\tmp
* k! |7 p1 v( o  o6 u并在C盘建立一个TMP目录& G! Q* x: o/ H/ M
3.4记得要保存刚刚的修改 并把php.ini文件放置在c:\winnt目录下。5 ^" Q1 c' I+ K' I
================================================
% c" H$ S: t5 V/ K4 e: {. s二、安装MySql6 \. g( w3 C' `7 e% p! Z$ }
安装MySql 当然,我在MySql.com 下载的MySql是一个压缩包,要先解压出来;再点setup.exe安装;- d, @* s* @# q" @
按默认安装,即安装在c:\MySql下,安装完后,按“开始”菜单中的“运行”打进cmd进入dos窗口,进到c:\MySql\bin 目录;
! G/ \  I8 s% m运行mysqld-nt --install (将会出现一个Dos窗口,随即自动关闭!如果没有出任何信息,即安装到service成功!) ; S& `, X4 C& L) ]3 w
从“开始”菜单“程序”=》“管理工具”=》“服务”,打开后,将会找到MySql,点击mouse右键 选择启动 回到刚刚的Dos窗口
, A1 `8 Y! b& M  U4 X3 l. U9 |即c:\MySql\bin目录下 运行mysqladmin -u root password 123 即把root用户的密码设置为123 这一步,如果没有出错,说明初始化root密码成功;
) D2 v3 e" D3 w3 V8 ~7 q) e% y% B- ^当然从本机进入MySql是不需要用户名和密码,但用php 程序或是其它程序连接MySql时就要用到;
' r) ^9 H2 W6 c- q4 |( e1 ^测试进入 第一种方法:直接动行MySql进入MySql 的dos管理状态;2 O9 B& k7 l" N" E
第二种方法:运行MySql -uroot -p MySql将会提示让您输入密码,密码当然就是刚刚设置的123(当然,得按设置的密码喽,不一定得设置是123): o$ d% V  a8 G; E- I
出现: 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> : O4 Q/ k% w5 _9 ]: [4 l& n$ ~
即安装MySql成功。' r" y/ l/ g9 ~- ]3 C9 u0 @4 u
==========================================- B$ Z) P/ g" E# S2 a- c9 U
三、安装Apache 1.3.x 及 PHP运行设置( ?! ?& v' a) }# A- S& k
1.首先下载Apache,Apache软件一般叫作apache_1_3_x.win32.exe。运行它。它会问你将Apache安装到什么地方,为他系统安全及操作容易,我们不要使用默认路径,你可以设为c:\Apache或C:\,因为马上你就要修改它的配置文件。( X( j; G* J* Y' Z- Z3 l
如果安装没出什么错的话,Apache就可以用了。有很多readme文件可供参考,但仅有一个文件是讲Win32平台的,包括Window 9x和Windows NT。
1 \! m) |1 D1 F2 |9 w! J7 \有两种方式使 PHP 工作于 Windows 下的 Apache 1.3.x。一种是 CGI 方式(php.exe),另一种是使用 Apache 模块 DLL。不管哪种方式都需要停止 Apache,编辑 httpd.conf 来配置 Apache 以加入PHP支持。 0 H0 k3 v% `4 P0 o1 k  _3 x
值得在这里指出现在 Windows 下的 SAPI 模块更加稳定了,我们推荐使用模块方式,因为更加透明和安全。 - z# n3 Q) J# @* u0 S$ T6 k# J7 q8 {) H# a
尽管有几种不同方法在 Apache 下配置 PHP,但是对新手来说还是非常简单易用的。有关更多的 httpd.conf 配置指令请参考 Apache 文档。 9 x4 Z7 e# G$ s3 [3 g
如果你按照手工安装步骤一节中的说明把 PHP 解压缩到了 c:\php\ 目录下,那么需要加入以下三行到 Apache 配置文件中以 CGI 方式安装: % S7 `7 X# K: q

0 w( n* n6 J3 W3 bScriptAlias /php/ "c:/php/" 0 z' L2 S) P7 J
AddType application/x-httpd-php .php .phtml 0 V1 a4 z/ \1 p  d
Action application/x-httpd-php "/php/php.exe" 6 z; o3 X2 |2 F* D; c' |
注意上面的第二行在原来的 httpd.conf 中就有的,不过被注释了。还有记住用你自己放置 PHP 的路径替换 c:/php/。
$ {5 m( ~9 y$ `7 d6 e5 f' P- k" u: g  `& _. w
警告
2 w! m7 S  W  S+ m2 O) ?在 CGI 方式下,你的服务器可能会受到几种攻击的影响。请学习如何防止攻击。 / f. N( N  V7 `/ W: V

" y. {; S( H' T9 o: Y如果你想在 Apache 中用模块方式使用 PHP,确认把 php4ts.dll 拷贝到 windows/system(Windows 9x/Me)或者 winnt/system32(Windows NT/2000)或者 windows/system32(Windows XP)目录下,覆盖原来的文件。然后在 Apache 配置文件 httpd.conf 中加入以下两行:
" m1 I# H0 r. [  ]! ?) P) z9 b) [  Q4 p
用自己喜爱的编辑器打开 httpd.conf,找到 LoadModule 指令的部分,在其列表的最后部分加上如下一行,
& b2 m/ l1 M9 m. F对 PHP 4:
, I$ \) j  Z/ n$ lLoadModule php4_module c:/php/sapi/php4apache.dll* K: Q6 l7 {; V, [& }+ l, x
对 PHP 5:  K: I3 ^  _6 s0 C- x! w8 T
LoadModule php5_module "c:/php/sapi/php5apache.dll"! f5 E% k8 {0 u
你可能发现在用 Windows Installer 安装了 Apache 之后需要为用 AddModule 指令定义 mod_php4.c。尤其是在定义了 ClearModuleList 指令时格外重要,向下滚动几行可以找到该指令。你将会看到 AddModule 项目的列表,在列表的最后加上这一行:' R) L+ j% Q0 [1 _0 w, @
AddModule mod_php4.c
1 P5 D9 l) M  T1 e( y对于 PHP 5 则为:
* v7 Y& G, ^2 j; e$ o0 g4 _% YAddModule mod_php5.c/ s% T2 P( J& a: x* o; n
搜索类似 # AddType allows you to tweak mime.types 的短语,你会找到一些 AddType 的项目,并且在列表的最后有这一行: AddType application/x-httpd-php .php。你可以在这里选择任何想用 PHP 解析的后缀。.php 只是所建议的一个。甚至可以包括 .html,也可以加上 .php3 来向下兼容。
* c: M0 r1 ]' i6 X& o
: m/ n" }* E0 M1 L% m9 Y修改了配置文件之后记住重新启动 Apache,例如如果你的 Apache 是作为 Windows 的服务安装的,NET STOP APACHE 后面接上 NET START APACHE。或者用你通常使用的快捷方式。
  O9 _/ X- G6 j. N有两种方式使用源程序语法彩色显示特色,但是取决于你的安装方法。如果你配置了 Apache 的 SAPI 模块方式使用 PHP,那么在 httpd.conf 中(和插入 AddType application/x-httpd-php .php 是同一个位置)加入下面一行就可以使用本特色:AddType application/x-httpd-php-source .phps。 & i8 B2 p- R( @( f6 C0 i- E: ~
如果你用 CGI 方式使用 PHP,那你需要用 show_source() 函数。建立一个 PHP 文件,加入以下代码:<?php show_source ("original_php_script.php"); ?>。用你想要显示源代码的文件名替换掉 original_php_script.php。
8 v' s) t+ n$ L: ~注: 在 Windows-Apache 组合中,所有路径中的反斜线例如 "c:\directory\file.ext" 都必须转换成斜线,如 "c:/directory/file.ext"。& v4 P& c# b. B; f6 k
============================================8 H. a, y& L, a5 S
四、实现Apache虚拟主机的两种方案
6 |1 Y% P: |  x! |8 o2 ?3 I: S2 ^, g简介:这里说的虚拟主机是指在一台机器上仅运行一个httpd后台程序
1 r& V, d" k& O) _3 c& l; T支持多个Apache服务器,如在公司财务部门有一台web服务器,名为
; V+ O* U: w& U! h* U; haccount.yourdomain.com,同时又想为sales部门建立网站,网站内容也 + f% C$ q. y! i$ T0 o, Y
放在该机器上,通过sales.yourdomain.com访问,这就要用到虚拟主机 9 f/ L% n8 L9 o
设置。 ( o) U* p  X9 J5 F/ B
设置Apache虚拟主机通常有两种方案
  q' H/ \1 d( A6 I! `1 ]1 w1 X1.基于IP的虚拟主机 & ~  ?9 L0 Q" [# [) D0 _* g! n
  这种方式需要在机器上设置IP别名,象上面的例子,在一台机器的
; o$ w$ z1 X% _网卡上绑定多个IP地址去服务多个虚拟主机。
9 n1 M9 y4 }' t9 r1 n0 H若该机器的IP地址为192.168.0.1(account.yourdomain.com),首先 # G. I% U2 O% o, T) O( P
你要设置IP别名(假设用192.168.0.2作为其别名IP)。加下面的行到
3 W, B2 d: f6 i. {- B  I' w0 [# G/etc/rc.d/rc.local,确保每次启动后自动运行。 " ~1 ^; R# o7 ^1 A- s  O$ ~+ I
#/sbin/ifconfig eth0:0 192.168.0.2 netmask 255.255.255.0 broadcast \
( H6 Z* `8 o% |+ q7 }192.168.0.255 up
' i4 `' \- [4 P$ A; K0 ]#/sbin/route add -host 192.168.0.2 eth0:0
/ R! Y) w' r9 ~) Q! E0 I! Q8 y8 t  s然后你需要设置/etd/httpd/conf/httpd.conf文件:
. s. w; [% _2 t# m& R3 F8 h( u<VirtualHost 192.168.0.2> & B6 }2 z3 j5 q; k. K! \
ServerAdmin webmaster@yourdomain.com
8 v: v) Z; y) Q5 |; VDocumentRoot /home/httpd/sales.yourdomain.com : c/ l* `3 j0 M6 {" M2 ]
ServerName sales.yourdomain.com 0 z) [( v$ |" D( D8 i
ErrorLog /var/log/httpd/sales.yourdomain.com/error_log
2 U/ H. `* ~* ?6 D% Q/ q* @3 o$ `TransferLog /var/log/httpd/sales.yourdomain.com/access_log
7 R) _, k' F6 S8 i8 _</VirtualHost> ( I& v, c) l) e/ m6 O
然后分别创建目录 , g9 f3 \% t8 @  p. \; U$ ?
/home/httpd/sales.yourdomain.com, . E2 \6 I  [: ]! l0 T: R' O
/var/log/httpd/sales.yourdomain.com . B" P- t" e: R& P# d
放相应的网站内容到目录/home/httpd/sales.yourdomain.com下即可,并确保
3 `% Q' `% H+ {* e5 B0 P8 Z* i. K你内部的DNS指定sales.yourdomain.com的A记录到IP地址192.168.0.2 。 1 \( h. _+ @; E
注:这种基于IP的虚拟主机有一个缺点,就是你需要更多的IP地址去服务各自的 # M% z  I5 T4 W1 A
虚拟主机,如果你仅仅有一个IP地址,那么你将可以考虑用基于名字的虚拟主机 % r  d& _, |; M, {
方案。
6 n" X" F$ J2 p- C4 G/ h$ O
. \6 Z7 ?( ^/ f: n' _* n& f2.基于名字的虚拟主机: + p, Q3 j$ B- E6 P: A/ {
  它的优势就是不需要更多的IP地址,容易配置,不需要其它软硬件,现代的 + ^# @5 _; x6 w# H. [
浏览器大多都支持这种方式。与基于IP的虚拟主机一样,你需要编辑文件
  ]& X" e4 e- S0 j/etc/httpd/conf/httpd.conf & M2 U: g4 Z7 o( ?2 G! `8 p
NameVirtualHost 192.168.0.1 ; Y1 E3 ]6 Z  \( @# z$ K
<VirtualHost 192.168.0.1>
* G- @* J! R2 p. _ServerAdmin webmaster@yourdomain.com
2 ~; Q* c( F# `! UDocumentRoot /home/httpd/sales.yourdomain.com " L' i: u# ~4 \( X: I( L. ^- l* o
ServerName sales.yourdomain.com # p4 C1 `: T, _( C+ m, H
ErrorLog /var/log/httpd/sales.yourdomain.com/error_log
' i' @! t" r& f: @$ Y3 E3 NTransferLog /var/log/httpd/sales.yourdomain.com/access_log % M  T2 X$ x2 _" j+ c2 V- K
</VirtualHost>
% ]7 g- Z5 d2 T% y- m, d<VirtualHost 192.168.0.1> 2 `: B2 e& d2 y- u1 l$ P) _
ServerAdmin webmaster@yourdomain.com
, w5 m8 q6 X6 _0 D! XDocumentRoot /home/httpd/hr.yourdomain.com " r# o( T! J" l4 G
ServerName hr.yourdomain.com 3 L; s7 T3 d9 w4 M
ErrorLog /var/log/httpd/hr.yourdomain.com/error_log / K: [3 o1 O! H0 w( K
TransferLog /var/log/hr.yourdomain.com/access_log * G1 F3 b" q+ R( g
</VirtualHost>
/ {/ g! Q0 d" }, v$ L& v1 N" x注: 你需要加NameVirtualHost 指示在最前面,下面依次为各个虚拟主机, ( g( t1 x4 U) h5 H  u% x" Z
为了让它工作,你需要把sales.yourdomain.com, hr.yourdomain.com的DNS ) q$ [  \( b  O; ]
都指向IP地址192.168.0.1
/ q6 P$ A5 r3 p0 I& _$ S6 k  }上面的两种都将工作,如果是在外部网段,在互联网上提供WWW服务,你可能 / n  A* h  \3 P# O, u- K# @
没有足够的真实IP地址来支持多个虚拟主机,便可用基于名字的虚拟主机方案,
* v& M: R5 c* Y5 |, j) u若是在内部网段上,你有较多的内部保留IP地址,将没有太大的区别。 # i4 D- F5 q5 _
提示:上面所提到的相对目录可以用绝对路径代替,如:
) B7 F" h" e& N3 Q& q/home/httpd/hr.yourdomain.com 可改为 D:/Inetpub/wwwroot
# ~0 j3 s. O# m8 _==================END=======================% b# F9 G! R; @1 o) F* V
这只是入门,只能保证你的WEB服务器能正常运,要了解更多的 PHP 及 Apache 的详细设置,还要靠大家更加深入的实践...

另外可以用一个安装包安装全部PHP软件2 \2 q) I4 J# @: n2 B# k
下载地址:% o% Q" B( m6 I2 Z4 B
http://webclub.net.cn/data/phpStudy1.2.5.rar

TOP

亲娘那  S. F5 |' J2 ^/ s& u# y' U( ]: C
怎么没图哈' ]+ B4 x3 a" y( ~
应该图文结合啊6 n% W* t% V* m" X  l5 e9 o

TOP

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