325笔记
什么是软件,代码
| 软件程序,就是程序员通过编程语言写好一堆代码,通过一些方式运行,比如编译后,生成一个应用程序,称之为软件 |
| 以及手机APP,或者我们平时访问的网站,都是程序员通过写代码,开发出来的 |
| 软件包顾名思义就是将应用程序、配置文件和数据打包的产物 |
| 所有的linux发行版都采用了某种形式的软件包系统,这使得linux软件管理和在windows下一样方便,suse、red hat、fedora等发行版都是用rpm包,Debian和Ubuntu则使用.deb格式的软件包。 |
| |
| mysql-5-3-4.rpm |
| redis-3-4-3.rpm |
| nginx2-3-2.rpm |
| |
| |
| 软件包顾名思义就是将应用程序、配置文件和数据打包的产物=======nginx_v.10.rpm |
| |
| yum install nginx -y ============= 先下载 nginx.rpm 软件包 ,然后yum自动帮你去安装了这个包 |
| |
| |
| /usr/bin/nginx |
| /etc/nginx/nginc.conf 配置文件,写了用于控制该软件不同功能的参数 |
| |
| |
| centos,redhat ================= nginx-1.10.rpm |
| ubutnu ============nginx-1.10.deb |
| |
| 以网站后端源代码为例 |
| |
| golang 编译型 |
| golang这样的编译型语言,写完一推200行的后端代码,编译产生 ./start_go 这样的可执行命令。编译后的命令,看不到源码。 |
| golang 代码写完,发给你的就是一些【 可执行命令 + 一推配置文件 + 数据文件 = Linux后端程序 】 |
| |
| python 解释型语言 |
| python 代码写完了,发给你的基本是一个压缩包,里面是一推 python 源码( 文件夹 + .py文件) |
| 这些是能够看到程序源码的,运维要做的就是 (python 源代码解压缩 + 一推配置文件 + 数据文件 ==python后端网站) |
| |
| nginx 配置文件 |
| /etc/nginx/nginx.conf 配置文件,写了用于控制该软件不哦那个功能的参数 |
| |
关于源代码,编译的过程理解
| 程序员写的代码,如 下代码,计算机是不认识的,只认识010101 |
| package main |
| |
| import "fmt" |
| |
| func main() { |
| fmt.Println("于超老师带你学Linux") |
| } |
| |
| 因此代码都是经过系统的一个编译器,进行,编译成机器语言,计算机才能执行的 |
| 比如有哪些编译器 |
| c语言用的gcc编译器 |
| golang语言用的golang编译器 |
| 上面这俩特点是,代码写完,需要用户,手动的进行 build ,将源码编译成一个二进制的命令(机器可识别的) |
| |
| 编译型语言,是吧上述所有代码,全部检测完毕后,生成另一个正确的二进制命令 |
| 代码写完后,编译器,自动可以检测出所有的语法问题,因此编译型语言不易出错 |
| |
| golang ,c c++ ,适用于开发系统级工具,比如 docker k8s |
| 比如linux操作系统 |

| python 语言解释型语言(python编译器) |
| python一遍翻译程序员写的代码,一遍编译成机器认识的机器与语言 |
| python是一行一行去读取文件,要是中途代码出错,程序直接崩溃 |
| |
| 脚本型语言,如python很容易出错,代码自上而下,一行一行的去翻译 |
| 用在快速开发上,比如测试开发,运维开发,自动化开发 |
| 比如网站开发 |
二进制包
二进制包,也就是源码包经过成功编译之后产生的包
| 已经编译好, centos 平台可以使用的 rpm 包。———————————— nginx-1.10.rpm |
| 特殊的,很方便的二进制包,支持二进制包下载的某些软件———————— .tar.gz 格式 下载解压即可用 |
| |
| 二进制源码包 |
| mysql-community-5.7.25-.el7.src.rpm |
| 下载后还需要自己再构建rpm 构建命令 rpm.rpmbuild |
| |
| 常见的二进制软件包格式 |
| RedHat/Centos/Fedora/SUSE —————————————— 安装包文件后缀格式 .rpm (rpm包相关命令 rpm / rpbuild) |
| Ubuntu/Debian —————————————————— 安装包文件后缀格式 .deb (deb 包相关命令 dpkg / 在线安装 deb apt命令) |
| |
| |
| 比如去下载 nginx 软件包,会看到很多复杂的格式 |
| 编译好的 rpm 包—————————————————— nginx-1.10.rpm |
| nginx源代码包———————————————————— nginx-2.3.3.tar.gz (纯 C 语言文件) |
| 解压即用的nginx二进制包——————————— nginx-2.3.3-x86-64.tar.gz |
| rpm二进制包—————————————————————— nginx-el7-src.rpm |
3.关于源代码编译的过程解释
体验下,编译过程,和解释过程

对上述golang代码进行编译,生成二进制可执行的命令,并且添加软连接,可以快捷执行

| 可以用2种方式去运行这个代码 |
| # 如果你不编译,就必须要求机器上,得存在,对应的编译器 |
| go run hello.go # 不生成二进制命令,直接底层编译后执行, |
| |
| |
| go build hello.go # 生成二进制命令,源代码以及被写入到这个文件中了. |
| |
| 编译的好处,在于,该二进制命令,现在可以任意的丢到一个linux 统一是64位架构的机器上,可以直接运行 |
| 一次编译,到处运行(这也是docker的理念) |
| |
解释型过程
| python3语言 |
| |
| yum install python3 python3-devel -y |
| |
| |
| [root@167 test_go] |
| print ("你好 世界") |
| |
| |
| python想运行程序,必须要解释器存在机器上,然后才能执行 |
| |
| |
| |
| |
| [root@167 test_go] |
| 你好 世界 |
| |
| |
| |
| [root@yuchao-linux01 tmp] |
| python python2 python2.7 |
| [root@yuchao-linux01 tmp] |
| File "hello.py", line 1 |
| SyntaxError: Non-ASCII character '\xe4' in file hello.py on line 1, but no encoding declared; see http://www.python.org/peps/pep-0263.html for details |
| [root@yuchao-linux01 tmp] |
| |
| |
| |
| 用python的公司,必须要求你,在linux机器上,安装好这个环境,程序员写的python代码,才能运行。 |
| |
编译和rpm包的区别
| 二级制包 |
| |
| 源代码包 |
| 在网络上找到链接,wget下载,再tar解压缩 |
如何去下载mysql的rpm包

用本地光盘的形式,获取rpm包安装nginx

确认光驱,选择本地镜像文件

在linux中找到该光驱,然后挂在即可






rpm包升级软件
| 1.升级软件,获取新版的软件包 |
| 如何找到firewfox的rpm包,官网找,本地光盘找,去搜索引擎找 |
| |
| |
| 2.去官网中找新版本 |
| 如果软件升级的版本过大,里面会涉及很多的功能更新,说白了就是要再装一堆rpm包,无法手动管理 |
| 如果是小版本的升级 52.7 54.8 ,涉及依赖就会少很多 |
| |
| 下载链接 |
| http://ftp.pbone.net/mirror/ftp.scientificlinux.org/linux/scientific/7.2/x86_64/updates/security/firefox-52.7.3-1.el7_5.x86_64.rpm |
| |
| |
| wget http://ftp.pbone.net/mirror/ftp.scientificlinux.org/linux/scientific/7.2/x86_64/updates/security/firefox-52.7.3-1.el7_5.x86_64.rpm |
| |
如何搜索下载rpm的包,去哪里找
| 很多软件的官网,以及第三方软件仓库,会提供rpm包的下载功能 |
| http://rpm.pbone,net/ |
| |
| www.rpmfind.net |
| |
| 还有更好用,最精准,应该去该软件的官网,去下载它的rpm包 |
| http://nginx.org/packages/ |
| 根据你的机器cpu架构,以及系统的版本,找到如下链接 |
| http://nginx.org/packages/centos/7/x86_64/RPMS/ |
| http://nginx.org/packages/centos/7/x86_64/RPMS//nginx-1.10.0-1el7.ngx.x86_64.rpm |
rpm安装,查询,升级,删除
| rpm -vih rpm包的名字 wget http://nginx.org/packages/centos/7/x86_64/RPMS/nginx-1.10.0-1.el7.ngx.x86_64.rpm |
| 安装,rpm -vih nginx-1.10.0-el7.ngx.x86_64.rpm |
| |
| 查询 |
| rpm -qa nginx-1.10.0-el7.ngx.x86_64 |
| rpm -qi nginx |
| -q查询 |
| -i显示软件的详细信息 |
| 查询机器上是否安装了某个软件 |
| rpm -qa |grep vim |
| |
| 升级,获取软件的新版本 |
| rpm -Uvh |
| |
| 删除 |
| rpm -e nginx,卸载nginx |
| 得先确认该软件得名字,通过正确得名字,才可以删除 |
| rpm -qa |grep nginx |
| rpm -e vim-enhanced 卸载vim |
| rpm安装的软件,需要手动解决他们之间的依赖关系 |
| |
| rpm查询命令 |
| rpm -qf 文件名,根据文件名查询属于哪个软件包 |
| rpm -ql 软件包名,列出该软件包都生成了什么文件,如:rpm -ql nginx |
| |
| 总结 |
| 安装rpm -ivh 软件包 |
| 卸载rpm -e 软件包名 |
| 升级rpm -Uvh 软件包 |
| |
| rpm的依赖冲突,一定是要一层一层去解决,不能跳级----也就是依赖说少了什么软件,你就得先解决什么软件 |
源代码安装nginx工具,编译安装淘宝nginx
| wget https://tengine.taobao.org/download/tengine-2.3.3.tar.gz |
| |
| 解压缩,进行编译安装,cd tengine-2.3.3/ |
| 开始编译,且安装,注意先进行编译参数的配置, |
| 给nginx添加支持https证书的功能,需要注意linux系统支持https的模块,就是安装openss模块, |
| yum -y intsall openssl openssl-devel pcre pcre-devel zlib zlib-devel |
| 执行编译参数,让nginx的安装,可以扩展其他功能---./configure --prefix=/opt/my_nginx0224/ --with-http_ssl_module |
| 开始编译安装执行如下命令:make && make install |
| 当你make命令执行成功后,自动执行make install命令 |
| 只有make install 成功后,才会生成你指定的nginx路径 /opt/my_nginx0224文件夹 |
| 检查你安装的nginx是否生成,编译安装的nginx全部在这个目录下了,cd my_nginx0224 |
| conf 配置文件 |
| html 前端的html文件 |
| logs 日志文件 |
| sbin 可执行二级制文件 |
| 可以用该目录下的二进制命令,启动淘宝nginx了 /opt/my_nginx0224/sbin/nginx |
| 可以去用浏览器去发出http请求,访问你的nginx网站 |
| 还有一个命令可以验证,该nginx的信息,curl -l 自己的ip 192.168.0.159 |
| |
| 查询 |
| ls /opt/my_nginx0224/ |
| 删除 |
| 编译的软件,删除动作就是,直接干掉这个目录 |
| rm -rf /opt/my_nginx0224/ |
解压即用软件包
就是一个已经编译好的二进制命令,拿来用就好了
| 给机器部署 Java 环境,选择下载 Java 的二进制包,解压即用 |
| |
| 1. 下载二进制Java压缩包 |
| [root@localhost ~] |
| |
| [root@localhost ~] |
| |
| 2. 解压缩包 |
| [root@localhost opt] |
| |
| |
| (1) 创建软连接 |
| [root@localhost opt] |
| |
| (2) 配置Java环境 |
| [root@localhost opt] |
| export JAVA_HOME=/opt/jdk |
| export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/opt/my_python3-9-11//bin://opt/my_tenginx/sbin:/opt/jdk/bin |
| |
| (3) 退出重新登陆加载环境变量 |
| |
| |
| 3. 验证Java是否可用 |
| [root@localhost opt] |
| java version "1.8.0_221" |
| Java(TM) SE Runtime Environment (build 1.8.0_221-b11) |
| Java HotSpot(TM) 64-Bit Server VM (build 25.221-b11, mixed mode) |
| [root@localhost opt] |
| |
| |
| 4. 准备一段Java代码 验证环境是否可用 |
| 需要注意的是 创建的 Java 文件名要和代码中的名字一致 (即 public class 后边跟的名字) |
| |
| [root@localhost opt] |
| |
| public class HelloWorld { |
| public static void main(String []args) { |
| System.out.println("超哥带你学linux"); |
| |
| } |
| } |
| |
| 5. 编译这个代码 (命令 javac + 文件名) |
| [root@localhost opt] |
| [root@localhost opt] |
| [root@localhost opt] |
| [root@localhost opt] |
| HelloWorld.class jdk1.8.0_221 my_tenginx Python-3.9.11.tgz |
| HelloWorld.java jdk-8u221-linux-x64.tar.gz nginx-1.10.0-1.el7.ngx.x86_64.rpm tengine-2.3.0 |
| jdk my_python3-9-11 Python-3.9.11 tengine-2.3.0.tar.gz |
| |
| 6. 运行代码 (命令 java + 文件名没有后缀的) |
| [root@localhost opt] |
| 超哥带你学linux |
| [root@localhost opt] |
| |
| |
| |
| 由于 Java 比较特殊,必须配置Linux的环境变量才可以使用 |
| 如果是 golang 只需要直接解压缩,把命令加入到 PATH 变量即可快速使用 |
yum自动化软件管理命令
| 使用 yum 工具配置 yum 源即可。 |
| yum源的配置官网 https: |
| |
| ## 配置两个源 |
| (1) 能够下载centos自带的绝大多数软件 |
| wget -O /etc/yum.repos.d/CentOS-Base.repo https: |
| (2) 能够下载绝大多数第三方软件的仓库 |
| wget -O /etc/yum.repos.d/epel.repo http: |
| |
| ## 配置源之前需要显备份默认的 yum 仓库配置文件 |
| (1) 进入 yum 源默认的配置文件目录,备份所有的 *.repo 文件即可 |
| [root@localhost ~]# cd /etc/yum.repos.d/ #yum 默认配置文件目录 |
| [root@localhost yum.repos.d]# mv ./*.repo bak_repos.d/ |
| |
| (2) 下载新的 yum 仓库文件 |
| [root@localhost yum.repos.d]# wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo |
| [root@localhost yum.repos.d]# wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo |
| |
| ## 看到文件目录结构 |
| [root@localhost yum.repos.d]# ll |
| total 8 |
| drwxr-xr-x. 2 root root 187 Mar 26 01:02 bak_repos.d |
| -rw-r--r--. 1 root root 2523 Dec 26 2020 CentOS-Base.repo |
| -rw-r--r--. 1 root root 664 Dec 26 2020 epel.repo |
| [root@localhost yum.repos.d]# |
| |
| ## 更新 yum 缓存 |
| [root@localhost yum.repos.d]# yum clean all #删除原缓存 |
| [root@localhost yum.repos.d]# yum makecache #更新新的缓存 |
| |
| ## 可以自动化管理机器上 rpm 安装的软件 |
| |
| ## yum 常见命令 |
| yum install # 安装某文件 |
| yum remove # 删除某文件 |
| |
| 通过 yum 安装的程序,可以通过 systemctl 去管理启停操作如: |
| |
| systemctl statr nginx |
安装软件注意事项
| 安装方式有三种 |
| |
| 1. rpm手动安装 |
| 手动解决所有依赖,比较难用 |
| |
| 2. yum自动安装 |
| yum就是去管理 rpm包的,自动解决依赖关系 |
| |
| 3. 源码编译安装 |
| 软件都装到一个目录下,管理该目录即可,无法用 yum去管理 |
| |
| 需要注意他们的安装路径以及管理脚本是否会发生冲突。所以要注意机器上的程序是通过上面哪一种方式安装的 |
学以致用
学会rpm,编译安装,yum安装后,安装其他软件的时候,要如何安装
| 作为运维,要提供服务器运行环境,开发环境 |
| 比如一个网站程序涉及到的安装程序 |
| 数据库软件—————— musql |
| 开发语言环境———— Java golang python |
| web服务器—————— nginx apache(httpd) |
| 缓存数据库—————— redis |
| |
| 太多软件都需要安装,具体要用什么方式去安装,就需要对每一种安装方式都要理解,然后灵活应用 |
| 比如在断网的环境下 |
| yum 没办法去外网瞎咋软件就需要准备好该软件所需要的所有 rpm 上传到 Linux机器去安装这些恶 rpm 包 |
| |
| 比如在限制了软件版本情况下 |
| 就需要选择源代码编译,自己去官网,随便找到符合要求的版本,进行定制化安装 |
| 安装大型,复杂的软件,以及有很多自定只要求的软件,需要选择编译安装 |
| |
| 安装一些基础环境,比如Linux底层的一些软件,利用 yum 全部自动化安装就行 |
| 基本上小型工具 yum都可直接安装完成。 |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律