Board logo

标题: Windows下的 Apache + PHP + MySql + 虚拟主机 设置全功略 [打印本页]

作者: admin    时间: 2007-10-5 19:56     标题: Windows下的 Apache + PHP + MySql + 虚拟主机 设置全功略

前言:这一篇是我亲身配置的经历,希望大家喜欢,现在网络的教程中,PHP运行在Apache“模块”方式的文章中都少了最重要的一个步骤,也就是说按其方法配置PHP不能运行,有的太过简单,有的太过复杂,所以花了点时间整理一下。0 A" C: U5 D0 s- Y

- U5 ~5 S! l# Q, _" Z. e& R一、安装PHP4
$ g: T4 h6 z2 y& K  Y我们需要安装的是win32版本,下载当然也是win32版本 php4.3.0-win32.zip
, |! Q) h) J6 v! A! j1.下载后,解压到c:\php目录下。* o8 _* e' e9 c: C1 W
2. 把c:\php目录下的php4ts.dll php4ts.lib文件都拷贝到c:\winnt\system32目录下(即window 2000系统目录下的system32目录)。
! C  K: l, b+ B. a: j, b6 l3. 修改php.ini文件,把c:\php目录下的php.ini-dist文件改名为php.ini 用记事本或其它可编辑文本的软件把它打开。1 |( Q( |! L& T) R; k- l' L
3.1找到register_globals = Off 改为register_globals = On/ R6 u- B, b8 L! B5 |9 b# w
这一步是为了使部分旧的PHP程序能正常运行;
+ g: \- o; J1 M3.2找到 extension_dir = ./ 把它改为extension_dir = c:\php\extensions
/ s7 g) U3 A3 w( L以下内容新手请略过3 y& |+ J' f+ l$ p
===============新手略过开开始================" |5 O; U) u/ }: y& }0 \9 s
刚刚的修改是指定php4扩展dll文件存放的路径 由于php4默认所带的php.ini-dist中,是关掉了所有的扩展dll的功能( Windows Extensions) ; @; d' r! d* b3 d* k4 C
;extension=php_bz2.dll. y9 R& e* z7 d' C! U" z
;extension=php_cpdf.dll8 }" S2 M7 I3 D" U# H- P
;extension=php_crack.dll! n& h4 h+ }4 m% \7 n
;extension=php_curl.dll
% W8 ?" K% @+ I.....
+ k5 _* P: ~8 j& S+ @* z; q要做的就是把extension前面的分号去掉就行了,当然这样是不够的。因为有些extension在我们的系统是不能使用的,比如系统中没有安装 sql server的话,那么extension=php_mssql.dll就要用;(分号)把它注释掉;
7 Y+ @3 z6 m! a, @其中,PHP4带了两个GD扩展,请选用一个,另一个先用分号注释掉,以免出现函数无法注册的错误;4 @' z% k' ]4 Q/ n
如下面7 U( ?) ]. b6 b. T2 e6 u2 t8 G
extension=php_gd.dll) O& r& u4 j& g& p% b0 P9 P# k
;extension=php_gd2.dll' Z. ?; j( Z. V
按实际所须的extension=php_xxxx.dll前面的分号都去掉。
: I2 B* B+ N2 V' z. d6 u=============新手略过结束================8 ?0 Z) b/ r4 i% |/ L. V  A
3.3 找到session.save_path,把这一项改为 session.save_path = c:\tmp
4 {4 j8 @5 G) ?6 a  D并在C盘建立一个TMP目录- a) U, K4 f/ W, W
3.4记得要保存刚刚的修改 并把php.ini文件放置在c:\winnt目录下。4 o( f" @" o3 v' t8 {# c+ h
================================================7 K0 X4 P0 P2 F7 p" f
二、安装MySql
. ~4 l8 l; W5 [/ _" z% d安装MySql 当然,我在MySql.com 下载的MySql是一个压缩包,要先解压出来;再点setup.exe安装;
- G3 @+ `$ f" z/ f" ~# g按默认安装,即安装在c:\MySql下,安装完后,按“开始”菜单中的“运行”打进cmd进入dos窗口,进到c:\MySql\bin 目录;
- k) m0 \. ?8 V5 T2 ?0 H( i运行mysqld-nt --install (将会出现一个Dos窗口,随即自动关闭!如果没有出任何信息,即安装到service成功!)
* n' ?% k1 g, r- ^9 Q. n; ~0 v8 ?从“开始”菜单“程序”=》“管理工具”=》“服务”,打开后,将会找到MySql,点击mouse右键 选择启动 回到刚刚的Dos窗口7 q, Q0 f  I! e0 A  J* O
即c:\MySql\bin目录下 运行mysqladmin -u root password 123 即把root用户的密码设置为123 这一步,如果没有出错,说明初始化root密码成功;
! t! T4 @% P, H8 d2 k4 d  c# H8 ^当然从本机进入MySql是不需要用户名和密码,但用php 程序或是其它程序连接MySql时就要用到;! M9 Q! g9 T( n$ o. Z
测试进入 第一种方法:直接动行MySql进入MySql 的dos管理状态;
1 \% ~7 E7 p% p- }第二种方法:运行MySql -uroot -p MySql将会提示让您输入密码,密码当然就是刚刚设置的123(当然,得按设置的密码喽,不一定得设置是123)5 K! B1 G$ ^# i% ?2 t5 N* Q% h
出现: 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>
2 U! L& b" f! @0 T* \0 K# s即安装MySql成功。
- Z1 }; y- H4 b, J1 C' B==========================================. q1 K: G# j4 ?# R1 h# P+ H( f$ B
三、安装Apache 1.3.x 及 PHP运行设置
  N' w* G- E3 @8 F7 V0 x4 T  O$ {1.首先下载Apache,Apache软件一般叫作apache_1_3_x.win32.exe。运行它。它会问你将Apache安装到什么地方,为他系统安全及操作容易,我们不要使用默认路径,你可以设为c:\Apache或C:\,因为马上你就要修改它的配置文件。+ L# |8 {4 f8 Q& Y
如果安装没出什么错的话,Apache就可以用了。有很多readme文件可供参考,但仅有一个文件是讲Win32平台的,包括Window 9x和Windows NT。
/ p# I8 v2 ~1 ?. v- I4 K有两种方式使 PHP 工作于 Windows 下的 Apache 1.3.x。一种是 CGI 方式(php.exe),另一种是使用 Apache 模块 DLL。不管哪种方式都需要停止 Apache,编辑 httpd.conf 来配置 Apache 以加入PHP支持。
8 U0 x( ~) L9 T) T! w值得在这里指出现在 Windows 下的 SAPI 模块更加稳定了,我们推荐使用模块方式,因为更加透明和安全。 * ^' e) o: {$ s' X  G! R! s
尽管有几种不同方法在 Apache 下配置 PHP,但是对新手来说还是非常简单易用的。有关更多的 httpd.conf 配置指令请参考 Apache 文档。
4 S7 T6 u+ d! ]- ~" }  k2 d5 X) v如果你按照手工安装步骤一节中的说明把 PHP 解压缩到了 c:\php\ 目录下,那么需要加入以下三行到 Apache 配置文件中以 CGI 方式安装: , ]2 W) e1 c' G9 s: V2 X
* \8 D. g6 m8 X' ^7 j
ScriptAlias /php/ "c:/php/" 2 c4 b6 N& u! C& g7 c
AddType application/x-httpd-php .php .phtml
0 A* \  O* d6 z' y6 l& h. R' MAction application/x-httpd-php "/php/php.exe"
- }8 D8 ]7 k0 K5 N注意上面的第二行在原来的 httpd.conf 中就有的,不过被注释了。还有记住用你自己放置 PHP 的路径替换 c:/php/。
/ G- M  R) y1 @, \( l/ S
: U, k8 Y+ ^! ^警告 + N" M2 S0 W& Y8 K$ j
在 CGI 方式下,你的服务器可能会受到几种攻击的影响。请学习如何防止攻击。 ) D) d; H% t; j2 ^8 o7 F
& I+ V# f, ~3 _# @( M8 t1 M: N
如果你想在 Apache 中用模块方式使用 PHP,确认把 php4ts.dll 拷贝到 windows/system(Windows 9x/Me)或者 winnt/system32(Windows NT/2000)或者 windows/system32(Windows XP)目录下,覆盖原来的文件。然后在 Apache 配置文件 httpd.conf 中加入以下两行:
7 W7 ~" u, T- t: N/ Z, c# S3 F
" D' p( g: h2 e2 e用自己喜爱的编辑器打开 httpd.conf,找到 LoadModule 指令的部分,在其列表的最后部分加上如下一行,
' [/ w; X2 n% W, t& A8 E6 H对 PHP 4:
) a- K: n  P! p+ l$ GLoadModule php4_module c:/php/sapi/php4apache.dll
: m0 \, U$ N" X/ \. @* @9 k. c对 PHP 5:6 D" b# j& i2 o2 n. C6 G$ q
LoadModule php5_module "c:/php/sapi/php5apache.dll"
* r0 r/ B. Y0 t你可能发现在用 Windows Installer 安装了 Apache 之后需要为用 AddModule 指令定义 mod_php4.c。尤其是在定义了 ClearModuleList 指令时格外重要,向下滚动几行可以找到该指令。你将会看到 AddModule 项目的列表,在列表的最后加上这一行:
4 X' |. s9 W$ v0 J9 g- e7 NAddModule mod_php4.c
5 ~% q9 ]$ Q3 t) n% ~" j: k对于 PHP 5 则为:, A, k3 B9 h) h- C6 U) W$ D
AddModule mod_php5.c
+ X# Q8 ]! y6 O0 w( g' Q搜索类似 # AddType allows you to tweak mime.types 的短语,你会找到一些 AddType 的项目,并且在列表的最后有这一行: AddType application/x-httpd-php .php。你可以在这里选择任何想用 PHP 解析的后缀。.php 只是所建议的一个。甚至可以包括 .html,也可以加上 .php3 来向下兼容。
! O" f7 A; \' _; B. l! Y5 _8 L9 ?* a. t6 X4 N6 ^9 A, L
修改了配置文件之后记住重新启动 Apache,例如如果你的 Apache 是作为 Windows 的服务安装的,NET STOP APACHE 后面接上 NET START APACHE。或者用你通常使用的快捷方式。 % [9 U; D* H! }& O! C
有两种方式使用源程序语法彩色显示特色,但是取决于你的安装方法。如果你配置了 Apache 的 SAPI 模块方式使用 PHP,那么在 httpd.conf 中(和插入 AddType application/x-httpd-php .php 是同一个位置)加入下面一行就可以使用本特色:AddType application/x-httpd-php-source .phps。
7 r( j, H: W% K# A- \! F如果你用 CGI 方式使用 PHP,那你需要用 show_source() 函数。建立一个 PHP 文件,加入以下代码:<?php show_source ("original_php_script.php"); ?>。用你想要显示源代码的文件名替换掉 original_php_script.php。
+ A1 ^) F2 ?7 O" k; Z注: 在 Windows-Apache 组合中,所有路径中的反斜线例如 "c:\directory\file.ext" 都必须转换成斜线,如 "c:/directory/file.ext"。
( J8 C9 g* r& a$ b4 n3 m5 P============================================
3 i6 X8 O/ y" Y四、实现Apache虚拟主机的两种方案- @9 N/ i5 G5 y. K8 v
简介:这里说的虚拟主机是指在一台机器上仅运行一个httpd后台程序 $ R( `) p$ B% r1 k
支持多个Apache服务器,如在公司财务部门有一台web服务器,名为 : W) Q. w, I- |/ W
account.yourdomain.com,同时又想为sales部门建立网站,网站内容也
  V% n# ~' W1 h$ H# q放在该机器上,通过sales.yourdomain.com访问,这就要用到虚拟主机
; v0 p# f2 h4 P+ j设置。 ( f6 c$ a# q9 Y0 S% k* x
设置Apache虚拟主机通常有两种方案 9 U6 W$ m. ]8 ~9 r
1.基于IP的虚拟主机
( s. c% G7 }% f# h- i; h  这种方式需要在机器上设置IP别名,象上面的例子,在一台机器的
. b  k- e' Q" `/ L: y; D* [网卡上绑定多个IP地址去服务多个虚拟主机。 8 y9 U) a/ J- @1 R1 j
若该机器的IP地址为192.168.0.1(account.yourdomain.com),首先 3 u+ Z& V& I) Z8 x
你要设置IP别名(假设用192.168.0.2作为其别名IP)。加下面的行到
( Z7 H2 ~4 p* N! T0 z  v2 i/etc/rc.d/rc.local,确保每次启动后自动运行。
. _9 \! C% T" s, y& G#/sbin/ifconfig eth0:0 192.168.0.2 netmask 255.255.255.0 broadcast \ : Z: o' r5 Q" E( C0 T: C: O$ u$ Z$ W; ^
192.168.0.255 up
  |, O& r! Y/ {+ F/ q0 F$ I8 N#/sbin/route add -host 192.168.0.2 eth0:0
7 b* [' k( x( k3 S5 ^然后你需要设置/etd/httpd/conf/httpd.conf文件:
+ H, p$ `( e/ M, A" E" j  U<VirtualHost 192.168.0.2>   h- P8 [6 P' n5 A2 i
ServerAdmin webmaster@yourdomain.com
* q( I9 m" F$ E5 c* d3 ^* z9 PDocumentRoot /home/httpd/sales.yourdomain.com & X3 J/ {2 p  |# ]9 t" I* i
ServerName sales.yourdomain.com 5 B. ]3 x; G! q1 r
ErrorLog /var/log/httpd/sales.yourdomain.com/error_log
% l$ l! i4 @( R; F* o  L% GTransferLog /var/log/httpd/sales.yourdomain.com/access_log
- t3 u$ i, o: b( T</VirtualHost> 1 B' r9 H. e7 F+ \$ u" @7 X
然后分别创建目录
# F# R+ u' a1 H6 V2 C3 {" D  a/home/httpd/sales.yourdomain.com, % I7 R9 M) {# S4 Z* z6 `; J2 n
/var/log/httpd/sales.yourdomain.com
& W+ {7 F1 B" U: h放相应的网站内容到目录/home/httpd/sales.yourdomain.com下即可,并确保
: ^0 f: ]0 }3 P! t4 [* e你内部的DNS指定sales.yourdomain.com的A记录到IP地址192.168.0.2 。 % q3 R; n9 f" y" G. L5 q
注:这种基于IP的虚拟主机有一个缺点,就是你需要更多的IP地址去服务各自的
9 J2 |; X& q3 j" G虚拟主机,如果你仅仅有一个IP地址,那么你将可以考虑用基于名字的虚拟主机 - b# E' |& a$ w% I. S- g1 W3 I4 ]
方案。 2 a- j  M* y" r& O3 ~6 k

- e( F- m. ]4 H2 }) _2 u; ?2.基于名字的虚拟主机:
1 u! _0 h3 N9 r1 B- j  它的优势就是不需要更多的IP地址,容易配置,不需要其它软硬件,现代的 * C* z% f  \* H- m4 r: q+ K
浏览器大多都支持这种方式。与基于IP的虚拟主机一样,你需要编辑文件 - l  g: v$ q. T! Z, S
/etc/httpd/conf/httpd.conf
, }8 ?) X, j+ ~. E; Z- @5 dNameVirtualHost 192.168.0.1 + g$ f" y- f* J! n
<VirtualHost 192.168.0.1> $ I# z3 X3 J4 K# w7 F
ServerAdmin webmaster@yourdomain.com
; j$ W  n! ~# \DocumentRoot /home/httpd/sales.yourdomain.com
! s( O& U, D) u! n- |ServerName sales.yourdomain.com
& Z8 f0 Q# o9 n; IErrorLog /var/log/httpd/sales.yourdomain.com/error_log
  g2 o& h0 P; P8 \1 eTransferLog /var/log/httpd/sales.yourdomain.com/access_log * a9 U: z: T9 k' L7 M! d% r4 R
</VirtualHost> ; N" p& p* Y/ I% t& M6 d/ x; B
<VirtualHost 192.168.0.1> / o. f8 X7 T$ f' A
ServerAdmin webmaster@yourdomain.com . u# {9 L1 @6 n* I0 R3 x
DocumentRoot /home/httpd/hr.yourdomain.com * w3 j5 T0 h% O* q5 b
ServerName hr.yourdomain.com ' U1 r/ W( w: B: d
ErrorLog /var/log/httpd/hr.yourdomain.com/error_log
; A5 k6 ^& F2 c, ~' p9 O: k' D: B4 fTransferLog /var/log/hr.yourdomain.com/access_log . Y( \: }4 Q$ Y! D
</VirtualHost>
/ m0 I* m3 u1 g( O" z注: 你需要加NameVirtualHost 指示在最前面,下面依次为各个虚拟主机, & W$ Y/ F; D: k0 A) ?
为了让它工作,你需要把sales.yourdomain.com, hr.yourdomain.com的DNS
1 ^, Z3 I2 q( x. x6 y都指向IP地址192.168.0.1
( _/ v: W% n  F1 H1 v. z# D+ ~, i上面的两种都将工作,如果是在外部网段,在互联网上提供WWW服务,你可能
% A1 G2 }1 `! z2 o, m% y& d没有足够的真实IP地址来支持多个虚拟主机,便可用基于名字的虚拟主机方案, 4 N) y( ?+ D. P2 h  U
若是在内部网段上,你有较多的内部保留IP地址,将没有太大的区别。
# x( l9 n) r" W! P: L# I提示:上面所提到的相对目录可以用绝对路径代替,如: ' E5 c/ @8 q& O# R
/home/httpd/hr.yourdomain.com 可改为 D:/Inetpub/wwwroot- }( S6 d) c0 v1 g) U* U% `! ]
==================END=======================
6 E4 |: u" W. A! u6 t8 a这只是入门,只能保证你的WEB服务器能正常运,要了解更多的 PHP 及 Apache 的详细设置,还要靠大家更加深入的实践...
作者: admin    时间: 2007-11-7 22:52

另外可以用一个安装包安装全部PHP软件
2 ~- K. M; g0 u5 ?9 F* i下载地址:7 Z" s( G) ~' H5 }4 O
http://webclub.net.cn/data/phpStudy1.2.5.rar
作者: hack_ill    时间: 2008-1-3 10:24

亲娘那
7 C4 d' Y- G4 j怎么没图哈
! C5 U( _6 X# H1 J! T6 A$ O; U应该图文结合啊
1 E4 X$ u/ W: [2 E. y8 m; w" N




欢迎光临 捌玖网络工作室 (http://89w.org/) Powered by Discuz! 7.2