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

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

前言:这一篇是我亲身配置的经历,希望大家喜欢,现在网络的教程中,PHP运行在Apache“模块”方式的文章中都少了最重要的一个步骤,也就是说按其方法配置PHP不能运行,有的太过简单,有的太过复杂,所以花了点时间整理一下。) h$ b& o. ~7 s' n( @
9 L4 X' A# p7 i$ t/ H3 J
一、安装PHP42 p# H. @( y' ?2 i4 x
我们需要安装的是win32版本,下载当然也是win32版本 php4.3.0-win32.zip
7 F2 m1 D3 z5 v# Y* @* Q4 H1.下载后,解压到c:\php目录下。9 Q( y# e( [# Y: g5 O
2. 把c:\php目录下的php4ts.dll php4ts.lib文件都拷贝到c:\winnt\system32目录下(即window 2000系统目录下的system32目录)。
) f! E/ d3 u, y5 n( V3. 修改php.ini文件,把c:\php目录下的php.ini-dist文件改名为php.ini 用记事本或其它可编辑文本的软件把它打开。
& u  O# j+ c' \5 g  S3 I3.1找到register_globals = Off 改为register_globals = On; N( W1 e& ?9 v
这一步是为了使部分旧的PHP程序能正常运行;6 p: ]# S5 N, s$ u9 w$ B3 W: N; U2 q
3.2找到 extension_dir = ./ 把它改为extension_dir = c:\php\extensions
. D, w3 S% m, {" @$ K8 Y' X9 T以下内容新手请略过
; z2 v( v; O8 \) o( S===============新手略过开开始================' m4 ^% q0 [$ g
刚刚的修改是指定php4扩展dll文件存放的路径 由于php4默认所带的php.ini-dist中,是关掉了所有的扩展dll的功能( Windows Extensions)
0 u* J2 c3 d1 l/ Y( K8 O;extension=php_bz2.dll, P. @1 Q8 I/ G, M  j! M
;extension=php_cpdf.dll
# W. b, x$ {  O- E; P$ b4 ~5 @;extension=php_crack.dll
0 G* Y* L3 v* I% [0 A. q;extension=php_curl.dll
! B1 t  V  b# D. A& ~7 r* |.....
8 U+ v% y, Q& d/ V/ p要做的就是把extension前面的分号去掉就行了,当然这样是不够的。因为有些extension在我们的系统是不能使用的,比如系统中没有安装 sql server的话,那么extension=php_mssql.dll就要用;(分号)把它注释掉;' s, h+ ^$ D+ |- I
其中,PHP4带了两个GD扩展,请选用一个,另一个先用分号注释掉,以免出现函数无法注册的错误;& A$ v; c( d5 c% w4 J% J4 X' H/ z
如下面+ X6 @7 x# q1 e/ z* C& O* M
extension=php_gd.dll
3 m: c+ r4 ]. e7 w  j0 W;extension=php_gd2.dll
5 u$ f$ _* n% y" r- _% V2 C按实际所须的extension=php_xxxx.dll前面的分号都去掉。
& x' A2 h. q4 h! p; }8 Y& ?=============新手略过结束================/ a1 l' Z' C* r9 ?+ w8 B
3.3 找到session.save_path,把这一项改为 session.save_path = c:\tmp/ E5 m3 Y8 O7 O# Q
并在C盘建立一个TMP目录
) r2 {& L$ Q: t3 |) n4 B$ O3.4记得要保存刚刚的修改 并把php.ini文件放置在c:\winnt目录下。
* R4 h. {8 W- A" v8 y) q================================================
4 c* S6 O; L! j二、安装MySql0 K# E9 w1 s, I; J% t  O' [
安装MySql 当然,我在MySql.com 下载的MySql是一个压缩包,要先解压出来;再点setup.exe安装;
- e* H  l. |4 J) |2 B按默认安装,即安装在c:\MySql下,安装完后,按“开始”菜单中的“运行”打进cmd进入dos窗口,进到c:\MySql\bin 目录;. h$ o5 k& Q2 J  i, Y( `7 G6 K
运行mysqld-nt --install (将会出现一个Dos窗口,随即自动关闭!如果没有出任何信息,即安装到service成功!)
. Z; q' t% B/ |8 i/ V) w从“开始”菜单“程序”=》“管理工具”=》“服务”,打开后,将会找到MySql,点击mouse右键 选择启动 回到刚刚的Dos窗口
' {4 L" H7 {. J: e1 r! a) k; c即c:\MySql\bin目录下 运行mysqladmin -u root password 123 即把root用户的密码设置为123 这一步,如果没有出错,说明初始化root密码成功;  q" p4 G/ w2 C& @  P
当然从本机进入MySql是不需要用户名和密码,但用php 程序或是其它程序连接MySql时就要用到;  |# w- K7 D7 d6 M2 z* i" h, B
测试进入 第一种方法:直接动行MySql进入MySql 的dos管理状态;
9 ]2 I8 j! Z  P& C' c" l" d第二种方法:运行MySql -uroot -p MySql将会提示让您输入密码,密码当然就是刚刚设置的123(当然,得按设置的密码喽,不一定得设置是123)/ T# v2 h1 s- ^5 [. V1 Z5 r( `
出现: 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>
; d. s9 P; V' V9 B8 K; ?* a即安装MySql成功。+ [; R4 l0 _+ T: l( g- L
==========================================0 W5 F5 D/ \( p  i4 {
三、安装Apache 1.3.x 及 PHP运行设置# b1 g  F1 N8 N" L8 p: C; N
1.首先下载Apache,Apache软件一般叫作apache_1_3_x.win32.exe。运行它。它会问你将Apache安装到什么地方,为他系统安全及操作容易,我们不要使用默认路径,你可以设为c:\Apache或C:\,因为马上你就要修改它的配置文件。
- `: T( k6 y0 F5 L2 s4 ?6 N4 c如果安装没出什么错的话,Apache就可以用了。有很多readme文件可供参考,但仅有一个文件是讲Win32平台的,包括Window 9x和Windows NT。 9 {2 U8 l7 L0 P  N9 m& Y+ C+ o
有两种方式使 PHP 工作于 Windows 下的 Apache 1.3.x。一种是 CGI 方式(php.exe),另一种是使用 Apache 模块 DLL。不管哪种方式都需要停止 Apache,编辑 httpd.conf 来配置 Apache 以加入PHP支持。 # U4 y1 o% Z: _; D) t+ l2 _
值得在这里指出现在 Windows 下的 SAPI 模块更加稳定了,我们推荐使用模块方式,因为更加透明和安全。
3 {. R+ ]2 \, \) l2 ~尽管有几种不同方法在 Apache 下配置 PHP,但是对新手来说还是非常简单易用的。有关更多的 httpd.conf 配置指令请参考 Apache 文档。 : a' x# Y' r( t( ?$ i) a
如果你按照手工安装步骤一节中的说明把 PHP 解压缩到了 c:\php\ 目录下,那么需要加入以下三行到 Apache 配置文件中以 CGI 方式安装:
$ Q* G3 |8 c2 ^, N8 H& G3 G
/ i* T9 e) W% C; F. yScriptAlias /php/ "c:/php/"
7 R1 T. o9 A( iAddType application/x-httpd-php .php .phtml : E: e2 F. J3 f# _" l0 _
Action application/x-httpd-php "/php/php.exe"
1 ]) V2 Y. z: [4 Y6 w$ D% x- k9 X注意上面的第二行在原来的 httpd.conf 中就有的,不过被注释了。还有记住用你自己放置 PHP 的路径替换 c:/php/。 1 q4 J/ a9 G5 C1 q% b4 g

8 ^- k# l4 n( f警告 " v5 @+ U0 u+ M7 ?$ U1 P) g# Z7 d
在 CGI 方式下,你的服务器可能会受到几种攻击的影响。请学习如何防止攻击。
# s" I% F$ g' \( [$ u6 i' C9 {$ j2 B% r9 n" W, I) ]
如果你想在 Apache 中用模块方式使用 PHP,确认把 php4ts.dll 拷贝到 windows/system(Windows 9x/Me)或者 winnt/system32(Windows NT/2000)或者 windows/system32(Windows XP)目录下,覆盖原来的文件。然后在 Apache 配置文件 httpd.conf 中加入以下两行:
# G1 l* ~( f2 r& \  x6 z- v) W+ B3 |; _3 T
用自己喜爱的编辑器打开 httpd.conf,找到 LoadModule 指令的部分,在其列表的最后部分加上如下一行,
! j0 _$ A( P: W7 l# e" V对 PHP 4:* n9 X4 ~, d+ h( i2 N8 Y, }
LoadModule php4_module c:/php/sapi/php4apache.dll8 n+ j9 Q9 s; K+ O. U
对 PHP 5:
6 a) B) }2 {4 W, j  o, N8 G9 U1 Q9 jLoadModule php5_module "c:/php/sapi/php5apache.dll"
& v- _1 ^8 I4 F% D+ s& l! Z- u" N你可能发现在用 Windows Installer 安装了 Apache 之后需要为用 AddModule 指令定义 mod_php4.c。尤其是在定义了 ClearModuleList 指令时格外重要,向下滚动几行可以找到该指令。你将会看到 AddModule 项目的列表,在列表的最后加上这一行:# W9 |; W7 a, b9 Q; [& D1 e7 H
AddModule mod_php4.c' r4 A! l9 V' n" O6 p. C) E
对于 PHP 5 则为:
- K! z/ u  U! W; u5 a& _AddModule mod_php5.c* W4 l! ~) V* S" ]! W. q
搜索类似 # AddType allows you to tweak mime.types 的短语,你会找到一些 AddType 的项目,并且在列表的最后有这一行: AddType application/x-httpd-php .php。你可以在这里选择任何想用 PHP 解析的后缀。.php 只是所建议的一个。甚至可以包括 .html,也可以加上 .php3 来向下兼容。
" D2 q, a) {; n5 Q8 U0 G! C
% V$ N& P9 `5 f! L! p修改了配置文件之后记住重新启动 Apache,例如如果你的 Apache 是作为 Windows 的服务安装的,NET STOP APACHE 后面接上 NET START APACHE。或者用你通常使用的快捷方式。 % ?# s- a& |% N0 G8 N+ ]
有两种方式使用源程序语法彩色显示特色,但是取决于你的安装方法。如果你配置了 Apache 的 SAPI 模块方式使用 PHP,那么在 httpd.conf 中(和插入 AddType application/x-httpd-php .php 是同一个位置)加入下面一行就可以使用本特色:AddType application/x-httpd-php-source .phps。 . h; n- Y2 p+ O$ [% a6 C
如果你用 CGI 方式使用 PHP,那你需要用 show_source() 函数。建立一个 PHP 文件,加入以下代码:<?php show_source ("original_php_script.php"); ?>。用你想要显示源代码的文件名替换掉 original_php_script.php。 * l$ e6 K( l) B0 c: l  N
注: 在 Windows-Apache 组合中,所有路径中的反斜线例如 "c:\directory\file.ext" 都必须转换成斜线,如 "c:/directory/file.ext"。+ Y% z. v" ]: A# y
============================================- n2 p, [; \. c' _4 W# l- k5 b& ?
四、实现Apache虚拟主机的两种方案8 X6 v! y: {9 g  r
简介:这里说的虚拟主机是指在一台机器上仅运行一个httpd后台程序
( Q0 c2 D7 |+ a  `- v- T支持多个Apache服务器,如在公司财务部门有一台web服务器,名为 4 e7 f/ Z; d! ]+ J! e5 i
account.yourdomain.com,同时又想为sales部门建立网站,网站内容也 + C; t8 v. @5 [" g! D
放在该机器上,通过sales.yourdomain.com访问,这就要用到虚拟主机
' a/ F- [) o5 u# h: k3 V4 Z设置。
0 O: m6 m  }+ Y设置Apache虚拟主机通常有两种方案
+ l- W5 h0 o4 q( |2 U# G3 ~1.基于IP的虚拟主机 4 E5 P( q8 S1 O- y) R; [' N
  这种方式需要在机器上设置IP别名,象上面的例子,在一台机器的 ) G( `& [& p% v( H4 [. j  S: @
网卡上绑定多个IP地址去服务多个虚拟主机。
6 F' Q' t- b  }若该机器的IP地址为192.168.0.1(account.yourdomain.com),首先 3 |$ P) d' `4 V8 r+ k
你要设置IP别名(假设用192.168.0.2作为其别名IP)。加下面的行到
4 z+ {5 k$ _* j2 S. x0 c# W0 C& C/etc/rc.d/rc.local,确保每次启动后自动运行。 . ^1 {; t: q7 ~8 }( n6 x
#/sbin/ifconfig eth0:0 192.168.0.2 netmask 255.255.255.0 broadcast \
8 r7 ]1 F/ [# F* }6 m6 N% Q192.168.0.255 up
" v1 U6 E2 H5 X% D#/sbin/route add -host 192.168.0.2 eth0:0
; T8 u4 Q1 n; l然后你需要设置/etd/httpd/conf/httpd.conf文件:
" H; ^. g1 }1 _<VirtualHost 192.168.0.2> ! q3 i9 A& }- g0 G, m9 T
ServerAdmin webmaster@yourdomain.com 6 a( a9 {1 P* \* r
DocumentRoot /home/httpd/sales.yourdomain.com
3 f: b7 c0 M! w- fServerName sales.yourdomain.com
% W2 q  }$ I/ IErrorLog /var/log/httpd/sales.yourdomain.com/error_log
# C/ w% C8 l; e( @7 C9 \9 F( qTransferLog /var/log/httpd/sales.yourdomain.com/access_log ; c0 X0 k4 Z3 M' d6 i; j
</VirtualHost> / }5 I$ w( r  v% _# [# e$ @7 J
然后分别创建目录
+ d2 H( O  g/ `/home/httpd/sales.yourdomain.com,
! G8 E3 O4 O$ Y4 ]' p; w( e/var/log/httpd/sales.yourdomain.com
) Q( c! W# o; z) k+ x  T4 g放相应的网站内容到目录/home/httpd/sales.yourdomain.com下即可,并确保 ; G) _: v0 i9 {4 y- e
你内部的DNS指定sales.yourdomain.com的A记录到IP地址192.168.0.2 。
( T% d/ v# ~. c注:这种基于IP的虚拟主机有一个缺点,就是你需要更多的IP地址去服务各自的 $ i3 G; G- P# B* k3 ~# o6 t5 N0 |
虚拟主机,如果你仅仅有一个IP地址,那么你将可以考虑用基于名字的虚拟主机
  \  B5 M8 f5 H" [% a方案。
/ @8 V/ B- w6 C
- c0 P* C& z  N( Y5 O/ x! S7 y2.基于名字的虚拟主机: ! J' K: Q: f. O7 x9 k# }
  它的优势就是不需要更多的IP地址,容易配置,不需要其它软硬件,现代的 / W& e" y+ c7 e4 O
浏览器大多都支持这种方式。与基于IP的虚拟主机一样,你需要编辑文件 0 z$ z3 O& y, k3 n( i' y
/etc/httpd/conf/httpd.conf 1 i; k4 k5 }5 w- Y& A. o
NameVirtualHost 192.168.0.1
4 K/ B% h" \2 ^$ I<VirtualHost 192.168.0.1>
# y% C, l* o1 V+ vServerAdmin webmaster@yourdomain.com 5 n7 a- D+ i, |+ V, D
DocumentRoot /home/httpd/sales.yourdomain.com
# ?* i: L* ?- X8 S) ?ServerName sales.yourdomain.com ) S% T* t2 ]$ T1 W
ErrorLog /var/log/httpd/sales.yourdomain.com/error_log
  v7 {) r# y6 R- u* N  }# A5 ?TransferLog /var/log/httpd/sales.yourdomain.com/access_log 8 t" P8 T# |" ?; T. Q+ ~+ B
</VirtualHost>
% }' Y0 s: m1 M; j( c& r1 k<VirtualHost 192.168.0.1> * V- l* ^& i# N- p+ {
ServerAdmin webmaster@yourdomain.com
$ \; O% s2 y: r. yDocumentRoot /home/httpd/hr.yourdomain.com / x/ ~4 f8 k2 M: D4 C0 a
ServerName hr.yourdomain.com & v2 V* s) S# N, I2 c1 L% s: x$ y
ErrorLog /var/log/httpd/hr.yourdomain.com/error_log
# S# d# w4 R! u% H- L7 @TransferLog /var/log/hr.yourdomain.com/access_log
- d$ j8 @* ]- n% [8 z</VirtualHost>
; {+ e4 M2 b8 f! L/ J( O注: 你需要加NameVirtualHost 指示在最前面,下面依次为各个虚拟主机,
2 V( \* N7 ?; W! W1 q为了让它工作,你需要把sales.yourdomain.com, hr.yourdomain.com的DNS
% V5 z/ x& [: o6 R- X* P都指向IP地址192.168.0.1
! f7 x8 _; s7 ^+ a2 y上面的两种都将工作,如果是在外部网段,在互联网上提供WWW服务,你可能 9 R5 n# m, H! [( G% z
没有足够的真实IP地址来支持多个虚拟主机,便可用基于名字的虚拟主机方案,
# y( v5 z. g9 _8 d若是在内部网段上,你有较多的内部保留IP地址,将没有太大的区别。 # c! R* m7 _! @" J2 N
提示:上面所提到的相对目录可以用绝对路径代替,如: ! f( @% L# g) M, p/ x" P$ ]% k% H
/home/httpd/hr.yourdomain.com 可改为 D:/Inetpub/wwwroot
- _% q# ]* k" s==================END=======================; A4 p- e$ l# \2 G" ]$ J" j
这只是入门,只能保证你的WEB服务器能正常运,要了解更多的 PHP 及 Apache 的详细设置,还要靠大家更加深入的实践...

另外可以用一个安装包安装全部PHP软件
$ R2 M9 c/ p9 T! Z下载地址:! o& j5 p0 S3 \+ W. X7 z# k; p; v
http://webclub.net.cn/data/phpStudy1.2.5.rar

TOP

亲娘那- f4 T6 o+ ~3 U7 j
怎么没图哈5 D& P8 t2 A5 [6 I
应该图文结合啊7 X. U' C, U2 q

TOP

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