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

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

前言:这一篇是我亲身配置的经历,希望大家喜欢,现在网络的教程中,PHP运行在Apache“模块”方式的文章中都少了最重要的一个步骤,也就是说按其方法配置PHP不能运行,有的太过简单,有的太过复杂,所以花了点时间整理一下。; Z" I- d7 m' Q: `- S
3 Z# K; F4 }, e" u
一、安装PHP4
* `* m4 r; n5 W* H! m+ q我们需要安装的是win32版本,下载当然也是win32版本 php4.3.0-win32.zip
! g1 m7 I7 x- H$ Q1 I0 ^) P# A. R1.下载后,解压到c:\php目录下。5 a7 `4 Y& L* Q6 X4 s
2. 把c:\php目录下的php4ts.dll php4ts.lib文件都拷贝到c:\winnt\system32目录下(即window 2000系统目录下的system32目录)。
, a5 @* R- w* X: O/ z4 Z3. 修改php.ini文件,把c:\php目录下的php.ini-dist文件改名为php.ini 用记事本或其它可编辑文本的软件把它打开。
) u4 [$ g6 x, d: R/ p! L7 c% H  X- a3.1找到register_globals = Off 改为register_globals = On; G; a5 X, b  t3 H$ Q& u
这一步是为了使部分旧的PHP程序能正常运行;; N7 W0 V/ A5 J/ }1 r1 m1 }
3.2找到 extension_dir = ./ 把它改为extension_dir = c:\php\extensions+ C3 ^4 w1 x3 b( [2 z
以下内容新手请略过, e* S4 o+ r6 T2 Q/ ?& S
===============新手略过开开始================
1 V( V' _6 d- @8 M  F刚刚的修改是指定php4扩展dll文件存放的路径 由于php4默认所带的php.ini-dist中,是关掉了所有的扩展dll的功能( Windows Extensions)
/ K3 [9 j5 ~! M. }) f;extension=php_bz2.dll2 X1 S! Y& T. F- [
;extension=php_cpdf.dll/ R2 B' [! Q4 u' x# g$ a8 w4 i
;extension=php_crack.dll8 d2 M0 v6 j7 u! G# `3 p* U
;extension=php_curl.dll1 H$ W' v, {! @; e4 R
.....
3 ^* w7 O( h+ w3 x3 L. r' {要做的就是把extension前面的分号去掉就行了,当然这样是不够的。因为有些extension在我们的系统是不能使用的,比如系统中没有安装 sql server的话,那么extension=php_mssql.dll就要用;(分号)把它注释掉;
8 g) g2 Y9 K% D& a# i其中,PHP4带了两个GD扩展,请选用一个,另一个先用分号注释掉,以免出现函数无法注册的错误;7 |! n  r9 H1 s$ l3 y
如下面
  ]  Q+ T6 F, Jextension=php_gd.dll4 f, ^- f' W3 C* ]$ _$ g
;extension=php_gd2.dll
. W: h1 c* o9 J) q8 h按实际所须的extension=php_xxxx.dll前面的分号都去掉。
" d; L4 h6 {! y( c8 P=============新手略过结束================' x- V/ G3 f) ]9 N1 i6 h
3.3 找到session.save_path,把这一项改为 session.save_path = c:\tmp
5 B4 G0 F" _6 f并在C盘建立一个TMP目录2 E1 N6 N; R0 i5 ^5 ?  e/ a
3.4记得要保存刚刚的修改 并把php.ini文件放置在c:\winnt目录下。
. k% Y3 j7 Y0 L& ?8 F# d8 d================================================
) u4 O  H% K7 Z$ W9 n二、安装MySql+ u& H7 x8 \' u, j; |2 _9 ]( _
安装MySql 当然,我在MySql.com 下载的MySql是一个压缩包,要先解压出来;再点setup.exe安装;- O- C0 f9 b; S
按默认安装,即安装在c:\MySql下,安装完后,按“开始”菜单中的“运行”打进cmd进入dos窗口,进到c:\MySql\bin 目录;
* z3 p2 b$ y7 W( k- o7 a; j, C运行mysqld-nt --install (将会出现一个Dos窗口,随即自动关闭!如果没有出任何信息,即安装到service成功!) ' C3 z1 [3 Y# X, {0 u/ X
从“开始”菜单“程序”=》“管理工具”=》“服务”,打开后,将会找到MySql,点击mouse右键 选择启动 回到刚刚的Dos窗口
- Y5 ~1 L5 p& j& P; _1 S2 d即c:\MySql\bin目录下 运行mysqladmin -u root password 123 即把root用户的密码设置为123 这一步,如果没有出错,说明初始化root密码成功;$ z) g" ~5 T) v  m) S2 G" ^! _
当然从本机进入MySql是不需要用户名和密码,但用php 程序或是其它程序连接MySql时就要用到;
5 f0 ^0 O: j1 l测试进入 第一种方法:直接动行MySql进入MySql 的dos管理状态;
) d& v* s' _2 K  U2 H8 g2 z* a: w  ^第二种方法:运行MySql -uroot -p MySql将会提示让您输入密码,密码当然就是刚刚设置的123(当然,得按设置的密码喽,不一定得设置是123)
5 D& r; {, j  F, Z! M- e出现: 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>
) M' b/ `5 @) c- `即安装MySql成功。
9 Q2 o2 L6 o. F+ G' i3 p==========================================0 A; X0 w; `, v- y
三、安装Apache 1.3.x 及 PHP运行设置3 A$ v" S2 Q; ?* J  [) ^# {, A
1.首先下载Apache,Apache软件一般叫作apache_1_3_x.win32.exe。运行它。它会问你将Apache安装到什么地方,为他系统安全及操作容易,我们不要使用默认路径,你可以设为c:\Apache或C:\,因为马上你就要修改它的配置文件。
) O9 a# d- P& w+ a如果安装没出什么错的话,Apache就可以用了。有很多readme文件可供参考,但仅有一个文件是讲Win32平台的,包括Window 9x和Windows NT。
8 O' \( Q, W9 Z0 ?有两种方式使 PHP 工作于 Windows 下的 Apache 1.3.x。一种是 CGI 方式(php.exe),另一种是使用 Apache 模块 DLL。不管哪种方式都需要停止 Apache,编辑 httpd.conf 来配置 Apache 以加入PHP支持。
+ s" }$ h( m0 ^2 X; M' Z9 ?. |3 e' k值得在这里指出现在 Windows 下的 SAPI 模块更加稳定了,我们推荐使用模块方式,因为更加透明和安全。 ( B4 {8 M, N7 m  u" x' j
尽管有几种不同方法在 Apache 下配置 PHP,但是对新手来说还是非常简单易用的。有关更多的 httpd.conf 配置指令请参考 Apache 文档。 : q) A0 M/ C$ n# K( A# X
如果你按照手工安装步骤一节中的说明把 PHP 解压缩到了 c:\php\ 目录下,那么需要加入以下三行到 Apache 配置文件中以 CGI 方式安装:
: Z5 W" V6 N2 r" `
+ n1 I* d6 O- F* fScriptAlias /php/ "c:/php/"
# O2 v8 k4 N" MAddType application/x-httpd-php .php .phtml ' d+ B& y2 C' X& N, B, N
Action application/x-httpd-php "/php/php.exe"
6 n6 ]. Q3 }0 B/ Z注意上面的第二行在原来的 httpd.conf 中就有的,不过被注释了。还有记住用你自己放置 PHP 的路径替换 c:/php/。
# I5 a- k, X; T: `5 O' B; C
) M' P5 k5 T* N5 Z! R; x3 f  T警告
, {6 H: |8 N4 r; N: r$ I+ ~在 CGI 方式下,你的服务器可能会受到几种攻击的影响。请学习如何防止攻击。 * m4 T; E& h/ H" X) v' ^5 }0 y5 O9 m

. b  x9 l- b# o# R3 K$ U如果你想在 Apache 中用模块方式使用 PHP,确认把 php4ts.dll 拷贝到 windows/system(Windows 9x/Me)或者 winnt/system32(Windows NT/2000)或者 windows/system32(Windows XP)目录下,覆盖原来的文件。然后在 Apache 配置文件 httpd.conf 中加入以下两行: 7 w6 o3 {4 A( T0 r; T2 G1 \0 c
, h4 B5 [( {  V2 F
用自己喜爱的编辑器打开 httpd.conf,找到 LoadModule 指令的部分,在其列表的最后部分加上如下一行,
# Q5 V0 d0 q$ e0 K* U对 PHP 4:
% b1 n; B: ]9 V7 }5 @LoadModule php4_module c:/php/sapi/php4apache.dll
) Y, E" `: K, m. z9 Y8 k对 PHP 5:& F9 m% E- N/ u& q; T
LoadModule php5_module "c:/php/sapi/php5apache.dll"  R7 q' w6 y9 |9 o
你可能发现在用 Windows Installer 安装了 Apache 之后需要为用 AddModule 指令定义 mod_php4.c。尤其是在定义了 ClearModuleList 指令时格外重要,向下滚动几行可以找到该指令。你将会看到 AddModule 项目的列表,在列表的最后加上这一行:
; v, q- K& i) b/ G  r9 L, fAddModule mod_php4.c9 ]9 {; U0 Q' ?- O# f+ f$ U
对于 PHP 5 则为:1 s1 V. I$ A$ c
AddModule mod_php5.c4 V3 w1 t  ]1 i" M6 p3 u$ n9 V, Q$ [
搜索类似 # AddType allows you to tweak mime.types 的短语,你会找到一些 AddType 的项目,并且在列表的最后有这一行: AddType application/x-httpd-php .php。你可以在这里选择任何想用 PHP 解析的后缀。.php 只是所建议的一个。甚至可以包括 .html,也可以加上 .php3 来向下兼容。 # C  {$ V# C: `$ a3 D% e) u
$ V+ E; F' {6 _$ V$ D9 Z! Q
修改了配置文件之后记住重新启动 Apache,例如如果你的 Apache 是作为 Windows 的服务安装的,NET STOP APACHE 后面接上 NET START APACHE。或者用你通常使用的快捷方式。
* d; L- O8 [+ e) X3 M# }有两种方式使用源程序语法彩色显示特色,但是取决于你的安装方法。如果你配置了 Apache 的 SAPI 模块方式使用 PHP,那么在 httpd.conf 中(和插入 AddType application/x-httpd-php .php 是同一个位置)加入下面一行就可以使用本特色:AddType application/x-httpd-php-source .phps。
. S% }- x9 J4 X" e  |如果你用 CGI 方式使用 PHP,那你需要用 show_source() 函数。建立一个 PHP 文件,加入以下代码:<?php show_source ("original_php_script.php"); ?>。用你想要显示源代码的文件名替换掉 original_php_script.php。
4 g8 B) v% x  e6 W, |, `2 N( u注: 在 Windows-Apache 组合中,所有路径中的反斜线例如 "c:\directory\file.ext" 都必须转换成斜线,如 "c:/directory/file.ext"。
5 S$ W% `2 M, u" h============================================6 Z( I4 I. z$ Z4 t# |. [/ u
四、实现Apache虚拟主机的两种方案* ~2 b, t, j$ U% B! l5 T9 K
简介:这里说的虚拟主机是指在一台机器上仅运行一个httpd后台程序
1 v$ e0 ]3 B& k) Y支持多个Apache服务器,如在公司财务部门有一台web服务器,名为
$ s: O* ?# D) H% T9 X8 h9 Z/ oaccount.yourdomain.com,同时又想为sales部门建立网站,网站内容也 2 k- e+ D# Z" h, ^2 G" e2 k$ @
放在该机器上,通过sales.yourdomain.com访问,这就要用到虚拟主机
' U/ V$ Z7 H# _3 f, G2 Z5 @) P设置。 ; U7 b) B# D8 C% \( n
设置Apache虚拟主机通常有两种方案
, L. d- C4 K9 s, Z1.基于IP的虚拟主机 4 u# {6 }# y0 N
  这种方式需要在机器上设置IP别名,象上面的例子,在一台机器的
7 Z4 _: e9 c$ a6 d3 m  U2 K3 [网卡上绑定多个IP地址去服务多个虚拟主机。
8 s; F# Y6 b' ?$ w. z( l2 B1 J若该机器的IP地址为192.168.0.1(account.yourdomain.com),首先
- M4 m  `* E  t. {7 F; V& }- H你要设置IP别名(假设用192.168.0.2作为其别名IP)。加下面的行到 0 @4 e. j2 k# m! _+ \5 r
/etc/rc.d/rc.local,确保每次启动后自动运行。 & R0 \0 ?& u# V0 f
#/sbin/ifconfig eth0:0 192.168.0.2 netmask 255.255.255.0 broadcast \ / V1 L+ Z5 n! F: T1 G, r) r  M6 W- a. W
192.168.0.255 up
1 o4 d: m/ j5 o/ x1 G9 F#/sbin/route add -host 192.168.0.2 eth0:0 ) @# V, S- N  ~& a
然后你需要设置/etd/httpd/conf/httpd.conf文件: 8 E: w0 y) e3 C
<VirtualHost 192.168.0.2> 3 @3 E2 X+ `( l9 l* o
ServerAdmin webmaster@yourdomain.com
0 ?) e  m! n5 t0 O2 NDocumentRoot /home/httpd/sales.yourdomain.com 2 B+ G* f8 A! W, q- r
ServerName sales.yourdomain.com # `% M9 ^/ f/ `! R: L' |
ErrorLog /var/log/httpd/sales.yourdomain.com/error_log ( I. v' ~" I5 r/ G9 z
TransferLog /var/log/httpd/sales.yourdomain.com/access_log
+ M" g7 r# s! E' Z0 }* k</VirtualHost> ' b: V, F- H( e5 v  X4 K' c
然后分别创建目录 - b, j% y3 z: V7 q- U* [
/home/httpd/sales.yourdomain.com, 7 I7 S$ v/ W  Z( f) w5 P
/var/log/httpd/sales.yourdomain.com 5 o7 b2 x! o: V. |9 x
放相应的网站内容到目录/home/httpd/sales.yourdomain.com下即可,并确保 $ X& K1 Q5 d5 _/ N) m6 ~" {* v
你内部的DNS指定sales.yourdomain.com的A记录到IP地址192.168.0.2 。 7 b  w8 `# Z2 S
注:这种基于IP的虚拟主机有一个缺点,就是你需要更多的IP地址去服务各自的 : s; @* F9 K8 m( o8 T
虚拟主机,如果你仅仅有一个IP地址,那么你将可以考虑用基于名字的虚拟主机
. }+ M, [" ~. `, S8 T/ b. X方案。
1 Y" }8 l7 V4 }( Q) \) W# f1 J0 d' B# m7 o3 A; m. Z
2.基于名字的虚拟主机: 9 {. v: |( Q4 ~5 X( b0 i  `
  它的优势就是不需要更多的IP地址,容易配置,不需要其它软硬件,现代的
  C  \+ x! m, |浏览器大多都支持这种方式。与基于IP的虚拟主机一样,你需要编辑文件
! d* y) n8 [- e; F) b' b/etc/httpd/conf/httpd.conf : l0 @1 |  f* _( m$ m( y* d
NameVirtualHost 192.168.0.1
3 y  |, A3 R8 x/ C' N  q' U<VirtualHost 192.168.0.1> ' H% j: N) X% f2 W  M
ServerAdmin webmaster@yourdomain.com $ o5 e+ p. b9 }( F9 }) J
DocumentRoot /home/httpd/sales.yourdomain.com : K- r0 g6 S; {5 e6 L
ServerName sales.yourdomain.com / [1 ^8 t: s! l
ErrorLog /var/log/httpd/sales.yourdomain.com/error_log ' i3 C! q' `6 p2 Y
TransferLog /var/log/httpd/sales.yourdomain.com/access_log % e) B$ y2 ^5 H( `, [9 ?5 z& \5 a
</VirtualHost> . a2 t2 I5 o' j; A# h6 o+ ^: ]9 T
<VirtualHost 192.168.0.1>
+ A" N# E% j3 u- C7 B6 sServerAdmin webmaster@yourdomain.com ; r) i9 Z. L- ~2 Y1 L4 B1 e: l9 C
DocumentRoot /home/httpd/hr.yourdomain.com
5 \' B9 O2 P  G& R2 P4 FServerName hr.yourdomain.com 6 k2 t* Q; ~! k+ h; ^. p. M' Z
ErrorLog /var/log/httpd/hr.yourdomain.com/error_log : B3 g$ M* Y2 S. s. `2 I" m3 a
TransferLog /var/log/hr.yourdomain.com/access_log
. K3 {# X. Y. f3 s# V- p</VirtualHost>
7 y$ Z# T+ p7 k4 \! f+ N注: 你需要加NameVirtualHost 指示在最前面,下面依次为各个虚拟主机, 0 ]' }  |) [. Y- |1 b
为了让它工作,你需要把sales.yourdomain.com, hr.yourdomain.com的DNS % D# y) @; j* V* n
都指向IP地址192.168.0.1 ( u' I" z0 i1 K9 ~+ k1 v
上面的两种都将工作,如果是在外部网段,在互联网上提供WWW服务,你可能 & [, `: ?: ]2 W6 ~" z# y
没有足够的真实IP地址来支持多个虚拟主机,便可用基于名字的虚拟主机方案, 9 U! B6 q* A9 O4 t
若是在内部网段上,你有较多的内部保留IP地址,将没有太大的区别。 1 T1 d4 A' n8 O5 ^8 Q& K6 }
提示:上面所提到的相对目录可以用绝对路径代替,如: : H6 D4 w3 V% q( l# \: O
/home/httpd/hr.yourdomain.com 可改为 D:/Inetpub/wwwroot
( h2 l8 j2 {8 j' Z5 m9 [' F==================END=======================2 a; J  m" c/ Q% Y( A( j
这只是入门,只能保证你的WEB服务器能正常运,要了解更多的 PHP 及 Apache 的详细设置,还要靠大家更加深入的实践...

另外可以用一个安装包安装全部PHP软件+ r+ ], j& Q% L$ O
下载地址:
+ V/ {: `- \9 G3 o+ Ohttp://webclub.net.cn/data/phpStudy1.2.5.rar

TOP

亲娘那
1 K$ C3 A; ?' n怎么没图哈7 p: {0 x' W1 s. W
应该图文结合啊" O& N5 ^5 l6 w0 X$ z8 ?

TOP

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