apache在windows2003下的安全设置

众所周知,在windows下当Apache第 一次被安装为服务后,它会以用户“System”(本地系统账号)运行。如果web服务器的所有资源都在本地系统上,这样做会问题比较少,但是将会具有很 大的安全 权限来影响本地机器,因此千万不能开启System帐号的网络权限!

于是要创建一个新的帐户来替代这个帐号启动apache并设置相应的权限:

1.在计算机管理里的本地用户和组里面创建一个帐户,例如:apache,密码设置为 apacheuser,加入guests组(如果出现问题,可以赋予user权限);

 

2.打开开始->管理工具->本地安全策略,在用户权限分配中选择“作为服务登陆”,添加apache用 户;

 

3.计算机管理里面选择服务,找到apache2.2,先停止服务,右击->属性,选择登陆,把单选框从本地系统帐户切换到此帐户,然后查找 选择apache,输入密码apacheuser,然后点确定(这个时候apache还不能正常启动,一般情况肯定会报错:Apache2.2 服务因 1 (0x1) 服务性错误而停止。);

 

4.赋予apache安装目录(比如:D:/apache2.2)以及web目录(比 如D:/wwwroot)apache帐号的可读写权限,去除 各磁盘根目录除administror与system以外的所有权限,赋予apache安装 目录所在的磁盘根目录apache帐户的可读取列目录权限(我 开始觉得没必要,但后来发现:这是导致上面出错的关键。)

 

5.启动apache,一切OK了。

 

6.php.ini中指定的PHP临时上传目录和session保存目录,并给予目录apache完 全控制权限,例如:
upload_tmp_dir = "D:/wwwroot/Tmp/uploadtmp/"
session.save_path = "D:/wwwroot/Tmp/sessiontmp/"

 

7.给予D:/php目录读取与运行的权限;

 

8.给予zend安装目录读取与运行的权限;

 

9.限制读取访问的目录,修改apache安装目录下conf文件夹下的 httpd.conf,加上:
php_admin_value open_basedir "D:/wwwroot"
php_admin_value safe_mode On

 

httpd.conf配置(假如将PHP读写权限限制在E:\smis目录下)

Apache2.0配置示例:
<VirtualHost *:80>
ServerName www.abc.com
DocumentRoot "E:/smis"
Options FollowSymLinks IncludesNOEXEC Indexes
DirectoryIndex index.html index.htm default.htm index.php default.php
AllowOverride None
Order Deny,Allow
Allow from all
php_admin_value open_basedir "E:/smis/;E:/APMServ5.2.0/PHP/uploadtemp/;E:/APMServ5.2.0/PHP/sessiondata/"
php_admin_value safe_mode On
</VirtualHost>




Apache2.2配置示例:

<VirtualHost *:80>
ServerName www.abc.com
DocumentRoot "E:/smis"
</VirtualHost>
<Directory "E:/smis">
Options FollowSymLinks IncludesNOEXEC Indexes
DirectoryIndex index.html index.htm default.htm index.php default.php
AllowOverride None
Order Deny,Allow
Allow from all
php_admin_value open_basedir "E:/smis/;E:/APMServ5.2.0/PHP/uploadtemp/;E:/APMServ5.2.0/PHP/sessiondata/"
php_admin_value safe_mode On
</Directory>

posted @ 2011-02-16 11:09 海军 阅读(194) 评论(0) 编辑

1、conf/httpd.conf只需将2个虚拟主机启动的注释符号#去掉即可。其它不要改动。

2、extra/ httpd-vhosts.conf只需先将2个NameVirtualHost ,再将2个端口的指向指好即可。

附上httpd-vhosts.conf文件

#
# Virtual Hosts
#
# If you want to maintain multiple domains/hostnames on your
# machine you can setup VirtualHost containers for them. Most configurations
# use only name-based virtual hosts so the server doesn't need to worry about
# IP addresses. This is indicated by the asterisks in the directives below.
#
# Please see the documentation at
# <URL:http://httpd.apache.org/docs/2.2/vhosts/>
# for further details before you try to setup virtual hosts.
#
# You may use the command line option '-S' to verify your virtual host
# configuration.

#
# Use name-based virtual hosting.
#
NameVirtualHost *:81
NameVirtualHost *:82
#
# VirtualHost example:
# Almost any Apache directive may go into a VirtualHost container.
# The first VirtualHost section is used for all requests that do not
# match a ServerName or ServerAlias in any <VirtualHost> block.
#

<VirtualHost *:81>
         ServerAdmin jsw7001@hotmail.com
         DocumentRoot D:/AppServ/www
         ServerName www.dede.com
         ErrorLog D:/AppServ/www/errornongye.log
         CustomLog logs/dummy-host2.appservnetwork.com-access_log common
</VirtualHost>


<VirtualHost *:82>
         ServerAdmin jsw7001@hotmail.com
         DocumentRoot D:/AppServ/www/wwwnongjiale
         ServerName www.dede.com
         ErrorLog D:/AppServ/www/wwwnongjiale/errornongjiale.log
         CustomLog logs/dummy-host2.appservnetwork.com-access_log common
</VirtualHost>
<VirtualHost *:80>
    ServerAdmin webmaster@dummy-host2.x
    DocumentRoot "C:/Apache2.2/docs/dummy-host2.x"
    ServerName dummy-host2.x
    ErrorLog "logs/dummy-host2.x-error.log"
    CustomLog "logs/dummy-host2.x-access.log" common
</VirtualHost> 

posted @ 2011-02-16 11:09 海军 阅读(58) 评论(0) 编辑
不管哪个版本。安装方法都差不多。以下以 Apache 2.0.52 PHP5.2.5版为例
====================================
注:相关图片请看本空间相册
相关软件下载地址:http://hi.baidu.com/%D0%A1%D0%A1%D3%C4%BB%EA/blog/item/78a864d8b5e1883632fa1ce1.html
=====================================
先安装 apache 默认安装就行
服务器名 localhost
服务器IP localhost
管理员邮箱 my@localhost
图01

接下来安装PHP

打开 PHP5目录
查找目录下所有 dll 文件。包括子目录
大约为65个文件。
图02

复制到 C:\windows\system32 目录下 2000系统为 C:\winnt\system32 目录
重命名 php.ini-dist 为 php.ini
把 php.exe  和 php.ini 复制到 C:\windows 目录下 2000系统为 C:\winnt
图03

接下来就是配置服务器
先建立一个目录做为服务器的主目录,例如 D:\web
图04

打开 C:\windows\php.ini 文件修改以下几个地方

440行 magic_quotes_gpc = Off
472行 include_path = ".;D:\web"
486行 extension_dir = "C:\windows\system32\"
625行 extension=php_mysql.dll
991行 session.save_path = D:/web/tmp  要保证目录存在,如果没有自己建一个
图05

打开 apache 配置文件,文件位置在
D:\Program Files\Apache Group\Apache2\conf\httpd.conf
视你的安装目录决定
图06

修改以下几个地方
228行 DocumentRoot "d:/web"
321行 DirectoryIndex index.html index.htm index.php
701行 AddDefaultCharset GB2312

文件最后加上以下代码加载PHP

ScriptAlias /php/ "c:/windows/"
AddType application/x-httpd-php .php
Action application/x-httpd-php "/php/php.exe"
LoadModule php5_module C:/windows/system32/php5apache2.dll
AddOutputFilter PHP .php
AddInputFilter PHP .php
图07

重启 apache 完成配置
图08

安装 Zend
基本上默认安装就可以了

测试一下吧。

<?php

//文件名 index.php
phpinfo();
?>
图09 安装 MYSQL5 先默认安装并配置结束。配置方法看图10-图12 图10 图11 图12 要进命令行重设一个密码,不然好头疼。。照着输入就可以了。只要你也是安装在这个目录。。 那个密码。就是图11里设置的密码。不设不让装。。NND D:\>cd mysql D:\MySQL>cd mysql server 5.0 D:\MySQL\MySQL Server 5.0>cd bin D:\MySQL\MySQL Server 5.0\bin>mysql -u root -p mysql Enter password: ****** mysql> update user set Password=PASSWORD('') where user='root'; mysql> flush privileges; mysql> quit 图13 我是单机测试用的,所以密码为空就行了。方便一点。^_^ 用一个简单的代码。测试一下。 <?PHP
//文件名 mysql.php
if(function_exists('mysql_connect'))
{
   echo
"MYSQL 函数库已经加载!\n";
  
//MYSQL连接
  
$rt=@mysql_connect('localhost','root','');
   if(
$rt)
     echo
'已经可以使用 MYSQL 了.';
   else
     echo
'<br>\n MYSQL 工作异常!无法连接。<br>';
      echo mysql_error();

}else{
   echo
"MYSQL 函数库没有加载,请重设 php.ini!";
}
?>
图14 完成了。
posted @ 2011-02-15 23:04 海军 阅读(70) 评论(0) 编辑

WAMP配置过程
1、注意
下面用到的一些特殊字符串,分别表示你自己安装的相关软件的路径,在实际配置时需要替换成真正的路径:
$PHP$:PHP的安装路径。比如你的PHP安装在d:\php5.2,则$PHP$ = d:\php5.2
$APACHE$:Apache的安装路径。
2、安装PHP
2.1 解压
直接使用PHP的Windows压缩包php-5.2.0-Win32.zip,将其解压到某个路径即可。
2.2 基本配置
1、 在$PHP$路径下找到php.ini-dist文件,将其名称改为php.ini,这就是PHP的配置文件
2、 用文本编辑器打开php.ini文件,下面要对它进行一些基本的设置
3、 搜索一行:extension_dir= ‘./ ‘,这是要配置PHP扩展包所在的路径,将其改为extension_dir = ‘$PHP$/ext’
4、 查找一行: ;extension=php_mysql.dll。它是用来加载mysql扩展的。默认行首有一个分号,将本行内容处于注释状态。为了以后使用PHP操作MySQL数据库,需要将该模块加载,只要去掉用于注释的分号就可以了,即改为:extension=php_mysql.dll
5、 同时还可以开放的模块有:php_exif.dll、php_gd2.dll用于图像处理;php_mbstring.dll用于宽字符集处理;php_mysqli.dll升级版MySQL处理;php_pdo_mysql.dll通过PDO对MySQL进行处理等
6、 查找一行:;default_charset = "iso-8859-1",将其改为:default_charset = "gbk"。这样,PHP将会在页面上自动输出"Content-Type: text/html; charset=gb2312",可以默认设置页面上的字符集,预防汉字乱码问题。
7、 查找一行:;upload_tmp_dir =,将其注释去掉,并设置指向某一路径。该路径用来临时存放上传文件的。
8、 查找一行:;session.save_path=,将其注释去掉,并设置指向某一路径。该路径用户存放会话文件。
9、 查找一行:;date.timezone=,将其设置为date.timezone = 'Asia/Shanghai',否则默认取出的系统时间与本地时间相差8小时。
10、 查找一行:doc_root=,将其改为:doc_root = $APACHE$\htdocs

3、安装Apache
3.1 安装
使用Apache的windows安装包apache_2.2.4-win32-x86-no_ssl.msi进行安装。注意其中的Domain、ServerName、AdministratorEmail都需要设置。
3.2 基本配置(可选)
1、 用文本编辑器打开$APACHE$/conf目录下的httpd.conf文件,这是Apache的配置文件,进行后续配置
2、 修改Apache的默认路径。Apache服务器的默认根路径是$APACHE$/htdocs,即当你在浏览器中输入http://localhost/后,访问到的就是htdocs目录下的文件。其配置信息在httpd.conf文件中这样定义:DocumentRoot "$APACHE$/htdocs",你可以根据自己的情况,将服务器的根路径设置到其他路径下。
3、 修改Apache的默认首页设置。查找到<IfModule dir_module>模块,将其改为:
<IfModule dir_module>
DirectoryIndex index.html
DirectoryIndex index.php
DirectoryIndex index.php3
DirectoryIndex default.php
</IfModule>
这样,直接输入某个路径,不直接指向某个文件的时候,Apache会自己按顺序查找index.html、index.php等文件显示出来。
4、 增加虚拟路径。使用Alias指令增加虚拟路径。比如在httpd.conf的最后增加:
Alias /test/ "d:/apache2/test/"
<Location /test/>
Order allow,deny
Allow from all
</Location>
这样设置后,你就可以通过http://localhost/test访问到d:/apache2/test目录下的文件了。
4、在Apache中配置对PHP的支持
4.1 配置
打开$APACHE$/conf/httpd.conf,在文档最后添加:
# PHP 5
LoadModule php5_module "$PHP$/php5apache2_2.dll"
AddType application/x-httpd-php .php
# php.ini
PHPIniDir "$PHP$"

保存关闭后重启Apache服务器。
4.2 测试
在$APACHE$/htdocs下新建文件phpinfo.php,用文本编辑器打开后,输入
<?php
phpinfo();
?>
保存关闭。在浏览器中输入http://localhost/phpinfo.php。如果能够显示出PHP的配置信息,则说明配置成功。

5、安装MySQL
直接使用MySQL的window安装包mysql-5.0.37-win32.exe进行安装。
在配置数据库的过程中,注意将默认字符集改为gbk。
记住管理员root用户的密码。
6、安装PhpMyAdmin
6.1 安装
将PhpMyAdmin的压缩包phpMyAdmin-2.10.0.2-all-languages.zip解压到htdoc目录下,可以将目录名改为phpMyAdmin。
6.2 配置
下述两种配置任选一种即可。
1、手工配置:

将phpMyAdmin目录中的config.sample.inc.php文件重命名为config.inc.php,修改
$cfg['Servers'][$i]['auth_type'] = 'config'; //cookie http
$cfg['Servers'][$i]['user'] = 'username'; // MySQL user
$cfg['Servers'][$i]['password'] = 'password'; // MySQL password

2、PhpMyAdmin配置向导

在PhpMyAdmin的目录下新建config目录,并设置该目录的属性为可写,然后打开浏览器,运行:http://localhost/PhpMyAdmin/scripts/setup.php,将出现PhpMyAdmin的配置向导。
点击“server”标签下的“add”按钮,在打开的页面中根据提示输入数据库连接信息,主要是服务器地址、用户名、密码,其他的空着就行。
保存回到setup界面后,点击“configration”标签下的“save”按钮保存配置信息。这样就可以在config目录下看到一个config.inc.php文件。将它移动到PhpMyAdmin的目录就可以了。
6.3 测试
打开浏览器,输入http://localhost/PhpMyAdmin/index.php进行访问。
如果出现用户名密码错误的提示,说明配置文件没有配置正确,请重新配置。
如果出现“无法载入MySQL扩展”的提示,将$PHP$目录下的libmysql.dll拷贝到windows系统目录的system32目录下,并重新启动。
7、Zend Debugger远程调试
7.1 安装
1、安装Zend Studio5.5。
2、安装Zend Optimizer。
3、http://downloads.zend.com/pdt/server-debugger/ZendDebugger-5.2.3-Windows-i386.zip下载ZendDebugger。将其解压到某一目录。
7.2 配置
1、在ZendDebugger的目录中,有 4_3_x_comp、4_4_x_comp、5_2_x_comp 等目录,将目录 5_2_x_comp 改为 php-5.2.x;
2、php.ini 添加下面几行:
zend_extension_manager.debug_server_ts=”$Zend Debugger Path$″
zend_debugger.expose_remotely=allowed_hosts
zend_debugger.allow_hosts=127.0.0.1/32,192.168.1.0/24
zend_debugger.allow_tunnel=127.0.0.1/32
zend_extension_manager.debug_server_ts 的值请根据你的实际情况填写,就是 php-x.y.z 的父目录。
3、把 ZendDebugger-5.2.3-Windows-i386 目录下的 dummy.php 复制到你的 Web 站点根目录。
4、重启Web服务器。
5、在Zend Studio中,打开“首选项”-“调试”,将调试方式设置为“服务器”。
6、如果装有防火墙,需要将默认的调试端口10000设置为例外。

7.3 测试
1、在Zend Studio中,“工具”-“检查Debug Server连接”,测试是否连接成功。
2、在Browser界面,选择地址栏最左侧的“bug”按钮,设置调试的页面。

 

posted @ 2011-02-15 23:03 海军 阅读(134) 评论(0) 编辑

选择的版本分别为

apache 2.2.14 with ssl

php 5.2.11

mysql 5.1.41

系统环境为 Windows XP SP3

安装过程:

1、安装apache。

这个非常简单,双击后一路 next ,在填写域名和主机名的时候可以随便写,比如 test.com/www.test.com ,然后写下自己的邮箱,安装完成。
完成后,通过 http://localhost 能够访问,并且看到 It works! 表示已经安装成功。

根据PHP官方的提示:
We do not recommend using a threaded MPM in production with Apache2.  Use the prefork MPM instead, or use Apache1. For information on why,   read the related FAQ entry on using Apache2 with a threaded MPM

对于默认的MPM模式官方并不支持,我们应当修改为 Prefork 模式,这个之后再讨论如何优化。

2、下面安装PHP。

PHP在Windows下的安装有两种方式,一种是CGI、一种是apache的DLL模块。不管哪一种,我们都需要修改 apache 的配置文件去支持PHP。

我这里采用模块方式安装,在 httpd.conf 中添加:

# For PHP 5 do something like this:
LoadModule php5_module "E:/php/php5apache2_2.dll"
AddType application/x-httpd-php .php

# configure the path to php.ini
PHPIniDir "E:/php"

重启apache,编写 phpinfo.php ,则通过 http://localhost/phpinfo.php 可以查看到 php 已经安装完成。

3、安装 PHP 扩展。

安装PHP的扩展只需要将 ;extension=*.dll 前的注释去掉,重启服务即可。我打开了 curl、gd2、mbstring、mcrypt、mysql、mysqli、pdo、pdo_mysql、pdo_oci、pdo_oci8、pdo_sqlite、soap、xmlrpc。需要注意的是,有些扩展需要将特定的 dll 拷贝到系统目录下才能正常使用。

php_curl.dll CURL, Client URL library functions Requires: ibeay32.dll,ssleay32.dll (bundled)

php_mcrypt.dll Mcrypt Encryption functions Requires: ibmcrypt.dll

php_mysql.dll MySQL functions PHP >= 5.0.0, requires libmysql.dll   (bundled)

php_mysqli.dll MySQLi functions PHP >= 5.0.0, requires libmysql.dll   (libmysqli.dll in PHP <= 5.0.2) (bundled)

php_xmlrpc.dll XML-RPC functions PHP >= 4.2.1 requires: iconv.dll(bundled)

同时应该注意将 extension_dir 设置为系统对应的值,完成后重启 apache 即可。

4、安装 Mysql。

Mysql 的安装也比较简单,从官方网站下载了安装文件后,双击一路运行到底。结束的时候可以选择是否到 Mysql 网站注册 和 马上进行服务器的配置。我们可以去掉服务器注册那一步,进而继续服务器的配置。

服务器的配置最主要就是选择 InnoDB 的存储位置和数据库的用户名密码,到最后,看全部执行完毕后安装就完成了。

 

5、配置虚拟机

项目比较多的时候,使用 apache 的虚拟机还是非常方便的。

首先打开 httpd.conf 中关于 vhost 配置文件的引用,这样我们所有的虚拟机配置文件都写在 extra/httpd-vhosts 中,方便管理。

# Virtual hosts
Include conf/extra/httpd-vhosts.conf

然后在 httpd-vhost 文件中加入

<VirtualHost *:80>
    ServerAdmin cocowool@gmail.com
    DocumentRoot "D:/workspaces/DefaultWorkspace/heep/"
    ServerName www.heep.com
    ErrorLog "logs/heep.com-error.log"
    CustomLog "logs/heep.com-access.log" common

    <Directory "D:/workspaces/DefaultWorkspace/heep/">
    AllowOverride Options
    Allow from All
    </Directory>
</VirtualHost>

6、安装 Zend Optimizer

Optimizer 可以到 Zend 的官方网站 下载。需要首先注册一个账号,这点没有 Mysql 好,不过人家毕竟没说这事开源的。虽然不开源 ZendOptimizer 确是免费的。下载完成后 一步一步安装就可以了,期间会提示选择正确的 PHP 和 Apache 的位置。

经过以上的步骤,一个 WAMP 的开发环境就配置好了,基本上能够满足开发一般应用的需要。

 

参考资料:

1、apache 2 MPM 的选择与配置

2、windows中apache2配置性能优化以及测试小结

posted @ 2011-02-15 22:54 海军 阅读(204) 评论(0) 编辑
摘要: 所有乱码问题,根本问题就在于我们在不同地方 使用的文件编码格式不同,使得我们的js文件在有的编辑工具中显示正常,但是在有的工具中则显示乱码,下面以Eclipse和EditPlus为例详细讲解如何避免js乱码:1、JS文件在Eclipse中中文部分显示乱码。原因:Eclipse中js文件的默认编码格式为UTF-8,而我们平时用到的文本编辑工具如记事本和EditPlus保存的js文件编码格式是ANSI...阅读全文
posted @ 2010-11-04 18:11 海军 阅读(169) 评论(0) 编辑
摘要: 修改MySQL 5.1 data文件夹路径我安装的这个版本的MYSQL没有data文件夹,但是可以正常使用,不知道你们的有没有呢?怎么才可以出现data文件夹呢,没有data文件夹,那我的数据库文件存放在什么地方了呢?我搜索了整个电脑都没有找到。好心的朋友,快告诉我怎么回事?该怎么解决?谢谢了!!! =================================================...阅读全文
posted @ 2010-10-20 18:25 海军 阅读(226) 评论(0) 编辑
摘要: 呵呵 找到一个有用的如何去除phpmyadmin对导入SQL文件2M的限制2009-07-27 13:50很多网友问到用phpmyadmin恢复SQL文件时的2M限制,问题不大,却很麻烦,特别是在本机调试的时候,2M的限制非常讨厌,下边是完整解决办法。一、修改c:\windows\php.ini文件。如果是Win2000的机器,应该是c\winnt\php.ini,用写字板打开php.ini文件:...阅读全文
posted @ 2010-10-20 17:06 海军 阅读(290) 评论(0) 编辑
摘要: Mac 用户注意:PHP 貌似不喜欢苹果的换行符号 ("\r"),因此,在保存配置文件之前,请确保您的文本编辑器可以使用 *nix 的换行符 ("\n")。配置提示:几乎所有的配置参数都在 config.inc.php 文件中。如果这个文件不存在,您可以在 libraries 目录中找到 config.default.php,将它复制到根目录,并改名为 config.inc.php。涉及到界面设计...阅读全文
posted @ 2010-10-20 11:59 海军 阅读(1012) 评论(0) 编辑
摘要: PHP的程序很火,像博客:Wordpress、论坛:Discuz!、SNS:UCenter Home、CMS:DedeCMS等等都是比较流行的PHP程序,大家都在使用PHP类的程序,但对于很多初学者来说,直接上传到虚拟空间上一个一个调试是很麻烦的事,那么在本地(我的电脑)中搭建一个PHP运行环境调试、测试程序是最快捷的方法。下面卢松松就介绍一些在本机快速搭建PHP运行环境的方法,让不了解PHP的朋...阅读全文
posted @ 2010-10-19 10:07 海军 阅读(66) 评论(0) 编辑