返回列表 发帖

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

前言:这一篇是我亲身配置的经历,希望大家喜欢,现在网络的教程中,PHP运行在Apache“模块”方式的文章中都少了最重要的一个步骤,也就是说按其方法配置PHP不能运行,有的太过简单,有的太过复杂,所以花了点时间整理一下。
1 G& R" ?- B6 N/ z& w& f% p
6 r. H0 A! a0 y6 e% d0 m- {一、安装PHP4
! ^8 V9 W" {; e! J8 T$ }& b我们需要安装的是win32版本,下载当然也是win32版本 php4.3.0-win32.zip$ C: ?" D4 X* n4 `+ b4 ^! b
1.下载后,解压到c:\php目录下。
5 z) m% r1 s% y0 v4 ~2. 把c:\php目录下的php4ts.dll php4ts.lib文件都拷贝到c:\winnt\system32目录下(即window 2000系统目录下的system32目录)。8 j9 C; A* u! ~3 R0 y
3. 修改php.ini文件,把c:\php目录下的php.ini-dist文件改名为php.ini 用记事本或其它可编辑文本的软件把它打开。  p4 Z% y; D& x- d+ e8 @' w$ B4 _
3.1找到register_globals = Off 改为register_globals = On
& n# c* F' o: O1 e- F这一步是为了使部分旧的PHP程序能正常运行;
$ H# ^7 D8 N  |1 H8 y8 r3.2找到 extension_dir = ./ 把它改为extension_dir = c:\php\extensions
8 j  ]: ?. c6 S* w以下内容新手请略过
; z0 Q/ O- f  [4 Y8 W6 B/ z===============新手略过开开始================
7 A; B: f; c+ P' y, O7 d刚刚的修改是指定php4扩展dll文件存放的路径 由于php4默认所带的php.ini-dist中,是关掉了所有的扩展dll的功能( Windows Extensions)
, o5 C* k- Q9 `* C;extension=php_bz2.dll% D0 S" J2 i$ m/ |) ~2 \* i
;extension=php_cpdf.dll
8 E& _' K2 S4 x) h0 k, Z- o;extension=php_crack.dll% z" U$ N7 Y8 S0 t
;extension=php_curl.dll' k7 d2 q% q# s6 g- R( b3 X
..... ) |3 C# l# l5 w! ~' k" i" P" O
要做的就是把extension前面的分号去掉就行了,当然这样是不够的。因为有些extension在我们的系统是不能使用的,比如系统中没有安装 sql server的话,那么extension=php_mssql.dll就要用;(分号)把它注释掉;
) M0 s7 K' n6 j- l) B# [其中,PHP4带了两个GD扩展,请选用一个,另一个先用分号注释掉,以免出现函数无法注册的错误;2 y# h- n# Z4 _; I) ^* \0 ~. z
如下面8 K& d* x% z) f" N
extension=php_gd.dll; M) [! {1 c' N& j9 B
;extension=php_gd2.dll) [+ j0 u- P9 [% A! Y' a
按实际所须的extension=php_xxxx.dll前面的分号都去掉。
1 s3 o; L/ @2 F9 Q1 d7 [3 C% E=============新手略过结束================" l' e$ Z8 C* x& g
3.3 找到session.save_path,把这一项改为 session.save_path = c:\tmp
' e: v4 a! }3 S: Q1 a并在C盘建立一个TMP目录
/ w" r& ]& I1 n6 l* D3.4记得要保存刚刚的修改 并把php.ini文件放置在c:\winnt目录下。
: |- v; H+ a3 J. ^) V! a================================================
6 _, r$ ~6 A) L; K$ T5 D  _/ P6 I二、安装MySql
1 }9 \9 ]' G  O: x6 d3 K% G安装MySql 当然,我在MySql.com 下载的MySql是一个压缩包,要先解压出来;再点setup.exe安装;
- _) X1 }6 \% U! H按默认安装,即安装在c:\MySql下,安装完后,按“开始”菜单中的“运行”打进cmd进入dos窗口,进到c:\MySql\bin 目录;* z7 {. g3 g, r& @8 I0 E; y
运行mysqld-nt --install (将会出现一个Dos窗口,随即自动关闭!如果没有出任何信息,即安装到service成功!)
( _" y" J# z) P! X从“开始”菜单“程序”=》“管理工具”=》“服务”,打开后,将会找到MySql,点击mouse右键 选择启动 回到刚刚的Dos窗口
' ~! I6 m# O* z' A# j即c:\MySql\bin目录下 运行mysqladmin -u root password 123 即把root用户的密码设置为123 这一步,如果没有出错,说明初始化root密码成功;
  \2 r+ w, `7 [8 ~' Y当然从本机进入MySql是不需要用户名和密码,但用php 程序或是其它程序连接MySql时就要用到;
# o: b( \) n- t测试进入 第一种方法:直接动行MySql进入MySql 的dos管理状态;/ l  p5 J( I3 a! ?1 ?! J
第二种方法:运行MySql -uroot -p MySql将会提示让您输入密码,密码当然就是刚刚设置的123(当然,得按设置的密码喽,不一定得设置是123)
0 G, K- i! I# y1 g" e( \2 P出现: 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>
( D9 ~$ ?1 G* h% g即安装MySql成功。
) _7 o- K% [! n==========================================
1 d! z! b5 ~# L+ s3 x# m8 C三、安装Apache 1.3.x 及 PHP运行设置5 w* U$ C3 V, E( A
1.首先下载Apache,Apache软件一般叫作apache_1_3_x.win32.exe。运行它。它会问你将Apache安装到什么地方,为他系统安全及操作容易,我们不要使用默认路径,你可以设为c:\Apache或C:\,因为马上你就要修改它的配置文件。, Q' R4 e2 e, l1 f6 z/ o0 {
如果安装没出什么错的话,Apache就可以用了。有很多readme文件可供参考,但仅有一个文件是讲Win32平台的,包括Window 9x和Windows NT。
& Z3 i2 w: l" {  y! {4 L有两种方式使 PHP 工作于 Windows 下的 Apache 1.3.x。一种是 CGI 方式(php.exe),另一种是使用 Apache 模块 DLL。不管哪种方式都需要停止 Apache,编辑 httpd.conf 来配置 Apache 以加入PHP支持。 5 j# p# R& C4 _9 K
值得在这里指出现在 Windows 下的 SAPI 模块更加稳定了,我们推荐使用模块方式,因为更加透明和安全。 6 }# z- P5 U3 u/ F, ^0 D9 w
尽管有几种不同方法在 Apache 下配置 PHP,但是对新手来说还是非常简单易用的。有关更多的 httpd.conf 配置指令请参考 Apache 文档。
; S% M- O1 u( |$ ?6 B% }( ?如果你按照手工安装步骤一节中的说明把 PHP 解压缩到了 c:\php\ 目录下,那么需要加入以下三行到 Apache 配置文件中以 CGI 方式安装:
. }* x5 f# J0 L8 C" S7 A. w4 O1 B/ |( \. r; w1 k/ _" I# g1 |( _+ r7 z
ScriptAlias /php/ "c:/php/" " ^( F, I! u- M4 F! v
AddType application/x-httpd-php .php .phtml
6 H0 ^; `& S' mAction application/x-httpd-php "/php/php.exe"
* B3 b( M! V* w2 Z6 x注意上面的第二行在原来的 httpd.conf 中就有的,不过被注释了。还有记住用你自己放置 PHP 的路径替换 c:/php/。 * Y5 S7 ?9 o7 }- t. ^

6 x6 }" o& A9 o警告 4 `+ ^& U) J* [
在 CGI 方式下,你的服务器可能会受到几种攻击的影响。请学习如何防止攻击。
. p" x9 ?8 m+ @  V, D2 N" N$ A$ v0 O% b
如果你想在 Apache 中用模块方式使用 PHP,确认把 php4ts.dll 拷贝到 windows/system(Windows 9x/Me)或者 winnt/system32(Windows NT/2000)或者 windows/system32(Windows XP)目录下,覆盖原来的文件。然后在 Apache 配置文件 httpd.conf 中加入以下两行: $ M! }. `1 ?/ w8 Y/ M+ T

+ \4 R, g4 x+ o3 i' U用自己喜爱的编辑器打开 httpd.conf,找到 LoadModule 指令的部分,在其列表的最后部分加上如下一行,- h% j. `, h0 n" i, w# Y& `: Y# s$ b- r5 z
对 PHP 4:7 {1 V- g: ]6 G
LoadModule php4_module c:/php/sapi/php4apache.dll7 T7 i. s  h9 @
对 PHP 5:7 Y4 k7 Q3 x' T6 w% |) J% Y
LoadModule php5_module "c:/php/sapi/php5apache.dll"
7 G3 N/ @! S, x2 F你可能发现在用 Windows Installer 安装了 Apache 之后需要为用 AddModule 指令定义 mod_php4.c。尤其是在定义了 ClearModuleList 指令时格外重要,向下滚动几行可以找到该指令。你将会看到 AddModule 项目的列表,在列表的最后加上这一行:
1 x3 [8 J8 V7 e* n9 A# y1 yAddModule mod_php4.c
$ H) B$ n6 Z, P) H5 `4 m0 |# b" P对于 PHP 5 则为:9 g! s* Q  }7 a& q  o
AddModule mod_php5.c
2 `/ m( o! m3 V. M% w* R% P搜索类似 # AddType allows you to tweak mime.types 的短语,你会找到一些 AddType 的项目,并且在列表的最后有这一行: AddType application/x-httpd-php .php。你可以在这里选择任何想用 PHP 解析的后缀。.php 只是所建议的一个。甚至可以包括 .html,也可以加上 .php3 来向下兼容。
. L. A: d9 c. X; x
3 Y* A8 b8 Y4 U% c0 a6 x; K修改了配置文件之后记住重新启动 Apache,例如如果你的 Apache 是作为 Windows 的服务安装的,NET STOP APACHE 后面接上 NET START APACHE。或者用你通常使用的快捷方式。 0 ^7 D$ p" S# l3 C5 [  E; @' v' J
有两种方式使用源程序语法彩色显示特色,但是取决于你的安装方法。如果你配置了 Apache 的 SAPI 模块方式使用 PHP,那么在 httpd.conf 中(和插入 AddType application/x-httpd-php .php 是同一个位置)加入下面一行就可以使用本特色:AddType application/x-httpd-php-source .phps。   u( h0 A+ o7 n( T
如果你用 CGI 方式使用 PHP,那你需要用 show_source() 函数。建立一个 PHP 文件,加入以下代码:<?php show_source ("original_php_script.php"); ?>。用你想要显示源代码的文件名替换掉 original_php_script.php。
- \  T; `) [, H* H$ x注: 在 Windows-Apache 组合中,所有路径中的反斜线例如 "c:\directory\file.ext" 都必须转换成斜线,如 "c:/directory/file.ext"。
+ p  w- p/ L  ^: M============================================4 K( L: u) U  Z8 R" J8 w3 F
四、实现Apache虚拟主机的两种方案! C, H1 |& E( Q. N# C3 }/ g
简介:这里说的虚拟主机是指在一台机器上仅运行一个httpd后台程序 , k8 n/ W" W$ \% Y* e
支持多个Apache服务器,如在公司财务部门有一台web服务器,名为 / A7 \% H% J9 [% A2 {! K* z
account.yourdomain.com,同时又想为sales部门建立网站,网站内容也
% L, J" r5 r- r3 F/ J放在该机器上,通过sales.yourdomain.com访问,这就要用到虚拟主机
9 p- \# C. l1 ?2 N! P设置。
* `+ n- C+ C9 T$ L; f" B7 W设置Apache虚拟主机通常有两种方案 7 |6 @$ A4 M( @; F9 t5 U
1.基于IP的虚拟主机
& [" r. K- y0 f( V3 \3 }" E- l  F+ e  这种方式需要在机器上设置IP别名,象上面的例子,在一台机器的
$ ?0 w4 o. @- m. J' F' T网卡上绑定多个IP地址去服务多个虚拟主机。 0 m6 e( l# j6 m# s! }5 `8 n
若该机器的IP地址为192.168.0.1(account.yourdomain.com),首先 ! j: o' g7 |$ z8 J- W' r6 d. J1 }
你要设置IP别名(假设用192.168.0.2作为其别名IP)。加下面的行到
8 Z. ^7 Q7 @+ I, h' c2 M1 e/ R( l' N/etc/rc.d/rc.local,确保每次启动后自动运行。 7 N6 E& ?9 j" U3 o4 a3 l
#/sbin/ifconfig eth0:0 192.168.0.2 netmask 255.255.255.0 broadcast \
# E- r/ o$ O9 K' L$ j8 {& s) }192.168.0.255 up $ Z( [  h/ f) B4 y* x7 m, d
#/sbin/route add -host 192.168.0.2 eth0:0
" r9 k# G* z- b然后你需要设置/etd/httpd/conf/httpd.conf文件:
) w& z( M0 D! I1 k  ^<VirtualHost 192.168.0.2>
- y3 o( y$ I$ ~# @ServerAdmin webmaster@yourdomain.com
1 E) a! k1 o0 [1 |DocumentRoot /home/httpd/sales.yourdomain.com
, ~9 G! |, F# G5 f/ z# EServerName sales.yourdomain.com & \* [3 ]) H. m' r6 _  B% o! [
ErrorLog /var/log/httpd/sales.yourdomain.com/error_log 3 p( z( x4 r4 X* m
TransferLog /var/log/httpd/sales.yourdomain.com/access_log * n. J6 s% r: m) k' ?
</VirtualHost>
& M3 Q# n7 B: G+ S9 b) x6 @1 J然后分别创建目录
# F$ T4 s7 r: D2 o' v) l+ D$ c" P/home/httpd/sales.yourdomain.com, 6 b% c# a4 T: N/ z1 `' @
/var/log/httpd/sales.yourdomain.com & N- u1 B$ d' A+ h2 K3 h
放相应的网站内容到目录/home/httpd/sales.yourdomain.com下即可,并确保
! B+ g( i% B; V" y3 O你内部的DNS指定sales.yourdomain.com的A记录到IP地址192.168.0.2 。 ' R, y. m- R( ^3 y" Z8 U) ^5 m! a
注:这种基于IP的虚拟主机有一个缺点,就是你需要更多的IP地址去服务各自的
* b( r) H4 y5 {虚拟主机,如果你仅仅有一个IP地址,那么你将可以考虑用基于名字的虚拟主机
' D+ ]1 y3 Q4 h) U: W方案。
6 m; e4 u. b. H; g/ g; l+ A8 U4 U7 @& P# B
2.基于名字的虚拟主机:
! L4 g! ^: m- Q, z9 h6 H  它的优势就是不需要更多的IP地址,容易配置,不需要其它软硬件,现代的
9 r) u% [8 A5 M1 u, r& {+ v) N浏览器大多都支持这种方式。与基于IP的虚拟主机一样,你需要编辑文件 " T5 ]- H/ Y6 [7 K
/etc/httpd/conf/httpd.conf
" L7 M& ]3 H2 I% J1 ]2 R2 c6 eNameVirtualHost 192.168.0.1 1 ?: f+ e: g8 c1 a* K/ t
<VirtualHost 192.168.0.1>
) j$ E# E' ]2 c7 y/ N8 wServerAdmin webmaster@yourdomain.com 8 N, D, T6 {6 _* r
DocumentRoot /home/httpd/sales.yourdomain.com 7 d- k! J( g1 [6 b8 {" }
ServerName sales.yourdomain.com 6 g6 H5 [& L" q' a5 W
ErrorLog /var/log/httpd/sales.yourdomain.com/error_log
/ c1 b# E( d5 `+ w& o; |  QTransferLog /var/log/httpd/sales.yourdomain.com/access_log ; J* g+ a4 m  f- B5 i4 ^) V2 H9 v
</VirtualHost>
  B, p! s+ N4 E0 @+ C<VirtualHost 192.168.0.1> * B  {* a  j2 p
ServerAdmin webmaster@yourdomain.com
3 c& T: v5 i4 ODocumentRoot /home/httpd/hr.yourdomain.com
, v& ~9 b& B( h2 Q5 ZServerName hr.yourdomain.com
5 u; Y7 i2 W' n; I; [$ gErrorLog /var/log/httpd/hr.yourdomain.com/error_log
, S( z5 e" j, Q2 b0 o* yTransferLog /var/log/hr.yourdomain.com/access_log
3 s# y! r2 T5 B5 |</VirtualHost> + t$ _( \- y1 v
注: 你需要加NameVirtualHost 指示在最前面,下面依次为各个虚拟主机,
2 n" \9 U% p: D1 p为了让它工作,你需要把sales.yourdomain.com, hr.yourdomain.com的DNS
+ v- G3 k5 T8 Z+ U. m# A1 r都指向IP地址192.168.0.1
% A' d+ f' B0 i1 u# t上面的两种都将工作,如果是在外部网段,在互联网上提供WWW服务,你可能
& y/ \6 h3 b$ d8 C/ ~% j& W/ a5 Z没有足够的真实IP地址来支持多个虚拟主机,便可用基于名字的虚拟主机方案,
% R8 U9 O( q) V1 r. ?若是在内部网段上,你有较多的内部保留IP地址,将没有太大的区别。 + w1 W; l1 f, g1 {( I( S
提示:上面所提到的相对目录可以用绝对路径代替,如: ' {5 T( `0 f2 u$ H4 D
/home/httpd/hr.yourdomain.com 可改为 D:/Inetpub/wwwroot$ m" ^; S3 c! m- k+ m
==================END=======================
% c- P  W4 g- B7 T6 x( E0 l! t这只是入门,只能保证你的WEB服务器能正常运,要了解更多的 PHP 及 Apache 的详细设置,还要靠大家更加深入的实践...

另外可以用一个安装包安装全部PHP软件7 z* \5 F/ G* g
下载地址:) Z0 U$ k% t6 f) W* a  j2 A
http://webclub.net.cn/data/phpStudy1.2.5.rar

TOP

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