Press "Enter" to skip to content

月度归档: 2011 年 9 月

Win2008 R2 X64系统中IIS7.5配置PHP及PHP x64位环境[原创]

本文介绍在Win2008 R2 x64下配置PHP环境,网络上找了较多参考,都不是非常详细,有些配置无法成功,特此写下较详细的配置与大家分享。
条件与环境:
系统:Windows Server 2008 R2 Enterprise Edition X64
IIS版本:IIS7.0 / IIS7.5 测试通过
PHP版本:
php-5.2.8-x64.zip(已经测试成功)
php-5.3.8-nts-Win32-VC9-x86.zip(已经测试成功)
官方PHP下载地址:http://windows.php.net/download/

本人已经配置好的php.ini 打包供大家下载
php-5.2.8-x64.zip(已经测试成功后打包)
php-5.3.8-nts-Win32-VC9-x86.zip(已经测试成功后打包)

说明一下:php-x64位的目前本人没找到从官方下载地址,所以安装32位。

前期准备工作:
查看IIS是否已经安装CGI扩展,本人的环境之前安装时未安装CGI扩展,接下去是安装步骤:
1.安装CGI扩展
2.解压PHP包至C盘(也可选择其他盘),分配目录权限
3.配置IIS支持PHP,此文采用IIS7.5配置
4.测试PHP程序

第一步:打开“开始”–“控制面板”–“程序和功能”–“打开或关闭Winodw功能”

查看CGI扩展未安装,选择“添加角色服务”

勾选“CGI”扩展,点下一步进行安装【记得要用到系统安装盘,或是源文件】

查看“CGI”扩展已经安装成功!

第二步,解压下载的PHP压缩包
解压下载好的PHP包,并修改php.ini-recommended为php.ini
打开php.ini,修改

cgi.force_redirect = 0
cgi.fix_pathinfo=1
fastcgi.impersonate = 1;
extension_dir = "C:\php\ext\"
session.save_path = "C:\php\sessiontmp"

#扩展可根据自己需求选择,一般常用的如:
extension=php_curl.dll
extension=php_gd2.dll
extension=php_gettext.dll
extension=php_mbstring.dll
extension=php_mysql.dll
extension=php_mysqli.dll
extension=php_openssl.dll
extension=php_pdo_mysql.dll
extension=php_pdo_sqlite.dll
extension=php_sockets.dll
extension=php_xmlrpc.dll

配置C盘PHP目录权限 Everyone可读,可执行
配置C盘PHP目录下的C:\php\sessiontmp 目录全部权限

配置好PHP目录后,对PHP进行测试是否php.ini文件配置正确
“开始”–“运行”–输入“cmd”–“cd /php/”转到c盘php下下。输入“php -v”查看配置情况
php-5.2.8-x64配置测试

php-5.3.8-nts-Win32-VC9-x86配置测试

不管哪个php版本以下对IIS配置都一样。

第三步:配置IIS7.5支持PHP
选择主域下“处理程序映射”

添加PHP配置如图所示:

配置完成后,打开“FastCgi设置”

配置PHP“环境变量” PHP_FCGI_MAX_REQUESTS,取值设置为10000

注意:采用x64php可以不用配置程序池,但采用32位的php一定要对相应的站点程序池进行配置
“应用程序池”–找到站点名称相同的程序池如“kiccleaf.com”–“高级设置”如图所示:

全配置完成后,重启IIS。

第四步测试php,命名为test.php

<?php
echo phpinfo();
?>

测试结果如图所示:

Leave a Comment

MSSQL2005-MSSQL2008数据库批量备份和还原脚本

由于项目关系,一台服务器数据库做迁移工作,将近两百多个数据库一个个备份要浪费很多时间,在此采用了生成脚本的方式与大家分享,希望给需要的人有帮助。已经测试适合MSSQL2005-MSSQL2008数据库备份和还原脚本,未测试MSSQL2000数据库。
2011-09-27 添加分离数据库和附加数据脚本

--批量生成分离脚本
use master
select 'EXEC sp_detach_db '''+name+''', ''true'';'  from sysdatabases 

--单个数据库分离
EXEC sp_detach_db '<database name>', 'true';
--批量生成数据库附加脚本
use master
select 'CREATE DATABASE ['+name+'] ON ( FILENAME = N''C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\Data\'+name+'.mdf'' ),( FILENAME = N''C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\Data\'+name+'_log.ldf'' ) FOR ATTACH ;' from sysdatabases 
--单个数据库附加脚本
use master
CREATE DATABASE [database_name] ON 
( FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\Data\<database name>.mdf' ),
( FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\Data\<database name>.ldf' )
 FOR ATTACH ;
use master
--生成批量删除数据库脚本
select 'DROP DATABASE  ['+name+'];' from sysdatabases 
use master
--生成备份脚本,可在列表中复制生成的TSQL代码
select 'BACKUP DATABASE ['+name+'] TO DISK = ''f:\autobak\'+name+'.bak'' WITH NOINIT , NOUNLOAD , NOSKIP , STATS = 10, NOFORMAT ;' from sysdatabases 

如图所示:

复制以上列表TSQL脚本在迁移的服务器上进行执行备份数据库

--生成还原脚本,数据库存放目录与迁移机器同样时用此脚本
select 'BACKUP DATABASE ['+name+'] FROM DISK=''f:\autobak\'+name+'.bak'' WITH REPLACE ;' from sysdatabases

select 'alter database ['+name+']  set online ;' from sysdatabases 

如图所示:

--数据库迁移到其他机器,盘符和目录发生变化时,就需要做还原配置相应的路径
--D:\Data 目录为数据库存放目录和日志存放目录,也可将两个目录分其他盘符可提升IO的操作效率
--注意:MOVE 后面的数据逻辑名称,如果是独立创建的数据逻辑名不会错。
--     假如是从A数据库还原成B名称数据时,他的逻辑名称还是A,所以此处大家一定要注意
select 'RESTORE DATABASE ['+name+'] FROM DISK=''d:\autobak\'+name+'.bak'' 
WITH MOVE ''' +name+ ''' TO ''d:\Data\'+name+'.mdf'',
MOVE '''+name+'_log'' TO ''d:\Data\'+name+'_log.ldf'';' from sysdatabases

生成以上脚本,可把数据库复制到部署机器上后,修改好bak文件所在目录执行TSQL脚本即可
有什么问题欢迎大家共同探讨,有不足之处或是有更好的方法希望大家能与我分享。

Leave a Comment

编写一个改变文件读写属性的C程序

编写一个改变文件读写属性的C程序

[root@kiccleaf leaf]# ll

-rwxr-xr-x  1 root root      5277 Aug  9 19:47 mysql.sh
#采用VIM编辑c源程序
[root@kiccleaf leaf]# vim chmd.c
#include <sys/types.h>
#include <sys/stat.h>
#include <stdio.h> 
 
int main()
{
  if(chmod("./mysql.sh",S_IRUSR|S_IWUSR|S_IRGRP|S_IROTH)==0)
  {
    printf("设置成功!\n");
  }
  else
  {
    printf("设置失败!文件不存在!\n");
  }
  return 0;
}
#采用gcc编译生成chmd可执行文件
[root@kiccleaf leaf]# gcc -g -Wall -o chmd chmd.c

[root@kiccleaf leaf]# ./chmd
[root@kiccleaf leaf]# ll

-rw-r--r--  1 root root      5277 Aug  9 19:47 mysql.sh

文件显示“-rw-r–r–
r 表示可读取,w 表示可写入,x 表示可执行,X 表示只有当该档案是个子目录或者该档案已经被设定过为可执行。

chmod()改变文档存取权限的函数

原形:int chmod(const char *path,int amode)

功能:根据amode的值,配置由path所指文档的存取权限。

amode的值     存取权限

S_IRUSR 用户可以读
S_IWUSR 用户可以写
S_IXUSR 用户可以执行
S_IRWXU 用户可以读写执行
———————————–
S_IRGRP 组可以读
S_IWGRP 组可以写
S_IXGRP 组可以执行
S_IRWXG 组可以读写执行
———————————–
S_IROTH 其他人可以读
S_IWOTH 其他人可以写
S_IXOTH 其他人可以执行
S_IRWXO 其他人可以读写执行
———————————–
S_ISUID 设置用户执行ID
S_ISGID 设置组的执行ID

———————————–
返回值:0(成功);-1(失败)

Leave a Comment

CentOS 5.6 X86_64系统下Postfix邮件系统配置【pop3,smtp】

硬件环境:
服务器型号:IBM X336
CPU型号: Intel(R) Xeon(TM) CPU 3.80GHz *2颗
内存型号: 2G*4根
硬盘型号:SCSI 73G*2块

软件配置:
系统:CentOS5.6 x86_64
软件:Nginx1.0.4+PHP5.3.6(FPM-FCGI)+Mysql5.5.3

Linux系统最小安装,在此就不多说了。此机器主要功能是对外进行图片访问,由于公司需要邮件系统进行邮件发送和接收,考虑Qmail配置太复杂,sendmail配置也麻烦所以就选择postfix作为邮件处理系统。

1.PostFix安装配置
2.dovecot安装配置
3.防火墙配置
4.测试邮件发送

1.PostFix安装配置
第一步:首先进行安装postfix

yum -y install postfix

第二步:配置main.cf文件

[root@kiccleaf ~]# vim /etc/postfix/main.cf
myhostname = mail.kiccleaf.com
mydomain = kiccleaf.com
myorigin=$mydomain
inet_interfaces = all
mydestination = $myhostname, localhost.$mydomain, localhost,$mydomain
relay_domains = $mydestination
mynetworks = 192.168.1.0/28, 127.0.0.0/8,60.191.49.228/24 #填写自己的公网ip
home_mailbox = Maildir/
#smtpd_banner = $myhostname ESMTP $mail_name ($mail_version)  ← 找到这一行,接此行添加如下行:
smtpd_banner = $myhostname ESMTP unknow ← 添加这一行,不显示SMTP服务器的相关信息

#Add end
smtpd_sasl_auth_enable = yes
smtpd_sasl_local_domain = $myhostname
smtpd_sasl_security_options = noanonymous
smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination
message_size_limit = 15728640

第三步:配置smtpd.conf

[root@kiccleaf ~]# vim /usr/lib64/sasl2/smtpd.conf

pwcheck_method: saslauthd
改成
pwcheck_method: auxprop

第四步:配置postfix随系统启动

[root@kiccleaf ~]# chkconfig saslauthd on
[root@kiccleaf ~]# chkconfig --list saslauthd
saslauthd      	0:off	1:off	2:on	3:on	4:on	5:on	6:off

[root@kiccleaf ~]# chkconfig postfix on
[root@kiccleaf ~]# chkconfig --list postfix
postfix        	0:off	1:off	2:on	3:on	4:on	5:on	6:off

第五步:启动postfix服务

[root@kiccleaf ~]# /etc/rc.d/init.d/saslauthd start
Starting saslauthd:                                        [  OK  ]

[root@kiccleaf ~]# /etc/rc.d/init.d/postfix start
Starting postfix:                                          [  OK  ]

第六步:对postfix进行测试

telnet localhost 25
Trying 127.0.0.1...
Connected to localhost.localdomain (127.0.0.1).
Escape character is '^]'.
220 kiccleaf.com ESMTP unknow
ehlo localhost
250-kiccleaf.com
250-PIPELINING
250-SIZE 15728640
250-VRFY
250-ETRN
250-AUTH PLAIN LOGIN
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN
quit
221 2.0.0 Bye
Connection closed by foreign host.

第七步:添加配置,用户和密码

 [root@kiccleaf ~]# mkdir /data/Maildir
 [root@kiccleaf ~]# chmod 700 /data/Maildir
 [root@kiccleaf ~]# mkdir /home/leaf/Maildir
 [root@kiccleaf ~]# chmod 700 /home/leaf/Maildir
 [root@kiccleaf ~]# chown leaf. /home/leaf/Maildir
 [root@kiccleaf ~]# saslpasswd2 -u mail.kiccleaf.com -c leaf  #添加帐号leaf
 Password:          #输入密码
 Again (for verification):    #输入重复密码
 [root@kiccleaf ~]# chgrp postfix /etc/sasldb2
 [root@kiccleaf ~]# chmod 640 /etc/sasldb2
 [root@kiccleaf ~]# alternatives --config mta

There are 2 programs which provide 'mta'.

Selection Command
 -----------------------------------------------
 *+ 1 /usr/sbin/sendmail.sendmail
 2 /usr/sbin/sendmail.postfix

Enter to keep the current selection[+], or type selection number: 2      #选择postfix作为邮件服务
 

2.接下去安装pop3接收服务dovecot
第一步:dovecot服务安装

yum -y install dovecot

第二步:编辑dovecot.conf文件

找到#protocols = imap imaps pop3 pop3s行添加或是修改:
protocols = imap pop3
老版本CentOS5.5版本是以default_mail_env作为配置
mail_location = maildir:~/Maildir

第三步:配置dovecot随系统启动

[root@kiccleaf ~]# chkconfig dovecot on
[root@kiccleaf ~]# chkconfig --list dovecot
dovecot        	0:off	1:off	2:on	3:on	4:on	5:on	6:off

第四步:启动dovecot服务

[root@kiccleaf ~]# /etc/rc.d/init.d/dovecot start
Starting Dovecot Imap:                                     [  OK  ]

第五步:对dovecot进行测试

telnet localhost 110
Trying 127.0.0.1...
Connected to localhost.localdomain (127.0.0.1).
Escape character is '^]'.
+OK Dovecot ready.
quit
+OK Logging out
Connection closed by foreign host.

3.防火墙配置

[root@kiccleaf ~]# vim /etc/sysconfig/iptables
#添加以下三个端口25,110,143
-A INPUT -m state --state NEW -m tcp -p tcp --dport 25 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 110 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 143 -j ACCEPT

#重启防火墙
[root@kiccleaf ~]# service iptables restart
Flushing firewall rules:                                   [  OK  ]
Setting chains to policy ACCEPT: filter                    [  OK  ]
Unloading iptables modules:                                [  OK  ]
Applying iptables firewall rules:                          [  OK  ]
Loading additional iptables modules: ip_conntrack_netbios_n[  OK  ]
#查看监听端口列表
[root@kiccleaf ~]# netstat -an
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address               Foreign Address             State
tcp        0      0 127.0.0.1:9000              0.0.0.0:*                   LISTEN
tcp        0      0 0.0.0.0:2188                0.0.0.0:*                   LISTEN
tcp        0      0 0.0.0.0:110                 0.0.0.0:*                   LISTEN
tcp        0      0 0.0.0.0:143                 0.0.0.0:*                   LISTEN
tcp        0      0 0.0.0.0:80                  0.0.0.0:*                   LISTEN
tcp        0      0 0.0.0.0:58008               0.0.0.0:*                   LISTEN
tcp        0      0 127.0.0.1:25                0.0.0.0:*                   LISTEN
tcp        0      0 192.168.1.9:22           192.168.1.22:2850           ESTABLISHED

4.测试邮件发送
为了方便Foxmail作为客户端进行配置,填写ip为pop3,smtp,填写帐号名称及密码,进行发送测试,在此用php编写简要的发送代码进行测试。

<?php
$to      = '53045936@qq.com';
$subject = 'the subject test';
$message = 'hello!测试用例!';
$headers = 'From: leaf@kiccleaf.com' . "\r\n" .
'Reply-To:  leaf@kiccleaf.com' . "\r\n" .
'X-Mailer: PHP/' . phpversion();

mail($to, $subject, $message, $headers);
?>

至此邮件系统的发送和接收都已经配置完成

2 Comments