  
- UID
- 1
- 帖子
- 738
- 精华
- 28
- 积分
- 14161
- 金币
- 2371
- 威望
- 1647
- 贡献
- 1319
|
Windows下的 Apache + PHP + MySql + 虚拟主机 设置全功略
前言:这一篇是我亲身配置的经历,希望大家喜欢,现在网络的教程中,PHP运行在Apache“模块”方式的文章中都少了最重要的一个步骤,也就是说按其方法配置PHP不能运行,有的太过简单,有的太过复杂,所以花了点时间整理一下。5 \7 p6 Y- i$ o8 U& w
7 t/ X" U- y, Q一、安装PHP4
4 E6 _, P; W6 i0 {+ h2 _我们需要安装的是win32版本,下载当然也是win32版本 php4.3.0-win32.zip
: p1 [- k4 N+ G# \, P1.下载后,解压到c:\php目录下。
4 t& \4 d& R) k q8 l2. 把c:\php目录下的php4ts.dll php4ts.lib文件都拷贝到c:\winnt\system32目录下(即window 2000系统目录下的system32目录)。' Z. c0 h) {/ v3 N4 H* w
3. 修改php.ini文件,把c:\php目录下的php.ini-dist文件改名为php.ini 用记事本或其它可编辑文本的软件把它打开。
' ]4 L9 M4 I' K$ x1 W1 @3.1找到register_globals = Off 改为register_globals = On
' X" e0 }/ _/ P! H9 Z4 h, }) ]这一步是为了使部分旧的PHP程序能正常运行;. x# q* I$ y* x$ } p# G' y# t2 {
3.2找到 extension_dir = ./ 把它改为extension_dir = c:\php\extensions
& Y4 W# Q+ b) X8 D0 O3 D以下内容新手请略过
3 ?8 H$ R% X# Y6 u% t===============新手略过开开始================
' l! h1 K9 _# C x- _; Y刚刚的修改是指定php4扩展dll文件存放的路径 由于php4默认所带的php.ini-dist中,是关掉了所有的扩展dll的功能( Windows Extensions)
9 W: }& f3 A( ?; k+ d;extension=php_bz2.dll
( v3 L7 g1 H+ g" ^;extension=php_cpdf.dll
# T: T' A& K" u) Q+ t. Z- B H;extension=php_crack.dll' v- D( L f& k4 y( S% c5 y# Q
;extension=php_curl.dll0 `, \: ?) P ?! i
.....
/ I5 t3 S( E; T0 _6 m9 ]要做的就是把extension前面的分号去掉就行了,当然这样是不够的。因为有些extension在我们的系统是不能使用的,比如系统中没有安装 sql server的话,那么extension=php_mssql.dll就要用;(分号)把它注释掉;
. u, L% h8 C1 q" ~其中,PHP4带了两个GD扩展,请选用一个,另一个先用分号注释掉,以免出现函数无法注册的错误;
$ s, W- ^6 w ?* U' V3 W如下面: {; S7 H; e' ~3 b" G) M
extension=php_gd.dll
( ~7 x9 C, J* T# Q# @;extension=php_gd2.dll7 u7 |2 Q# _# {( D# L" x* t
按实际所须的extension=php_xxxx.dll前面的分号都去掉。
4 t) D5 o, y3 ^2 k: P=============新手略过结束================ y* @- S. w B
3.3 找到session.save_path,把这一项改为 session.save_path = c:\tmp
6 `, w3 t6 p) X并在C盘建立一个TMP目录
* f& K" [% J* U. A. h( B3.4记得要保存刚刚的修改 并把php.ini文件放置在c:\winnt目录下。
9 b1 ~) c& g7 @6 `6 f! i2 S================================================
8 c" t9 J# l% W' r二、安装MySql; ^! e2 ^! J$ [, I% k% K( e# h
安装MySql 当然,我在MySql.com 下载的MySql是一个压缩包,要先解压出来;再点setup.exe安装;
- R: d7 e- D: @* ~按默认安装,即安装在c:\MySql下,安装完后,按“开始”菜单中的“运行”打进cmd进入dos窗口,进到c:\MySql\bin 目录;$ O8 ~& Z5 ~, o" Q, W7 e& W
运行mysqld-nt --install (将会出现一个Dos窗口,随即自动关闭!如果没有出任何信息,即安装到service成功!)
! K8 C9 g& E3 g8 z T" F从“开始”菜单“程序”=》“管理工具”=》“服务”,打开后,将会找到MySql,点击mouse右键 选择启动 回到刚刚的Dos窗口. ~- }- f. T4 U
即c:\MySql\bin目录下 运行mysqladmin -u root password 123 即把root用户的密码设置为123 这一步,如果没有出错,说明初始化root密码成功;5 l7 h- k" Q7 m! W% c
当然从本机进入MySql是不需要用户名和密码,但用php 程序或是其它程序连接MySql时就要用到;
( f9 W" X6 J# _+ L测试进入 第一种方法:直接动行MySql进入MySql 的dos管理状态;" |& O5 ^! I# L: T4 `- t
第二种方法:运行MySql -uroot -p MySql将会提示让您输入密码,密码当然就是刚刚设置的123(当然,得按设置的密码喽,不一定得设置是123)8 M1 [: q% R5 W# {
出现: 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>
1 A1 s8 m# y5 f4 K2 b, U即安装MySql成功。
8 G+ T M: o* i7 b j==========================================
6 f9 k: `# Q! b3 X1 D三、安装Apache 1.3.x 及 PHP运行设置! o+ o5 B5 C3 F \/ H' N# Z7 @% N7 T* {
1.首先下载Apache,Apache软件一般叫作apache_1_3_x.win32.exe。运行它。它会问你将Apache安装到什么地方,为他系统安全及操作容易,我们不要使用默认路径,你可以设为c:\Apache或C:\,因为马上你就要修改它的配置文件。
. N9 g/ v' j! s# w1 |. Z3 {如果安装没出什么错的话,Apache就可以用了。有很多readme文件可供参考,但仅有一个文件是讲Win32平台的,包括Window 9x和Windows NT。 ! z! R( u/ h3 u
有两种方式使 PHP 工作于 Windows 下的 Apache 1.3.x。一种是 CGI 方式(php.exe),另一种是使用 Apache 模块 DLL。不管哪种方式都需要停止 Apache,编辑 httpd.conf 来配置 Apache 以加入PHP支持。 5 q0 K3 Y' D" k, r' z" o6 M- g
值得在这里指出现在 Windows 下的 SAPI 模块更加稳定了,我们推荐使用模块方式,因为更加透明和安全。
1 Z* v: _, ]+ ^' O. }尽管有几种不同方法在 Apache 下配置 PHP,但是对新手来说还是非常简单易用的。有关更多的 httpd.conf 配置指令请参考 Apache 文档。
- Y& @; J# ^+ w如果你按照手工安装步骤一节中的说明把 PHP 解压缩到了 c:\php\ 目录下,那么需要加入以下三行到 Apache 配置文件中以 CGI 方式安装: 4 B8 @6 i5 U2 p9 L
; z8 R" n" q" E7 J. G: V
ScriptAlias /php/ "c:/php/"
$ s' b. Z9 B; E. P" fAddType application/x-httpd-php .php .phtml & j6 L) J6 t- y0 h$ P, w2 n% C( ~2 p1 p
Action application/x-httpd-php "/php/php.exe"
' X, W3 O6 ]9 m! T! _ M; a注意上面的第二行在原来的 httpd.conf 中就有的,不过被注释了。还有记住用你自己放置 PHP 的路径替换 c:/php/。
5 p/ }7 y, Y. q( w; U6 n! M5 {0 C/ u/ e; _- x. U8 [, ?
警告 + ]" w6 p/ _5 x4 r
在 CGI 方式下,你的服务器可能会受到几种攻击的影响。请学习如何防止攻击。
: j% ^6 y1 m2 u4 W3 ?. M6 P
, }; J2 n( K4 g- ^/ @0 S9 Z如果你想在 Apache 中用模块方式使用 PHP,确认把 php4ts.dll 拷贝到 windows/system(Windows 9x/Me)或者 winnt/system32(Windows NT/2000)或者 windows/system32(Windows XP)目录下,覆盖原来的文件。然后在 Apache 配置文件 httpd.conf 中加入以下两行: j) ?0 O# [, ^; a) b/ ]+ I$ Q7 M
8 ?% J" m7 Z' J# n; ^ V用自己喜爱的编辑器打开 httpd.conf,找到 LoadModule 指令的部分,在其列表的最后部分加上如下一行,# Y0 v* ~ o9 x
对 PHP 4:- m' O! E% e) z4 D E
LoadModule php4_module c:/php/sapi/php4apache.dll8 U5 g5 \ s; c( u! s" a; O7 C) Y
对 PHP 5:# G; x4 w9 h+ i4 s7 E0 \: M
LoadModule php5_module "c:/php/sapi/php5apache.dll"
5 Z9 b6 t+ L) w. J你可能发现在用 Windows Installer 安装了 Apache 之后需要为用 AddModule 指令定义 mod_php4.c。尤其是在定义了 ClearModuleList 指令时格外重要,向下滚动几行可以找到该指令。你将会看到 AddModule 项目的列表,在列表的最后加上这一行:7 z' d+ M4 w) K! G0 v9 f
AddModule mod_php4.c
( Q& Z% F- X- x6 N) j7 a, Y$ U对于 PHP 5 则为:' F" c# v* W; x2 J$ u, `0 h
AddModule mod_php5.c
& a! I. T( q3 z' L/ y搜索类似 # AddType allows you to tweak mime.types 的短语,你会找到一些 AddType 的项目,并且在列表的最后有这一行: AddType application/x-httpd-php .php。你可以在这里选择任何想用 PHP 解析的后缀。.php 只是所建议的一个。甚至可以包括 .html,也可以加上 .php3 来向下兼容。 * C2 ~8 m0 y9 e0 m' ^
b8 \3 t7 }4 _1 r' e' S% G
修改了配置文件之后记住重新启动 Apache,例如如果你的 Apache 是作为 Windows 的服务安装的,NET STOP APACHE 后面接上 NET START APACHE。或者用你通常使用的快捷方式。
9 R8 V$ E2 R/ w) T& }3 w有两种方式使用源程序语法彩色显示特色,但是取决于你的安装方法。如果你配置了 Apache 的 SAPI 模块方式使用 PHP,那么在 httpd.conf 中(和插入 AddType application/x-httpd-php .php 是同一个位置)加入下面一行就可以使用本特色:AddType application/x-httpd-php-source .phps。 2 ~; M9 A, c! d$ a& }& o
如果你用 CGI 方式使用 PHP,那你需要用 show_source() 函数。建立一个 PHP 文件,加入以下代码:<?php show_source ("original_php_script.php"); ?>。用你想要显示源代码的文件名替换掉 original_php_script.php。
7 e- Y# B+ c6 E) A+ c注: 在 Windows-Apache 组合中,所有路径中的反斜线例如 "c:\directory\file.ext" 都必须转换成斜线,如 "c:/directory/file.ext"。
6 x$ | f% C! X============================================, Z- ]" }( b& E: x$ s
四、实现Apache虚拟主机的两种方案
( P: T9 F4 h4 j9 d简介:这里说的虚拟主机是指在一台机器上仅运行一个httpd后台程序
0 l/ p$ w7 f E支持多个Apache服务器,如在公司财务部门有一台web服务器,名为 % C1 D& i/ c6 S0 h) a3 m- |' s9 x. J3 b
account.yourdomain.com,同时又想为sales部门建立网站,网站内容也 : ~3 O, E7 V& E; I3 `. X
放在该机器上,通过sales.yourdomain.com访问,这就要用到虚拟主机 " w9 l: W' N1 q k
设置。
b4 ~" W% s+ j9 c6 ~( @; s设置Apache虚拟主机通常有两种方案
+ E( r( l5 }2 e7 [% W1.基于IP的虚拟主机 + a* d& [" Y3 o& v% W
这种方式需要在机器上设置IP别名,象上面的例子,在一台机器的 ' X1 F8 T9 h" w7 w" w+ c1 I$ T4 E5 @
网卡上绑定多个IP地址去服务多个虚拟主机。 # }* H- d! ], S6 l& e; R3 t
若该机器的IP地址为192.168.0.1(account.yourdomain.com),首先 " s( {+ N0 { B0 ]/ |! y
你要设置IP别名(假设用192.168.0.2作为其别名IP)。加下面的行到 2 d) u3 T0 {4 f" q, t) j! L' l
/etc/rc.d/rc.local,确保每次启动后自动运行。 " z- B0 P' ~6 i+ I" M6 f# B: J
#/sbin/ifconfig eth0:0 192.168.0.2 netmask 255.255.255.0 broadcast \ 1 u) Y$ d( }# J7 m. H; w" h
192.168.0.255 up
7 y% |' Z' q( ~% L; m% b4 i#/sbin/route add -host 192.168.0.2 eth0:0
6 S# T# `% s' O* i( p" q* z然后你需要设置/etd/httpd/conf/httpd.conf文件:
! O% P7 h+ R9 S& O<VirtualHost 192.168.0.2>
& E1 N* s1 K4 |( B/ v6 ~& L/ ]ServerAdmin webmaster@yourdomain.com ' l" }6 r2 e) j7 J- D
DocumentRoot /home/httpd/sales.yourdomain.com , ^, a- U3 ]2 n+ j. x
ServerName sales.yourdomain.com - z, D1 J) X, z/ z( X. K- T$ F. Q
ErrorLog /var/log/httpd/sales.yourdomain.com/error_log ; I: M( w7 Q. _2 i x/ s
TransferLog /var/log/httpd/sales.yourdomain.com/access_log 2 B. k& h5 y+ _: ]8 B' \( B
</VirtualHost>
3 I' {" q" S) P然后分别创建目录 0 K8 c, @8 S- L& U' L/ D& K+ k" Y
/home/httpd/sales.yourdomain.com, 3 E5 }6 f' [4 X M3 g+ S% g
/var/log/httpd/sales.yourdomain.com
, N2 U6 x- `- K+ w; y# o& h放相应的网站内容到目录/home/httpd/sales.yourdomain.com下即可,并确保
# n; j( C: Z( P7 H5 J& O你内部的DNS指定sales.yourdomain.com的A记录到IP地址192.168.0.2 。
& j9 \/ Q2 w% R注:这种基于IP的虚拟主机有一个缺点,就是你需要更多的IP地址去服务各自的
' v2 _8 b+ f6 Z1 v虚拟主机,如果你仅仅有一个IP地址,那么你将可以考虑用基于名字的虚拟主机 ( N4 }# O5 ^$ m- Y) F
方案。 % Q3 r, O* i- g
- L$ y/ ?7 ]( f
2.基于名字的虚拟主机: 1 O* F: R/ [4 K7 K r1 j# C
它的优势就是不需要更多的IP地址,容易配置,不需要其它软硬件,现代的
' _: Y/ U A( z6 `9 P浏览器大多都支持这种方式。与基于IP的虚拟主机一样,你需要编辑文件
, j5 W1 x- h h: g' y0 T/etc/httpd/conf/httpd.conf ) M/ Z, Z* C. h+ P7 o/ v7 K" T
NameVirtualHost 192.168.0.1 6 i! Z) }. a2 V
<VirtualHost 192.168.0.1>
2 i" F0 ?9 X) }ServerAdmin webmaster@yourdomain.com , t- h' z% [! r
DocumentRoot /home/httpd/sales.yourdomain.com
3 Q' O) ]9 t# x! ~9 X) _# [: gServerName sales.yourdomain.com
( o# J( G0 e6 e( IErrorLog /var/log/httpd/sales.yourdomain.com/error_log
" Z- F3 v' x) U- mTransferLog /var/log/httpd/sales.yourdomain.com/access_log
" n$ s- l2 t0 P7 |$ P3 `, O; ~6 G</VirtualHost>
6 S$ A; b; {- `, [- a<VirtualHost 192.168.0.1> , k! t3 U- q) B
ServerAdmin webmaster@yourdomain.com
& K2 U; l$ P. V% fDocumentRoot /home/httpd/hr.yourdomain.com + `( C1 G2 c8 z; z
ServerName hr.yourdomain.com
: q3 @2 a7 P! e$ |4 MErrorLog /var/log/httpd/hr.yourdomain.com/error_log
, L9 @4 Y7 M% k' l: L- [& N7 MTransferLog /var/log/hr.yourdomain.com/access_log p$ m; E! P$ v/ p$ O, s
</VirtualHost> 2 g' X4 a4 h# E7 i
注: 你需要加NameVirtualHost 指示在最前面,下面依次为各个虚拟主机,
* J! R0 @& y/ _0 D b$ N为了让它工作,你需要把sales.yourdomain.com, hr.yourdomain.com的DNS
* Y* E1 H3 e$ r3 h6 _& U都指向IP地址192.168.0.1
% ~7 o$ [9 V* [# C" a# k+ k上面的两种都将工作,如果是在外部网段,在互联网上提供WWW服务,你可能
; K6 x. }/ `! ^没有足够的真实IP地址来支持多个虚拟主机,便可用基于名字的虚拟主机方案, ; ~/ I, `: |# k. [3 @7 S! H
若是在内部网段上,你有较多的内部保留IP地址,将没有太大的区别。
% ?) q6 y/ S- Z$ ?提示:上面所提到的相对目录可以用绝对路径代替,如: 1 {+ D$ k7 i) \, O# P. |) W# o/ R$ ]
/home/httpd/hr.yourdomain.com 可改为 D:/Inetpub/wwwroot
. R0 N5 b% {. _# S0 F==================END=======================
) ?) a3 g% }$ }6 k6 S; p这只是入门,只能保证你的WEB服务器能正常运,要了解更多的 PHP 及 Apache 的详细设置,还要靠大家更加深入的实践... |
|