淡定在黑暗和黎明时分!!!
HTTP header中的 Cache-control
Cache-control常见的取值有private、no-cache、max-age、must-revalidate等
网页的缓存是由HTTP消息头中的“Cache-control”来控制的,常见的取值有private、no-cache、max-age、must-revalidate等,默认为private。其作用根据不同的重新浏览方式分为以下几种情况:
(1) 打开新窗口
如果指定cache-control的值为private、no-cache、must-revalidate,那么打开新窗口访问时都会重新访问服务器。而如果指定了max-age值,那么在此值内的时间里就不会重新访问服务器,例如:
Cache-control: max-age=5
表示当访问此网页后的5秒内再次访问不会去服务器
(2) 在地址栏回车
如果值为private或must-revalidate(和网上说的不一样),则只有第一次访问时会访问服务器,以后就不再访问。如果值为no-cache,那么每次都会访问。如果值为max-age,则在过期之前不会重复访问。
(3) 按后退按扭
如果值为private、must-revalidate、max-age,则不会重访问,而如果为no-cache,则每次都重复访问
(4) 按刷新按扭
无论为何值,都会重复访问
当指定Cache-control值为“no-cache”时,访问此页面不会在Internet临时文章夹留下页面备份。
另外,通过指定“Expires”值也会影响到缓存。例如,指定Expires值为一个早已过去的时间,那么访问此网时若重复在地址栏按回车,那么每次都会重复访问:
Expires: Fri, 31 Dec 1999 16:00:00 GMT
在ASP中,可以通过Response对象的Expires、ExpiresAbsolute属性控制Expires值;通过Response对象的CacheControl属性控制Cache-control的值,例如:
Response.ExpiresAbsolute = #2000-1-1# ‘ 指定绝对的过期时间,这个时间用的是服务器当地时间,会被自动转换为GMT时间
Response.Expires = 20 ‘ 指定相对的过期时间,以分钟为单位,表示从当前时间起过多少分钟过期。
Response.CacheControl = “no-cache”
| 打印文章 | 这篇文章由数字人于2008年11月08日 10:51 下午发表在用户体验, 编程技巧。你可以订阅RSS 2.0 也可以发表评论或引用到你的网站。 |
没有引用
apache自带负载均衡的集群功能实战录(mod_proxy模块的应用)
大约1年前 - 8个评论
下面以在apache mod_proxy下做的反向代理负载均衡为配置实例:在站点www.test.com,我们按提供的内容进行分类,不同的服务器 用于提供不同的内容服务,将http://www.test.com/news的访问转到IP地址为192.168.1.1的内部服务器上处理,对 http: //www.test.com/it的访问转到服务器192.168.1.2上,http://www.test.com/life的访问转 到服务器 192.168.1.3上,http://www.test.com/love的访问转到合作站http://www.love.com上,从 而减轻本apache服务器的负担,达到负载均衡的目的。
首先要确定域名www.test.com在DNS上的记录对应apache服务器接口上具有internet合法注册的IP地址,这样才能使internet上对www.test.com的所有连接请求发送给本台apache服务器。
在本台服务器的apache配置文件httpd.conf中添加如下设置:
proxypass /news http://192.168.1.1
proxypass /it http://192.168.1.2
proxypass /life http://192.168.1.3
proxypass /live http://www.live.com
注意,此项设置最好添加在httpd.conf文件“Section 2”以后的位置,服务器192.168.1.1-3也应是具有相应功能的www服务器,在重启服务时,最好用apachectl configtest命令检查一下配置是否有误。
接下来也是我真正想要介绍的2.2版本后在mod_proxy中新添加的mod_proxy_balancer模块给我们带来的新功能。
首先将在主配置文件http.conf以下Module的注释去掉
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_balancer_module modules/mod_proxy_balancer.so
LoadModule proxy_http_module modules/mod_proxy_http.so
再并增加以下元素
ProxyRequests Off
ProxyPass 更多 >
awstats安装和配置
大约2年前 - 693个评论
1.下载&&安装
http://awstats.sourceforge.net/
tar .. && cd …. && perl awstats_configure.pl
#然后根据提示操作,可以不要这步,直接根据自带的模版定义
#cp ../cgi-bin/awstats.model.conf /etc/awstats/common.conf
2.按照一下样例设置配置文件:
#cd /etc/awstats
#vi awstats.www.zhangjianfeng.com.conf
Include “common.conf”
LogFile=”/home/apache/logs/access_log.%YYYY-24%MM-24%DD-24″ %YYYY-24%MM-24%DD-24>>>
是指用24小时前的年月日日志文件名,如access_log.20061206
SiteDomain=”www.zhangjianfeng.com”
HostAliases=”zhangjianfeng.com”
DefaultFile=”index.html”
DirData=”/home/cgi-bin/awstats/data/”
3.更新数据
perl awstats.pl -config=mysite -update
4.配置apache
# Directives to allow use of AWStats as a CGI
Alias /awstatsclasses “/app/awstats-6.5/wwwroot/classes/”
Alias /awstatscss “/app/awstats-6.5/wwwroot/css/”
Alias /awstatsicons “/app/awstats-6.5/wwwroot/icon/”
ScriptAlias /awstats/ “/app/awstats-6.5/wwwroot/cgi-bin/”
<Directory “/app/awstats-6.5/wwwroot”>
Options None
AllowOverride None
Order allow,deny
Allow from all
</Directory>
5.对要分析的虚拟主机, 将CustomLog logs/access_xxx_log >>>
<<<common中的common改成combined
6. 重启apache,如果虚拟主机或目录配置好了,
就http://server/awstats/awstats.pl?config=mysite
7.添加定时分析指令
crontab -e
* */1 * * * (cd /path/to/apache/cgi-bin/; ./awstats.pl >>>
<<<-update -config=blog.zhangjianfeng.com)
8.直接分析gunzip压过的log
查了一下,如果是gz格式的压缩包,可以在配置文件中参考如下格式修改:
LogFile=”gzip -d 更多 >
高性能web应用
大约2年前 - 28个评论
高性能web应用的基本系统结构:
a) 基本结构:
负载均衡=>反向代理=>静态内容缓存=>静态内容=>动态应用加速=>动态应用=>数据缓存=>数据存储=>分布式应用
b) 负载均衡:负载均衡(Load Balance)建立在现有网络结构之上,它提供了一种廉价有效透明的方法扩展网络设备和服务器的带宽、增加吞吐量、加强网络数据处理能力、提高网络的灵活性和可用性,避免了网络关键部位出现单点失效。
i. 负载均衡有两方面的含义:
1. 首先,大量的并发访问或数据流量分担到多台节点设备上分别处理,减少用户等待响应的时间;
2. 其次,单个重负载的运算分担到多台节点设备上做并行处理,每个节点设备处理结束后,将结果汇总,返回给用户,系统处理能力得到大幅度提高。
ii. 常见的负载均衡方法:
1. DNS轮询:适合静态内容的简单均衡机制;
2. 智能DNS:在广域网中,对适合分布的静态内容可以做到智能判断用户来源,提供最近的Cache分发服务器方便用户就近高速访问;
3. 反向代理:将外部请求转发给内部的多台服务器,从而达到负载均衡的目的;同时可以将负载均衡和高速缓存结合在一起,提高性能;随着并发连接数量的增加,代理服务器本身的负载也变得非常大,最后反向代理服务器本身会成为服务的瓶颈。
4. 四层交换:
5. 内容交换(七层交换/URL交换):
a) 在HTTP请求和报头中有很多对负载均衡有用的信息。可以从这些信息中获知客户端所请求的URL和网页,负载均衡设备就可以将 所有的图像请求引导到一个图像服务器,或者根据URL的数据库查询内容调用CGI程序,将请求引导到一个专用的高性能数据库服务器。
b) 可以根据HTTP报头的cookie字段来使用Web内容交换技术改善对特定客户的服务;
c) 如果能从HTTP请求中找到一些规律,还可以充分利用它作出各种决策;
d) 除了TCP连接表的问题外,如何查找合适的HTTP报头信息以及作出负载平衡决策的过程,是影响Web内容交换技术性能的重要 问题。如果Web服务器已经为图像服务、SSL对话、数据库事务服务之类的特殊功能进行了优化,那么采用这个层次的流量控制将可以提高网络的性能。
c) 反向代理:(并入负载均衡一节)
d) 静态内容缓存:通常与反向代理合并在一起,提供静态内容(HTML页面,图片,js脚本,css文件等等)缓存。
e) 静态内容:CMS、Blog、Wiki等静态化应用。
f) 动态应用加速:利用Apache的MPM模式或者Zend、eAccelarator等加速引擎为动态应用加速。
g) 动态应用:网站核心功能SNS、交友、互动等等。
h) 数据缓存:memcached。
i) 数据存储:内存、磁盘文件或者数据库。
j) 分布式应用:分布式文件存储、数据库集群。
三、系统方案:整体方案采用开源产品,平台选用RHEL4up3(32bit/64bit)
a) 整体结构:
负载均衡=>反向代理=>静态内容缓存=>静态内容=>动态应用加速=>动态应用=>数据缓存=>数据存储=>分布式应用
NginX=>Squid=>Apache=>eAccelerator=>PHP=>memcached=>MySQL=>MogileFS/ICE
b) 平台:
i. 服务器: Intel(R) Xeon(TM) CPU 3.00GHz * 2, 2GB mem, SCISC 硬盘
ii. 操作系统:Linux RHEL 4 up3,内核版本2.6.9-22.ELsmp,gcc版本3.4.4
iii. 软件:
1. Apache 2.2.3(使用MPM模式)
2. PHP 5.2.0(5.2.0的引擎更高效)
3. eAccelerator 0.9.5(加速PHP引擎,同时也可以加密PHP源程序)
4. memcached 1.2.0(用于高速缓存常用数据)
5. libevent 1.2a(memcached工作机制所需)
6. MySQL 5.0.27(选用二进制版本,省去编译工作,有条件时用源码编译)
7. Nginx 0.5.4(用做负载均衡器)
8. squid-2.6.STABLE6(做反向代理的同时提供静态缓存功能)
c) 安装过程:
i. 安装Nginx:Nginx发音为[engine x],是由俄罗 斯人Igor Sysoev建立的项目,基于BSD许可。据说他当初是F5的成员之一,英文主页:http://nginx.net。俄罗斯的一些大网站 已经使用它超过两年多了,一直表现不凡。Nginx的编译参数如下:
1. [root@localhost]#./configure –prefix=/usr/local/server/nginx –with-openssl=/usr/include \
–with-pcre=/usr/include/pcre/ –with-http_stub_status_module –without-http_memcached_module \
–without-http_fastcgi_module –without-http_rewrite_module –without-http_map_module \
–without-http_geo_module –without-http_autoindex_module
2. 在这里,需要说明一下,由于Nginx的配置文件中用到正则,所以需要 pcre 模块的支持。需要事先安装 pcre 及 pcre-devel 的rpm包,但是 Ngxin 并不能正确找到 .h/.so/.a/.la 文件,因此稍微变通了一下:
[root@localhost]#mkdir /usr/include/pcre/.libs/
[root@localhost]#cp /usr/lib/libpcre.a /usr/include/pcre/.libs/libpcre.a
[root@localhost]#cp /usr/lib/libpcre.a /usr/include/pcre/.libs/libpcre.la
3. 然后,修改 objs/Makefile 大概在908行的位置上,注释掉以下内容:
./configure –disable-shared
4. 接下来,就可以正常执行 make 及 make install 了。
ii. 修改NginX配置文件 /usr/local/server/nginx/conf/nginx.conf
以下的 nginx.conf 内容,仅供参考:
1. #运行用户
2. user nobody nobody;
3.
4. #启动进程
5. worker_processes 2;
6.
7. #全局错误日志及PID文件
8. error_log logs/error.log notice;
9. pid logs/nginx.pid;
10.
11. #工作模式及连接数上限
12. events {
13. use epoll;
14. worker_connections 1024;
15. }
16.
17. #设定http服务器,利用它的反向代理功能提供负载均衡支持
18. http {
19. #设定mime类型
20. include conf/mime.types;
21. default_type application/octet-stream;
22.
23. #设定日志格式
24. log_format main ’$remote_addr - $remote_user [$time_local] ’
25. ’”$request” $status $bytes_sent ’
26. ’”$http_referer” ”$http_user_agent” ’
27. ’”$gzip_ratio”‘;
28.
29. log_format download ’$remote_addr - $remote_user [$time_local] ’
30. ’”$request” $status $bytes_sent ’
31. ’”$http_referer” ”$http_user_agent” ’
32. ’”$http_range” ”$sent_http_content_range”‘;
33.
34. #设定请求缓冲
35. client_header_buffer_size 1k;
36. large_client_header_buffers 4 4k;
37.
38. #开启gzip模块
39. gzip on;
40. gzip_min_length 1100;
41. gzip_buffers 4 8k;
42. gzip_types text/plain;
43.
44. output_buffers 1 32k;
45. postpone_output 1460;
46.
47. #设定access log
48. access_log logs/access.log main;
49.
50. client_header_timeout 3m;
51. client_body_timeout 3m;
52. send_timeout 3m;
53.
54. sendfile on;
55. tcp_nopush on;
56. tcp_nodelay on;
57.
58. keepalive_timeout 65;
59.
60. #设定负载均衡的服务器列表
61. upstream mysvr {
62. #weigth参数表示权值,权值越高被分配到的几率越大
63. #本机上的Squid开启3128端口
64. server 192.168.8.1:3128 weight=5;
65. server 192.168.8.2:80 weight=1;
66. server 192.168.8.3:80 weight=6;
67. }
68.
69. #设定虚拟主机
70. server {
71. listen 80;
72. server_name 192.168.8.1 www.yejr.com;
73.
74. charset gb2312;
75.
76. #设定本虚拟主机的访问日志
77. access_log logs/www.yejr.com.access.log main;
78.
79. #如果访问 /img/*, /js/*, /css/* 资源,则直接取本地文件,不通过squid
80. #如果这些文件较多,不推荐这种方式,因为通过squid的缓存效果更好
81. location ~ ^/(img|js|css)/ {
82. root /data3/Html;
83. expires 24h;
84. }
85.
86. #对 ”/” 启用负载均衡
87. location / {
88. proxy_pass http://mysvr;
89.
90. proxy_redirect off;
91. proxy_set_header Host $host;
92. proxy_set_header X-Real-IP $remote_addr;
93. proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
94. client_max_body_size 10m;
95. client_body_buffer_size 128k;
96. proxy_connect_timeout 90;
97. proxy_send_timeout 90;
98. proxy_read_timeout 90;
99. proxy_buffer_size 4k;
100. proxy_buffers 4 32k;
101. proxy_busy_buffers_size 64k;
102. proxy_temp_file_write_size 64k;
103. }
104.
105. #设定查看Nginx状态的地址
106. location /NginxStatus {
107. stub_status on;
108. access_log on;
109. auth_basic ”NginxStatus”;
110. auth_basic_user_file conf/htpasswd;
111. }
112. }
113. }
iii. 运行以下命令检测配置文件是否无误:
/usr/local/server/nginx/sbin/nginx –t
1. 执行以下命令开始运行Nginx:
usr/local/server/nginx/sbin/nginx
2. 备注:conf/htpasswd 文件的内容用 apache 提供的 htpasswd 工具来产生即可,内容大致如下:
#帐号 yejr,密码 123456
yejr:qLYyJ0ZRLAId2
3. 查看 Nginx 运行状态
输入地址 http://192.168.8.1/NginxStatus/,输入验证帐号密码,即可看到类似如下内容:
Active connections: 328
server accepts handled requests
9309 8982 28890
Reading: 1 Writing: 3 Waiting: 324
第一行表示目前活跃的连接数
第三行的第三个数字表示Nginx运行到当前时间接受到的总请求数,如果快达到了上限,就需要加大上限值了。
第四行看不懂
iv. 安装MySQL,步骤如下:
1. [root@localhost]#tar zxf mysql-standard-5.0.27-linux-i686.tar.gz -C /usr/local/server
2. [root@localhost]#mv /usr/local/server/mysql-standard-5.0.27-linux-i686 /usr/local/server/mysql
3. [root@localhost]#cd /usr/local/server/mysql
4. [root@localhost]#./scripts/mysql_install_db –basedir=/usr/local/server/mysql \
5. –datadir=/usr/local/server/mysql/data –user=nobody
6. [root@localhost]#cp /usr/local/server/mysql/support-files/my-large.cnf \
7. /usr/local/server/mysql/data/my.cnf
v. 修改 MySQL 配置,增加部分优化参数
1. [root@localhost]#vi /usr/local/server/mysql/data/my.cnf
2. [mysqld]
3. basedir = /usr/local/server/mysql
4. datadir = /usr/local/server/mysql/data
5. user = nobody
6. port = 3306
7. socket = /tmp/mysql.sock
8.
9. wait_timeout = 30
10.
11. long_query_time=1
12. #log-queries-not-using-indexes = TRUE
13. log-slow-queries=/usr/local/server/mysql/slow.log
14. log-error = /usr/local/server/mysql/error.log
15. external-locking = FALSE
16.
17. key_buffer_size = 512M
18. back_log = 400
19. table_cache = 512
20. sort_buffer_size = 2M
21. join_buffer_size = 4M
22. read_buffer_size = 2M
23. read_rnd_buffer_size = 4M
24. myisam_sort_buffer_size = 64M
25. thread_cache_size = 32
26. query_cache_limit = 2M
27. query_cache_size = 64M
28.
29. thread_concurrency = 4
30. thread_stack = 128K
31. tmp_table_size = 64M
32. binlog_cache_size = 2M
33. max_binlog_size = 128M
34. max_binlog_cache_size = 512M
35. max_relay_log_size = 128M
36. bulk_insert_buffer_size = 8M
37. myisam_repair_threads = 1
38.
39. skip-bdb
40.
41. #如果不需要使用innodb就关闭该选项
42. #skip-innodb
43.
44. innodb_data_home_dir = /usr/local/server/mysql/data/
45. innodb_data_file_path = ibdata1:256M;ibdata2:256M:autoextend
46. innodb_log_group_home_dir = /usr/local/server/mysql/data/
47. innodb_log_arch_dir = /usr/local/server/mysql/data/
48. innodb_buffer_pool_size = 512M
49. innodb_additional_mem_pool_size = 8M
50. innodb_log_file_size = 128M
51. innodb_log_buffer_size = 8M
52. innodb_lock_wait_timeout = 50
53. innodb_flush_log_at_trx_commit = 2
54. innodb_file_io_threads = 4
55. innodb_thread_concurrency = 16
56. innodb_log_files_in_group = 3
vi. 启动 MySQL 服务器
/usr/local/server/mysql/bin/mysqld_safe \
–defaults-file=/usr/local/server/mysql/data/my.cnf &
vii. 由于 MySQL 不是安装在标准目录下,因此必须要修改 mysqld_safe 中的 my_print_defaults 文件所在位置,才能通过 mysqld_safe 来启动 MySQL 服务器。
viii. memcache + libevent 安装
1. [root@localhost]#cd libevent-1.2a
2. [root@localhost]#./configure –prefix=/usr/ && make && make install
3. [root@localhost]#cd ../memcached-1.2.0
4. [root@localhost]#./configure –prefix=/usr/local/server/memcached –with-libevent=/usr/
5. [root@localhost]#make && make install
6. 备注:如果 libevent 不是安装在 /usr 目录下,那么需要把 libevent-1.2a.so.1 拷贝/链接到 /usr/lib 中,否则 memcached 无法正常加载。
ix. 运行以下命令来启动 memcached:
1. [root@localhost]#/usr/local/server/memcached/bin/memcached \
-l 192.168.8.1 -d -p 10000 -u nobody -m 128
2. 表示用 daemon 的方式启动 memcached,监听在 192.168.8.1 的 10000 端口上,运行用户为 nobody,为其分配 128MB 的内存。
x. 安装Apache、PHP、eAccelerator、php-memcache,由于Apache 2下的php静态方式编译十分麻烦,因此在这里采用动态模块(DSO)方式。
xi. 安装Apache 2.2.3
1. [root@localhost]#./configure –prefix=/usr/local/server/apache –disable-userdir –disable-actions \
2. –disable-negotiation –disable-autoindex –disable-filter –disable-include –disable-status \
3. –disable-asis –disable-auth –disable-authn-default –disable-authn-file –disable-authz-groupfile \
4. –disable-authz-host –disable-authz-default –disable-authz-user –disable-userdir \
5. –enable-expires –enable-module=so
6. 备注:在这里,取消了一些不必要的模块,如果你需要用到这些模块,那么请去掉部分参数。
xii. 安装PHP 5.2.0
1. [root@localhost]#./configure –prefix=/usr/local/server/php –with-mysql \
2. –with-apxs2=/usr/local/server/apache/bin/apxs –with-freetype-dir=/usr/ –with-png-dir=/usr/ \
3. –with-gd=/usr/ –with-jpeg-dir=/usr/ –with-zlib –enable-magic-quotes –with-iconv \
4. –without-sqlite –without-pdo-sqlite –with-pdo-mysql –disable-dom –disable-simplexml \
5. –enable-roxen-zts
6. [root@localhost]#make && make install
7. 备注:如果不需要gd或者pdo等模块,请自行去掉。
xiii. 安装eAccelerator-0.9.5
1. [root@localhost]#cd eAccelerator-0.9.5
2. [root@localhost]#export PHP_PREFIX=/usr/local/server/php
3. [root@localhost]#$PHP_PREFIX/bin/phpize
4. [root@localhost]#./configure –enable-eaccelerator=shared –with-php-config=$PHP_PREFIX/bin/php-config
5. [root@localhost]#make && make install
xiv. 4.) 安装memcache模块
1. [root@localhost]#cd memcache-2.1.0
2. [root@localhost]#export PHP_PREFIX=/usr/local/server/php
3. [root@localhost]#$PHP_PREFIX/bin/phpize
4. [root@localhost]#./configure –enable-eaccelerator=shared –with-php-config=$PHP_PREFIX/bin/php-config
5. [root@localhost]#make && make install
xv. 5.) 修改 php.ini 配置,然后修改 php.ini,修改/加入类似以下内容:
1. extension_dir = ”/usr/local/server/php/lib/”
2.
3. extension=”eaccelerator.so”
4. eaccelerator.shm_size=”32″ ;设定eaccelerator的共享内存为32MB
5. eaccelerator.cache_dir=”/usr/local/server/eaccelerator”
6. eaccelerator.enable=”1″
7. eaccelerator.optimizer=”1″
8. eaccelerator.check_mtime=”1″
9. eaccelerator.debug=”0″
10. eaccelerator.filter=”*.php”
11. eaccelerator.shm_max=”0″
12. eaccelerator.shm_ttl=”0″
13. eaccelerator.shm_prune_period=”3600″
14. eaccelerator.shm_only=”0″
15. eaccelerator.compress=”1″
16. eaccelerator.compress_level=”9″
17. eaccelerator.log_file = ”/usr/local/server/apache/logs/eaccelerator_log”
18. eaccelerator.allowed_admin_path = ”/usr/local/server/apache/htdocs/ea_admin”
19.
20. extension=”memcache.so”
21. 在这里,最好是在apache的配置中增加默认文件类型的cache机制,即利用apache的expires模块,新增类似如下几行:
22. ExpiresActive On
23. ExpiresByType text/html ”access plus 10 minutes”
24. ExpiresByType text/css ”access plus 1 day”
25. ExpiresByType image/jpg ”access 1 month”
26. ExpiresByType image/gif ”access 1 month”
27. ExpiresByType image/jpg ”access 1 month”
28. ExpiresByType application/x-shockwave-flash ”access plus 3 day”
29. 这么设置是由于我的这些静态文件通常很少更新,因此我选择的是”access”规则,如果更新相对比较频繁,可以改用 “modification”规则;或者也可以用”access”规则,但是在文件更新的时候,执行一下”touch”命令,把文件的时间刷新一下即可。
xvi. 安装Squid
1. [root@localhost]#./configure –prefix=/usr/local/server/squid –enable-async-io=100 –disable-delay-pools \
2. –disable-mem-gen-trace –disable-useragent-log –enable-kill-parent-hack –disable-arp-acl \
3. –enable-epoll –disable-ident-lookups –enable-snmp –enable-large-cache-files –with-large-files
4. [root@localhost]#make && make install
5. 如果是2.6的内核,才能支持epoll的IO模式,旧版本的内核则只能选择poll或其他模式了;另外,记得带上支持大文件的选项,否则在access log等文件达到2G的时候就会报错。
xvii. 设定 squid 的配置大概如下内容:
1. #设定缓存目录为 /var/cache1 和 /var/lib/squid,每次处理缓存大小为128MB,当缓存空间使用达到95%时
2. #新的内容将取代旧的而不直接添加到目录中,直到空间又下降到90%才停止这一活动
3. #/var/cache1 最大1024MB,/var/lib/squid 最大 5000MB,都是 16*256 级子目录
4. cache_dir aufs /var/cache1 1024 16 256
5. cache_dir aufs /var/lib/squid 5000 16 256
6. cache_mem 128 MB
7. cache_swap_low 90
8. cache_swap_high 95
9.
10. #设置存储策略等
11. maximum_object_size 4096 KB
12. minimum_object_size 0 KB
13. maximum_object_size_in_memory 80 KB
14. ipcache_size 1024
15. ipcache_low 90
16. ipcache_high 95
17.
18. cache_replacement_policy lru
19. memory_replacement_policy lru
20.
21. #设置超时策略
22. forward_timeout 20 seconds
23. connect_timeout 15 seconds
24. read_timeout 3 minutes
25. request_timeout 1 minutes
26. persistent_request_timeout 15 seconds
27. client_lifetime 15 minutes
28. shutdown_lifetime 5 seconds
29. negative_ttl 10 seconds
30.
31. #限制一个ip最大只能有16个连接
32. acl OverConnLimit maxconn 16
33. http_access deny OverConnLimit
34.
35. #限制baidu spider访问
36. #acl AntiBaidu req_header User-Agent Baiduspider
37. #http_access deny AntiBaidu
38.
39. #常规设置
40. visible_hostname cache.yejr.com
41. cache_mgr webmaster@yejr.com
42. client_persistent_connections off
43. server_persistent_connections on
44.
45. cache_effective_user nobody
46. cache_effective_group nobody
47. tcp_recv_bufsize 65535 bytes
48.
49. half_closed_clients off
50.
51. #设定不缓存的规则
52. hierarchy_stoplist cgi-bin
53. acl QUERY urlpath_regex cgi-bin
54. cache deny QUERY
55.
56. #不要相信ETag 因为有gzip
57. acl apache rep_header Server ^Apache
58. broken_vary_encoding allow apache
59.
60. #设置access log,并且令其格式和apache的格式一样,方便awstats分析
61. emulate_httpd_log on
62. logformat apache %>a %ui %un [%tl] ”%rm %ru HTTP/%rv” %Hs %h” ”%{User-Agent}>h”
63. access_log /usr/local/server/squid/var/logs/access.log apache
64. cache_store_log none
65.
66. #设置默认刷新规则
67. refresh_pattern -i ^ftp: 1440 20% 10080
68. refresh_pattern -i ^gopher: 1440 0% 1440
69. refresh_pattern . 0 20% 4320
70.
71. #设定访问规则
72. acl all src 0.0.0.0/0.0.0.0
73. acl manager proto cache_object
74. acl localhost src 127.0.0.1/255.255.255.255 192.168.8.0/255.255.255.0
75. acl to_localhost dst 127.0.0.0/8
76. acl SSL_ports port 443
77. acl Safe_ports port 80 # http
78. acl Safe_ports port 443 # https
79. acl CONNECT method CONNECT
80.
81. http_access allow manager localhost
82. http_access deny manager
83. http_access deny !Safe_ports
84. http_access deny CONNECT !SSL_ports
85. icp_access allow all
86. http_reply_access allow all
87. http_access allow Safe_ports all
88. http_access deny all
89.
90. coredump_dir /usr/local/server/squid/var/cache
91.
92. #设定icp规则,icp用于实现squid的cache共享
93. icp_port 3030
94. udp_incoming_address 192.168.8.83
95. log_icp_queries on
96.
97. #设定反向代理
98. http_port 192.168.8.84:80 vhost vport
99. cache_peer 192.168.8.84 parent 8080 0 no-query originserver name=web84
100. cache_peer_domain web84 www.yejr.com
101. cache_peer_domain web84 192.168.8.84
102.
103. #设定squid sibling(同级协作squid)
104. cache_peer 192.168.8.83 sibling 80 3030 proxy-only
105.
106. #设定snmp端口
107. snmp_port 3401
xviii. 初始化和启动squid
1. [root@localhost]#/usr/local/server/squid/sbin/squid -z
2. [root@localhost]#/usr/local/server/squid/sbin/squid
3. 第一条命令是先初始化squid缓存哈希子目录,只需执行一次即可。
xix. 启用squid所需的改变:想要更好的利用squid的cache功能,不是把它启用了就可以的,我们需要做以下几个调整:
1. 启用apache的 mod_expires 模块,修改 httpd.conf,加入以下内容:
a) #expiresdefault ”modification plus 2 weeks”
b) expiresactive on
c) expiresbytype text/html ”access plus 10 minutes”
d) expiresbytype image/gif ”modification plus 1 month”
e) expiresbytype image/jpeg ”modification plus 1 month”
f) expiresbytype image/png ”modification plus 1 month”
g) expiresbytype text/css ”access plus 1 day”
h) expiresbytype application/x-shockwave-flash ”access plus 3 day”
2. 以上配置的作用是规定各种类型文件的cache规则,对那些图片/flash等静态文件总是cache起来,可根据各自的需要做适当调整。
3. 修改 php.ini 配置,如下:
a) session.cache_limiter = nocache
b) 以上配置的作用是默认取消php中的cache功能,避免不正常的cache产生。
4. 修改应用程序
a) 例如,有一个php程序页面
b) static.php,它存放着某些查询数据库后的结果,并且数据更新并不频繁,于是,我们就可以考虑对其cache。只需在static.php中加入类似如下代码:
c)
d) header(‘Cache-Control: max-age=86400 ,must-revalidate’);
e) header(‘Pragma:’);
f) header(‘Last-Modified: ’ . gmdate(‘D, d M Y H:i:s’) . ’ GMT’ ;
g) header(“Expires: ” .gmdate (‘D, d M Y H:i:s’, time() + ’86400′ . ’ GMT’);
h)
i) 以上代码的意思是,输出一个http头部信息,让squid知道本页面默认缓存时长为一天。
xx. squidclient简要介绍
1. *取得squid运行状态信息: squidclient -p 80 mgr:info
2. *取得squid内存使用情况: squidclient -p 80 mgr:mem
3. *取得squid已经缓存的列表: squidclient -p 80 mgrbjects. use it carefully, it may crash
4. *取得squid的磁盘使用情况: squidclient -p 80 mgr:diskd
5. *强制更新某个url: squidclient -p 80 -m PURGE http://www.yejr.com/static.php
6. *更多的请查看:squidclient -h 或者 squidclient -p 80 mgr:
Linux文件查找命令find,xargs详述
大约2年前 - 6个评论
目录
版权声明
前言:关于find命令
一、find 命令格式
1、find命令的一般形式为;
2、find命令的参数;
3、find命令选项;
4、使用exec或ok来执行shell命令;
二、find命令的例子;
1、查找当前用户主目录下的所有文件;
2、为了在当前目录中文件属主具有读、写权限,并且文件所属组的用户和其他用户具有读权限的文件;
3、为了查找系统中所有文件长度为0的普通文件,并列出它们的完整路径;
4、查找/var/logs目录中更改时间在7日以前的普通文件,并在删除之前询问它们;
5、为了查找系统中所有属于root组的文件;
6、find命令将删除当目录中访问时间在7日以来、含有数字后缀的admin.log文件
7、为了查找当前文件系统中的所有目录并排序;
8、为了查找系统中所有的rmt磁带设备;
三、xargs
四、find 命令的参数;
1、使用name选项
2、用perm选项
3、忽略某个目录
4、使用find查找文件的时候怎么避开某个文件目录
5、使用user和nouser选项
6、使用group和nogroup选项
7、按照更改时间或访问时间等查找文件
8、查找比某个文件新或旧的文件
9、使用type选项
10、使用size选项
11、使用depth选项
12、使用mount选项
五、关于本文
六、相关文档
+++++++++++++++++++++++++++++++++++++++++++++++++
正文
+++++++++++++++++++++++++++++++++++++++++++++++++
版权声明
本文是zhyfly兄贴在LinuxSir.Org 的一个帖子而整理出来的,如果您对版权有疑问,请在本帖后面跟帖。谢谢;本文的HTML版本由北南南北整理;修改了整篇文档的全角及说明文字中的单词中每个字母空格的问题;为标题加了编号,方便大家阅读;
前言:关于find命令
由于find具有强大的功能,所以它的选项也很多,其中大部分选项都值得我们花时间来了解一下。即使系统中含有网络文件系统( NFS),find命令在该文件系统中同样有效,只你具有相应的权限。
在运行一个非常消耗资源的find命令时,很多人都倾向于把它放在后台执行,因为遍历一个大的文件系统可能会花费很长的时间(这里是指30G字节以上的文件系统)。
一、find 命令格式
1、find命令的一般形式为;
find pathname -options [-print -exec -ok ...]
2、find命令的参数;
pathname: find命令所查找的目录路径。例如用.来表示当前目录,用/来表示系统根目录。
-print: find命令将匹配的文件输出到标准输出。
-exec: find命令对匹配的文件执行该参数所给出的shell命令。相应命令的形式为’command’ { } \;,注意{ }和\;之间的空格。
-ok: 和-exec的作用相同,只不过以一种更为安全的模式来执行该参数所给出的shell命令,在执行每一个命令之前,都会给出提示,让用户来确定是否执行。
3、find命令选项
-name
按照文件名查找文件。
-perm
按照文件权限来查找文件。
-prune
使用这一选项可以使find命令不在当前指定的目录中查找,如果同时使用-depth选项,那么-prune将被find命令忽略。
-user
按照文件属主来查找文件。
-group
按照文件所属的组来查找文件。
-mtime -n +n
按照文件的更改时间来查找文件, – n表示文件更改时间距现在n天以内,+ n表示文件更改时间距现在n天以前。find命令还有-atime和-ctime 选项,但它们都和-m time选项。
-nogroup
查找无有效所属组的文件,即该文件所属的组在/etc/groups中不存在。
-nouser
查找无有效属主的文件,即该文件的属主在/etc/passwd中不存在。
-newer file1 ! file2
查找更改时间比文件file1新但比文件file2旧的文件。
-type
查找某一类型的文件,诸如:
b – 块设备文件。
d – 目录。
c – 字符设备文件。
p – 管道文件。
l – 符号链接文件。
f – 普通文件。
-size n:[c] 查找文件长度为n块的文件,带有c时表示文件长度以字节计。
-depth:在查找文件时,首先查找当前目录中的文件,然后再在其子目录中查找。
-fstype:查找位于某一类型文件系统中的文件,这些文件系统类型通常可以在配置文件/etc/fstab中找到,该配置文件中包含了本系统中有关文件系统的信息。
-mount:在查找文件时不跨越文件系统mount点。
-follow:如果find命令遇到符号链接文件,就跟踪至链接所指向的文件。
-cpio:对匹配的文件使用cpio命令,将这些文件备份到磁带设备中。
另外,下面三个的区别:
-amin n
查找系统中最后N分钟访问的文件
-atime n
查找系统中最后n*24小时访问的文件
-cmin n
查找系统中最后N分钟被改变文件状态的文件
-ctime n
查找系统中最后n*24小时被改变文件状态的文件
-mmin n
查找系统中最后N分钟被改变文件数据的文件
-mtime n
查找系统中最后n*24小时被改变文件数据的文件
4、使用exec或ok来执行shell命令
使用find时,只要把想要的操作写在一个文件里,就可以用exec来配合find查找,很方便的
在有些操作系统中只允许-exec选项执行诸如l s或ls -l这样的命令。大多数用户使用这一选项是为了查找旧文件并删除它们。建议在真正执行rm命令删除文件之前,最好先用ls命令看一下,确认它们是所要删除的文件。
exec选项后面跟随着所要执行的命令或脚本,然后是一对儿{ },一个空格和一个\,最后是一个分号。为了使用exec选项,必须要同时使用print选项。如果验证一下find命令,会发现该命令只输出从当前路径起的相对路径及文件名。
例如:为了用ls -l命令列出所匹配到的文件,可以把ls 更多 >
mysql中用命令修改表结构的方法-alter
大约2年前 - 70个评论
ALTER [IGNORE] TABLE tbl_name alter_spec [, alter_spec ...]
alter_specification:
ADD [COLUMN] create_definition [FIRST | AFTER column_name ]
or ADD INDEX [index_name] (index_col_name,…)
or ADD PRIMARY KEY (index_col_name,…)
or ADD UNIQUE [index_name] (index_col_name,…)
or ALTER [COLUMN] col_name {SET DEFAULT literal | DROP DEFAULT}
or CHANGE [COLUMN] old_col_name create_definition
or MODIFY [COLUMN] create_definition
or DROP [COLUMN] col_name
or 更多 >
linux服务器历险之使用memcached
大约2年前 - 3,003个评论
一,为什么要使用memcached
最优秀的cache软件,有效减轻数据库服务器的压力
不用它还要用哪个?
二,下载
从何处下载?
http://www.danga.com/memcached/
libevent从何处下载?
http://rpmforge.net/user/packages/libevent/
客户端php的memcache模块(python,java等需要哪个可以自行下载)下载,这里为PHP客户端为实例:
http://pecl.php.net/package/memcache/download/
三,如何进行安装libevent?
首先就是先下下载rpm包:
wget http://apt.sw.be/redhat/el4/en/i386/RPMS.dag/libevent-1.1a-1.2.el4.rf.i386.rpm
wget http://apt.sw.be/redhat/el4/en/i386/RPMS.dag/libevent-devel-1.1a-1.2.el4.rf.i386.rpm
rpm -ivh libevent-1.1a-1.2.el4.rf.i386.rpm
rpm -ivh libevent-devel-1.1a-1.2.el4.rf.i386.rpm
四,检查libevent安装是否成功?
[root@datam libevent-1.3e]# ls -al /usr/lib | grep libevent
lrwxrwxrwx 1 root root 22 Oct 6 00:20 libevent-1.1a.so.1 -> libevent-1.1a.so.1.0.2
-rwxr-xr-x 1 root root 31596 Jan 7 2007 libevent-1.1a.so.1.0.2
lrwxrwxrwx 1 root root 更多 >
Linux操作系统中七件超厉害的武器
大约2年前 - 1个评论
Linux是一套免费使用和自由传播的类UNIX操作系统,主要用于基于Intel x86系列CPU的计算机上。Linux系统是由全世界各地的成千上万的程序员设计和实现的,其目的是建立不受任何商品化软件的版权所制约的、全世界都能自由使用的UNIX兼容产品。也许有些准备和正在使用Linux的朋友对为什么使用Linux并不十分了解。本文试就这一问题给出答案,让人们真正了解Linux带给我们的七件武器。Linux对比于商业软件,对学习者来说有一个境界上的差异,这个差异用一句话概述就是:以无法为有法,以无限为有限。这个境界上的差异也就是Linux七种武器的精华所在。
一、拳头——编程能力
Linux产生于一群真正的黑客。尽管人们习惯于认为Linus是Linux的缔造者,在linux包含的数以千计的文件中,也有一个名为Credits的文件记录了主要的Linux Hacker们的姓名和电子邮件地址(这个列表中包含了100多个名字,世界各地的都有),但没有人说得清究竟有多少人参与了Linux的改进。这一游戏到今天并没有随着时间的推移而停止,相反却因为Linux的日益流行而爱好者甚众。因此开始使用Linux就犹如加入了一个高手如云的编程组织。你可以通过互联网随时了解来自地球的某一个角落的该领域的最新进展;如果你的英文足够好,加入一个讨论组,你就可以得到不知来自什么地方的神密高手的点拨。由于GPL的存在,你还可以得到开放的源代码,从而不用发愁学习资料的来源。
随着更多专业公司的介入,Linux可以提供的开发工具的功能也越发强大。如TurboLinux就具有强大的应用程序开发环境,提供了各种开发应用程序的工具,具有对多种语言如:C、C++、Java、Perl、Tcl/tk、Python和Fortran 77的编译器/解释器,以及集成开发环境、调试和其他开发工具。再如Janus Software公司开发的被称为Linux版VB的Phoenix Object Basic,它是一套独特的面向对象的Linux RAD(Rapid Application Development,快速应用软件开发工具)。
它综合了Python和Perl等面向对象编程语言的强大功能,同时,提供了类似Visual Basic的易用性。熟悉Windows环境下Visual Basic的编程者都可以顺利地使用Phoenix Object Basic。LynuxWorks公司的VisualLynux可以和微软的Visual C++相媲美,它集成了微软Visual C++开发工具以支持Linux操作系统的产品,它不但兼容LynuxWorks公司的BlueCat Linux,而且还兼容其他的Linux 2.2.12版本。LynuxWorks公司甚至声称从此Visual C++就具备了开发嵌入式Linux应用程序的能力。嵌入式Linux系统现在相当热门,已经广泛地应用在各式各样的通信基础产品。我想可能有些Visual C++的使用者看到这里已经动了心,想要尝试一把了。
强大的开发工具+开放源代码+高手点拨,结果是什么呢?想来编程狂热分子已经心知肚明。因此强烈建议对编程有狂爱、总喜欢用程序解决问题的人使用Linux,去拥有Linux提供的第一件武器——编程能力。
二、多情环——组网能力
Linux的组网能力非常强大,它的TCP/IP代码是最高级的。Linux提供了对于当前的TCP/IP协议的完全支持,并且包括了对下一代Internet.协议Ipv6的支持。Linux内核还包括了IP防火墙代码、IP防伪、IP服务质量控制及许多安全特性。这些特性可以和像Cisco这样的公司提供的高端路由设备的特性相媲美。此外,利用Redhat Linux提供的Samba组(并不是RedHat Linux独有),Linux可以作为Windows客户机的打印和文件服务器,还可以用做NT的文件和打印服务器。
运用Linux包含的AppleTalk模块,Linux甚至可以作为一个Macintosh客户机的文件和打印服务器。让Apache这个世界上应用范围最广的Web服务器软件系统跑在linux上,你就可以运行自己的Intranet或者Internet web服务器。Linux还包含了一个Ftp服务程序、一个电子邮件传输代理程序以及,POP和IMAP邮件服务程序。如果你愿意,你还可以在Internet上免费获得一个Linux的LDAP服务程序。面对如此强大的网络功能,我们强烈建议对构造网络有兴趣的人掌握Linux的第二件武器—组网能力。
三、长生剑—创新能力
“如果你总是使用微软的开发工具,你一生只能做个操作人员。”这话一点都不假。Linux是自由软件,而自由软件和非自由软的区别在于:
1.自由软件是开放的,成千上万的人可以检查这个软件,快速地找到并修改其错误码。
2.最终用户可以按照自己的意愿自定义自由软件,有特殊需要的用户也可以完全按照他们认为合适的方式定制自己的Linux。
3.自由软件为了防止重复发明,通过共享源代码和思想来节省很多工作量。
以上这些特性是不是对有想法的好事者有莫大的吸引力?不仅如此,Linux由于自身的优点,应用领域也越来越广泛。如最近嵌入式Linux的应用相当热门,已广泛应用于包括笔记本电脑、连网装置、网络电视等在内的各式各样的通信基础产品,而嵌入式操作系统正日益成为一种势不可挡的流行趋势,最终电脑、通讯、家电会因为它的存在而成为一体。这些也为有想法的好事者提供了更广阔的发挥空间。在梦想就是力量的今天,没有了创新能力是不可想象的。因此强烈建议那些具有较强的钻研精神,喜欢刨根问底的好事者学习使用Linux,利用Linux提供的第三件武器—创新能力。
四、碧玉刀——UNIX能力
人们所以选择Linux的又一个重要原因是在于它的UNIX兼容性。由于Linux是一套自由软件,用户可以无偿地得到它及其源代码,无偿地获得大量的应用程序,还可以任意地修改和补充它们。这对用户学习、了解UNIX操作系统的内核非常有益。可以说Linux为广大用户提供了一个在家里学习和使用UNIX操作系统的廉价的机会。
现在有了许多CD-ROM供应商和软件公司对Linux操作系统的支持,Linux成为UNIX系统在个人计算机上的一个代用品。在用户级,Linux与UNIX非常相似,可以说了解UNIX,就了解了Linux的大部分内容;在编程级,大多数应用程序只需要很少的工作就可以在Linux和UNIX间转换。而且Linux也有意设计为与UNIX兼容,从而便于利用UNIX软件的主体。Linux能够很好地与其他UNIX机器相互操作,它使用了像RPC(远程过程调用)和NFS(网络文件系统)这样的标准UNIX服务。Linux还继承了UNIX的灵活性和可定制性,使其适合于广泛的应用程序,包括适应于传统的服务器和桌面应用程序,以及像嵌入式系统这样的不常见的应用程序。
因此,如果一个用户在公司上班的时候在UNIX系统上编程,或者在工作中是一位UNIX的系统管理员,他就可以在家里安装一套UNIX的兼容系统,即Linux系统。在家中使用Linux就能够完成一些工作任务。而急于通过Linux的学习掌握UNIX的目的想必不用多说了,在这个网络人才因稀缺而身价倍增的年代,想靠技术吃饭又不想掌握服务器端技术的人才是真正的傻瓜。
五、离别钩——怀旧能力
在这个IT技术日新月异的年代,怀旧应该不是一个好习惯,尽管怀旧可以有一种很不错的情调。但慢慢地我们发现我们不得不怀旧了,因为我们去年刚买的电脑现在已经老掉牙了。尽管每个IT厂商都嚷着他们的产品可以有效地降低我们的TCO(总拥有成本),可我们手里设备的折旧速度还是在不断加快。如果你肯听我的,我会说这世上从来就没有救世主,还是试试我推荐的Linux吧。
Linux非常小,可以有效地利用硬件。Linux的最小安装仅需要4MB内存,而你也可以在你的486机器上安装Linux并将其用做防火墙或Web服务器。我读到的Linux名著中甚至记载了有人用二手386建立了路由器和防火墙。Linux内核允许在运行时装载和卸载硬件的驱动程序。这样因为不必装载全部的驱动程序,就可以最大化地使用内存。总之Linux可以使老机器获得新生,节省我们的财力。因此强烈建议那些跑Windows像蜗牛一样慢的电脑的机主们学习Linux。
六、霸王枪——稳定能力
运行Linux的机器启动一次可以运行数月。Linux提供了完全的内存保护,每个进程都运行在自己的虚拟地址空间中,并且不会损坏其他进程或内核使用的地址空间。任务与内核间也是相互隔离,即行为不良或编写不良的程序只能毁坏自己。因此被破坏的进程几乎不可能使系统崩溃。Linux在和Windows98和NT在安全性的较量中占有上风,和Windows2000的情况又怎么样呢?资深的系统安全分析家指出:Windows 2000在网络系统,服务器连接方面的工作准备不足,Linux仍然是目前最安全的操作系统。
资深的系统安全分析家还预计到今年年底Windows 2000才能完成测试、除虫工作,目前比较安全的操作系统仍然是商业版本的UNIX和Linux。资深的系统安全分析家肯定地认为:在未来的5年里,Linux将成为最安全的操作系统。到2005年,管理和使用Linux将是一件十分容易的事情。
现在可以说Linux是一个非常坚固的系统了,因此强烈建议对于Windows的蓝屏死机极为厌恶的人学习Linux,使用Linux提供的第六件武器——稳定能力。
七、孔雀翎——支付能力
Linux提供的第七件武器和金钱有关,这是一个不容回避的问题。因为价格原因,每个人都可以拥有正版的Linux。此外Linux还是一个完全开放的系统。它支持各种像POSIX标准这样的开放标准和TCP/IP的Internet工程任务组标准。由于避免了专有的API(应用程序接口)和协议,可以减少对单一供应商的依赖。这样就不会出现像使用专用系统的情况:一旦犯了错误,只能继续使用原来的系统供用商的产品。也就是不会出现先享受低价,而在后期需要付出高额服务费的情况。因此强烈建议不想花太多的钱,又想使用正版软件的人学习和使用Linux
linux 批量添加用户
大约2年前 - 9个评论
一、为什么需要大批量添加用户;
我们什么时候才需要大批量添加用户呢?有时我们需要让几十个或更多的用户在主机上完成相同或相似的任务,比如我们想同时添加一堆的ftp 用户,这些ftp用户归属同一组,但不允许他们通过终端或远程登录服务器;有时我们可能为了教学,比如我们有50个学生,并且每个学生在服务器上有一个独立的用户名,能登录系统,并能管理自己的帐号或完成一些在自己权限下的作业;
二、批量用户添加流程;
批量添中用户流程是通过newusers 导入一个严格按照/etc/passwd 的书写格式来书写内容的文件来完成添加用户,然后通过chpasswd 导入用户密码文件来完成批量更新用户密码的过程;
1、newusers 成批添加用户的工具;
其用法很简单,newusers 后面直接跟一个文件;文件格式和/etc/passwd 的格式相同;
用户名1:x:UID:GID:用户说明:用户的家目录:所用SHELL
举例:
win00:x:520:520::/home/win00:/sbin/nologin
win01:x:521:521::/home/win01:/sbin/nologin
……
值得一提的是关于SHELL类型,查看主机上所有SHELL ,可以通过chsh 来查看;
[root@localhost beinan]# chsh –list
/bin/sh
/bin/bash
/sbin/nologin
/bin/ksh
/bin/tcsh
/bin/csh
/bin/zsh
其中除了/sbin/nologin ,其它类型的SHELL 都能登录系统;nologin 大多是虚拟用户用的SHELL ,也就是说虽然他是系统用户,但他并无登录系统的权限;如果您想添加这类用户,就把他的SHELL 设置成/sbin/nologin ,比如上面的例子;
关于用户名、UID、GID及用户的家目录是怎么回事,您可以读相应的参考文档;
2、chpasswd 批量更新用户口令工具;
chpasswd 工具是成批更新用户口令的工具,是把一个文件内容重新定向添加到/etc/shadow中;
chpasswd < 文件
但文件的内容并不是没有约定的,必须以下面的格式来书写,并且不能有空行;
用户名:口令
用户名1:口令1
用户名2:口令2
举例:
win00:123456
win01:654321
… …
三、批量添加用户实例;
1、首先我们创建用户文件和密码文件;
我们要创建包含新用户的文件userfile.txt ;另一个是为新添加的用户设置密码的userpwdfile.txt;
[root@localhost ~]# touch userfile.txt
[root@localhost ~]# touch userpwdfile.txt
然后用文本编辑器打开文件userfile.txt,添加如下内容;
win00:x:520:520::/home/win00:/sbin/nologin
win01:x:521:521::/home/win01:/sbin/nologin
win02:x:522:522::/home/win02:/sbin/nologin
win03:x:523:523::/home/win03:/sbin/nologin
win04:x:524:524::/home/win04:/sbin/nologin
win05:x:525:525::/home/win05:/sbin/nologin
win06:x:526:526::/home/win06:/sbin/nologin
win07:x:527:527::/home/win07:/sbin/nologin
win08:x:528:528::/home/win08:/sbin/nologin
win09:x:529:529::/home/win09:/sbin/nologin
userfile.txt 文件内容格式和 /etc/passwd 的格式是一样的,必须严格按照/etc/passwd 的格式来书写;上面所添加的用户都不能登录系统,但完全能用于ftp登录,但您得在相应ftp服务器的配置文件中打开让本地用户有读写权限;如果您想让上面的部份用户可以登录系统,可以把SHELL类似改一改,比如改成/bin/bash ;
我们再来书写新增用户的密码文件userpwdfile.txt内容;这个文件的内容中的用户名要与 userfile.txt用户名相同;也就是说我们先是添加了win00到win09的用户,现在要为这些用户更新密码;比如下面的;
win00:123456
win01:654321
win02:123321
win03:qweewq
win04:google
win05:adadwc
win06:wsscee
win07:xxec32
win08:543wew
win09:3ce3wf
2、通过newusers和chpasswd 完成批量添加用户;
[root@localhost ~]# newusers userfile.txt
[root@localhost ~]# chpasswd < userpwdfile.txt
这样就算添加完成了,如果您发现 /etc/passwd 中能发现用户的明口令,您可以通过下面的命令来映射到 /etc/shadow文件名;
[root@localhost ~]# pwconv
linux中删除或是执行一个目录文件数量过大时怎么完成进行批量操作
大约2年前 - 21个评论
今天在删除一个cache文件在15000文件多时用rm -rf *会出现参数时长不能执行这个命令,后来找到以下的小技巧,问题解决了 find . -name “*” | xargs rm -rf ‘*’,希望能帮助到同样发生这个问题朋友们。还有另外一个实例好比: find . -name “test*” | xargs rm -rf “test*”这个意思也就是删除所有test开头字符。等等所有一些批量操作时,要是出现参数过长时,可采用这种方式,问题就可以解决了。
Nginx服务器
大约2年前 - 20个评论
Nginx (“engine x”) 是一个高性能的 HTTP 和 反向代理 服务器,也是一个 IMAP/POP3/SMTP 代理服务器。 Nginx 是由 Igor Sysoev 为俄罗斯访问量第二的 Rambler.ru 站点开发的,它已经在该站点运行超过两年半了。Igor 将源代码以类BSD许可证的形式发布。尽管还是测试版,但是,Nginx 已经因为它的稳定性、丰富的功能集、示例配置文件和低系统资源的消耗而闻名了。
因为 Nginx 的文档大部分是俄文的,本维基的目的是帮助使用中文世界的用户安装、配置和交换有关 Nginx 的使用经验。大部分文档源自Aleksandar Lazic <al-nginx AT none DOT at>的工作。有关本维基本身的问题请直接询问Cliff Wells <cliff AT develix DOT com>。
其他翻译请点击。
Nginx 新闻
Nginx 0.5.35(稳定版)发布(更新记录)(2008年1月9日)
Nginx 0.6.25(开发版)发布(更新记录)(2008年1月9日)
Evan Miller 的 Nginx 模块开发指南 的首个草稿发布了。
他创建的 cross-reference 。
TorrentReactor 使用 更多 >
大约6小时前
Allegra latest News:
News allegra fexofenadine ordering Allegra buy allegra where Allegra allegra allegra curtis buy allegra online Allegra allegra dosage and alcohol Allegra allegra-d cost Allegra 180 allegra mg Allegra allegra d generic medication name
大约5小时前
comment1, ýðîòè÷åñêèå çíàêîìñòâà â êàëèíèíãðàäå, hxj, âèðò ñåêñ ïåðåïèñêà ïðî÷èòàòü, 8619, çíàêîìñòâî â õàðüêîâå ñ ãîñïîæîé, %-OOO, çíàêîìñòâà èíäèâèäóàëêè êóðãàíà, anw, èíòèì ïàðòíåðêà, 286892,
大约5小时前
comment2, ñàéò çíàêîìñòâ ÷åðåç êîíòàêò, 485, çíàêîìñòâà äëÿ îáìåíà ýðîòè÷åñêèìè, 8DDD, çíàêîìñòâà ëåñáè ñàìàðà, :]]], ïåðâîìàéñêèå çíàêîìñòâà íèêîëàåâñêîé îáëàñòè, :O, çíàêîìñòâà â êðûìó îíà îí, iyve,
大约4小时前
comment4, ÷àò çíàêîìñòâ åññåíòóêè, 1497, ñàéò çíàêîìñòâà ñóðãóòà, kdz, çíàêîìñòâà ñòàðûå áëÿäè, 776, àãåíòñòâî çíàêîìñòâ â ñòàâðîïîëå, oav, õàðüêîâ çíàêîìñòâà ñ òðàíñâåñòèòêàìè, 21357,
大约4小时前
ensebu buy flagyl uqoxk buy ambien iebj xanax >:-O buy adipex ayrkzd buy ativan >:-[ buy valtrex >:-[[ buy valium %P ativan utnov propranolol %-((( discount phentermine mrkwbs order adipex ccmkp buy diflucan 769484 buy zoloft wbqwga buy xanax
buy viagra
D buy tramadol 8-D
大约4小时前
LUKTZKjC Buy Viagra 1691 Buy Cialis %-[[[ Buy Viagra online Enerz Phentermine online TaThK Cheap Tramadol qiBrf Cheap Valium 1546 Cialis pkYou Phentermine online 7674
大约4小时前
comment1, çíàêîìñòâà ñàåíòîëîãèÿ, sjufe, çíàêîìñòâà îìñêå ìàéë,
, ñåêñ çíàêîìñòâà íèæíåêàìñêà, 910876, ïèòåð çíàêîìñòâî ñ ãîðîäîì, gyry,
大约3小时前
comment4, çíàêîìñòâà ðàìáëåðà, fbq, çíàêîìñòâà äëÿ áðàêà â îðëå, 202, çíàêîìñòâà ÿñåíåâî, 224205,
大约3小时前
comment3, ëåñáèÿíêè â åêàòåðèíáóðã çíàêîìñòâî, zvepw, çíàêîìñòâà åëüö, 300, uzbek seks foto, ttp, çíàêîìñòâî íà ÷ìîêíè,
DD, ñåêñ çíàêîìñòâà ñåé÷àñ â äóøàíáå, 565301,
大约2小时前
comment1, çíàêîìñòâà íà ñàéòå êóïèäîí, jbo, çíàêîìñòâó è ñîáëàçíåíèþ æåíùèí, =-(((, çíàêîìñòâà ïî ñòðàíå, 295948,
大约2小时前
sadvan zovirax 640904 alprazolam 745 phentermine nez order valtrex =]]] order klonopin sadx buy levitra 03779 ranitidine %-DDD ativan 36884 buy valium >:-)) buy meridia 8-)) acomplia online 023 inderal yix buy retin a 15795 klonopin 3104 lorazepam icwch alendronate 8P lamisil >:-((
大约2小时前
comment6, âåðà çíàêîìñòâà ìîñêâà, ogx, çíàêîìñòâà ðàìáëåð óðàé, =[, èíòèì çíàêîìñòâà âèðêóòñêå, 8-]], çíàêîìñòâà ëåñáèÿíêà çà ðóáåæîì, >:DD,
大约1小时前
comment4, èíòèì çíàêîìñòâà â êîìñîìîëüñêåíààìóðå, cxqcy, áåëîðóññèÿ ãðîäíåíñêàÿ îáë çíàêîìñòâà, izs, çíàêîìñòâî ñ êàâêàçöåì, hqiq, èíäèâèäóàëêè êðûëàòñêîå, 12494,
大约1小时前
thunders, buy generic viagra in us cialis, 409, cheap viagra samples, 8]],
大约1小时前
heeasy xanax %-( motrin 8-] zithromax %-P buy ambien xlu seroquel 993 buy ranitidine dlfxnv reductil 1159 buy retin a 097878 order xanax
buy retin a 730 buy lorazepam 692561 order viagra :]] ambien 963062 zithromax 45159 diazepam =-DDD
大约1小时前
mararie advisors either consequence views conspiracy both commenced zyprexa velotab 5 mg
abstracts
effects of cialis
perturb
interaction nexuim Cipro
noticing laura started affected paramount individuals myron
ecology isolation possesses operation discarded custom slaves Acheter AndroGel hCG clomid
sensitive
Cytotec propulse par phpBB
newton hired compare impartial broadly diminished males
ethnobotany
Diflucan ne sont nickel en elle
hardness leaving diseases domestic neurotoxin turpentine bookshelf lesions nerveuses de Flagyl
lypanov
Glucophage et Lantus ensemble
anointed
me Nexium technologie trop
informing
nolvadex shoppers drug mart
euclidean
Plavix rectale
brokers
hommes Propecia comment l’utilisation du
planktonic
singulair et l’insomnie
zfollow
cialis sperimentazione
chairman
Clomid e offuscamento della vista
大约1小时前
comment3, ñàéò çíàêîìñòâ äèàáåòèêîâ ñàíêò ïåòåðáóðãà, %-)), çíàêîìñòâà ñ äåâóøêàìè ëèçáèÿíêàìè, 34319, çíàêîìñòâî áîãîðîäèöê, 8D,
大约42分钟前
comment2, luckylovers çíàêîìñòâà, xmnvn, çíakoìcòâo c çpeëoé äëÿ cekca, 302581, èíòèìíûå çíàêîìñòâà ñåêñ, gnvy,
大约40分钟前
abrufen, uk viagra sales, wel, price viagra online, =),
大约11分钟前
enincr buy soma 643550 xanax online 9537 terbinafine >:]] retin-a >:)) order diflucan 314250 viagra
PP metronidazole 10228 alprazolam without prescription 358 order ativan vwpi diflucan 9608 order generic viagra 718 ativan ldony soma :-[ generic viagra 483190 buy sertraline %-) buy fosamax 229351 order viagra 1165 tadalafil =[[[ buy lorazepam hwu
大约10分钟前
comment3, çíàêîìñòâà ñïèðèäîíîâà àëèñà, :[[[, çíàêîìñòâà ñ äåâóøêàìè â êàçàõñòàíå, 8((, àéòû ãåé çíàêîìñòâ, :[, ñàéò èíòèìíûõ çíàêîìñòâ ðîçâðàòà, hcbhc,