存档

文章标签 ‘美国vps’

PHP在64位Win2003和IIS下运行设置方法

2013年5月7日 没有评论

环境是windows 2003 sp2 企业版 64位
iis配置好PHP之后居然出现错误信息:

%1 不是有效的 Win32 应用程序。
说这不是一个有效的win32程序…

解决办法:
由于系统是64位的..只好将IIS改为32位的工作模式。
于是找到了这条命令,详情参见微软官方的帮助文档:
Configuring IIS to Run 32-bit Applications on 64-bit Windows (IIS 6.0):
cscript.exe adsutil.vbs set W3SVC/AppPools/Enable32BitAppOnWin64 “true”
或者
cscript %SYSTEMDRIVE%\inetpub\adminscripts\adsutil.vbs SET W3SVC/AppPools/Enable32bitAppOnWin64 1 //这是一行命令!!切勿当成2条语句执行上面的命令是将将IIS由64位模式修改为32位模式。
更改完模式之后然后按照32位系统配置php即可

操作完成后支行 iisreset 重启iis 生效

如果你要从32位改为64位的.也只需要一个命令

cscript %SYSTEMDRIVE%\inetpub\adminscripts\adsutil.vbs
SET W3SVC/AppPools/Enable32bitAppOnWin64 0 //这是一行命令..切勿当成2条语句执行
当然,在更改完之后,PHP是无法运行的了,.NET运行的的话,就需要重新注册一次
32位:%SYSTEMROOT%\Microsoft.NET\Framework\v2.0.40607\aspnet_regiis.exe -i
64位:%SYSTEMROOT%\Microsoft.NET\Framework64\v2.0.40607\aspnet_regiis.exe -i

[转]系统启动时出现错误:应用程序-特定 权限设置未将 COM 服务器应用程序

2013年5月4日 没有评论

系统启动时出现错误:应用程序-特定 权限设置未将 COM 服务器应用程序(CLSID 为 {BA126AD1-2166-11D1-B1D0-00805FC1270E})的 本地 激活 权限授予用户 NT AUTHORITY\NETWORK SERVICE 的解决.
系统是windows server 2003R2.启动时出现了问题:
应用程序-特定 权限设置未将 COM 服务器应用程序(CLSID 为 {BA126AD1-2166-11D1-B1D0-00805FC1270E})的 本地 激活 权限授予用户 NT AUTHORITY\NETWORK SERVICE SID (S-1-5-20)。可以使用组件服务管理工具修改此安全权限。
看此提示,于是找到组件服务管理器,展开DCOM服务,但是找死找不到(CLSID 为 {BA126AD1-2166-11D1-B1D0-00805FC1270E})的项.

根据提示信息,实际上是说NETWORK SERVICE没权限激活CLSID为{BA126AD1-2166-11D1-B1D0-00805FC1270E}的应用程序。可以通过使用组件服务管理工具修改此安全权限。
1、如果按上面的提示去使用组件服务管理工具找CLSID为{BA126AD1-2166-11D1-B1D0-00805FC1270E}的应用程序是找不到的。
2、需要先运行regedit.exe在注册表中查找出{BA126AD1-2166-11D1-B1D0-00805FC1270E}对应的AppID值{27AF75ED-20D9-11D1-B1CE-00805FC1270E}
3、然后再打开组件服务,查看方式为详细信息,找到DCOM 配置里的netman,选中按鼠标右建选属性。
4、在netman属性里的安全 -> “启动和激活权限” -> 自定义编辑,在启动权限里加入NETWORK SERVICE用户,允许本地启动和本地激活,确定后就不会再报这个DCOM错了。
照着操作,问题顺利解决.

php扩展php_curl.dll不加载解决方法

2013年5月3日 没有评论

方法一(已通过测试)已经内置有php_curl.dll,在ext目录下,此DLL用于支持SSL和zlib.
在php.ini中找到有extension=php_curl.dll, 去掉前面的注释.
设置extension_dir=c:\php\ext, 刷新PHP页面时报错, 说找不到模块php_curl.dll.
拷贝php_curl.dll 到windows\system32,还是同样的错.
在网上找了一下,需要将:
libeay32.dll, ssleay32.dll, php5ts.dll, php_curl.dll
都拷贝到system32目录下,重启apache即可.

方法二也可试试:
这个php_curl.dll就依赖两个文件(ssleay32.dll和libeay32.dll)如果这两个文件没有配置对那么就会提示找不到此动态库,这两个文件在php的目录下面。
解决办法:在Apache的httpd.conf的文件中配置一下:
LoadFile “D:/webserver/php/ssleay32.dll”
LoadFile “D:/webserver/php/libeay32.dll”
然后重启一下apache服务就ok了。

ps:不管是iis还是apache,直接复制以上三个dll文件到system32目录下一般就可以解决问题。反正这三个文件是一定要在一起才生效。不然不行。

ssh连接的时候出现Host key verification failed.

2013年5月1日 没有评论

今天在服务器上执行远程操作命令出现以下的问题:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
[root@www ~]# ssh 192.168.1.**
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@    WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!     @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
Someone could be eavesdropping on you right now (man-in-the-middle attack)!
It is also possible that the RSA host key has just been changed.
The fingerprint for the RSA key sent by the remote host is
3c:2a:3a:d5:ae:2b:76:52:*:*.
Please contact your system administrator.
Add correct host key in /root/.ssh/known_hosts to get rid of this message.
Offending key in /root/.ssh/known_hosts:20
RSA host key for 192.168.1.** has changed and you have requested strict checking.
Host key verification failed.

解决方法:
在正在操作的机器上执行

1
vi ~/.ssh/known_hosts

进入此目录,删除的192.168.1.**相关rsa的信息即可.
或者删除这个文件

1
2
cd ~/.ssh/
rm known_hosts

怎么查看SQL SERVER 2000是否打过SP4的补丁

2013年4月30日 没有评论

有几次帮客户解决数据库问题,并不知道数据库的版本是否打过sp4补丁,又没有地方可查,网上有给出比较好的解决方案,只要查询版本号就知道。
在查询分析器中输入

select @@version

或者输入

print @@version

如果是安装过SP4的补丁。应该是下面的信息:
Microsoft SQL Server 2000 – 8.00.2039 (Intel X86)
May 3 2005 23:18:38
Copyright (c) 1988-2003 Microsoft Corporation
Enterprise Edition on Windows NT 5.2 (Build 3790: Service Pack 1)
其他版本信息如下
6.50.201 SQL Server 6.5 RTM
6.50.213 SQL Server 6.5 with Service Pack 1
6.50.240 SQL Server 6.5 with Service Pack 2
6.50.258 SQL Server 6.5 with Service Pack 3
6.50.281 SQL Server 6.5 with Service Pack 4
6.50.415 SQL Server 6.5 with Service Pack 5
6.50.416 SQL Server 6.5 with Service Pack 5a
7.00.623 SQL Server 7.0 / MSDE 1.0 RTM
7.00.699 SQL Server 7.0 SP1 July 1999
7.00.842 SQL Server 7.0 SP2 March 20th, 2000
7.00.961 SQL Server 7.0 SP3 December 15th, 2000
7.00.1063 SQL Server 7.0 SP4
8.00.194 SQL Server 2000 RTM
8.00.384 SQL Server 2000 SP1
8.00.534 SQL Server 2000 SP2 November 30th, 2001
8.00.760 SQL Server 2000 SP3
8.00.2039 SQL Server 2000 SP4

ps: sql2000 sp4后的一个安全补丁SQL2000-KB948110-v8.00.2050-x86x64-CHS

linux(centos)绑定ARP的方法

2013年4月16日 没有评论

ARP协议是“Address Resolution Protocol”(地址解析协议) 的缩写。在局域网中,网络中实际传输的是“帧”,帧里面是有目标主机的MAC地址的。在以太网中,一个主机要和另一个主机进行直接通信,必须要知道目标主 机的MAC地址。但这个目标MAC地址是如何获得的呢?它就是通过地址解析协议获得的。所谓“地址解析”就是主机在发送帧前将目标IP地址转换成目标 MAC地址的过程。ARP协议的基本功能就是通过目标设备的IP地址,查询目标设备的MAC地址,以保证通信的顺利进行。

而ARP攻击就是通过伪造IP地址和MAC地址实现ARP欺骗,能够在网络中产生大量的ARP通信量使网络阻塞,攻击者只要持续不断的发出伪造的ARP响应包就能更改目标主机ARP缓存中的IP-MAC条目,造成网络中断或中间人攻击。

ARP攻击主要是存在于局域网网络中,局域网中若有一台计算机感染ARP木马,则感染该ARP木马的系统将会试图通过“ARP欺骗”手段截获所在网络内其它计算机的通信信息,并因此造成网内其它计算机的通信故障。

在工作中经常遇到有服务器受到ARP欺骗攻击,严重影响了网络的正常运营,于是想到将网关的ARP条目进行绑定。

本文是关于linux服务器下arp网关的绑定

1、查看网关的arp信息
[root@Vtest ~]# arp
Address HWtype HWaddress Flags Mask Iface
192.168.1.103 ether 00:16:ea:27:7b:04 C eth0
192.168.1.1 ether 40:16:9f:6c:39:1e C eth0

说明:
Address: 主机的IP地址
Hwtype: 主机的硬件类型
Hwaddress:主机的硬件地址
Flags Mask:记录标志,”C”表示arp高速缓存中的动态条目,”CM”表示静态的arp条目。

我们需要绑定的就是192.168.1.1所在的一行。

2、建立一个静态IP –>>mac对应的文件
[root@Vtest ~]#echo ’192.168.1.1 40:16:9f:6c:39:1e’>>/etc/ip-mac

3、设置开机自动绑定

arp信息重启后会清空,所以需要开机的时候自动绑定。服务器启动过程最后运行的脚本是rc.local,我们把绑定的命令就加到这个文件的最后一行。

[root@Vtest ~]#echo ‘arp -f /etc/ip-mac’ /etc/rc.local

4、手动绑定一下
[root@Vtest ~]#echo arp -f /etc/ip-mac

[root@Vtest ~]#arp -s 192.168.1.1 40:16:9f:6c:39:1e
5、验证
[root@Vtest ~]# arp -a
(192.168.1.103) at 00:16:ea:27:7b:04 [ether] on eth0
(192.168.1.1) at 40:16:9f:6c:39:1e [ether] PERM on eth0
[root@Vtest ~]# arp
Address HWtype HWaddress Flags Mask Iface
192.168.1.103 ether 00:16:ea:27:7b:04 C eth0
192.168.1.1 ether 40:16:9f:6c:39:1e CM eth0

从以上显示的信息来看,已经绑定成功了,第一个命令结果中的”PERM”表示Permanent,永久的意思,即绑定成永久arp条目。到这里绑定就完成了,你的网关arp绑定了么,为了稳定运行,赶快绑定吧。

6、这只能防住一些arp攻击,如果将网内所有ip mac导入ethers文件,能有效的防止arp攻击
安装nmap:

rpm -vhU http://nmap.org/dist/nmap-6.25-1.i386.rpm
rpm -vhU http://nmap.org/dist/zenmap-6.25-1.noarch.rpm
rpm -vhU http://nmap.org/dist/ncat-6.25-1.i386.rpm
rpm -vhU http://nmap.org/dist/nping-0.6.25-1.i386.rpm
扫描同网段所有ip
nmap -sP 192.168.1.0/24 2>&1 | tee ip.log
扫描,结果我的arp表里就有那个网段所有机器的mac,将所有信息复制至/etc/ip-mac文件

解决mysql数据库Forcing close of thread 的错误提示

2013年4月8日 没有评论

今天发现客户的网站老出现打不开的情况,发现连接数有超出的现象,但观察系统事件日志,都是下面的错误:

MySQL: Forcing close of thread **** user:”

事件类型: 警告
事件来源: MySQL
事件种类: 无
事件 ID: 100
日期: 2013-4-8
事件: 12:21:01
用户: N/A
计算机: vps12com0630
描述:
MySQL: Forcing close of thread 123756 user: ”

For more information, see Help and Support Center at http://www.mysql.com.

检查系统资源和连接数都是正常的情况下,没有找到解决办法。

在mysql配置文件my.ini 的 [mysql] 下面加上这个解决问题了!

skip-locking
skip-name-resolve

其他的同类错误要注意查看日志。新版本mysql的写法应该是:

skip-external-locking
skip-name-resolve

nginx.conf配置文件详解

2013年4月1日 没有评论

Nginx (“engine x”) 是一个高性能的 HTTP 和 反向代理 服务器,也是一个 IMAP/POP3/SMTP 代理服务器。 Nginx 是由 Igor Sysoev 为俄罗斯访问量第二的 Rambler.ru 站点开发的,第一个公开版本0.1.0发布于2004年10月4日。其将源代码以类BSD许可证的形式发布,因它的稳定性、丰富的功能集、示例配置文件和低系统资源的消耗而闻名。

以下是配置文件 nginx.conf 中文注释说明:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
#使用哪个用户启动 nginx 前面是用户,后面是用户组
user www www;
 
#nginx工作的进程数量
worker_processes 2;
 
# [ debug | info | notice | warn | error | crit ] 日志的位置
error_log /var/htdocs/logs/nginx_error.log crit;
error_log /dev/null;
 
#进程号保存文件
pid /usr/local/nginx/nginx.pid;
 
#每个进程可以打开的最大文件字节数
worker_rlimit_nofile 51200;
 
events
{
# use [ kqueue | rtsig | epoll | /dev/poll | select | poll ];
use epoll; #使用epoll(linux2.6的高性能方式)
worker_connections 51200; #每个进程最大连接数(最大连接=连接数x进程数)
}
 
http
{
#文件扩展名与文件类型映射表
include mime.types;
 
#默认文件类型
default_type application/octet-stream;
 
#日志文件格式
log_format main '$remote_addr - $remote_user [$time_local] $request '
'"$status" $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
 
log_format download '$remote_addr - $remote_user [$time_local] '
'"$request" $status $bytes_sent '
'"$http_referer" "$http_user_agent" '
'"$http_range" "$sent_http_content_range"';
 
#默认编码
charset utf-8;
 
server_names_hash_bucket_size 128;
#开启高效文件传输模式
sendfile on;
#以下两个选项用于防止网络阻塞
 
tcp_nopush on;
tcp_nodelay on;
 
#长链接超时时间
keepalive_timeout 300;
 
#fastcgi连接超时时间,下面的看字面意思都能理解个大概了,就不解释了.
fastcgi_connect_timeout 300;
fastcgi_send_timeout 300;
fastcgi_read_timeout 300;
fastcgi_buffer_size 128k;
fastcgi_buffers 4 256k;
fastcgi_busy_buffers_size 256k;
fastcgi_temp_file_write_size 256k;
fastcgi_temp_path /dev/shm;
 
#打开gzip压缩
gzip on;
#最小压缩文件大小
gzip_min_length 1k;
#压缩缓冲区
gzip_buffers 4 8k;
#压缩版本(默认1.1,前端为squid2.5使用1.0)
gzip_http_version 1.1;
#压缩类型,默认就已经包含text/html 所以下面就不用再写了,当然写上去的话,也不会有问题,但是会有一个warn
gzip_types text/plain application/x-javascript text/css text/html text/javascript application/xml;
#错误页面
error_page 404 http://yhjhappy234.blog.163.com/;
error_page 403 http://yhjhappy234.blog.163.com/;
#上传文件大小限制
client_max_body_size 2m;
#设定请求缓
client_header_buffer_size 16k;
large_client_header_buffers 4 64k;
#设定负载均衡的服务器列表
#如果在同一台机器上,单独起4组独立的php-cgi进程(每组8个子进程),性能应该不如1组php-cgi进程(32个子进程),因为1组进程,eaccelerator的PHP二进制文件缓存是共享的,1组进程命中率较高。
#不过好处是,碰到某组的页面假死的话,其他端口就可以接管了,实测下来似乎发生502错误的概率降低了很多,或者说我这样配置以后还没有遇到
upstream mysvr {
#weigth参数表示权值,权值越高被分配到的几率越大
#本机上的Squid开启3128端口
server 192.168.101.26:8080 weight=5;
server 192.168.101.27:8080 weight=1;
server 192.168.101.202:8080 weight=1;
}
#下面开始虚拟主机的配置
server
{
listen 80;
server_name www.kedou.com;
index index.jsp;
root /usr/local/tomcat/webapps/ROOT;
if (-d $request_filename)
{
rewrite ^/(.*)([^/])$ http://$host/$1$2/ permanent;
}
#设定本虚拟主机的访问日志
access_log logs/www.kedou.com.access.log main;
 
location ~ .*\.php?$
{
include fcgi.conf;
fastcgi_pass 192.168.101.202:8080
fastcgi_index index.jsp;
}
#如果访问 /img/*, /js/*, /css/* 资源,则直接取本地文件,不通过squid
#如果这些文件较多,不推荐这种方式,因为通过squid的缓存效果更好
location ~ ^/(img|js|css)/ {
root /var/htdocs/kedou;
expires 24h;
}
 
#对 "/" 启用负载均衡
location / {
proxy_pass http://127.0.0.1;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
client_max_body_size 10m;
client_body_buffer_size 128k;
proxy_connect_timeout 90;
proxy_send_timeout 90;
proxy_read_timeout 90;
proxy_buffer_size 4k;
proxy_buffers 4 32k;
proxy_busy_buffers_size 64k;
 
proxy_temp_file_write_size 64k;
}
 
#设定查看Nginx状态的地址
location /NginxStatus {
stub_status on;
access_log on;
auth_basic "NginxStatus";
auth_basic_user_file conf/htpasswd;
}
}
}

修改Nginx版本头信息(可选),编辑src/http/ngx_http_header_filter_module.c:

1
# vi +48 src/http/ngx_http_header_filter_module.c

找到下面两行:

1
2
static char ngx_http_server_string[] = "Server: nginx" CRLF;
static char ngx_http_server_full_string[] = "Server: " NGINX_VER CRLF;

将其修改为:

1
2
static char ngx_http_server_string[] = "Server: Ninja Web Server" CRLF;
static char ngx_http_server_full_string[] = "Server: Ninja Web Server" CRLF;

保存并关闭文件。现在可以开始编译服务器了,将下面的配置代码添加到nginx.conf中,禁止在所有自动产生的错误页面中显示Nginx版本号:

1
server_tokens off

使用htaccess实现域名跳转

2013年3月31日 没有评论

要使用域名的统一,即使得vps12.com转向www.vps12.com,有很多办法,听说对于seo也有些好处!

1
2
3
RewriteEngine on
RewriteCond %{HTTP_HOST} ^vps12.com [NC]
RewriteRule ^(.*)$ http://www.vps12.com/$1 [L,R=301]

还可以利用重定向功能实现url的跳转,例如:

1
2
3
RewriteEngine on
RewriteCond %{HTTP_HOST} ^www.abc.com [NC]
RewriteRule ^(.*)$ http://www.vps12.com/$1 [L,R=301]

什么是iis连接数

2013年3月29日 没有评论

iis连接数指并发连接数,什么意思呢?

要分几种情况:(以100m空间50人在线为例)
a 用户单点下载你的文件,结束后正常断开,这些连接是按照瞬间计算的,就是说你50人的网站瞬间可以接受同时50个点下载
b 用户打开你的页面,就算停留在页面没有对服务器发出任何请求,那么在用户打开一面以后的20分钟内也都要算一个在线,就是说你50人的网站

20分钟内可以接受不同用户打开50个页面
c 上面b的情况用户继续打开同一个网站的其他页面,那么在线人数按照用户最后一次点击(发出请求)以后的20分钟计算,在这个20分钟内不管用

户怎么点击(包括新窗口打开)都还是一人在线。
d 当你的页面内存在框架(iframe),那么每多一个框架就要多一倍的在线!因为这相当于用户同一时间向服务器请求了多个页面。
e 当用户打开页面然后正常关闭浏览器,用户的在线人数也会马上清除。

然后了解什么是论坛在线人数。
论坛在线只是计算一定时间内的活动用户数。
这里的时间用户可以自己设定,动网论坛默认为40分钟的相对准确值。

根据上面的说明,显然论坛在线和iis连接数的概念不同
为什么会出现iis连接数和论坛在线不符合的情况?
现具体分析如下:

1:您使用了插件版论坛或者美化版论坛!
现在的插件很垃圾,不但占服务器资源,而且会使论坛运行变慢(没有插件可以快一倍以上),同时很占在线人数,有的插件调用很多框架,少则2、3个,多则4、5个! 甚至有在线播放音乐,这样一个人在线就相当与很多人在线!而美化版论坛因为使用大量的图片,也同样比标准版论坛占用iis数量大。

2:您的网站是主页+论坛的形式!
这样主页和论坛要争夺你的在线人数!

3:你的论坛内部有播放器!
一个人在线,然后他在线播放音乐,就占二个人在线!

4:你的论坛内部存在框架形式的网页!
每一个框架,就多一倍的在线!

5:你的论坛设置在线时间过小!
动网默认为40分钟,因为论坛在线只是计算一定时间内的活动用户数,当您设定的时间较小的时候,看起来论坛在线的人数就自然少了!

6:你的空间存在多个论坛!
有的客户在一个空间里上传多个论坛,如bbs bbs1 bbs2 等等 等等
毫无疑问,这样个论坛也是要争夺再线人数的!

7:你的论坛图片等文件被人盗链!
比如:你的论坛有张图片文件,被粘贴(注意是粘贴不是上传)到别的论坛!
别的论坛的用户在浏览该文件的时候也算一个在线人数!
尤其是logo连接的时候注意,一定要对方把您的logo上传到他的空间!

8:你的空间上放有下载文件!
如果用户用网络蚂蚁类的软件,每一个线程就表示一个在线,非常厉害!