返回列表 发帖

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

前言:这一篇是我亲身配置的经历,希望大家喜欢,现在网络的教程中,PHP运行在Apache“模块”方式的文章中都少了最重要的一个步骤,也就是说按其方法配置PHP不能运行,有的太过简单,有的太过复杂,所以花了点时间整理一下。
- r, `: Q# b& {# V( _+ S5 h; T/ S* y) T/ P8 q4 \9 X" m$ r8 M
一、安装PHP4
; I7 T7 ]1 b# h4 [3 |. M7 u* Z5 H我们需要安装的是win32版本,下载当然也是win32版本 php4.3.0-win32.zip
1 a( e; A# v4 M4 ~1 W. Y1.下载后,解压到c:\php目录下。
# s' y2 W; v: ^% |2 w" r2. 把c:\php目录下的php4ts.dll php4ts.lib文件都拷贝到c:\winnt\system32目录下(即window 2000系统目录下的system32目录)。
; o0 T8 W3 A5 X/ x3. 修改php.ini文件,把c:\php目录下的php.ini-dist文件改名为php.ini 用记事本或其它可编辑文本的软件把它打开。
" P6 w( n! \0 |3.1找到register_globals = Off 改为register_globals = On
, }& N5 ^* U6 K* T0 {" C; T这一步是为了使部分旧的PHP程序能正常运行;/ w# p. c! `2 d3 q
3.2找到 extension_dir = ./ 把它改为extension_dir = c:\php\extensions
% {2 R6 p- ^: o% D) ]5 |* ?% v以下内容新手请略过" _4 ]9 O6 m! B& K
===============新手略过开开始================2 x! N; [0 |4 F  ~* y5 a; d
刚刚的修改是指定php4扩展dll文件存放的路径 由于php4默认所带的php.ini-dist中,是关掉了所有的扩展dll的功能( Windows Extensions)
8 J3 B. Q8 S3 v4 T;extension=php_bz2.dll, Q' @3 l& q% |1 z; O+ B8 c
;extension=php_cpdf.dll
, q/ n% }7 A" c1 S/ y& i) c; |1 };extension=php_crack.dll
, V/ V+ k. v1 V) \# a7 F$ Q;extension=php_curl.dll
3 \$ N5 ?: N+ m7 N; t.....
3 _1 F/ }- ~* i要做的就是把extension前面的分号去掉就行了,当然这样是不够的。因为有些extension在我们的系统是不能使用的,比如系统中没有安装 sql server的话,那么extension=php_mssql.dll就要用;(分号)把它注释掉;: F9 |2 B- m& E2 U
其中,PHP4带了两个GD扩展,请选用一个,另一个先用分号注释掉,以免出现函数无法注册的错误;
2 y& L! h6 ^8 g9 i* R1 ^9 }如下面
: e( U$ Q) \& E" g' D- Qextension=php_gd.dll  m1 ]5 C& v% [" I
;extension=php_gd2.dll6 Q# ^* A* J/ i  c2 a, B
按实际所须的extension=php_xxxx.dll前面的分号都去掉。5 W% n8 Q. r! c% G1 w4 E, A7 I1 W
=============新手略过结束================' r0 g1 {! M/ Z, \2 f+ V* Y1 ^+ F
3.3 找到session.save_path,把这一项改为 session.save_path = c:\tmp. {( G+ r8 s; @! n7 R$ h
并在C盘建立一个TMP目录
- T3 Q/ J1 H$ {' u; F5 l5 O/ h3.4记得要保存刚刚的修改 并把php.ini文件放置在c:\winnt目录下。5 Z% r  l9 Z  e' E' n
================================================7 L5 f% U0 m% |; A# }" f
二、安装MySql# |. T% b" b6 M3 B
安装MySql 当然,我在MySql.com 下载的MySql是一个压缩包,要先解压出来;再点setup.exe安装;- F. |$ i8 O' c& y& R
按默认安装,即安装在c:\MySql下,安装完后,按“开始”菜单中的“运行”打进cmd进入dos窗口,进到c:\MySql\bin 目录;
' B$ \8 ~) k4 f. m! f3 w, f运行mysqld-nt --install (将会出现一个Dos窗口,随即自动关闭!如果没有出任何信息,即安装到service成功!)
7 f# v# `" }# n从“开始”菜单“程序”=》“管理工具”=》“服务”,打开后,将会找到MySql,点击mouse右键 选择启动 回到刚刚的Dos窗口
: N" \' W, b+ y即c:\MySql\bin目录下 运行mysqladmin -u root password 123 即把root用户的密码设置为123 这一步,如果没有出错,说明初始化root密码成功;
4 [  S8 u( h1 b2 e4 N当然从本机进入MySql是不需要用户名和密码,但用php 程序或是其它程序连接MySql时就要用到;/ ]( b. c0 _' s7 l' L2 v% }+ o
测试进入 第一种方法:直接动行MySql进入MySql 的dos管理状态;
; e+ l* S+ v& L( B% C$ v第二种方法:运行MySql -uroot -p MySql将会提示让您输入密码,密码当然就是刚刚设置的123(当然,得按设置的密码喽,不一定得设置是123)# i# c- ~4 F4 t$ X
出现: 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> + k( W' v4 S$ l( D% i! D
即安装MySql成功。
) Z/ m5 W6 w, d* x# c; ?% [7 F" [9 v==========================================$ D4 c2 f4 ?" w' K
三、安装Apache 1.3.x 及 PHP运行设置
9 S! [! f3 R+ v1.首先下载Apache,Apache软件一般叫作apache_1_3_x.win32.exe。运行它。它会问你将Apache安装到什么地方,为他系统安全及操作容易,我们不要使用默认路径,你可以设为c:\Apache或C:\,因为马上你就要修改它的配置文件。% P( \0 j5 a8 f: h  k. q2 z- \, x
如果安装没出什么错的话,Apache就可以用了。有很多readme文件可供参考,但仅有一个文件是讲Win32平台的,包括Window 9x和Windows NT。 5 T! J2 s7 z! x
有两种方式使 PHP 工作于 Windows 下的 Apache 1.3.x。一种是 CGI 方式(php.exe),另一种是使用 Apache 模块 DLL。不管哪种方式都需要停止 Apache,编辑 httpd.conf 来配置 Apache 以加入PHP支持。 ! C' M' P0 @, v% c* |# f/ a
值得在这里指出现在 Windows 下的 SAPI 模块更加稳定了,我们推荐使用模块方式,因为更加透明和安全。
0 b" z3 @; e; L9 p. m尽管有几种不同方法在 Apache 下配置 PHP,但是对新手来说还是非常简单易用的。有关更多的 httpd.conf 配置指令请参考 Apache 文档。 8 Y3 e1 q* s2 `: U
如果你按照手工安装步骤一节中的说明把 PHP 解压缩到了 c:\php\ 目录下,那么需要加入以下三行到 Apache 配置文件中以 CGI 方式安装: # v& `# j* Y. G; C& v
5 ~! ?3 z/ r( b9 E, ~7 }
ScriptAlias /php/ "c:/php/" # C: O& X6 x& }* T7 \9 ~" w
AddType application/x-httpd-php .php .phtml
) X2 H; B0 K4 {+ w/ A* r# [Action application/x-httpd-php "/php/php.exe"
7 \/ ^4 h& ~+ j" ?2 b注意上面的第二行在原来的 httpd.conf 中就有的,不过被注释了。还有记住用你自己放置 PHP 的路径替换 c:/php/。 , \( i5 Z: n/ `9 k6 R# v2 t
5 e3 p* h% Q) h$ |! L
警告 " _# n: v8 s9 x/ y( _" l3 T
在 CGI 方式下,你的服务器可能会受到几种攻击的影响。请学习如何防止攻击。
# e% ^+ S* _4 G# M3 H: g; M( l" C0 T8 z; ~; ~
如果你想在 Apache 中用模块方式使用 PHP,确认把 php4ts.dll 拷贝到 windows/system(Windows 9x/Me)或者 winnt/system32(Windows NT/2000)或者 windows/system32(Windows XP)目录下,覆盖原来的文件。然后在 Apache 配置文件 httpd.conf 中加入以下两行:
! i0 V8 N5 t* j: `8 [0 d1 H
6 m: M% ?8 d( |" B( q: n用自己喜爱的编辑器打开 httpd.conf,找到 LoadModule 指令的部分,在其列表的最后部分加上如下一行,) W. v: W0 L, G. F( C. d
对 PHP 4:
- e" g- H& t2 ^7 X2 ?LoadModule php4_module c:/php/sapi/php4apache.dll6 d3 Q2 ~* j" |& |$ b" Y
对 PHP 5:5 p0 V8 H' k$ b( c4 b$ P7 L) e
LoadModule php5_module "c:/php/sapi/php5apache.dll"
$ N- I" y9 [4 ?. T7 C- M你可能发现在用 Windows Installer 安装了 Apache 之后需要为用 AddModule 指令定义 mod_php4.c。尤其是在定义了 ClearModuleList 指令时格外重要,向下滚动几行可以找到该指令。你将会看到 AddModule 项目的列表,在列表的最后加上这一行:
2 Y( `/ O* l+ U; O6 ^# yAddModule mod_php4.c
2 b- C$ j, s5 |& s/ e( ^对于 PHP 5 则为:
* _; X* @& D. C$ j2 ]% C; R8 yAddModule mod_php5.c( G0 M6 ~0 N+ X
搜索类似 # AddType allows you to tweak mime.types 的短语,你会找到一些 AddType 的项目,并且在列表的最后有这一行: AddType application/x-httpd-php .php。你可以在这里选择任何想用 PHP 解析的后缀。.php 只是所建议的一个。甚至可以包括 .html,也可以加上 .php3 来向下兼容。 % t* p& W. m! N& R! T; r. r

7 X/ t$ J& m, l修改了配置文件之后记住重新启动 Apache,例如如果你的 Apache 是作为 Windows 的服务安装的,NET STOP APACHE 后面接上 NET START APACHE。或者用你通常使用的快捷方式。 + N$ O& B, a# b) c  C- b5 V1 j/ M* }
有两种方式使用源程序语法彩色显示特色,但是取决于你的安装方法。如果你配置了 Apache 的 SAPI 模块方式使用 PHP,那么在 httpd.conf 中(和插入 AddType application/x-httpd-php .php 是同一个位置)加入下面一行就可以使用本特色:AddType application/x-httpd-php-source .phps。
* u% S) p% r, |: D. d如果你用 CGI 方式使用 PHP,那你需要用 show_source() 函数。建立一个 PHP 文件,加入以下代码:<?php show_source ("original_php_script.php"); ?>。用你想要显示源代码的文件名替换掉 original_php_script.php。
+ F/ V' O& b, a. v3 O注: 在 Windows-Apache 组合中,所有路径中的反斜线例如 "c:\directory\file.ext" 都必须转换成斜线,如 "c:/directory/file.ext"。
/ F) r/ B5 `6 I$ x3 `6 }& k============================================
6 Y6 x1 c& s% Y1 U四、实现Apache虚拟主机的两种方案6 K  V/ X/ @4 S4 i: ^+ z0 P* Z& R$ p- o4 n
简介:这里说的虚拟主机是指在一台机器上仅运行一个httpd后台程序 0 j9 x; m5 j9 R) s
支持多个Apache服务器,如在公司财务部门有一台web服务器,名为
1 W# G1 m3 B/ W4 @! _account.yourdomain.com,同时又想为sales部门建立网站,网站内容也 1 x4 g, W' ~& a
放在该机器上,通过sales.yourdomain.com访问,这就要用到虚拟主机 + Q5 P% p3 {9 ]5 s
设置。 . Q( \4 Q) s. w+ F7 |1 p; @
设置Apache虚拟主机通常有两种方案 " s" ^6 S+ O; G& k
1.基于IP的虚拟主机 0 C3 q; l# ]( k7 z( F% e
  这种方式需要在机器上设置IP别名,象上面的例子,在一台机器的
$ u! K* `: Y- r9 ^网卡上绑定多个IP地址去服务多个虚拟主机。
; i# r6 c/ Y1 m/ \7 {' K  ^. R若该机器的IP地址为192.168.0.1(account.yourdomain.com),首先
  U4 K* i6 \, Y4 @+ p! u  A" E你要设置IP别名(假设用192.168.0.2作为其别名IP)。加下面的行到 ' A, I* }1 g) {  p
/etc/rc.d/rc.local,确保每次启动后自动运行。 - O( z1 _6 P7 u# X
#/sbin/ifconfig eth0:0 192.168.0.2 netmask 255.255.255.0 broadcast \
" D" k& l8 l9 F: W0 R4 k3 k+ v192.168.0.255 up
( H$ p: P) K6 r* c) t: V- Y" r#/sbin/route add -host 192.168.0.2 eth0:0 & F/ m% d6 ^; v# G- v, P! @+ L6 H
然后你需要设置/etd/httpd/conf/httpd.conf文件:
3 r( R' P6 N2 k" n<VirtualHost 192.168.0.2>
2 D1 c) T5 x3 B6 OServerAdmin webmaster@yourdomain.com $ K4 i+ @- `5 C5 {) I3 N3 D% v
DocumentRoot /home/httpd/sales.yourdomain.com
( o2 h5 X* t9 }) S2 cServerName sales.yourdomain.com ! F0 J+ u! Q" {0 X: w2 S1 d
ErrorLog /var/log/httpd/sales.yourdomain.com/error_log ' s7 j8 y0 |: I
TransferLog /var/log/httpd/sales.yourdomain.com/access_log
: K5 y7 N3 d8 S  M% d</VirtualHost>
+ G6 }3 a2 E" R* {8 Q. w' z9 h/ M) C然后分别创建目录
" k5 ?% z- ?; F& O+ ?/home/httpd/sales.yourdomain.com,
1 F. M7 v. x7 k/var/log/httpd/sales.yourdomain.com
! N* O5 O& m+ ]& w% Q3 Y. c& }1 t6 V放相应的网站内容到目录/home/httpd/sales.yourdomain.com下即可,并确保
, m4 G  y' J' a7 I7 a* U. u你内部的DNS指定sales.yourdomain.com的A记录到IP地址192.168.0.2 。
3 ^* V* D- L% j5 x8 w& ~注:这种基于IP的虚拟主机有一个缺点,就是你需要更多的IP地址去服务各自的 $ I$ m' o( j2 r1 a% x( M! Q
虚拟主机,如果你仅仅有一个IP地址,那么你将可以考虑用基于名字的虚拟主机 9 O# L6 g* M3 W
方案。
5 |5 D; w, m1 r0 e
8 \0 i+ Z5 c' Y6 c, u2.基于名字的虚拟主机: - }5 f4 g1 a; e" e( u% n$ J7 m
  它的优势就是不需要更多的IP地址,容易配置,不需要其它软硬件,现代的
# \  T. [2 o+ @4 j2 V  Q浏览器大多都支持这种方式。与基于IP的虚拟主机一样,你需要编辑文件
" O# ^7 a9 T* V; E& Z/etc/httpd/conf/httpd.conf
! U. j1 F9 S: |5 a# k+ |NameVirtualHost 192.168.0.1
4 n2 Y4 o. s5 G! q# E, C0 s% c<VirtualHost 192.168.0.1>
7 o* d5 t4 Z" i7 d8 Z9 tServerAdmin webmaster@yourdomain.com * A, g" {5 X* m% Y. f
DocumentRoot /home/httpd/sales.yourdomain.com
7 o) ^) O' V, _9 [* iServerName sales.yourdomain.com " Q8 A& I) B$ ^) T' n
ErrorLog /var/log/httpd/sales.yourdomain.com/error_log 2 h6 k. \$ K) e. V9 b* f$ e  t2 N
TransferLog /var/log/httpd/sales.yourdomain.com/access_log
7 O$ l) p& C" a% F" Z! C</VirtualHost> + x* e; Z2 {. i" t1 j
<VirtualHost 192.168.0.1> ' ]$ ?. I/ t( i5 ]
ServerAdmin webmaster@yourdomain.com
5 f! A5 b8 ?/ B+ r% ]' A0 FDocumentRoot /home/httpd/hr.yourdomain.com & U9 s6 e7 Z0 }
ServerName hr.yourdomain.com : z* n& D( u' q' O8 \  k: x
ErrorLog /var/log/httpd/hr.yourdomain.com/error_log   h% j2 U$ }" Z8 B; o+ b
TransferLog /var/log/hr.yourdomain.com/access_log
- u1 g5 i; N* N8 X6 k7 @</VirtualHost> 2 o9 J9 l5 ]5 X" T
注: 你需要加NameVirtualHost 指示在最前面,下面依次为各个虚拟主机, ( N8 ^: d8 R* v- O0 H8 L& f9 I
为了让它工作,你需要把sales.yourdomain.com, hr.yourdomain.com的DNS 4 n' V& E2 t, O( C
都指向IP地址192.168.0.1 1 z/ `7 n! ]- B1 j( U4 ^. u
上面的两种都将工作,如果是在外部网段,在互联网上提供WWW服务,你可能
* L1 [: m; I* E' `2 d: e没有足够的真实IP地址来支持多个虚拟主机,便可用基于名字的虚拟主机方案,
" b0 r$ @( }& {4 B若是在内部网段上,你有较多的内部保留IP地址,将没有太大的区别。 0 W5 h: p& N; Y4 b* [
提示:上面所提到的相对目录可以用绝对路径代替,如:
! X( T" B8 l2 Z  k/home/httpd/hr.yourdomain.com 可改为 D:/Inetpub/wwwroot
5 J: _, Y9 |6 B7 `& N( Y* R==================END=======================
9 X( r# O4 N9 s5 r7 ?这只是入门,只能保证你的WEB服务器能正常运,要了解更多的 PHP 及 Apache 的详细设置,还要靠大家更加深入的实践...

另外可以用一个安装包安装全部PHP软件
( R* S7 \3 G2 f+ h/ N下载地址:
; q6 q- e; r  P( A* A# }http://webclub.net.cn/data/phpStudy1.2.5.rar

TOP

亲娘那
3 a; u0 ~2 n" v( N4 L/ u怎么没图哈
. ~/ w  q: {# H& {" a& K应该图文结合啊1 |- J1 v( B$ v; M& f+ ~( \, a: h

TOP

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