文件的输入与输出
输入文件内容到文件和输出内容到文件
- 追加与覆盖
> : 覆盖内容
覆盖符号是将文件内容清空,再写入新的内容(注意:内容覆盖后文件原来的内容是无法恢复的)
>> : 追加内容
在文件末尾追加内容(echo自带换行符)
输出即把相关对象通过输出设备(显示器等)显示出来,输出又分正确输出和错误输出 ,一般情况下标准输出设备为显示屏,标准输入设备为键盘。
- Linux中
· 0 代表标准输入
· 1 代表标准正确输出
· 2 代表标准错误输出
nginx 2>>log 2代表错误输出结果 # 等同于:echo bash: nginx: command not found >> log
cat log
# bash: nginx: command not found
ls 2>>log 正确的输出结果用2追加重定向log,会在当前窗口进行打印输出结果,没有任何输出结果写入log
# anaconda-ks.cfg 在当前窗口显示打印结果
cat log
# bash: nginx: command not found
ls 1>>log 1代表正确输出结果 # 等同于把ls的输出结果写入log
cat log
# bash: nginx: command not found
# anaconda-ks.cfg
- 标准正确输出与标准错误输出的使用方法
- 正确与错误的输出分开写如两个文件 (1>>log1 2>>log2)
hahahahahaha 1>>log1 2>>log2 hahaha的命令执行结果正确的输入log1,错误的执行结果输入log2
cat log1 正确输出
cat log2 错误输出
# bash: hahahahahaha: command not found
- 覆盖写入同一个文件方法1 (>log 2>&1)
hshshshshs >log 2>&1 以覆盖的方式,把正确的输出和错误的输出都保存到同一个文件当中
cat log
# bash: hshshshshs: command not found 错误的输出结果
echo "123" >log 2>&1
cat log
# 123 正确的输出结果
- 覆盖写入同一个文件方法2 (&>)
dudu &> test.log 错误输出
echo "666" &> test.log 正确输出
cat test.log 查看test.log下的文件内容
# 666
- 追加写入同一个文件方法1 (>>log 2>&1)
lalala >>log 2>&1 以追加写入的方式,把正确的输出和错误的输出都保存到同一个文件当中
echo abc >> log 2>&1
cat log 查看log下的文件内容
# bash: lalala: command not found 错误的输出结果
# abc 正确的输出结果
- 追加写入同一个文件方法2 (&>>)
dudu &>> test.log 错误输出
echo "666" &>> test.log 正确输出
cat test.log 查看test.log下的文件内容
# bash: dudu: command not found
# 666
软件包包管理
- 软件包介绍,在linux系统上也可以安装各种应用程序,或软件包,linux下的软件包分为三类
分类 安装 特点
1. rpm包 预先编译打包,安装简单 通常软件的稳定版会被官方做成rpm,所以软件版本偏低
2. 源码包 手动编译打包,安装繁琐 软件版本丰富,可选择性强
3. 二进制包 解压即可使用,安装简单 不能修改源代码
- rpm包来源
- 来源网络下载
- 来源本地,自己镜像自带的rpm包
- 挂载镜像的三种方式
1. mount /dev/cdrom /opt/ # cdrom是一个快捷方式
2. mount /dev/sr0 /opt/
3. mount -o loop /CentOS-7-x86_64-DVD-2009.iso /opt/
- rpm命令
rpm -ivh xxx.rpm
-v:显示安装过程
-i:显示安装包的详细信息
-h:安装包hash标记
wget http://nginx.org/packages/centos/7/x86_64/RPMS/nginx-1.18.0-1.el7.ngx.x86_64.rpm 下载nginx rpm安装包全名
rpm -ivh nginx-1.18.0-1.el7.ngx.x86_64.rpm(全名) 安装rpm包
nginx -v 验证nginx是否安装
rpm -e nginx (软件包名称) 卸载
rpm -qa 查看系统当中安装了哪些rpm软件包
rpm -q nginx (软件包名称) 查看系统当中是否安装了某个rpm软件包
rpm -qi nginx 显示已经安装过的rpm包详细信息。
rpm -ql nginx 查看安装包内的文件文件内容
rpm -qc nginx 查看配置文件
rpm -qd zlib 查看文件帮助信息
rpm -qip nginx-1.18.0-1.el7.ngx.x86_64.rpm(全名) 用 -p 可以查看未安装软件包的详细信息
rpm -Uvh nginx-1.18.0-1.el7.ngx.x86_64.rpm(全名) 升级软件包
rpm -e zlib --nodeps 强制删除软件包--nodeps(忽略依赖直接删除)
- yum管理rpm包
yum是Centos的软件包管理工具,自动为我们解决依赖问题。yum包管理工具必须使用yum源指定的软件下载地址去下载需要安装的软件包。配置路径 : /etc/yum.repos.d/
1.清空本机所有的yum源
rm -rf /etc/yum.repos.d/*.repo
- yum源命令
· 查看当前系统的yum源列表
yum repolist
· 清空yum缓存
yum clean all
· 建立yum缓存
yum makecache
- yum源的执行原理
1、需要在/etc/yum.repos.d/目录下配置yum源地址
2、清空缓存建立新的缓存
3、安装软件(自动解决依赖关系)
- 虚拟机A
1. 需要有一个软件包目录,存放软件包
mkdir /mydvd
2. 缓存yum安装下载的软件包
vim /etc/yum.conf 修改可生成缓存配置文件
[main]
cachedir=/var/cache/yum/$basearch/$releasever
keepcache=1 # 修改成1允许生成缓存文件,默认是0不允许生成缓存文件
rm -rf /var/cache/yum/x86_64/7/* 清空缓存目录里面的本地缓存文件
yum -y install mariadb 下载一个mariadb软件包(使用的是base源)
ls /var/cache/yum/x86_64/7/base/packages 查看一下文件保存路径中是否有下载的软件包
cp -rp /var/cache/yum/x86_64/7/base/packages/mariadb-5.5.68-1.el7.x86_64.rpm /mydvd/ 将下载的软件包复制到软件包目录中
3. 建立本地yum源
yum -y install createrepo 下载生成仓库数据文件软件
createrepo /mydvd/ 生成本地的仓库数据文件
ls /mydvd 查看本地挂载点是否挂载成功
# mariadb-5.5.68-1.el7.x86_64.rpm repodata(建立依赖关系)
4.下载ftp软件包,启动tfp目录下的yum源,启动ftp服务
yum -y install vsftpd
mkdir /var/ftp/yum_house
cp /mydvd/mariadb-5.5.68-1.el7.x86_64.rpm /var/ftp/yum_house 将yum仓库的内容复制到ftp服务指定的目录下
createrepo /var/ftp/yum_house 生成ftp目录下的仓库数据文件
ls /var/ftp/yum_house 查看ftp挂载点是否挂载成功
systemctl start vsftpd 启动vsftpd服务
- 虚拟机B
1. 备份本机系统所有的yum源
mv /etc/yum.repos.d/*.repo /etc/yum.repos.d/mydvd1
vim /etc/yum.repos.d/mydvd.repo
[1960]
name=1960
baseurl=ftp://192.168.80.100/yum_house
gpgcheck=0
enabled=1
2. 清空yum缓存
yum clean all 清空yum缓存
rm -rf /var/cache/yum/x86_64/7/*
3. 生成新的yum缓存
yum makecache 生成新的yum缓存,将yum仓库修改过的内容读入新的缓存(/var/cache/yum/x86_64/7/)
4. 测试连接
rpm -e mariadb 删除本地已经下载的软件包
rpm -q mariadb 查看本地下载的软件包是否成功删除
yum -y install mariadb 重新下载
- 虚拟机A(本地版本)
1. 备份系统所有的yum源
mkdir /etc/yum.repos.d/mydvd1
mv /etc/yum.repos.d/*.repo /etc/yum.repos.d/mydvd1
vim /etc/yum.repos.d/mydvd.repo
[1960]
name=1960
baseurl=file:///mydvd
gpgcheck=0
enabled=1
2. 清空yum缓存
yum clean all 清空yum缓存
rm -rf /var/cache/yum/x86_64/7/*
3. 生成新的yum缓存
yum makecache 生成新的yum缓存,将yum仓库修改过的内容读入新的缓存(/var/cache/yum/x86_64/7/)
4. 测试连接
rpm -e mariadb 删除本地已经下载的软件包
rpm -q mariadb 查看本地下载的软件包是否成功删除
yum -y install mariadb 重新下载
同步华为云镜像软件包到本地
1. 安装需要使用的软件工具,修改可生成缓存配置文件
yum -y install wget
yum -y install createrepo
yum -y install vsftpd
vim /etc/yum.conf 修改可生成缓存配置文件
[main]
cachedir=/var/cache/yum/$basearch/$releasever
keepcache=1 # 修改成1允许生成缓存文件,默认是0不允许生成配置文件
2. 清空本地yum仓库
rm -rf /etc/yum.repos.d/*
3. 安装华为云镜像仓库
wget -O /etc/yum.repos.d/CentOS-Base.repo https://repo.huaweicloud.com/repository/conf/CentOS-7-reg.repo
4. 生成yum缓存
yum clean all
rm -rf /var/cache/yum/x86_64/7/*
yum makecache
5. 下载华为云镜像软件包,生成源目录
yum -y install yum-utils 下载同步华为云镜像站软件包使用的工具(reposync)
yum repolist 查看yum客户端配置文件的信息
# Loaded plugins: fastestmirror
# Loading mirror speeds from cached hostfile
# repo id repo name status
# base/7/x86_64 CentOS-7 - Base - repo.huaweicloud.com 10,072
# extras/7/x86_64 CentOS-7 - Extras - repo.huaweicloud.com 463
updates/7/x86_64 CentOS-7 - Updates - repo.huaweicloud.com 1,901
# repolist: 12,436
cd /var/ftp/ 切换到ftp数据共享目录
reposync -r updates(base) 将华为云的软件压缩包下载到当前目录下,并生成子目录updates(base)
6. 建立依赖关系
createrepo /var/ftp/updates 等同于创建成功了一个挂载点
7. 关闭缓存配置文件
vim /etc/yum.conf 修改可生成缓存配置文件
[main]
cachedir=/var/cache/yum/$basearch/$releasever
keepcache=0 # 修改成1允许生成缓存文件,默认是0不允许生成缓存文件
8. 启动vsftpd服务
systemctl start vsftpd 启动vsftpd服务
- 开启虚拟机B,共享华为云yum仓库
1. 备份本机系统所有的yum源
mv /etc/yum.repos.d/*.repo /etc/yum.repos.d/mydvd1
vim /etc/yum.repos.d/mydvd.repo
[1960]
name=1960
baseurl=ftp://192.168.80.100/updates
gpgcheck=0
enabled=1
2. 清空yum缓存
yum clean all 清空yum缓存
rm -rf /var/cache/yum/x86_64/7/*
3. 生成新的yum缓存
yum makecache 生成新的yum缓存,将yum仓库修改过的内容读入新的缓存(/var/cache/yum/x86_64/7/)
4. 测试连接
yum -y install httpd 重新下载
- 注 : 站在企业的角度,把华为云镜像的软件包下载到本地目录下,主要是为了解决从网络上下载软件的安全性问题。
源码包编译安装nginx
- 源码包编译安装nginx
1. 下载源码包
wget http://nginx.org/download/nginx-1.18.0.tar.gz
# 华为云下载nginx链接地址: wget https://repo.huaweicloud.com/epel/7/x86_64/Packages/n/nginx-1.16.1-3.el7.x86_64.rpm
2. 解压nginx源码包
tar -xf nginx-1.18.0.tar.gz -C /opt 解压到opt目录下
3. 编译前系统检查
cd /opt/nginx-1.18.0 切换到解压的路径
./configure 检查当前系统进行编译缺少哪些库
# 出现报错 ./configure: error: the HTTP rewrite module requires the PCRE library.
4. 安装进行编译时所缺少的库
yum install pcre pcre-devel -y
5. 再次进行编译前的系统检查
./configure
# 出现报错 ./configure: error: the HTTP gzip module requires the zlib library.
6. 安装进行编译时所缺少的库
yum install zlib zlib-devel -y # 我们在下载包的时候,大部分的包都会有一个-devel结尾的依赖包
7. 第三次进行系统检查
./configure
# 没有出现报错
8. 开始进行编译
make 单核编译
-j 使用多核编译
9. 安装
make install PROFIX=/usr/local 安装并指定安装路径
10. 测试是否安装完成
/usr/local/nginx/sbin/nginx
# 我们安装完成后,可以打开浏览器,输入虚拟机的IP。如果显示出Welcome to nginx!那就是代表安装完成。
11. 添加环境变量
vim /root/.bash_profile 添加服务器系统的环境变量
NGINX_HOME=/usr/local/nginx/sbin 将nginx的文件路径添加至系统环境变量
PATH=$PATH:$NGINX_HOME
export PATH
source /root/.bash_profile 重载root用户系统的环境变量
# 加载完环境变量之后,执行nginx,就不需要再加文件路径了
-
configure
设置自定义nginx服务
./configure -h
# enable是默认支持的模块,disable是默认不支持的模块。
# 我们进行编译安装的时候,会默认把enable和disable都会安装上。
--prefix 设置安装的路径
--sbin-path 设置安装包的位置
./configure --prefix=/usr/local/nginx-1.18.0 --sbin-path=/usr/bin/nginx
比如我们可以自定义nginx安装的路径,设置安装包的位置