Linux软件管理
一、RPM 软件包管理
1、RPM 安装命令(rpm -ivh)
1、 基本语法
rpm -ivh RPM包全名
2、选项说明
选项 | 功能 |
---|---|
-i | install, 安装 |
-v | –verbose, 显示详细信息 |
-h | –hash, 进度条 |
–nodeps | 就是安装时不检查依赖关系,比如你这个rpm需要A,但是你没装A,这样你的包就装不上,用了–nodeps你就能装上了 |
–force | 就是强制安装,比如你装过这个rpm的版本1,如果你想装这个rpm的版本2,就需要用–force强制安装 |
3、安装firefox软件
[root@smx ~]# rpm -ivh firefox-68.10.0-1.el7.centos.x86_64.rpm
准备中... ################################# [100%]
正在升级/安装...
1:firefox-68.10.0-1.el7.centos ################################# [100%]
2、RPM 查询命令(rpm -qa)
1、基本语法
语法 | 说明 |
---|---|
rpm -q 程序包名称 | 查询指定程序包是否安装 |
rpm -qa | 显示当前系统中所有rpm程序包列表 |
rpm -qi 程序包名称 | 查看指定程序包的名称、版本、许可协议、用途描述等详细信息 |
rpm -ql 程序包名称 | 显示指定的程序包在当前系统中安装的所有目录、文件列表 |
rpm -qf 文件名或目录 | 查看指定的文件或目录是由哪个程序包所安装的 |
2、 查询firefox软件安装情况
[root@smx ~]# rpm -qa | grep firefox
firefox-68.10.0-1.el7.centos.x86_64
3、RPM 卸载命令(rpm -e)
1、基本语法
- rpm -e RPM软件包
- rpm -e —nodeps 软件包
2、选项说明
选项 | 功能 |
---|---|
-e | 卸载软件包 |
–nodeps | 卸载软件时,不检查依赖,这样的话,那些使用该软件包的软件在此之后可能就不能正常工作了。 |
3、卸载firefox软件
[root@smx ~]# rpm -e --nodeps firefox
4、RPM包升级
rpm -Uvh 包全名
-U:升级安装,如果没有安装过,则直接安装;如果安装的版本太旧,则升级;
-F:升级安装,必须有旧版本,才能够升级;没有旧版本,则不会安装;
5、Rpm工具管理RPM软件包实战
RPM安装
[root@smx ~]# rpm -ivh 软件包名称
-i install
-vh verbose human
[root@smx ~]# rpm -ivh lftp-4.0.9-1.el6.x86_64.rpm
查询软件安装路径
[root@smx ~]# rpm -ql 软件名称
-q query
-l list
[root@smx ~]# rpm -ql lftp-4.0.9-1.el6.x86_64
查询软件的名称
[root@smx ~]# rpm -qa
[root@smx ~]# rpm -qa | grep lftp
lftp-4.0.9-1.el6.x86_64
-a all
查询软件详细信息
[root@smx ~]# rpm -qi 软件名称
[root@smx ~]# rpm -qi gedit-2.28.4-3.el6.x86_64
-i information
查询某一个文件是哪个软件产生的
[root@smx ~]# rpm -qf /etc/passwd
setup-2.8.14-20.el6.noarch
[root@smx ~]# rpm -qf /bin/rpm
rpm-4.8.0-32.el6.x86_64
-f file
软件卸载
[root@smx ~]# rpm -e 软件名称
-e erase
查询软件的配置文件
[root@smx ~]# rpm -qc 软件名称
--force 在安装的时候用(强制安装)
--nodeps 在卸载的时候用(卸载的时候不检查依赖关系)
-test: 测试安装,不会实际安装,仅仅检测依赖性;
二、YUM软件包管理(重点)
基本语法
yum [参数] [选项]
选项说明
选项 | 说明 |
---|---|
install | 安装软件 |
update | 更新软件 |
remove | 卸载软件 |
list | 显示软件包信息 |
clean | 清理过期的yum缓存 |
deplist | 显示yum软件包的所有依赖 |
check-update | 显示软件是否有更新 |
1、yum工具使用大全
安装wget软件
[root@smx ~]# yum install -y wget
卸载wget软件
两种方法第一种好使
[root@smx ~]# yum remove -y wget
[root@smx ~]# yum erase -y wget
清理Yum缓存
[root@smx ~]# yum clean all
缓存软件包信息
提高搜索/安装软件的速度
[root@smx ~]# yum makecache
查询yum源信息
[root@smx ~]# yum repolist
查找软件
[root@smx ~]# yum search mysql
此命令会搜索到系统已经安装和yum源里没有安装的软件信息,可以用他简单测试yum是否好用
查看软件依赖性关系
[root@smx ~]# yum deplist 包名
查看文件属于哪个软件
[root@smx ~]# yum provides ld-linux.so.2
查看系统已经安装好的软件组和没有安装的软件组
[root@smx ~]# yum grouplist
查看软件组包含的具体软件
[root@smx ~]# yum groupinfo
重装软件
root@smx ~]# yum reinstall 软件名
2、配置网络YUM源
替换阿里源
https://developer.aliyun.com/mirror/
yum的软件源配置文件默认是在/etc/yum.repos.d
目录下
先备份原来的软件源配置文件
[root@smx ~]# mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
配置阿里云yum源:
[root@smx ~]# wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
配置阿里云epel仓库这是一个扩展源
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
然后再生成一下yum的缓存
# 生成缓存前,先清理一下缓存
[root@smx ~]# yum clean all
# 生成缓存
[root@smx ~]# yum makecache
3、配置本地YUM源
1.备份/etc/yum.repos.d的文件
[root@smx ~]# cd /etc/yum.repos.d/
[root@smx yum.repos.d]# ls
CentOS-7-base.repo CentOS-7-epel.repo myrepo
[root@smx yum.repos.d]# mv *.repo myrepo/
[root@smx yum.repos.d]# ls myrepo/
CentOS-7-base.repo CentOS-7-epel.repo
2.先创建一个挂载目录
mkdir /opt/myyum
3.挂载本地镜像到挂载目录
mount /dev/cdrom /opt/myyum
4.写一个配置文件
[root@smx yum.repos.d]# vim myyum.repo
[myyum]
name=bendijingxiangcangku
baseurl=file:///opt/myyum
enabled=1
gpgcheck=0
5.查看
yum repolist
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
myyum | 3.6 kB
00:00:00
(1/2): myyum/group_gz | 153 kB
00:00:00
(2/2): myyum/primary_db | 6.1 MB
00:00:00
repo id repo name
status
myyum bendijingxiangcangku
10,072
repolist: 10,072
4、自建YUM仓库(补充老师没讲,需要自己准备rpm包)
自建yum仓库
1.创建一个软件目录
[root@167 ~]# mkdir /0224_software
2.准备软件的所有rpm包,你可以选择用光盘仓库,也可以用这个神奇的办法
# 拿vim举例,安装vim以及它的依赖包
yum install --downloadonly --downloaddir=/0224_software/ vim
--downloadonly 只下载不按照
--downloaddir 指定本地下载目录
3.使用命令,让该目录成为yum可识别仓库
yum install createrepo -y
4.使用该命令,创建本地仓库
[root@167 0224_software]#
[root@167 0224_software]# createrepo /0224_software/
Spawning worker 0 with 1 pkgs
Spawning worker 1 with 1 pkgs
Spawning worker 2 with 0 pkgs
Spawning worker 3 with 0 pkgs
Workers Finished
Saving Primary metadata
Saving file lists metadata
Saving other metadata
Generating sqlite DBs
Sqlite DBs complete
[root@167 0224_software]# ll /0224_software/ -a
总用量 7156
drwxr-xr-x 3 root root 114 3月 30 11:56 .
dr-xr-xr-x. 30 root root 4096 3月 30 11:46 ..
drwxr-xr-x 2 root root 4096 3月 30 11:56 repodata
-rw-r--r-- 1 root root 6205700 12月 18 2020 vim-common-7.4.629-8.el7_9.x86_64.rpm
-rw-r--r-- 1 root root 1106008 12月 18 2020 vim-enhanced-7.4.629-8.el7_9.x86_64.rpm
5.此时,创建repo文件,指向这个目录即可,就是一个本地仓库目录
你先移除其他的repo文件,让yum被识别
cat >> /etc/yum.repos.d/my_dir.repo <<EOF
[base]
name=0224-linux-my_dir
baseurl=file:///0224_software/
enabled=1 # 这个参数是控制,该repo启用,还是关闭的
gpgcheck=0
EOF
6.此时yum本地仓库就好使了
yum install vim -y
完毕!
三、编译安装LNMP(大实战)
准备好安装包
linux:centos7-9
nginx:nginx-1.22.0
http://nginx.org/download/nginx-1.22.0.tar.gz
mysql-boost-5.7.20.tar.gz
https://downloads.mysql.com/archives/get/p/23/file/mysql-boost-5.7.20.tar.gz
php:php-7.1.10.tar.bz2
https://www.php.net/distributions/php-7.1.10.tar.bz2
1、关闭防火墙和selinux
1.关闭防火墙
[root@smx ~]# systemctl stop firewalld
[root@smx ~]# systemctl disable firewalld
2.关闭selinux
[root@smx ~]# setenforce 0
2.编译安装mysql
1.清理原有环境
# yum erase mariadb mariadb-server mariadb-libs mariadb-devel -y
# userdel -r mysql
# rm -rf /etc/my*
# rm -rf /var/lib/mysql
2.安装mysql相关的依赖关系软件
yum -y install ncurses ncurses-devel openssl-devel bison gcc gcc-c++ make glibc
automake autoconf cmake wget vim
2.创建运行用户
useradd -M -s /sbin/nologin mysql
3.编译安装,安装到/opt目录下
cd /opt
wget https://downloads.mysql.com/archives/get/p/23/file/mysql-boost-
5.7.20.tar.gz
tar zxvf mysql-boost-5.7.20.tar.gz
cd /opt/mysql-5.7.20/
cmake \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock \
-DSYSCONFDIR=/etc \
-DSYSTEMD_PID_DIR=/usr/local/mysql \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DWITH_EXTRA_CHARSETS=all \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_PERFSCHEMA_STORAGE_ENGINE=1 \
-DMYSQL_DATADIR=/usr/local/mysql/data \
-DWITH_BOOST=boost \
-DWITH_SYSTEMD=1
4.编译和安装
make && make install
如果安装出错,想重新安装:
不用重新解压,只需要删除安装目录中的缓存文件CMakeCache.txt
5.修改mysql配置文件
vim /etc/my.cnf --如果打开文件有内容将文件中所有内容注释掉,在添加如下内容
[client]
port = 3306
socket=/usr/local/mysql/mysql.sock
[mysqld]
user = mysql
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data
port = 3306
character-set-server=utf8
pid-file = /usr/local/mysql/mysqld.pid
socket=/usr/local/mysql/mysql.sock
bind-address = 0.0.0.0
skip-name-resolve
max_connections=2048
default-storage-engine=INNODB
max_allowed_packet=16M
server-id = 1
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_AUTO_
VALUE_ON_ZERO,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,PIPES_AS_C
ONCAT,ANSI_QUOTES
6.设置环境变量
echo 'export PATH=/usr/local/mysql/bin:$PATH' >>/etc/profile
source /etc/profile
7.更改mysql安装目录和配置文件的属主属组
chown -R mysql:mysql /usr/local/mysql/
chown mysql:mysql /etc/my.cnf
8.初始化数据库
cd /usr/local/mysql/bin/
./mysqld \
--initialize-insecure \
--user=mysql \
--basedir=/usr/local/mysql \
--datadir=/usr/local/mysql/data
9.修改mysql 的登录密码
3.编译安装nginx
mysqladmin -u root -p passwd "123"
10.登录数据库 授权远程登录
mysql -u root -p
grant all privileges on *.* to 'root'@'%' identified by 'abc123';
11.查看myql端口
[root@smx bin]# netstat -tunlp | grep 3306
tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN
21481/mysqld
3、编译安装nginx
1.安装依赖包
yum -y install gcc gcc-c++ make zlib-devel pcre pcre-devel openssl-devel perldevel
perl-ExtUtils-Embed gd-devel
2.创建nginx用户不指定家目录和禁止登录
useradd -M -S /sbin/nologin nginx
3,编译安装nginx,指定目录到/opt下
wget http://nginx.org/download/nginx-1.20.0.tar.gz
tar zxvf nginx-1.20.0.tar.gz -C /opt/
cd nginx-1.20.0/
./configure \
--prefix=/usr/local/nginx \
--user=nginx \
--group=nginx \
--with-http_stub_status_module
4.编译且安装
make && make install
5.创建一个软链接
ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/
6.配置nginx系统服务
vim /lib/systemd/system/nginx.service
[Unit]
Description=nginx
After=network.target
[Service]
Type=forking
PIDFile=/usr/local/nginx/logs/nginx.pid
ExecStart=/usr/local/nginx/sbin/nginx
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true
[Install]
WantedBy=multi-user.target
7.添加权限,启动服务,并设置开机自启
chmod 754 /lib/systemd/system/nginx.service[root@smx ~]#
8.查看端口
netstat -tunlp | grep nginx
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN
31490/nginx: master
4.编译安装php
解压时出现这个报错就是没装bz2
yum -y install bzip2
1.安装依赖包
yum -y install gd libjpeg libjpeg-devel libpng libpng-devel freetype freetypedevel
libxml2 libxml2-devel zlib zlib-devel curl curl-devel openssl openssldevel
2.编译安装到/opt目录下
cd /opt
wget https://www.php.net/distributions/php-7.1.10.tar.bz2
tar jxvf php-7.1.10.tar.bz2
cd php-7.1.10
./configure \
--prefix=/usr/local/php \
--with-mysql-sock=/usr/local/mysql/mysql.sock \
--with-mysqli \
--with-zlib \
--with-curl \
--with-gd \
--with-jpeg-dir \
--with-png-dir \
--with-freetype-dir \
--with-openssl \
--enable-fpm \
--enable-mbstring \
--enable-xml \
--enable-session \
--enable-ftp \
--enable-pdo \
--enable-tokenizer \
--enable-zip
3.编译且安装
make && make install
4.创建软链接
ln -s /usr/local/php/bin/* /usr/local/bin/
ln -s /usr/local/php/sbin/* /usr/local/sbin/
5.修改配置文件
php有三个配置文件:
php.ini 主配置文件
php-fpm.conf 进程服务配置文件
www.conf 扩展配置文件
cp /opt/php-7.1.10/php.ini-development /usr/local/php/lib/php.ini
vim /usr/local/php/lib/php.ini
--1170行--修改
mysqli.default_socket = /usr/local/mysql/mysql.sock
--939行--取消注释,修改
date.timezone = Asia/Shanghai
php -m #验证安装的模块
#调整进程服务配置文件:
cd /usr/local/php/etc/
cp php-fpm.conf.default php-fpm.conf
vim php-fpm.conf
--17行--去掉";"注释
pid = run/php-fpm.pid
#调整扩展配置文件:
cd /usr/local/php/etc/php-fpm.d/
cp www.conf.default www.conf
6.启动php=fpm
/usr/local/php/sbin/php-fpm -c /usr/local/php/lib/php.ini
7.检查端口 (9000是php=fpm监听端口)
netstat -tunlp | grep 9000
#PHP-FPM(FastCGI Process Manager:FastCGI 进程管理器)是一个 PHPFastCGI 管理器, 由于
Nginx服务器不能处理动态页面,需要由 Nginx 把动态请求交给 php-fpm 进程进行解析。
cd /opt/php-7.1.10/sapi/fpm
备份配置文件,重启服务
cp php-fpm.service /usr/lib/systemd/system/php-fpm.service
systemctl restart php-fpm.service
8.配置nginx支持php解析
vim /usr/local/nginx/conf/nginx.conf
--65行--取消注释,修改
location ~ \.php$ {
root html;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /usr/local/nginx/html$fastcgi_script_name;
#将 /scripts 修改为nginx的工作目录
#fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
#$document_root 代表当前请求在root指令中指定的值
include fastcgi_params;
}
重启服务
systemctl restart nginx.service
9.浏览器访问
http://10.0.0.120/index.php