|
  
- UID
- 1
- 帖子
- 738
- 精华
- 28
- 积分
- 14389
- 金币
- 2480
- 威望
- 1647
- 贡献
- 1428
|
Windows下的 Apache + PHP + MySql + 虚拟主机 设置全功略
前言:这一篇是我亲身配置的经历,希望大家喜欢,现在网络的教程中,PHP运行在Apache“模块”方式的文章中都少了最重要的一个步骤,也就是说按其方法配置PHP不能运行,有的太过简单,有的太过复杂,所以花了点时间整理一下。
8 P9 l3 ` S' k2 U o1 `3 s$ s8 c, c2 R( ?
一、安装PHP42 K% @# k& X7 x) N7 K0 m7 a! \9 N
我们需要安装的是win32版本,下载当然也是win32版本 php4.3.0-win32.zip
: }. b% i7 S& O' \" X9 \1.下载后,解压到c:\php目录下。4 u8 A$ X2 k5 v4 j- O
2. 把c:\php目录下的php4ts.dll php4ts.lib文件都拷贝到c:\winnt\system32目录下(即window 2000系统目录下的system32目录)。* |/ ?" x' M2 z- o6 Z7 k
3. 修改php.ini文件,把c:\php目录下的php.ini-dist文件改名为php.ini 用记事本或其它可编辑文本的软件把它打开。
& F; E* d( P) `: T6 r' n3.1找到register_globals = Off 改为register_globals = On
5 o) U/ @% i4 S% Y这一步是为了使部分旧的PHP程序能正常运行;8 X9 a! g9 |: m( Q# `7 P
3.2找到 extension_dir = ./ 把它改为extension_dir = c:\php\extensions4 G* k* u% M* i, v& |
以下内容新手请略过
! r. j$ T. o' B===============新手略过开开始================
- C, F, q: [' j( G- \* x刚刚的修改是指定php4扩展dll文件存放的路径 由于php4默认所带的php.ini-dist中,是关掉了所有的扩展dll的功能( Windows Extensions) ( M k* E' ~7 M4 x: [1 `& g
;extension=php_bz2.dll
1 j* d% t1 h0 H4 M;extension=php_cpdf.dll
2 k5 j4 e* o5 V- ]9 q;extension=php_crack.dll- p# G: _ N e" r
;extension=php_curl.dll
# P: E( h# {+ o4 P5 D.....
2 Y1 e: b" [; v/ d' O要做的就是把extension前面的分号去掉就行了,当然这样是不够的。因为有些extension在我们的系统是不能使用的,比如系统中没有安装 sql server的话,那么extension=php_mssql.dll就要用;(分号)把它注释掉;
+ F6 c) U: `; p, i其中,PHP4带了两个GD扩展,请选用一个,另一个先用分号注释掉,以免出现函数无法注册的错误;
1 o7 R7 _8 r+ {# }如下面, e _. }0 v0 L* q
extension=php_gd.dll
; P* e* d. k# x, ]( s0 J" e/ x8 M2 I;extension=php_gd2.dll
! J% v& Z# H5 Q0 d3 s: o3 a按实际所须的extension=php_xxxx.dll前面的分号都去掉。
; h% M0 Y7 Y# |& v' H6 ~=============新手略过结束================$ d n) Z. U+ z9 ?; H$ b: n
3.3 找到session.save_path,把这一项改为 session.save_path = c:\tmp: h1 ]; u" U/ B f! a/ w
并在C盘建立一个TMP目录% `6 d6 n% [, K/ S$ A
3.4记得要保存刚刚的修改 并把php.ini文件放置在c:\winnt目录下。8 o# O$ w- B* i7 o
================================================! L+ A: P0 B7 Q" v0 ~( w" C$ p) F
二、安装MySql( _6 X% S# R, w
安装MySql 当然,我在MySql.com 下载的MySql是一个压缩包,要先解压出来;再点setup.exe安装;& M4 ]- j) P6 A: X, z7 n
按默认安装,即安装在c:\MySql下,安装完后,按“开始”菜单中的“运行”打进cmd进入dos窗口,进到c:\MySql\bin 目录;, g, _8 w! j% y
运行mysqld-nt --install (将会出现一个Dos窗口,随即自动关闭!如果没有出任何信息,即安装到service成功!)
( u) }, q2 T8 }( |( V从“开始”菜单“程序”=》“管理工具”=》“服务”,打开后,将会找到MySql,点击mouse右键 选择启动 回到刚刚的Dos窗口
5 Q* u5 H) H, G0 P* O* N即c:\MySql\bin目录下 运行mysqladmin -u root password 123 即把root用户的密码设置为123 这一步,如果没有出错,说明初始化root密码成功;
5 X/ D) R7 O6 T# A: z当然从本机进入MySql是不需要用户名和密码,但用php 程序或是其它程序连接MySql时就要用到;4 \9 i/ F5 O1 S/ ?" {9 V# d
测试进入 第一种方法:直接动行MySql进入MySql 的dos管理状态;
, C6 B/ p# U/ K1 Z# G第二种方法:运行MySql -uroot -p MySql将会提示让您输入密码,密码当然就是刚刚设置的123(当然,得按设置的密码喽,不一定得设置是123)
& V' m8 z" J# I. I4 W8 @出现: 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>
4 `5 T- z; x0 Q1 P+ s9 f3 u即安装MySql成功。
6 D) ?; l: G* U* f% s9 d' K==========================================
3 p, }+ i% M* S3 N三、安装Apache 1.3.x 及 PHP运行设置
. L3 C( e! r3 x9 x0 t1 Z( ^ R1.首先下载Apache,Apache软件一般叫作apache_1_3_x.win32.exe。运行它。它会问你将Apache安装到什么地方,为他系统安全及操作容易,我们不要使用默认路径,你可以设为c:\Apache或C:\,因为马上你就要修改它的配置文件。. q1 X( h$ e2 A. l
如果安装没出什么错的话,Apache就可以用了。有很多readme文件可供参考,但仅有一个文件是讲Win32平台的,包括Window 9x和Windows NT。
2 o' [: r+ }6 u- u" @ d有两种方式使 PHP 工作于 Windows 下的 Apache 1.3.x。一种是 CGI 方式(php.exe),另一种是使用 Apache 模块 DLL。不管哪种方式都需要停止 Apache,编辑 httpd.conf 来配置 Apache 以加入PHP支持。
! G% T$ S: K* U: E+ W8 z4 W5 f值得在这里指出现在 Windows 下的 SAPI 模块更加稳定了,我们推荐使用模块方式,因为更加透明和安全。 % \/ M7 f7 e _. X4 m
尽管有几种不同方法在 Apache 下配置 PHP,但是对新手来说还是非常简单易用的。有关更多的 httpd.conf 配置指令请参考 Apache 文档。 + J- R* x; c* {3 h: K; N: V
如果你按照手工安装步骤一节中的说明把 PHP 解压缩到了 c:\php\ 目录下,那么需要加入以下三行到 Apache 配置文件中以 CGI 方式安装:
: E$ t" h; [9 ^
- n" I+ b1 z r" `! }6 ~( mScriptAlias /php/ "c:/php/"
& s. I% [# Z) S8 X* L2 WAddType application/x-httpd-php .php .phtml
' v( Z8 A X1 @3 E- YAction application/x-httpd-php "/php/php.exe"
8 K5 ?6 w, z$ Y) B4 m& j注意上面的第二行在原来的 httpd.conf 中就有的,不过被注释了。还有记住用你自己放置 PHP 的路径替换 c:/php/。
" a; w& h8 Q1 l# }- l8 f
1 s9 E- J! y/ d! q U7 f) G0 k' F警告 & d$ n6 S& _# W5 T1 t1 Q3 l$ f
在 CGI 方式下,你的服务器可能会受到几种攻击的影响。请学习如何防止攻击。 Z' v. N) |# b9 L
9 A1 s$ h0 s0 ?/ q3 |9 r( R
如果你想在 Apache 中用模块方式使用 PHP,确认把 php4ts.dll 拷贝到 windows/system(Windows 9x/Me)或者 winnt/system32(Windows NT/2000)或者 windows/system32(Windows XP)目录下,覆盖原来的文件。然后在 Apache 配置文件 httpd.conf 中加入以下两行: 7 X. ` i' b; W8 Y1 `) @
% K& ^3 k$ v6 r' T9 G6 }用自己喜爱的编辑器打开 httpd.conf,找到 LoadModule 指令的部分,在其列表的最后部分加上如下一行,/ h0 @7 P( g& ^6 `3 X3 n
对 PHP 4:# a0 @0 Y9 c3 _+ {
LoadModule php4_module c:/php/sapi/php4apache.dll2 m& e6 B3 U! B: p5 q; h
对 PHP 5:5 J; L' A* X/ L {+ P
LoadModule php5_module "c:/php/sapi/php5apache.dll"
; B: A2 y& h) S% Z3 m# e& N( H) C7 r你可能发现在用 Windows Installer 安装了 Apache 之后需要为用 AddModule 指令定义 mod_php4.c。尤其是在定义了 ClearModuleList 指令时格外重要,向下滚动几行可以找到该指令。你将会看到 AddModule 项目的列表,在列表的最后加上这一行:
; @5 a3 A7 U }! s3 [- {AddModule mod_php4.c2 `. O- U/ T/ _5 i& o
对于 PHP 5 则为:. k5 V+ C8 Y+ A, x9 \' \7 W) E) ?
AddModule mod_php5.c, ~. R) l. L" K9 a
搜索类似 # AddType allows you to tweak mime.types 的短语,你会找到一些 AddType 的项目,并且在列表的最后有这一行: AddType application/x-httpd-php .php。你可以在这里选择任何想用 PHP 解析的后缀。.php 只是所建议的一个。甚至可以包括 .html,也可以加上 .php3 来向下兼容。
0 c* T+ Y; J0 | c, m) E' F* K5 A( \( b+ x ?
修改了配置文件之后记住重新启动 Apache,例如如果你的 Apache 是作为 Windows 的服务安装的,NET STOP APACHE 后面接上 NET START APACHE。或者用你通常使用的快捷方式。
0 O( k t, {" ]6 c5 g/ G8 _6 a$ }0 @8 Z有两种方式使用源程序语法彩色显示特色,但是取决于你的安装方法。如果你配置了 Apache 的 SAPI 模块方式使用 PHP,那么在 httpd.conf 中(和插入 AddType application/x-httpd-php .php 是同一个位置)加入下面一行就可以使用本特色:AddType application/x-httpd-php-source .phps。 ' A; ]" u* X; J4 O; ?1 N7 N( f
如果你用 CGI 方式使用 PHP,那你需要用 show_source() 函数。建立一个 PHP 文件,加入以下代码:<?php show_source ("original_php_script.php"); ?>。用你想要显示源代码的文件名替换掉 original_php_script.php。
" H& O6 E- L( {: `$ Y注: 在 Windows-Apache 组合中,所有路径中的反斜线例如 "c:\directory\file.ext" 都必须转换成斜线,如 "c:/directory/file.ext"。
9 e( O+ W6 {- m1 G% I7 F============================================ P# @5 M1 m3 k
四、实现Apache虚拟主机的两种方案
5 }9 n# l6 O, J7 I8 E- ^( M简介:这里说的虚拟主机是指在一台机器上仅运行一个httpd后台程序
4 g" ]9 p/ I4 L n支持多个Apache服务器,如在公司财务部门有一台web服务器,名为 5 n {7 T2 |6 w. v, R- U; ?9 q5 I
account.yourdomain.com,同时又想为sales部门建立网站,网站内容也
+ k8 G2 W D0 z放在该机器上,通过sales.yourdomain.com访问,这就要用到虚拟主机
$ V) I9 L3 C& b. p设置。
3 v+ J" p0 v. B# ~6 f2 M8 f4 b) {设置Apache虚拟主机通常有两种方案
4 q) e* s5 G+ r1.基于IP的虚拟主机
" R& X/ B# `( h; ? 这种方式需要在机器上设置IP别名,象上面的例子,在一台机器的 + t7 X& y7 e7 K7 M; L' @
网卡上绑定多个IP地址去服务多个虚拟主机。
v! q- d; U% `7 u若该机器的IP地址为192.168.0.1(account.yourdomain.com),首先
. E* e) ?) F1 H. ?你要设置IP别名(假设用192.168.0.2作为其别名IP)。加下面的行到
, ]4 E1 Q, t9 w6 _2 k q/etc/rc.d/rc.local,确保每次启动后自动运行。
( R0 w3 T* f! Q* @! z& X) L#/sbin/ifconfig eth0:0 192.168.0.2 netmask 255.255.255.0 broadcast \
1 m3 t8 C9 Y" i* x$ m o192.168.0.255 up
5 I2 W$ c( D: H" {# ?9 i( J2 G#/sbin/route add -host 192.168.0.2 eth0:0 # {3 A7 ^/ N# ?9 u
然后你需要设置/etd/httpd/conf/httpd.conf文件:
k# b0 j( N) z" ^7 j) k3 z" h<VirtualHost 192.168.0.2>
2 N2 P B2 D# t' I& P5 Q- U- F( }ServerAdmin webmaster@yourdomain.com
3 P4 [) z9 j ]1 W9 _" x3 k- pDocumentRoot /home/httpd/sales.yourdomain.com
( N: b# D% I% `! A1 {( t) G- }ServerName sales.yourdomain.com
0 |$ Y4 L- M# u+ L0 B. s" YErrorLog /var/log/httpd/sales.yourdomain.com/error_log * X9 Z6 I7 x5 X, g/ Q- `; @+ B
TransferLog /var/log/httpd/sales.yourdomain.com/access_log ; |% w7 v; f) S; q
</VirtualHost> : A: {( \. T- m+ R
然后分别创建目录 0 I2 a% ?$ i0 _* N! d
/home/httpd/sales.yourdomain.com,
% d# D S4 t4 G8 A3 M/ r4 A/var/log/httpd/sales.yourdomain.com
/ R* T% }2 A$ n9 [5 |放相应的网站内容到目录/home/httpd/sales.yourdomain.com下即可,并确保
, `$ ]2 Y) g# T) I2 N你内部的DNS指定sales.yourdomain.com的A记录到IP地址192.168.0.2 。 $ n. S. a9 i0 N$ i3 g2 r7 l
注:这种基于IP的虚拟主机有一个缺点,就是你需要更多的IP地址去服务各自的 - D/ f) z! `1 j6 a& J" B' H
虚拟主机,如果你仅仅有一个IP地址,那么你将可以考虑用基于名字的虚拟主机 4 ?8 W/ x' d/ k% A" H2 \% M/ P" K
方案。
+ {, V: c9 R0 j: \1 P
% Z1 S7 R) o8 E/ E" |6 [2.基于名字的虚拟主机:
! `' [( `% V& d1 f$ d# r+ I 它的优势就是不需要更多的IP地址,容易配置,不需要其它软硬件,现代的 5 k( f& @( Q3 u( b$ ?! p
浏览器大多都支持这种方式。与基于IP的虚拟主机一样,你需要编辑文件 & m( E) J e1 a' H$ Q
/etc/httpd/conf/httpd.conf
' ?6 n, F ]# _5 g8 vNameVirtualHost 192.168.0.1
- a: J9 l, I0 @, d1 D6 }<VirtualHost 192.168.0.1> ' j! W0 p$ o6 F6 V
ServerAdmin webmaster@yourdomain.com $ Q2 M* {1 W6 l! {! q
DocumentRoot /home/httpd/sales.yourdomain.com ) ], u# c# z' }+ R0 j
ServerName sales.yourdomain.com ( n/ B. v% q" G' H9 i
ErrorLog /var/log/httpd/sales.yourdomain.com/error_log 5 b: Q8 ?0 t, o# D& U" F' z
TransferLog /var/log/httpd/sales.yourdomain.com/access_log Q8 g+ m" i! G& ?' ]
</VirtualHost>
, f8 D. K! E0 n<VirtualHost 192.168.0.1>
6 Z" U( m% U5 b& W+ a) X2 k' OServerAdmin webmaster@yourdomain.com
! V' v' J( S4 }' {+ uDocumentRoot /home/httpd/hr.yourdomain.com + a; o4 {" \1 f7 R9 L# j9 q) H1 Z
ServerName hr.yourdomain.com . ]" ^* s l1 T* B, d
ErrorLog /var/log/httpd/hr.yourdomain.com/error_log
$ k2 ?" s& W! ETransferLog /var/log/hr.yourdomain.com/access_log
& y8 }$ m8 N/ o9 \0 \, Z" I. S</VirtualHost>
- C2 R! d% `# \0 G7 o$ M' R8 L, \注: 你需要加NameVirtualHost 指示在最前面,下面依次为各个虚拟主机, ' d3 A; w# @# H( G9 H
为了让它工作,你需要把sales.yourdomain.com, hr.yourdomain.com的DNS
: U |6 ^- G4 w, D; S5 n都指向IP地址192.168.0.1
, o( y6 o+ B g% c; o. v; K上面的两种都将工作,如果是在外部网段,在互联网上提供WWW服务,你可能 # h" J- D. R7 g4 t% l& C
没有足够的真实IP地址来支持多个虚拟主机,便可用基于名字的虚拟主机方案, # J) k6 V( l2 }' D: z; Z
若是在内部网段上,你有较多的内部保留IP地址,将没有太大的区别。 9 ~; K; g* r m; R, N
提示:上面所提到的相对目录可以用绝对路径代替,如:
& I1 Y$ k1 ^ ~/home/httpd/hr.yourdomain.com 可改为 D:/Inetpub/wwwroot C. F0 S. @8 _$ B) p% M9 y0 c
==================END=======================; a( w. g( n7 l( H2 n$ C( R
这只是入门,只能保证你的WEB服务器能正常运,要了解更多的 PHP 及 Apache 的详细设置,还要靠大家更加深入的实践... |
|