返回列表 发帖

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

前言:这一篇是我亲身配置的经历,希望大家喜欢,现在网络的教程中,PHP运行在Apache“模块”方式的文章中都少了最重要的一个步骤,也就是说按其方法配置PHP不能运行,有的太过简单,有的太过复杂,所以花了点时间整理一下。, u# {( d" \" D2 W) B$ P$ x
( M' W2 |: _9 Q
一、安装PHP48 X1 r& n0 @+ C2 f1 `
我们需要安装的是win32版本,下载当然也是win32版本 php4.3.0-win32.zip6 v: {. B2 d+ l
1.下载后,解压到c:\php目录下。7 e5 e$ Z) b, C! Q/ X
2. 把c:\php目录下的php4ts.dll php4ts.lib文件都拷贝到c:\winnt\system32目录下(即window 2000系统目录下的system32目录)。$ i" i# [* ~( ]* h7 m. i
3. 修改php.ini文件,把c:\php目录下的php.ini-dist文件改名为php.ini 用记事本或其它可编辑文本的软件把它打开。! T9 M- c9 h1 @, s8 T# I/ [2 h2 X% ]
3.1找到register_globals = Off 改为register_globals = On; V- y6 Y9 Y& ~* L- c4 c
这一步是为了使部分旧的PHP程序能正常运行;
; n9 k. n" b4 u  s3.2找到 extension_dir = ./ 把它改为extension_dir = c:\php\extensions
* W: r/ J; m# C# T  `. ]以下内容新手请略过
  I3 V7 U' V" i1 ~===============新手略过开开始================- u+ y. J* J. A$ c
刚刚的修改是指定php4扩展dll文件存放的路径 由于php4默认所带的php.ini-dist中,是关掉了所有的扩展dll的功能( Windows Extensions)
$ s6 \% |" v% `7 o' p8 ], T;extension=php_bz2.dll' r6 r  j0 U, h% ^; b
;extension=php_cpdf.dll& `4 i" g; i* v9 _, C. O# s% k
;extension=php_crack.dll$ T2 m! |$ E# n
;extension=php_curl.dll
# _$ [* B* H/ C# T$ B..... & `$ O& K" u' H* G
要做的就是把extension前面的分号去掉就行了,当然这样是不够的。因为有些extension在我们的系统是不能使用的,比如系统中没有安装 sql server的话,那么extension=php_mssql.dll就要用;(分号)把它注释掉;
$ I0 f6 J/ E3 G! q6 R其中,PHP4带了两个GD扩展,请选用一个,另一个先用分号注释掉,以免出现函数无法注册的错误;6 E* K7 ?: @% n/ p+ u+ K
如下面* e  t; e, `: {6 X" H7 ^% K
extension=php_gd.dll
& T$ v0 W9 n! P( i3 s* t;extension=php_gd2.dll* ]. }/ s/ e* u! n" L
按实际所须的extension=php_xxxx.dll前面的分号都去掉。
, \8 ~) m/ o' i3 U; ^9 [=============新手略过结束================
  `8 r) l  Z0 b1 J% ~  B3.3 找到session.save_path,把这一项改为 session.save_path = c:\tmp6 Z3 S% x+ g. H+ ]6 f, J
并在C盘建立一个TMP目录
& B4 Q0 K5 c' E  ?9 J) e" Q3.4记得要保存刚刚的修改 并把php.ini文件放置在c:\winnt目录下。8 d6 T* X; D. J& E) y0 n; b) D
================================================
$ _7 a$ O" L. Z二、安装MySql3 h9 ]0 q+ ]3 f3 b' V
安装MySql 当然,我在MySql.com 下载的MySql是一个压缩包,要先解压出来;再点setup.exe安装;
# L6 F& z* P; j' r- V! i按默认安装,即安装在c:\MySql下,安装完后,按“开始”菜单中的“运行”打进cmd进入dos窗口,进到c:\MySql\bin 目录;
, g/ N4 n4 @/ h5 S( X1 P4 F8 R8 T4 h, M运行mysqld-nt --install (将会出现一个Dos窗口,随即自动关闭!如果没有出任何信息,即安装到service成功!)
, w& Q' E7 i% h6 a0 x: ?" N从“开始”菜单“程序”=》“管理工具”=》“服务”,打开后,将会找到MySql,点击mouse右键 选择启动 回到刚刚的Dos窗口
' q/ R! g6 k1 h* |* T( x# i3 `即c:\MySql\bin目录下 运行mysqladmin -u root password 123 即把root用户的密码设置为123 这一步,如果没有出错,说明初始化root密码成功;9 R! K, v) }7 Q
当然从本机进入MySql是不需要用户名和密码,但用php 程序或是其它程序连接MySql时就要用到;
% h6 O  O; I0 W测试进入 第一种方法:直接动行MySql进入MySql 的dos管理状态;! O) l0 N3 b; B; {$ I
第二种方法:运行MySql -uroot -p MySql将会提示让您输入密码,密码当然就是刚刚设置的123(当然,得按设置的密码喽,不一定得设置是123)$ v% W9 f6 i" J" q& 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>
1 o0 ~  ^$ T$ _" S6 i2 P; K即安装MySql成功。
* r. H  A" H; E% b==========================================, o; B$ E+ Z+ C- h) N0 Y- U
三、安装Apache 1.3.x 及 PHP运行设置6 `4 v) M& G3 x4 G6 ?, @
1.首先下载Apache,Apache软件一般叫作apache_1_3_x.win32.exe。运行它。它会问你将Apache安装到什么地方,为他系统安全及操作容易,我们不要使用默认路径,你可以设为c:\Apache或C:\,因为马上你就要修改它的配置文件。
5 v, w, H, j2 m如果安装没出什么错的话,Apache就可以用了。有很多readme文件可供参考,但仅有一个文件是讲Win32平台的,包括Window 9x和Windows NT。
# B# p! H- |  _2 J' |/ F2 f有两种方式使 PHP 工作于 Windows 下的 Apache 1.3.x。一种是 CGI 方式(php.exe),另一种是使用 Apache 模块 DLL。不管哪种方式都需要停止 Apache,编辑 httpd.conf 来配置 Apache 以加入PHP支持。 ) k9 G8 s  p" k8 U
值得在这里指出现在 Windows 下的 SAPI 模块更加稳定了,我们推荐使用模块方式,因为更加透明和安全。 6 \/ ]( E0 a% }' K
尽管有几种不同方法在 Apache 下配置 PHP,但是对新手来说还是非常简单易用的。有关更多的 httpd.conf 配置指令请参考 Apache 文档。 ( q9 w/ e& k( j; ^. ^) ]4 K
如果你按照手工安装步骤一节中的说明把 PHP 解压缩到了 c:\php\ 目录下,那么需要加入以下三行到 Apache 配置文件中以 CGI 方式安装:
% i) ]2 M& @2 Z" w0 p7 n: N& J% y% S
ScriptAlias /php/ "c:/php/" . l' P3 H! ]4 r- X
AddType application/x-httpd-php .php .phtml " g2 d, Q1 V" @+ ?3 M$ W2 \
Action application/x-httpd-php "/php/php.exe" * c) f3 Q$ n# u0 Z6 ^5 C
注意上面的第二行在原来的 httpd.conf 中就有的,不过被注释了。还有记住用你自己放置 PHP 的路径替换 c:/php/。
4 M8 D: i! K3 M' ?6 K5 j9 p& W" E6 R# o: w/ R
警告 ! s4 L/ Q6 O, d& {& I6 d  h
在 CGI 方式下,你的服务器可能会受到几种攻击的影响。请学习如何防止攻击。 ; H5 z8 s/ b/ i. s) V6 E' H
" S& ^8 {2 F! }
如果你想在 Apache 中用模块方式使用 PHP,确认把 php4ts.dll 拷贝到 windows/system(Windows 9x/Me)或者 winnt/system32(Windows NT/2000)或者 windows/system32(Windows XP)目录下,覆盖原来的文件。然后在 Apache 配置文件 httpd.conf 中加入以下两行: 1 _/ Z" s: Q! }  G4 [3 ], Y
- ?8 H1 m6 v* N
用自己喜爱的编辑器打开 httpd.conf,找到 LoadModule 指令的部分,在其列表的最后部分加上如下一行,6 c- l: n! x5 s- \4 D9 o
对 PHP 4:; j5 V% }4 ^; S
LoadModule php4_module c:/php/sapi/php4apache.dll# g7 q+ I$ e6 S- Q( b
对 PHP 5:" U5 V2 U8 ~0 k7 }8 s+ h% J* u
LoadModule php5_module "c:/php/sapi/php5apache.dll"
6 q( X) v  y  L) r* B你可能发现在用 Windows Installer 安装了 Apache 之后需要为用 AddModule 指令定义 mod_php4.c。尤其是在定义了 ClearModuleList 指令时格外重要,向下滚动几行可以找到该指令。你将会看到 AddModule 项目的列表,在列表的最后加上这一行:* f# H, G' Y& R/ {* u
AddModule mod_php4.c
/ H5 b  d; s9 D/ ^( o" c对于 PHP 5 则为:4 b! w; u# C" X9 c9 u
AddModule mod_php5.c; W' }8 s1 k: e5 G; U
搜索类似 # AddType allows you to tweak mime.types 的短语,你会找到一些 AddType 的项目,并且在列表的最后有这一行: AddType application/x-httpd-php .php。你可以在这里选择任何想用 PHP 解析的后缀。.php 只是所建议的一个。甚至可以包括 .html,也可以加上 .php3 来向下兼容。
  }: ]% P' ^( }5 `; s
9 I9 O* u0 U! Z/ W+ s! b0 t# q修改了配置文件之后记住重新启动 Apache,例如如果你的 Apache 是作为 Windows 的服务安装的,NET STOP APACHE 后面接上 NET START APACHE。或者用你通常使用的快捷方式。 + G& O; `" d' O2 {" L
有两种方式使用源程序语法彩色显示特色,但是取决于你的安装方法。如果你配置了 Apache 的 SAPI 模块方式使用 PHP,那么在 httpd.conf 中(和插入 AddType application/x-httpd-php .php 是同一个位置)加入下面一行就可以使用本特色:AddType application/x-httpd-php-source .phps。
! G* e% T: c! ^( M如果你用 CGI 方式使用 PHP,那你需要用 show_source() 函数。建立一个 PHP 文件,加入以下代码:<?php show_source ("original_php_script.php"); ?>。用你想要显示源代码的文件名替换掉 original_php_script.php。
! D4 l* f9 G. @% Y' w注: 在 Windows-Apache 组合中,所有路径中的反斜线例如 "c:\directory\file.ext" 都必须转换成斜线,如 "c:/directory/file.ext"。) h' n+ w: `- Q" y
============================================! u+ @5 N! k6 A
四、实现Apache虚拟主机的两种方案
+ g8 e, u* z0 S5 E+ [6 C4 p5 h& U简介:这里说的虚拟主机是指在一台机器上仅运行一个httpd后台程序
& J7 i5 o' r( @, c5 {( b; B支持多个Apache服务器,如在公司财务部门有一台web服务器,名为
3 B2 Y! u! i) f. v! B1 l5 ?4 A2 Haccount.yourdomain.com,同时又想为sales部门建立网站,网站内容也
* x7 n& L1 Z" ?1 d放在该机器上,通过sales.yourdomain.com访问,这就要用到虚拟主机 4 F7 e* F- c) k7 B
设置。
0 t! g) r: F: ]3 S) u# R& M设置Apache虚拟主机通常有两种方案 $ x' V1 a1 h5 i2 M9 r' n
1.基于IP的虚拟主机 2 e# I1 P( c- \6 `% F% U! }' ~
  这种方式需要在机器上设置IP别名,象上面的例子,在一台机器的
$ k  \$ _3 g* T6 ]) y9 Y网卡上绑定多个IP地址去服务多个虚拟主机。 ) V3 v1 f4 I( e# i7 v
若该机器的IP地址为192.168.0.1(account.yourdomain.com),首先 0 o6 t3 d" F% N1 T, L
你要设置IP别名(假设用192.168.0.2作为其别名IP)。加下面的行到
# m' P+ k9 T1 @4 Q/etc/rc.d/rc.local,确保每次启动后自动运行。
, b! f0 G. }3 B' ]" h9 r#/sbin/ifconfig eth0:0 192.168.0.2 netmask 255.255.255.0 broadcast \ + I9 D* A: [9 _) C1 @
192.168.0.255 up
) A# ?) M7 J. G# I; I3 k: I#/sbin/route add -host 192.168.0.2 eth0:0 5 o4 t" c6 \4 y* e' e
然后你需要设置/etd/httpd/conf/httpd.conf文件:
- c1 ]* H6 {* o<VirtualHost 192.168.0.2>
- l1 Z/ D. |7 w8 Z5 lServerAdmin webmaster@yourdomain.com 3 b* t/ Q4 o' s% z
DocumentRoot /home/httpd/sales.yourdomain.com
6 d5 u) ^" \. e/ @8 Z$ c4 q) e( ~  Y7 j7 UServerName sales.yourdomain.com
4 ?8 ]5 _. r$ j4 M/ K$ ]- i1 S% [5 pErrorLog /var/log/httpd/sales.yourdomain.com/error_log 8 b; {1 e8 ?9 C
TransferLog /var/log/httpd/sales.yourdomain.com/access_log + I8 l3 y2 B+ z+ g+ J, _. {+ C
</VirtualHost>
$ ?3 B2 U% k. g- e# X然后分别创建目录
% W/ c2 t5 g0 }/ E4 [' v0 H! f! _' @/home/httpd/sales.yourdomain.com, " m, m7 \1 L5 m% h
/var/log/httpd/sales.yourdomain.com
8 H% V: `+ U% C6 X放相应的网站内容到目录/home/httpd/sales.yourdomain.com下即可,并确保 . b, U5 |$ w& V: |& _) ^: `
你内部的DNS指定sales.yourdomain.com的A记录到IP地址192.168.0.2 。 ' s# y) H, W6 B9 F( q
注:这种基于IP的虚拟主机有一个缺点,就是你需要更多的IP地址去服务各自的 3 y( j! N$ p- k, o9 f
虚拟主机,如果你仅仅有一个IP地址,那么你将可以考虑用基于名字的虚拟主机 9 ^' F; V, E. F$ N5 t
方案。 ' a. D) y6 f4 S7 T' w9 c' q; m

7 x$ d9 ?7 x: G8 j2.基于名字的虚拟主机: 0 W; V0 g# D2 p$ o& h
  它的优势就是不需要更多的IP地址,容易配置,不需要其它软硬件,现代的 ( x2 [6 X+ [& o" F
浏览器大多都支持这种方式。与基于IP的虚拟主机一样,你需要编辑文件
4 ^; K+ v9 m, _; g& a$ \/etc/httpd/conf/httpd.conf
" j; [% Y6 L# j6 t3 v% pNameVirtualHost 192.168.0.1 1 h9 E1 J, A6 I9 W7 f
<VirtualHost 192.168.0.1>
  ?5 X8 H  @7 s8 D5 zServerAdmin webmaster@yourdomain.com
( p6 q0 @/ z; g; S: ?/ ?+ YDocumentRoot /home/httpd/sales.yourdomain.com 2 P% l0 a( `* U+ a  b
ServerName sales.yourdomain.com - \* S5 W2 M  h- U5 M; a. ?
ErrorLog /var/log/httpd/sales.yourdomain.com/error_log
, X1 x/ X0 u9 }TransferLog /var/log/httpd/sales.yourdomain.com/access_log : r  q1 u) i6 k+ r/ [6 z/ R$ T6 h
</VirtualHost>
/ N7 P# u& ~6 k6 k) z1 _/ P<VirtualHost 192.168.0.1> 2 A* {- I+ {" S$ B. C1 y- ?# G! R
ServerAdmin webmaster@yourdomain.com
9 a$ n; D$ I( ~% Q' XDocumentRoot /home/httpd/hr.yourdomain.com , E/ J, H' L" b; |: z* i
ServerName hr.yourdomain.com
  D( ?6 }8 |/ I: `ErrorLog /var/log/httpd/hr.yourdomain.com/error_log
! u$ _- P7 `4 @  YTransferLog /var/log/hr.yourdomain.com/access_log   f' e2 U7 k$ q" @# w3 H
</VirtualHost>
* Z0 j0 v  t  F! z* g注: 你需要加NameVirtualHost 指示在最前面,下面依次为各个虚拟主机, 1 q7 J: V/ I: [% c' o, ~0 i
为了让它工作,你需要把sales.yourdomain.com, hr.yourdomain.com的DNS
! V9 O& g0 u$ n. ]3 T( G7 N都指向IP地址192.168.0.1
  C: r$ r% \$ ?  U; d7 \- Q上面的两种都将工作,如果是在外部网段,在互联网上提供WWW服务,你可能 ; T5 z* T; J; W8 q5 Z+ m
没有足够的真实IP地址来支持多个虚拟主机,便可用基于名字的虚拟主机方案,
5 m! ]% P4 z" ~7 E$ {, s若是在内部网段上,你有较多的内部保留IP地址,将没有太大的区别。 6 ^4 S' q( V* O- F6 \6 g) Z$ @; j- H
提示:上面所提到的相对目录可以用绝对路径代替,如:
5 f1 b/ d' @; V* e/home/httpd/hr.yourdomain.com 可改为 D:/Inetpub/wwwroot
; b4 d# F9 x- d7 h: z) k==================END=======================( G2 a* h6 }+ I: a9 b. U
这只是入门,只能保证你的WEB服务器能正常运,要了解更多的 PHP 及 Apache 的详细设置,还要靠大家更加深入的实践...

另外可以用一个安装包安装全部PHP软件" `9 C6 w; K! l: D- n: m: V% j8 Q
下载地址:
8 b# h+ f' W- ~/ c/ `  e7 z" [( Hhttp://webclub.net.cn/data/phpStudy1.2.5.rar

TOP

亲娘那
2 z4 G" z" W! D7 U; Q. v0 H( L怎么没图哈
; I3 J! i# E2 Y% R应该图文结合啊
$ e0 V- z: I! Z% u3 @+ J- O" f

TOP

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