Beau Blog – 一个与众不同的SEO BLOG
2010年09月2日服务器

0 Comments

rsync同步镜像配置

转自:http://www.liyue.org/tech/archives/11

需要两台服务器,一台为制作服务器,安装CMS系统,用来制作网站;一台为发布服务器,用来发布生成后的静态网站。

我们采用rsync服务,来实现。原理是发布服务器从制作服务器端镜象数据。制作服务器需要安装rsync服务,充当rsync服务器,而发布服务器充当rsync客户端角色。

一、.在rsync服务器端安装配置rsync服务,查看是否安装了rsync,
rpm -qa|grep rsync
以RedHat linux AS3为例,rsync-2.5.6-20

1. 启动rsync
rsync -daemon
或者/etc/init.d/xinetd start (stop/restart)
如果想要它在每次开机时自动启动,在命令行执行setup命令,进入system services(系统服务),找到rsync服务,选中。重起系统即可。

2. 配置rsync,打开/etc/rsyncd.conf
如果没有此文件则创建它。
文件内容如下书写:

[www] (这是要镜象的模块名字,可以随意起)
uid=0
gid=0
path = /var/web/htdocs/sites (这个是被镜象的文件夹路径)
ignore errors
read only = true
list = false
hosts allow = 10.30.0.59 (这个地址是发布服务器的地址,意为允许此地址对服务器镜象)
hosts deny = 0.0.0.0/32

(如果你还有其他的文件需要镜象,那么请复制上面这段,更改模块名字和path地址)

二、配置rsync客户端,就是发布服务器。

1、首先你应该先测试一下,能否镜象。
在命令行执行:
rsync -tvzrp –progress 10.30.0.57::www /var/web/www
          ~~~~~ ——- =======
        rsync服务器ip 模块名 镜象到的地址
成功的话,可以看到镜象文件时的过程。

2、一下步就是让rsync客户端自动执行镜象命令。以便保持同步。
这就利用linux 的crontab服务,定时执行命令。(类似windows的计划任务)
1)将镜象的命令制作一个脚本,在/home 下,新建一个文件sync
将上面的命令写入文件。然后,更改此文件权限:chmod u+x sync
2)让linux自动执行命令:
执行:crontab -e 命令
键入:*/5 * * * * /home/sync
意思就是每隔5分钟执行/home/sync脚本。
应该让系统每次开机都运行crontab服务。同样运行setup,在system services里面,找到crontab服务,选中它。

有关彻底解决远程win2003超出最大连数的问题

windows 2003 下载:

http://www.xp580.com/soft/Win2003/3073.html

默认情况下允许远程终端连接的数量是2个用户,现在配置无限制连接数。

第一步:管理工具 — 管理您的服务器向导 — 服务器角色里面选择终端服务器 — 自定义配置 — 选择终端服务器 — 安装终端服务器

系统将自动重启 , 重启后 管理工具 — 终端服务器配置 — 点RDP- tcp 右键属性—- 网卡 — 默认就是无限制 , 在回到左边窗口,双击 服务器设置 里面的 限制每个用户使用一个会话 把是去掉

配置完成 !

有关临时许可证120天问题:

终端服务在客户端没有许可证的情况下,会临时颁发一个临时许可证给客户,这个许可证的有效期是90天,过了90天,如果客户访问服务器的时候,服务器发现
客户已经被颁发过临时许可证,就不再颁发,这样客户在90天外就不可以再访问服务器了。但是这个许可证是存储在客户机上的。只要把这个许可证删掉,在访问
服务器的时候,就又会颁发一个临时许可证给客户,这样就又有90天的访问权限。

这个临时许可证存储在客户机的注册表中,位于:hkey_local_machine\software\microsoft\mslicensing 把这项删掉,就可以删除颁发的临时许可证。

http://www.360doc.com/content/06/0915/05/2041_207893.shtml

http://blog.chinaunix.net/u/28814/showart_417392.html

Linux有关查找命令:Locate 和 find

使用说明:

locate命令是先建立一个包括系统内所有档案名称及路径的数据库,之后当寻找时就只需查询这个数据库,而不必实际深入档案系统之中了。

语法格式:

1
2
3
4
5
locate [-q] [-d ] [--database=]  
locate [-r ] [--regexp=] 
locate [-qv] [-o ] [--output=]  
locate [-e ] [-f ] <[-l ] [-c] [-U ] [-u]> 
locate [-Vh] [--version] [--help]

-u -U 建立数据库,-u 会由根目录开始,-U 则可以指定开始的位置。
-l 如果是 1.则启动安全模式。在安全模式下,使用者不会看到权限无法看到的档案。这会使速度减慢,
因为 locate 必须至实际的档案系统中取得档案的权限资料。
-f 将特定的档案系统排除在外,例如我们没有到理要把 proc 档案系统中的档案放在数据库中。
-q 安静模式,不会显示任何错误讯息。
-n 至多显示 个输出。
-r 使用正规运算式做寻找的条件。
-o 指定数据库存的名称。
-d 指定数据库的路径
-h 显示辅助讯息
-v 显示更多的讯息
-V 显示程序的版本讯息

应用实例

1
2
3
locate chdrv           : 寻找所有叫 chdrv 的档案 
locate -n 100 a.out    : 寻找所有叫  a.out 的档案,但最多只显示 100 个 
locate -u              : 建立数据库

find -name april* 在当前目录下查找以april开始的文件
find -name april* fprint file 在当前目录下查找以april开始的文件,并把结果输出到file中
find -name ap* -o -name may* 查找以ap或may开头的文件
find /mnt -name tom.txt -ftype vfat 在/mnt下查找名称为tom.txt且文件系统类型为vfat的文件
find /mnt -name t.txt ! -ftype vfat 在/mnt下查找名称为tom.txt且文件系统类型不为vfat的文件
find /tmp -name wa* -type l 在/tmp下查找名为wa开头且类型为符号链接的文件
find /home -mtime -2 在/home下查最近两天内改动过的文件
find /home -atime -1 查1天之内被存取过的文件
find /home -mmin +60 在/home下查60分钟前改动过的文件
find /home -amin +30 查最近30分钟前被存取过的文件
find /home -newer tmp.txt 在/home下查更新时间比tmp.txt近的文件或目录
find /home -anewer tmp.txt 在/home下查存取时间比tmp.txt近的文件或目录
find /home -used -2 列出文件或目录被改动过之后,在2日内被存取过的文件或目录
find /home -user cnscn 列出/home目录内属于用户cnscn的文件或目录
find /home -uid +501 列出/home目录内用户的识别码大于501的文件或目录
find /home -group cnscn 列出/home内组为cnscn的文件或目录
find /home -gid 501 列出/home内组id为501的文件或目录
find /home -nouser 列出/home内不属于本地用户的文件或目录
find /home -nogroup 列出/home内不属于本地组的文件或目录
find /home -name tmp.txt -maxdepth 4 列出/home内的tmp.txt 查时深度最多为3层
find /home -name tmp.txt -mindepth 3 从第2层开始查
find /home -empty 查找大小为0的文件或空目录
find /home -size +512k 查大于512k的文件
find /home -size -512k 查小于512k的文件
find /home -links +2 查硬连接数大于2的文件或目录
find /home -perm 0700 查权限为700的文件或目录
find /tmp -name tmp.txt -exec cat {} \;
find /tmp -name tmp.txt -ok rm {} \;

find / -amin -10 # 查找在系统中最后10分钟访问的文件
find / -atime -2 # 查找在系统中最后48小时访问的文件
find / -empty # 查找在系统中为空的文件或者文件夹
find / -group cat # 查找在系统中属于 groupcat的文件
find / -mmin -5 # 查找在系统中最后5分钟里修改过的文件
find / -mtime -1 #查找在系统中最后24小时里修改过的文件
find / -nouser #查找在系统中属于作废用户的文件
find / -user fred #查找在系统中属于FRED这个用户的文件
查当前目录下的所有普通文件
# find . -type f -exec ls -l {} \;
-rw-r–r– 1 root root 34928 2003-02-25 ./conf/httpd.conf
-rw-r–r– 1 root root 12959 2003-02-25 ./conf/magic
-rw-r–r– 1 root root 180 2003-02-25 ./conf.d/README
查当前目录下的所有普通文件,并在- e x e c选项中使用ls -l命令将它们列出

=================================================
在/ l o g s目录中查找更改时间在5日以前的文件并删除它们:
$ find logs -type f -mtime +5 -exec -ok rm {} \;

=================================================
查询当天修改过的文件
[root@book class]# find ./ -mtime -1 -type f -exec ls -l {} \;

=================================================
查询文件并询问是否要显示
[root@book class]# find ./ -mtime -1 -type f -ok ls -l {} \;
< ls … ./classDB.inc.php > ? y
-rw-r–r– 1 cnscn cnscn 13709 1月 12 12:22 ./classDB.inc.php
[root@book class]# find ./ -mtime -1 -type f -ok ls -l {} \;
< ls … ./classDB.inc.php > ? n
[root@book class]#

=================================================
查询并交给awk去处理
[root@book class]# who | awk ’{print $1″\t”$2}’
cnscn pts/0

=================================================
awk—grep—sed

[root@book class]# df -k | awk ‘{print $1}’ | grep -v ’none’ | sed s”/\/dev\///g”
文件系统
sda2
sda1
[root@book class]# df -k | awk ‘{print $1}’ | grep -v ’none’
文件系统
/dev/sda2
/dev/sda1
1)在/tmp中查找所有的*.h,并在这些文件中查找“SYSCALL_VECTOR”,最后打印出所有包含”SYSCALL_VECTOR”的文件名

A) find /tmp -name “*.h” | xargs -n50 grep SYSCALL_VECTOR
B) grep SYSCALL_VECTOR /tmp/*.h | cut -d’:’ -f1| uniq > filename
C) find /tmp -name “*.h” -exec grep “SYSCALL_VECTOR” {} \; -print

2)find / -name filename -exec rm -rf {} \;
find / -name filename -ok rm -rf {} \;

3)比如要查找磁盘中大于3M的文件:
find . -size +3000k -exec ls -ld {} ;

4)将find出来的东西拷到另一个地方
find *.c -exec cp ‘{}’ /tmp ‘;’

如果有特殊文件,可以用cpio,也可以用这样的语法:
find dir -name filename -print | cpio -pdv newdir

6)查找2004-11-30 16:36:37时更改过的文件
# A=`find ./ -name “*php”` | ls -l –full-time $A 2>/dev/null | grep “2004-11-30 16:36:37″

2010年08月18日Nginx

0 Comments

nginx伪装服务器header信息

举例:nginx伪装成Apache
修改

1
/lnmp/nginx-0.7.65/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: Apache" CRLF;
static char ngx_http_server_full_string[] = "Server: Apache" CRLF;

删除nginx文件夹

1
2
cd /usr/local
rm -rf nginx

重新编译nginx

1
2
3
cd /lnmp/nginx-0.7.65
./configure --user=www --group=www --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --with-http_gzip_static_module --with-ld-opt='-ltcmalloc_minimal'
make && make install

参考:http://blog.fabrichina.net/

http://typengine.com/content/nginx%E4%BF%AE%E6%94%B9%E6%9C%8D%E5%8A%A1%E5%99%A8header%E4%BF%A1%E6%81%AF

便宜的域名注册商

bookmyname.com COM注册5.99欧元
internetbs.netCOM注册7.49美金(续费8.35) NET注册6.99美金 免费WHOIS隐藏
ResellOne.net COM 7.73美金 NET 6.91美金 需1500美金预存款

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
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;
 
}

或:

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
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;
         }
 
}
如果有多个域名需要反向代理到一个域名,可以通过下面方法:
view source
print?
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

配置nginx缓存存放在内存中

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

1
2
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

然后

1
2
3
4
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

1
2
3
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和独立主机
方法二:
新建缓存存放地址

1
2
3
4
5
6
7
8
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主配置文件添加下面语句

1
2
3
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才支持。

加密nginx某个子目录

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

1
2
3
4
location ^~ /test/ {
auth_basic   TEST-Login;
auth_basic_user_file   /root/htpasswd;
}

再在 root 的主目录中 /root/ 创建一个新文件 htpasswd
此文件的书写格式是
用户名:密码
每行一个账户
并且 密码必须使用函数 crypt(3) 加密

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

1
2
3
4
5
#!/usr/bin/perl
use strict;
 
my $pw=$ARGV[0] ;
print crypt($pw,$pw)."\n";

然后执行

1
2
3
chmod +x pw.pl
./pw.pl password
papAq5PwY/QQM

papAq5PwY/QQM 就是password 的crypt()密码
然后 将上面用 perl 生成的 加密后的密码
按照
用户名:密码
的格式写到 htpasswd 文件中

这样既完成了设置

如果 不用

1
2
3
4
location ~ ^/test/ {
                auth_basic         "Restricted";
  auth_basic_user_file htpasswd;
  }

而用
/test
例子:

1
2
3
4
5
6
7
8
9
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

一分钟快速安装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

1
vi /etc/yum.repos.d/alt.ru.repo

内容为:

1
2
3
4
5
6
[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:

1
rpm -ihv http://download.fedora.redhat.com/pub/epel/5/i386/epel-release-5-3.noarch.rpm

x86_64:

1
rpm -ihv http://download.fedora.redhat.com/pub/epel/5/x86_64/epel-release-5-3.noarch.rpm

接着导入Key

1
rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL

安装:

1
yum install nginx php-fpm mysql mysql-server

完整安装脚本

1
2
3
4
5
6
7
8
9
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

配置开机自动启动

1
2
3
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做URL 301永久转发

nginx配置:

1
2
3
4
5
server {
    listen 80;
    server_name "要转向的域名";
    rewrite ^(.*)$ http://转向到的目的地/ permanent;
}
返回顶部