返回列表 发帖

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

前言:这一篇是我亲身配置的经历,希望大家喜欢,现在网络的教程中,PHP运行在Apache“模块”方式的文章中都少了最重要的一个步骤,也就是说按其方法配置PHP不能运行,有的太过简单,有的太过复杂,所以花了点时间整理一下。
! U* L- q1 O4 X, j8 X  ]* ?8 k6 U
一、安装PHP4
: L: v& G3 o1 b3 u我们需要安装的是win32版本,下载当然也是win32版本 php4.3.0-win32.zip! r" X& E5 w7 L) e1 H) T4 q
1.下载后,解压到c:\php目录下。
' A" n( B+ w6 K4 T. P* M2. 把c:\php目录下的php4ts.dll php4ts.lib文件都拷贝到c:\winnt\system32目录下(即window 2000系统目录下的system32目录)。' q, w" X3 U4 @; i" j1 U! ~" l
3. 修改php.ini文件,把c:\php目录下的php.ini-dist文件改名为php.ini 用记事本或其它可编辑文本的软件把它打开。
+ O, ?* `' _; W3.1找到register_globals = Off 改为register_globals = On
4 E- `7 _& W& V) O) ~这一步是为了使部分旧的PHP程序能正常运行;
" D0 N$ g- n% n+ }0 e$ y; o* e0 L3.2找到 extension_dir = ./ 把它改为extension_dir = c:\php\extensions+ j" v/ A$ H' Z# t" F+ |; J- H- W# Q
以下内容新手请略过" b  q" ]* W2 m  ?4 C; @- x9 R2 |
===============新手略过开开始================5 C; b4 q" m9 T' E. m0 F+ Q( Q$ F$ T
刚刚的修改是指定php4扩展dll文件存放的路径 由于php4默认所带的php.ini-dist中,是关掉了所有的扩展dll的功能( Windows Extensions)
1 F, _6 y- I% i3 P8 r- {;extension=php_bz2.dll: W4 T3 ?) G3 R% J" S
;extension=php_cpdf.dll
+ Q* X$ {! q% v. r$ R;extension=php_crack.dll
4 B6 ?4 v+ l+ @9 [1 I;extension=php_curl.dll6 N3 }9 @1 S& `) P
..... 1 ~; M4 b& M# U- A* j  ^
要做的就是把extension前面的分号去掉就行了,当然这样是不够的。因为有些extension在我们的系统是不能使用的,比如系统中没有安装 sql server的话,那么extension=php_mssql.dll就要用;(分号)把它注释掉;
  v  \/ c, i4 A其中,PHP4带了两个GD扩展,请选用一个,另一个先用分号注释掉,以免出现函数无法注册的错误;. ^3 `: N! c2 \/ j( X  j
如下面
. k( z8 d3 p- y2 {5 S+ Xextension=php_gd.dll1 I# |! q: ?( x5 _
;extension=php_gd2.dll. T6 F! _, B6 Y  V- y
按实际所须的extension=php_xxxx.dll前面的分号都去掉。7 `5 x* s+ C& S) _  W) s4 C% a9 v
=============新手略过结束================
" F9 s- J6 B7 U7 t& U" r8 J3.3 找到session.save_path,把这一项改为 session.save_path = c:\tmp- X  ]9 u( f' R  \
并在C盘建立一个TMP目录/ U  P) G6 I0 K3 D4 L
3.4记得要保存刚刚的修改 并把php.ini文件放置在c:\winnt目录下。9 {  J% j$ Y* i. i2 n
================================================2 G; w. K+ S' F1 ^% Y. Z
二、安装MySql9 W! m2 v, R" W- I" _" W; N2 u# a
安装MySql 当然,我在MySql.com 下载的MySql是一个压缩包,要先解压出来;再点setup.exe安装;4 a! \( |* L) {. S: d3 V
按默认安装,即安装在c:\MySql下,安装完后,按“开始”菜单中的“运行”打进cmd进入dos窗口,进到c:\MySql\bin 目录;
8 i2 }. E2 U- H! i& b! J+ W/ r; p% W运行mysqld-nt --install (将会出现一个Dos窗口,随即自动关闭!如果没有出任何信息,即安装到service成功!) . Z: m* c, Q  E: O3 Q; l: o/ n
从“开始”菜单“程序”=》“管理工具”=》“服务”,打开后,将会找到MySql,点击mouse右键 选择启动 回到刚刚的Dos窗口/ H& R, S- u) W6 k2 Q) S4 \
即c:\MySql\bin目录下 运行mysqladmin -u root password 123 即把root用户的密码设置为123 这一步,如果没有出错,说明初始化root密码成功;
- g& l/ a' ?- V) G# Y0 }( E当然从本机进入MySql是不需要用户名和密码,但用php 程序或是其它程序连接MySql时就要用到;
% d' q# I4 m4 S+ I0 }5 }! R测试进入 第一种方法:直接动行MySql进入MySql 的dos管理状态;
# A: C2 z" K( i5 U( ~第二种方法:运行MySql -uroot -p MySql将会提示让您输入密码,密码当然就是刚刚设置的123(当然,得按设置的密码喽,不一定得设置是123)8 L+ |' @4 L  V
出现: 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> 0 Z8 M7 y7 w' C! l4 \4 Y; |2 c& H: r6 [
即安装MySql成功。4 I# j1 k  I3 i- r% R
==========================================
/ J  `. ]& }, e- z, a. I三、安装Apache 1.3.x 及 PHP运行设置
7 ?& H) {; `5 t. F$ [1.首先下载Apache,Apache软件一般叫作apache_1_3_x.win32.exe。运行它。它会问你将Apache安装到什么地方,为他系统安全及操作容易,我们不要使用默认路径,你可以设为c:\Apache或C:\,因为马上你就要修改它的配置文件。
6 ~* u) H  ^+ k1 I) w6 ?1 z) @如果安装没出什么错的话,Apache就可以用了。有很多readme文件可供参考,但仅有一个文件是讲Win32平台的,包括Window 9x和Windows NT。
9 o' a; a% ^8 j' |3 Z" L! O有两种方式使 PHP 工作于 Windows 下的 Apache 1.3.x。一种是 CGI 方式(php.exe),另一种是使用 Apache 模块 DLL。不管哪种方式都需要停止 Apache,编辑 httpd.conf 来配置 Apache 以加入PHP支持。 0 R( b3 h4 A0 K0 A
值得在这里指出现在 Windows 下的 SAPI 模块更加稳定了,我们推荐使用模块方式,因为更加透明和安全。 # G  l) C: l7 }" r
尽管有几种不同方法在 Apache 下配置 PHP,但是对新手来说还是非常简单易用的。有关更多的 httpd.conf 配置指令请参考 Apache 文档。
/ p) y' k4 R! k3 a. M" ?0 j& M& b1 x, W如果你按照手工安装步骤一节中的说明把 PHP 解压缩到了 c:\php\ 目录下,那么需要加入以下三行到 Apache 配置文件中以 CGI 方式安装: " a1 M  q6 b% e) N2 ?

. A$ K0 \: T/ vScriptAlias /php/ "c:/php/"
! H* u$ A8 p- o) O. ~3 c1 xAddType application/x-httpd-php .php .phtml . ~* X6 W3 `9 a* T5 a! F2 y3 @
Action application/x-httpd-php "/php/php.exe"
5 _1 s8 m$ |( v2 Q/ R' ?2 N注意上面的第二行在原来的 httpd.conf 中就有的,不过被注释了。还有记住用你自己放置 PHP 的路径替换 c:/php/。
1 R# O2 b6 _8 a. b6 N" k7 ?1 e, t7 o
警告
7 L5 F- z% _1 X" L2 u# h在 CGI 方式下,你的服务器可能会受到几种攻击的影响。请学习如何防止攻击。
$ _$ E- E3 {, j! ?) w$ k
6 y" X' M5 P; {$ Y7 n' p! r6 I0 ]如果你想在 Apache 中用模块方式使用 PHP,确认把 php4ts.dll 拷贝到 windows/system(Windows 9x/Me)或者 winnt/system32(Windows NT/2000)或者 windows/system32(Windows XP)目录下,覆盖原来的文件。然后在 Apache 配置文件 httpd.conf 中加入以下两行:
' \5 a* G8 t. N. g* P6 D
6 M8 [9 C7 |7 S; d; R% O5 [( K用自己喜爱的编辑器打开 httpd.conf,找到 LoadModule 指令的部分,在其列表的最后部分加上如下一行,1 t* g  m$ i5 b! n  u4 K5 Q
对 PHP 4:
$ Y) q/ ?7 Z4 ^) K7 }LoadModule php4_module c:/php/sapi/php4apache.dll  P! d' h" G2 V9 e  p; G4 r+ g; x
对 PHP 5:
6 ]  A0 m3 Y1 _# T% n1 RLoadModule php5_module "c:/php/sapi/php5apache.dll"
; e0 U4 y8 X3 c9 ~+ O你可能发现在用 Windows Installer 安装了 Apache 之后需要为用 AddModule 指令定义 mod_php4.c。尤其是在定义了 ClearModuleList 指令时格外重要,向下滚动几行可以找到该指令。你将会看到 AddModule 项目的列表,在列表的最后加上这一行:- p* D' e1 g* g9 z' z, T# Y
AddModule mod_php4.c0 d" r+ w$ k0 C4 @; _2 ~
对于 PHP 5 则为:
# i0 V: }: \) G% C2 A& @AddModule mod_php5.c+ v5 M+ l) Q, M( ~) f2 }; [& b3 P
搜索类似 # AddType allows you to tweak mime.types 的短语,你会找到一些 AddType 的项目,并且在列表的最后有这一行: AddType application/x-httpd-php .php。你可以在这里选择任何想用 PHP 解析的后缀。.php 只是所建议的一个。甚至可以包括 .html,也可以加上 .php3 来向下兼容。 - F* Q' k8 n: b5 H/ A

1 N) L9 p2 J3 O修改了配置文件之后记住重新启动 Apache,例如如果你的 Apache 是作为 Windows 的服务安装的,NET STOP APACHE 后面接上 NET START APACHE。或者用你通常使用的快捷方式。 2 ?+ E% h* A  H0 s, p. D
有两种方式使用源程序语法彩色显示特色,但是取决于你的安装方法。如果你配置了 Apache 的 SAPI 模块方式使用 PHP,那么在 httpd.conf 中(和插入 AddType application/x-httpd-php .php 是同一个位置)加入下面一行就可以使用本特色:AddType application/x-httpd-php-source .phps。
6 O, C; A  [/ ~' G2 b如果你用 CGI 方式使用 PHP,那你需要用 show_source() 函数。建立一个 PHP 文件,加入以下代码:<?php show_source ("original_php_script.php"); ?>。用你想要显示源代码的文件名替换掉 original_php_script.php。
4 d% }0 C. E; V' d注: 在 Windows-Apache 组合中,所有路径中的反斜线例如 "c:\directory\file.ext" 都必须转换成斜线,如 "c:/directory/file.ext"。+ I7 f7 y4 ?) W7 }9 p
============================================; R! R3 K" d; z' F" d
四、实现Apache虚拟主机的两种方案# V8 D+ ^+ u) K3 \* O
简介:这里说的虚拟主机是指在一台机器上仅运行一个httpd后台程序 4 N& Y( i7 ]2 e. I; O
支持多个Apache服务器,如在公司财务部门有一台web服务器,名为 # ~! [. Z6 ^! }" I/ z
account.yourdomain.com,同时又想为sales部门建立网站,网站内容也 . K; n" E$ Y, b* m2 C  e" G. |- s
放在该机器上,通过sales.yourdomain.com访问,这就要用到虚拟主机 ( |( L$ Q' n5 J3 Y9 a: O
设置。 # H8 C- E( r1 ~% W( U6 \
设置Apache虚拟主机通常有两种方案
6 C. u2 j- g' n6 f. B1.基于IP的虚拟主机
+ l" W' [2 T* H9 s  这种方式需要在机器上设置IP别名,象上面的例子,在一台机器的 0 Q% Y& u% ~" c2 m- n2 m# A9 m
网卡上绑定多个IP地址去服务多个虚拟主机。 8 y) |! x! e6 I! {
若该机器的IP地址为192.168.0.1(account.yourdomain.com),首先 ! \/ X% X5 a' ~$ \8 `" S) \
你要设置IP别名(假设用192.168.0.2作为其别名IP)。加下面的行到 8 k# M' G4 b; Q
/etc/rc.d/rc.local,确保每次启动后自动运行。
8 w9 Q) I" N! j/ \! R4 C#/sbin/ifconfig eth0:0 192.168.0.2 netmask 255.255.255.0 broadcast \
0 L4 a- F. C. \: y9 P6 S: |192.168.0.255 up % ]  o  z# {( o9 X( H9 g
#/sbin/route add -host 192.168.0.2 eth0:0
/ u. G4 j$ P6 w( f6 [# g2 `然后你需要设置/etd/httpd/conf/httpd.conf文件: 2 j( Y4 b2 E" F% U, v; r1 U
<VirtualHost 192.168.0.2> 2 ~- h) r6 {" r* s
ServerAdmin webmaster@yourdomain.com
& ^( I- `/ Y4 Z0 t, p) BDocumentRoot /home/httpd/sales.yourdomain.com : G  w0 m2 B3 N% t
ServerName sales.yourdomain.com 8 H' X  k! u) M( P- @
ErrorLog /var/log/httpd/sales.yourdomain.com/error_log
$ @/ @; B  o$ Z' bTransferLog /var/log/httpd/sales.yourdomain.com/access_log
8 q! u1 r4 m+ _7 z1 s+ Z! ]</VirtualHost>
( e& k0 W* I, V; J1 q然后分别创建目录
5 H/ x" J8 y; E$ Q3 @- e$ ^+ c6 ]/home/httpd/sales.yourdomain.com,
+ ?1 {+ f" P! `( }/var/log/httpd/sales.yourdomain.com
- T$ n) q" n; m0 f放相应的网站内容到目录/home/httpd/sales.yourdomain.com下即可,并确保
$ v, ~  k, d9 |' n/ p3 U你内部的DNS指定sales.yourdomain.com的A记录到IP地址192.168.0.2 。
- X8 L( k/ x, G; s4 i$ f注:这种基于IP的虚拟主机有一个缺点,就是你需要更多的IP地址去服务各自的
8 j& I- y3 t) i虚拟主机,如果你仅仅有一个IP地址,那么你将可以考虑用基于名字的虚拟主机
; g, I( w; c% _" T$ N/ F! G方案。
4 w! n5 g3 x, w( X& l3 m. C+ j( F' t0 G
2.基于名字的虚拟主机:
8 a/ `( X; G! i  h: z1 ^  它的优势就是不需要更多的IP地址,容易配置,不需要其它软硬件,现代的 : {$ H7 _$ ?! J* B+ S* r
浏览器大多都支持这种方式。与基于IP的虚拟主机一样,你需要编辑文件
8 n! x6 W( G& r+ ?$ l/etc/httpd/conf/httpd.conf
- Y& W5 q6 ~  c) L0 e( S+ R4 TNameVirtualHost 192.168.0.1
8 t. N% N4 \* S$ x6 t' E  ]<VirtualHost 192.168.0.1> ( n" ]: J: B  Q: d; g7 {
ServerAdmin webmaster@yourdomain.com
/ }% {: ^; g4 j, b' J/ UDocumentRoot /home/httpd/sales.yourdomain.com
8 c0 J2 F, V# j6 q7 yServerName sales.yourdomain.com 1 l' Q# I2 r- e3 m1 A
ErrorLog /var/log/httpd/sales.yourdomain.com/error_log
" F# R- c# F6 s0 Q* J: k: o2 tTransferLog /var/log/httpd/sales.yourdomain.com/access_log
4 ?3 [2 c2 [8 E, s6 c6 [& E</VirtualHost>
  l6 p" o1 v7 h+ \<VirtualHost 192.168.0.1>
& Q. ^$ T+ R( G. }2 ~2 H* OServerAdmin webmaster@yourdomain.com
4 k8 N1 k1 p( A% k8 _& XDocumentRoot /home/httpd/hr.yourdomain.com
6 ^9 N" C9 g, AServerName hr.yourdomain.com 9 f, V" P3 C" v$ B
ErrorLog /var/log/httpd/hr.yourdomain.com/error_log
1 L8 Y; T& [6 n4 f, ~9 v, MTransferLog /var/log/hr.yourdomain.com/access_log $ n; ?' G4 W: w8 M1 S! i$ F
</VirtualHost> % ~* x- g: v# r& Y) p
注: 你需要加NameVirtualHost 指示在最前面,下面依次为各个虚拟主机, 4 I" j7 p5 y6 x( J5 X
为了让它工作,你需要把sales.yourdomain.com, hr.yourdomain.com的DNS & p0 \  Y' c; l* E! H: @5 k! v: _7 M
都指向IP地址192.168.0.1 7 d% E, l2 b% \$ y, P6 l) n
上面的两种都将工作,如果是在外部网段,在互联网上提供WWW服务,你可能
: ]- u/ o# J/ u/ L5 E, z' a没有足够的真实IP地址来支持多个虚拟主机,便可用基于名字的虚拟主机方案,
& n* d0 u) [7 X$ g. X, K; Y2 Y若是在内部网段上,你有较多的内部保留IP地址,将没有太大的区别。
* _- P! X  b. Z& N; Q提示:上面所提到的相对目录可以用绝对路径代替,如:
6 k( \8 ?* T6 m5 l2 R- M/home/httpd/hr.yourdomain.com 可改为 D:/Inetpub/wwwroot8 R" M9 \+ [) Q2 F2 |: l% t' }
==================END=======================
9 {4 V# Y5 k1 u: r) M! {. D0 @/ \# v这只是入门,只能保证你的WEB服务器能正常运,要了解更多的 PHP 及 Apache 的详细设置,还要靠大家更加深入的实践...

另外可以用一个安装包安装全部PHP软件
# |7 |5 ]' Z( v下载地址:
5 D3 h& L$ g1 c* Q% Ghttp://webclub.net.cn/data/phpStudy1.2.5.rar

TOP

亲娘那
! w- u0 g0 R4 w$ Y怎么没图哈2 |0 i. A3 S8 S% M9 Q3 l
应该图文结合啊
0 x( o8 \& L" p+ ]1 J

TOP

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