背景说明
组件安装步骤是基本通用的,大部分组件安装都需要经过一些必须的流程,才能成为有效的服务。
本文以Linux(CentOS 7)系统为基础介绍,其他操作系统原理一样,只是部分操作的具体执行方式需要根据操作系统调整。
根据经验总结,组件安装一般都需要进行几个操作,可以参考,在安装一些新组件时,提供基本的操作指导,也可以根据本文来学习、识别一些组件安装教程的完整性与有效性。
附图:RPM默认安装路径
组件安装操作步骤一般包括如下,根据不同组件的安装目标,部分操作可以省略。
一、获取组件可执行程序库,包括主程序,此为组件的基本文件
特别关注:CPU架构
请后去安装包之前,确认Linux服务器的CPU架构,如果服务器架构与组件不符,则无法运行
#arm架构 [app@ecs-4bcb-0003 ~]$ arch aarch64 [app@ecs-4bcb-0003 ~]$ uname -a Linux ecs-4bcb-0003.novalocal 4.19.90-23.8.v2101.ky10.aarch64 #1 SMP Mon May 17 17:07:38 CST 2021 aarch64 aarch64 aarch64 GNU/Linux [app@ecs-4bcb-0003 ~]$ cat /proc/version Linux version 4.19.90-23.8.v2101.ky10.aarch64 (KYLINSOFT@localhost.localdomain) (gcc version 7.3.0 (GCC)) #1 SMP Mon May 17 17:07:38 CST 2021 #x86架构 [app@host-10-169-3-54 ~]$ arch x86_64 [app@host-10-169-3-54 ~]$ uname -a Linux host-10-169-3-54 3.10.0-957.el7.x86_64 #1 SMP Thu Nov 8 23:39:32 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux [app@host-10-169-3-54 ~]$ cat /proc/version Linux version 3.10.0-957.el7.x86_64 (mockbuild@kbuilder.bsys.centos.org) (gcc version 4.8.5 20150623 (Red Hat 4.8.5-36) (GCC) ) #1 SMP Thu Nov 8 23:39:32 UTC 2018
获取该程序库可以通过以下3种方式
- 二进制安装
- 可以下载组件源码编译、安装,一般为make && make install方式,可以指定安装路径
- 可以下载官方提供的已编译程序包
- rpm安装
- 下载组件的相关rpm包,执行安装。
- rpm包可以是多个独立的模块包,也可以是打包一起的捆绑包(bundle标识)。
- 需要注意,独立包安装时,可能需要关注组件依赖顺序来决定安装顺序。 安装路径见上文附图。
- yum安装
- 安装过程中需要网络,实时下载组件。
- yum是rpm软件包管理器,从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包,避免了手动安装的麻烦(寻找资源、下载;放到指定目录安装;处理依赖关系并下载依赖关系的包进行安装)。
- yum安装需要配置yum源,即组件仓库,Linux发行商以及一些企业、机构都会提供相应的yum源。 不同的yum源提供的组件分类以及组件版本都不相同,所以使用yum方式安装组件需要确认当前使用的yum源中该组件的版本(yum search xxx,然后 yum info xxx 或者 yum list xxx --showduplicates 显示所有版本)。 也可以下载安装该组件的yum仓库更新包(也是rpm格式),在当前yum源中更新组件,然后通过yum方式安装。
- 需要注意,组件的yum仓库更新包可能会包含多个版本,更新yum仓库后,需要确认当前启用的组件版本(yum search xxx,然后 yum info xxx 或者 yum list xxx --showduplicates 显示所有版本),如果非目标版本,则需要修改 /etc/yum.repos.d/xxx.repo文件,设置目标版本的enabled=1,其他版本enabled=0,同时只能启用一个版本。 安装路径与rpm相同,见上文附图
特别关注:安装组件前,请确认系统中未安装或已卸载该组件,否则可能由于依赖组件版本问题导致安装失败。可以通过以下2种方式确认
- rpm方式
- 检查是否已安装 rpm -qa | grep xxx
- 卸载 rpm -e xxx,默认会检查依赖关系,如果被其他组件依赖,则卸载时被,也可以指定 --nodeps跳过检查依赖
- yum方式
- 检查是否已安装 yum list installed | grep xxx
- 卸载 yum remove xxx,默认会自动卸载依赖该组件的其他组件
二、安装系统服务
将安装的应用程序作为系统服务运行,可以使用系统服务指令操作,提高效率
服务操作指令支持一下2种方式,其中 .service可以省略。
- servcie xxx.service start/stop/restart,
- systemctl start/stop/restart xxx.service、
特别关注:systemctl为目前大部分Linux系统默认服务管理方式,service命令会自动重定向到systemctl命令执行。
默认规范下,创建 .service 脚本文件,保存在 /usr/lib/systemd/system/、/usr/lib/systemd/user/ 目录下。
.service脚本文件可以由安装程序生成并部署,也可以手动生成并部署,且该文件可以修改。
三、主程序加入到环境变量
默认主程序只能在程序当前目录下执行,即在任意目录下只能通过主程序的绝对路径执行,或cd到主程序所在目录,通过./xxx执行,如果想要在任意目录下直接通过xxx执行,则需要设置环境变量。
系统默认环境变量目录如下,以下路径已经默认加载到系统Path
/bin : commandsin this dir are all system installed user commands 系统预装系统程序,纯净系统中默认安装,所有用户都可以使用 例如:cat、cp、df、gzip、kill、ls、mkdir、more、rm、tar等。 /sbin: commands in this dir are all system installed super user commands 系统预装系统程序,纯净系统中默认安装,只有超级用户可以使用 例如:fdisk、ifconfig、 reboot、 shutdown等。 /usr/bin: user commands for applications 用户安装系统程序,纯净系统中非默认安装,所有用户都可以使用,后期安装 例如c++、g++、gcc、du、free、gzip、less、locale、make、man、passwd、wget等。 /usr/sbin:super user commands for applications 用户安装系统程序,纯净系统中非默认安装,只有超级用户可以使用,后期安装 例如:dhcpd、httpd、netconfig、swap、tcpd、tcpdump等。 /usr/local/bin 用户安装第三方程序,所有用户都可以使用 例如:MySQL /usr/local/sbin 用户安装第三方程序,只有超级用户可以使用 例如:nginx
所以设置环境变量可以通过以下方法
- 将程序目录添加到系统Path(修改 /etc/profile 文件,然后 source /etc/profile 或重启 生效)
- 将主程序拷贝到以上系统默认环境变量目录
- 在以上系统默认环境变量目录中创建主程序的软连接
四、配置文件
配置文件加载方式一般为2种,不同组件设计的方式不同。
- 默认配置文件,组件会定义一些配置文件加载路径,以及各路径的加载优先级,启动时无需指定加载文件,程序自动查找。
- 启动时指定配置文件,即在启动命令中直接指定加载文件的路径,程序将优先加载指定的配置文件。
特别关注:配置文件中指定的所有路径,请在启动前确保已存在,否则启动异常
五、运行用户
除特殊组件要求外,如MySQL,一般都可以使用默认用户启动,如root,用户指定方式包括配置文件指定 以及 启动命令指定,将根据实际组件特性决定。
六、开机启动
七、服务启动运行
特别关注:系统默认启用了SELinux内核模块(安全子系统),所以在服务绑定/监听某些端口时,可能会提示无绑定端口的权限,此时需要禁用SELinux,修改 /etc/selinux/config 文件并设置SELINUX=disabled
Can't start server: Bind on TCP/IP port: Permission denied
特别关注:selinux设置完成需要重启生效,如果当前不方便重启,可以执行 setenforce 0 临时关闭selinux,下次重启是配置再生效
特别关注:系统默认启用了防火墙,请在启动服务前关闭防火墙,或在防火墙中添加服务端口