Linux安装软件的步骤

版权声明:本文为博主原创文章,版权归博主所有。如转载,请注明出处! https://blog.csdn.net/javandroid/article/details/81041266

一.安装前了解

1.yum源

更新163yum源


#查看系统已安装的yum源
rpm -qa|grep yum  或cd /etc/yum.repos.d/

#备份原有源(加个后缀即可)
cd /etc/yum.repos.d/
mv CentOS-Base.repo CentOS-Base.repo.backup

#下载源(例如,163yum源)
wget http://mirrors.163.com/.help/CentOS6-Base-163.repo

#清除现有yum源
yum clean all
#创建缓存
yum makecache

#更新yum源
yum update

2.查看软件是否安装

因为linux安装软件的方式比较多,所以没有一个通用的办法能查到某些软件是否安装。总结起来就是这样几类:
①.rpm包安装的,可以用rpm -qa查看

rpm -qa | grep 软件或者包的名字

②以deb包安装的,可以用dpkg -l能查看

dpkg -l | grep 软件或者包的名字

③yum方法安装的,可以用yum list installed查看

yum list installed | grep 软件或者包的名字

④如果是以源码包自己编译安装的,例如.tar.gz或者tar.bz2形式的,这个只能看可执行文件是否存在了。
如果是以root用户安装的,可执行程序通常都在/sbin/usr/bin目录下。

3.安装软件的方式

软件安装方式有两种。一种是使用linux系统自带的软件包安装命令自动执行下载并安装。不同版本的linux安装软件所使用的命令不同。

# debian/ubuntu
apt-get install xx

# fedora/redhat/centOS
yum install xx

另一种是以源码编译的方式来安装软件,步骤如下

#下载
wget 地址
#解压
tar -zxvf xxx.tar.gz
#设置编译选项
./configure 配置项
#编译
make
#安装
make install

4.安装位置

如果使用linux自带的包管理工具安装,则通常会有默认的安装路径。

如果使用源码编译的方式安装,当使用默认编译选项时,一般的软件会安装在/usr/local下,部分软件二进制文件会安装在/usr/bin/usr/local/bin目录下,对应的头文件会安装到/usr/include,软件帮助文档会安装到/usr/local/share目录下。
而通过./configure可以指定各种编译选项,其中就可指定安装位置。安装软件完毕后运行软件需要使用绝对路径或配置环境变量,也就是需要把当前软件二进制文件目录(bin目录)加入到系统的环境变量PATH中。

另外,需要说明的是我们使用源码安装时,无论是使用默认位置还是手动指定,通常会选择安装在usr/local下,也有人选择安装在/opt下,但这篇文章提到,usr/local和/opt已经被废弃,建议我们直接用rpm包管理工具来安装。

文章4.1节末尾有这样一段话

扫描二维码关注公众号,回复: 4133187 查看本文章

You may think is a bad idea to break your Software (as a whole) in many pieces, instead of keeping it all under a self-contained directory. But a package system (RPM) has a database that manages it all for you in a very professional way, taking care of configuration files, directories etc. And if you spread your Software using the FHS, beyond the user friendliness, you’ll bring an intuitive way to the sysadmin configure it, and work better with performance and security.

大概意思是:有人会认为使用rpm方式安装会将一个软件的数据、配置等拆分分别放置在不同目录下,不便于管理,但RPM内置的数据库会很专业的进行管理,并有一些优点。

个人认为,选择哪种方式安装,是仁者见仁智者见智的事。

二、源码编译安装

1.指定编译选项

由于软件要依赖系统的底层库资源,软件配置主要功能为检查当前系统软硬件环境,确定当前系统是否满足当前软件需要的软件资源。配置命令一般如下:

./configure --prefix=/usr/local/redis

其中--prefix用来指定安装路径,编译好的二进制文件和其他文件将被安装到此处。

不同的软件configure 脚本都提供丰富的选项,在执行完成后,系统会根据执行的选项和系统的配置生成一个编译规则文件Makefile。要查看当前软件配置时支持哪些参数,可以使用./configure --help命令。

2.编译源码

在配置好编译选项后,系统已经生成了编译软件需要的Makefile,然后利用这些Makefile进行编译。编译软件时执行make命令,make 会根据Makefile 文件来生成目标文件,如二进制程序等。

#编译
make
#安装
make install

3、设置用户和用户组,及权限

我们经常需要启动mysql、elasticsearch、nginx服务,但又不希望以root的方式启动(有时候是强制性的,比如elasticsearch就禁止使用root账号启动服务),这时候就需要为它们创建单独的服务账号,同时为了安全性的考虑,一般都要禁止这些账号登录Shell

#这里以nginx为例

# 创建nginx组。
groupadd nginx

# 创建nginx用户,并加入到nginx组。
# -s(shell):指定用户登入后所使用的shell。 
# -g:指定用户所属的群组。 
# -M:表示不创建用户登录目录。
useradd nginx -M -s /sbin/nologin -g nginx  

# 设置nginx目录及子目录的所属的用户和组
chown -R nginx:nginx nginx

# 设置nginx目录及子目录操作权限(读、写、可执行)【可以对不同子目录分别设置不同的权限。更安全!!!】
chmod -R 755 nginx

4、在防火墙中开放端口

在centos6中

# (centos6使用iptables)

# 开放80端口
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
# 查看服务的自启情况
chkconfig --list tomcat
# 重启防火墙
service iptables restart

## 其它操作
# 取消开放80端口
iptables -D INPUT -p tcp --dport 80 -j ACCEPT
# 会提示
service iptables
# 查看防火墙状态
service iptables status
# 启动防火墙
service iptables start
# 停止防火墙
service iptables stop
# 重启防火墙
service iptables restart
# 永久关闭防火墙
chkconfig iptables off
# 永久关闭后重启
chkconfig iptables on

在centos7中

# (centos7使用firewall)

# 查看所有开放的端口
firewall-cmd --zone=public --list-ports
# 开放端口(--permanent永久生效,没有此参数重启后失效)
firewall-cmd --zone=public --add-port=80/tcp --permanent    
# 【重新载入】
firewall-cmd --reload
# 查看
firewall-cmd --zone=public --query-port=80/tcp
# 取消开放的端口
firewall-cmd --zone=public --remove-port=80/tcp --permanent

## 其它操作
# 启动防火墙
systemctl start firewalld
# 关闭防火墙 
systemctl stop firewalld
# 查看状态防火墙状态
systemctl status firewalld 
# 开机启用防火墙 
systemctl enable firewalld
# 开机禁用防火墙  
systemctl disable firewalld

5、设置开机启动

centos6下
方式一:以脚本的方式开机启动(/etc/rc.d/rc.local文件)(不建议)
这种方式是把启动程序的命令添加到/etc/rc.d/rc.local文件中。

步骤如下:

vim /etc/rc.d/rc.local

添加启动命令

export JAVA_HOME=/usr/local/jdk
/usr/local/tomcat/bin/startup.sh start

设置脚本的可执行权限

chmod + x /etc/rc.d/rc.local

需要说明的是:官方已经不建议直接使用该文件了,打开该文件查看头部注释部分就知道了。下面是我的翻译。

该文件仅作为向下兼容的目的来使用。强烈建议创建自己的systed服务或者udev规则来运行脚本,而不是直接使用该脚本文件。
与先前版本相比,由于在引导期间并行执行,此脚本不会在所有其他服务之后运行。
请注意,必须运行'chmod + x /etc/rc.d/rc.local'以确保该脚本将在引导期间执行

方式二:以服务的方式开机启动(/etc/rc.d/init.d目录)
把写好的启动脚本添加到目录/etc/rc.d/init.d/,然后使用命令chkconfig设置开机启动。

vim /etc/init.d/tomcat

编辑内容

#!/bin/bash 
# 
# tomcat startup script for the Tomcat server 
# 
# chkconfig: 345 80 20 
# description: start the tomcat deamon 
# 
# Source function library 
. /etc/rc.d/init.d/functions 
prog=tomcat 
JAVA_HOME=/usr/local/jdk         # 根据自己的路径改写JAVA_HOME
export JAVA_HOME 
CATALANA_HOME=/usr/local/tomcat  # 根据自己的路径改写CATALANA_HOME
export CATALINA_HOME 
case "$1" in 
start) 
  echo "Starting Tomcat..." 
  $CATALANA_HOME/bin/startup.sh 
  ;; 
stop) 
  echo "Stopping Tomcat..." 
  $CATALANA_HOME/bin/shutdown.sh 
  ;; 
restart) 
  echo "Stopping Tomcat..." 
  $CATALANA_HOME/bin/shutdown.sh 
  sleep 2 
  echo 
  echo "Starting Tomcat..." 
  $CATALANA_HOME/bin/startup.sh 
  ;; 
*) 
  echo "Usage: $prog {start|stop|restart}" 
  ;; 
esac 
exit 0

设置权限

# 设置脚本权限(用户:rwx,组内用户:rx,其它:rx)
cd /etc/init.d/
chmod 755 tomcat

或者直接chmod 755 /etc/init.d/tomcat

设置开机启动

## 【验证一下脚本是否配置成功】
# 启动服务
service tomcat start
# 停止服务
service tomcat stop   
# 重启服务
service tomcat restart  

## 【设置开机启动】
# 注册服务
chkconfig --add tomcat
# 设置开机启动
chkconfig tomcat on
# 查看服务开机启动状态
chkconfig --list tomcat
# 重启
reboot

centos7下
centos7开始以systemctl来替代早期版本中的chkconfig和service形式,以实现统一的管理。该systemctl脚本存放在/usr/lib/systemd/下,有系统服务和用户服务之分。

  • 系统服务:开机不登陆就能运行的程序。正适合我们通常以无登录权限的非root用户来启动软件的场景。
    /usr/lib/systemd/system/
  • 用户服务:
    /usr/lib/systemd/user/

以tomcat为例

vim  /usr/lib/systemd/system/tomcat.service

然后进行编辑

[Unit]
Description=Tomcat
After=syslog.target network.target remote-fs.target nss-lookup.target

[Service]
Type=forking
PIDFile=/usr/local/tomcat/tomcat.pid
ExecStart=/usr/local/tomcat/bin/startup.sh
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID

User=tomcat
Group=tomcat
PrivateTmp=true

[Install]
WantedBy=multi-user.target

编辑完,保存退出

# 重新加载配置文件
systemctl daemon-reload

##【验证下服务能否配置成功】
# 启动服务
systemctl start tomcat
# 关闭服务
systemctl stop tomcat
# 重启服务
systemctl restart tomcat
# 显示服务的状态
systemctl status tomcat

##【设置开机启动】
# 设置开机启动
systemctl enable tomcat
# 查看服务是否开机启动
systemctl is-enabled tomcat
# 重启试试
reboot

## 其它操作
# 禁止开机启动
systemctl disable tomcat
# 查看已启动的服务列表
systemctl list-unit-files|grep enabled
# 查看启动失败的服务列表
systemctl --failed

猜你喜欢

转载自blog.csdn.net/javandroid/article/details/81041266