截止到发文时(2009年9月25日),PHP是最新版本为5.3.0,但是5.3.0在IIS中的运行方式是FastCGI,要在Vista的IIS7上实现这一点我始终没弄成。
最后我还是用的老方法,ISAPI,选用了一个5.3以前的版本,我选的是5.2.11。
php-5.2.11-Win32.zip的下载地址
http://cn2.php.net/distributions/php-5.2.11-Win32.zip
如果上面的地址不好始,也可以去下面这个地址去从其他镜像下载
http://cn.php.net/get/php-5.2.11-Win32.zip/from/a/mirror
把php-5.2.11-Win32.zip下载回来之后,把里面的文件解压到C:\php目录下(或者是D盘E盘也都行,只是我习惯放C盘)。
还要确认一点,在Vista的“打开或关闭Windows功能”里不但要安装IIS,而且还要安装两个重要的ISAPI组件,如下图:
下面开始配置PHP了……
1、把PHP目录下的php.ini-dist(显示扩展名)改成php.ini,然后用记事本打开,在里面找到extension_dir = "./",然后把里面的./改成c:\php(就是把PHP解压到的那个路径)。
2、还是在php.ini这个文件里,找到下面这三行,把它们前面的分号删掉(带分号是注释的意思)
extension=php_mbstring.dll
extension=php_mssql.dll
extension=php_mysql.dll
3、把php.ini保存,然后复制到Windows目录下。
4、打开Vista管理工具中的“Internet信息服务(IIS)管理器”,在“应用程序池”中新建一个应用程序池,取名为PHP,.Net版本为“无托管代码”。
5、在“ISAPI筛选器”中点右键“添加”,起名为php,可执行文件选成C:\php\php5isapi.dll。
6、在“ISAPI和CGI限制”里点右键“添加”,路径还是选成c:\php\php5isapi.dll,描述还写成php,选中“允许执行扩展路径”。
7、在“处理程序映射”里右键“添加脚本映射”,请求路径填*.php,可执行文件还选c:\php\php5ispai.dll,名称还叫php。
8、以上工作做完后就基本完工了,下面测试:
在IIS指定的站点目录下建一个文件夹,就叫php(我之所以要搭建php+iis,主要是因为我要开发及管理的项目里既有php,也有asp和.net的),然后在这个php目录里新建一个文件phpinfo.php,里面的内容就是经典的PHP测试函数:
phpinfo();
?>
保存后打开浏览器看结果:localhost/php/phpinfo.php,如果能看到类似下面的页面就说明你成功了:
在这里,我们的站点目录放在D盘的www文件夹,假设现在有一个名叫fesend的虚拟主机用户,我们在www文件夹下建立 fesend 的文件夹来存放此用户的站点数据
其中要用到以下组及帐号:
IIS_WPG 组(也称为 IIS 工作进程组,IIS Worker Process Group)
Guests组 (来宾组,在系统中拥有最少的权限)
Internet 来宾帐户 (匿名访问 Internet 信息服务的内置帐户)
启动 IIS 进程帐户 (用于启动进程外应用程序的 Internet 信息服务的内置帐户)
1 磁盘权限设置
⑴ D盘根目录的权限设置如下,只保留Administrator和System,其他帐号全部删除
⑵ 随后加入IIS_WPG组,并对IIS_WPG组设定如下图所示权限
⑶ 建立IUSR_FESEND及IWAM_FESEND帐号
设置“IUSR_FESEND”帐号为“Guests”组,删除“Users”组
设置“IWAM_FESEND”帐号为“IIS_WPG”组,删除“Users”组
若您的虚拟主机上面运行多个站点,则可以按照以上的方法,建立多组 “IUSR_XXXX”“IWAM_XXXX” 帐号;每个运行ASP.NET的站点都需要一组这样的帐号;
⑷ 设定 fesend 用户站点根目录的安全权限,此示例的站点目录为“D:\www\fesend”,此目录用于存放 fesend 用户的站点数据;
首先去除父目录继承来的权限(方法如下图),只保留“Administrators”和“SYSTEM” ,其他全部删除;
随后添加我们刚才建立的“IUSR_FESEND”“IWAM_FESEND”帐号,并赋予完全控制权限(修改权限也可);并应用该设定到下级所有目录中,按确定完成Web站点根目录权限设定。最终效果如下图所示:
2 IIS 设置
建立www.fesend.com站点,指向 fesend 用户的站点目录 “D:\www\fesend”;
⑴ 站点匿名访问帐号设置,修改成我们刚才建立的“IUSR_FESEND”帐号
⑵ 创建名称为“FESEND”(名称可以任意)的应用程序池;
接下来右键 FESEND 应用程序池->属性;打开标识标签,选择“配置”,用户名密码选择我们刚才建立的“IWAM_FESEND”帐号,如下图所示:
⑶ 最后一步,设置“www.fesend.com”站点的应用程序池为上面建立的“FESEND”;
至此,fesend 用户的IIS站点就建立好了,服务器若存在多个站点,可以依次为多个站点进行配置,每个站点建立特定的访问帐号,这样虚拟主机的每个用户都拥有自己的权限,只能访问自己的站点目录,不能互相访问,虚拟主机的安全性可以得到保障;
首先我们创建两个普通的用户tom john
[root@www ~]# useradd tom
[root@www ~]# passwd tom
输入你的密码
[root@www ~]# useradd john
[root@www ~]# passwd john
输入你的密码
[root@www ~]# usermod -g wheel tom 将tom用户加入到wheel组中
[root@www ~]# vi /etc/pam.d/su ← 打开这个配置文件找到这句话在第六行将其前面的#注释掉
# auth required pam_wheel.so use_uid
[root@www ~]# echo “SU_WHEEL_ONLY yes” >> /etc/login.defs
然后你可以分别用tom和john登陆,没有加入到wheel组的用户,执行“su -”命令,即使输入了正确的root密码,也无法登录为root用户
在系统出现错误或有重要通知发送邮件给root的时候,让系统自动转送到我们通常使用的邮箱中,这样方便查阅相关报告和日志。
[root@www ~]# vi /etc/aliases
在这两句下面mailer-daemon: postmaster
postmaster: root
加入这句话root: zy66289214@126.com 这里写自己邮箱
[root@www ~]# newaliases 重建aliasesdb
[root@www ~]# echo test | mail root 发送测试软件给root
[8] 定义yum的非官方库
在服务器构建的过程中,我们将要用到的一些工具不存在于CentOS中yum的官方库中,所以需要定义yum的非官方库文件,让一些必需的工具通过yum也能够安装。
[root@sample ~]# vi /etc/yum.repos.d/dag.repo ← 建立dag.repo,定义非官方库
[dag]
name=Dag RPM Repository for Red Hat Enterprise Linux
baseurl=http://apt.sw.be/redhat/el$releasever/en/$basearch/dag
gpgcheck=1
enabled=1
[root@sample ~]# rpm –import http://dag.wieers.com/rpm/packages/RPM-GPG-KEY.dag.txt ← 导入非官方库的GPG
[9] 停止打印服务
如果不准备提供打印服务,停止默认被设置为自动启动的打印服务。
[root@sample ~]# /etc/rc.d/init.d/cups stop ← 停止打印服务
Stopping cups: [ OK ] ← 停止服务成功,出现“OK”
[root@sample ~]# chkconfig cups off ← 禁止打印服务自动启动
[root@sample ~]# chkconfig –list cups ← 确认打印服务自启动设置状态
cups 0:off 1:off 2:off 3:off 4:off 5:off 6:off ← 0-6都为off的状态就OK(当前打印服务自启动被禁止中)
[10] 停止ipv6
在CentOS默认的状态下,ipv6是被启用的状态。因为我们不使用ipv6,所以,停止ipv6,以最大限度保证安全和快速。
首先再次确认一下ipv6功能是不是被启动的状态。
[root@www ~]# ifconfig -a ← 列出全部网络接口信息
sit0 Link encap:IPv6-in-IPv4 ← 确认ipv6是被启动的状态
[root@www ~]# vi /etc/modprobe.conf← 修改相应配置文件,添加如下行到文尾:
alias net-pf-10 off
alias ipv6 off
[root@www ~]# shutdown -r now ← 重新启动系统,使设置生效
修改/etc/yum.repos.d/CentOS-Base.repo,将镜象站点地址改为在中国的镜象站点地址。不然我们通过yum安装软件速度会极慢。修改如下
# CentOS-Base.repo
#
# This file uses a new mirrorlist system developed by Lance Davis for CentOS.
# The mirror system uses the connecting IP address of the client and the
# update status of each mirror to pick mirrors that are updated to and
# geographically close to the client. You should use this for CentOS updates
# unless you are manually picking other mirrors.
#
# If the mirrorlist= does not work for you, as a fall back you can try the
# remarked out baseurl= line instead.
#
#
[base]
name=CentOS-$releasever – Base
baseurl=http://mirrors.shlug.org/centos/$releasever/os/$basearch/
gpgcheck=1
gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-5
protect=1
#released updates
[updates]
name=CentOS-$releasever – Updates
baseurl=http://mirrors.shlug.org/centos/$releasever/updates/$basearch/
gpgcheck=1
gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-5
protect=1
#packages used/produced in the build but not released
[addons]
name=CentOS-$releasever – Addons
baseurl=http://mirrors.shlug.org/centos/$releasever/addons/$basearch/
gpgcheck=1
gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-5
protect=0
#additional packages that may be useful
[extras]
name=CentOS-$releasever – Extras
baseurl=http://mirrors.shlug.org/centos/$releasever/extras/$basearch/
gpgcheck=1
gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-5
protect=0
#additional packages that extend functionality of existing packages
[centosplus]
name=CentOS-$releasever – Plus
baseurl=http://mirrors.shlug.org/centos/$releasever/centosplus/$basearch/
gpgcheck=1
enabled=0
gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-5
protect=1
#contrib – packages by Centos Users
[contrib]
name=CentOS-$releasever – Contrib
baseurl=http://mirrors.shlug.org/centos/$releasever/contrib/$basearch/
gpgcheck=1
enabled=0
protect=0
gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-5
更新系统[root@www ~]#yum -y upgrade
一些安全的设置
1、用防火墙关闭不须要的任何端口,别人PING不到服务器,威胁自然减少了一大半
防止别人ping的方法:
1)命令提示符下打
echo 1 > /proc/sys/net/ipv4/icmp_ignore_all
2)用防火墙禁止(或丢弃) icmp 包
iptables -A INPUT -p icmp -j DROP
3)对所有用ICMP通讯的包不予响应
比如PING TRACERT
2、更改SSH端口,最好改为10000以上,别人扫描到端口的机率也会下降
vi /etc/ssh/sshd_config
将PORT改为1000以上端口
同时,创建一个普通登录用户,并取消直接root登录
useradd ‘username'
passwd ‘username'
vi /etc/ssh/sshd_config
在最后添加如下一句:
PermitRootLogin no #取消root直接远程登录
3、删除系统臃肿多余的账号: userdel adm userdel lp userdel sync userdel shutdown userdel halt userdel news userdel uucp userdel operator userdel games userdel gopher userdel ftp 如果你不允许匿名FTP,就删掉这个用户帐号 groupdel adm groupdel lp groupdel news groupdel uucp groupdel games groupdel dip groupdel pppusers
4、更改下列文件权限,使任何人没有更改账户权限: chattr +i /etc/passwd chattr +i /etc/shadow chattr +i /etc/group chattr +i /etc/gshadow
5、chmod 600 /etc/xinetd.conf