nginx httpd 编译安装
软件包常见的安装方式主要分为:1,使用make等工具对源码进行编译安装.2使用rpm管理工具安装下载好的软件包.3使用yum工具傻瓜是安装.
软件包的组成部分:
系统默认二进制程序:/bin, /sbin, /usr/bin, /usr/sbin, /usr/local/bin, /usr/local/sbin #假如:安装nginx二进制程序, /usr/local/nginx/ 库文件:系统共享库文件/lib, /usr/lib, /lib64, /usr/lib64, /usr/local/lib, /usr/local/lib64 #假如:安装nginx软件单独使用的库, /usr/local/nginx/ #开发用头文件,运行用运行库 #/etc/ld.so.conf, /etc/ld.so.conf.d/*.conf 修改系统查找库文件的路径 #ldd命令 ldd `which cat` 查看cat命令所依赖的共享库 配置文件:/etc 帮助文件: man文件, info文件, README, INSTALL, ChangeLog #需要注意的是COMMAND --help是写在程序本身输出的,程序的组成部分,
一,编译安装:通过下载开发者的源码包对源码进行定制功能的安装方式.这种安装方式优点可以避免安装一些不需要的功能,以及根据自己的需求对软件进行一些个性化设置.缺点也很明显,不能自动解决依赖关系,对初学Linux者难度较高,下面就以安装nginx和httpd为例来复习一下安装中遇到的一些问题:
(一)nginx的编译安装:
1,首先安装编译安装中必须使用到的自动编译工具autoconf,automake,gcc等;
autoconf: 检查编译环境是否编译需求,并定义当前程序编译时启用哪个特性或功能,以及安装路径的定义等等;会根据Makefile.in文件生成makefile文件
automake: Makefile.in文件, 用于结合configure脚本生成makefile文件 makefile文件是make命令的配置文件
gcc:c语言程序编译器
2,安装nginx所依赖的软件,通过yum安装在系统中生成了信息可以解决安装时nginx所需要的依赖关系;
3,创建nginx用户和组,使用系统用户和组
4,找到nginx官网下载源码包,我这里使用的是国内镜像站
5,解压源码包,运行安装脚本,在这里可以根据自己的需求进行定制,为了演示效果这里使用了--prefix指定软件路径 --user属主 --group属组 --error错误日志 --ssl模块ssl等,详细参考官方的说明文档可以定制更加个性化功能的nginx
6,创建error.log等文件
7,找到nginx执行文件并启动
到这里安装文件就基本完成了,需要总结的是在编译安装中要留意输出的信息提示,最好截图备份以免时间久了以后忘记安装信息造成配置错误
(二)axel和httpd的编译安装
1,axel是一个非常强大,被称为Linux版"迅雷",所以先安装了一个axel.因为是做实验,所以就默认安装了.其中遇到一个问题:wget去获取https网站的时候被拒绝,因为今天不是讨论wget.所以简单记住加上--no-check-certificae --http-user=username --http-password=password这几个选项参数就可以解决!
3,官方网站有httpd安装环境的说明,安装httpd之前由于需要apr和apr-util支持,这里提供apr的下载链接,比较坑的是我使用yum安装的apr-1.3.9在安装过程中仍然提示缺少apr;
4,下载了apr1.5.1安装
5,apr-util需要注意的必须要手动指定apr的安装位置,不然会提示安装不成功,
6,又是好大一个坑,在安装完apr和apr-util以后编译httpd有提示"libtoolT"的错误,通过搜索得知要修改apr安装脚本configure里的代码,删除重装一次apr和apr-util
7,终于可以成功执行了,还是需要手动指定--with-apr=/usr/local/apr/bin/apr-1-config,不然还是会提示找不到apr
二,Rpm主要是对已经编译过的安装包进行安装和管理,主要功能有:安装,卸载,查询,升级,校验,数据库管理.
1,安装
rpm -i /path/to/rpm_package ... #安装指定路径下的包,也可以用--install -v #显示详细信息,也可以加-vv和-vvv -h #显示安装进度 --test #仅测试,不执行安装. --nodeps #忽略依赖关系 -ivh #也可以用--replacepkgs 原来的配置文件不会被覆盖,新安装的配置文件将会重命名为以.rpmnew为后缀的文件;
2,卸载
rpm -e package_name #如果卸载被其它程序所依赖的包: --nodeps #忽略依赖关系
3,查询
rpm -qa #查询所有已经安装的包 rpm -qi package_name #查询包的描述信息 rpm -q package_name #查询某单个包是否安装 rpm -ql package_name #查询包安装之后在当前系统生成文件列表 rpm -qf /path/to/somefile #查询某文件是哪个包安装生成的 rpm -qd package_name #查询包安装后生成的帮助文档 rpm -qc package_name #查询包安装后生成的配置文件 rpm -qpl /path/to/package_file #查询安装后会生成的文件列表 rpm -qpi /path/to/package_file #查询其简单描述信息 rpm -q --scripts package_name #查询包相关的脚本, 脚本有四类:preinstall #安装前脚本 postinstall #安装后脚本 preuninstall #卸载前脚本 postuninstall #卸载后脚本
4,升级
rpm -U #安装并升级 rpm -F #如果未安装软件包则不升级 rpm {-Uvh|-Fvh} /path/to/package_file #常用的组合方式 --force #强行安装 --nodeps #忽略依赖关系
5,校验:检查包安装后生成的文件是否被修改过;
rpm -V package_name
S file Size differs #文件大小 M Mode differs (includes permissions and file type) #权限 5 digest (formerly MD5 sum) differs #效验码 D Device major/minor number mismatch #设备号 L readLink(2) path mismatch #路径 U User ownership differs #属主 G Group ownership differs #属组 T mTime differs #时间戳 P caPabilities differ #提供的能力
6,检验来源合法性和软件包完整性
rpm --import /path/to/gpg-key-file #导入制作者的gpg公钥 rpm -K /path/to/package_file #检查gpg公钥 --nosignature #不检查来源合法性 --nodigest #不检查完整性
7,rpm数据库
rpm --initdb #初始化,如果事先不存在一个数据库,则新建 rpm --rebuilddb #重建,直接重建数据库,会覆盖原有的库
三,程序包管理器的前端工具:yum.通过已知的文件服务器共享rpm包,自动解决软件包之间依赖关系进行安装的软件包管理工具.ftp, http, nfs, file四种支持的文件服务器.要使用yum管理应用程序,首先得配置其可用的y软件包仓库,保存在配置文件中 /etc/yum.conf主配置文件和 /etc/yum.repos.d/*.repo各不同仓库配置文件.
仓库配置文件格式
[repo_ID] name= #以String字段显示仓库名称 baseurl= #仓库的访问路径 enabled={1|0} #仓库是否启用启用为1,禁用为2 gpgcheck={1|0} #是否启动gpg检查 gpgkey= #公钥文件(可以在本地,也可是服务器端路径) cost= #定义此仓库开销,默认为1000
yum子命令
yum repolist [all|enabled|disabled] #列出所有可用yum repo yum clean [all|packages|metadata|expire-cache|rpmdb|plugins] #清理缓存 yum list [all|installed|available] #列出rpm包 yum info package_name #列出包的描述信息 yum grouplist #列出所有包组 yum groupinfo "package_group_name" #显示包组信息 yum install package_name ... #安装指定的程序包 yum reinstall package_name ... #重新安装指定的程序包 yum check-update #检查可升级的包 yum update package_name ... #升级指定的程序包 要升级到指定版本:yum downgrade package_name #降级 yum erase|remove package_name ... #卸载某个包,依赖于这个包的软件也会被卸载 yum whatprovides|provides /path/to/somefile #查询某文件是由哪个包安装生成的 yum groupinstall "group_name" #安装指定的包组 yum groupremove "group_name" #卸载指定的包组 yum install /path/to/package_file #安装本地包,不指定路径则到配置文件的仓库中去寻找对应软件包 --nogpgcheck #手动禁止检查来源及完整性 yum install /tmp/zsh-2.3.1-2.el6.x86_64.rpm --nogpgcheck
提示:跟开发相关的包组使用
CentOS 5,常用的开发包组为“Development Tools”和“Development Libraries”
CentOS 6,常用的开发包组为“Development Tools”和“Server Platform Development”
Desktop Platform Development:有图形程序时需安装此组;
Development Tools
转载于:https://blog.51cto.com/yesir/1549511