【nginx】nginx 400 Bad request 错误的原因和解决办法

是request header过大所引起,request过大,通常是由于cookie中写入了较大的值所引起。
所幸在nginx中是有办法解决这个问题:
在nginx.conf中,将client_header_buffer_size和large_client_header_buffers都调大,可缓解此问题。
client_header_buffer_size:默认是1k,所以header小于1k的话是不会出现问题的。
large_client_header_buffers:该命令用于设置客户端请求的Header头缓冲区的大小,默认值为4KB。客户端请求行不能超过large_client_header_buffers指令设置的值,客户端请求的Header头信息不能大于large_client_header_buffers指令设置的缓冲区大小,否则会报“Request URL too large”(414)或者“Bad-request”(400)错误,如果客户端Cookie信息较大,则须增加缓冲区大小。
按我现在配置是:

client_header_buffer_size 128k;
large_client_header_buffers 4 128k;


参考资料:

  1. http://wiki.nginx.org/NginxHttpCoreModule#client_header_buffer_size
  2. http://wiki.nginx.org/NginxHttpCoreModule#large_client_header_buffers

【mssql】更改MSSQL数据库表所有者

网站更换空间的时候,经常会因为MSSQL数据库名不同,导致从旧空间备份的数据库在新空间还原后无法正常使用。这时候,我们可以通过将数据库表的所有者修改为"dbo"来解决这个问题,具体的方法如下:
打开"Microsoft SQL Server"的“企业管理器”,点开要修改的数据库,选择工具栏上的“工具”-“SQL 查询分析器”,输入以下代码:
1、批量修改MSSQL表的所有者

exec sp_MSforeachtable 'exec sp_changeobjectowner "?","dbo"' 
2、单个修改MSSQL表的所有者:
exec sp_changeobjectowner '要改的表名','dbo'

【mssql】MSSQL数据库迁移过程

昨天帮一个客户从虚拟主机(asp+mssql)环境迁移到我的国外windows VPS上,记录一下数据库迁移过程。
第一步:确保VPS IIS asp环境配置ok,可以使用asp探针检查
第一步:从虚拟主机商提供mssql备份文件,传输到windows VPS上,
第二步:在VPS主机上安装mssql 2000+ sp4
mysql 2000下载地址:http://big_dx1.52z.com//SQL_PERSONAL.rar
mssql sp4下载地址:官方下载
安装MSSQL记得记录sa密码

第三步:数据库恢复,可查看此文章
第四步:恢复后问题解答:
 解决登录名和用户名不同步问题
或者修改恢复后数据库表所有者,具体操作查看此文章

【dropbox】使用dropbox备份windows VPS文件

概述:

dropbox 一家不错的同步备份服务,一个在线存储,同步,分享服务,Dropbox 需要在电脑里安装一个程序,它会指定一个文件夹,文件夹中的任何改动会被自动同步到 Dropbox。同步过程在背景中进行,感觉不到它的存在。Dropbox 支持 Windows, Mac, Linux。

目的:

在Windows2003 VPS上安装配置dropbox,把C:\wwwroot\目录通过到dropbox目录下的/vps206/wwwroot/下,由于dropbox运行时占用的内存比较大,不建议一直在后台运行,建议定时运行。

【dropbox】使用dropbox备份linux VPS文件

目录

  1. 概述
  2. 目的
  3. 下载和配置
  4. 获得授权机器码
  5. 绑定机器与帐号
  6. 建立dropbox的同步目录及运行
  7. 优化dropbox
  8. 卸载dropbox
  9. 参考资料

概述:


dropbox 一家不错的同步备份服务,一个在线存储,同步,分享服务,Dropbox 需要在电脑里安装一个程序,它会指定一个文件夹,文件夹中的任何改动会被自动同步到 Dropbox。同步过程在背景中进行,感觉不到它的存在。Dropbox 支持 Windows, Mac, Linux。

目的:


在linux(CentOS) VPS上安装配置dropbox,把/var/www/html/目录通过到dropbox目录下的/vps206/var/www/html下,由于dropbox运行时占用的内存比较大,不建议一直在后台运行,建议定时运行,同时提供从dropbox恢复的办法。

【wget】使用wget从ftp服务器批量迁移文件到VPS

概述:

最近有几个朋友网站程序需要从虚拟主机迁移到linux VPS上,而本地有没有打包好的备份程序,虚拟主机又不提供压缩操作,如果按通常的办法,先在自己本地电脑使用FTP客户端下载虚拟主机的文件,然后打包压缩传输到VPS上,再解压,有没有更好的办法呢? 通过下面步骤一步到位就可以达到。

目的:

把虚拟主机上的文件下载到VPS指定目录,假设相关数据如下:

  • 虚拟主机ftp IP:8.8.8.8
  • ftp帐号:15099net
  • ftp密码:15099netpasswd
  • 传输的目录:/wwwroot
  • VPS存放目录:/root/ftptest
[root@www.15099.net ~]# mkdir /root/ftptest/   #在VPS上新建存放目录
[root@www.15099.net ~]# cd /root/ftptest/      #进入存放目录
[root@www.15099.net ~]# wget -nv -nH --cut-dirs=1 -m --ftp-user=15099net --ftp-password=15099netpasswd ftp://8.8.8.8/wwwroot/
[root@www.15099.net ~]# find /root/ftptest/ -name ".listing" -exec rm -f {} \;  # 批量删除下载到vps主机生产的.listing列表隐藏文件
wget参数解释:
-nv 关闭输出信息,这样更相信的ftp下载信息就不会输出
-nH 不创建主机目录
-m 镜像下载,
--cut-dirs 忽然远程目录组件信息

【webbench】Linux下网站压力/负载测试之webbench篇

Linux下网站压力/负载测试之webbench篇

介绍

webbench最多可以模拟3万个并发连接去测试网站的负载能力,个人感觉要比Apache自带的ab压力测试工具好,安装使用也特别方便。

适用系统:Linux

预环境配置

安装必要的编译包
[root@www.15099.net ~]# LANG=en_US
[root@www.15099.net ~]# export LANG
[root@www.15099.net ~]# yum -y install rpm-build pcre-devel zlib-devel openssl-devel gcc openldap-devel pam-devel make vim-minimal tar vixie-cron gcc-c++ autoconf automake make ctags  # ctags包需要的,否则编译出错

下载和安装

[root@www.15099.net ~]# cd /usr/src
[root@www.15099.net ~]# wget http://blog.s135.com/soft/linux/webbench/webbench-1.5.tar.gz  #下载源程序
--15:46:22--  http://blog.s135.com/soft/linux/webbench/webbench-1.5.tar.gz
           => `webbench-1.5.tar.gz'
Resolving blog.s135.com... 122.200.66.145
Connecting to blog.s135.com|122.200.66.145|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 7,675 (7.5K) [application/octet-stream]

100%[====================================>] 7,675          8.62K/s

15:46:30 (8.62 KB/s) - `webbench-1.5.tar.gz' saved [7675/7675]

[root@www.15099.net ~]# tar zxvf webbench-1.5.tar.gz   #解压源文件
webbench-1.5/
webbench-1.5/webbench.1
webbench-1.5/socket.c
webbench-1.5/webbench.c
webbench-1.5/Makefile
webbench-1.5/debian/
webbench-1.5/debian/rules
webbench-1.5/debian/dirs
webbench-1.5/debian/copyright
webbench-1.5/debian/control
webbench-1.5/debian/changelog
webbench-1.5/COPYRIGHT
webbench-1.5/ChangeLog
[root@www.15099.net ~]# cd webbench-1.5    #进入程序目录
[root@www.15099.net webbench-1.5]# make    #编译程序
cc -Wall -ggdb -W -O   -c -o webbench.o webbench.c
webbench.c:77: warning: unused parameter 'signal'
cc -Wall -ggdb -W -O  -o webbench webbench.o
ctags *.c
[root@www.15099.net webbench-1.5]# mkdir /usr/local/man  #建立相应目录(否则导致无法正常安装)
[root@www.15099.net webbench-1.5]# make install  #安装程序
install -s webbench /usr/local/bin
install -m 644 webbench.1 /usr/local/man/man1
install -d /usr/local/share/doc/webbench
install -m 644 debian/copyright /usr/local/share/doc/webbench
install -m 644 debian/changelog /usr/local/share/doc/webbench
运行和显示运行结果
[root@www.15099.net ~]# webbench -c 100 -t 30 http://192.168.1.235/index.html   # 参数说明:
                                                                                # -c表示并发数,-t表示时间(秒)

Webbench - Simple Web Benchmark 1.5
Copyright (c) Radim Kolar 1997-2004, GPL Open Source Software.

Benchmarking: GET http://192.168.1.235/index.html
100 clients, running 30 sec.   

Speed=16084 pages/min, 152872 bytes/sec. #运行结果显示
Requests: 8042 susceed, 0 failed.


完整的配置脚本


LANG=en_US
export LANG
yum -y install rpm-build pcre-devel zlib-devel openssl-devel gcc openldap-devel pam-devel make vim-minimal tar vixie-cron gcc-c++ autoconf automake make ctags
cd /usr/src
wget http://blog.s135.com/soft/linux/webbench/webbench-1.5.tar.gz
tar zxvf webbench-1.5.tar.gz
cd webbench-1.5
make
mkdir /usr/local/man
make install
webbench -c 100 -t 30 http://192.168.1.235/index.html

【DDos】在VPS部署DDoS-deflate 防御/减轻DDOS攻击

前言


互联网如同现实社会一样充满钩心斗角,网站被DDOS也成为站长最头疼的事。在没有硬防的情况下,寻找软件代替是最直接的方法,比如用iptables,但是iptables不能在自动屏蔽,只能手动屏蔽。今天要说的就是一款能够自动屏蔽DDOS攻击者IP的软件:DDoS deflate

DDoS deflate介绍


DDoS deflate是一款免费的用来防御和减轻DDoS攻击的脚本。它通过netstat监测跟踪创建大量网络连接的IP地址,在检测到某个结点超过预设的限 制时,该程序会通过APF或IPTABLES禁止或阻挡这些IP.

DDoS deflate官方网站:http://deflate.medialayer.com/
如何确认是否受到DDOS攻击?
执行:
[root@www.15099.net ~]#netstat -ntu | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -n
1 114.226.9.132
1 174.129.237.157
1 58.60.118.142
1 Address
1 servers)
2 118.26.131.78
3 123.125.1.202
3 220.248.43.119
4 117.36.231.253
4 119.162.46.124
6 219.140.232.128
8 220.181.61.31
2311 67.215.242.196

或者使用netstat -ntu | awk 'NR>2 {print $5}' 语句,这样输出不会出现1 Address 1 servers) 信息
每个IP几个、十几个或几十个连接数都还算比较正常,如果像上面成百上千肯定就不正常了。

【nginx】解决Nginx遇到的502 Bad Gateway错误

最近有朋友反映,他们将Web服务器换成Nginx 0.6.39 + PHP后,有时候访问会出现“502 Bad Gateway”错误,所有的PHP程序将不能正常访问,解决方法如下:
1、查看当前的PHP FastCGI进程数是否够用:

[root@www.15099.net ~]#netstat -anpo | grep "php-cgi" | wc -l
1

如果实际使用的“FastCGI进程数”接近预设的“FastCGI进程数”,那么,说明“FastCGI进程数”不够用,需要增大。

2、部分PHP程序的执行时间超过了Nginx的等待时间,可以适当增加nginx.conf配置文件中FastCGI的timeout时间,例如:
......
http 
{
......
fastcgi_connect_timeout 300;
fastcgi_send_timeout 300;
fastcgi_read_timeout 300;
......
}
......

【apache】在vps主机上优化apache

参考资料:
http://wanwp.com/tips-tricks/optimize-your-apache-vps-for-wordpress/

【cvs】在vps主机上配置cvs服务器

查考资料:http://8176726.blog.163.com/blog/static/51966474200901925622226/

【nginx】在VPS主机环境nginx的Rewrite重写配置

概述:

【通知】vps主机机房电源检修通知

各位vps主机客户:

很抱歉的通知各位

【ssh】在vps主机使用ssh做socks代理

http://wiki.vpslink.com/Instant_SOCKS_Proxy_over_SSH#Application_Configuration

【pure-ftpd】pure-ftpd

参考资料:
http://www.wenzizone.cn/?p=331

【accel-pptp】accel-pptp-install-and-configure

官方网站:http://accel-pptp.sourceforge.net/


【filezilla】在windows VPS安装filezilla FTP 服务器

官方下载 官方地址 http://filezilla-project.org/

参考资料:
http://xbeta.info/filezilla-server.htm

【Nginx】一分钟快速安装LNMP最新版

发现一个不错的LNMP rpm 仓库
地址:
http://centos.alt.ru/pub/repository/centos/5/i386/
http://centos.alt.ru/pub/repository/centos/5/x86_64/
我们可以快速全自动搞定 CentOS + Nginx + PHP-FPM + MySQL 的安装了,方法如下:
先建一个repo

vi /etc/yum.repos.d/alt.ru.repo
内容为:
[CentALT]
name=CentALT Packages for Enterprise Linux 5 - $basearch
baseurl=http://centos.alt.ru/repository/centos/5/$basearch/
enabled=1
gpgcheck=0
protect=1
启用EPEL repo
I386:
rpm -ihv http://download.fedora.redhat.com/pub/epel/5/i386/epel-release-5-3.noarch.rpm
x86_64:
rpm -ihv http://download.fedora.redhat.com/pub/epel/5/x86_64/epel-release-5-3.noarch.rpm
接着导入Key
rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL
安装:
yum install nginx php-fpm mysql mysql-server

完整安装脚本
yum -y update
yum -y install mysql mysql-server
sed -i 's#old_passwords=1#old_passwords=1\nskip-innodb\nskip-bdb\n#' /etc/my.cnf
/etc/init.d/mysqld start

mysqladmin -u root password root
yum -y install nginx php-fpm php-cli php-pdo php-mysql php-mcrypt php-mbstring php-gd php-tidy php-xml php-xmlrpc php-pear php-pecl-memcache php-eaccelerator  #APC 和 eAccelerator 有冲突,2选1
yum -y install php-pecl-apc
/etc/init.d/nginx start

配置开机自动启动
chkconfig --level 345 mysqld on
chkconfig --level 345 php-fpm on
chkconfig --level 345 nginx on

参考资料
http://www.21andy.com/blog/20100219/1701.html

【Nginx】加密nginx某个子目录

比如要对网站目录下的 test 文件夹 进行加密认证那么 在 nginx.conf 文件中对应的 server 段中 添加

location ^~ /test/ {
auth_basic   TEST-Login;
auth_basic_user_file   /root/htpasswd;
}
再在 root 的主目录中 /root/ 创建一个新文件 htpasswd
此文件的书写格式是
用户名:密码
每行一个账户
并且 密码必须使用函数 crypt(3) 加密

官方档说 可以用 Apache 的 htpasswd 工具来创建密码文件
当然也可以使用perl 创建密码文件 新建 一个 pw.pl 文件 其内容:
#!/usr/bin/perl
use strict;

my $pw=$ARGV[0] ;
print crypt($pw,$pw)."\n";
然后执行
chmod +x pw.pl
./pw.pl password
papAq5PwY/QQM
papAq5PwY/QQM 就是password 的crypt()密码
然后 将上面用 perl 生成的 加密后的密码
按照
用户名:密码
的格式写到 htpasswd 文件中

这样既完成了设置

如果 不用
location ~ ^/test/ {
                auth_basic         "Restricted";
  auth_basic_user_file htpasswd;
  }
而用
/test
例子:
 location ~ ^/([0-9]+)/([0-9]+)/admin-(.*)\.html$ {
  proxy_pass              http://www.15099.net;
  proxy_redirect          off;
         proxy_set_header        X-Real-IP       $remote_addr;
         proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
  proxy_intercept_errors on;
  auth_basic "Restricted";
  auth_basic_user_file htpasswd;
  }
设置类似于http;//www.15099.net/2009/01/admin-test.html网页,弹出要求授权对话框。
的话 那么 将只能对目录进行验证 直接访问其下的文件 将不会弹出登录验证

还有 htpasswd 这个文件的名字可以 自己随意设置
用户名 也是 自己随意设置 无需加密
密码必须使用函数 crypt(3) 加密

参考资料:
http://www.htooy.org/blog/18/nginx-401

【ncftpput】使用ncftpput备份数据到远程FTP服务器商

tar cf - 需要备份的目录路径 | zip -1 -q -P 你的密码 - - | ncftpput -c -V -u ftp用户名 -p ftp密码 ftp.example.com /ftp上文件名
if [ $? -eq 0 ]; then
echo '备份成功'
fi
注意需要安装tar,zip和ncftp
这个备份方法有3个优点。。。
1. 不会生成本地文件,在备份大量文件时很有用不会空间不足,而且IO占用低,对网站运行影响小。。
2. 备份的文件是压缩的,网站页面,数据库数据的压缩率还是很客观。
3. 备份的文件是加密的,主要你的密码足够复杂,放在ftp上很安全。。。

【nginx】nginx 打开太多的文件错误及解决办法

声明: 此方法不适合openvz VPS
我发现我的nginx服务器日志下出现如下错误:

2010/04/16 13:24:16 [crit] 21974#0: *3188937 open() "/usr/local/nginx/html/50x.html" failed (24: Too many open files), client: 88.x.y.z, server: example.com, request: "GET /file/images/background.jpg HTTP/1.1", upstream: "http://10.8.4.227:81//file/images/background.jpg", host: "example.com"
那么如下解决此问题在CentOS / RHEL / Fedora Linux 或者unix下

查看当前nginx可打开的文件数目:
[root@haixin5hliyjzl71 ~]#su - nginx
[root@haixin5hliyjzl71 ~]#ulimit -Hn
1024
[root@haixin5hliyjzl71 ~]#ulimit -Sn
1024
[root@haixin5hliyjzl71 ~]#

调整内核可打开的总数:
vi /etc/sysctl.conf
增加或修改成如下参数:
fs.file-max = 70000
修改/etc/security/limits.conf 文件限制
vi /etc/security/limits.conf
在文件末尾添加如下语句:
nginx       soft    nofile   10000
nginx       hard    nofile  30000
是修改后的内核生效:
sysctl -p
修改/etc/nginx/nginx.conf文件
vi /etc/nginx/nginx.conf
添加如下语句
# set open fd limit to 30000
worker_rlimit_nofile 30000;
重启nginx程序及查看最大打开文件数
[root@haixin5hliyjzl71 ~]#su - nginx
[root@haixin5hliyjzl71 ~]#ulimit -Hn
30000
[root@haixin5hliyjzl71 ~]#ulimit -Sn
10000

参考文件:
http://www.cyberciti.biz/faq/linux-unix-nginx-too-many-open-files/

【pptpd】rpm安装pptpd VPN服务器

环境:CentOS 最新版 (CentOS 5.40

第一步:清楚以前的pptpd的相关文件和防火墙设置

yum remove -y pptpd ppp
iptables --flush POSTROUTING --table nat
rm -rf /etc/pptpd.conf
rm -rf /etc/ppp

第二步:安装pptpd

wget http://file.xingke.info/proxy/vpn/pptpd/dkms-2.0.17.5-1.noarch.rpm
wget http://file.xingke.info/proxy/vpn/pptpd/kernel_ppp_mppe-1.0.2-3dkms.noarch.rpm
wget http://file.xingke.info/proxy/vpn/pptpd/pptpd-1.3.4-1.rhel5.1.i386.rpm
wget http://file.xingke.info/proxy/vpn/pptpd/ppp-2.4.4-9.0.rhel5.i386.rpm

yum -y install make libpcap iptables gcc-c++ logrotate tar cpio perl pam tcp_wrappers
rpm -ivh dkms-2.0.17.5-1.noarch.rpm
rpm -ivh kernel_ppp_mppe-1.0.2-3dkms.noarch.rpm
rpm -qa kernel_ppp_mppe
rpm -Uvh ppp-2.4.4-9.0.rhel5.i386.rpm
rpm -ivh pptpd-1.3.4-1.rhel5.1.i386.rpm

第三步:配置文件

mknod /dev/ppp c 108 0 
echo 1 > /proc/sys/net/ipv4/ip_forward 
echo "mknod /dev/ppp c 108 0" >> /etc/rc.local
echo "echo 1 > /proc/sys/net/ipv4/ip_forward" >> /etc/rc.local
echo "localip 10.10.10.1" >> /etc/pptpd.conf
echo "remoteip 10.10.10.2-254" >> /etc/pptpd.conf
echo "ms-dns 8.8.8.8" >> /etc/ppp/options.pptpd
echo "ms-dns 4.4.4.4" >> /etc/ppp/options.pptpd

第四步:添加PPTP帐号

echo -e "vpnusername pptpd vpnuserpasswd *" >> /etc/ppp/chap-secrets
修改上面的vpnusernamevpnuserpasswd为你自己想设置的帐号

第五步:启动pptpd服务器和防火墙转发

iptables -t nat -A POSTROUTING -s 10.10.10.0/255.255.255.0 -j SNAT --to-source `ifconfig  | grep 'inet addr:'| grep -v '127.0.0.1' | cut -d: -f2 | awk 'NR==1 { print $1}'`
service iptables save

chkconfig iptables on
chkconfig pptpd on

service iptables start
service pptpd start

完整的脚步安装

wget http://file.xingke.info/proxy/vpn/pptpd/centos-rpm-vpn-pptpd.sh;sh ./centos-rpm-vpn-pptpd.sh;

【GNOME 】安装linux远程桌面GNOME Desktop

X-Window-GNOME-Desktop-FreeNX
参考资料:
http://www.hostloc.com/thread-10071-1-8.html
http://www.ctohome.com/FuWuQi/d0/260.html


【pptpd】yum安装pptpd VPN服务器

环境:CentOS 最新版(centos 5.4)


【nginx】配置nginx缓存存放在内存中

方法一:
1、修改/etc/fstab挂接内存文件系统,并指定selinux context

tmpfs                   /var/tmp/nginx/proxy_cache        tmpfs defaults,size=100m,context=system_u:object_r:httpd_cache_t:s0
tmpfs                   /var/tmp/nginx/proxy_temp         tmpfs defaults,size=100m,context=system_u:object_r:httpd_cache_t:s0
然后
mkdir -p /var/tmp/nginx/proxy_cache
mount -t ramfs none /var/tmp/nginx/proxy_cache

mkdir -p /var/tmp/nginx/proxy_temp
mount -t ramfs none /var/tmp/nginx/proxy_temp

2. 在http中指定nginx的proxy_temp_path
proxy_temp_path  /var/tmp/nginx/proxy_temp ; 
proxy_cache_path  /var/tmp/nginx/proxy_cache  levels=1:2   keys_zone=cache_one:64m inactive=1d max_size=128m;
add_header      X-Cache   HIT-LT;
上述方法适合于xen linux VPS和独立主机
方法二:
新建缓存存放地址
mkdir /dev/shm/proxy_cache
chmod 1777 /dev/shm/proxy_cache
mkdir -p /var/tmp/nginx/proxy_cache
mount --bind /dev/shm/proxy_cache /var/tmp/nginx/proxy_cache

mkdir /dev/shm/proxy_temp
chmod 1777 /dev/shm/proxy_temp
mkdir -p /var/tmp/nginx/proxy_temp
mount --bind /dev/shm/proxy_temp  /var/tmp/nginx/proxy_temp

在nginx主配置文件添加下面语句
proxy_temp_path  /var/tmp/nginx/proxy_temp ; 
proxy_cache_path  /var/tmp/nginx/proxy_cache  levels=1:2   keys_zone=cache_one:64m inactive=1d max_size=128m;
add_header      X-Cache   HIT-LT;
方法二适合于openvz linux VPS且要根据openvz VPS 下/proc/user_beancounters 下shmpages行的barrier 值确定proxy_cache_path的 max_size值,
备注:
nginx缓存需要版本高于0.7.48才支持。

【pptpd】源码安装pptpd VPN服务器

环境:CentOS最新版(CentOS 5.4)
IP: 192.168.0.1
第一步:安装环境

echo "echo 1 > /proc/sys/net/ipv4/ip_forward" >> /etc/rc.local
echo 1 > /proc/sys/net/ipv4/ip_forward
yum -y install iptables libpcap ppp
第二步:编译安装pptpd
cd /usr/src
wget http://downloads.sourceforge.net/project/poptop/pptpd/pptpd-1.3.4/pptpd-1.3.4.tar.gz
tar zxvf pptpd-1.3.4.tar.gz
cd pptpd-1.3.4
./configure --enable-bcrelay | tee pptpd.configure  # --with-libwrap 不编译进去,好像加了也不能用
make | tee pptpd.make
make install
第三步:配置文件
增加主配置文件pptpd.conf
vi /etc/pptpd.conf
内容如下:
option /etc/ppp/options.pptpd
debug
logwtmp
localip 10.10.10.1
remoteip 10.10.10.2-254
增加pptpd选项文件
vi /etc/ppp/options.pptpd
内容如下:
name pptpd
#logfile /var/log/ppp-pptpd.log
debug
refuse-pap
refuse-chap
refuse-mschap
require-mschap-v2
require-mppe-128
proxyarp
nobsdcomp
lock
novj
novjccomp
nologfd
ms-dns 4.2.2.1
ms-dns 4.2.2.2
增加帐号文件
vi /etc/ppp/chap-secrets
内容如下:
vpntest    *    test   10.10.10.2-128
如果需要添加其他帐号,按如上格式添加
第四步:防火墙设置
/etc/init.d/iptables start
iptables -t nat -F
iptables -t nat -A POSTROUTING -o eth0 -s 10.10.10.0/24 -j SNAT --to 192.168.0.1
#iptables -t nat -A POSTROUTING -o eth0 -s 10.10.10.0/24 -j MASQUERADE
#如果你的ip是动态的,就需要使用MASQUERADE
iptables -t nat -L -n
iptables -L -n
service iptables save
第五步:启动pptpd
/usr/local/sbin/pptpd -c /etc/pptpd.conf

【PortableVPN】windows PPTPD vpn 客户端软件

PortableVPN 一款免费的windows pptpd VPN 客户端拨号软件,官方网站:http://www.portablevpn.nl/
系统要求:
Windows 2000/XP/2003/Vista/2008/Windows7
3M磁盘空间
官方下载地址:http://www.portablevpn.nl/download/PortableVPN.exe


用法:

  • 下载软件到本地磁盘
  • 自解压到你想要的磁盘
  • 输入你的VPN帐号和密码就可以登录了

【apache】通过yum安装LAMP

环境:CentOS 最新版(CentOS 5.4)
第一步:删除以前的老版本

yum -y remove httpd mysql-server php php-devel php-mysql php-mcrypt php-mbstring php-gd
rm -rf /var/lib/mysql
yum -y update
第二步:安装mysql数据库
yum -y install mysql mysql-server
chkconfig mysqld on
sed -i 's#old_passwords=1#old_passwords=1\nskip-innodb\nskip-bdb\nquery-cache-type = 1\nquery-cache-size = 16M\n#' /etc/my.cnf
/etc/init.d/mysqld start
/usr/bin/mysqladmin -u root password 'mysqlrootpasswd'
/usr/bin/mysqladmin -u root -h `hostname` password 'mysqlrootpasswd'
第三步:
yum -y install httpd php php-devel php-mysql php-mcrypt php-mbstring php-gd
chkconfig httpd on

cp /etc/httpd/conf/httpd.conf /etc/httpd/conf/httpd.conf.bak
sed -i 's#ServerTokens OS#ServerTokens Minor#' /etc/httpd/conf/httpd.conf
sed -i 's#Timeout 120#Timeout 30#' /etc/httpd/conf/httpd.conf
sed -i 's#KeepAlive Off#KeepAlive On#' /etc/httpd/conf/httpd.conf
sed -i 's#MaxKeepAliveRequests 100#MaxKeepAliveRequests 500#' /etc/httpd/conf/httpd.conf
sed -i 's#KeepAliveTimeout 15#KeepAliveTimeout 5#' /etc/httpd/conf/httpd.conf
sed -i 's#StartServers       8#StartServers       1#' /etc/httpd/conf/httpd.conf
sed -i 's#MinSpareServers    5#MinSpareServers    1#' /etc/httpd/conf/httpd.conf
sed -i 's#MaxSpareServers   20#MaxSpareServers    2#' /etc/httpd/conf/httpd.conf
sed -i 's#ServerLimit      256#ServerLimit       50#' /etc/httpd/conf/httpd.conf
sed -i 's#MaxClients       256#MaxClients        50#' /etc/httpd/conf/httpd.conf
sed -i 's#MaxRequestsPerChild  4000#MaxRequestsPerChild  100#' /etc/httpd/conf/httpd.conf

/etc/init.d/httpd start
第四步:配置phpmyadmin数据库管理
cd /var/www/html
wget http://prdownloads.sourceforge.net/phpmyadmin/phpMyAdmin-2.11.9.4-all-languages.zip
unzip phpMyAdmin-2.11.9.4-all-languages.zip
mv phpMyAdmin-2.11.9.4-all-languages phpmyadmin
rm -rf phpMyAdmin-2.11.9.4-all-languages.zip
cd phpmyadmin
cp config.sample.inc.php config.inc.php
sed -i "/blowfish_secret/s/''/'test99'/" /var/www/html/phpmyadmin/config.inc.php

【Nginx】通过yum安装LNMP

本文一步一步描述如何使用yum安装LNMP,
系统环境: centos 最新版(CentOS 5.4) 主机ip: 192.168.0.1
PHP: 5.1.6
MYSQL:5.077
Nginx:0.6.39

第一步:升级系统到最新版本

yum -y update
第二步:安装mysql数据库
yum -y install mysql mysql-server
chkconfig --level 235 mysqld on
sed -i 's#old_passwords=1#old_passwords=1\nskip-innodb\nskip-bdb\n#' /etc/my.cnf
/etc/init.d/mysqld start
mysqladmin -u root password mysqlrootpasswd
第三步:安装nginx
wget http://download.fedora.redhat.com/pub/epel/5/i386/epel-release-5-3.noarch.rpm
rpm -Uvh epel-release-5-3.noarch.rpm
rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL
rm -rf epel-release-*
yum -y install nginx
chkconfig --level 235 nginx on
mv /etc/nginx/nginx.conf /etc/nginx/nginx.conf.bak
修改/etc/nginx/nginx.conf配置文件
vi /etc/nginx/nginx.conf
内容如下:
user              nginx;
worker_processes  1;

error_log         /var/log/nginx/error.log;

pid               /var/run/nginx.pid;

events {
worker_connections  1024;
}

http {
include       /etc/nginx/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"';

access_log  /var/log/nginx/access.log  main;

sendfile        on;
tcp_nopush     on;

keepalive_timeout  65;

gzip on;
gzip_min_length  1k;
gzip_buffers     4 16k;
gzip_http_version 1.0;
gzip_comp_level 2;
gzip_types text/plain text/css text/xml application/x-javascript application/atom+xml application/rss+xml;
gzip_vary on;
server_name_in_redirect off;    #自动添加斜线”/”语句
include /etc/nginx/conf.d/*.conf;  
} 
新建/etc/nginx/conf.d/http.conf文件,默认网站(使用ip访问的网站)
vi /etc/nginx/conf.d/http.conf
内容如下:
server {
listen       80;
server_name  _;
# error_log         /usr/share/nginx/html/log/error.log;
# access_log  /usr/share/nginx/html/log/access.log  main;


location / {
root   /usr/share/nginx/html;
index  index.php index.html index.htm;
}


location ~ \.php$ {
fastcgi_pass   unix:/tmp/php-cgi.sock;
fastcgi_index  index.php;
fastcgi_param  SCRIPT_FILENAME  /usr/share/nginx/html$fastcgi_script_name;
include        fastcgi_params;
}

}
启动nginx
/etc/init.d/nginx start
第四步:安装php CGI
wget http://dag.wieers.com/rpm/packages/rpmforge-release/rpmforge-release-0.3.6-1.el5.rf.i386.rpm
rpm -Uvh rpmforge-release-0.3.6-1.el5.rf.i386.rpm
rm -rf rpmforge-release-*
yum -y install lighttpd-fastcgi php-cli php-mysql php-gd php-mbstring php-mcrypt php-eaccelerator php-pecl-memcache
chkconfig --del httpd
chkconfig --del lighttpd
echo 'cgi.fix_pathinfo = 1' >> /etc/php.ini
启动php cgi
echo "/usr/bin/spawn-fcgi -s /tmp/php-cgi.sock -C 2 -u nginx -g nginx -f /usr/bin/php-cgi -P /var/run/fastcgi-php.pid " >> /etc/rc.local
/usr/bin/spawn-fcgi -s /tmp/php-cgi.sock -C 2 -u nginx -g nginx -f /usr/bin/php-cgi -P /var/run/fastcgi-php.pid
或通过另外一种方式启动(建议使用第一种方式)
echo "/usr/bin/spawn-fcgi -a 127.0.0.1 -p 9000 -C 5 -u nginx -g nginx -f /usr/bin/php-cgi -P /var/run/fastcgi-php.pid" >> /etc/rc.local
/usr/bin/spawn-fcgi -a 127.0.0.1 -p 9000 -C 5 -u nginx -g nginx -f /usr/bin/php-cgi -P /var/run/fastcgi-php.pid
第五步:建立测试页面
chmod -R 777  /var/lib/php/session/
echo "" > /usr/share/nginx/html/phpinfo.php
第六步:安装phpmyadmin
cd /usr/share/nginx/html
wget http://downloads.sourceforge.net/project/phpmyadmin/phpMyAdmin/2.11.10/phpMyAdmin-2.11.10-all-languages-utf-8-only.tar.gz
tar zxvf phpMyAdmin-2.11.10-all-languages-utf-8-only.tar.gz
mv phpMyAdmin-2.11.10-all-languages-utf-8-only phpmyadmin
cd phpmyadmin
cp config.sample.inc.php config.inc.php
sed -i "/blowfish_secret/s/''/'test99'/" ./config.inc.php
第七步:验证
访问
http://192.168.0.1/phpinfo.php   #访问phpinfo信息
http://192.168.0.1/phpmyadmin    #访问phpmyadmin数据库管理程序

【DNS】linux DNS客户端优化

DNS lookup 在把域名解析成 IP 过程中耽误了不少时间,尤其是访问比较复杂的网站的时候,比如某个页面包含多个 url,一次请求需要做多次 DNS 解析,并且从用户浏览器到 DNS server,以及 DNS server 和 DNS server 之间都会产生延迟或有可能发生的错误,Google 意识到了这点,作为 Google 雄心勃勃 make the web faster 计划的一部分,Google 去年年底发布了自己的 Google Public DNS,对于一些在我们的 VPS上使用 vpn 浏览网页的用户,在自己 VPS 里面加入 Google Public DNS 可以加快访问网站的速度(虽然作为用户来说速度差异感觉不明显)。打开 Linux 的 inlcude/resolv.h 文件可以发现里面定义了可以追踪的 DNS server 数目:

$ vi /usr/include/resolv.h

/*
* Global defines and variables for resolver stub.
*/
# define MAXNS                  3       /* max # name servers we'll track */
所以 /etc/resolv.conf 定义了3个 name server,option rotate 选项指在这3个 dns server 之间轮回查询,option timeout:1 选项设定 lookup timeout 的时间为1秒(默认为5秒),下面是我的服务器使用的 DNS server 和 resolv.conf 配置:
$ cat /etc/resolv.conf

nameserver 8.8.8.8
nameserver 8.8.4.4
nameserver 4.2.2.2
option rotate
option timeout:1

【W-PPTP】windows VPN服务器命令行集

命令下vpn设置

rrasmgmt.msc                                                 #路由与远程访问
compmgmt.msc                                                 #计算机管理
netsh ras set user administrator permit                      #允许administrator拨入该VPN
netsh ras set user administrator deny                        #禁止administrator拨入该VPN
netsh ras show user                                          #查看哪些用户可以拨入VPN
netsh ras ip show config                                     #查看VPN分配IP的方式
netsh ras ip set addrassign method = pool                    #使用地址池的方式分配IP
netsh ras ip add range from = 192.168.3.1 to = 192.168.3.254 #地址池
的范围是从192.168.3.1到192.168.3.254

【PPTPD】pptpd快速安装脚本

系统要求:CentOS 5 32bits/64bits。
使用方法:

wget http://www.diahosting.com/dload/pptpd.sh
sh pptpd.sh

安装完成后会提示vpn用户名和密码。
VPN用户管理:
直接编辑/etc/ppp/chap-secrets文件,按照相同格式添加用户名和密码即可。

或者
wget http://www.CTOHome.com/linux-vps-pack/vpn-pptpd.sh;sh ./vpn-pptpd.sh;

【Nginx】Nginx打开目录浏览功能(autoindex)

Nginx默认是不允许列出整个目录的。如需此功能,打开nginx.conf文件,在location server 或 http段中加入
autoindex on;
另外两个参数最好也加上去:

autoindex_exact_size off;
默认为on,显示出文件的确切大小,单位是bytes。改为off后,显示出文件的大概大小,单位是kB或者MB或者GB

autoindex_localtime on;
默认为off,显示的文件时间为GMT时间。改为on后,显示的文件时间为文件的服务器时间
例子如下:

location /images {
root   /var/www/nginx-default/ibugaocn;
autoindex on;
autoindex_exact_size off;
autoindex_localtime on;
}
详细参照:
http://wiki.nginx.org/NginxChsHttpAutoindexModule

如果想希望目录列表支持header,footer则可以安装三方插件:

http://wiki.nginx.org/NginxNgxFancyIndex

【smartmontools】Linux 下查看硬盘使用时间

安装程序
http://smartmontools.sourceforge.net/
centos安装:

yum install smartmontools -y
假设硬盘为sda,可使用df命令查看
smartctl -A /dev/sda
输出内容
=== START OF READ SMART DATA SECTION ===
SMART Attributes Data Structure revision number: 10
Vendor Specific SMART Attributes with Thresholds:
ID# ATTRIBUTE_NAME          FLAG     VALUE WORST THRESH TYPE      UPDATED  WHEN_FAILED RAW_VALUE
1 Raw_Read_Error_Rate     0×000f   083   063   044    Pre-fail  Always       -       204269687
3 Spin_Up_Time            0×0003   099   099   000    Pre-fail  Always       -       0
4 Start_Stop_Count        0×0032   100   100   020    Old_age   Always       -       18
5 Reallocated_Sector_Ct   0×0033   100   100   036    Pre-fail  Always       -       0
7 Seek_Error_Rate         0×000f   069   060   030    Pre-fail  Always       -       7825289
9 Power_On_Hours          0×0032   099   099   000    Old_age   Always       -       1626
10 Spin_Retry_Count         0×0013   100   100   097    Pre-fail  Always       -       0
12 Power_Cycle_Count        0×0032   100   037   020    Old_age   Always       -       18
184 Unknown_Attribute       0×0032   100   100   099    Old_age   Always       -       0
187 Reported_Uncorrect      0×0032   100   100   000    Old_age   Always       -       0
188 Unknown_Attribute       0×0032   100   099   000    Old_age   Always       -       12
189 High_Fly_Writes         0×003a   100   100   000    Old_age   Always       -       0
190 Airflow_Temperature_Cel 0×0022   072   069   045    Old_age   Always       -       28 (Lifetime Min/Max 25/31)
194 Temperature_Celsius     0×0022   028   040   000    Old_age   Always       -       28 (0 22 0 0)
195 Hardware_ECC_Recovered  0×001a   050   047   000    Old_age   Always       -       204269687
197 Current_Pending_Sector  0×0012   100   100   000    Old_age   Always       -       0
198 Offline_Uncorrectable   0×0010   100   100   000    Old_age   Offline      -       0
199 UDMA_CRC_Error_Count    0×003e   200   200   000    Old_age   Always       -       0
其中
9 Power_On_Hours          0×0032   099   099   000    Old_age   Always       -       1626
就是磁盘总运行的时间

【Bind】使用yum安装bind DNS服务器

第一步:安装包

yum -y install bind bind-chroot bind-utils
chkconfig --level 345 named on
第二步:配置文件修改
添加named.conf配置文件
vi /var/named/chroot/etc/named.conf
内容为:
options {
directory       "/var/named";
dump-file       "/var/named/data/cache_dump.db";
statistics-file "/var/named/data/named_stats.txt";
pid-file        "/var/run/named/named.pid";
forwarders      { 8.8.8.8; 4.4.4.4; };
allow-query    { any; };
allow-transfer { none; };
Listen-on {127.0.0.1;};
};

include "/etc/rndc.key";

zone "." {
type hint;
file "named.root";
};

zone "local" {
type master;
file "named.local";
};

zone "0.0.127.in-addr.arpa" {
type master;
file "named.127.0.0";
};

zone "xingke.info" {
type master;
file "named.xingke.info";
};
建立/etc/named.conf软连接
ln -s /var/named/chroot/etc/named.conf /etc/named.conf
chown  named:root /var/named/chroot/etc/named.conf /etc/named.conf
下载named.root配置文件
cd /var/named/chroot/var/named/
wget ftp://rs.internic.net/domain/named.root
chown root:named named.root
新建/var/named/chroot/var/named/named.local文件
vi /var/named/chroot/var/named/named.local
内容为:
$TTL    86400
@       IN      SOA     localhost. root.localhost.  (
1997022700 ; Serial
28800      ; Refresh
14400      ; Retry
3600000    ; Expire
86400 )    ; Minimum
IN      NS      localhost.
1       IN      PTR     localhost.
新建127.0.0反向文件
vi /var/named/chroot/var/named/named.127.0.0
内容为:
$TTL    600
@ IN SOA localhost. root.localhost. ( 2006102001 28800 14400 720000 86400 )

@          IN   NS   localhost.
1          IN   PTR  localhost.
新建named.xingke.info文件
vi /var/named/chroot/var/named/named.xingke.info
内容为:
$TTL    600
@ IN SOA linux.xingke.info. root.linux ( 2006102001 28800 14400 720000 86400 )

@          IN   NS     linux.xingke.info.
@          IN   NS     slave.xingke.info.
linux      IN   A      74.62.154.33
slave      IN   A      74.62.154.34
@          IN   MX 10  linux

www        IN   CNAME  ghs.google.com.
help       IN   CNAME  ghs.google.com.
blogger       IN   CNAME  ghs.google.com.
*.help.xingke.info. IN CNAME ghs.google.com.

sun        IN   A      74.62.154.34
sun        IN   TXT    "The sun solaris OS"
sun        IN   HINFO  "Celeron 1G""Solaris 10"
调整上述新建文件所属帐号
chown -R root:named /var/named/chroot/var/named

第三步:启动
/etc/init.d/named start
第四步:查看日志
netstat -atunlp #看输出有没有53端口监听
tail -f /var/log/message

第五步:使用刚才建立的DNS
mv /etc/resolv.conf.bak
echo "nameserver 127.0.0.1" > /etc/resolv.conf

【Nginx】采用Nginx搭建反向代理服务器

server{
listen       443;
server_name  youdomain.com;
index  index.html index.htm index.php;
location / {
proxy_pass http://www.blockedsite.com;
proxy_redirect off;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}

ssl on;
ssl_certificate  /etc/nginx/cacert.pem;
ssl_certificate_key /etc/nginx/privkey.pem;

}
或:

server {
        listen       80;
        server_name  www.15099.net;

        location / {
         proxy_pass              http://www.google.com;
         proxy_redirect          off;
         proxy_set_header        X-Real-IP       $remote_addr;
         proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
         }

}
如果有多个域名需要反向代理到一个域名,可以通过下面方法:
server {
        listen       80 default;
        location / {
         proxy_pass              http://www.google.com;
         proxy_redirect          off;
         proxy_set_header        X-Real-IP       $remote_addr;
         proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
         }

}

参考资料
http://www.hostloc.com/viewthread.php?tid=16636