返回列表 发帖

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

前言:这一篇是我亲身配置的经历,希望大家喜欢,现在网络的教程中,PHP运行在Apache“模块”方式的文章中都少了最重要的一个步骤,也就是说按其方法配置PHP不能运行,有的太过简单,有的太过复杂,所以花了点时间整理一下。
6 p. M- t6 C) I7 S. A& [5 R
& T2 N2 E# v  w8 _$ I* x一、安装PHP4' z* j! a/ o' n* s) `
我们需要安装的是win32版本,下载当然也是win32版本 php4.3.0-win32.zip$ {" S$ q9 y5 e( o2 p' V- ?3 Y
1.下载后,解压到c:\php目录下。5 f" ?9 e8 f0 f% f2 p3 n
2. 把c:\php目录下的php4ts.dll php4ts.lib文件都拷贝到c:\winnt\system32目录下(即window 2000系统目录下的system32目录)。
9 P4 a1 w- E2 E& }' H) I/ Y/ i3. 修改php.ini文件,把c:\php目录下的php.ini-dist文件改名为php.ini 用记事本或其它可编辑文本的软件把它打开。
+ `# f( T% W4 j# N) H2 b3.1找到register_globals = Off 改为register_globals = On9 T' F5 k& w- l2 {4 P2 l0 q
这一步是为了使部分旧的PHP程序能正常运行;: M4 [; B( n' l; ^
3.2找到 extension_dir = ./ 把它改为extension_dir = c:\php\extensions+ c/ l6 g$ }/ @3 L& z
以下内容新手请略过: S. R( U- K9 J+ A
===============新手略过开开始================
9 p4 h6 n, D( f6 E! o% S# G: k刚刚的修改是指定php4扩展dll文件存放的路径 由于php4默认所带的php.ini-dist中,是关掉了所有的扩展dll的功能( Windows Extensions) 5 K: S  }/ s8 L; u9 p% \( j/ N
;extension=php_bz2.dll
' ?& D3 q" b1 u9 {  P;extension=php_cpdf.dll+ T1 D' b( `4 y5 A1 y: v% n
;extension=php_crack.dll# ^( D. c, t! x. b3 m
;extension=php_curl.dll
" g) u- L( D& t; g..... 7 Z7 z% h& H- x: K
要做的就是把extension前面的分号去掉就行了,当然这样是不够的。因为有些extension在我们的系统是不能使用的,比如系统中没有安装 sql server的话,那么extension=php_mssql.dll就要用;(分号)把它注释掉;# T! Q/ o8 q8 O. t1 ^
其中,PHP4带了两个GD扩展,请选用一个,另一个先用分号注释掉,以免出现函数无法注册的错误;
7 M- c) B% I* v) O如下面7 n) w$ l5 M# a% [; f0 ^
extension=php_gd.dll& X2 Q, h0 M6 ]+ G1 e1 b
;extension=php_gd2.dll; t: \7 b9 B3 F5 T0 e
按实际所须的extension=php_xxxx.dll前面的分号都去掉。" M9 e8 M* R! W. D$ [9 v
=============新手略过结束================" R) q2 s9 {$ o3 D* s
3.3 找到session.save_path,把这一项改为 session.save_path = c:\tmp  P# D' o# l  v; c+ i8 k4 I& u
并在C盘建立一个TMP目录
5 A1 ?' X1 n' v  D7 v3.4记得要保存刚刚的修改 并把php.ini文件放置在c:\winnt目录下。
6 o) g* @. [0 p! S5 K================================================
! ^  h; H% l. ?二、安装MySql* j% `6 d2 q3 a/ l
安装MySql 当然,我在MySql.com 下载的MySql是一个压缩包,要先解压出来;再点setup.exe安装;( y/ g) @0 H" \! u2 K3 O9 l
按默认安装,即安装在c:\MySql下,安装完后,按“开始”菜单中的“运行”打进cmd进入dos窗口,进到c:\MySql\bin 目录;; c9 M' y! p; i6 p
运行mysqld-nt --install (将会出现一个Dos窗口,随即自动关闭!如果没有出任何信息,即安装到service成功!) " }8 X9 |% L! E- @: I$ e- x9 g
从“开始”菜单“程序”=》“管理工具”=》“服务”,打开后,将会找到MySql,点击mouse右键 选择启动 回到刚刚的Dos窗口5 f" B/ E$ x: G* }/ R/ {
即c:\MySql\bin目录下 运行mysqladmin -u root password 123 即把root用户的密码设置为123 这一步,如果没有出错,说明初始化root密码成功;
) j$ \8 R! R/ W: f% C) o# }当然从本机进入MySql是不需要用户名和密码,但用php 程序或是其它程序连接MySql时就要用到;
/ x1 D3 B( G) _# O4 [9 o测试进入 第一种方法:直接动行MySql进入MySql 的dos管理状态;
# C  L" `- t% t- ~; R" u+ d" d, B第二种方法:运行MySql -uroot -p MySql将会提示让您输入密码,密码当然就是刚刚设置的123(当然,得按设置的密码喽,不一定得设置是123)  _' J/ f$ A& h2 ~
出现: 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>
0 o: a$ {6 p. u% m即安装MySql成功。" S6 x6 y6 }( U+ s  I
==========================================  k/ ^8 |# G) J" T8 b8 v
三、安装Apache 1.3.x 及 PHP运行设置
  H  `* u* O! [: p: \2 s. p: |+ S1.首先下载Apache,Apache软件一般叫作apache_1_3_x.win32.exe。运行它。它会问你将Apache安装到什么地方,为他系统安全及操作容易,我们不要使用默认路径,你可以设为c:\Apache或C:\,因为马上你就要修改它的配置文件。, C* J# o( y' z8 S  V; f# h$ w
如果安装没出什么错的话,Apache就可以用了。有很多readme文件可供参考,但仅有一个文件是讲Win32平台的,包括Window 9x和Windows NT。
* A: H, y1 k1 G: {有两种方式使 PHP 工作于 Windows 下的 Apache 1.3.x。一种是 CGI 方式(php.exe),另一种是使用 Apache 模块 DLL。不管哪种方式都需要停止 Apache,编辑 httpd.conf 来配置 Apache 以加入PHP支持。
  q! ?4 [- s; u- C% J: Y' k* N值得在这里指出现在 Windows 下的 SAPI 模块更加稳定了,我们推荐使用模块方式,因为更加透明和安全。
+ e1 o  x/ N7 r/ v4 D; P) m' t8 X尽管有几种不同方法在 Apache 下配置 PHP,但是对新手来说还是非常简单易用的。有关更多的 httpd.conf 配置指令请参考 Apache 文档。 ) C7 a1 w2 C+ `/ F9 d/ Z- R. t
如果你按照手工安装步骤一节中的说明把 PHP 解压缩到了 c:\php\ 目录下,那么需要加入以下三行到 Apache 配置文件中以 CGI 方式安装: 2 G# U1 [4 Z: }- L

/ Q0 \  x$ s( n( D& U! |# JScriptAlias /php/ "c:/php/"
  v+ n  @+ P$ O& PAddType application/x-httpd-php .php .phtml
/ t9 j- u1 Y+ h) ~Action application/x-httpd-php "/php/php.exe" * G3 B3 h$ J( m& ~+ `3 s% P
注意上面的第二行在原来的 httpd.conf 中就有的,不过被注释了。还有记住用你自己放置 PHP 的路径替换 c:/php/。
7 q- [( b' A$ |$ ?, Q
, d9 P4 p7 [/ C警告
6 G- ]( g- B+ |/ m( y* V' v在 CGI 方式下,你的服务器可能会受到几种攻击的影响。请学习如何防止攻击。
$ O8 u, G+ e& @7 R: R  ~6 ^% h$ z6 r
如果你想在 Apache 中用模块方式使用 PHP,确认把 php4ts.dll 拷贝到 windows/system(Windows 9x/Me)或者 winnt/system32(Windows NT/2000)或者 windows/system32(Windows XP)目录下,覆盖原来的文件。然后在 Apache 配置文件 httpd.conf 中加入以下两行: 8 L0 L' _) b# W7 D8 I, m& \5 z4 _
0 A; K8 b5 s( e- z+ J
用自己喜爱的编辑器打开 httpd.conf,找到 LoadModule 指令的部分,在其列表的最后部分加上如下一行,. K2 a0 Q- v0 u- }$ h
对 PHP 4:
: |( |7 J5 D, iLoadModule php4_module c:/php/sapi/php4apache.dll2 y, q7 a! F1 u, C( K5 ]9 J
对 PHP 5:1 T. J" i& |3 D5 f, M6 q
LoadModule php5_module "c:/php/sapi/php5apache.dll"
0 M8 p( m( h  q* y4 I5 r5 z/ j你可能发现在用 Windows Installer 安装了 Apache 之后需要为用 AddModule 指令定义 mod_php4.c。尤其是在定义了 ClearModuleList 指令时格外重要,向下滚动几行可以找到该指令。你将会看到 AddModule 项目的列表,在列表的最后加上这一行:% D3 u) y( ?8 }3 |' `
AddModule mod_php4.c
3 m5 {8 h: M# T. Y" r对于 PHP 5 则为:
! q; T* U. U+ IAddModule mod_php5.c
0 |( A; C1 e2 @  }) y9 ?& {搜索类似 # AddType allows you to tweak mime.types 的短语,你会找到一些 AddType 的项目,并且在列表的最后有这一行: AddType application/x-httpd-php .php。你可以在这里选择任何想用 PHP 解析的后缀。.php 只是所建议的一个。甚至可以包括 .html,也可以加上 .php3 来向下兼容。
  d( V8 v7 d/ ?- d0 C) ~( l, k7 z- W" B  e8 ~
修改了配置文件之后记住重新启动 Apache,例如如果你的 Apache 是作为 Windows 的服务安装的,NET STOP APACHE 后面接上 NET START APACHE。或者用你通常使用的快捷方式。
7 M* h. r; u- r- y! W有两种方式使用源程序语法彩色显示特色,但是取决于你的安装方法。如果你配置了 Apache 的 SAPI 模块方式使用 PHP,那么在 httpd.conf 中(和插入 AddType application/x-httpd-php .php 是同一个位置)加入下面一行就可以使用本特色:AddType application/x-httpd-php-source .phps。 6 G6 [7 P  q; d% J
如果你用 CGI 方式使用 PHP,那你需要用 show_source() 函数。建立一个 PHP 文件,加入以下代码:<?php show_source ("original_php_script.php"); ?>。用你想要显示源代码的文件名替换掉 original_php_script.php。
1 t9 D/ G8 `1 L! e" ~0 C注: 在 Windows-Apache 组合中,所有路径中的反斜线例如 "c:\directory\file.ext" 都必须转换成斜线,如 "c:/directory/file.ext"。
3 e. n: ]5 E! M: }8 F7 f! I% k: g============================================
/ Z: g- ~' y# u四、实现Apache虚拟主机的两种方案8 Z* s% Y* n( L' F
简介:这里说的虚拟主机是指在一台机器上仅运行一个httpd后台程序 6 W7 }* R4 V1 C5 N2 [7 e
支持多个Apache服务器,如在公司财务部门有一台web服务器,名为 ' C5 P5 A7 @" d) s
account.yourdomain.com,同时又想为sales部门建立网站,网站内容也 % b! u% o0 P8 n
放在该机器上,通过sales.yourdomain.com访问,这就要用到虚拟主机 % _2 I3 Z) Z" Y0 n0 [
设置。 , ~7 K+ F7 U* J3 E3 i: F9 _
设置Apache虚拟主机通常有两种方案 , T( G- R7 U( w2 m/ ^
1.基于IP的虚拟主机 5 [$ F+ f; ~* \5 O8 z
  这种方式需要在机器上设置IP别名,象上面的例子,在一台机器的 ! x/ z) D5 `$ P, g" w0 T
网卡上绑定多个IP地址去服务多个虚拟主机。
  S' h+ T' a3 u/ J# z* W. m4 Z若该机器的IP地址为192.168.0.1(account.yourdomain.com),首先
' n, g' a" j/ Q$ Q: \你要设置IP别名(假设用192.168.0.2作为其别名IP)。加下面的行到
: M0 i, s% l# b/etc/rc.d/rc.local,确保每次启动后自动运行。
# e9 u0 g/ e! u; u' F; p#/sbin/ifconfig eth0:0 192.168.0.2 netmask 255.255.255.0 broadcast \ $ b' N6 q* W* y& r1 M& F! B+ j4 ~9 L6 _
192.168.0.255 up
% _" l; O9 i7 g+ c/ j#/sbin/route add -host 192.168.0.2 eth0:0 - F! M' E2 r( l. g
然后你需要设置/etd/httpd/conf/httpd.conf文件:
5 N0 h# g& |& D1 h$ ~# L! W<VirtualHost 192.168.0.2>
8 s0 S% d/ }5 c3 l& L# \) BServerAdmin webmaster@yourdomain.com
$ `. _3 ~# l; k; w, S: Z, JDocumentRoot /home/httpd/sales.yourdomain.com
* D( n& o% D, j5 q6 l! uServerName sales.yourdomain.com
+ k8 @; l, b  h6 O% v" S$ [0 h7 q! mErrorLog /var/log/httpd/sales.yourdomain.com/error_log & ?+ \4 b4 O- C. S; M4 Q
TransferLog /var/log/httpd/sales.yourdomain.com/access_log 4 e8 @4 ]5 {* x. L3 r: M
</VirtualHost> , l; _2 s' V: h
然后分别创建目录 1 V1 {/ L: @$ ~! M& b
/home/httpd/sales.yourdomain.com,
& M$ Y2 S3 l8 j' S3 |/var/log/httpd/sales.yourdomain.com . R- G* w' o% X5 A0 f" T+ b% F7 F
放相应的网站内容到目录/home/httpd/sales.yourdomain.com下即可,并确保
& n5 I$ P( [& f& x. r你内部的DNS指定sales.yourdomain.com的A记录到IP地址192.168.0.2 。
( d: f; \3 M% k% J' a9 z# i  m1 C注:这种基于IP的虚拟主机有一个缺点,就是你需要更多的IP地址去服务各自的 1 D9 N$ E7 `- T! L
虚拟主机,如果你仅仅有一个IP地址,那么你将可以考虑用基于名字的虚拟主机 ( a: Y  {" F( }! {
方案。
! Q7 Y9 p8 L- f# b% J+ K6 F! N+ w4 h' W4 ]( [
2.基于名字的虚拟主机:
; \- W! R0 A+ v+ n. O  R% q  它的优势就是不需要更多的IP地址,容易配置,不需要其它软硬件,现代的
. o1 O; x, S0 c  {( |浏览器大多都支持这种方式。与基于IP的虚拟主机一样,你需要编辑文件
! X8 q% N' A9 W1 Z7 i0 E" e  U/etc/httpd/conf/httpd.conf
% m( K5 K, q" mNameVirtualHost 192.168.0.1 & ~+ @  y# `, Q: y! S# j/ n
<VirtualHost 192.168.0.1>
4 d" B; ^; i  D/ u  p4 aServerAdmin webmaster@yourdomain.com
3 I+ n; I6 `& a, X! y  ^( t1 v' h2 X& iDocumentRoot /home/httpd/sales.yourdomain.com
7 D  c# _; U5 l1 n) G) Q) eServerName sales.yourdomain.com
4 m' ^5 m& d0 @) FErrorLog /var/log/httpd/sales.yourdomain.com/error_log : `1 H3 `1 E" k$ V  ~$ B
TransferLog /var/log/httpd/sales.yourdomain.com/access_log
/ G. W) `: M* y" e8 N0 |, ]</VirtualHost> ) L6 v9 b: t2 _, n( X/ @8 S) O: }
<VirtualHost 192.168.0.1> / H9 E1 n' m, w0 P" @7 z% q# k
ServerAdmin webmaster@yourdomain.com
9 h+ `/ w3 j, L/ C$ jDocumentRoot /home/httpd/hr.yourdomain.com
$ _9 l8 K+ F( B& s. S. mServerName hr.yourdomain.com
. n3 C  E! Y7 a) xErrorLog /var/log/httpd/hr.yourdomain.com/error_log 2 U1 A. v! t3 [
TransferLog /var/log/hr.yourdomain.com/access_log
! [* l, V, E! ?- ^4 p</VirtualHost>
  Y' e+ I8 s" `* z% K注: 你需要加NameVirtualHost 指示在最前面,下面依次为各个虚拟主机, 0 ]9 j- G0 N' [- D; {9 z
为了让它工作,你需要把sales.yourdomain.com, hr.yourdomain.com的DNS   G* t! R7 a+ A5 }9 Q$ S& h
都指向IP地址192.168.0.1
2 ?# Q# `5 R0 W' t) l上面的两种都将工作,如果是在外部网段,在互联网上提供WWW服务,你可能 5 K3 v1 W5 N) o# b$ n$ y0 C
没有足够的真实IP地址来支持多个虚拟主机,便可用基于名字的虚拟主机方案,
' `$ b2 C- F0 @% o6 j  N: {, E4 d. L若是在内部网段上,你有较多的内部保留IP地址,将没有太大的区别。 * {; A8 D) Z+ _, G) ^' s/ H/ I
提示:上面所提到的相对目录可以用绝对路径代替,如:
( ]' _+ f' t4 D/home/httpd/hr.yourdomain.com 可改为 D:/Inetpub/wwwroot
% O3 ]- c  P( u8 L  H0 x, l, [3 [==================END=======================; u: G2 F. C0 |6 O/ A6 K
这只是入门,只能保证你的WEB服务器能正常运,要了解更多的 PHP 及 Apache 的详细设置,还要靠大家更加深入的实践...

另外可以用一个安装包安装全部PHP软件6 l8 [( `0 B2 l7 D% [
下载地址:
6 n" f; Q2 Z. Phttp://webclub.net.cn/data/phpStudy1.2.5.rar

TOP

亲娘那
) E5 F' B8 P: @2 `) ^' E# ~9 ]7 ~怎么没图哈
2 K; F: f# B( e8 K+ p7 k应该图文结合啊
/ ^: ]  E$ N" v  t& j0 H0 A

TOP

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