返回列表 发帖

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

前言:这一篇是我亲身配置的经历,希望大家喜欢,现在网络的教程中,PHP运行在Apache“模块”方式的文章中都少了最重要的一个步骤,也就是说按其方法配置PHP不能运行,有的太过简单,有的太过复杂,所以花了点时间整理一下。
, W( K! C( D; A; e1 C  y/ O3 }- s0 k! d  H6 j4 P
一、安装PHP4
2 i* G/ S" F7 ^5 C! `# V. x我们需要安装的是win32版本,下载当然也是win32版本 php4.3.0-win32.zip
% Q3 `7 f# |/ X# z8 G3 g1.下载后,解压到c:\php目录下。
5 z; d' M$ \5 d$ O) G' b5 \2. 把c:\php目录下的php4ts.dll php4ts.lib文件都拷贝到c:\winnt\system32目录下(即window 2000系统目录下的system32目录)。
) U8 T9 S( l0 P8 a. Q" f3. 修改php.ini文件,把c:\php目录下的php.ini-dist文件改名为php.ini 用记事本或其它可编辑文本的软件把它打开。
' k5 j4 u$ Q  h) I# ^  o3.1找到register_globals = Off 改为register_globals = On+ J" p, H1 ~$ l
这一步是为了使部分旧的PHP程序能正常运行;. B* }/ A0 Y0 r3 G
3.2找到 extension_dir = ./ 把它改为extension_dir = c:\php\extensions
4 Y& p/ G* V! F1 @. P3 D以下内容新手请略过
" w" u  S" S. i& G* d1 K===============新手略过开开始================0 _$ N. ~; ~3 \# t% b7 s  C
刚刚的修改是指定php4扩展dll文件存放的路径 由于php4默认所带的php.ini-dist中,是关掉了所有的扩展dll的功能( Windows Extensions)
8 B, M0 r, ^7 k. v;extension=php_bz2.dll
$ \3 E: Q% z% Y;extension=php_cpdf.dll
' ~% L/ M5 m" ^2 m# p! E;extension=php_crack.dll
2 o: b& z6 Y/ P; j. R7 m# Z" a;extension=php_curl.dll" B! y* A  P+ _7 G
..... . o4 g3 }1 f; u3 |5 Z
要做的就是把extension前面的分号去掉就行了,当然这样是不够的。因为有些extension在我们的系统是不能使用的,比如系统中没有安装 sql server的话,那么extension=php_mssql.dll就要用;(分号)把它注释掉;: A1 J- [+ [2 L' H- S$ t
其中,PHP4带了两个GD扩展,请选用一个,另一个先用分号注释掉,以免出现函数无法注册的错误;
/ I, p/ g% {* V如下面* g3 l- P# H$ v: s2 u& ~- ]1 _
extension=php_gd.dll
" Z( b) x+ _) H; g/ b# `;extension=php_gd2.dll9 o8 E3 g5 y# H' ^! T* w
按实际所须的extension=php_xxxx.dll前面的分号都去掉。1 D$ H# u$ `* f# A$ \
=============新手略过结束================
7 B5 s9 W: l; c  ]3.3 找到session.save_path,把这一项改为 session.save_path = c:\tmp% v. l8 g8 Q9 u" {4 U
并在C盘建立一个TMP目录
0 N, g! u) y0 U. Y3.4记得要保存刚刚的修改 并把php.ini文件放置在c:\winnt目录下。
9 ^% i: {4 g) B0 _# j- v" n  e4 \+ N================================================
5 S$ ?! t8 o  q, n3 Q二、安装MySql- k9 Q6 k& B5 {. u6 Q* ?$ f6 {/ M
安装MySql 当然,我在MySql.com 下载的MySql是一个压缩包,要先解压出来;再点setup.exe安装;
( Z, V, g+ h: W" x; E. Z按默认安装,即安装在c:\MySql下,安装完后,按“开始”菜单中的“运行”打进cmd进入dos窗口,进到c:\MySql\bin 目录;
& p7 V4 Z4 R8 F% n" v  C) ^2 {运行mysqld-nt --install (将会出现一个Dos窗口,随即自动关闭!如果没有出任何信息,即安装到service成功!) 8 E% R! v+ m& v
从“开始”菜单“程序”=》“管理工具”=》“服务”,打开后,将会找到MySql,点击mouse右键 选择启动 回到刚刚的Dos窗口3 ^! ]6 B7 k. M. X1 F0 X) C
即c:\MySql\bin目录下 运行mysqladmin -u root password 123 即把root用户的密码设置为123 这一步,如果没有出错,说明初始化root密码成功;
: t6 G6 |& o* s# e3 H  G) A& Y当然从本机进入MySql是不需要用户名和密码,但用php 程序或是其它程序连接MySql时就要用到;+ E+ r8 A! B- W- k. ?
测试进入 第一种方法:直接动行MySql进入MySql 的dos管理状态;
% }8 @$ f0 Y5 N6 n第二种方法:运行MySql -uroot -p MySql将会提示让您输入密码,密码当然就是刚刚设置的123(当然,得按设置的密码喽,不一定得设置是123). s8 B! o0 [. u: x. G
出现: 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>
# O8 B8 O. f$ u" q+ [8 q即安装MySql成功。1 Q  y8 `- m' ?8 y. z% w& k% n
==========================================6 _( F& V  Q! A; D  I& a. D
三、安装Apache 1.3.x 及 PHP运行设置4 I/ A3 x' `5 I, i0 w0 H
1.首先下载Apache,Apache软件一般叫作apache_1_3_x.win32.exe。运行它。它会问你将Apache安装到什么地方,为他系统安全及操作容易,我们不要使用默认路径,你可以设为c:\Apache或C:\,因为马上你就要修改它的配置文件。* f" ^8 P7 ~' W6 S  I- P; `
如果安装没出什么错的话,Apache就可以用了。有很多readme文件可供参考,但仅有一个文件是讲Win32平台的,包括Window 9x和Windows NT。
. ~+ z6 d. B) @* ?1 M8 Y有两种方式使 PHP 工作于 Windows 下的 Apache 1.3.x。一种是 CGI 方式(php.exe),另一种是使用 Apache 模块 DLL。不管哪种方式都需要停止 Apache,编辑 httpd.conf 来配置 Apache 以加入PHP支持。 3 W2 R" Z" x9 z& [  p6 w
值得在这里指出现在 Windows 下的 SAPI 模块更加稳定了,我们推荐使用模块方式,因为更加透明和安全。 ' E. A: c+ u8 E+ R. ^& S
尽管有几种不同方法在 Apache 下配置 PHP,但是对新手来说还是非常简单易用的。有关更多的 httpd.conf 配置指令请参考 Apache 文档。 ) x6 D* f$ b# O
如果你按照手工安装步骤一节中的说明把 PHP 解压缩到了 c:\php\ 目录下,那么需要加入以下三行到 Apache 配置文件中以 CGI 方式安装: 3 ~# O5 N# U3 A3 I$ s* O3 Q: I

$ c/ ]% G) F6 n* h1 ^2 ?3 V& zScriptAlias /php/ "c:/php/"
# G/ V. ~7 }2 `( Y3 YAddType application/x-httpd-php .php .phtml
  x& _6 r; \7 w9 O% H, IAction application/x-httpd-php "/php/php.exe"
: l; B) P/ k: |' ]( J注意上面的第二行在原来的 httpd.conf 中就有的,不过被注释了。还有记住用你自己放置 PHP 的路径替换 c:/php/。
8 n& y* `0 ^* L# W/ g) \; ?& R2 L" F) Z' H' X7 R
警告
. Y# i# E# K$ X在 CGI 方式下,你的服务器可能会受到几种攻击的影响。请学习如何防止攻击。
' g8 P" l: u( w7 l4 ?
! s( J+ r& |( L0 \如果你想在 Apache 中用模块方式使用 PHP,确认把 php4ts.dll 拷贝到 windows/system(Windows 9x/Me)或者 winnt/system32(Windows NT/2000)或者 windows/system32(Windows XP)目录下,覆盖原来的文件。然后在 Apache 配置文件 httpd.conf 中加入以下两行: 4 ]* r  w2 S& k  K) l

6 N! D! O* W( j6 |2 E, J* t用自己喜爱的编辑器打开 httpd.conf,找到 LoadModule 指令的部分,在其列表的最后部分加上如下一行,4 g1 i  C. c5 N8 r+ q
对 PHP 4:
/ g5 I& `5 i4 ~* C) b5 mLoadModule php4_module c:/php/sapi/php4apache.dll
! D/ n& Z0 W; e对 PHP 5:
# O0 W" V  C& J$ JLoadModule php5_module "c:/php/sapi/php5apache.dll"" I/ j7 j& O( n% f1 w' ^6 f
你可能发现在用 Windows Installer 安装了 Apache 之后需要为用 AddModule 指令定义 mod_php4.c。尤其是在定义了 ClearModuleList 指令时格外重要,向下滚动几行可以找到该指令。你将会看到 AddModule 项目的列表,在列表的最后加上这一行:7 g* P6 F+ @  N+ @9 F, d
AddModule mod_php4.c) p0 _# {% N7 C( C' X2 Q
对于 PHP 5 则为:" G- Y( u7 l8 T" A( [3 I6 M
AddModule mod_php5.c) t! B: }" K, M2 P' C: j
搜索类似 # AddType allows you to tweak mime.types 的短语,你会找到一些 AddType 的项目,并且在列表的最后有这一行: AddType application/x-httpd-php .php。你可以在这里选择任何想用 PHP 解析的后缀。.php 只是所建议的一个。甚至可以包括 .html,也可以加上 .php3 来向下兼容。
( Y: n& w3 Z" r' V2 C, C# S2 v; ~$ l7 w
修改了配置文件之后记住重新启动 Apache,例如如果你的 Apache 是作为 Windows 的服务安装的,NET STOP APACHE 后面接上 NET START APACHE。或者用你通常使用的快捷方式。 . e( c1 V. K$ Y
有两种方式使用源程序语法彩色显示特色,但是取决于你的安装方法。如果你配置了 Apache 的 SAPI 模块方式使用 PHP,那么在 httpd.conf 中(和插入 AddType application/x-httpd-php .php 是同一个位置)加入下面一行就可以使用本特色:AddType application/x-httpd-php-source .phps。
3 W3 ]3 w+ a: f* {如果你用 CGI 方式使用 PHP,那你需要用 show_source() 函数。建立一个 PHP 文件,加入以下代码:<?php show_source ("original_php_script.php"); ?>。用你想要显示源代码的文件名替换掉 original_php_script.php。
5 }* G( R8 ^! V' s: L% F7 R注: 在 Windows-Apache 组合中,所有路径中的反斜线例如 "c:\directory\file.ext" 都必须转换成斜线,如 "c:/directory/file.ext"。
  R% L3 M. \# d0 X6 Z6 I============================================# G$ G4 E! T. l
四、实现Apache虚拟主机的两种方案4 \& x3 O. B3 r1 d' {( T
简介:这里说的虚拟主机是指在一台机器上仅运行一个httpd后台程序 1 [( w1 b6 m" M- h8 i( t! \
支持多个Apache服务器,如在公司财务部门有一台web服务器,名为 + @) Z4 `& r  M9 a6 a3 E! S7 V" a
account.yourdomain.com,同时又想为sales部门建立网站,网站内容也 ( X' n9 p0 Z  T( i" X, K
放在该机器上,通过sales.yourdomain.com访问,这就要用到虚拟主机
( u7 C( ?% |; R* z, W设置。
% v/ E% S1 |( u( n# d/ {  u设置Apache虚拟主机通常有两种方案 - P5 z+ ?* D: i+ R/ i3 S
1.基于IP的虚拟主机
; F$ U/ p* R5 S! ^5 O0 t4 i  这种方式需要在机器上设置IP别名,象上面的例子,在一台机器的 + \7 H8 D3 J3 ^2 Z8 X+ W7 C6 Q& j
网卡上绑定多个IP地址去服务多个虚拟主机。 : t4 [+ t$ Q& y, {4 l! [
若该机器的IP地址为192.168.0.1(account.yourdomain.com),首先
, I) g- n; G, f1 c8 z* P5 i你要设置IP别名(假设用192.168.0.2作为其别名IP)。加下面的行到
3 g7 Y* b5 X& i- ]9 s/etc/rc.d/rc.local,确保每次启动后自动运行。
2 {1 [! D5 F# Y7 Q. E! G#/sbin/ifconfig eth0:0 192.168.0.2 netmask 255.255.255.0 broadcast \ 1 S. \0 f' r" s7 J. z9 S# I
192.168.0.255 up
( k) m# S  w6 _9 ~7 {9 p#/sbin/route add -host 192.168.0.2 eth0:0 4 M( p$ d  V& X/ K% F
然后你需要设置/etd/httpd/conf/httpd.conf文件: 7 U& d, K! \  a2 l5 h
<VirtualHost 192.168.0.2> : P- z8 |: a% F6 }' R3 N9 i) C
ServerAdmin webmaster@yourdomain.com 7 M5 {/ t/ G8 {! I- }
DocumentRoot /home/httpd/sales.yourdomain.com 4 ~  f5 [. V5 e' F' ~/ X' S
ServerName sales.yourdomain.com
) U- X1 H) V" j& ]! qErrorLog /var/log/httpd/sales.yourdomain.com/error_log $ }% x& M: b) o. H# d
TransferLog /var/log/httpd/sales.yourdomain.com/access_log . k$ b: c4 X* h; m
</VirtualHost>
0 q9 _. W& `5 \! l! E) `然后分别创建目录 ( r! K$ @3 k$ N& _
/home/httpd/sales.yourdomain.com, 3 M& G) L, X' `$ D! t+ u! L
/var/log/httpd/sales.yourdomain.com
4 J, n1 D2 q9 G1 X放相应的网站内容到目录/home/httpd/sales.yourdomain.com下即可,并确保
9 K! G) [1 \* M% y/ P; O. E你内部的DNS指定sales.yourdomain.com的A记录到IP地址192.168.0.2 。 # K$ P: X! o4 ~7 Y
注:这种基于IP的虚拟主机有一个缺点,就是你需要更多的IP地址去服务各自的 $ W/ U; F. {2 l7 g# \
虚拟主机,如果你仅仅有一个IP地址,那么你将可以考虑用基于名字的虚拟主机 , \# b$ Y, M9 f
方案。
& L. F: d6 N: j& F2 C9 U0 Y7 x3 f  C* g) ^; R
2.基于名字的虚拟主机: . c( A: g( Z) \8 E% L
  它的优势就是不需要更多的IP地址,容易配置,不需要其它软硬件,现代的 4 A$ f! a2 T1 R- g& y+ N* c0 K
浏览器大多都支持这种方式。与基于IP的虚拟主机一样,你需要编辑文件 ( c, g, J. I( p$ j& |+ U
/etc/httpd/conf/httpd.conf 5 C" g' m/ h6 o& v$ d8 Y7 `
NameVirtualHost 192.168.0.1
& R1 |3 ~5 g9 X8 ]  `* v<VirtualHost 192.168.0.1> ! q% |& C# ]0 D2 }7 t. |
ServerAdmin webmaster@yourdomain.com
9 k. E" w" B  @4 I/ ?DocumentRoot /home/httpd/sales.yourdomain.com ) a! @  U3 q) i0 k  f
ServerName sales.yourdomain.com
" t9 w% L" ^- H7 T, j6 jErrorLog /var/log/httpd/sales.yourdomain.com/error_log
" K  C, z/ a: B& a" w) H) Y" J/ FTransferLog /var/log/httpd/sales.yourdomain.com/access_log
- E7 m. S3 Y* `2 a3 Z1 q</VirtualHost> ' p% o! N/ R1 c+ u
<VirtualHost 192.168.0.1>
6 X/ X& L. r4 ]# l  FServerAdmin webmaster@yourdomain.com * D; Y; {# o' ]0 j
DocumentRoot /home/httpd/hr.yourdomain.com 8 ^6 R( C5 A" ^1 V# V2 p. \) o
ServerName hr.yourdomain.com , w! q& c# r+ d) E! l
ErrorLog /var/log/httpd/hr.yourdomain.com/error_log
& E* `6 k1 R+ {" J3 b/ [TransferLog /var/log/hr.yourdomain.com/access_log
  |) L$ J9 w! s5 m, V8 ~</VirtualHost>
+ N. `) z% d: u注: 你需要加NameVirtualHost 指示在最前面,下面依次为各个虚拟主机,
6 @+ Z* L8 H) e; }1 b# `) Q为了让它工作,你需要把sales.yourdomain.com, hr.yourdomain.com的DNS
4 B+ v# z( p# D4 ~7 [& u都指向IP地址192.168.0.1 % G. m5 m* c; Y( G4 w
上面的两种都将工作,如果是在外部网段,在互联网上提供WWW服务,你可能 : u9 Y/ {( d9 H% Z
没有足够的真实IP地址来支持多个虚拟主机,便可用基于名字的虚拟主机方案,
- Q# {9 c& N" k5 j. s' h若是在内部网段上,你有较多的内部保留IP地址,将没有太大的区别。
) R! c4 O3 y9 q$ Z, O. j提示:上面所提到的相对目录可以用绝对路径代替,如:
8 e. R$ e( J) Z5 z/ T: f/home/httpd/hr.yourdomain.com 可改为 D:/Inetpub/wwwroot
! n  o3 ?$ k7 P  j7 G==================END=======================9 D$ |  N, {" f  k& y/ t
这只是入门,只能保证你的WEB服务器能正常运,要了解更多的 PHP 及 Apache 的详细设置,还要靠大家更加深入的实践...

另外可以用一个安装包安装全部PHP软件6 Z) @" K; H9 M- e
下载地址:
' Y0 `' y2 j. m4 D) J; }% [http://webclub.net.cn/data/phpStudy1.2.5.rar

TOP

亲娘那  h# T2 }% N6 Q* N
怎么没图哈
; R$ W0 F2 V* F+ w  r! M应该图文结合啊! V( n) v" v* s5 H+ S

TOP

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