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

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

前言:这一篇是我亲身配置的经历,希望大家喜欢,现在网络的教程中,PHP运行在Apache“模块”方式的文章中都少了最重要的一个步骤,也就是说按其方法配置PHP不能运行,有的太过简单,有的太过复杂,所以花了点时间整理一下。! k7 b  u$ b, o/ O: O0 a

# f5 F( Z) ^) p- V' `一、安装PHP4. j- I1 P/ \3 R. K$ W' s  k
我们需要安装的是win32版本,下载当然也是win32版本 php4.3.0-win32.zip. t# Y4 G4 j  d8 L# r
1.下载后,解压到c:\php目录下。5 I2 E2 `$ j. |( v4 H( C
2. 把c:\php目录下的php4ts.dll php4ts.lib文件都拷贝到c:\winnt\system32目录下(即window 2000系统目录下的system32目录)。9 T; R6 W# `0 v2 N, s: X- x
3. 修改php.ini文件,把c:\php目录下的php.ini-dist文件改名为php.ini 用记事本或其它可编辑文本的软件把它打开。, {: G* H+ P) B+ r$ p% Q# d( |+ N$ R
3.1找到register_globals = Off 改为register_globals = On& H; j- H2 a9 \: w+ r/ J
这一步是为了使部分旧的PHP程序能正常运行;
& u( N* a; O' W/ k& [: e' }3.2找到 extension_dir = ./ 把它改为extension_dir = c:\php\extensions
* T( N$ E1 x9 A9 y以下内容新手请略过
5 m" m) ?3 A' E8 _* h+ o===============新手略过开开始================9 v# G! i; T$ T; _7 `
刚刚的修改是指定php4扩展dll文件存放的路径 由于php4默认所带的php.ini-dist中,是关掉了所有的扩展dll的功能( Windows Extensions)
! n# F6 N. z+ l: ~& f  r- b;extension=php_bz2.dll+ U, v, B8 K) C. V3 H; }* R
;extension=php_cpdf.dll4 I# u( n/ H( ]
;extension=php_crack.dll
1 d4 u6 W  W) \0 h  m6 F;extension=php_curl.dll
& g% d0 f6 g3 z3 Y" n0 _. f..... 8 D! e' e7 W3 |, H7 A
要做的就是把extension前面的分号去掉就行了,当然这样是不够的。因为有些extension在我们的系统是不能使用的,比如系统中没有安装 sql server的话,那么extension=php_mssql.dll就要用;(分号)把它注释掉;
& P1 i* u9 P( F, `* R; f* B其中,PHP4带了两个GD扩展,请选用一个,另一个先用分号注释掉,以免出现函数无法注册的错误;
1 @1 O* s" ]3 c0 n' ]! d/ A如下面
: ~" p2 ~8 b% ]* U" Y1 }extension=php_gd.dll
& Z0 L+ L" o. s+ }$ C/ a;extension=php_gd2.dll
# o) @! A- I. O按实际所须的extension=php_xxxx.dll前面的分号都去掉。) y5 Q& W2 j$ |8 H
=============新手略过结束================7 {2 l; ?$ g% m, X5 L! g4 V
3.3 找到session.save_path,把这一项改为 session.save_path = c:\tmp9 C! F4 N' H# |# W% q" Y6 @7 T
并在C盘建立一个TMP目录
3 D; @  a: E6 R! u5 z3.4记得要保存刚刚的修改 并把php.ini文件放置在c:\winnt目录下。
7 z, f4 O- B7 a# ~6 d================================================4 O; t4 y# _: N5 Q7 L! F
二、安装MySql, A* [! Z4 w( U+ ?
安装MySql 当然,我在MySql.com 下载的MySql是一个压缩包,要先解压出来;再点setup.exe安装;
) z$ w- R% O3 }: d& T# q按默认安装,即安装在c:\MySql下,安装完后,按“开始”菜单中的“运行”打进cmd进入dos窗口,进到c:\MySql\bin 目录;' x, ]0 \" M  A" U
运行mysqld-nt --install (将会出现一个Dos窗口,随即自动关闭!如果没有出任何信息,即安装到service成功!)   o" V# ?' [/ ^: x% F- ?
从“开始”菜单“程序”=》“管理工具”=》“服务”,打开后,将会找到MySql,点击mouse右键 选择启动 回到刚刚的Dos窗口2 Z+ L) x4 W) P
即c:\MySql\bin目录下 运行mysqladmin -u root password 123 即把root用户的密码设置为123 这一步,如果没有出错,说明初始化root密码成功;) A/ Y2 S4 J( _( U4 w
当然从本机进入MySql是不需要用户名和密码,但用php 程序或是其它程序连接MySql时就要用到;$ D2 J) v  Y& k$ F. N; d2 l( {& O( j
测试进入 第一种方法:直接动行MySql进入MySql 的dos管理状态;; N& _3 Y8 w7 ^7 b4 e0 c, b
第二种方法:运行MySql -uroot -p MySql将会提示让您输入密码,密码当然就是刚刚设置的123(当然,得按设置的密码喽,不一定得设置是123)1 A' e: Q# F5 J$ 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> 8 p+ S" O. K) _+ F  ?( a
即安装MySql成功。% U- S7 ~8 k& Q$ Z
==========================================( h' Y9 H4 [+ J, p) Q- N% u! X# C! {
三、安装Apache 1.3.x 及 PHP运行设置) w* b0 N! w, t7 K5 S+ `5 x
1.首先下载Apache,Apache软件一般叫作apache_1_3_x.win32.exe。运行它。它会问你将Apache安装到什么地方,为他系统安全及操作容易,我们不要使用默认路径,你可以设为c:\Apache或C:\,因为马上你就要修改它的配置文件。
0 P# W7 I1 U8 {& q# _* X如果安装没出什么错的话,Apache就可以用了。有很多readme文件可供参考,但仅有一个文件是讲Win32平台的,包括Window 9x和Windows NT。
/ k) `4 \0 p2 Y. K; p有两种方式使 PHP 工作于 Windows 下的 Apache 1.3.x。一种是 CGI 方式(php.exe),另一种是使用 Apache 模块 DLL。不管哪种方式都需要停止 Apache,编辑 httpd.conf 来配置 Apache 以加入PHP支持。
) @9 w* m9 T; S9 C) C0 x: @+ R, q值得在这里指出现在 Windows 下的 SAPI 模块更加稳定了,我们推荐使用模块方式,因为更加透明和安全。
# N7 _% R1 A# m; u' C- ^尽管有几种不同方法在 Apache 下配置 PHP,但是对新手来说还是非常简单易用的。有关更多的 httpd.conf 配置指令请参考 Apache 文档。
) v7 y! z9 Z3 F- j* S如果你按照手工安装步骤一节中的说明把 PHP 解压缩到了 c:\php\ 目录下,那么需要加入以下三行到 Apache 配置文件中以 CGI 方式安装: 3 c2 R( _. n& v. E$ A; X+ {6 w

( M1 V9 z  R8 }" C' ZScriptAlias /php/ "c:/php/" 5 v  h3 P( h- E0 m. ^
AddType application/x-httpd-php .php .phtml
+ h6 P+ q3 ^+ a) Y7 M$ B" s, \Action application/x-httpd-php "/php/php.exe"
6 c) c* j  u: b! ?8 w, H注意上面的第二行在原来的 httpd.conf 中就有的,不过被注释了。还有记住用你自己放置 PHP 的路径替换 c:/php/。 4 H2 P( p. o1 C: e# e

7 |$ e$ ?  y% M8 T警告
" A; E9 ^9 I7 a' I5 g# h5 r在 CGI 方式下,你的服务器可能会受到几种攻击的影响。请学习如何防止攻击。
! Q5 c/ @) z6 u! ]" N# }
! [  I+ }) x8 F如果你想在 Apache 中用模块方式使用 PHP,确认把 php4ts.dll 拷贝到 windows/system(Windows 9x/Me)或者 winnt/system32(Windows NT/2000)或者 windows/system32(Windows XP)目录下,覆盖原来的文件。然后在 Apache 配置文件 httpd.conf 中加入以下两行: ! v1 _0 H9 ?. g8 p+ [+ `2 j7 x
$ N: ]% j/ t# @2 l6 l) [' m( w
用自己喜爱的编辑器打开 httpd.conf,找到 LoadModule 指令的部分,在其列表的最后部分加上如下一行,8 |% v9 `+ n$ C. x9 e: t; U9 N
对 PHP 4:- j# g7 h+ l7 O6 o! X' k" I* V3 B
LoadModule php4_module c:/php/sapi/php4apache.dll. G& [: x8 g3 f% K4 I/ H& ?# d! Q
对 PHP 5:# _  D! Q: c, g  F2 p0 P
LoadModule php5_module "c:/php/sapi/php5apache.dll"
& [/ w1 }, r3 A, R6 r$ j你可能发现在用 Windows Installer 安装了 Apache 之后需要为用 AddModule 指令定义 mod_php4.c。尤其是在定义了 ClearModuleList 指令时格外重要,向下滚动几行可以找到该指令。你将会看到 AddModule 项目的列表,在列表的最后加上这一行:
0 ?% c4 |/ N( {/ E+ K' P4 VAddModule mod_php4.c" W. z0 Y% l: A3 r' [1 h" B
对于 PHP 5 则为:
' j4 Y& Z/ Y, Z- O6 iAddModule mod_php5.c4 S$ R2 r& M( h/ C0 `
搜索类似 # AddType allows you to tweak mime.types 的短语,你会找到一些 AddType 的项目,并且在列表的最后有这一行: AddType application/x-httpd-php .php。你可以在这里选择任何想用 PHP 解析的后缀。.php 只是所建议的一个。甚至可以包括 .html,也可以加上 .php3 来向下兼容。
7 E# M- j. I2 [9 k! N8 M+ u1 o4 A; J
. t, o  y3 j, Y6 @( d% J修改了配置文件之后记住重新启动 Apache,例如如果你的 Apache 是作为 Windows 的服务安装的,NET STOP APACHE 后面接上 NET START APACHE。或者用你通常使用的快捷方式。
- U- s+ G: n* i' n& X有两种方式使用源程序语法彩色显示特色,但是取决于你的安装方法。如果你配置了 Apache 的 SAPI 模块方式使用 PHP,那么在 httpd.conf 中(和插入 AddType application/x-httpd-php .php 是同一个位置)加入下面一行就可以使用本特色:AddType application/x-httpd-php-source .phps。 ; q, `8 r4 c1 }. T9 v, h
如果你用 CGI 方式使用 PHP,那你需要用 show_source() 函数。建立一个 PHP 文件,加入以下代码:<?php show_source ("original_php_script.php"); ?>。用你想要显示源代码的文件名替换掉 original_php_script.php。
4 w. q9 U# o; B& H) I* ^注: 在 Windows-Apache 组合中,所有路径中的反斜线例如 "c:\directory\file.ext" 都必须转换成斜线,如 "c:/directory/file.ext"。
' ?3 F+ Q1 u  t============================================
  k9 p  A& e( B' ?/ G: c9 U& ?/ ]四、实现Apache虚拟主机的两种方案/ ~6 [9 F) j- o( k# ?( I
简介:这里说的虚拟主机是指在一台机器上仅运行一个httpd后台程序 6 q% W1 ?: i+ Q3 o1 w
支持多个Apache服务器,如在公司财务部门有一台web服务器,名为
  ~4 f' C( C9 U) s; F6 b: zaccount.yourdomain.com,同时又想为sales部门建立网站,网站内容也
2 ^! e9 _' b" z/ x" }. a# h放在该机器上,通过sales.yourdomain.com访问,这就要用到虚拟主机 9 |& A# D8 K3 U! {
设置。
6 ?1 P  r: n9 n+ F设置Apache虚拟主机通常有两种方案
& E4 C5 N( L3 u0 [3 o% g) O2 U- t1.基于IP的虚拟主机
  ^, Z8 R, L0 J# Y6 R; ^. \- l  这种方式需要在机器上设置IP别名,象上面的例子,在一台机器的
5 X; m( ~9 R8 t  t3 ?' ^. A网卡上绑定多个IP地址去服务多个虚拟主机。
5 r2 [! G" M" h8 S1 V若该机器的IP地址为192.168.0.1(account.yourdomain.com),首先 + t/ N2 ^9 O/ Y
你要设置IP别名(假设用192.168.0.2作为其别名IP)。加下面的行到 * b) @" E0 o; Z0 g) r
/etc/rc.d/rc.local,确保每次启动后自动运行。
+ b  L0 ?5 j6 n4 n4 M7 h# B#/sbin/ifconfig eth0:0 192.168.0.2 netmask 255.255.255.0 broadcast \ 9 H# A9 N0 R7 R' \- Q& `1 C# f& |
192.168.0.255 up
  ~: L; q9 a  k1 C* r#/sbin/route add -host 192.168.0.2 eth0:0
7 J& w4 j, v# {/ }1 C然后你需要设置/etd/httpd/conf/httpd.conf文件:
! w' m+ f8 f- t/ C+ H8 `<VirtualHost 192.168.0.2>   F3 w) Q! O4 }3 o$ s, n
ServerAdmin webmaster@yourdomain.com
7 j& Y, |# e2 M( a( gDocumentRoot /home/httpd/sales.yourdomain.com
+ y1 ^: U0 A7 H: M0 t0 IServerName sales.yourdomain.com / [8 a: k  V% F- T. z3 f# h
ErrorLog /var/log/httpd/sales.yourdomain.com/error_log $ I; p6 }$ l# R* A) w8 ?
TransferLog /var/log/httpd/sales.yourdomain.com/access_log - T/ @5 q# g' {5 p6 O8 u& H" ?
</VirtualHost> . ^$ J) h# A/ A/ }8 n! M
然后分别创建目录
, W! y9 @4 W9 k; G/home/httpd/sales.yourdomain.com, 3 E; P" [6 D# q/ e
/var/log/httpd/sales.yourdomain.com
8 |9 ]4 e& h: ^放相应的网站内容到目录/home/httpd/sales.yourdomain.com下即可,并确保
+ Y! H9 S7 A  H9 D/ V你内部的DNS指定sales.yourdomain.com的A记录到IP地址192.168.0.2 。
7 \9 P+ {# _+ N9 w注:这种基于IP的虚拟主机有一个缺点,就是你需要更多的IP地址去服务各自的 ' J5 L1 ~. H6 A( R
虚拟主机,如果你仅仅有一个IP地址,那么你将可以考虑用基于名字的虚拟主机 " `" k7 }7 D1 @8 C# T% P' q9 K
方案。 7 `" ]) u3 z+ c( f: ~& m. `

, }% ^7 ~' j2 ^2.基于名字的虚拟主机: 0 Q0 R$ I3 L; y- M$ C, H
  它的优势就是不需要更多的IP地址,容易配置,不需要其它软硬件,现代的
  x* V( u' A/ P% q浏览器大多都支持这种方式。与基于IP的虚拟主机一样,你需要编辑文件
6 V$ m9 D2 Y. s! ~8 o4 w; ~/etc/httpd/conf/httpd.conf
) j- {! z* e9 n9 L; LNameVirtualHost 192.168.0.1
7 v0 ?+ p5 R8 D1 e<VirtualHost 192.168.0.1> , I( X0 W5 M' K1 i2 ?2 z* M4 _
ServerAdmin webmaster@yourdomain.com " v1 N" w6 H' W8 ~. n' w1 w
DocumentRoot /home/httpd/sales.yourdomain.com
$ F. Y: f; F; o6 l2 rServerName sales.yourdomain.com
# r( l4 H/ R: d7 S) aErrorLog /var/log/httpd/sales.yourdomain.com/error_log
2 k) ~8 J. e2 x. m/ U8 XTransferLog /var/log/httpd/sales.yourdomain.com/access_log % i8 o8 Q( K) \6 }
</VirtualHost>
/ Z' _0 B2 O' E/ j<VirtualHost 192.168.0.1> * [2 y0 ]" m9 z) f" z3 u
ServerAdmin webmaster@yourdomain.com 4 y2 H8 q6 c4 I
DocumentRoot /home/httpd/hr.yourdomain.com
6 N) x6 Q. X3 GServerName hr.yourdomain.com
7 U( y) _4 N8 k+ B5 hErrorLog /var/log/httpd/hr.yourdomain.com/error_log
1 ^% I( |: `" N' OTransferLog /var/log/hr.yourdomain.com/access_log . M' y% ]- O! y# ~: a% j8 P, f( S
</VirtualHost>
+ U  t3 [  d* P  j注: 你需要加NameVirtualHost 指示在最前面,下面依次为各个虚拟主机, / T- P  i. [9 U) K8 ^, D
为了让它工作,你需要把sales.yourdomain.com, hr.yourdomain.com的DNS
4 ~- w1 L5 b! x' }+ w; w都指向IP地址192.168.0.1
% U. x8 n* j+ Q8 Q: V7 v, @上面的两种都将工作,如果是在外部网段,在互联网上提供WWW服务,你可能 ( w3 ?8 q$ [& W( W) V/ d# S) e
没有足够的真实IP地址来支持多个虚拟主机,便可用基于名字的虚拟主机方案, ( g" `4 c$ z) L, G
若是在内部网段上,你有较多的内部保留IP地址,将没有太大的区别。 ( c6 \, M- r9 W: g
提示:上面所提到的相对目录可以用绝对路径代替,如:
% A3 a# N; I) V& _/home/httpd/hr.yourdomain.com 可改为 D:/Inetpub/wwwroot
* M" o# D" U* [" N==================END=======================
+ p- H* J6 u; Q* d, [这只是入门,只能保证你的WEB服务器能正常运,要了解更多的 PHP 及 Apache 的详细设置,还要靠大家更加深入的实践...

另外可以用一个安装包安装全部PHP软件
7 J) D9 A1 F5 q9 @下载地址:
+ F6 @: Q0 z% [6 Q  Q) @http://webclub.net.cn/data/phpStudy1.2.5.rar

TOP

亲娘那  q: Q* h2 r3 m* B7 }
怎么没图哈  e0 i$ q9 [5 j% r  L: Y' O7 p
应该图文结合啊; @7 r* Y0 q7 u, P/ X

TOP

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