返回列表 发帖

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

前言:这一篇是我亲身配置的经历,希望大家喜欢,现在网络的教程中,PHP运行在Apache“模块”方式的文章中都少了最重要的一个步骤,也就是说按其方法配置PHP不能运行,有的太过简单,有的太过复杂,所以花了点时间整理一下。
4 ?# ]4 I# b* |  F7 A
4 `2 {( g+ g3 K' \6 \, Q' G一、安装PHP44 K" v, Z1 _9 M4 H9 I  }
我们需要安装的是win32版本,下载当然也是win32版本 php4.3.0-win32.zip
; A" _' P2 K. O9 O+ j1.下载后,解压到c:\php目录下。  y% H; t! x- C
2. 把c:\php目录下的php4ts.dll php4ts.lib文件都拷贝到c:\winnt\system32目录下(即window 2000系统目录下的system32目录)。0 S3 }. r& l: O8 _) d- `9 ?# ?  O+ @
3. 修改php.ini文件,把c:\php目录下的php.ini-dist文件改名为php.ini 用记事本或其它可编辑文本的软件把它打开。8 k5 f( D$ ^: w6 t8 X8 `$ m4 B6 T
3.1找到register_globals = Off 改为register_globals = On- |$ X4 n& ]; H4 W3 {2 d+ H
这一步是为了使部分旧的PHP程序能正常运行;) [0 T% b/ h' d* c" \
3.2找到 extension_dir = ./ 把它改为extension_dir = c:\php\extensions! i& |& l' E0 E: a7 [8 p# L1 [! F
以下内容新手请略过1 n# `4 K  P+ K, `" ]  D
===============新手略过开开始================( J. J. Y* P& y' p
刚刚的修改是指定php4扩展dll文件存放的路径 由于php4默认所带的php.ini-dist中,是关掉了所有的扩展dll的功能( Windows Extensions)   r. P, Z& ]0 O: [* H" n" |5 M6 M  l/ \
;extension=php_bz2.dll# H3 h2 s* a6 x7 \# \
;extension=php_cpdf.dll1 y. {: s! q6 _2 r: z, j- P3 A. |# M
;extension=php_crack.dll% q. E% I/ M6 {* o% m+ G+ d; N' p
;extension=php_curl.dll
9 {0 D8 j) n, V.....
- ^' l* g+ {* b$ r要做的就是把extension前面的分号去掉就行了,当然这样是不够的。因为有些extension在我们的系统是不能使用的,比如系统中没有安装 sql server的话,那么extension=php_mssql.dll就要用;(分号)把它注释掉;
$ n0 t/ V. C* |% {4 ]其中,PHP4带了两个GD扩展,请选用一个,另一个先用分号注释掉,以免出现函数无法注册的错误;" j) X* e/ k1 _' r& w6 i0 Z$ h
如下面
: U6 h2 q5 P; Bextension=php_gd.dll
1 I* i4 i) y4 D# k;extension=php_gd2.dll
) K" ?5 |. ^7 O1 C# y按实际所须的extension=php_xxxx.dll前面的分号都去掉。! {( g4 _; h* p6 ?( j6 L7 l
=============新手略过结束================
: y6 B+ W1 ^  L  M! d3.3 找到session.save_path,把这一项改为 session.save_path = c:\tmp9 O! L! L4 n3 h7 h6 I9 ?% H
并在C盘建立一个TMP目录: D9 E) L  r2 ~
3.4记得要保存刚刚的修改 并把php.ini文件放置在c:\winnt目录下。
2 F+ [7 ~* K7 b4 M, i' _0 A& Q. P! @8 G================================================
; C9 P) W/ n( h8 }8 w9 u二、安装MySql
$ L' a3 ~" }/ W' H, P# t6 z! z. [安装MySql 当然,我在MySql.com 下载的MySql是一个压缩包,要先解压出来;再点setup.exe安装;
" G; T& i/ n" m* T按默认安装,即安装在c:\MySql下,安装完后,按“开始”菜单中的“运行”打进cmd进入dos窗口,进到c:\MySql\bin 目录;
6 _* b, o* c8 E1 b运行mysqld-nt --install (将会出现一个Dos窗口,随即自动关闭!如果没有出任何信息,即安装到service成功!)
. c$ T1 M& J3 W* o7 H4 r0 m- Y从“开始”菜单“程序”=》“管理工具”=》“服务”,打开后,将会找到MySql,点击mouse右键 选择启动 回到刚刚的Dos窗口* a4 D4 a4 I6 h
即c:\MySql\bin目录下 运行mysqladmin -u root password 123 即把root用户的密码设置为123 这一步,如果没有出错,说明初始化root密码成功;
* g. ?) s4 u5 w# Q2 g9 r; b当然从本机进入MySql是不需要用户名和密码,但用php 程序或是其它程序连接MySql时就要用到;
3 V( g7 z9 k* H& l) @/ ^测试进入 第一种方法:直接动行MySql进入MySql 的dos管理状态;# l" S8 U6 Y& X& P3 ~. `& A/ T9 d# S8 G
第二种方法:运行MySql -uroot -p MySql将会提示让您输入密码,密码当然就是刚刚设置的123(当然,得按设置的密码喽,不一定得设置是123)+ ^* d/ u* W- a% 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> - V; c. A  }' B! Z3 c2 h
即安装MySql成功。
1 L. s4 J( A! q+ n( o9 i% X8 l3 [* K" v==========================================
* t- k8 k% b' H( F  Z三、安装Apache 1.3.x 及 PHP运行设置
' Q0 I4 m" n! W" l5 G8 i! E1.首先下载Apache,Apache软件一般叫作apache_1_3_x.win32.exe。运行它。它会问你将Apache安装到什么地方,为他系统安全及操作容易,我们不要使用默认路径,你可以设为c:\Apache或C:\,因为马上你就要修改它的配置文件。
2 N3 y: x# e/ T1 f: f( H! D5 _如果安装没出什么错的话,Apache就可以用了。有很多readme文件可供参考,但仅有一个文件是讲Win32平台的,包括Window 9x和Windows NT。
( o  [) a# c0 w5 K有两种方式使 PHP 工作于 Windows 下的 Apache 1.3.x。一种是 CGI 方式(php.exe),另一种是使用 Apache 模块 DLL。不管哪种方式都需要停止 Apache,编辑 httpd.conf 来配置 Apache 以加入PHP支持。 % c$ D/ P) u- P+ U% `
值得在这里指出现在 Windows 下的 SAPI 模块更加稳定了,我们推荐使用模块方式,因为更加透明和安全。   ?  t- }* w7 r8 K" Z. Z; W/ U
尽管有几种不同方法在 Apache 下配置 PHP,但是对新手来说还是非常简单易用的。有关更多的 httpd.conf 配置指令请参考 Apache 文档。
& ?; p$ W) H* z' A+ {. W; }7 C如果你按照手工安装步骤一节中的说明把 PHP 解压缩到了 c:\php\ 目录下,那么需要加入以下三行到 Apache 配置文件中以 CGI 方式安装:
3 s- u6 n/ |' U' T2 }; Y/ y4 }  x0 {0 X/ f
ScriptAlias /php/ "c:/php/"
7 a3 F. s; K( ~9 y: C6 yAddType application/x-httpd-php .php .phtml 7 ]) j/ D# [- U  K
Action application/x-httpd-php "/php/php.exe"
0 F$ r2 o1 i$ h注意上面的第二行在原来的 httpd.conf 中就有的,不过被注释了。还有记住用你自己放置 PHP 的路径替换 c:/php/。 & ^0 g# z$ p4 x- H
/ T& f, y3 G2 H. [; ]4 [  _: p
警告   m, D% N) i. C
在 CGI 方式下,你的服务器可能会受到几种攻击的影响。请学习如何防止攻击。
+ y! o  Z# l8 g8 ~  k) n; a* z7 j
+ [& _. D3 N" x; N( v( w8 ~3 w如果你想在 Apache 中用模块方式使用 PHP,确认把 php4ts.dll 拷贝到 windows/system(Windows 9x/Me)或者 winnt/system32(Windows NT/2000)或者 windows/system32(Windows XP)目录下,覆盖原来的文件。然后在 Apache 配置文件 httpd.conf 中加入以下两行: 7 V+ t6 u0 s6 l: x8 x

, j8 p7 e0 \/ @; Z2 X( Z用自己喜爱的编辑器打开 httpd.conf,找到 LoadModule 指令的部分,在其列表的最后部分加上如下一行,' P; |* `: P. a% L" V
对 PHP 4:; c$ U0 T, |- ?
LoadModule php4_module c:/php/sapi/php4apache.dll
  F! @9 g$ G) A0 K  c/ e对 PHP 5:9 ~5 {0 X5 l% n! t0 R% Q' @: c
LoadModule php5_module "c:/php/sapi/php5apache.dll". Z. h% I+ t/ E- T8 W
你可能发现在用 Windows Installer 安装了 Apache 之后需要为用 AddModule 指令定义 mod_php4.c。尤其是在定义了 ClearModuleList 指令时格外重要,向下滚动几行可以找到该指令。你将会看到 AddModule 项目的列表,在列表的最后加上这一行:
$ k" n' A$ U+ S% @AddModule mod_php4.c( O" g. ~$ w0 o; O+ C) Q4 w% Z
对于 PHP 5 则为:- J# g8 G' e- y- }5 J
AddModule mod_php5.c
8 ?; a' _3 x1 S# `+ s搜索类似 # AddType allows you to tweak mime.types 的短语,你会找到一些 AddType 的项目,并且在列表的最后有这一行: AddType application/x-httpd-php .php。你可以在这里选择任何想用 PHP 解析的后缀。.php 只是所建议的一个。甚至可以包括 .html,也可以加上 .php3 来向下兼容。 , ?+ G/ `5 P8 M7 }7 ]0 P7 J

) o( {% o; \/ E( }% {1 i修改了配置文件之后记住重新启动 Apache,例如如果你的 Apache 是作为 Windows 的服务安装的,NET STOP APACHE 后面接上 NET START APACHE。或者用你通常使用的快捷方式。 # g- g1 d# Q4 B! y
有两种方式使用源程序语法彩色显示特色,但是取决于你的安装方法。如果你配置了 Apache 的 SAPI 模块方式使用 PHP,那么在 httpd.conf 中(和插入 AddType application/x-httpd-php .php 是同一个位置)加入下面一行就可以使用本特色:AddType application/x-httpd-php-source .phps。 2 M- C% i3 L. N0 _. @: t
如果你用 CGI 方式使用 PHP,那你需要用 show_source() 函数。建立一个 PHP 文件,加入以下代码:<?php show_source ("original_php_script.php"); ?>。用你想要显示源代码的文件名替换掉 original_php_script.php。 5 J. l) U9 e2 ]7 f
注: 在 Windows-Apache 组合中,所有路径中的反斜线例如 "c:\directory\file.ext" 都必须转换成斜线,如 "c:/directory/file.ext"。/ R6 X& d. o  L( |+ X! J9 P0 n
============================================* x1 f) [2 m" v. c5 w' ^+ G
四、实现Apache虚拟主机的两种方案8 |. h/ F4 r& Z- H  b6 }# Y. C7 d0 y
简介:这里说的虚拟主机是指在一台机器上仅运行一个httpd后台程序
! W) b& s( `2 Y/ ?支持多个Apache服务器,如在公司财务部门有一台web服务器,名为
+ ~9 t' k, m6 G* `0 N6 w$ Zaccount.yourdomain.com,同时又想为sales部门建立网站,网站内容也 " N5 T6 J4 y. G# F7 T5 s
放在该机器上,通过sales.yourdomain.com访问,这就要用到虚拟主机 " i1 w, [7 g. U3 j
设置。
8 p8 o1 |( q7 y& s2 @设置Apache虚拟主机通常有两种方案
2 v  S5 u+ a3 {1.基于IP的虚拟主机
+ z4 B9 }: y+ |/ D# q  这种方式需要在机器上设置IP别名,象上面的例子,在一台机器的
* s# s# l, c3 Y' _; g& p$ M网卡上绑定多个IP地址去服务多个虚拟主机。
! |8 M& K+ w# y9 X% e% Z+ ~* g若该机器的IP地址为192.168.0.1(account.yourdomain.com),首先
( F4 ]4 u$ S( R8 s6 x你要设置IP别名(假设用192.168.0.2作为其别名IP)。加下面的行到
% w4 H$ [3 X: t. z/etc/rc.d/rc.local,确保每次启动后自动运行。 " r, N, G: S. T
#/sbin/ifconfig eth0:0 192.168.0.2 netmask 255.255.255.0 broadcast \
5 i- _1 o/ o# x1 _% Z( B192.168.0.255 up : Y: Y" p* C* K" R6 P  a" D
#/sbin/route add -host 192.168.0.2 eth0:0 1 X2 G1 O( }' B8 }* ]
然后你需要设置/etd/httpd/conf/httpd.conf文件:
4 d! E) D( H  a: _# I7 E% x/ z<VirtualHost 192.168.0.2> $ t% B6 W( k  b3 t/ b0 C/ p
ServerAdmin webmaster@yourdomain.com
0 B2 g( b( G7 m7 T  R5 }5 JDocumentRoot /home/httpd/sales.yourdomain.com
; X( w* L1 O8 W) @+ h: {+ |3 JServerName sales.yourdomain.com 9 T7 Q! M& x! c. u' r
ErrorLog /var/log/httpd/sales.yourdomain.com/error_log ! l0 h6 |1 u' @0 B; `& z- s) b
TransferLog /var/log/httpd/sales.yourdomain.com/access_log
0 {. i9 b; L9 U! u</VirtualHost>
0 l2 j, B) Z" Y3 t$ e* M( p然后分别创建目录
# |1 O- ^4 w! z1 B/home/httpd/sales.yourdomain.com,
/ o+ N; b: S  H- ]9 ~5 f5 L9 ^/var/log/httpd/sales.yourdomain.com # {$ Z5 v, W. d: Y
放相应的网站内容到目录/home/httpd/sales.yourdomain.com下即可,并确保
4 j2 z3 ]) k( {7 S  a你内部的DNS指定sales.yourdomain.com的A记录到IP地址192.168.0.2 。 ) C7 I( |5 x9 Y; K
注:这种基于IP的虚拟主机有一个缺点,就是你需要更多的IP地址去服务各自的 - ?0 |, E$ \, W, L9 R8 _5 b' H
虚拟主机,如果你仅仅有一个IP地址,那么你将可以考虑用基于名字的虚拟主机 . G0 C8 Q* n: h9 B4 d. o! q
方案。
9 n, o- }* t5 @# N" p# l. u% F5 m
2.基于名字的虚拟主机:
% w. @" G/ D: a2 R* R) p  它的优势就是不需要更多的IP地址,容易配置,不需要其它软硬件,现代的   r+ U2 X6 N" w
浏览器大多都支持这种方式。与基于IP的虚拟主机一样,你需要编辑文件 6 L" d) z4 Z2 n5 ?
/etc/httpd/conf/httpd.conf
, ~& W& e( ~  d" F2 jNameVirtualHost 192.168.0.1
% n6 X% `% t. g( Y% O<VirtualHost 192.168.0.1>
% ^; }+ B) m% m" G$ [" }4 |* xServerAdmin webmaster@yourdomain.com
8 K) G2 d& x* I3 }# tDocumentRoot /home/httpd/sales.yourdomain.com
% `: l. G  i: E7 ]ServerName sales.yourdomain.com 4 X- Q. p' _& Q" _' K% {
ErrorLog /var/log/httpd/sales.yourdomain.com/error_log * f* U6 V1 U& G% Z6 _' i
TransferLog /var/log/httpd/sales.yourdomain.com/access_log " K: r% F0 p6 S4 {1 f* |3 |6 b
</VirtualHost> / b7 s- Q9 _+ b( U- V; f8 l6 y
<VirtualHost 192.168.0.1>
7 X* Y" I4 }3 z: [! Y! ZServerAdmin webmaster@yourdomain.com
* ^/ m3 R% v" R# s" H6 L8 `DocumentRoot /home/httpd/hr.yourdomain.com
. P, m4 d" M6 ]4 y+ HServerName hr.yourdomain.com
& ^5 ?; `. c$ ^ErrorLog /var/log/httpd/hr.yourdomain.com/error_log
4 S% @) q8 Z3 `: v& {7 z9 j( K, }TransferLog /var/log/hr.yourdomain.com/access_log
& v' l1 I4 V; O  d</VirtualHost> * \) m8 `% N1 @+ [1 b
注: 你需要加NameVirtualHost 指示在最前面,下面依次为各个虚拟主机,
+ A) b: V, q. n. ?为了让它工作,你需要把sales.yourdomain.com, hr.yourdomain.com的DNS 5 E  A- @  v/ U
都指向IP地址192.168.0.1 7 h  L  u& r# @5 Q
上面的两种都将工作,如果是在外部网段,在互联网上提供WWW服务,你可能
1 n9 B4 v. B) t5 s没有足够的真实IP地址来支持多个虚拟主机,便可用基于名字的虚拟主机方案,
0 C: T4 M) t/ I0 k若是在内部网段上,你有较多的内部保留IP地址,将没有太大的区别。
2 w) ^# ^8 E4 @0 C5 d3 l( }2 b提示:上面所提到的相对目录可以用绝对路径代替,如: " x) h' o( g  H
/home/httpd/hr.yourdomain.com 可改为 D:/Inetpub/wwwroot' a/ w8 K# ]- r+ g' L: K
==================END=======================9 u) P! M) A' j( A( n* G% c3 n3 v
这只是入门,只能保证你的WEB服务器能正常运,要了解更多的 PHP 及 Apache 的详细设置,还要靠大家更加深入的实践...

亲娘那
6 W5 i. u# J7 T, L& _& H- \' M& U怎么没图哈1 m2 c: w  I# h: L) k2 P
应该图文结合啊
6 a" W1 i& d3 q) `

TOP

另外可以用一个安装包安装全部PHP软件
; {' L# R5 l0 x+ m5 u# R6 _5 i' B下载地址:
0 M* j. Y- t( r$ U* j; J; Z3 X% O$ Ghttp://webclub.net.cn/data/phpStudy1.2.5.rar

TOP

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