[root@bruce mysql-5.6.27]# yum -y install ncurses-devel
安装了ncurses-devel包后,删除CMakeCache.txt,然后重新编译,编译成功,问题解决!
技术笔记
[root@bruce mysql-5.6.27]# yum -y install ncurses-devel
安装了ncurses-devel包后,删除CMakeCache.txt,然后重新编译,编译成功,问题解决!
命令行导入数据库:
1,进入MySQL:mysql -u 用户名 -p
如我输入的命令行:mysql -u root -p (输入同样后会让你输入MySQL的密码)
2,在MySQL-Front中新建你要建的数据库,这时是空数据库,如新建一个名为news的目标数据库
3,输入:mysql>use 目标数据库名
如我输入的命令行:mysql>use news;
4,导入文件:mysql>source 导入的文件名;
如我输入的命令行:mysql>source news.sql(如果在bin目录下用相对路径名,如果在其他目录下用绝对目录名);
MySQL备份和还原,都是利用mysqldump、mysql和source命令来完成的。
问题处理办法:
1、首先检查了httpd.conf和httpd-vhosts.conf里面的配置,均无错误;然后又查看了编译mod_deflate时的输出信息,也没有提示错误。
2、我百度了inflateEnd,第一个就是搜索条目就是zlib的百度百科,然后我就去google搜索inflateEnd,搜索条目告诉我inflateEnd是属于zlib.lib库文件里面的。
3、 接着我在google下面找到了以前也遇到过相似问题的人,他们是在apr的主配置文件apr-1-config(老版本可能是apr-conf)里面将 LDFLAGS=”” 修改为 LDFLAGS=”-lz”,然后用apxs从新编译mod_deflate.c后,apache服务就正常了,并且也可以正常压缩文件了。
该问题的另一种解决办法:
需要在 LoadModule deflate_module modules/mod_deflate.so 的前面加载zlib.so
如果是32操作系统就在LoadModule deflate_module modules/mod_deflate.so这行的上一行添加LoadFile /usr/lib/libz.so即可。
如果是64操作系统就在LoadModule deflate_module modules/mod_deflate.so这行的上一行添加LoadFile /usr/lib64/libz.so即可。
在使用./configure 编译的时候,如果不指定某个模块为动态,即没有使用:enable-mods-shared=module或者enable-module=shared 这个2个中的一个,那么所有的默认模块为静态。 那么何谓静态? 其实就是编译的时候所有的模块自己编译进 httpd 这个文件中(我们启动可以使用这个执行文件,如: ./httpd & ) ,启动的时候这些模块就已经加载进来了,也就是可以使用了, 通常为:<ifmodule> </ifmodule> 来配置。所以大家看到的配置都是 <ifmodule module.c> ,很显然,module.c这个东西已经存在 httpd这个文件中了。
动态:
就是编译的时候,使用enable-module=shared 或者enable-modules-shared=module 来动态编译。 那么什么是动态? 静态是直接编译进httpd中, 那么动态显然就不编译进去了,也就是你启动的时候根本不会加载这个模块, 而是给你一个module.so 文件,你一定要使用 loadmodule 这个语法来加载,这个模块才有效。
那么区别就出来了:静态的模块通常是<ifmodule></ifmodule> 来配置, 动态使用loadmoule来加载,然后再配置。
至于性能方面我没怎么关注, 官方说静态的比动态的在性能方面多5%左右。
动态相对方便一点, 如果你编译完后,发现有些需要的模块你没编译进去(默认编译多少模块呢?你用./configure –help | grep disable查看, 会让你去disable表示默认会编译进去,否者disable有什么用呢?)你可以动态的加载, 只要你有module.so文件。
首先看看编译apache的选项含义
对于apache 1.3.x
./configure –prefix=/usr/local/apache –enable-module=so –enable-module=most –enable-shared=max –enable-module=rewrite
对于apache 2.0.x
./configure –prefix=/usr/local/apache2 –enable-modules=most –enable-mods-shared=all –enable-so –enable-rewrite
对于apache 2.2.0
./configure –prefix=/usr/local/apache2 –enable-mods-shared=all –enable-so –enable-rewrite
举例一:编译一个apache2.2.8版本
./configure –prefix=/usr/local/apache –enable-so –enable-mods-shared=most –enable-rewrite –enable-forward
说明:
so模块用来提供 DSO 支持的 apache 核心模块.
–enable-so 选项:让 Apache 可以支持DSO模式,注意,这里采用的是 Apache2.0 的语法。如果你的Apache 是1.3版本,应改为–enable-module=so
–enable-mods-shared=most选项:
告诉编译器将所有标准模块都动态编译为DSO模块。
如果用的是 Apache1.3, 改为–enable-shared=max就可以。
–enable-rewrite选项:支持地址重写功能,使用1.3版本的朋友请将它改为–enable-module=rewrite
–enable-module=most
用most可以将一些不常用的,不在缺省常用模块中的模块编译进来.
–enable-mods-shared=all意思是动态加载所有模块,如果去掉-shared话,是静态加载所有模块.
举例二:
执行
./configure –prefix=/server/apache/ –enable-deflate=shared –enable-headers=shared –enable-rewrite=shared –enable-mods-shared=most
–enable-mods-shared=all意思是动态加载所有模块,如果去掉-shared话,是静态加载所有模块。
–enable-mods-shared=most则是动态编译大部分常用的模块,当然,也可以有选择的加载一些模块,most意思是只包含通常用的模块,并且以动态加载模式加载. 记住apache1.xx和apache2.xx的模块编译写法是不一样的.
下面我来说说上面几种模块的作用:
deflate模块作用为让服务器实现gzip功能,可以大大降低服务器的带宽消耗。(为什么这么说,我来说给你听,比如一个大小为700KB的网页,但是通过压缩功能,我们把压缩到70KB,然后吧压缩到的70KB传到WEB客户端,实际上这不就是降低带宽的消耗吗?)但是却有个致命的缺点,那是以消耗服务器的CPU,内存资源为代价的。
注:
apache1.xx版本中这个模块名叫mod_gzip模块,在apache2.xx中才被deflate模块所替代。
headers功能如上,跟deflate配套使用。
rewrite这个模块的作用很重要,防盗链几乎全靠它了。
为了有什么这么一条,我前面还要加载那3个模块呢,其实也没什么,当时只是担心那3个模块不在“通用”范畴内,所有手动添加了。就加着吧,反正没任何问题。
这里我来解释下什么叫动态加载和静态加载?
说简单,并用打比喻的方式来解释。
好比有两个人a和m
a代表apache,m代表module
要想让a使用m的东西
一个方法是把m的东西都放到a那里去,a使用的时候就是现成的了
就是所谓的静态编译
还有一个方法,
就是告诉a, m的住址,当a要使用m的东西的时候,a去找m,然后使用
不过,这种方法要注意的一个问题就是:m必须要有实际的住址,
否则a会找不到m而产生错误的,我此文开始提到的 apachectl startssl产生
的错误就是这个原因,应该再编译好ssl才可以的.
这种方法也就是apache 的动态(DSO)编译了.
作者:南非蚂蚁
注:本文的—prefix里面的符号是两个短杆啊,有Linux基础的童鞋都知道的。这应该是WordPress的Bug,老是把后台的两个短杆在前台显示成一个长杆了。
网站随着用户访问量的增加和内容量的增加,网站的带宽会不断的增加,随之就是网站成本的增加。并且当内容量增大的时候,客户端如果带宽小,就会影响用户的体验。因此从这两方面考虑,网站的某些内容必须经过压缩之后再传给用户,然后在用户客户端进行解压,来实现双方共赢的效果。
apache的压缩要用到mod_deflate模块,该模块提供了DEFLATE输出过滤器,允许服务器在将输出内容发送到客户端以前进行压缩,以节约带宽。它的核心思想就是把文件先在服务器进行压缩,然后再进行传输,这样可以显著减少文件传输的大小。当传输完毕后,客户端游览器会重新对压缩过的内容进行解压缩。如果没特殊情况的话,所以的文本内容都应该能被gzip压缩,例如:html(php),js,css,xml,txt等。特殊情况就是像一些首页上有很多广告投放的js代码,由于需要每次加载进而进行来访信息统计,所以这些广告代码拥有者网站的js不会经过gzip压缩,
mod_deflate模块,在我们前篇部署的时候已经编译安装进去了。
那么如果没有安装,如何安装呢?并且如果不知道到是否安装了,如何查看呢?
1、mod_deflate模块检查及安装
由于apache2.2.x和2.4.x这两个版本在检查mod_deflate模块是否安装方法方法是不同的。最后,我无奈做了很多测试,下面建议大家这样来检查。
1.
[root@c64-web /]
# /usr/local/apache/bin/apachectl -M | grep deflate
2.
deflate_module (static)
#此种结果为编译安装时装的
3.
[root@c64-web /]
# /usr/local/apache/bin/apachectl -M | grep deflate
4.
deflate_module (shared)
#此种结果为DSO方式安装的
安装了的话,就可以直接进行压缩配置了,如果没有安装,下面为安装方法
a)编译时安装方法
编译的时候跟上–enable-deflate即可实现安装
b)DSO方式安装
[root@bruce filters]# /usr/local/httpd2.4.18/bin/apxs -c -i -a mod_deflate.c
如果错误: mod_deflate.c:51:18: error: zlib.h: No such file or directory
[root@bruce filters]# yum install zlib-devel
重新执行:[root@bruce filters]# /usr/local/httpd2.4.18/bin/apxs -c -i -a mod_deflate.c
[root@c64-web filters]
# ll /usr/local/apache/modules/mod_deflate.so #检查mod_deflate是否安装,成功安装这里会显示出该文件
-rwxr-xr-x 1 root root 76697 11月 5 07:50 /usr/
local
/apache/modules/mod_deflate.so
扩展:使用DSO方式安装,apxs后跟的参数详解
1.
-c 此选项表明需要执行编译操作。它首先会编译c源程序(.c)files为对应的目标代码文件(.c),然后连接这些目标代码和files中其余的目标代码文件(.c和.a),以生成动态共享对象dsofile。如果没有指定-s选项,则此输出文件名由files中的第一个文件名推测得出,也就是默认mod_name.so。
2.
-i 此选项表示需要执行安装操作,以安装一个或多个动态共享对象到服务器的modules目录。
3.
-a 此选项自动增加一个LoadModule行到httpd.conf文件中,以激活此模块,或者,如果此行已经存在,则启用之。
4.
压缩模块配置
2、配置压缩参数
apache2.4开启gzip压缩
LoadModule filter_module modules/mod_filter.so
LoadModule deflate_module modules/mod_deflate.so
<ifmodule mod_deflate.c>
DeflateCompressionLevel 9
AddOutputFilterByType DEFLATE text/html text/plain text/xml application/x-httpd-php
AddOutputFilter DEFLATE html htm xml php css js
</ifmodule>
一,top命令
1.作用
top命令用来显示执行中的程序进程,使用权限是所有用户。
2.格式
top [-] [d delay] [q] [c] [S] [s] [i] [n]
3.主要参数
d:指定更新的间隔,以秒计算。
q:没有任何延迟的更新。如果使用者有超级用户,则top命令将会以最高的优先序执行。
c:显示进程完整的路径与名称。
S:累积模式,会将己完成或消失的子行程的CPU时间累积起来。
s:安全模式。
i:不显示任何闲置(Idle)或无用(Zombie)的行程。
n:显示更新的次数,完成后将会退出top。
图1 top命令的显示
在图1中,第一行表示的项目依次为当前时间、系统启动时间、当前系统登录用户数目、平均负载。第二行显示的是所有启动的进程、目前运行的、挂起(Sleeping)的和无用(Zombie)的进程。第三行显示的是目前CPU的使用情况,包括系统占用的比例、用户使用比例、闲置(Idle)比例。第四行显示物理内存的使用情况,包括总的可以使用的内存、已用内存、空闲内存、缓冲区占用的内存。第五行显示交换分区使用情况,包括总的交换分区、使用的、空闲的和用于高速缓存的大小。第六行显示的项目最多,下面列出了详细解释。
PID(Process ID):进程标示号。
USER:进程所有者的用户名。
PR:进程的优先级别。
NI:进程的优先级别数值。
VIRT:进程占用的虚拟内存值。
RES:进程占用的物理内存值。
SHR:进程使用的共享内存值。
S:进程的状态,其中S表示休眠,R表示正在运行,Z表示僵死状态,N表示该进程优先值是负数。
%CPU:该进程占用的CPU使用率。
%MEM:该进程占用的物理内存和总内存的百分比。
TIME+:该进程启动后占用的总的CPU时间。
Command:进程启动的启动命令名称,如果这一行显示不下,进程会有一个完整的命令行。
top命令使用过程中,还可以使用一些交互的命令来完成其它参数的功能。这些命令是通过快捷键启动的。
<空格>:立刻刷新。
P:根据CPU使用大小进行排序。
T:根据时间、累计时间排序。
q:退出top命令。
m:切换显示内存信息。
t:切换显示进程和CPU状态信息。
c:切换显示命令名称和完整命令行。
M:根据使用内存大小进行排序。
W:将当前设置写入~/.toprc文件中。这是写top配置文件的推荐方法。
可以看到,top命令是一个功能十分强大的监控系统的工具,对于系统管理员而言尤其重要。但是,它的缺点是会消耗很多系统资源。
二、free命令
1.作用
free命令用来显示内存的使用情况,使用权限是所有用户。
2.格式
free [-b-k-m] [-o] [-s delay] [-t] [-V]
3.主要参数
-b -k -m:分别以字节(KB、MB)为单位显示内存使用情况。
-s delay:显示每隔多少秒数来显示一次内存使用情况。
-t:显示内存总和列。
-o:不显示缓冲区调节列。
4.应用实例
free命令是用来查看内存使用情况的主要命令。和top命令相比,它的优点是使用简单,并且只占用很少的系统资源。通过-S参数可以使用free命令不间断地监视有多少内存在使用,这样可以把它当作一个方便实时监控器。
#free -b -s5
使用这个命令后终端会连续不断地报告内存使用情况(以字节为单位),每5秒更新一次。
三、uptime 命令
在linux系统中,有一种说法,当load avarage <3 系统良好,大于5 则有严重的性能问题。注意,这个值还应当除以CPU数目。
如果load avarage=8 ,CPU=3,8/3=2.666,2.66这个值表示系统状态良好
大于5也不一定是严重性能问题,有可能是的确主机提供的服务超过了他能够提供的能力,需要扩容了。要具体看看。
另外,在linux下查看系统资源的占用情况,还有二个命令,它们分别是:vmstat 与 iostat 。有兴趣的朋友,也可以研究下。
uptime命令是用来查询linux系统负载的!
用法:直接输入uptime即可.
另外还有一个参数 -v(大写)
是用来查询版本的
[root@ localhost]$ uptime –V(大写)
procps version 3.2.7
以下显示输入uptime的信息:
04:03:58 up 10 days, 13:19, 1 user, load average: 0.54, 0.40, 0.20
1.当前时间 04:03:58
2.系统已运行的时间 10 days, 13:19
3.前在线用户 1 user
4.平均负载:0.54, 0.40, 0.20
最近1分钟、5分钟、15分钟系统的负载
何为系统负载呢?
uptime命令是用来查询linux系统负载的!
用法:直接输入uptime即可.
另外还有一个参数 -v
是用来查询版本的
[root@ localhost]$ uptime –V
procps version 3.2.7以下显示输入uptime的信息:
04:03:58 up 10 days, 13:19, 1 user, load average: 0.54, 0.40, 0.20
1.当前时间 04:03:58
2.系统已运行的时间 10 days, 13:19
3.但前在线用户 1 user
4.平均负载:0.54, 0.40, 0.20
最近1分钟、5分钟、15分钟系统的负载
何为系统负载呢?
系统平均负载被定义为在特定时间间隔内运行队列中的平均进程树。如果一个进程满足以下条件则其就会位于运行队列中:
– 它没有在等待I/O操作的结果
– 它没有主动进入等待状态(也就是没有调用’wait’)
– 没有被停止(例如:等待终止)一般来说,每个CPU内核当前活动进程数不大于3,则系统运行表现良好!当然这里说的是每个cpu内核,也就是如果你的主机是四核cpu的话,那么只要uptime最后输出的一串字符数值小于12即表示系统负载不是很严重.
当然如果达到20,那就表示当前系统负载非常严重,估计打开执行web脚本非常缓慢.
这里建议大家可以使用php探针来实现!这个可以检测空间商提供的linux主机负载情况!
★ps进程管理
[root@localhost ~]# ps -ef
UID PID PPID C STIME TTY TIME CMD
root 1 0 0 Jul02 ? 00:00:06 init [5]
root 2 1 0 Jul02 ? 00:00:00 [migration/0]
root 3 1 0 Jul02 ? 00:00:00 [ksoftirqd/0]
root 4 1 0 Jul02 ? 00:00:00 [watchdog/0]
root 5 1 0 Jul02 ? 00:00:00 [migration/1]
root 6 1 0 Jul02 ? 00:00:00 [ksoftirqd/1]
root 7 1 0 Jul02 ? 00:00:00 [watchdog/1]
root 8 1 0 Jul02 ? 00:00:00 [migration/2]
root 9 1 0 Jul02 ? 00:00:00 [ksoftirqd/2]-e : 在命令执行后显示环境
-f : 完整显示输出
1) 进程用户ID(UID)
2) 进程ID (PID)
3) 父进程ID (PPID)
4) CPU 调度情况 (C)
5) 进程启动的时间 (STIME)
6) 进程共占用CPU的时间(TIME)
7) 启动进程的命令 (CMD)★关于/proc/uptime
/proc/uptime文件里包含两个数字,如:[root@localhost ~]# cat /proc/uptime
1232468.44 1111331.67第一个数值代表系统总的启动时间,第二个数值则代表系统空闲的时间,都是用秒来表示的。如果系统里第二个数字比第一个数字还要大,则说明你的cpu是多核的,cpu0上闲了一秒, cpu1上闲了两秒,加起就是三秒。。
Apache worker & prefork 选择prefork还是worker可以在编译时使用–with-mpm=MPM参数指定,默认为prefork, prefork prefork采用预派生子进程方式,用单独的子进程来处理 不同的请求,进程之间彼此独立。在make编译…
|
-n/-c(ab参数) | cpu% | mem | RequestsperSecond |
(50,500,5,10000,50,200,200,0) | |||
100000/100 | 18.6 | 188 | 6020 |
100000/200 | 20.1 | 195 | 5892 |
100000/500 | 19.8 | 209 | 5708 |
100000/1000 | 22.2 | 218 | 6081 |
(100,500,5,10000,50,200,100,0) | |||
100000/100 | 24.5 | 240 | 6919 |
100000/200 | 23.6 | 247 | 6798 |
100000/500 | 24.6 | 254 | 6827 |
100000/1000 | 22.3 | 271 | 6114 |
(200,500,5,10000,50,200,50,0) | |||
100000/100 | 27.3 | 301 | 7781 |
100000/200 | 27.4 | 307 | 7789 |
100000/500 | 26.0 | 320 | 7141 |
100000/1000 | 21.8 | 344 | 6110 |
[root@bruce httpd2.4.18]# cd /home/bruce/tools/
[root@bruce tools]# wget http://cronolog.org/download/cronolog-1.6.2.tar.gz
[root@bruce tools]# tar zxvf cronolog-1.6.2.tar.gz
[root@bruce cronolog-1.6.2]# ./configure
[root@bruce cronolog-1.6.2]# make
[root@bruce cronolog-1.6.2]# make install
[root@bruce cronolog-1.6.2]# vi /etc/httpd2.4.18/extra/httpd-vhosts.conf
<VirtualHost *:80>
ServerAdmin 1340618494@qq.com
DocumentRoot “/usr/local/httpd2.4.18/htdocs/blog”
ServerName blog.etiantian.org
ServerAlias etiantian.org
ErrorLog “logs/blog-error_log”
#CustomLog “logs/blog-access_log” common
CustomLog “|/usr/local/sbin/cronolog /app/logs/access_www_%Y%m%d.log” combined
</VirtualHost>
[root@bruce httpd2.4.18]# ll -l /usr/local/httpd/htdocs/
total 8
drwxr-xr-x. 2 root root 4096 Jan 31 14:31 blog
-rw-r–r–. 1 root root 45 Jun 12 2007 index.html
目录755,文件644.是最安全的设定。上传文件单独设置上传服务器
三位数字代表9位的权限,分成3部分,第一部分3位表示所有者的权限,第二部分3位表示同组用户权限,第三部分3位表示其他用户权限,r代表读取权限等于4,w代表写入权限等于2,x代表执行权限等于1。
比如777,第一位7等于4+2+1,所以就是rwx,所有者有读取、写入、执行的权限,第二位7也是4+2+1,rwx,同组用户具有读取、写入、执行权限,第三位7,代表其他用户有读取、写入、执行的权限。
比如744,第一位7等于4+2+1,rwx,所有者具有读取、写入、执行权限,第二位4等于4+0+0,r–,同组用户只有读取权限、第三位4,也是r–,其他用户只有读取权限。