1.软件包管理 #
- RPM是RedHat Package Manager(RedHat软件包管理工具)类似Windows里面的"添加/删除程序"
1.1 软件包的分类 #
- 源码包(需要经过编译,把人所编写的源代码编译成机器语言才能运行)
- 优点
- 开源免费
- 可以自由配置功能
- 编译安装更适合自己系统,更稳定
- 卸载方便
- 缺点
- 安装过程比较复杂
- 编译过程比较长
- 安装过程一旦报错,非常难以排查
- 优点
- 二进制包(把源代码包经过编译生成0/1二进制,PRM包、系统默认的安装包)
- 优点
- 包管理系统比较简单,只要通过简单的命令就可以实现包的安装、升级、查询和卸载
- 安装速度比源码包快很多
- 缺点
- 经过编译则不能看到源代码
- 功能选择不灵活
- 依赖性比较麻烦
- 优点
- 脚本安装包(就是把复杂的安装过程写成了脚本,可以一键安装,本质上安装的还是源代码包和二进制包)
- 优点是安装简单
- 缺点是失去了自定义性
1.2 RPM命令管理 #
mkdir /mnt/cdrom
mount /dev/sr0 /mnt/cdrom
cd /mnt/cdrom/Packages1.3 RPM包命名原则 #
- httpd-2.2.15-15.el6.centos.1.i686.rpm
- httpd软件包名
- 2.2.15软件版本
- 15 软件发布的次数
- el6.centos 适合的Linux平台
- i686 适合的硬件平台
- rpm rpm 包的扩展名
1.4 RPM包依赖性 #
- 树形依赖 a->b->c
- 环形依赖 a->b->c->a
- 模块依赖 http://www.rpmfind.net
rpm -ivh mysql-connector-odbc-5.1.5r1144-7.el6.i686.rpm
rpm -ivh unixODBC-2.2.14-11.el6.i686.rpm
rpm -ivh mysql-connector-odbc-5.1.5r1144-7.el6.i686.rpm 1.5 包全名 #
- 如果操作的是没有安装过的软件包时,使用包全名,而且要注意路径正确。
- 如果是要操作已经安装的软件包时,要使用包名,是搜索
/var/lib/rpm中的数据库
1.6 RPM安装 #
- rpm -ivh 包全名
- 选项
- -i(install) 安装
- -v(verbose) 显示详细安装停下
- -h(hash) 显示进度
- --nodeps 不检测依赖性,正式环境不能使用
1.7 RPM安装 #
rpm -ivh httpd-2.2.15-15.el6.centos.1.i686.rpm
rpm -ivh httpd-devel-2.2.15-15.el6.centos.1.i686.rpm
rpm -ivh httpd-manual-2.2.15-15.el6.centos.1.noarch.rpm rpm -ivh httpd-2.2.15-15.el6.centos.1.i686.rpm
rpm -ivh apr-util-ldap-1.3.9-3.el6_0.1.i686.rpm
rpm -ivh apr-util-1.3.9-3.el6_0.1.i686.rpm
rpm -ivh apr-1.3.9-3.el6_1.2.i686.rpm
rpm -ivh apr-util-1.3.9-3.el6_0.1.i686.rpm
rpm -ivh apr-util-ldap-1.3.9-3.el6_0.1.i686.rpm
rpm -ivh httpd-2.2.15-15.el6.centos.1.i686.rpm
rpm -ivh httpd-tools-2.2.15-15.el6.centos.1.i686.rpm
rpm -ivh httpd-2.2.15-15.el6.centos.1.i686.rpm
rpm -ivh httpd-devel-2.2.15-15.el6.centos.1.i686.rpm
rpm -ivh httpd-manual-2.2.15-15.el6.centos.1.noarch.rpm
rpm -ivh httpd-devel-2.2.15-15.el6.centos.1.i686.rpm
rpm -ivh apr-devel-1.3.9-3.el6_1.2.i686.rpm
rpm -ivh apr-util-devel-1.3.9-3.el6_0.1.i686.rpm
rpm -ivh expat-devel-2.0.1-11.el6_2.i686.rpm
rpm -ivh openldap-devel-2.4.23-26.el6.i686.rpm
rpm -ivh cyrus-sasl-devel-2.1.23-13.el6.i686.rpm
rpm -ivh httpd-devel-2.2.15-15.el6.centos.1.i686.rpm
rpm -ivh apr-util-devel-1.3.9-3.el6_0.1.i686.rpm
rpm -ivh openldap-devel-2.4.23-26.el6.i686.rpm
rpm -ivh httpd-devel-2.2.15-15.el6.centos.1.i686.rpm
rpm -ivh apr-util-devel-1.3.9-3.el6_0.1.i686.rpm
rpm -ivh httpd-devel-2.2.15-15.el6.centos.1.i686.rpm 1.8 RPM包升级 #
- rpm -Uvh 包全名
- -U(upgrade) 升级
- 如果包没有安装过,则和安装是同等效果
rpm -ivh httpd-devel-2.2.15-15.el6.centos.1.i686.rpm1.9 卸载 #
- rpm -e 包名
- -e(erase) 卸载
- --nodeps不检查依赖性
- 安装的时候先安装被依赖包,再安装依赖包
- 卸载的时候先卸载依赖包,再卸载被依赖包
rpm -e httpd1.10 查询 #
| 命令 | 参数 | 含义 |
|---|---|---|
| rpm -q 包名 | -q(query) 查询 | 查询包是否安装 |
| rpm -qa 包名 | -a(all) 查询 | 查询所有已经安装的RPM包 |
| rpm -qi 包名 | -i(information) | 查询软件信息 |
| rpm -qip 包名 | -p(package) | 查询未安装包的信息 |
| rpm -ql 包名 | -l(list) -p(package) | 查询安装包都安装了哪些文件 |
| rpm -qf 文件名 | -f(file) | 查询某个文件属于哪个包 |
| rpm -qR 包名 | -R(requires) -p(package) | 查询软件名的依赖性 |
默认安装位置
| 命令 | 参数 |
|---|---|
| /etc/ | 配置文件的安装目录 |
| /usr/bin | 可执行的命令安装目录 |
| /usr/lib | 程序所使用的函数库保存位置 |
| /usr/share/doc | 基本的软件使用手册保存位置 |
| /usr/share/man | 帮助文件保存位置 |
1.11 校验 #
| 命令 | 参数 |
|---|---|
| rpm -V 包名 |
/etc/httpd/conf/httpd.conf
验证信息内容
| 参数 | 含义 |
|---|---|
| S(Size) | 文件大小是否改变 |
| M(Mode) | 文件的类型或者文件的权限(rwx)是否被改变 |
| 5(Md5) | 文件MD5校验和是否改变(文件内容是否改变) |
| D(Device) | 设备的主从代码是否改变 |
| L(Location) | 文件路径是否改变 |
| U(User) | 文件的属主(所有者)是否改变 |
| G(Group) | 文件的属组是否改变 |
| T(Time) | 文件的修改时间是否改变 |
每个设备号又分为主设备号和次设备号。主设备号用来区分不同种类的设备,而次设备号用来区分同一类型的多个设备
# ll /dev | grep sda
brw-rw----. 1 root disk 8, 0 4月 6 17:50 sda
brw-rw----. 1 root disk 8, 1 4月 6 17:50 sda1
brw-rw----. 1 root disk 8, 2 4月 6 17:50 sda2| 参数 | 含义 |
|---|---|
| c(config file) | 配置文件 |
| d(documentation) | 普通文档 |
| g(ghost file) | 文件根本不应该属于这个软件包 |
| L(license file) | 授权文件 |
| r(readme) | 描述文件 |
1.12 文件提取 #
- rpm2cpio 包全名 | cpio -idv .文件绝对路径
- rpm2cpid 将rpm包转换为cpio格式的命令
- cpio 是一个标准工具,用于创建软件档案和从档案文件中提取文件
rpm2cpio httpd-2.2.15-15.el6.centos.1.i686.rpm | cpio -idv /etc/httpd/conf/httpd.conf- cpio 选项 < [文件|设备]
- 选项
- -i copy-in模式,还原
- -d 还原时自动新建目录
- -v 显示还原过程
rpm2cpio /mnt/cdrom/Packages/httpd-2.2.15-15.el6.centos.1.i686.rpm | cpio -idv ./etc/httpd/conf/httpd.conf
cp ./etc/httpd/conf/httpd.conf /etc/httpd/conf/httpd.conf3. YUM在线管理 #
- yum = Yellow dog Updater, Modified主要功能是更方便的添加/删除/更新RPM包.它能自动解决包的倚赖性问题.
- 这是rpm包的在线管理命令
- 将所有的软件名放到官方服务器上,当进行YUM在线安装时,可以自动解决依赖性问题
- /etc/yum.repos.d/
- CentOS-Base.repo
- CentOS-Debuginfo.repo
- CentOS-Media.repo
- CentOS-Vault.repo
3.1 CentOS-Base.repo #
[base]
name=CentOS-$releasever - Base
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os
#baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6| 字段 | 含义 |
|---|---|
| base | 容器名称,一定要放在[]中 |
| name | 容器说明,可以自己随便写 |
| mirrorlist | 镜像站点,可以注释掉 |
| baseurl | YUM源服务器的地址,默认是CentOS官方的YUM源 |
| enable | 此容器是否生效 不写或者写成enable=1表示生效,写成enable=0表示不生效 |
| gpgcheck | 如果是1就是指 RPM的数字证书生效,如果是0则表示不生效 |
| gpgkey | 数字证书的公钥文件保存位置,不用改 |
4. 光盘搭建YUM源 #
4.1 挂载光盘 #
mkdir /mnt/cdrom
mount /dev/cdrom /mnt/cdrom4.2 失效在线yum源 #
cd /etc/yum.repos.d
mv CentOS-Base.repo CentOS-Base.repo.bak查看YUM源里有哪些安装包
yum listCentOS-Media.repo
[c6-media]
name=CentOS-$releasever - Media
baseurl=file:///mnt/cdrom
gpgcheck=1
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-65. YUM命令 #
- yum安装只需要写包名即可
| 命令 | 含义 |
|---|---|
| yum list | 查询所有可用软件包列表 |
| yum search 关键字 | 搜索服务器上所有和关键字相关的包 |
| yum -y install 包名 | -y 自动回答yes install安装 |
| yum -y update 包名 | -y 自动回答yes update升级 |
| yum -y remove 包名 | -y 自动回答yes remove 卸载,卸载有依赖性,所以尽量不要卸载 |
| yum grouplist | 列出所有可用的软件组列表 |
| yum groupinstall 软件组名 | 安装指定的组,组名可以用grouplist查询 |
| yum groupremove 软件组名 | 卸载指定软件组 |
yum -y install gcc 安装C语言安装包
yum install update httpd 升级httpdLANG=en_US
yum grouplist
yum groupinstall "Chinese Support"
LANG=zh_CN.UTF-84. 源码包管理 #
4.1 安装方式不同 #
- RPM包的安装位置是由软件包作者决定的,不需要指定安装位置
- RPM包安装的服务可以使用系统服务管理命令(service)来管理
service httpd start
/etc/init.d/httpd start- 源码包安装在指定的位置当中,一般是
/usr/local/软件名 - 源码包安装的服务不能被服务命令管理,因为没有安装到默认路径中,所以只能用绝对路径进行服务的管理
- httpd和apache关系,简单理解就是apache2以上版本改称为httpd
4.2 安装源码包 #
4.2.1 安装准备 #
- 安装C语言编译器
yum install -y gcc
4.2.2 安装注意事项 #
- 源码包一般放在
/usr/local/src目录下 - 软件的安装位置
/usr/local,相当于program files目录 - 如何确定安装过程是否正常
- 安装过程能正常中止
- 出现
error warning等提示
4.2.3 安装过程 #
4.2.3.1 下载 #
wget http://archive.apache.org/dist/httpd/httpd-2.2.11.tar.gz4.2.3.2 解压 #
tar -xzvf httpd-2.2.11.tar.gz4.2.3.3 进入解压目录 #
cd httpd-2.2.11.tar.gz4.2.3.4 configure #
软件配置与检查
- 定义需要的功能选项
- 检测系统环境是否符合安装要求
- 把定义好的功能选项和检测系统环境的信息都写入
Makefile文件中,用于后续的编辑
./configure --prefix=/usr/local/httpd4.2.3.5 编译和安装 #
- 把源码编译成二进制文件
- make
- make clean 一旦编译报错可以执行这一步进行清理
- make install
make
make install 安装帮助文件位置
cat /usr/local/src/httpd-2.2.11/INSTALL 这里可以查看安装说明
cat /var/www/html/index.html 这是用YUM或者说rpm安装的httpd
cat /usr/local/httpd/htdocs/index.html 这是用源码安装的httpd4.2.3.6 源码包的卸载 #
- 不需要卸载命令,直接删除安装目录即可,不会遗留任何垃圾文件
5. 脚本安装包 #
- 脚本包安装的也是RPM包和源码包
- 优点
- 简单快速方便
- 缺点
- 不能定义安装的版本
- 不能定义需要的功能
5.1 nginx #
- nginx是一款自由的、开源的、高性能的HTTP服务器和反向代理服务器
- nginx可以作为一个HTTP服务器进行网站的发布处理,另外nginx可以作为反向代理进行负载均衡的实现
| 功能 | Apache/httpd | Nginx |
|---|---|---|
| Proxy代理 | 非常好 | 非常好 |
| Rewriter | 好 | 非常好 |
| Fcgi | 不好 | 好 |
| 热部署 | 不支持 | 支持 |
| 系统压力比较 | 很大 | 很小 |
| 稳定性 | 好 | 非常好 |
| 安全性 | 好 | 一般 |
| 技术支持 | 非常好 | 很少 |
| 静态文件处理 | 一般 | 非常好 |
| Vhosts虚拟主机 | 支持 | 不支持 |
| 反向代理 | 一般 | 非常好 |
| Session sticky | 支持 | 不支持 |
5.2 安装lnmp #
下载安装脚本
wget http://soft.vpser.net/lnmp/lnmp1.5.tar.gz -cO lnmp1.5.tar.gz && tar zxf lnmp1.5.tar.gz && cd lnmp1.5 && ./install.sh lnmp