返回列表 发帖

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

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

/ j& D1 \) k+ x  }* r" P# H一、安装PHP4
; |- d; y! x8 S" b$ i4 Z# f  F我们需要安装的是win32版本,下载当然也是win32版本 php4.3.0-win32.zip# P. |! p- X# Q! g  r8 b# a
1.下载后,解压到c:\php目录下。) X) d' l( n; r) `
2. 把c:\php目录下的php4ts.dll php4ts.lib文件都拷贝到c:\winnt\system32目录下(即window 2000系统目录下的system32目录)。( i1 e3 W* g0 f2 x4 i# G' }1 b
3. 修改php.ini文件,把c:\php目录下的php.ini-dist文件改名为php.ini 用记事本或其它可编辑文本的软件把它打开。
! C0 U' b; K# `& m; g4 \3.1找到register_globals = Off 改为register_globals = On
- X7 m' A6 o  C, n2 p这一步是为了使部分旧的PHP程序能正常运行;
- F% K- g6 V4 `; f9 Z3.2找到 extension_dir = ./ 把它改为extension_dir = c:\php\extensions+ I9 ?0 h( z# A( [3 f$ q# Y/ }
以下内容新手请略过+ X2 S; w9 ^; h
===============新手略过开开始================
7 |! I. d7 X8 G( }+ b$ e3 R刚刚的修改是指定php4扩展dll文件存放的路径 由于php4默认所带的php.ini-dist中,是关掉了所有的扩展dll的功能( Windows Extensions)
! N; w( a( h: E. n% W5 y; I;extension=php_bz2.dll' x& T2 ?$ V% g+ x) |+ M
;extension=php_cpdf.dll0 }7 Q. }# D- I$ u
;extension=php_crack.dll1 k2 I) t- Y& O9 R, I8 b) `6 X& l
;extension=php_curl.dll
6 d  ^3 f) B& }) r, c1 W2 c.....
! g4 j8 u+ ]# L' A; |要做的就是把extension前面的分号去掉就行了,当然这样是不够的。因为有些extension在我们的系统是不能使用的,比如系统中没有安装 sql server的话,那么extension=php_mssql.dll就要用;(分号)把它注释掉;
8 _/ n1 T3 _( ~. w; d! u( D其中,PHP4带了两个GD扩展,请选用一个,另一个先用分号注释掉,以免出现函数无法注册的错误;5 p/ ~+ F! ?! U2 _# Y
如下面
  F$ K% b7 ?/ z9 _. z, \0 n# Sextension=php_gd.dll
% X  Z, k; L/ c6 u1 }2 W;extension=php_gd2.dll
% t* @' J; s+ I) [# b/ `按实际所须的extension=php_xxxx.dll前面的分号都去掉。# e/ w! s' E. U2 r$ O- I+ A
=============新手略过结束================5 m/ I4 H$ u% {. ^
3.3 找到session.save_path,把这一项改为 session.save_path = c:\tmp
1 A7 ]' e" n+ p, N, F/ w9 E并在C盘建立一个TMP目录& h1 Z* e% z* c' P, |5 K
3.4记得要保存刚刚的修改 并把php.ini文件放置在c:\winnt目录下。
" ~$ s1 ~$ T7 |4 z! Z  w( H================================================* L! [# v4 b  P( M, _, {1 H
二、安装MySql  [5 ]$ l& o  F5 J
安装MySql 当然,我在MySql.com 下载的MySql是一个压缩包,要先解压出来;再点setup.exe安装;
' y2 X( W! v/ J: G( i" z1 {; z按默认安装,即安装在c:\MySql下,安装完后,按“开始”菜单中的“运行”打进cmd进入dos窗口,进到c:\MySql\bin 目录;+ G  ?8 h; s2 {- N. n  e  T( m
运行mysqld-nt --install (将会出现一个Dos窗口,随即自动关闭!如果没有出任何信息,即安装到service成功!)
9 ?' \( I9 t5 m+ ]从“开始”菜单“程序”=》“管理工具”=》“服务”,打开后,将会找到MySql,点击mouse右键 选择启动 回到刚刚的Dos窗口
0 m  n# `& M* E1 m8 T2 Y! y. G即c:\MySql\bin目录下 运行mysqladmin -u root password 123 即把root用户的密码设置为123 这一步,如果没有出错,说明初始化root密码成功;
) k( V' ~* B- H当然从本机进入MySql是不需要用户名和密码,但用php 程序或是其它程序连接MySql时就要用到;  P- \, o) Y- R+ _6 F! N" q% f3 b
测试进入 第一种方法:直接动行MySql进入MySql 的dos管理状态;  _7 X. t! Q+ A! i7 n+ i/ @: e
第二种方法:运行MySql -uroot -p MySql将会提示让您输入密码,密码当然就是刚刚设置的123(当然,得按设置的密码喽,不一定得设置是123)
: X! J% R1 T$ [+ 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> * ^1 @6 v) x: i9 J! B1 {* L* _
即安装MySql成功。3 W% c8 o+ s, O# {3 _
==========================================* C* h7 s* A6 V7 a4 Z
三、安装Apache 1.3.x 及 PHP运行设置
2 c8 K3 h1 b) q, o' P1.首先下载Apache,Apache软件一般叫作apache_1_3_x.win32.exe。运行它。它会问你将Apache安装到什么地方,为他系统安全及操作容易,我们不要使用默认路径,你可以设为c:\Apache或C:\,因为马上你就要修改它的配置文件。7 N# M7 |! i' q6 L) h& f
如果安装没出什么错的话,Apache就可以用了。有很多readme文件可供参考,但仅有一个文件是讲Win32平台的,包括Window 9x和Windows NT。
3 i& u0 `7 D& w- x" ?5 E5 K$ g3 R有两种方式使 PHP 工作于 Windows 下的 Apache 1.3.x。一种是 CGI 方式(php.exe),另一种是使用 Apache 模块 DLL。不管哪种方式都需要停止 Apache,编辑 httpd.conf 来配置 Apache 以加入PHP支持。
9 |1 F; d: C7 d9 X. q值得在这里指出现在 Windows 下的 SAPI 模块更加稳定了,我们推荐使用模块方式,因为更加透明和安全。 & |& S: S/ W6 }$ i
尽管有几种不同方法在 Apache 下配置 PHP,但是对新手来说还是非常简单易用的。有关更多的 httpd.conf 配置指令请参考 Apache 文档。 * H/ m9 ~$ J! Y5 y: e
如果你按照手工安装步骤一节中的说明把 PHP 解压缩到了 c:\php\ 目录下,那么需要加入以下三行到 Apache 配置文件中以 CGI 方式安装:
# }9 H, N2 R6 H7 r2 W2 y( \2 }
% T4 {6 B! z+ r/ O' pScriptAlias /php/ "c:/php/"
  {: Q5 \1 ^. h# IAddType application/x-httpd-php .php .phtml % Z, @# H4 R3 h  Q; j; t6 w
Action application/x-httpd-php "/php/php.exe"
" d1 \! E5 j. U0 j# M注意上面的第二行在原来的 httpd.conf 中就有的,不过被注释了。还有记住用你自己放置 PHP 的路径替换 c:/php/。
0 u, w0 j- @% i7 P  C' k/ g7 \) h$ `) Z5 I2 B) r( ?0 ?3 s
警告
' I5 t4 g8 H$ `% U# ^在 CGI 方式下,你的服务器可能会受到几种攻击的影响。请学习如何防止攻击。 4 O% ^3 o7 y' D9 [& u/ S+ q) b

8 y" v* ^3 A- y& @0 R0 z如果你想在 Apache 中用模块方式使用 PHP,确认把 php4ts.dll 拷贝到 windows/system(Windows 9x/Me)或者 winnt/system32(Windows NT/2000)或者 windows/system32(Windows XP)目录下,覆盖原来的文件。然后在 Apache 配置文件 httpd.conf 中加入以下两行:
+ ^: j/ H9 H( B' h' b
8 S! }" O: q  ?用自己喜爱的编辑器打开 httpd.conf,找到 LoadModule 指令的部分,在其列表的最后部分加上如下一行,
; T& y7 J: i( L5 j# Q对 PHP 4:, }, O# f  N. r9 j3 i6 h& x
LoadModule php4_module c:/php/sapi/php4apache.dll
* T5 y1 u' E, O5 R对 PHP 5:
2 \+ }1 J6 T' i% j, uLoadModule php5_module "c:/php/sapi/php5apache.dll"1 Z- u2 E& t  \8 N
你可能发现在用 Windows Installer 安装了 Apache 之后需要为用 AddModule 指令定义 mod_php4.c。尤其是在定义了 ClearModuleList 指令时格外重要,向下滚动几行可以找到该指令。你将会看到 AddModule 项目的列表,在列表的最后加上这一行:- {/ a" A7 Z# N9 C
AddModule mod_php4.c, o  L. A( I3 a1 ?& Y2 E3 U
对于 PHP 5 则为:" }$ e' |. _# \  F
AddModule mod_php5.c
% c  x3 p9 i. a% m, C( Q搜索类似 # AddType allows you to tweak mime.types 的短语,你会找到一些 AddType 的项目,并且在列表的最后有这一行: AddType application/x-httpd-php .php。你可以在这里选择任何想用 PHP 解析的后缀。.php 只是所建议的一个。甚至可以包括 .html,也可以加上 .php3 来向下兼容。
! s$ }! A0 M. f6 h9 ?9 S% a3 c" X+ K0 F& h( j
修改了配置文件之后记住重新启动 Apache,例如如果你的 Apache 是作为 Windows 的服务安装的,NET STOP APACHE 后面接上 NET START APACHE。或者用你通常使用的快捷方式。 " {  q3 ]! D% d/ E4 y
有两种方式使用源程序语法彩色显示特色,但是取决于你的安装方法。如果你配置了 Apache 的 SAPI 模块方式使用 PHP,那么在 httpd.conf 中(和插入 AddType application/x-httpd-php .php 是同一个位置)加入下面一行就可以使用本特色:AddType application/x-httpd-php-source .phps。
9 i" [, B  H' T1 z7 Q5 v0 |& D, m如果你用 CGI 方式使用 PHP,那你需要用 show_source() 函数。建立一个 PHP 文件,加入以下代码:<?php show_source ("original_php_script.php"); ?>。用你想要显示源代码的文件名替换掉 original_php_script.php。
3 g- \5 U+ f% X9 n! `, Q9 V; k注: 在 Windows-Apache 组合中,所有路径中的反斜线例如 "c:\directory\file.ext" 都必须转换成斜线,如 "c:/directory/file.ext"。7 ^# ?0 x+ X/ H$ C! I0 t# q$ z, W; z
============================================  n$ ^- T, l  \1 y; w$ X8 I
四、实现Apache虚拟主机的两种方案
+ w) y8 e! I, j# U+ A9 b* U简介:这里说的虚拟主机是指在一台机器上仅运行一个httpd后台程序
" M' D2 |8 ?7 b1 }支持多个Apache服务器,如在公司财务部门有一台web服务器,名为 9 u* d! x0 v$ e
account.yourdomain.com,同时又想为sales部门建立网站,网站内容也
- ]0 i  w/ F; D$ G' E放在该机器上,通过sales.yourdomain.com访问,这就要用到虚拟主机 , u8 r" o1 u- _& T5 B2 r
设置。 ( t3 S0 j% m; a0 P# q
设置Apache虚拟主机通常有两种方案 ) Q( t9 b; Q# t& J' W. n/ v( S, w
1.基于IP的虚拟主机 * d7 u5 g6 K7 c" T+ A$ C$ a* o
  这种方式需要在机器上设置IP别名,象上面的例子,在一台机器的
, `" w7 _5 |9 C  E6 Q! k网卡上绑定多个IP地址去服务多个虚拟主机。 7 L* }/ b0 U5 U# E( ^
若该机器的IP地址为192.168.0.1(account.yourdomain.com),首先 ) g4 y4 L" {# F" n- @
你要设置IP别名(假设用192.168.0.2作为其别名IP)。加下面的行到
  t$ B- b1 U" p9 Y1 r! b5 A/etc/rc.d/rc.local,确保每次启动后自动运行。 / v; v- A2 ^3 {- u8 C. N
#/sbin/ifconfig eth0:0 192.168.0.2 netmask 255.255.255.0 broadcast \ 4 Q& i( j$ V; u' a% J
192.168.0.255 up ) [2 S; H- @1 p$ {
#/sbin/route add -host 192.168.0.2 eth0:0
& s2 p% F' _& W# R$ z; J1 M! B' N6 f然后你需要设置/etd/httpd/conf/httpd.conf文件: * x7 [8 v: W7 G3 D3 I' C
<VirtualHost 192.168.0.2>
' _6 V  F* v3 XServerAdmin webmaster@yourdomain.com 4 E( F8 o  x' {" s8 X
DocumentRoot /home/httpd/sales.yourdomain.com
) v: O. t5 m7 ?: G. ^+ f) B5 E! iServerName sales.yourdomain.com
1 n5 ^9 i5 i5 g3 P0 F3 FErrorLog /var/log/httpd/sales.yourdomain.com/error_log
% f* ?- S, K$ g6 CTransferLog /var/log/httpd/sales.yourdomain.com/access_log + E# ^. x* s/ e  }
</VirtualHost> 5 u, S  ?8 A. e) r1 _
然后分别创建目录 3 k- h  L0 `8 w; n/ @& r5 C
/home/httpd/sales.yourdomain.com, " L, F) G/ ~4 x# W6 r3 S
/var/log/httpd/sales.yourdomain.com
4 Q) ^2 x8 H! w放相应的网站内容到目录/home/httpd/sales.yourdomain.com下即可,并确保
: n4 X# S* N+ x5 U0 {( P/ {你内部的DNS指定sales.yourdomain.com的A记录到IP地址192.168.0.2 。 4 ~( v/ O! K$ v0 A
注:这种基于IP的虚拟主机有一个缺点,就是你需要更多的IP地址去服务各自的
) i2 z% A: C2 \8 }& P4 U: F虚拟主机,如果你仅仅有一个IP地址,那么你将可以考虑用基于名字的虚拟主机
; `4 c2 R0 \  }3 I5 I  c2 `2 C+ p, h方案。 . q# T4 L5 i  v& k
- A. z7 @  j- g% @
2.基于名字的虚拟主机: . \* k/ I0 c# D$ Z
  它的优势就是不需要更多的IP地址,容易配置,不需要其它软硬件,现代的 ! `4 U! K  F! `) P' k
浏览器大多都支持这种方式。与基于IP的虚拟主机一样,你需要编辑文件
7 m! @. r4 s# u  i9 f3 G& N1 t/etc/httpd/conf/httpd.conf 0 X& y( A. Z  v
NameVirtualHost 192.168.0.1
$ h% O. f( s; p+ N<VirtualHost 192.168.0.1> 4 L, L0 r8 x# q" i* }
ServerAdmin webmaster@yourdomain.com
# i# E, {: f" @! R/ d( uDocumentRoot /home/httpd/sales.yourdomain.com
5 D- e1 X2 i$ s( BServerName sales.yourdomain.com + T' n  }0 l, B! b% q
ErrorLog /var/log/httpd/sales.yourdomain.com/error_log ; {$ P+ n4 U( k2 L) U& l2 C
TransferLog /var/log/httpd/sales.yourdomain.com/access_log
8 }4 a$ x. I" j1 R7 M</VirtualHost>
8 n* M" S. o5 Y8 `$ k4 o<VirtualHost 192.168.0.1>
1 G# P- N2 S9 K' h" UServerAdmin webmaster@yourdomain.com
9 F9 y5 a* x' x! c. xDocumentRoot /home/httpd/hr.yourdomain.com 5 l: G4 T+ x5 E0 H: m
ServerName hr.yourdomain.com - ~5 i. P" c. w2 @* s/ ~* i5 K  C9 ?0 O
ErrorLog /var/log/httpd/hr.yourdomain.com/error_log
4 R9 P( G) r0 A' m; y9 w* r+ E2 @TransferLog /var/log/hr.yourdomain.com/access_log ( q3 H  E% Z7 k! B
</VirtualHost>
% ]8 I3 t! Q  I: C注: 你需要加NameVirtualHost 指示在最前面,下面依次为各个虚拟主机,
- K% W) k* G( A* l$ k) R# J* n为了让它工作,你需要把sales.yourdomain.com, hr.yourdomain.com的DNS - a8 H( F  N5 Q  S; k7 k" x, S
都指向IP地址192.168.0.1 5 o8 M0 O) P4 X& v: y" j9 _
上面的两种都将工作,如果是在外部网段,在互联网上提供WWW服务,你可能 3 a' b1 L4 t2 Y# s2 o
没有足够的真实IP地址来支持多个虚拟主机,便可用基于名字的虚拟主机方案,
" p/ K: G; a3 D若是在内部网段上,你有较多的内部保留IP地址,将没有太大的区别。 7 j$ k2 p3 C( O' K/ E5 m1 H: X  h: A
提示:上面所提到的相对目录可以用绝对路径代替,如: & t  Q* Y' n2 J- U% P$ D
/home/httpd/hr.yourdomain.com 可改为 D:/Inetpub/wwwroot
4 K1 O) A$ n! y==================END=======================2 m, g) l9 c' L! Z6 f, p$ O
这只是入门,只能保证你的WEB服务器能正常运,要了解更多的 PHP 及 Apache 的详细设置,还要靠大家更加深入的实践...

另外可以用一个安装包安装全部PHP软件* K8 I5 |2 b0 M) t; [
下载地址:$ S0 w* X- F2 ?) d7 C% L8 ?
http://webclub.net.cn/data/phpStudy1.2.5.rar

TOP

亲娘那
  H3 `# e/ i; F, [怎么没图哈
; {2 r* d, ?3 S" P2 ]应该图文结合啊9 B& X: _: J! {0 ]5 y! W

TOP

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