编译mysql make时出现redeclaration of C++ built-in type ‘bool’,是由于没有安装gcc-c++,如果安装gcc-c++后,make还出现此错误,则需要重新configure再make。
作者:Specs
编译mysql出现configure: error: No curses/termcap library found错误
今天编译mysql出现configure: error: No curses/termcap library found的错误,这是由于缺少ncurses-devel软件包。yum安装即可。
- yum -install ncurses ncurses-devel
CentOS系统服务优化脚本
- #!/bin/bash
- #该脚本用于关闭服务器上非必须的系统服务项,并不适用于所有服务器,比如如果是文件服务器则NFS相关服务则不能关闭
- #定义所要停止的服务,可以根据实际服务器应用更改
- SERVICES="acpid atd auditd avahi-daemon bluetooth cups firstboot hidd ip6tables kudzu lvm2-monitor mcstrans mdmonitor microcode_ctl netfs nfslock pcscd portmap rpcgssd rpcidmapd xfs yum-updatesd"
- for service in $SERVICES
- do
- #关闭服务随系统启动
- chkconfig $service off
- #停止选择服务
- service $service stop
- done
下载脚本:http://devops.webres.wang/wp-content/uploads/2011/10/optimize-service.sh
关闭CENTOS不必要的默认服务
CentOS关闭服务的方法:
- chkconfig –level 2345 服务名称 off
| 服務名稱 | 建議 | 說明 | |
| acpid | 停用 | Advanced Configuration and Power Interface 電源進階設定,常用在 Laptop 上 | |
| apmd | 停用 | Adventage Power Management daemon 偵測系統的電池電量,常用在 Laptop 上 | |
| atd | 停用 | /etc/at.allow,/etc/at.deny 我大概都使用 crond 來達成 | |
| autofs | 停用 | 自動掛載檔案系統與週邊裝置 (如光碟、USB),常用在 Laptop 上 | |
| avahi-daemon | 停用 | 當區網沒有 DNS 服務時會試著尋找提供 zeroconf 協定的主機 | |
| bluetooth | 停用 | Bluetooth 藍芽,常用在 Laptop 上 | |
| cpuspeed | 停用 | 控制 CPU 速度主要用來省電,常用在 Laptop 上 | |
| cups | 停用 | Common UNIX Printing System 使系統支援印表機 | |
| firstboot | 停用 | 安裝完成後第一次啟動時的服務,設定 auth、firewall、keyboard… | |
| gpm | 停用 | 記錄週邊裝置的檔案資料,例如文字模式下可使用滑鼠 | |
| haldaemon | 停用 | 使系統支援 plug and play 裝置 | |
| hidd | 停用 | 使系統支援藍芽裝置,例如滑鼠,鍵盤 | |
| hplip | 停用 | 使系統支援 HP 相關型號印表機 | |
| ip6tables | 停用 | 使系統支援 IPTables Filrewall IPv6 | |
| isdn | 停用 | 使系統支援 Integrated Services Digital Network (ISDN) 環境 | |
| lm_sensors | 停用 | 使系統支援偵測主機版或硬體,常用在 Laptop 上 | |
| messagebus | 停用 | 使系統支援 plug and play 裝置 | |
| nfslock | 停用 | 使系統支援 NFS Server 資料一致性功能 | |
| pcscd | 停用 | 使系統支援 Smart Card | |
| portmap | 停用 | 使系統支援 NFS Service | |
| rpcgssd | 停用 | 使系統支援 NFSv4 Service | |
| rpcidmapd | 停用 | 使系統支援 NFSv4 Service | |
| yum-updatesd | 停用 | 使系統支援 YUM 自動更新服務 (上線機器還是先確認好再更新) | |
| anacron | 視個人需求 | 執行在 crontab 設定的時間沒有執行到的工作 | |
| auditd | 視個人需求 | 稽核系統 /var/log/audit/audit.log,若 auditd 未執行中則稽核訊息會寫入 /var/log/messages (配合 SELinux) | |
| iptables | 視個人需求 | 使系統支援 IPTables Filrewall | |
| irqbalance | 視個人需求 | 使系統支援多個 CPU 環境當系統中斷請求時進行負載平衡的程序,所以單 CPU 的機器就不需要 | |
| lvm2-monitor | 視個人需求 | 使系統支援 Logical Volume Manager 邏輯磁區 | |
| mcstrans | 視個人需求 | 主要用於配合 SELinux 服務 | |
| mdmonitor | 視個人需求 | 使系統支援 RAID 相關程序 | |
| microcode_ctl | 視個人需求 | 使系統支援 Intel IA32 CPU 特色,所以 AMD CPU 不需要 | |
| netfs | 視個人需求 | Network File System Mounter 網路掛載系統 (如 NFS、Samba、NCP) | |
| restorecond | 視個人需求 | 使系統支援 SELinux 監控檔案狀態 | |
| smartd | 視個人需求 | 使系統支援檢查硬碟狀態 (Hardware RAID 要改設定檔) | |
| sendmail | 視個人需求 | 使系統支援 Sendmail | |
| xfs | 視個人需求 | 使系統支援 X Window 字型 | |
| crond | 啟動 | /etc/cron.* 排程服務 | |
| kudzu | 啟動 | 使系統每次開機會都自動執行硬體偵測 | |
| network | 啟動 | 使系統支援網卡 | |
| readahead_early | 啟動 | 使系統再啟動時預先將相關檔案讀到記憶體內來加快啟動速度 | |
| sshd | 啟動 | 使系統支援 SSH Service | |
| syslog | 啟動 | 使系統支援 System Log Service | |
CentOS5.5 默认基本服务详解
| 服务名称 | 功能 | 默认 | 建议 | 备注 |
| NetworkManager | 用于自动连接网络 | 关闭 | 关闭 | 对服务器没用 |
| acpid | 电源的开关等检测管理 | 开启 | 关闭 | 对服务器没用 |
| anacron | 一种计划任务管理 | 开启 | 开启 | |
| apmd | 高级电源管理 | 开启 | 开启 | |
| atd | 在指定时间执行命令 | 开启 | 关闭 | 如果用crond,则可关闭它 |
| auditd | 开启 | 自定 | 如果用selinux,需要开启它 | |
| autofs | 文件系统自动加载、卸载 | 开启 | 自定 | 只在需要时开启它,可以停止 |
| avahi-daemon | 本地网络服务查找 | 开启 | 关闭 | 对服务器没用 |
| avahi-dnsconfd | avahi DNS | 关闭 | 关闭 | 对服务器没用 |
| bluetooth | 蓝牙无线通信 | 开启 | 关闭 | 对服务器没用 |
| conman | 控制台管理 | 关闭 | 关闭 | 没用 |
| spuspeed | 调节cpu速度 | 开启 | 自定 | |
| crond | 计划任务管理 | 开启 | 开启 | 很有用,开启 |
| cups | 通用unix打印服务 | 开启 | 关闭 | 对服务器没用 |
| dnsmasq | dns cache | 关闭 | 关闭 | 没用 |
| dund | 蓝牙相关 | 关闭 | 关闭 | |
| firstboot | 系统安装后初始设定 | 开启 | 关闭 | |
| gpm | 控制台下的鼠标支持 | 开启 | 开启 | |
| haldaemon | 硬件信息收集服务 | 开启 | 开启 | |
| hidd | 蓝牙相关 | 开启 | 关闭 | |
| ibmasm | ibm硬件管理 | 关闭 | 关闭 | |
| ip6tables | ipv6防火墙 | 开启 | 关闭 | |
| iptables | ipv4防火墙 | 开启 | 关闭 | |
| irda | 红外线通信 | 关闭 | 关闭 | |
| irqbalance | cpu负载均衡 | 开启 | 自定 | 多核cup需要 |
| kudzu | 硬件变动检测 | 开启 | 关闭 | 服务器无用 |
| lvm2-monitor | lvm监视 | 开启 | 关闭 | 非集群无用 |
| mcstrans | 在开启selinux时用于检查context | 开启 | 关闭 | |
| mdmonitor | 软raid监视 | 开启 | 关闭 | |
| mdmpd | 软raid管理 | 关闭 | 关闭 | |
| messagebus | 负责在各个系统进程之间传递消息 | 开启 | 开启 | 如停用,haldaemon启动会失败 |
| microcode_ctl | cpu微码管理升级 | 开启 | 关闭 | |
| multipathd | 关闭 | 关闭 | ||
| netconsole | 关闭 | 关闭 | ||
| netfs | nfs相关 | 开启 | 关闭 | |
| netplugd | 网线热插拔监视 | 关闭 | 关闭 | |
| network | 开启 | 开启 | ||
| nfs | 网络文件系统 | 关闭 | 关闭 | |
| nfslock | nfs相关 | 开启 | 关闭 | |
| nscd | name cache,应该与DNS相关 | 关闭 | 关闭 | |
| oddjobd | 与D-BUS相关 | 关闭 | 关闭 | |
| pand | 蓝牙相关 | 关闭 | 关闭 | |
| pcscd | pc/sc smart card daemon | 开启 | 关闭 | |
| portmap | 使用NFS、NIS时的port map | 开启 | 关闭 | |
| psacct | 负荷检测 | 关闭 | 关闭 | |
| rawdevices | raw 设备支持 | 开启 | 开启 | |
| rdisc | 自动检测路由器 | 关闭 | 关闭 | |
| readahead_early | 开启 | 开启 | ||
| readahead_later | 关闭 | 关闭 | ||
| restorecond | selinux相关 | 关闭 | 关闭 | |
| rpcgssd | NFS相关 | 开启 | 关闭 | |
| rpcidmapd | RPC name to UID/GID mapper | 开启 | 关闭 | NFS相关 |
| rpcsvcgssd | NFS相关 | 关闭 | 关闭 | |
| saslauthd | sasl认证服务相关 | 关闭 | 关闭 | |
| sendmail | 开启 | 关闭 | ||
| smartd | 硬盘自动检测守护进程 | 开启 | 开启 | |
| sshd | 开启 | 开启 | ||
| syslog | 系统日志进程 | 开启 | 开启 | |
| tcsd | 关闭 | 关闭 | ||
| wpa_supplicant | 无线认证相关 | 关闭 | 关闭 | |
| xfs | x windows相关 | 开启 | 关闭 | |
| ypbind | network information service客户端 | 关闭 | 关闭 | |
| yum-updatesd | yum自动升级 | 开启 | 关闭 | 对服务器开启比较危险哦 |
注:上述服务列表是在CentOS只安装了基本系统、开发工具、开发库、老软件支持的前提下显示出来的。
Linux安装配置varnish web加速器
Varnish是一款高性能的开源HTTP加速器,它可以来做纯粹的代理服务器,负载均衡,但varnish最主要的功能是缓存加速,也是它最出色的地方。下面介绍如何安装和使用。
- wget -c http://repo.varnish-cache.org/source/varnish-3.0.1.tar.gz
- tar xzvf varnish-3.0.1.tar.gz
- cd varnish-3.0.1
- ./configure –prefix=/usr/local/varnish
- make
- make install
- groupadd varnish
- useradd -d /var/lib/varnish -g varnish -s /sbin/nologin varnish
- ln -s /usr/local/varnish/sbin/varnishd /usr/sbin/varnishd
启动varnish:
- varnishd -f /usr/local/varnish/etc/varnish/default.vcl -s malloc,1G -g varnish -u varnish -T 127.0.0.1:2000
关闭varnish:
- pkill varnish
启动参数介绍:
-f /usr/local/etc/varnish/default.vcl
这个 –f 选项指定varnishd使用哪个配置文件。
-s malloc,1G
这个 –s 选项用来确定varnish使用的存储类型和存储容量,我使用的是malloc类型(malloc是一个C函数,用于分配内存空间), 1G 定义多少内存被malloced,1G = 1gigabyte。
-T 127.0.0.1:2000
Varnish有一个基于文本的管理接口,启动它的话可以在不停止varnish的情况下来管理varnish。您可以指定管理软件监听哪个接口。当然您不能让全世界的人都能访问您的varnish管理接口,因为他们可以很轻松的通过访问varnish管理接口来获得您的root访问权限。我推荐只让它监听本机端口。如果您的系统里有您不完全信任的用户,您可以通过防火墙规则来限制他访问varnish的管理端口。
-a 0.0.0.0:8080
这一句的意思是制定varnish监听所有IP发给8080端口的http请求,如果在生产环境下,您应该让varnish监听80,这也是默认的。
vcl配置文件的介绍请执行如何命令查看:
man /usr/local/varnish/share/man/man7/vcl.7
也可以查看在线文档:https://www.varnish-cache.org/docs/3.0/
安装mod_rpaf让apache获取访客真实IP
mod_rpaf是apache的一个模块,目的是为了获取访客的真实IP,下面是安装方法:
- wget http://stderr.net/apache/rpaf/download/mod_rpaf-0.6.tar.gz
- tar xvfz mod_rpaf-0.6.tar.gz
- cd mod_rpaf-0.6
- /usr/local/apache/bin/apxs -i -c -n mod_rpaf-2.0.so mod_rpaf-2.0.c
安装好了之后,需要对httpd.conf文件进行配置。
1、在httpd.conf加入如下代码:
- <IfModule mod_rpaf.c>
- RPAFenable On
- RPAFsethostname On
- RPAFproxy_ips 127.0.0.1
- RPAFheader X-Forwarded-For
- </IfModule>
加载模块代码:
- LoadModule rpaf_module modules/mod_rpaf-2.0.so
2、并定义日志格式
- LogFormat "%{X-Forwarded-For}i %l %u %t "%r" %>s %b "%{Referer}i" "%{User-Agent}i"" varnishcombined
3、以后可以使用如下代码启用此格式的日志:
- CustomLog "/home/wwwlogs/$domain.log" varnishcombined
wordpress varnish vcl配置文件
如需使用varnish作wordpress缓存,已经开发有一键包http://devops.webres.wang/lampv/
使用如下配置文件,建议安装wordpress插件Varnish HTTP Purge来自动清除缓存,此配置文件实现的功能如下:
1、varnish作为前端,使用80端口
2、允许127.0.0.1和devops.webres.wang清除缓存
3、在缓存之前,删除常见静态文件的cookie。
4、http.x-forwarded-for获取真实IP。
5、不缓存wordpress后台页面,不缓存已登录的用户和保留评论者cookie。
6、后端服务器状态检查,如发生故障,继续以旧缓存内容服务。
下面是配置文件内容:
- backend wp1
- {
- .host = “127.0.0.1”;
- .port = “8000”;
- .probe = {
- .url = “/”;
- .timeout = 1s;
- .interval = 60s;
- .window = 1;
- .threshold = 1;
- }
- }
- acl purge {
- “127.0.0.1”;
- “devops.webres.wang”;
- }
- sub vcl_recv {
- if (req.request == “PURGE”) {
- if (!client.ip ~ purge) {
- error 405 “Not allowed.”;
- }
- return (lookup);
- }
- }
- # Do the PURGE thing
- sub vcl_hit {
- if (req.request == “PURGE”) {
- purge;
- error 200 “Purged.”;
- }
- }
- sub vcl_miss {
- if (req.request == “PURGE”) {
- purge;
- error 200 “Purged.”;
- }
- }
- sub vcl_recv {
- ## always cache these images & static assets
- if (req.request == “GET” && req.url ~ “.(css|js|gif|jpg|jpeg|bmp|png|ico|img|tga|wmf|html|htm)$”) {
- remove req.http.cookie;
- return(lookup);
- }
- if (req.request == “GET” && req.url ~ “(xmlrpc.php|wlmanifest.xml)”) {
- remove req.http.cookie;
- return(lookup);
- }
- ## get real ip address
- if (req.http.x-forwarded-for) {
- set req.http.X-Forwarded-For =
- req.http.X-Forwarded-For + “, “+ client.ip;
- } else {
- set req.http.X-Forwarded-For = client.ip;
- }
- ##never cache POST requests
- if (req.request == “POST”)
- {
- set req.backend = wp1;
- return(pass);
- }
- ### do not cache these files:
- ##never cache the admin pages, or the server-status page
- if (req.request == “GET” && (req.url ~ “(wp-admin|wp-login|server-status)”))
- {
- return(pipe);
- }
- #DO cache this ajax request
- if(req.http.X-Requested-With == “XMLHttpRequest” && req.url ~ “recent_reviews”)
- {
- return (lookup);
- }
- #dont cache ajax requests
- if(req.http.X-Requested-With == “XMLHttpRequest” || req.url ~ “nocache” || req.url ~ “(control.php|wp-comments-post.php|wp-login.php|bb-login.php|bb-reset-password.php|register.php)”)
- {
- return (pass);
- }
- if (req.http.Cookie && req.http.Cookie ~ “wordpress_”) {
- set req.http.Cookie = regsuball(req.http.Cookie, “wordpress_test_cookie=”, “; wpjunk=”);
- }
- ### don’t cache authenticated sessions
- if (req.http.Cookie && req.http.Cookie ~ “(wordpress_|PHPSESSID|comment_author_)”) {
- return(pass);
- }
- ### parse accept encoding rulesets to make it look nice
- if (req.http.Accept-Encoding) {
- if (req.http.Accept-Encoding ~ “gzip”) {
- set req.http.Accept-Encoding = “gzip”;
- } elsif (req.http.Accept-Encoding ~ “deflate”) {
- set req.http.Accept-Encoding = “deflate”;
- } else {
- # unkown algorithm
- remove req.http.Accept-Encoding;
- }
- }
- if (req.backend.healthy) {
- set req.grace = 120s; /* Only enable if you don’t mind slightly stale content */
- } else {
- set req.grace = 24h;
- }
- return(lookup);
- }
- sub vcl_fetch {
- set beresp.grace = 24h; /* Keep at longest used in vcl_recv */
- set beresp.ttl = 1h;
- }
No manual entry for
今天man vcl查看vcl的语法,提示No manual entry for vcl,意思是说找不到vcl的man文件,于是我们需要指定,下面提供两种方法。
第一种:编辑/etc/man.config文件,添加man的路径,如/usr/local/varnish/share/man/。
第二种:不修改man.config文件,直接man后面加上绝对路径,如:man /usr/local/varnish/share/man/man7/vcl.7
Linux网站压力测试工具webbench
在一个网站上线前, 通常我们应该做一些相关的压力测试, 以便了解当前Web服务器在高并发高负载情况下的响应状况和速度,方便对Web服务器进行优化和重构。
目前有很多免费的web压力测试工具可以帮助我们完成测试, 例如: 十个免费的Web压力测试工具http://coolshell.cn/articles/2589.html,
但在真实项目中, 我还是喜欢用Apache ab 和Webbench来完成压力测试, Apache的ab使用非常简单, 而且只要是安装了Apache了,就会自带其ab工具, 但有个问题就是不能模拟高并发状态下的测试, 好像最多可以模拟100-200次/秒的并发. 如果需要模拟更高负载的压力测试, 可能我们就需要请Webbench来帮忙了, webbench最多可以模拟3万个并发连接.但唯一的缺点就是测试的结果太简单了.
好了, 首先我们先来安装webbench吧, 为了测试准确,请将 webbench 安装在别的linux服务器上, 因为webbench 做压力测试时,自身也会消耗CPU和内存资源, 否则, 很可能把自己服务器搞挂掉:).
首先,我们先下载并安装webbench吧
- wget http://home.tiscali.cz/~cz210552/distfiles/webbench-1.5.tar.gz
- tar zxvf webbench-1.5.tar.gz
- cd webbench-1.5
- make && make install
如果出现下面错误提示:
- ctags *.c
- /bin/sh: ctags: command not found
可以使用yum安装ctags来解决这个问题
- yum install ctags
或者自己手动安装
- wget http://nchc.dl.sourceforge.net/project/ctags/ctags/5.8/ctags-5.8.tar.gz
- tar zxvf ctags-5.8.tar.gz
- ./configure
- make
- make install
如果安装了ctags, 仍然报错:
- install -s webbench /usr/local/bin
- install -m 644 webbench.1 /usr/local/man/man1
- install: cannot create regular file `/usr/local/man/man1′: No such file or directory
- make: *** [install] Error 1
我们可以通过自己创建文件夹来解决这个问题:
- mkdir -m 644 -p /usr/local/man/man1
最后终于安装成功! 我们也可以进行压力测试了
webbench -c 500 -t 30 http://www.example.com/phpinfo.php
参数说明:-c表示并发数,-t表示时间(秒)
- -bash-3.00$ webbench -c 3000 -t 30 http://www.example.com/phpinfo.php
- Webbench – Simple Web Benchmark 1.5
- Copyright (c) Radim Kolar 1997-2004, GPL Open Source Software.
- Benchmarking: GET http://www.example.com/phpinfo.php
- 3000 clients, running 30 sec.
- Speed=8358 pages/min, 8791523 bytes/sec.
- Requests: 4179 susceed, 0 failed.
- -bash-3.00$
Linux 的系统服务及其配置
服务简介
Linux 系统服务是在Linux启动时自动加载,并在Linux退出时自动停止的系统任务。在Linux 启动过程中,我们可以看得很多“starting … ”提示信息,该信息表示正在启动系统服务;而在Linux 退出时,我们也能够看到相应的“Stopping … ”信息,表示系统服务正在停止。Linux自身有许多系统任务,如“network” 服务用于支持网络连接等。CAMS 在安装过程中,会自动加入三个系统任务,以保证在Linux 启动时,CAMS 服务自动启动;而在Linux 关闭时,CAMS服务也自动停止。这三个服务分别时:
oracled Oracle 数据库服务
camsd CAMS协议处理模块服务
tomcat4 Tomcat Web Server 服务,用于支持CAMS 配置管理台、自助服务平台、Portal 服务平台及内容计费认证平台等;
Linux 系统的所有服务程序脚本均可以在“/etc/rc.d/init.d” 文件夹中找到,每一项服务对应一个脚本文件。如果CAMS 已经安装,我们可以在该文件夹下找到“oracled”、“ camsd” 和“tomcat4” 这三个文件。
启动和停止服务
service 命令用于启动及停止某个服务,例如:
service camsd stop 停止 camsd 服务
service oracled start 启动 oracled 服务
service tomcat4 start 启动 tomcat4 服务
CAMS引入的三个服务间有依赖关系,即camsd 服务和tomcat4 服务依赖与oracled 服务,在oracled 服务启动前不能启动camsd 服务和tomcat4 服务;
而在oracled 服务停止前必须先停止camsd 服务和tomcat4 服务。
服务的添加、删除、自动运行及状态
CAMS 在安装过程中会自动添加相关的服务,在安装的最后过程中,会提示用户是否启动服务(使服务生效)。需要注意的是:一个服务被添加后,并不表示该服务在系统启动过程中会自动运行,仅表示可以使用service 命令来启动、停止服务。
1. 添加服务
添加服务的步骤为:
(1) 将该服务的脚本文件拷入“/etc/rc.d/init.d” 文件夹下,保证其状态为“可执行”;
(2) 使用chkconfig 命令将服务添加到服务列表中:
chkconfig –add camsd (注意有两个“ -”)
将服务添加以后, 该服务即可以使用service 来启动/停止了。
2. 删除服务
如果要删除某项服务 将上述命令的“add” 改为“del” 即可:
chkconfig –del camsd (注意有两个 “-”)
3. 设置服务自动运行
Linux 运行有7 种运行级别,分别使用0-6 来表示,控制台界面运行级别为3,图形界面运行级别为5 ,要使某服务在系统启动时自动运,行使用chkconfig将该服务添加到相应级别的自启动服务列表中即可。
chkconfig –level 35 camsd on (注意有两个 “-”)
上面的命令将 camsd 服务添加到级别为3、 5 的自启动服务列表中;而下面的命令则将服务camsd 从级别为3、 5 的自启动服务列表中删除:
chkconfig –level 35 camsd off (注意有两个 “-”)
如果需要查看某项服务的自启动状态信息, 使用如下命令即可:
chkconfig –list camsd (注意有两个 “-”)