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语言程序编译器

wKioL1QJ2puiBp3dAAJmaYlxdKQ020.jpg

 

        2,安装nginx所依赖的软件,通过yum安装在系统中生成了信息可以解决安装时nginx所需要的依赖关系;

wKioL1QJ2yLRczvoAABogZyOZwI738.jpg

 

        3,创建nginx用户和组,使用系统用户和组

wKioL1QJ24PAsQOsAABCw-zW3Qw843.jpg

 

        4,找到nginx官网下载源码包,我这里使用的是国内镜像站

wKiom1QJ27TSIBU-AABIRg0pzKM716.jpg

 

        5,解压源码包,运行安装脚本,在这里可以根据自己的需求进行定制,为了演示效果这里使用了--prefix指定软件路径 --user属主 --group属组 --error错误日志 --ssl模块ssl等,详细参考官方的说明文档可以定制更加个性化功能的nginx

wKioL1QJ3APg0wyTAAFoOMoxlqQ491.jpg

 

        6,创建error.log等文件

wKiom1QJ3VCBVMYmAACBFx4a3BU619.jpg

 

        7,找到nginx执行文件并启动

wKioL1QJ3Y-R1wcoAABSmyVIoSI114.jpg

 

        到这里安装文件就基本完成了,需要总结的是在编译安装中要留意输出的信息提示,最好截图备份以免时间久了以后忘记安装信息造成配置错误wKioL1QJ3n-yfwjFAAH0T8v7F78926.jpg

 

 

    (二)axel和httpd的编译安装

        1,axel是一个非常强大,被称为Linux版"迅雷",所以先安装了一个axel.因为是做实验,所以就默认安装了.其中遇到一个问题:wget去获取https网站的时候被拒绝,因为今天不是讨论wget.所以简单记住加上--no-check-certificae --http-user=username --http-password=password这几个选项参数就可以解决!

wKiom1QJ4CzgT0owAAUfQFRZ_rI914.jpg

 

         2试用axelwKiom1QJ5nrBgHSxAABNIQ5WbPk330.jpg

 

         3,官方网站有httpd安装环境的说明,安装httpd之前由于需要apr和apr-util支持,这里提供apr的下载链接,比较坑的是我使用yum安装的apr-1.3.9在安装过程中仍然提示缺少apr;wKiom1QJ4afQfLCgAA0lZQn5mGQ292.jpg

 

         4,下载了apr1.5.1安装

wKiom1QJ40iyv1eJAACmKW_6g8E777.jpg

 

         5,apr-util需要注意的必须要手动指定apr的安装位置,不然会提示安装不成功,

wKioL1QJ47ayZ_DNAAC7TOvMl68792.jpg    wKiom1QJ5S7SuQKZAAAumiIARnI657.jpg

 

        6,又是好大一个坑,在安装完apr和apr-util以后编译httpd有提示"libtoolT"的错误,通过搜索得知要修改apr安装脚本configure里的代码,删除重装一次apr和apr-util

wKiom1QJ5e_hPFHwAALQi-22yQk723.jpg

 

        7,终于可以成功执行了,还是需要手动指定--with-apr=/usr/local/apr/bin/apr-1-config,不然还是会提示找不到apr

wKioL1QJ5tvAU970AACAGy-XZC0829.jpg

        

 二,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
 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章