Apache httpd-2.4.10编译安装

系统: CentOS6.5_64
软件: httpd-2.4.10.tar.bz2
依赖: openssl-1.0.1j.tar.gz、apr-1.5.1.tar.bz2、apr-util-1.5.4.tar.bz2、pcre-devel
下载地址: http://www.openssl.org/source/            openssl
下载地址: http://httpd.apache.org/download.cgi      httpd
下载地下: http://apr.apache.org/download.cgi        apr,apr-util   是Apache的项目

pcre-devel 我们的系统安装光盘上就有。

首先我们先说明一些情况, 我们已经安装了基础开发包。

我们的系统上已经安装了apr和openssl,但是版本太低了,而它们还会被其它的软件所依赖,所以在不影响其它软件的情况下,就只能编译安装新的版本了。 而原来的httpd也会被其它的软件所依赖,不可以卸载。

1. 先把pcre-devel装上,直接yum安装。

1 yum install pcre-devel -y                  #-y 是直接安装的意思,敬我以前连-y都不知道。

2. 安装apr-1.5.1, 这个版本是我昨天下载的,现在是最新的版本。 低版本会安装不上event模块。

1
2
./configure –prefix=/usr/local/apr1.5      #只来个安装位置就可以
make && make install                        #稍等片片刻。

3. 安装apr-util-1.5.4.

1
2
3
4
./configure –prefix=/usr/local/apr1.5 –with-apr=/usr/local/apr1.5
#这个是apr的工具集,它依赖于上面的那个apr, 所以加上–with来指定我们安装apr的目录。
#跟apr安装在一个目录,现在看来没有什么问题。
make && make install

4. 安装openssl-1.0.1j

1
2
3
./config –prefix=/usr/local/openssl1j enable-shared
# enable-shared没有这一项, httpd编译会报错。  有点奇怪的是,在虚拟机上会报错,提示要加上-fPID。
make $$ make install

导出库文件,新建/etc/ld.so.conf.d/openssl1j.conf文件。    https会用到新版本的库文件。

1
2
vim /etc/ld.so.conf.d/openssl1j.conf
ldconfig

文件内容就写你的openssl安装目录下的lib的路径。 如:

1 /usr/local/openssl1j/lib

5. 安装httpd2.4.10

1
2
3
4
./configure –prefix=/usr/local/httpd2.4 –sysconfdir=/etc/httpd2.4 –enable-so –enable-ssl –enable-rewrite –enable-cgi –with-zlib –with-pcre –with-apr=/usr/local/apr1.5/ –with-apr-util=/usr/local/apr1.5/ –with-ssl=/usr/local/openssl1j/ –enable-modules=most –enable-mpms-shared=all –with-mpm=event
make && make install

#–prefix 安装目 录   –sysconfdir 配置文件目录   –enable-so 开启DSO动态装卸shared模块    –enable-ssl https的功能    –enable-rewrite 地址重写   –enable-cgi CGI脚本功能  –with-zlib 压缩功能的函数库   –with-pcre  perl库    刚才安装的软件的目录   –enable-modules=most 编译常用的模块  –enable-mpms-shared=all 所有的动态模块  后面这个默认挂载MPM模块event.

6. 杂项
(1)去httpd的安装目录看一下结果。  一切OK的话就可以下面的了。
(2) 把httpd的头文件符号链接到/usr/include      #不是必须的,怕以后有软件会用。

1 ln -s /usr/local/httpd2.4/include/ /usr/include/httpd2.4

(3) 新建/etc/profile.d/httpd2.4.sh文件,添加进PATH变量。

1
2
3
4
5
vim /etc/profile.d/httpd2.4.sh            #写入文件内容,执行一个source
source /etc/profile.d/httpd2.4.sh

文件内容:
export PATH=/usr/local/httpd2.4/bin:$PATH

注意路径要写在PATH的前头,这样bash先找到的就是新的httpd了。 不然自动打开的又会是以前的那个httpd了。

1
2
[iyunv@CentOS-Office bin]# echo $PATH
/usr/local/httpd2.4/bin:/usr/local/httpd2.4/bin:/usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin

(4)停止你的老httpd, 来看看新的可不可以运行吧。

1
2
3
4
5
6
7
[iyunv@CentOS-Office openssl1j]# httpd
AH00557: httpd: apr_sockaddr_info_get() failed for CentOS-Office
AH00558: httpd: Could not reliably determine the server’s fully qualified domain name, using 127.0.0.1. Set the ‘ServerName’ directive globally to suppress this message
[iyunv@CentOS-Office openssl1j]# httpd -v        #查看版本
Server version: Apache/2.4.10 (Unix)
Server built:   Nov 10 2014 11:10:33
[iyunv@CentOS-Office openssl1j]#


看来我这里暂时是可以运行了。 启动httpd的时候报的错,只要自已的主机名可以解析自已的IP,就没事了。 嗯,在我们这种只是做实验,做练习来说。 添加到/etc/hosts文件里是个不错的办法。
像我这里,加上一行:

172.16.2.0   CentOS-Office
就OK了。
(5) 来个服务脚本,可以用service来启动关闭。
为了避免麻烦,直接把原来的httpd的服务脚本复制一下,改吧改吧。

1
2
cp /etc/init.d/httpd /etc/init.d/httpd
vim /etc/init.d/httpd

先贴一下要改的部分, 占占版面。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
40
41 # Path to the apachectl script, server binary, and short-form for messages.
42 apachectl=/usr/sbin/apachectl            #这一行要改,我就写下边了。
apachectl=/usr/local/httpd2.4/bin/apachectl      #注意路径,看你安装在哪了。

43 httpd=${HTTPD-/usr/sbin/httpd}            #这一行也要改
httpd=/usr/local/httpd2.4/bin/httpd       #因为httpd2.4可以动态加载MPM模块。
#所以就不用运行不同MPM模块的程序,指定这一个就好。
#
44 prog=httpd
45 pidfile=${PIDFILE-/var/run/httpd/httpd.pid}   #这一行改
pidfile=/var/run/httpd2.4/httpd2.4.pid        #不是默认路径,还要改httpd配置文件,
#可以把路径改成你的安装目录下的logs目录,默认是在这里。

46 lockfile=${LOCKFILE-/var/lock/subsys/httpd}   #这一行改
lockfile=/var/lock/subsys/httpd2.4            #

47 RETVAL=0
48 STOP_TIMEOUT=${STOP_TIMEOUT-10}
49

OK 保存退出。
上边的PID文件的路径如果用默认路径,就不用下边这几行了。

1
2
3
4
5
6
[iyunv@CentOS-Office run]# mkdir httpd2.4
[iyunv@CentOS-Office run]# chmod 700 httpd2.4/        #这个文件是由第一个httpd进程创建的
#这个进程是root启动的。root的权限。
[iyunv@CentOS-Office httpd2.4]# vim /etc/httpd2.4/httpd.conf
文件里面加入这一行:
pidFile “/var/run/httpd2.4/httpd2.4.pid”

好啦, 如果现在有httpd进程在运行,  killall httpd
然后就可以启动试试啦。

1
2
[iyunv@CentOS-Office run]# service httpd start
正在启动 httpd:                                           [确定]

这样暂时就算是安装完成了.


注意: httpd2.4的脚本是httpd , 而原来httpd2.2成了httpd.bak.
我们的脚本名称还是httpd. 以前httpd2.2的时候添加过chkconfig的话,就不用设置了。
chkconfig设置:

1
2
3
4
5
6
7
[iyunv@CentOS-Office run]# chkconfig –list httpd
httpd 服务支持 chkconfig,但它在任何级别中都没有被引用(运行“chkconfig –add httpd”)
[iyunv@CentOS-Office run]# chkconfig —add httpd
[iyunv@CentOS-Office run]# chkconfig httpd on
[iyunv@CentOS-Office run]# chkconfig –list httpd
httpd              0:关闭    1:关闭    2:启用    3:启用    4:启用    5:启用    6:关闭
[iyunv@CentOS-Office run]#

vi快捷键使用大全

光标控制命令

命令 光标移动

h或^h 向左移一个字符

j或^j或^n 向下移一行

k或^p 向上移一行

l或空格 向右移一个字符

G 移到文件的最后一行

nG 移到文件的第n行

w 移到下一个字的开头

W 移到下一个字的开头,忽略标点符号

b 移到前一个字的开头

B 移到前一个字的开头,忽略标点符号

L 移到屏幕的最后一行

M 移到屏幕的中间一行

H 移到屏幕的第一行

e 移到下一个字的结尾

E 移到下一个字的结尾,忽略标点符号

( 移到句子的开头

) 移到句子的结尾

{ 移到段落的开头

} 移到下一个段落的开头

0或| 移到当前行的第一列

n| 移到当前行的第n列

^ 移到当前行的第一个非空字符

$ 移到当前行的最后一个字符

+或return 移到下一行的第一个字符

– 移到前一行的第一个非空字符

在vi中添加文本

命令 插入动作

a 在光标后插入文本

A 在当前行插入文本

i 在光标前插入文本

I 在当前行前插入文本

o 在当前行的下边插入新行

O 在当前行的上边插入新行

:r file 读入文件file内容,并插在当前行后

:nr file 读入文件file内容,并插在第n行后

escape 回到命令模式

^v char 插入时忽略char的指定意义,这是为了插入特殊字符

在vi中删除文本

命令 删除操作

x 删除光标处的字符,可以在x前加上需要删除的字符数目

nx 从当前光标处往后删除n个字符

X 删除光标前的字符,可以在X前加上需要删除的字符数目

nX 从当前光标处往前删除n个字符

dw 删至下一个字的开头

ndw 从当前光标处往后删除n个字

dG 删除行,直到文件结束

dd 删除整行

ndd 从当前行开始往后删除

db 删除光标前面的字

ndb 从当前行开始往前删除n字

:n,md 从第m行开始往前删除n行

d或d$ 从光标处删除到行尾

dcursor_command 删除至光标命令处,如dG将从当产胆行删除至文件的末尾

^h或backspace 插入时,删除前面的字符

^w 插入时,删除前面的字

修改vi文本

每个命令前面的数字表示该命令重复的次数

命令 替换操作

rchar 用char替换当前字符

R text escape 用text替换当前字符直到换下Esc键

stext escape 用text代替当前字符

S或cctext escape 用text代替整行

cwtext escape 将当前字改为text

Ctext escape 将当前行余下的改为text

cG escape 修改至文件的末尾

ccursor_cmd text escape 从当前位置处到光标命令位置处都改为text

在vi中查找与替换

命令 查找与替换操作

/text 在文件中向前查找text

?text 在文件中向后查找text

n 在同一方向重复查找

N 在相反方向重复查找

ftext 在当前行向前查找text

Ftext 在当前行向后查找text

ttext 在当前行向前查找text,并将光标定位在text的第一个字符

Ttext 在当前行向后查找text,并将光标定位在text的第一个字符

:set ic 查找时忽略大小写

:set noic 查找时对大小写敏感

:s/oldtext/newtext 用newtext替换oldtext

:m,ns/oldtext/newtext 在m行通过n,用newtext替换oldtext

& 重复最后的:s命令

:g/text1/s/text2/text3 查找包含text1的行,用text3替换text2

:g/text/command 在所有包含text的行运行command所表示的命令

:v/text/command 在所有不包含text的行运行command所表示的命令

在vi中复制文本

命令 复制操作

yy 将当前行的内容放入临时缓冲区

nyy 将n行的内容放入临时缓冲区

p 将临时缓冲区中的文本放入光标后

P 将临时缓冲区中的文本放入光标前

“(a-z)nyy 复制n行放入名字为圆括号内的可命名缓冲区,省略n表示当前行

“(a-z)ndd 删除n行放入名字为圆括号内的可命名缓冲区,省略n表示当前行

“(a-z)p 将名字为圆括号的可命名缓冲区的内容放入当前行后

“(a-z)P 将名字为圆括号的可命名缓冲区的内容放入当前行前

在vi中撤消与重复

命令 撤消操作

u 撤消最后一次修改

U 撤消当前行的所有修改

. 重复最后一次修改

, 以相反的方向重复前面的f、F、t或T查找命令

; 重复前面的f、F、t或T查找命令

“np 取回最后第n次的删除(缓冲区中存有一定次数的删除内容,一般为9)

n 重复前面的/或?查找命令

N 以相反方向重复前面的/或?命令

保存文本和退出vi

命令 保存和/或退出操作

:w 保存文件但不退出vi

:w file 将修改保存在file中但不退出vi

:wq或ZZ或:x 保存文件并退出vi

:q! 不保存文件,退出vi

:e! 放弃所有修改,从上次保存文件开始再编辑

vi中的选项

选项 作用

:set all 打印所有选项

:set nooption 关闭option选项

:set nu 每行前打印行号

:set showmode 显示是输入模式还是替换模式

:set noic 查找时忽略大小写

:set list 显示制表符(^I)和行尾符号

:set ts=8 为文本输入设置tab stops

:set window=n 设置文本窗口显示n行

vi的状态

选项 作用

:.= 打印当前行的行号

:= 打印文件中的行数

^g 显示文件名、当前的行号、文件的总行数和文件位置的百分比

:l 使用字母”l”来显示许多的特殊字符,如制表符和换行符

在文本中定位段落和放置标记

选项 作用

{ 在第一列插入{来定义一个段落

[[ 回到段落的开头处

]] 向前移到下一个段落的开头处

m(a-z) 用一个字母来标记当前位置,如用mz表示标记z

‘(a-z) 将光标移动到指定的标记,如用’z表示移动到z

在vi中连接行

选项 作用

J 将下一行连接到当前行的末尾

nJ 连接后面n行

光标放置与屏幕调整

选项 作用

H 将光标移动到屏幕的顶行

nH 将光标移动到屏幕顶行下的第n行

M 将光标移动到屏幕的中间

L 将光标移动到屏幕的底行

nL 将光标移动到屏幕底行上的第n行

^e(ctrl+e) 将屏幕上滚一行

^y 将屏幕下滚一行

^u 将屏幕上滚半页

^d 将屏幕下滚半页

^b 将屏幕上滚一页

^f 将屏幕下滚一页

^l 重绘屏幕

z-return 将当前行置为屏幕的顶行

nz-return 将当前行下的第n行置为屏幕的顶行

z. 将当前行置为屏幕的中央

nz. 将当前行上的第n行置为屏幕的中央

z- 将当前行置为屏幕的底行

nz- 将当前行上的第n行置为屏幕的底行

vi中的shell转义命令

选项 作用

:!command 执行shell的command命令,如:!ls

:!! 执行前一个shell命令

:r!command 读取command命令的输入并插入,如:r!ls会先执行ls,然后读入内容

:w!command 将当前已编辑文件作为command命令的标准输入并执行command命令,如:w!grep all

:cd directory 将当前工作目录更改为directory所表示的目录

:sh 将启动一个子shell,使用^d(ctrl+d)返回vi

:so file 在shell程序file中读入和执行命令

vi中的宏与缩写

(避免使用控制键和符号,不要使用字符K、V、g、q、v、*、=和功能键)

选项 作用

:map key command_seq 定义一个键来运行command_seq,如:map e ea,无论什么时候都可以e移到一个字的末尾来追加文本

:map 在状态行显示所有已定义的宏

:umap key 删除该键的宏

:ab string1 string2 定义一个缩写,使得当插入string1时,用string2替换string1。当要插入文本时,键入string1然后按Esc键,系统就插入了string2

:ab 显示所有缩写

:una string 取消string的缩写

在vi中缩进文本

选项 作用

^i(ctrl+i)或tab 插入文本时,插入移动的宽度,移动宽度是事先定义好的

:set ai 打开自动缩进

:set sw=n 将移动宽度设置为n个字符

n<< 使n行都向左移动一个宽度

n>> 使n行都向右移动一个宽度,例如3>>就将接下来的三行每行都向右移动一个移动宽度

1.编辑模式: 插入/替换 (按INSERT键切换)

2.[ESC] 指令模式

3.输入模式 将在指令模式下输入 a

新增(a,A)

a:从光标所在位置后面开始新增资料,光标后的资料随新增资料向后移动。

A:从光标所在列最后面的地方开始新增资料。

插入(i,I)

i:从光标所在位置前面开始插入资料,光标后的资料随新增资料向后移动。

I:从光标所在列的第一个非空白字元前面开始插入资料。

开始(o,O)

o:在光标所在列下新增一列并进入输入模式。

O:在光标所在列上方新增一列并进入输入模式。

4.存盘/退出

[ESC] :wq //存盘退出

:w! //存盘继续

:q //退出 (源文件未被编辑过可用)

:q! //强制退出

5.删除与改修

[ESC] x //删除光标所在字符

dd //删除光标所在列。

r //修改光标所在字元,r后接着要修正的字符。

R //进入取替换状态。

s //删除光标所在字元,并进入输入模式。

S //删除光标所在的列,并进入输入模式。

6.恢复

[ESC] u //可以恢复被删除的文字。

U //可以恢复光标所在列的所有改变。

本地虚拟机centos6.5安装后,配置网络

[root@iZ288l7u84mZ ~]# setup

注:只添加dns

[root@iZ288l7u84mZ ~]# /etc/init.d/network  restart

[root@iZ288l7u84mZ ~]# vi /etc/sysconfig/network-scripts/ifcfg-eth0

NAT模式:

DEVICE=eth0
TYPE=Ethernet
ONBOOT=yes
NM_CONTROLLED=yes
BOOTPROTO=dhcp
DNS1=8.8.8.8
USERCTL=no
PEERDNS=yes
IPV6INIT=no

桥接模式:

DEVICE=eth0
TYPE=Ethernet
ONBOOT=yes
NM_CONTROLLED=yes
BOOTPROTO=none
DNS1=8.8.8.8
USERCTL=no
IPV6INIT=no
HWADDR=00:0c:29:56:4b:21
IPADDR=192.168.1.105
NETMASK=255.255.255.0
GATEWAY=192.168.1.1

关于mysql 5.5和5.6编译安装

mysql 5.5和5.6需要使用cmake,跟以往的mysql编译有了一点区别(以往的是configure,make,make install三部曲)

一共需要的软件如下:

软件 版本 安装
cmake make yum install cmake
make 3.75以上 yum install make
Perl yum install perl
bison 1.75 and 2.1(1.875不能用) yum install bison-devel
gcc-c++ 4.2.1或以上 yum install gcc-c++
ncurses yum install ncurses-devel

备注:centos 6.5支持很好,基本上只要安装以下的就不会有问题,关闭selinux

参考: http://dev.mysql.com/doc/refman/5.6/en/source-installation.html


编译安装

一般编译脚本:

#!/bin/bash

cd mysql源码目录

cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/usr/local/mysql/data -DSYSCONFDIR=/etc -DWITH_MYISAM_STORAGE_ENGINE=1 -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_MEMORY_STORAGE_ENGINE=1 -DWITH_ARCHIVE_STORAGE_ENGINE=1 -DWITH_PARTITION_STORAGE_ENGINE=1 -DWITH_BLACKHOLE_STORAGE_ENGINE=1 -DWITH_READLINE=1 -DENABLE_DOWNLOADS=1 -DENABLED_LOCAL_INFILE=1 -DMYSQL_UNIX_ADDR=/var/lib/mysql/mysql.sock -DMYSQL_TCP_PORT=3306 -DEXTRA_CHARSETS=all -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci

make

make install

cp ./support-files/mysql.server /etc/init.d/mysql
chmod +x /etc/init.d/mysql

保存为bash脚本文件然后执行即可。

备注:

1.常用的参数就是以上的,其他的

参考:
http://dev.mysql.com/doc/refman/5.6/en/source-configuration-options.html

2.出现提示

Googletest was not found. gtest-based unit tests will be disabled. You can run cmake . -DENABLE_DOWNLOADS=1 to automatically download and build required components from source.
If you are inside a firewall, you may need to use an http proxy: export http_proxy=http://foo.bar.com:80
Configuring done
Generating done
Build files have been written to: /root/soft/mysql-5.6.4-m7

googletest,一个很著名的C++单元测试框架,简称gtest,有丰富的文档可以参考。

所以暂时我们不需要,加上参数-DENABLE_DOWNLOADS=0 就不会提示的,不过即便是提示了,但因为configure done了,所以也没关系。并且cmake的配置缓存会存放在当前文件夹的CMakeCache.txt文件,需要重新编译就只需要删掉这个文件即可

3.mysql 5.5的安装包里面没有my.cnf参考文件(在源码包的support-files目录下),5.6的包和5.1以前的包里面都有,非常怪异- -,而且不同的文件(my-small.cnf, my-medium.cnf, my-large.cnf, and my-huge.cnf)分别对应不同使用规模等级的mysql配置,以下是文件使用的优先级,从上到下排序,当第一层检查到没有文件的时候就会去搜索第 二层的文件,如此类推.

文件路径 用途 备注
/etc/my.cnf 全局使用
/etc/mysql/my.cnf 全局使用
SYSCONFDIR/my.cnf Global options
$MYSQL_HOME/my.cnf 服务器配置指定位置 这个就是编译参数-DSYSCONFDIR的对应位置
defaults-extra-file 由–defaults-extra-file=path这个配置决定
~/.my.cnf 用户特别配置
~/.mylogin.cnf 登录配置

详情参考:http://dev.mysql.com/doc/refman/5.6/en/option-files.html

至此编译安装完成.


初始化数据库

因为安装完成后mysql并没有数据库,主要是没有名字为mysql的数据库,这个数据库会存放mysql账号,权限等一系列的信息,是中枢,是数据库的大脑,所以需要初始化,

进入mysql的安装目录并执行初始化脚本

 cd /app/mysql/scripts
 ./mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data

cp support-files/my-default.cnf /etc/my.cnf
chkconfig --add mysql
chkconfig mysql on
service mysql start

1.错误提示

./mysql_install_db --user=mysql

FATAL ERROR: Could not find ./bin/my_print_defaults

If you compiled from source, you need to run 'make install' to
copy the software into the correct location ready for operation.

If you are using a binary release, you must either be at the top
level of the extracted archive, or pass the --basedir option
pointing to that location.

需要有basedir和datadir

2.出现warning

WARNING: The host 'testyuan' could not be looked up with resolveip.
This probably means that your libc libraries are not 100 % compatible
with this binary MySQL version. The MySQL daemon, mysqld, should work
normally with the exception that host name resolving will not work.
This means that you should use IP addresses instead of hostnames

需要使用主机名,如果用不了话就只能用ip,并且可能有些libc库不能100%兼容

就加个主机名的hosts就好了,但只是warning,影响级别低.


启动数据库并设置root密码

可以安装提示使用mysqld_safe 启动,然后修改密码

mysqladmin -u root password 'new-password'

也可以使用之前配置好的/etc/init.d/mysql来启动,然后修改密码

service mysql start

也可以在启动后使用mysql_secure_installation 来修改密码

这些命令大部分都在mysql的安装目录,按需使用即可.


检查

检查是否可以连接

/app/mysql/bin/mysql -uroot -p
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.6.4-m7 Source distribution

Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql>

trouble-shooting

1.编译php使用mysql的时候报错

/app/soft/php-5.3.28/sapi/cli/php: error while loading shared libraries: libmysqlclient.so.18: cannot open shared object file: No such file or directory
make: *** [ext/phar/phar.php] 错误 127
Generating phar.phar
/app/soft/php-5.3.28/sapi/cli/php: error while loading shared libraries: libmysqlclient.so.18: cannot open shared object file: No such file or directory
make: *** [ext/phar/phar.phar] 错误 127

按照提示检查这个文件发现少了库libmysqlclient.so.18, 如提示所述确实找不到了

ldd /app/soft/php-5.3.28/sapi/cli/php
 linux-vdso.so.1 =>  (0x00007fff0ef81000)
 libcrypt.so.1 => /lib64/libcrypt.so.1 (0x0000003d28a00000)
 libz.so.1 => /lib64/libz.so.1 (0x0000003d25e00000)
 libedit.so.0 => /usr/lib64/libedit.so.0 (0x00000037b5800000)
 libncurses.so.5 => /lib64/libncurses.so.5 (0x00000037b7000000)
 libmysqlclient.so.18 => not found
 libgmp.so.3 => /usr/lib64/libgmp.so.3 (0x0000003d03800000)
 libbz2.so.1 => /lib64/libbz2.so.1 (0x0000003d2a200000)
 libpcre.so.0 => /lib64/libpcre.so.0 (0x000000376e000000)
 librt.so.1 => /lib64/librt.so.1 (0x0000003d26200000)
 libm.so.6 => /lib64/libm.so.6 (0x0000003d26600000)
 libdl.so.2 => /lib64/libdl.so.2 (0x0000003d25200000)
 libnsl.so.1 => /lib64/libnsl.so.1 (0x0000003774000000)
 libxml2.so.2 => /usr/lib64/libxml2.so.2 (0x0000003dc3e00000)
 libssl.so.10 => /usr/lib64/libssl.so.10 (0x0000003d03400000)
 libcrypto.so.10 => /usr/lib64/libcrypto.so.10 (0x0000003d03000000)
 libc.so.6 => /lib64/libc.so.6 (0x0000003d25600000)
 libresolv.so.2 => /lib64/libresolv.so.2 (0x0000003d27200000)
 libfreebl3.so => /usr/lib64/libfreebl3.so (0x0000003d28600000)
 libtinfo.so.5 => /lib64/libtinfo.so.5 (0x0000003d2ca00000)
 libpthread.so.0 => /lib64/libpthread.so.0 (0x0000003d25a00000)
 /lib64/ld-linux-x86-64.so.2 (0x0000003d24e00000)
 libgssapi_krb5.so.2 => /lib64/libgssapi_krb5.so.2 (0x0000003d2c600000)
 libkrb5.so.3 => /lib64/libkrb5.so.3 (0x0000003d2a600000)
 libcom_err.so.2 => /lib64/libcom_err.so.2 (0x0000003d29200000)
 libk5crypto.so.3 => /lib64/libk5crypto.so.3 (0x0000003d2ae00000)
 libkrb5support.so.0 => /lib64/libkrb5support.so.0 (0x0000003d2b200000)
 libkeyutils.so.1 => /lib64/libkeyutils.so.1 (0x0000003d2aa00000)

最后多方检查发现,这个库是必须存在于/lib64或者/usr/lib64的,无法通过配置文件编译改变位置,而mysql 5.5 后会将这个库生成在安装目录里面,所以做了一个软连接,将他们沟通起来

 ln -s /app/mysql564/lib/* /lib64/

2.mysql 5.5 启动时候报错

MySql server startup error 'The server quit without updating PID file 

google了很多发现5.5都有这个问题,5.6却没有
参考:http://stackoverflow.com/questions/4963171/mysql-server-startup-error-the-server-quit-without-updating-pid-file/25683395#25683395 发现有很多解决办法,不过对于我的问题并没有作用,最后发现mysql文档有提到这个http://dev.mysql.com/doc/refman/5.6/en/charset-server.html,当然我也补充到里面去了。

在my.cnf里面加入参数

 skip-character-set-client-handshake
 collation_server=utf8_unicode_ci
 character_set_server=utf8

编译安装cmake

编译安装cmake
下载cmake源码包cmake-2.8.4.tar.gz,mv到/usr/local/src目录下
[root@localhost ~]# cd /usr/local/src/
[root@localhost src]# tar xzvf cmake-2.8.7.tar.gz
[root@localhost src]# cd cmake-2.8.7
[root@localhost cmake-2.8.4]# ./bootstrap
———————————————
CMake 2.8.4, Copyright 2000-2009 Kitware, Inc.
———————————————
Error when bootstrapping CMake:
Cannot find appropriate C compiler on this system.
Please specify one using environment variable CC.
See cmake_bootstrap.log for compilers attempted.
———————————————
Log of errors: /usr/local/src/cmake-2.8.4/Bootstrap.cmk/cmake_bootstrap.log
———————————————
报错:缺少C的编译器。
安装gcc编译器
可以从Linux系统的安装盘中安装,也可以简单地用yum安装
[root@localhost ~]# yum install gcc
继续cmake的安装
[root@localhost cmake-2.8.4]# ./bootstrap
———————————————
CMake 2.8.4, Copyright 2000-2009 Kitware, Inc.
C compiler on this system is: cc
———————————————
Error when bootstrapping CMake:
Cannot find appropriate C++ compiler on this system.
Please specify one using environment variable CXX.
See cmake_bootstrap.log for compilers attempted.
———————————————
Log of errors: /usr/local/src/cmake-2.8.4/Bootstrap.cmk/cmake_bootstrap.log
———————————————
再次报错:缺少C++编译器。
安装gcc-c++编译器
同样可以从Linux系统的安装盘中安装,或者简单地用yum安装
[root@localhost ~]# yum install gcc-c++
重复上面的操作
[root@localhost cmake-2.8.4]# ./bootstrap
没有报错后,编译安装
[root@localhost cmake-2.8.4]# gmake
[root@localhost cmake-2.8.4]# gmake install
开始正式安装Mysql
====================================================================
二. 安装 cmake
cd /usr/local/src
tar zxvf cmake-2.8.7.tar.gz
cd cmake-2.8.7
./bootstrap
gmake
gmake install

检查安装 which cmake看结果可知安装是否正确

yum轻松简单安装配置GCC等

由于RedHat 没有注册,所有不能使用它自身的源进行更新,于是使用yum install gcc的时候会出现This system is not registered with RHN,所以我们可以通过更换源来进行相关更新:

更改yum的源,即更换/etc/yum.repos.d/rhel-debuginfo.repo 这个文件。
步骤一、进入/etc/yum.repos.d/目录,
步骤二、终端中输入wget http://www.linuxidc.com/files/2011/05/06/CentOS-Base.repo
或者vault.centos.org/4.2/CentOS-Base.repo、
或者使用网易163的yum源:
http://mirrors.163.com/.help/centos.html:
CentOS5  http://mirrors.163.com/.help/CentOS5-Base-163.repo
CentOS6  http://mirrors.163.com/.help/CentOS6-Base-163.repo

即可在此目录下得到CentOS-Base.repo文件,这是centos的源文件,
步骤三、只需将其重命名为rhel-debuginfo.repo即可,以前的文件做个备份(先把以前的mv重命名一下)。
步骤四、
yum -y install gcc
以前在实验中安装gcc等类库rpm包的时候不是说少这个就是缺那个依赖,虚拟机里面丢个光盘进去慢慢找一个个安装,结果也可以,就是累死你。

php服务器环境搭建系列(一)mysql的安装–mysql-5.1.62等

[root@bruce ~]# groupadd mysql
[root@bruce ~]# useradd -s /sbin/nologin -g mysql -M mysql

注:1.  -s /sbin/nologin 表示禁止该用户登录,加强安全

2. -g mysql 指定属于mysql组

3.-M表示不创建用户家目录

[root@bruce home]# mkdir -p /home/bruce/tools
[root@bruce home]# cd /home/bruce/tools/

[root@bruce tools]# wget http://mirrors.sohu.com/mysql/MySQL-5.6/mysql-5.6.27.tar.gz

[root@bruce tools]# tar zxvf mysql-5.6.27.tar.gz