1.简介
软件的安装是linux学习时的重中之重,*nux上重要思维哲
学组合若干小功能进而成为一个可用可维护的系统平台.那么在
操作系统构建完成之时,除非内核等支持系统必需软件之外,可
拓展可维护的任务都是要交与管理员完成,这里面包括了基本的
软件安装.那今天我们就总结归纳一下在linux上软件安装的方式
方法.
2.分类
a) 包管理工具
rpm(redhet package manager),deb 与 yum 前端管理
工具
b) 源码形式
提供src源码,常见 tar.gz,tar.xz,tar.zip 通常需要在
机器上先编译之后才能去安装
c) 二进制格式
已经编译成为二进制格式,可以在没有编译环境下的机器上运行.
当然这种形式随着包管理工具的成熟被逐渐消亡,并不在本文讨
论的范围内.
3.使用
a) 包管理工具
rpm包含类redhat系完整的一套关于软件的安装维护的可行性
方案,所有rpm包遵循事实标准,这样避免了我们在使用时的成本
.rpm包的命名也有一定规则,例如 mysql-5.1.66-2.el6_3.
x86_64.rpm产品名称-产品版本号-rpm包版本号-适合操作系
统-计算架构.rpm
i) 安装/升级/重装
rpm -i/U/Fvh mysql-5.1.66-2.el6_3.x86_64.rpm i install 安装包(可接网络地址) v verbose 安装详情 h hash sign #表示的安装进度 2%一个#号 --nodeps 忽略包之间的依赖关系ii) 移除
rpm -e mysql e erase 移除当前包 --nodeps 移除包忽略包之间的依赖关系iii) 查询
rpm -q mysql q query 查询包是否以安装 qa query all 查询所有安装的包 qd query document 查询安装过后的文档信息 如man信息 qi query information 安装后查询包信息 包括包名,版本 ,大小组别信息,url,license,url,描述信息等等 qc query configure 安装后配置文件所在位置 ql query list 安装所产生所有文件列表 # p 参数可以与之前参数配合 qpa qpi等等
iv) 校验
我们维护的绝大数机器都是生产工具,不容懈怠.所以对于软件
的管理不容出现纰漏,那么对于互联网内容我们只能怀着批判
的情怀来进行使用.这里就需要做包完整校验与身份校验,用来
确保我们所使用的包都是没有病毒后门程序的
rpm --import key 导入包制作者公钥 rpm -K mysql-5.1.66-2.el6_3.x86_64.rpm b) yum前端管理工具
这是一个将前面的所有rpm包汇总成库在客户端查找库并进行软
件管理的工具,将易用性进行大大提高,方便用户以多种形式进行
rpm包的管理操作.常见的方式http,ftp,nfs,file等等.当然
前提是配置好 /etc/yum.repos.d/*.repo 的参数.
*.repo参数一览
[media] repoid唯一 name=media name名称自定 baseurl=file:///media/协议路径 enabled=0 是否启用该库 gpgcheck=1 是否进行身份审查 gpgkey=file:///media/RPM-GPG-KEY-CentOS-6 KEY cost=1000 使用库代价(多库) # yum 常用命令一览
c) 源码安装
# 0 首先去内网ftp服务器中下载nginx的源码包,当然你也可以
去 nginx官网这里download最新的nginx源码
lftp ftp://172.16.0.1/pub/Sources/sources/nginx/ get nginx-1.4.2.tar.gz bye# 1 解压缩nginx
tar -xf nginx-1.4.2.tar.gz rm -rf nginx-1.4.2.tar.gz# 2 在编译nginx之前,先安装nginx的依赖包pcre-devel
yum -y install pcre-devel# 3 完成pcre-delel后,指定nginx编译bin目录及conf文件目录
./configure --prefix=/usr/local/nginx --conf-path=/usr/local/nginx/nginx.conf# 4 编译并安装nginx
make && make install# 5 启动nginx服务
/usr/local/nginx/sbin/nginx# 6 查看端口状态,此时应该看到80端口的出现
netstat -tnl | grep ":80"# 7 命令测试及查看文件已证安装状态
wget http://localhost stat ./index.html# 00 到此为止nginx的安装告一段落,我们可以再处理一些其他事情,
在 # 5 步骤启动nginx服务的时候,大家可能会发现启动目录过长,
并且无法去停止nginx,这些问题继续困扰着我们.我们接下来继续处
理一下这些问题.
# 01 目录过长解决反感,其实我们希望使用最短命令实现效果,win32
与linux目标一致,都会有环境变量,这里便是在修改nginx的环境变量,
使得用户在任意目录都可以直接敲出nginx命令
vim /etc/profile.d/apache.sh PATH=/usr/local/nginx/sbin:$PATH .source /etc/profile.d/apache.sh # 重新读取# 02 搭建好了web服务器,我们希望其他人也能访问这里,于是我们
需要在linux的防火墙上给它留个出口(ps: 大家可以想象互联网就是
一个大版图,每一台计算机都是一座城池,某天其他城邦的使者来访
问我,那我必须给它留一个入口)
vim /etc/sysconfig/iptables -I INPUT -p tcp --dport 80 -j ACCEPT service iptables restart# 03 开机启动(大家可能会发现刚才配置好的nginx,在机器重启了
之后不能再用了,检查发现重启后80端口的监听已失效 # 6 操作,
这些我们需要自己动手去完成一个简单的脚本,使其能够开机启动,
当然一般情况下nginx会自带这个脚本,我们来去熟悉一下过程 :)
vim /etc/init.d/nginx# 03-a 重中之重 linux与win32一样也会有服务这个说法
# 这里的意思是告诉机器,当前这是一个服务脚本,将来需要添加到
# 服务列表时起效果
# chkconfig: 2345 55 25
# description: nginx service
# chkconfig: 2345 55 25 # description: nginx service# 03-b 首先定义了一些基本的变量
# 包括 路径
PATH=$PATH # 软件名
# sbin路径
SBINPATH=/usr/local/nginx/sbin/$NAME# 配置文件路径
CONFIGFILE=/usr/local/nginx/$NAME.conf# pid文件(linux守护进程文件,简言之线程编号,此文件存在证明nginx
# 启动了,如果它不在了,nginx可能也不能访问)
PIDFILE=/usr/local/nginx/logs/$NAME.pid# 03-d 判断sbin文件与匹配文件是否存在,否则提示
[ -e "$SBINPATH" ] || echo -n "$SBINPATH No such file or directory" [ -e "$CONFIGFILE" ] || exit -n "$CONFIGFILE No such file or directory"# 03-e 启动nginx命令 nginx start
start() { $SBINPATH -c $CONFIGFILE || echo -n "nginx already running" }# 03-f 关闭nginx命令 nginx stop
stop() { kill -INT `cat $PIDFILE` || echo -n "nginx not running" }# 03-g 判断用户输入执行不同的命令
case "$1" in start ) echo -n "$NAME Starting..." start ;; stop ) echo -n "$NAME Stopping..." stop ;; restart ) echo -n "$NAME Restarting..." stop start ;; * ) echo "Usage: /etc/init.d/$NAME {start | stop | restart }" &> /dev/null exit 1 ;; esac exit 0# 完整代码 startup.sh
#!/bin/bash # PATH=$PATH NAME=nginx SBINPATH=/usr/local/nginx/sbin/$NAME CONFIGFILE=/usr/local/nginx/$NAME.conf PIDFILE=/usr/local/nginx/logs/$NAME.pid [ -e "$SBINPATH" ] || echo -n "$SBINPATH No such file or directory" [ -e "$CONFIGFILE" ] || exit -n "$CONFIGFILE No such file or directory" start() { $SBINPATH -c $CONFIGFILE || echo -n "nginx already running" } stop() { kill -INT `cat $PIDFILE` || echo -n "nginx not running" } case "$1" in start ) echo -n "$NAME Starting..." start ;; stop ) echo -n "$NAME Stopping..." stop ;; restart ) echo -n "$NAME Restarting..." stop start ;; * ) echo "Usage: /etc/init.d/$NAME {start | stop | restart }" &> /dev/null exit 1 ;; esac exit 0# 03-h 退出vim编辑器 , 为当前脚本赋予执行权限
chmod +x /etc/init.d/nginx# 03-i 在服务列表中添加nginx服务,如果刚才 #03-a 的重中之重
你没有听取意见的话这里是没有办法完成的 :)
chkconfig --add nginx# 03-j 讲nginx的服务添加的开机选项的345级别
# 原谅我在最后激动的时刻再啰嗦一下,善哉善哉 :)
# chkconfig --level 一共分为 0-6 7个级别
# 这个过程与linux的启动非常有关系,可以参考
# http://apprectice.blog.51cto.com/2214645/1362564
# 345 基本可以对应其上的加载过程
chkconfig --level 345 nginx on# 03-k 这时候你可以随心所欲的 nginx { start | stop | restart }
# 停止也不会有问题 :)
nginx start d) bin文件安装
bin文件的安装非常简单,因为它是shell与rpm的结合体,一般情况
基本不用额外配置,直接执行bin就可以了.