返回列表 发帖

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

前言:这一篇是我亲身配置的经历,希望大家喜欢,现在网络的教程中,PHP运行在Apache“模块”方式的文章中都少了最重要的一个步骤,也就是说按其方法配置PHP不能运行,有的太过简单,有的太过复杂,所以花了点时间整理一下。
# j# D3 s' P1 M( c2 k) N8 K9 q5 i$ Q( m7 i, x1 X+ P: N
一、安装PHP46 {' \  W+ o+ K5 W
我们需要安装的是win32版本,下载当然也是win32版本 php4.3.0-win32.zip
5 b; t5 K2 q& ]. L. m1.下载后,解压到c:\php目录下。  N; D' ]6 Z: \+ D& [7 v
2. 把c:\php目录下的php4ts.dll php4ts.lib文件都拷贝到c:\winnt\system32目录下(即window 2000系统目录下的system32目录)。
% u$ b' P  l) t1 Y9 V3. 修改php.ini文件,把c:\php目录下的php.ini-dist文件改名为php.ini 用记事本或其它可编辑文本的软件把它打开。
* l1 c/ h" A5 `- |8 h7 d+ p3.1找到register_globals = Off 改为register_globals = On. O- Z. E3 c$ f7 V# S7 N7 Q6 B
这一步是为了使部分旧的PHP程序能正常运行;  u7 H* k7 p# e$ ?7 @
3.2找到 extension_dir = ./ 把它改为extension_dir = c:\php\extensions
! @$ f$ Q) _+ H+ ]& E% u1 M" B7 L以下内容新手请略过. D, p( n8 q+ @7 n- s$ E
===============新手略过开开始================
& P3 P* a, y% w刚刚的修改是指定php4扩展dll文件存放的路径 由于php4默认所带的php.ini-dist中,是关掉了所有的扩展dll的功能( Windows Extensions) 6 N' O* a- s0 V3 s4 n5 |+ Q
;extension=php_bz2.dll0 H  K" p' z( X0 X) S
;extension=php_cpdf.dll5 T) O! N, e( k( G5 M2 t
;extension=php_crack.dll
7 S  H, [* p* Q5 |4 n;extension=php_curl.dll, [2 V" F: Y8 a; M* c; t# T& t! V
.....
  g4 `9 m+ z1 t& i( s# w" v要做的就是把extension前面的分号去掉就行了,当然这样是不够的。因为有些extension在我们的系统是不能使用的,比如系统中没有安装 sql server的话,那么extension=php_mssql.dll就要用;(分号)把它注释掉;
$ ~0 \+ e- _8 X, U' X; `( B其中,PHP4带了两个GD扩展,请选用一个,另一个先用分号注释掉,以免出现函数无法注册的错误;
6 a( D! y: b9 t) q% B如下面$ l) V- x% o5 {- w2 H* c( [/ }; C* N
extension=php_gd.dll/ r4 x& U6 X5 P9 b7 N
;extension=php_gd2.dll; A/ M4 S; B* j) h  w! [
按实际所须的extension=php_xxxx.dll前面的分号都去掉。
8 _' A: l8 A3 P=============新手略过结束================
! _5 j4 ^+ r% ^% R3.3 找到session.save_path,把这一项改为 session.save_path = c:\tmp" C6 Q! ~  T$ M, t5 r
并在C盘建立一个TMP目录& x! l9 H- l' _1 [0 g5 g) k
3.4记得要保存刚刚的修改 并把php.ini文件放置在c:\winnt目录下。% B) s3 i6 M. X! ~- f$ a3 {
================================================
2 |4 o: o2 h9 D. G' ~5 E2 [二、安装MySql6 o9 o- G: z4 ^% V; D! k/ m+ N$ R: X
安装MySql 当然,我在MySql.com 下载的MySql是一个压缩包,要先解压出来;再点setup.exe安装;
, ~1 v2 J" }# h) c8 t4 ]按默认安装,即安装在c:\MySql下,安装完后,按“开始”菜单中的“运行”打进cmd进入dos窗口,进到c:\MySql\bin 目录;9 ?; Y' ?* a% K0 e) H
运行mysqld-nt --install (将会出现一个Dos窗口,随即自动关闭!如果没有出任何信息,即安装到service成功!) ( M  R0 u* o" n% Z2 _& g
从“开始”菜单“程序”=》“管理工具”=》“服务”,打开后,将会找到MySql,点击mouse右键 选择启动 回到刚刚的Dos窗口" Y) f  D: U8 a' L2 C8 X% r
即c:\MySql\bin目录下 运行mysqladmin -u root password 123 即把root用户的密码设置为123 这一步,如果没有出错,说明初始化root密码成功;1 x5 p; I4 p* j  G- |0 y- r4 i
当然从本机进入MySql是不需要用户名和密码,但用php 程序或是其它程序连接MySql时就要用到;
( w/ v8 p. R; W* e( T, m6 G, f测试进入 第一种方法:直接动行MySql进入MySql 的dos管理状态;" b8 P, D5 }: ~: Z9 U. n% ^
第二种方法:运行MySql -uroot -p MySql将会提示让您输入密码,密码当然就是刚刚设置的123(当然,得按设置的密码喽,不一定得设置是123)4 U7 O$ W1 A5 B9 r- a
出现: 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> 4 a' V! {$ Q' t2 V! g
即安装MySql成功。
& r  _) t' h! Y1 s+ a8 m==========================================; n* M1 J3 J+ e: U. z1 }- S, q) x% [
三、安装Apache 1.3.x 及 PHP运行设置% j) S- l6 }8 {
1.首先下载Apache,Apache软件一般叫作apache_1_3_x.win32.exe。运行它。它会问你将Apache安装到什么地方,为他系统安全及操作容易,我们不要使用默认路径,你可以设为c:\Apache或C:\,因为马上你就要修改它的配置文件。2 G4 p! K: e" m) E: d
如果安装没出什么错的话,Apache就可以用了。有很多readme文件可供参考,但仅有一个文件是讲Win32平台的,包括Window 9x和Windows NT。
. @& y& I: t1 Q% z有两种方式使 PHP 工作于 Windows 下的 Apache 1.3.x。一种是 CGI 方式(php.exe),另一种是使用 Apache 模块 DLL。不管哪种方式都需要停止 Apache,编辑 httpd.conf 来配置 Apache 以加入PHP支持。 & ^# s7 _( T5 |/ X# x
值得在这里指出现在 Windows 下的 SAPI 模块更加稳定了,我们推荐使用模块方式,因为更加透明和安全。 ' a( e8 J- f8 C9 r# R2 w
尽管有几种不同方法在 Apache 下配置 PHP,但是对新手来说还是非常简单易用的。有关更多的 httpd.conf 配置指令请参考 Apache 文档。
  X) ?. O5 V% d) Y6 U如果你按照手工安装步骤一节中的说明把 PHP 解压缩到了 c:\php\ 目录下,那么需要加入以下三行到 Apache 配置文件中以 CGI 方式安装:
+ Y- R5 S6 J. X& \% O/ z. J3 `* g- @* v7 i# Q3 n& b$ }2 c
ScriptAlias /php/ "c:/php/" + Y3 T+ o. z! j" A
AddType application/x-httpd-php .php .phtml 3 H- T  u/ U) V3 |
Action application/x-httpd-php "/php/php.exe" $ Q9 m4 q% n) A
注意上面的第二行在原来的 httpd.conf 中就有的,不过被注释了。还有记住用你自己放置 PHP 的路径替换 c:/php/。 ' X  W! b" r/ k7 j2 m! U

- _( x5 x6 Q6 J警告 ! F( A3 V1 Q& J' s2 s  F
在 CGI 方式下,你的服务器可能会受到几种攻击的影响。请学习如何防止攻击。 ( {  A  V) ^) b0 Y1 [' {
0 v* w2 E0 b! a: S, U5 j& v
如果你想在 Apache 中用模块方式使用 PHP,确认把 php4ts.dll 拷贝到 windows/system(Windows 9x/Me)或者 winnt/system32(Windows NT/2000)或者 windows/system32(Windows XP)目录下,覆盖原来的文件。然后在 Apache 配置文件 httpd.conf 中加入以下两行: " W. t4 _0 C/ p) A4 s" @, O+ p
/ t: B! {9 f" t$ W6 R/ R/ U# d- v
用自己喜爱的编辑器打开 httpd.conf,找到 LoadModule 指令的部分,在其列表的最后部分加上如下一行,
2 {% t4 H0 B5 q0 W: H对 PHP 4:+ z4 x: R. u9 i, c) `+ \# Q
LoadModule php4_module c:/php/sapi/php4apache.dll
: G5 _, ]$ t; U, L8 R3 a对 PHP 5:
9 `, I0 T4 B; l4 QLoadModule php5_module "c:/php/sapi/php5apache.dll"; P( J9 O& q- k- \) J
你可能发现在用 Windows Installer 安装了 Apache 之后需要为用 AddModule 指令定义 mod_php4.c。尤其是在定义了 ClearModuleList 指令时格外重要,向下滚动几行可以找到该指令。你将会看到 AddModule 项目的列表,在列表的最后加上这一行:3 y9 O& g- _0 A! i- A
AddModule mod_php4.c
+ n+ [( ^/ Q6 Q3 W4 C对于 PHP 5 则为:: \9 p' X9 F2 k2 q* K
AddModule mod_php5.c
" K. F4 w$ c$ |" @$ _9 v, K搜索类似 # AddType allows you to tweak mime.types 的短语,你会找到一些 AddType 的项目,并且在列表的最后有这一行: AddType application/x-httpd-php .php。你可以在这里选择任何想用 PHP 解析的后缀。.php 只是所建议的一个。甚至可以包括 .html,也可以加上 .php3 来向下兼容。 . y) S. u7 H( e7 p
5 X. l- n! B, v" }' k; H
修改了配置文件之后记住重新启动 Apache,例如如果你的 Apache 是作为 Windows 的服务安装的,NET STOP APACHE 后面接上 NET START APACHE。或者用你通常使用的快捷方式。 : t& Z" S( Q  d+ a
有两种方式使用源程序语法彩色显示特色,但是取决于你的安装方法。如果你配置了 Apache 的 SAPI 模块方式使用 PHP,那么在 httpd.conf 中(和插入 AddType application/x-httpd-php .php 是同一个位置)加入下面一行就可以使用本特色:AddType application/x-httpd-php-source .phps。
; @% ~8 q0 P# W% ^$ d如果你用 CGI 方式使用 PHP,那你需要用 show_source() 函数。建立一个 PHP 文件,加入以下代码:<?php show_source ("original_php_script.php"); ?>。用你想要显示源代码的文件名替换掉 original_php_script.php。
# |, q8 ]; `' y- x, v' q注: 在 Windows-Apache 组合中,所有路径中的反斜线例如 "c:\directory\file.ext" 都必须转换成斜线,如 "c:/directory/file.ext"。
+ y, {! s8 _$ Y============================================4 x3 t3 N4 x5 I
四、实现Apache虚拟主机的两种方案" s/ n2 K% k. D0 ]
简介:这里说的虚拟主机是指在一台机器上仅运行一个httpd后台程序
. ^4 ]1 `8 c4 t9 ?2 n0 M* K! N& {支持多个Apache服务器,如在公司财务部门有一台web服务器,名为 0 \: J) z' G+ _- A+ S8 ~
account.yourdomain.com,同时又想为sales部门建立网站,网站内容也 . N+ |4 x" h* k' Y5 a
放在该机器上,通过sales.yourdomain.com访问,这就要用到虚拟主机 % M3 Y: Y3 Q$ p1 @" M. s
设置。 % L8 f5 ]1 [# m9 t& F( N0 X1 o
设置Apache虚拟主机通常有两种方案 ' s, v5 f8 x# e3 u, S
1.基于IP的虚拟主机   v* w7 M/ N9 A3 t: E; B
  这种方式需要在机器上设置IP别名,象上面的例子,在一台机器的
& t7 g2 d, A. {% o网卡上绑定多个IP地址去服务多个虚拟主机。 & Q& l* k  Q3 Q4 Y! [
若该机器的IP地址为192.168.0.1(account.yourdomain.com),首先 * P! U& r$ X. c; p4 a
你要设置IP别名(假设用192.168.0.2作为其别名IP)。加下面的行到 6 O2 b8 j6 j2 B" [' a
/etc/rc.d/rc.local,确保每次启动后自动运行。
4 F  o3 R( [/ a; |#/sbin/ifconfig eth0:0 192.168.0.2 netmask 255.255.255.0 broadcast \   Y* k( P% m  p! {. v
192.168.0.255 up 8 p2 }: Q, Y* ~3 v- R7 j
#/sbin/route add -host 192.168.0.2 eth0:0
3 _5 _( f3 ~3 n然后你需要设置/etd/httpd/conf/httpd.conf文件:
' F" S; J  v( \( j<VirtualHost 192.168.0.2> 3 N4 c+ W5 b4 p4 z8 F/ y
ServerAdmin webmaster@yourdomain.com   L- k: d. K: ]7 |9 y
DocumentRoot /home/httpd/sales.yourdomain.com
' v6 l$ x2 D$ o/ u$ J+ @' ZServerName sales.yourdomain.com 9 F6 ^1 t% \3 G$ M+ s
ErrorLog /var/log/httpd/sales.yourdomain.com/error_log " w. k$ ?, L( f
TransferLog /var/log/httpd/sales.yourdomain.com/access_log * T3 y# z4 {0 c* l' I* B
</VirtualHost> ( R7 a' w. C- S
然后分别创建目录 3 |" X$ `7 h4 ~5 y) _4 [, [
/home/httpd/sales.yourdomain.com,
1 \, e5 g( t& D" k6 m! v5 Z/var/log/httpd/sales.yourdomain.com + d+ b) T% K5 G& Y$ c+ d0 P
放相应的网站内容到目录/home/httpd/sales.yourdomain.com下即可,并确保 % g4 P5 }* {: i  ?6 }+ ~
你内部的DNS指定sales.yourdomain.com的A记录到IP地址192.168.0.2 。
% s1 i0 y- R: q% f5 m" p4 [: j" Z注:这种基于IP的虚拟主机有一个缺点,就是你需要更多的IP地址去服务各自的 7 N  e5 c1 K. ?8 M5 p
虚拟主机,如果你仅仅有一个IP地址,那么你将可以考虑用基于名字的虚拟主机 4 S- O6 i8 e) e$ e4 A/ s8 g
方案。 / o* C3 Z  G5 P2 b

' x( n) m, Y) P4 j" C2.基于名字的虚拟主机:
, G" s/ h) |7 W' X( X  它的优势就是不需要更多的IP地址,容易配置,不需要其它软硬件,现代的 3 w0 `' X# Q/ Z# S/ O( \; E( t4 L
浏览器大多都支持这种方式。与基于IP的虚拟主机一样,你需要编辑文件
7 N& ]# A" {& J/etc/httpd/conf/httpd.conf
: x5 O5 Q; \* yNameVirtualHost 192.168.0.1 / l9 q; Q7 y5 ^* V- _  G) ^: A4 j
<VirtualHost 192.168.0.1>
7 _/ [  x2 E" \8 M2 \ServerAdmin webmaster@yourdomain.com
+ Z9 f4 \( s. `/ I4 M% b; DDocumentRoot /home/httpd/sales.yourdomain.com
$ i" n: b. w/ J( @ServerName sales.yourdomain.com
$ F  Q2 _. [: b! q& h! AErrorLog /var/log/httpd/sales.yourdomain.com/error_log
8 T: c( V& X  y( ^% J. }TransferLog /var/log/httpd/sales.yourdomain.com/access_log + P  [6 h, U  k$ @3 K0 a5 G
</VirtualHost> # ~3 v4 \8 ~3 {1 D% L2 `2 L
<VirtualHost 192.168.0.1> 4 F1 b6 W, C) Q, e' e2 E4 I
ServerAdmin webmaster@yourdomain.com ) n! g3 I4 ^' s& y% D- K
DocumentRoot /home/httpd/hr.yourdomain.com 0 L* l9 _0 J6 _
ServerName hr.yourdomain.com
, g7 q4 Y( Z) Z' E& `ErrorLog /var/log/httpd/hr.yourdomain.com/error_log
3 D2 o# \2 c0 X; K5 mTransferLog /var/log/hr.yourdomain.com/access_log
# m3 f2 x, g, z: z, @, D) Q* r</VirtualHost> 7 W; w% s, s: T# ^3 _  `
注: 你需要加NameVirtualHost 指示在最前面,下面依次为各个虚拟主机,
2 Z8 I; I+ d" I; t5 k! S为了让它工作,你需要把sales.yourdomain.com, hr.yourdomain.com的DNS
* E8 g6 f9 K5 L# x0 c) V" D" V都指向IP地址192.168.0.1 ; w5 f5 f8 i9 W. D* n
上面的两种都将工作,如果是在外部网段,在互联网上提供WWW服务,你可能 1 D- \+ Q) ~9 a4 K2 }
没有足够的真实IP地址来支持多个虚拟主机,便可用基于名字的虚拟主机方案, 6 S; _2 z8 g2 G7 @3 d2 y
若是在内部网段上,你有较多的内部保留IP地址,将没有太大的区别。
& ~; |9 a+ k, \+ v  f/ ~) A提示:上面所提到的相对目录可以用绝对路径代替,如:
8 u* L! K; }' L/home/httpd/hr.yourdomain.com 可改为 D:/Inetpub/wwwroot) z% ^1 O7 c. N5 g9 Q, e) a. _
==================END=======================
' y% q# `  l! A4 c8 V* J这只是入门,只能保证你的WEB服务器能正常运,要了解更多的 PHP 及 Apache 的详细设置,还要靠大家更加深入的实践...

另外可以用一个安装包安装全部PHP软件
9 X$ T  {. L$ h0 r1 M  ?6 P下载地址:9 k- {7 z" M- F; y4 |4 p( E
http://webclub.net.cn/data/phpStudy1.2.5.rar

TOP

亲娘那
' U" w) A8 n/ ^1 d怎么没图哈
1 u2 C6 s! w6 d7 n& W应该图文结合啊
: f: a' R8 C4 p1 y% a' R) s

TOP

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