返回列表 发帖

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

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

/ \; X" [2 t% M* P5 w. |一、安装PHP4% w' I! T9 H* t% U) e+ ?
我们需要安装的是win32版本,下载当然也是win32版本 php4.3.0-win32.zip( ^6 o% C+ R. }; I3 n7 s6 @
1.下载后,解压到c:\php目录下。
6 o' t' F0 H0 Q8 b7 `2. 把c:\php目录下的php4ts.dll php4ts.lib文件都拷贝到c:\winnt\system32目录下(即window 2000系统目录下的system32目录)。+ G+ o! s+ G+ J; J, u8 G
3. 修改php.ini文件,把c:\php目录下的php.ini-dist文件改名为php.ini 用记事本或其它可编辑文本的软件把它打开。
5 Y$ Z7 c6 T3 d9 b# v+ {  H& g* P3.1找到register_globals = Off 改为register_globals = On
2 R' a# P9 v- y! ], u0 ?这一步是为了使部分旧的PHP程序能正常运行;
/ Q: q& V2 f: C% y; n3.2找到 extension_dir = ./ 把它改为extension_dir = c:\php\extensions
4 j5 i& F( f, C% p* y( m以下内容新手请略过
' A: r8 E7 K% `$ W! R===============新手略过开开始================' U/ e5 \) N+ k9 u) O7 p4 I
刚刚的修改是指定php4扩展dll文件存放的路径 由于php4默认所带的php.ini-dist中,是关掉了所有的扩展dll的功能( Windows Extensions) 6 x8 x1 {: Z# _6 i: i  d- F/ a7 o
;extension=php_bz2.dll
' P7 x+ H0 }4 N* I;extension=php_cpdf.dll+ r  ?& ~+ Z! e
;extension=php_crack.dll' S7 x' ~4 j: f6 l# G9 u
;extension=php_curl.dll( o" a5 b& V! ^8 V/ H) s. Y
.....
. P+ \7 P  B" r; {) N( ?要做的就是把extension前面的分号去掉就行了,当然这样是不够的。因为有些extension在我们的系统是不能使用的,比如系统中没有安装 sql server的话,那么extension=php_mssql.dll就要用;(分号)把它注释掉;8 C" |8 E4 w) p3 p: F4 S% |  P
其中,PHP4带了两个GD扩展,请选用一个,另一个先用分号注释掉,以免出现函数无法注册的错误;4 {; D/ J5 \( S7 h, p5 d# B
如下面
; y7 _( i" y: k4 @+ D+ dextension=php_gd.dll
) }4 m; c1 T$ h3 x7 z$ P5 q: Y6 z;extension=php_gd2.dll
4 R/ z" |8 R4 B& K. y0 G* Z+ h按实际所须的extension=php_xxxx.dll前面的分号都去掉。
" s1 x* U/ H1 J8 w: b=============新手略过结束================
. ?1 Y& P: h& f" L1 O- Z" D3.3 找到session.save_path,把这一项改为 session.save_path = c:\tmp, z, m( T2 M6 O/ M4 h
并在C盘建立一个TMP目录
  K6 z  d2 S8 x  q% u/ Q7 c3.4记得要保存刚刚的修改 并把php.ini文件放置在c:\winnt目录下。
8 E% }% ^8 v1 R; q================================================& n- `" ^' U) Z3 r9 _) O+ Q
二、安装MySql! P) A0 ], \* |2 [
安装MySql 当然,我在MySql.com 下载的MySql是一个压缩包,要先解压出来;再点setup.exe安装;
! N5 ^& p/ a& _8 }" m* m4 n按默认安装,即安装在c:\MySql下,安装完后,按“开始”菜单中的“运行”打进cmd进入dos窗口,进到c:\MySql\bin 目录;
8 O+ D% o3 v, \+ z% _运行mysqld-nt --install (将会出现一个Dos窗口,随即自动关闭!如果没有出任何信息,即安装到service成功!)
' |) p/ H6 q( ?: `- Q( [从“开始”菜单“程序”=》“管理工具”=》“服务”,打开后,将会找到MySql,点击mouse右键 选择启动 回到刚刚的Dos窗口
* p' `, w0 E6 E+ B% I即c:\MySql\bin目录下 运行mysqladmin -u root password 123 即把root用户的密码设置为123 这一步,如果没有出错,说明初始化root密码成功;
8 d8 Q. G1 ?) h  _' ], ]; {当然从本机进入MySql是不需要用户名和密码,但用php 程序或是其它程序连接MySql时就要用到;
4 }& f$ J3 `% W* d. m5 n, f' U5 `8 a2 k测试进入 第一种方法:直接动行MySql进入MySql 的dos管理状态;* d9 N2 b, }) l, x) n' {; f
第二种方法:运行MySql -uroot -p MySql将会提示让您输入密码,密码当然就是刚刚设置的123(当然,得按设置的密码喽,不一定得设置是123)
; L, u, d* Y9 G% t( O) H% w# i出现: 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> 7 e  w/ L1 S: S! r
即安装MySql成功。3 q# Z, u2 C2 U7 J  |/ }
==========================================, R! D! b" m) T2 s  X6 w- o: _) c
三、安装Apache 1.3.x 及 PHP运行设置9 L# g: a7 q. m# g, m5 x, l
1.首先下载Apache,Apache软件一般叫作apache_1_3_x.win32.exe。运行它。它会问你将Apache安装到什么地方,为他系统安全及操作容易,我们不要使用默认路径,你可以设为c:\Apache或C:\,因为马上你就要修改它的配置文件。
  E! w1 Z; F2 h3 I如果安装没出什么错的话,Apache就可以用了。有很多readme文件可供参考,但仅有一个文件是讲Win32平台的,包括Window 9x和Windows NT。 ' t' I) @+ |4 x" p' I
有两种方式使 PHP 工作于 Windows 下的 Apache 1.3.x。一种是 CGI 方式(php.exe),另一种是使用 Apache 模块 DLL。不管哪种方式都需要停止 Apache,编辑 httpd.conf 来配置 Apache 以加入PHP支持。 . c; K2 c( Z2 d! k2 z/ g
值得在这里指出现在 Windows 下的 SAPI 模块更加稳定了,我们推荐使用模块方式,因为更加透明和安全。 4 d( g' V( _4 ?' c
尽管有几种不同方法在 Apache 下配置 PHP,但是对新手来说还是非常简单易用的。有关更多的 httpd.conf 配置指令请参考 Apache 文档。 " q0 j7 }+ `- g# f- O
如果你按照手工安装步骤一节中的说明把 PHP 解压缩到了 c:\php\ 目录下,那么需要加入以下三行到 Apache 配置文件中以 CGI 方式安装:
" O3 `9 d+ h( Z4 W# e' Z' ?' x* r" F. p
ScriptAlias /php/ "c:/php/" & G$ G9 \8 D2 {( f
AddType application/x-httpd-php .php .phtml 9 {- u8 S2 |- Z( |5 p
Action application/x-httpd-php "/php/php.exe" * {+ K: V+ o( C3 Q; h9 E
注意上面的第二行在原来的 httpd.conf 中就有的,不过被注释了。还有记住用你自己放置 PHP 的路径替换 c:/php/。
: r& A# ]. O! T0 r7 {, c9 d8 N; C" w; Y* q; o1 j
警告
' @* m( i( v3 c0 q/ i5 t在 CGI 方式下,你的服务器可能会受到几种攻击的影响。请学习如何防止攻击。 , q' t) c" _& f& O; ]4 G

$ u& X) k7 c4 N如果你想在 Apache 中用模块方式使用 PHP,确认把 php4ts.dll 拷贝到 windows/system(Windows 9x/Me)或者 winnt/system32(Windows NT/2000)或者 windows/system32(Windows XP)目录下,覆盖原来的文件。然后在 Apache 配置文件 httpd.conf 中加入以下两行:
4 V" Z* _2 }1 V# R/ M. R0 q5 ^1 f9 ~5 p. j- H. D1 }- v( v
用自己喜爱的编辑器打开 httpd.conf,找到 LoadModule 指令的部分,在其列表的最后部分加上如下一行,
  S4 B/ O: }9 Q+ W4 t3 ^7 T4 l对 PHP 4:
) y& K% j# I0 e: ]+ {LoadModule php4_module c:/php/sapi/php4apache.dll
6 G2 Y2 o( M8 A- |, r对 PHP 5:
# M" E5 s/ ?) o$ P; bLoadModule php5_module "c:/php/sapi/php5apache.dll"6 g& q0 F- S- G
你可能发现在用 Windows Installer 安装了 Apache 之后需要为用 AddModule 指令定义 mod_php4.c。尤其是在定义了 ClearModuleList 指令时格外重要,向下滚动几行可以找到该指令。你将会看到 AddModule 项目的列表,在列表的最后加上这一行:
1 k; [4 `- D, E7 B4 ?3 a6 kAddModule mod_php4.c" h) r/ f5 N8 N" v* H) N( o- q3 ]
对于 PHP 5 则为:7 ?, F% j0 p5 l' c& b- E& N
AddModule mod_php5.c/ n( z9 _% A! i7 W2 X
搜索类似 # AddType allows you to tweak mime.types 的短语,你会找到一些 AddType 的项目,并且在列表的最后有这一行: AddType application/x-httpd-php .php。你可以在这里选择任何想用 PHP 解析的后缀。.php 只是所建议的一个。甚至可以包括 .html,也可以加上 .php3 来向下兼容。 4 @' o7 x7 O  j2 X# m: Q
- P% s/ [! v) p1 Z, R3 `% f' |
修改了配置文件之后记住重新启动 Apache,例如如果你的 Apache 是作为 Windows 的服务安装的,NET STOP APACHE 后面接上 NET START APACHE。或者用你通常使用的快捷方式。   F/ ]0 t- i& n
有两种方式使用源程序语法彩色显示特色,但是取决于你的安装方法。如果你配置了 Apache 的 SAPI 模块方式使用 PHP,那么在 httpd.conf 中(和插入 AddType application/x-httpd-php .php 是同一个位置)加入下面一行就可以使用本特色:AddType application/x-httpd-php-source .phps。
# j3 `1 z. M# G5 j0 h! I6 S+ a如果你用 CGI 方式使用 PHP,那你需要用 show_source() 函数。建立一个 PHP 文件,加入以下代码:<?php show_source ("original_php_script.php"); ?>。用你想要显示源代码的文件名替换掉 original_php_script.php。
: k' b( p; S6 ?) e* m3 z注: 在 Windows-Apache 组合中,所有路径中的反斜线例如 "c:\directory\file.ext" 都必须转换成斜线,如 "c:/directory/file.ext"。7 a7 ^/ u( L! ^4 H5 }
============================================
( E2 a$ d- b& \5 g7 ^! Y5 B四、实现Apache虚拟主机的两种方案7 B: B2 o$ F/ `0 h
简介:这里说的虚拟主机是指在一台机器上仅运行一个httpd后台程序 ( |5 h7 _7 h( |. [9 A0 T' w
支持多个Apache服务器,如在公司财务部门有一台web服务器,名为
0 v; N7 o1 U& k  l+ ?account.yourdomain.com,同时又想为sales部门建立网站,网站内容也
/ }) P% y3 u3 a* ?放在该机器上,通过sales.yourdomain.com访问,这就要用到虚拟主机
6 Y7 ?( }, \1 F( y1 a设置。
" |- [$ Q8 l9 S; M8 M* ]设置Apache虚拟主机通常有两种方案
- S" g+ m) \; W5 j: B1.基于IP的虚拟主机 - P1 W% P( t# z3 F# D, v
  这种方式需要在机器上设置IP别名,象上面的例子,在一台机器的 9 M  d0 _3 l" A+ |( ~7 ~
网卡上绑定多个IP地址去服务多个虚拟主机。 * E+ m% B9 m4 g# n, C$ s$ g* Z/ S
若该机器的IP地址为192.168.0.1(account.yourdomain.com),首先
  l  ~% Q1 ]1 C0 j; \3 ?你要设置IP别名(假设用192.168.0.2作为其别名IP)。加下面的行到 ) m9 P7 K- I6 s% C
/etc/rc.d/rc.local,确保每次启动后自动运行。 8 _  i4 y" |% j6 z6 H
#/sbin/ifconfig eth0:0 192.168.0.2 netmask 255.255.255.0 broadcast \
9 M/ @" \2 K8 B+ V4 \1 ?192.168.0.255 up / F3 g( \" b( M, R! m) \
#/sbin/route add -host 192.168.0.2 eth0:0 ! z4 p, ^8 t# l
然后你需要设置/etd/httpd/conf/httpd.conf文件: / ~: o8 n4 i+ a5 E
<VirtualHost 192.168.0.2> 8 c1 r4 K! L9 @7 P/ V7 g/ ~6 O
ServerAdmin webmaster@yourdomain.com
6 J6 `% _8 j0 t' FDocumentRoot /home/httpd/sales.yourdomain.com ; |% r' m* m5 Z- `$ `; G7 g
ServerName sales.yourdomain.com
; W" N+ F4 k/ t+ zErrorLog /var/log/httpd/sales.yourdomain.com/error_log
& O0 {+ R1 N, k( `: @( h% [* h2 ^" ETransferLog /var/log/httpd/sales.yourdomain.com/access_log
! {* H7 K  C# u6 H0 F</VirtualHost>
; i' }  j$ y' p$ `然后分别创建目录
/ I* f% G5 R' S+ h/ g4 r# ~/home/httpd/sales.yourdomain.com, 6 i# `5 S# U) ~& n( a( K
/var/log/httpd/sales.yourdomain.com
% N- Q. _* p' v5 ^( e* G放相应的网站内容到目录/home/httpd/sales.yourdomain.com下即可,并确保
! g. g; }! F7 V6 y. O1 N, i你内部的DNS指定sales.yourdomain.com的A记录到IP地址192.168.0.2 。
3 w% s! k9 a# ]4 r' m) J5 `# r注:这种基于IP的虚拟主机有一个缺点,就是你需要更多的IP地址去服务各自的 7 y. T: |, G. }. M# T
虚拟主机,如果你仅仅有一个IP地址,那么你将可以考虑用基于名字的虚拟主机 ' ~# h$ D, k/ n' O% I
方案。
$ k& N5 Y, J) a. V7 N2 m" T1 f
5 b1 W" {: A% K# _2.基于名字的虚拟主机: # f& X0 X& v' u! C3 ~) h6 A2 l
  它的优势就是不需要更多的IP地址,容易配置,不需要其它软硬件,现代的 ; l# m7 u* z6 e: g: t
浏览器大多都支持这种方式。与基于IP的虚拟主机一样,你需要编辑文件 ; `2 D, u3 o  _! a
/etc/httpd/conf/httpd.conf
) _5 |9 E0 }+ h0 x) Z# ONameVirtualHost 192.168.0.1
% d: [( d/ D2 x  U' K<VirtualHost 192.168.0.1>
8 L9 c% j& B$ lServerAdmin webmaster@yourdomain.com
1 E  `/ y, H' {DocumentRoot /home/httpd/sales.yourdomain.com ) E# X' C2 R+ ^/ ], A  {
ServerName sales.yourdomain.com * n5 o# n4 c2 }
ErrorLog /var/log/httpd/sales.yourdomain.com/error_log
4 o( s. o2 X3 p" s* JTransferLog /var/log/httpd/sales.yourdomain.com/access_log ! f2 Y2 p1 q. A6 X
</VirtualHost>
5 |' v8 j6 {& A0 f8 L- s<VirtualHost 192.168.0.1> % T( L* b: ?: d
ServerAdmin webmaster@yourdomain.com ) g( d! `) w% ^! s7 @
DocumentRoot /home/httpd/hr.yourdomain.com / a0 _7 g" @( z4 F: x4 a
ServerName hr.yourdomain.com
- h5 A) F1 p- t$ t2 w% X7 D* CErrorLog /var/log/httpd/hr.yourdomain.com/error_log + |# t  }) K8 a7 R
TransferLog /var/log/hr.yourdomain.com/access_log
5 f  x$ N: d0 r( v</VirtualHost> . a* K, l" J2 \$ h
注: 你需要加NameVirtualHost 指示在最前面,下面依次为各个虚拟主机, / I( b8 i7 J" M& }2 U1 N
为了让它工作,你需要把sales.yourdomain.com, hr.yourdomain.com的DNS
& c' Y/ n! R- A都指向IP地址192.168.0.1
. z3 t2 q% n* b/ S1 O( V6 y上面的两种都将工作,如果是在外部网段,在互联网上提供WWW服务,你可能 ' R" p3 K! ~3 `  q
没有足够的真实IP地址来支持多个虚拟主机,便可用基于名字的虚拟主机方案, & s3 t6 Y  Z* c1 T+ A& O
若是在内部网段上,你有较多的内部保留IP地址,将没有太大的区别。 : B8 k# w9 L, F: z
提示:上面所提到的相对目录可以用绝对路径代替,如: ; N* ~+ c' {! |, X/ H, \
/home/httpd/hr.yourdomain.com 可改为 D:/Inetpub/wwwroot# d& v! [" N- ^% l) l% Q% r& r6 {
==================END=======================
4 q% b  }9 N; c& K) |这只是入门,只能保证你的WEB服务器能正常运,要了解更多的 PHP 及 Apache 的详细设置,还要靠大家更加深入的实践...

另外可以用一个安装包安装全部PHP软件. X; r/ G9 p: h
下载地址:* A8 @+ ]( i& }6 ~( R) ?$ l, I
http://webclub.net.cn/data/phpStudy1.2.5.rar

TOP

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