返回列表 发帖

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

前言:这一篇是我亲身配置的经历,希望大家喜欢,现在网络的教程中,PHP运行在Apache“模块”方式的文章中都少了最重要的一个步骤,也就是说按其方法配置PHP不能运行,有的太过简单,有的太过复杂,所以花了点时间整理一下。
. I# _- |7 Y( B* K/ L) R% o- H' t- I/ Q, K2 ], r
一、安装PHP4+ w' l2 H3 V8 A: R" g. D! Q
我们需要安装的是win32版本,下载当然也是win32版本 php4.3.0-win32.zip% ~; M, a" `1 B4 m3 W; ]% ~
1.下载后,解压到c:\php目录下。
8 g; e! U9 H1 U% r2. 把c:\php目录下的php4ts.dll php4ts.lib文件都拷贝到c:\winnt\system32目录下(即window 2000系统目录下的system32目录)。
7 y# S. b6 t( l3 u3. 修改php.ini文件,把c:\php目录下的php.ini-dist文件改名为php.ini 用记事本或其它可编辑文本的软件把它打开。8 e2 c4 O  i% U7 T$ Q# L
3.1找到register_globals = Off 改为register_globals = On
6 d$ ]3 ?1 I2 d( [6 D9 X这一步是为了使部分旧的PHP程序能正常运行;  q2 L+ i' Q) c$ ^! n6 l# w
3.2找到 extension_dir = ./ 把它改为extension_dir = c:\php\extensions
2 p- W& @) v. u; u& `. [以下内容新手请略过2 b; R6 x* y. C. w* v7 m6 T, ^* }
===============新手略过开开始================
$ n2 B: d/ h7 h7 D0 h0 a% l刚刚的修改是指定php4扩展dll文件存放的路径 由于php4默认所带的php.ini-dist中,是关掉了所有的扩展dll的功能( Windows Extensions) & c$ H6 `% F4 U( x5 w' x; I
;extension=php_bz2.dll/ {8 S$ [) H0 G. f# M
;extension=php_cpdf.dll
# D0 q4 _9 o# Q;extension=php_crack.dll5 [3 T2 U' {/ z0 t* g
;extension=php_curl.dll( I3 H# I  r+ _
.....
5 S$ ^& G" i: L要做的就是把extension前面的分号去掉就行了,当然这样是不够的。因为有些extension在我们的系统是不能使用的,比如系统中没有安装 sql server的话,那么extension=php_mssql.dll就要用;(分号)把它注释掉;+ q4 j" a) u4 ]( d' B- r
其中,PHP4带了两个GD扩展,请选用一个,另一个先用分号注释掉,以免出现函数无法注册的错误;
5 w5 s: Q; k8 `( W6 \( w如下面
4 I. L9 A; l6 a0 @2 J5 ?& ~2 E- f4 Sextension=php_gd.dll
5 q. Y: y, ?7 B* a( Y4 A;extension=php_gd2.dll
- v1 D  }) m: f' f6 ]! j按实际所须的extension=php_xxxx.dll前面的分号都去掉。9 \6 @2 f3 F0 }
=============新手略过结束================) n+ f$ ?8 b2 v3 B' r& D% O
3.3 找到session.save_path,把这一项改为 session.save_path = c:\tmp
& W7 V' g3 b! ~6 m并在C盘建立一个TMP目录) Q3 G* ]6 _8 y7 _
3.4记得要保存刚刚的修改 并把php.ini文件放置在c:\winnt目录下。
& J. f* v+ F: x6 ]4 K  r6 `( [================================================5 g+ N2 u! U. n2 O$ F% n0 q- h0 N  p3 C
二、安装MySql7 s; `* t/ w  Y3 J" ?
安装MySql 当然,我在MySql.com 下载的MySql是一个压缩包,要先解压出来;再点setup.exe安装;# m4 J9 m( F* b3 o5 a0 x; ~
按默认安装,即安装在c:\MySql下,安装完后,按“开始”菜单中的“运行”打进cmd进入dos窗口,进到c:\MySql\bin 目录;, J& B# q2 _8 R, A" q, n
运行mysqld-nt --install (将会出现一个Dos窗口,随即自动关闭!如果没有出任何信息,即安装到service成功!) 1 P9 a1 o: z: ~% I; M' Y2 f/ e% O
从“开始”菜单“程序”=》“管理工具”=》“服务”,打开后,将会找到MySql,点击mouse右键 选择启动 回到刚刚的Dos窗口
9 W) K% L' q8 j, S$ ^" C% a+ a, E! h7 M即c:\MySql\bin目录下 运行mysqladmin -u root password 123 即把root用户的密码设置为123 这一步,如果没有出错,说明初始化root密码成功;
( p# \# u& n7 h+ L当然从本机进入MySql是不需要用户名和密码,但用php 程序或是其它程序连接MySql时就要用到;
( |0 _; H4 Q6 \& ]- B# w测试进入 第一种方法:直接动行MySql进入MySql 的dos管理状态;
: B! s1 m" U1 p* Y' p第二种方法:运行MySql -uroot -p MySql将会提示让您输入密码,密码当然就是刚刚设置的123(当然,得按设置的密码喽,不一定得设置是123)9 o7 @2 M. d" K) `5 ^
出现: 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>
: \- ~+ J; Q+ F4 b3 E即安装MySql成功。
, Z  E, R  I4 D* W" U( v==========================================
2 B$ e+ ?" B5 l4 |% }三、安装Apache 1.3.x 及 PHP运行设置
. ~6 h8 t) E# C- F# T1.首先下载Apache,Apache软件一般叫作apache_1_3_x.win32.exe。运行它。它会问你将Apache安装到什么地方,为他系统安全及操作容易,我们不要使用默认路径,你可以设为c:\Apache或C:\,因为马上你就要修改它的配置文件。
5 }1 q' b/ g6 R如果安装没出什么错的话,Apache就可以用了。有很多readme文件可供参考,但仅有一个文件是讲Win32平台的,包括Window 9x和Windows NT。 0 X0 b7 M; b. P6 n  u  B1 U+ a, B
有两种方式使 PHP 工作于 Windows 下的 Apache 1.3.x。一种是 CGI 方式(php.exe),另一种是使用 Apache 模块 DLL。不管哪种方式都需要停止 Apache,编辑 httpd.conf 来配置 Apache 以加入PHP支持。
" }' k6 q1 u; C) {值得在这里指出现在 Windows 下的 SAPI 模块更加稳定了,我们推荐使用模块方式,因为更加透明和安全。
' Y$ k1 n0 d5 D: [尽管有几种不同方法在 Apache 下配置 PHP,但是对新手来说还是非常简单易用的。有关更多的 httpd.conf 配置指令请参考 Apache 文档。 2 _- v8 h/ b8 d  I5 P& K# I
如果你按照手工安装步骤一节中的说明把 PHP 解压缩到了 c:\php\ 目录下,那么需要加入以下三行到 Apache 配置文件中以 CGI 方式安装: & v* j- ]1 x5 S0 x# O7 I- y
$ a. N. Z2 F- z
ScriptAlias /php/ "c:/php/"
% F3 x( L$ F" @4 [' OAddType application/x-httpd-php .php .phtml ; W) s+ Y4 W0 T" L
Action application/x-httpd-php "/php/php.exe" # |3 n8 y! Y0 Z4 U0 n9 o: |
注意上面的第二行在原来的 httpd.conf 中就有的,不过被注释了。还有记住用你自己放置 PHP 的路径替换 c:/php/。
: {4 H+ w: N, h4 s9 s' A; I5 F& Q" d# {. M6 b0 B
警告 ) D: L- N$ b: @& k$ [
在 CGI 方式下,你的服务器可能会受到几种攻击的影响。请学习如何防止攻击。 # j) \# Y- m& z4 h

! N  K" v; K, |2 ]1 `如果你想在 Apache 中用模块方式使用 PHP,确认把 php4ts.dll 拷贝到 windows/system(Windows 9x/Me)或者 winnt/system32(Windows NT/2000)或者 windows/system32(Windows XP)目录下,覆盖原来的文件。然后在 Apache 配置文件 httpd.conf 中加入以下两行:
- O/ _/ h9 `+ }, z/ M) a
9 G- A$ F3 `: L* w+ }用自己喜爱的编辑器打开 httpd.conf,找到 LoadModule 指令的部分,在其列表的最后部分加上如下一行,
* o. n+ h8 h; \: R# B对 PHP 4:! N$ e! \$ O" l
LoadModule php4_module c:/php/sapi/php4apache.dll
6 c2 I7 _" [4 x/ {9 C( j: V对 PHP 5:
" Q- {7 G5 a! p( Q# hLoadModule php5_module "c:/php/sapi/php5apache.dll"* H9 J$ E5 z* p
你可能发现在用 Windows Installer 安装了 Apache 之后需要为用 AddModule 指令定义 mod_php4.c。尤其是在定义了 ClearModuleList 指令时格外重要,向下滚动几行可以找到该指令。你将会看到 AddModule 项目的列表,在列表的最后加上这一行:
' U$ `1 ]. W8 L" X( v) mAddModule mod_php4.c
! J& \) C. y9 l7 O$ P对于 PHP 5 则为:# H' U; o& P" ~
AddModule mod_php5.c
+ [$ K0 l5 i5 J搜索类似 # AddType allows you to tweak mime.types 的短语,你会找到一些 AddType 的项目,并且在列表的最后有这一行: AddType application/x-httpd-php .php。你可以在这里选择任何想用 PHP 解析的后缀。.php 只是所建议的一个。甚至可以包括 .html,也可以加上 .php3 来向下兼容。 # H5 g2 e& g& T" g6 m/ a
1 Z3 z6 U" S- G5 l. A- g
修改了配置文件之后记住重新启动 Apache,例如如果你的 Apache 是作为 Windows 的服务安装的,NET STOP APACHE 后面接上 NET START APACHE。或者用你通常使用的快捷方式。
/ J% g: Z& q' i/ Q6 o  u0 f有两种方式使用源程序语法彩色显示特色,但是取决于你的安装方法。如果你配置了 Apache 的 SAPI 模块方式使用 PHP,那么在 httpd.conf 中(和插入 AddType application/x-httpd-php .php 是同一个位置)加入下面一行就可以使用本特色:AddType application/x-httpd-php-source .phps。
& \8 z. P2 w8 x" O* w3 m8 o如果你用 CGI 方式使用 PHP,那你需要用 show_source() 函数。建立一个 PHP 文件,加入以下代码:<?php show_source ("original_php_script.php"); ?>。用你想要显示源代码的文件名替换掉 original_php_script.php。
: W( F: i" G5 r5 {" s7 `注: 在 Windows-Apache 组合中,所有路径中的反斜线例如 "c:\directory\file.ext" 都必须转换成斜线,如 "c:/directory/file.ext"。
! _7 J0 Z, G1 M# }+ l============================================
3 f% o- F, D1 H& D$ U9 \四、实现Apache虚拟主机的两种方案5 Q1 [" ?& s% j5 v
简介:这里说的虚拟主机是指在一台机器上仅运行一个httpd后台程序
& k/ g* v; P9 S( c; t6 g7 E; v支持多个Apache服务器,如在公司财务部门有一台web服务器,名为 6 c3 m/ i! r1 C9 g4 q: b5 d5 W
account.yourdomain.com,同时又想为sales部门建立网站,网站内容也 : e- b* t4 u" o
放在该机器上,通过sales.yourdomain.com访问,这就要用到虚拟主机 $ l% d2 E- V, v: k, E+ u
设置。
1 B& {: |& _* C0 C' T( i设置Apache虚拟主机通常有两种方案 / U0 d8 s8 ]9 n' I: \5 G
1.基于IP的虚拟主机
$ E5 a; @/ V9 ?1 C3 l& j  这种方式需要在机器上设置IP别名,象上面的例子,在一台机器的
8 P, d' O0 ?  a网卡上绑定多个IP地址去服务多个虚拟主机。
$ a5 q" y/ S3 _' ~/ ^若该机器的IP地址为192.168.0.1(account.yourdomain.com),首先
! r* t0 H" r" @9 f, K你要设置IP别名(假设用192.168.0.2作为其别名IP)。加下面的行到 3 V' b0 `7 m  |& c4 |" ]% C
/etc/rc.d/rc.local,确保每次启动后自动运行。
" r4 {7 m0 ~& g& |7 A" R9 i#/sbin/ifconfig eth0:0 192.168.0.2 netmask 255.255.255.0 broadcast \
% D0 e6 Z6 i/ y& [: u! s192.168.0.255 up
; D9 a6 W7 @/ ]5 Q- q- |#/sbin/route add -host 192.168.0.2 eth0:0
0 {& M5 V$ K% s1 W( U5 N然后你需要设置/etd/httpd/conf/httpd.conf文件: 6 K+ g' |! i4 m& K3 p1 ?/ D
<VirtualHost 192.168.0.2>
* F$ ]- V% b2 zServerAdmin webmaster@yourdomain.com
5 i5 _6 V& n7 MDocumentRoot /home/httpd/sales.yourdomain.com : X' |* a5 |8 K5 D; h
ServerName sales.yourdomain.com ; {, v" H/ y9 c+ i; t, Y, m
ErrorLog /var/log/httpd/sales.yourdomain.com/error_log & z/ o; Q! u4 m5 R( l2 p
TransferLog /var/log/httpd/sales.yourdomain.com/access_log
5 I  x, [" \1 t4 K  C. f5 T  ^" L</VirtualHost> * I- C& y4 m" F9 U) k4 x% w- M; |2 z
然后分别创建目录
( ^$ Q3 E; ~: l/home/httpd/sales.yourdomain.com, 8 w# f+ G: J2 V; ]
/var/log/httpd/sales.yourdomain.com
" S$ R6 [5 {$ E7 c放相应的网站内容到目录/home/httpd/sales.yourdomain.com下即可,并确保 $ ]+ e% r! E$ J8 d1 H" d
你内部的DNS指定sales.yourdomain.com的A记录到IP地址192.168.0.2 。 7 ~5 p1 j3 x2 q2 c6 }, b' n+ C5 m8 n
注:这种基于IP的虚拟主机有一个缺点,就是你需要更多的IP地址去服务各自的
/ t$ ?2 `: J) H虚拟主机,如果你仅仅有一个IP地址,那么你将可以考虑用基于名字的虚拟主机 ! V; J# ?# J( Y
方案。
# }3 Y/ N3 Q$ }4 ~1 s! H7 G- O# Q* p8 E0 ^' j/ m- X
2.基于名字的虚拟主机: 5 g8 }8 V6 o! I( a* V8 U0 h
  它的优势就是不需要更多的IP地址,容易配置,不需要其它软硬件,现代的 - H% W8 a7 c! h, D( i
浏览器大多都支持这种方式。与基于IP的虚拟主机一样,你需要编辑文件 5 O7 x" J) Y; w& ?5 g5 v! f* Y8 k9 ]
/etc/httpd/conf/httpd.conf
0 m" U. H6 O7 Z5 eNameVirtualHost 192.168.0.1
6 f5 v! G  N7 L# [7 x" Y" g<VirtualHost 192.168.0.1> 3 r  ^0 l* X- _. P5 d  L* z: `
ServerAdmin webmaster@yourdomain.com
" g" \0 ~  t: N7 w& i7 wDocumentRoot /home/httpd/sales.yourdomain.com # g% h& O0 ~& a+ X6 _2 B( x
ServerName sales.yourdomain.com
4 n9 P7 M* Y) x7 [ErrorLog /var/log/httpd/sales.yourdomain.com/error_log + M% L7 Y( }8 X5 f+ y6 ]
TransferLog /var/log/httpd/sales.yourdomain.com/access_log : w9 R; P: V7 w! v, _4 ?+ B
</VirtualHost>
/ ?8 C: v( K) {( t8 a<VirtualHost 192.168.0.1> $ ~( i9 X9 h( L( ?
ServerAdmin webmaster@yourdomain.com ) g* ]* }1 m9 m2 K/ W% I1 ^0 [
DocumentRoot /home/httpd/hr.yourdomain.com
) o4 s0 T& `4 _( B0 d& a* sServerName hr.yourdomain.com
  a7 ?6 h, o2 s* MErrorLog /var/log/httpd/hr.yourdomain.com/error_log
1 c: P0 E6 r1 P3 Z# Y/ ~8 N$ ETransferLog /var/log/hr.yourdomain.com/access_log ! Q& g0 Y, w$ ?
</VirtualHost>
, b% Y+ ?  I1 F2 Y3 d% j注: 你需要加NameVirtualHost 指示在最前面,下面依次为各个虚拟主机,
5 L; w: @  o# u- {, d, ^为了让它工作,你需要把sales.yourdomain.com, hr.yourdomain.com的DNS
& b% i' i6 u& d+ g都指向IP地址192.168.0.1
- J) c) |$ Z4 J) b' x上面的两种都将工作,如果是在外部网段,在互联网上提供WWW服务,你可能
" o) y! v/ @& K6 w" @2 O8 o没有足够的真实IP地址来支持多个虚拟主机,便可用基于名字的虚拟主机方案, & o' A- R- C4 F- Z; D
若是在内部网段上,你有较多的内部保留IP地址,将没有太大的区别。
( J. t. f# {9 Z) B$ b提示:上面所提到的相对目录可以用绝对路径代替,如: # u1 ^* c; F% u% E+ \% m
/home/httpd/hr.yourdomain.com 可改为 D:/Inetpub/wwwroot
$ q" G% F% z  g==================END=======================
$ E3 u9 Z4 V3 F$ |这只是入门,只能保证你的WEB服务器能正常运,要了解更多的 PHP 及 Apache 的详细设置,还要靠大家更加深入的实践...

另外可以用一个安装包安装全部PHP软件. Z$ Y4 m6 p1 n
下载地址:
, b. B0 i! k. A8 thttp://webclub.net.cn/data/phpStudy1.2.5.rar

TOP

亲娘那
. x' {* c4 N4 W3 a) I" P  R怎么没图哈
& u2 I# x7 Z7 f( L4 m; p# `应该图文结合啊5 i2 s, |: P. W: o0 }. a/ g! n$ ]) C

TOP

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