返回列表 发帖

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

前言:这一篇是我亲身配置的经历,希望大家喜欢,现在网络的教程中,PHP运行在Apache“模块”方式的文章中都少了最重要的一个步骤,也就是说按其方法配置PHP不能运行,有的太过简单,有的太过复杂,所以花了点时间整理一下。. }" R/ I" e5 t: ]: ^
" S3 W6 R# H# A: N, |' w" Z# H
一、安装PHP4
. q( D% r6 j8 M& |; n. M. U我们需要安装的是win32版本,下载当然也是win32版本 php4.3.0-win32.zip/ U# k  \: E) u( d  Z' i+ p! A
1.下载后,解压到c:\php目录下。- `* _: `8 N& n. U9 S" @
2. 把c:\php目录下的php4ts.dll php4ts.lib文件都拷贝到c:\winnt\system32目录下(即window 2000系统目录下的system32目录)。
3 c8 X7 g! T3 A& A" ?3. 修改php.ini文件,把c:\php目录下的php.ini-dist文件改名为php.ini 用记事本或其它可编辑文本的软件把它打开。
7 V$ v2 K3 X! t, e! i. H3.1找到register_globals = Off 改为register_globals = On
5 L, U9 F! [! J# D3 ]  `这一步是为了使部分旧的PHP程序能正常运行;
' ~5 f( x& |# n& u; ]. e3.2找到 extension_dir = ./ 把它改为extension_dir = c:\php\extensions
% _, A, n2 e  A! a以下内容新手请略过! Z) ?; c% ^. u+ {
===============新手略过开开始================
( U7 ?5 z5 V6 e. O% s5 ?3 G刚刚的修改是指定php4扩展dll文件存放的路径 由于php4默认所带的php.ini-dist中,是关掉了所有的扩展dll的功能( Windows Extensions) - M6 j# A( h4 b
;extension=php_bz2.dll$ U. k* @9 b4 }
;extension=php_cpdf.dll" a& A9 P+ H$ e9 l, w1 x: L
;extension=php_crack.dll' h6 G+ ?* U4 p& R" }8 K$ }* ?, n
;extension=php_curl.dll
/ G" S$ {0 p2 D" a9 |# R..... ) L' a  X, _* _+ L7 s& L) s
要做的就是把extension前面的分号去掉就行了,当然这样是不够的。因为有些extension在我们的系统是不能使用的,比如系统中没有安装 sql server的话,那么extension=php_mssql.dll就要用;(分号)把它注释掉;( P- p: |: O* ^' r2 ?
其中,PHP4带了两个GD扩展,请选用一个,另一个先用分号注释掉,以免出现函数无法注册的错误;8 n1 r, ]; H! x$ `7 u$ {6 k$ E5 s
如下面
- v( r9 i1 t: S2 Xextension=php_gd.dll
; b5 g# }0 o1 P: m% o, o( t, j- m;extension=php_gd2.dll
  u' P4 o- J) ?( k按实际所须的extension=php_xxxx.dll前面的分号都去掉。
% b* m) n+ r  m8 ]0 ]1 \=============新手略过结束================$ o3 X3 p1 M. E
3.3 找到session.save_path,把这一项改为 session.save_path = c:\tmp* ]0 ^. P1 K) u9 t1 S% {7 M
并在C盘建立一个TMP目录
: D0 r6 b; i) `$ K# a+ ^4 B4 a, ~3.4记得要保存刚刚的修改 并把php.ini文件放置在c:\winnt目录下。
" }: b/ Y8 C2 R. x2 a================================================% h4 J1 P" P3 d# Q& D4 i
二、安装MySql
: P5 j' i5 @$ f安装MySql 当然,我在MySql.com 下载的MySql是一个压缩包,要先解压出来;再点setup.exe安装;7 i0 R! T! d3 N* b/ X! m  v  q. W
按默认安装,即安装在c:\MySql下,安装完后,按“开始”菜单中的“运行”打进cmd进入dos窗口,进到c:\MySql\bin 目录;
. z) @) j, g6 D( _运行mysqld-nt --install (将会出现一个Dos窗口,随即自动关闭!如果没有出任何信息,即安装到service成功!)
6 ?* q7 j$ M) Z& F! m7 ^从“开始”菜单“程序”=》“管理工具”=》“服务”,打开后,将会找到MySql,点击mouse右键 选择启动 回到刚刚的Dos窗口
+ W( \9 m. Z1 x: i: L0 d即c:\MySql\bin目录下 运行mysqladmin -u root password 123 即把root用户的密码设置为123 这一步,如果没有出错,说明初始化root密码成功;+ f# J# _; T+ A/ G  H# Y; I
当然从本机进入MySql是不需要用户名和密码,但用php 程序或是其它程序连接MySql时就要用到;
; u5 _) C/ e" i! b, G5 U' L6 j测试进入 第一种方法:直接动行MySql进入MySql 的dos管理状态;
! Y9 [0 S* L/ V6 v' Y第二种方法:运行MySql -uroot -p MySql将会提示让您输入密码,密码当然就是刚刚设置的123(当然,得按设置的密码喽,不一定得设置是123), Q1 q4 I; Q# f3 I2 b, 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> + R) R& B1 Q) M2 A
即安装MySql成功。) e4 L9 P3 m7 S1 W+ H5 g
==========================================
$ O- T; G# ]& U% \4 U三、安装Apache 1.3.x 及 PHP运行设置
$ c& |& N) R. c/ ~+ I# d, y+ V1.首先下载Apache,Apache软件一般叫作apache_1_3_x.win32.exe。运行它。它会问你将Apache安装到什么地方,为他系统安全及操作容易,我们不要使用默认路径,你可以设为c:\Apache或C:\,因为马上你就要修改它的配置文件。
# C, J! W8 X7 [, d如果安装没出什么错的话,Apache就可以用了。有很多readme文件可供参考,但仅有一个文件是讲Win32平台的,包括Window 9x和Windows NT。
! J* G0 T: q- b. @( a5 m6 `有两种方式使 PHP 工作于 Windows 下的 Apache 1.3.x。一种是 CGI 方式(php.exe),另一种是使用 Apache 模块 DLL。不管哪种方式都需要停止 Apache,编辑 httpd.conf 来配置 Apache 以加入PHP支持。 1 u7 v2 U2 A) C* u- \( O. M
值得在这里指出现在 Windows 下的 SAPI 模块更加稳定了,我们推荐使用模块方式,因为更加透明和安全。
4 U. d! {) J& {+ L尽管有几种不同方法在 Apache 下配置 PHP,但是对新手来说还是非常简单易用的。有关更多的 httpd.conf 配置指令请参考 Apache 文档。 2 }% v  G( `7 _9 ^  E
如果你按照手工安装步骤一节中的说明把 PHP 解压缩到了 c:\php\ 目录下,那么需要加入以下三行到 Apache 配置文件中以 CGI 方式安装:
5 w; V/ K- W% O3 w/ M" A
$ c. p, \. }7 X  _! m% C) P( \ScriptAlias /php/ "c:/php/" 5 h0 t; j0 w9 W) j- e- @3 ^4 B) |' N
AddType application/x-httpd-php .php .phtml
( F# B3 r0 l& N, t& T- Y6 tAction application/x-httpd-php "/php/php.exe" 7 G& l4 P; C/ P" T1 N
注意上面的第二行在原来的 httpd.conf 中就有的,不过被注释了。还有记住用你自己放置 PHP 的路径替换 c:/php/。 ; f( ~" G1 j1 q1 x
. t- G* _6 E( E$ C' ]: ^8 w. i! P! i
警告 * W0 C- p7 C# {
在 CGI 方式下,你的服务器可能会受到几种攻击的影响。请学习如何防止攻击。 * w$ |! _1 b( s, m% {1 V

3 h& @' V" P5 Y5 l6 p如果你想在 Apache 中用模块方式使用 PHP,确认把 php4ts.dll 拷贝到 windows/system(Windows 9x/Me)或者 winnt/system32(Windows NT/2000)或者 windows/system32(Windows XP)目录下,覆盖原来的文件。然后在 Apache 配置文件 httpd.conf 中加入以下两行:
: y6 R! U5 d. ]  e3 z% y6 j. [. z% V+ s
: y% j) q1 ^7 _% A) }用自己喜爱的编辑器打开 httpd.conf,找到 LoadModule 指令的部分,在其列表的最后部分加上如下一行,/ ^  v2 x5 M) l
对 PHP 4:
+ e" Y* t# V( @/ VLoadModule php4_module c:/php/sapi/php4apache.dll: u  _5 f! ~) L- ?$ Q' l* B: b$ n
对 PHP 5:
1 x- U  k8 r) U0 P" {/ X4 GLoadModule php5_module "c:/php/sapi/php5apache.dll"
& P. V% h$ q+ I% ]你可能发现在用 Windows Installer 安装了 Apache 之后需要为用 AddModule 指令定义 mod_php4.c。尤其是在定义了 ClearModuleList 指令时格外重要,向下滚动几行可以找到该指令。你将会看到 AddModule 项目的列表,在列表的最后加上这一行:
; X5 y- v1 u3 A* \" b, i  y' \AddModule mod_php4.c
" \  ?0 }! t5 R% q对于 PHP 5 则为:
6 a: T/ Z$ E" M% [7 PAddModule mod_php5.c
. S7 [% @" k8 I. |' Y" H搜索类似 # AddType allows you to tweak mime.types 的短语,你会找到一些 AddType 的项目,并且在列表的最后有这一行: AddType application/x-httpd-php .php。你可以在这里选择任何想用 PHP 解析的后缀。.php 只是所建议的一个。甚至可以包括 .html,也可以加上 .php3 来向下兼容。 + U$ ]& l- l+ E& t- Q7 i5 d7 f+ M6 C

9 ?" o4 }! t$ C0 J6 m4 ~! p6 ^% `修改了配置文件之后记住重新启动 Apache,例如如果你的 Apache 是作为 Windows 的服务安装的,NET STOP APACHE 后面接上 NET START APACHE。或者用你通常使用的快捷方式。
. n. u. c7 w0 [! x% S有两种方式使用源程序语法彩色显示特色,但是取决于你的安装方法。如果你配置了 Apache 的 SAPI 模块方式使用 PHP,那么在 httpd.conf 中(和插入 AddType application/x-httpd-php .php 是同一个位置)加入下面一行就可以使用本特色:AddType application/x-httpd-php-source .phps。 1 z  s) j) G0 B% f
如果你用 CGI 方式使用 PHP,那你需要用 show_source() 函数。建立一个 PHP 文件,加入以下代码:<?php show_source ("original_php_script.php"); ?>。用你想要显示源代码的文件名替换掉 original_php_script.php。 / {) w3 ]2 c* \: f) ^( H# H! q
注: 在 Windows-Apache 组合中,所有路径中的反斜线例如 "c:\directory\file.ext" 都必须转换成斜线,如 "c:/directory/file.ext"。
9 l% P( E1 e  I. G) l3 m3 Y& q============================================
2 {, f& P% a9 Z5 N+ v3 B1 V四、实现Apache虚拟主机的两种方案- r( m- l4 V+ f3 ^) `' v9 J
简介:这里说的虚拟主机是指在一台机器上仅运行一个httpd后台程序
4 z1 Y9 j, a7 H$ ]( i0 \; R& a7 W支持多个Apache服务器,如在公司财务部门有一台web服务器,名为
0 V& T) I3 J$ W( J. U7 h1 \9 [account.yourdomain.com,同时又想为sales部门建立网站,网站内容也
) r: E2 i. G0 S- M$ P# W放在该机器上,通过sales.yourdomain.com访问,这就要用到虚拟主机 ) ?3 l3 w# ]( `5 u
设置。
9 }# S% W9 b# x" @* B设置Apache虚拟主机通常有两种方案 3 `  g' V& D' O4 z/ `3 N
1.基于IP的虚拟主机 , W4 t' {7 D' T: K7 x: B/ N' V) }& N
  这种方式需要在机器上设置IP别名,象上面的例子,在一台机器的
2 v6 _7 o8 n" B% W' O& L( f& @网卡上绑定多个IP地址去服务多个虚拟主机。
0 `* C, F$ g/ O4 G若该机器的IP地址为192.168.0.1(account.yourdomain.com),首先
6 R, [& U8 l9 J$ y! }8 u  s你要设置IP别名(假设用192.168.0.2作为其别名IP)。加下面的行到
5 i. X0 T1 E5 ]2 ~" g& k" |/ e; D/etc/rc.d/rc.local,确保每次启动后自动运行。 3 @0 g+ ^  [$ W% |! H5 @9 U
#/sbin/ifconfig eth0:0 192.168.0.2 netmask 255.255.255.0 broadcast \ $ E7 ]8 e/ O. b. w6 J
192.168.0.255 up
+ ~4 x% r: M, P' p, t  T; m#/sbin/route add -host 192.168.0.2 eth0:0 4 [: q) q9 a4 ]
然后你需要设置/etd/httpd/conf/httpd.conf文件:
# _3 l0 N: j: z) ^  @% t/ |. y<VirtualHost 192.168.0.2> 4 K( e+ S# `/ T; {2 R& ^
ServerAdmin webmaster@yourdomain.com
  L3 h% T; k+ L1 J3 IDocumentRoot /home/httpd/sales.yourdomain.com
. \% C) ]4 y" f7 \5 o/ [ServerName sales.yourdomain.com , J# F4 |! c4 S
ErrorLog /var/log/httpd/sales.yourdomain.com/error_log
1 t; P# \/ E$ nTransferLog /var/log/httpd/sales.yourdomain.com/access_log 7 l. Q, z$ W4 [# l# Z
</VirtualHost>
6 x5 |. f  D. o$ b6 i' d" _然后分别创建目录 : V6 A( S  z  i" X
/home/httpd/sales.yourdomain.com, 3 L+ D# e$ i; b  _
/var/log/httpd/sales.yourdomain.com
% \) z" ^% \6 T放相应的网站内容到目录/home/httpd/sales.yourdomain.com下即可,并确保 3 Q+ B7 L- }( \: ^; B/ b+ k1 y
你内部的DNS指定sales.yourdomain.com的A记录到IP地址192.168.0.2 。
6 L5 Q3 A2 {+ B+ b2 v; z) ?7 w注:这种基于IP的虚拟主机有一个缺点,就是你需要更多的IP地址去服务各自的
& f( q& |8 o; j7 _虚拟主机,如果你仅仅有一个IP地址,那么你将可以考虑用基于名字的虚拟主机 " X5 `8 S- x, i- x6 C
方案。 " r+ k0 I4 o6 k4 D* A% ^$ B

1 E7 g) i! m+ b. S+ s2.基于名字的虚拟主机: / e) W" G: C+ _2 s
  它的优势就是不需要更多的IP地址,容易配置,不需要其它软硬件,现代的
, {9 A1 O& U1 ~+ f' j; Q浏览器大多都支持这种方式。与基于IP的虚拟主机一样,你需要编辑文件
/ Y+ S) w1 f, D) P' P3 p/etc/httpd/conf/httpd.conf
- \+ |; s6 L0 r- q$ o4 H) q* nNameVirtualHost 192.168.0.1
& Z  l9 {0 X" }- W<VirtualHost 192.168.0.1>   t( p9 S' z6 _  |4 h* {
ServerAdmin webmaster@yourdomain.com
" B. }/ ]. I! d9 H% y* \DocumentRoot /home/httpd/sales.yourdomain.com 8 E0 c4 O. q9 q1 s7 H- o
ServerName sales.yourdomain.com % ^  u: S0 r( T9 w
ErrorLog /var/log/httpd/sales.yourdomain.com/error_log $ j% }  V2 c+ t0 [6 @" q4 e. B
TransferLog /var/log/httpd/sales.yourdomain.com/access_log
- g2 x9 q# T- d0 Q</VirtualHost> # X9 u# |) C; B
<VirtualHost 192.168.0.1>
9 K7 E) t! I4 J8 J6 t+ \/ }ServerAdmin webmaster@yourdomain.com
, V/ _5 D8 [( A; k7 X4 oDocumentRoot /home/httpd/hr.yourdomain.com 8 O: r: h) `  h  @6 }9 n, E' a# n7 ?( v
ServerName hr.yourdomain.com " L9 Q$ p4 U  U; d& m" {
ErrorLog /var/log/httpd/hr.yourdomain.com/error_log
7 r- X2 J) ]9 f/ V- ^& e  C0 NTransferLog /var/log/hr.yourdomain.com/access_log
3 S/ o. A5 d' n& S0 u: R7 R</VirtualHost> 8 C7 K( R  ^' b( |1 M; c9 v  f' Y
注: 你需要加NameVirtualHost 指示在最前面,下面依次为各个虚拟主机,
. Y, P0 V0 @, c为了让它工作,你需要把sales.yourdomain.com, hr.yourdomain.com的DNS
5 E- Y: Q3 v2 ^2 A都指向IP地址192.168.0.1 # R& r( J( N: T* {% {+ r) T* Z
上面的两种都将工作,如果是在外部网段,在互联网上提供WWW服务,你可能
: V  ~% h3 q$ Y没有足够的真实IP地址来支持多个虚拟主机,便可用基于名字的虚拟主机方案,
: n( m' b" k* W# Q0 c若是在内部网段上,你有较多的内部保留IP地址,将没有太大的区别。
9 w: ?+ u' s4 `7 Y提示:上面所提到的相对目录可以用绝对路径代替,如: 8 v/ h* Z3 t# d1 {# C
/home/httpd/hr.yourdomain.com 可改为 D:/Inetpub/wwwroot
  \6 N/ U8 E8 K- j; `. a3 D==================END=======================% E9 ^6 D7 I* T: u$ p* ~5 \2 ]4 h
这只是入门,只能保证你的WEB服务器能正常运,要了解更多的 PHP 及 Apache 的详细设置,还要靠大家更加深入的实践...

另外可以用一个安装包安装全部PHP软件
) t' J$ F6 D- u' i7 M下载地址:/ I5 y) q. w- G3 J
http://webclub.net.cn/data/phpStudy1.2.5.rar

TOP

亲娘那
! `" }- ^4 T5 m# ~3 |- ?怎么没图哈
* _) ~: I8 r3 J" N  D2 n7 y! N应该图文结合啊) f9 m5 x+ v+ w3 ^1 u

TOP

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