【学习总结|DAY037】Linux 项目部署
引言
在当今的软件开发领域,Linux 以其安全、稳定、免费且开源的特性,成为项目部署的首选操作系统。无论是 Java 项目,还是各类开发、测试、生产环境中的软件安装,Linux 都占据着重要地位。本文将结合我今天所学内容,详细介绍 Linux 相关知识,包括系统概述、常用命令、软件安装及项目部署,同时附上代码案例,帮助大家更好地理解和实践。
Linux 概述
主流操作系统分类及特点
操作系统主要分为桌面、服务器和移动设备操作系统。在桌面操作系统中,Windows 用户数量最多,Mac OS 操作体验好,是办公人士的首选,而 Linux 用户数量相对较少。服务器操作系统方面,Unix 安全稳定但付费,Linux 同样安全稳定且免费,市场占有率高,Windows Server 则付费且占有率低。移动设备操作系统中,Android 基于 Linux 开源,广泛应用于智能手机、平板和智能电视;iOS 由苹果公司开发,不开源,仅用于苹果产品;HarmonyOS 是华为开发的开源系统,目前主要用于华为产品。
Linux 系统版本
Linux 系统分为内核版和发行版。内核版由 Linux 核心团队开发维护,免费开源,负责控制硬件。发行版基于内核版扩展,由不同厂商开发维护,有收费和免费版本。常见的发行版有 Ubuntu(以桌面应用为主)、RedHat(应用广泛但收费)、CentOS(RedHat 的社区版,免费)、openSUSE(对个人完全免费,图形界面华丽)、Fedora(功能完备,更新快速且免费)以及红旗 Linux(由北京中科红旗软件技术有限公司开发)。
系统安装
Linux 系统安装方式有物理机安装和虚拟机安装。物理机安装直接将系统安装到服务器硬件上;虚拟机安装则通过虚拟机软件模拟完整计算机系统来安装。常用虚拟机软件有 VMWare、VirtualBox 和 VMLite WorkStation。以 VMWare 安装 CentOS7 为例:
- 双击运行 VMWare 安装程序,按提示完成安装。
- 安装完成后配置网络,可在虚拟网络编辑器中选择合适的网络模式,如 NAT 模式。
- 解压 CentOS7 镜像压缩包,双击.vmx 文件挂载,启动服务器,使用 root/1234 登录。
- 通过
ip addr命令查看当前 Linux 的 IP 地址。
远程连接
常用 SSH 远程连接工具包括 Putty、SecureCRT、Xshell 和 finalShell。以 finalShell 为例,安装时直接双击运行安装程序,连接 Linux 时,打开 finalShell,在连接管理器中新建 SSH 连接,填写主机 IP、端口(默认为 22)、用户名(如 root)和密码即可连接。
目录介绍
Linux 目录结构与 Windows 不同,/是所有目录的顶点,整个目录结构像倒挂的树。常见目录及其作用如下:
/bin:存放二进制可执行文件。/boot:存放系统引导时使用的文件。/dev:存放设备文件。/etc:存放系统配置文件。/home:存放系统用户的文件。/lib:存放程序运行所需的共享库和内核模块。/opt:额外安装的可选应用程序包放置位置。/root:超级用户目录。/sbin:存放二进制可执行文件,只有 root 用户能访问。/tmp:存放临时文件。/usr:存放系统应用程序。/var:存放运行时需要改变数据的文件,如日志文件。
Linux 常用命令
命令格式及使用技巧
Linux 命令格式为command [-options] [parameter],其中command是命令名,[-options]是选项(可选),用于控制命令,[parameter]是参数(可选),可以有零个、一个或多个。使用时可通过 Tab 键自动补全,连续两次 Tab 键获取操作提示,使用上下箭头调出历史命令,用clear命令或 Ctrl + l 快捷键清屏。
目录操作命令
| 命令 | 作用 | 语法 | 示例 |
|---|---|---|---|
ls | 显示指定目录下的内容 | ls [-al] [dir],-a显示所有文件及目录,-l详细列出文件信息 | ls -l查看当前目录文件详细信息;ll是ls -l的简写 |
cd | 切换当前工作目录 | cd [dirName],~表示用户 home 目录,.表示当前目录,..表示上级目录 | cd ..切换到上级目录;cd ~切换到用户 home 目录;cd /usr/local切换到指定目录 |
mkdir | 创建目录 | mkdir [-p] dirName,-p确保目录存在,不存在则创建 | mkdir itcast在当前目录创建 itcast 目录;mkdir -p itcast/test创建多层目录 |
rm | 删除文件或目录 | rm [-rf] name,-r递归删除目录及内容,-f无需确认直接删除 | rm -r itcast/删除 itcast 目录及内容,需确认;rm -rf itcast/直接删除;rm -f hello.txt删除文件 |
文件操作命令
| 命令 | 作用 | 语法 | 示例 |
|---|---|---|---|
cat | 显示文件所有内容 | cat [-n] fileName,-n对输出行数编号 | cat /etc/profile查看文件内容 |
more | 分页显示文件内容 | more fileName | more /etc/profile分页查看文件 |
head | 查看文件开头内容 | head [-n] fileName,-n指定显示行数 | head 1.log显示文件开头 10 行;head -20 1.log显示开头 20 行 |
tail | 查看文件末尾内容 | tail [-nf] fileName,-n指定显示行数,-f动态读取末尾内容 | tail 1.log显示末尾 10 行;tail -20 1.log显示末尾 20 行;tail -f 1.log实时查看日志文件末尾内容 |
拷贝移动命令
| 命令 | 作用 | 语法 | 示例 |
|---|---|---|---|
cp | 复制文件或目录 | cp [-r] source dest,复制目录需用-r | cp hello.txt itcast/复制文件到目录;cp -r itcast/ ./itheima/复制目录及内容 |
mv | 为文件或目录改名、移动位置 | mv source dest | mv hello.txt hi.txt改名;mv hi.txt itheima/移动文件;mv itcast/ itheima/根据情况改名或移动目录 |
打包压缩命令
tar命令用于对文件打包、解包、压缩、解压,语法为tar [-zcxvf] fileName [files]。选项中,-z通过 gzip 处理文件,-c创建新包文件,-x还原文件,-v显示执行过程,-f指定包文件名。
- 打包:
tar -cvf hello.tar ./*将当前目录文件打包为 hello.tar;tar -zcvf hello.tar.gz ./*打包并压缩。 - 解包:
tar -xvf hello.tar解包;tar -zxvf hello.tar.gz解压;tar -zxvf hello.tar.gz -C /usr/local解压到指定目录。
文本编辑命令
vi/vim是 Linux 文本编辑工具,vim功能更强大且支持文本着色。安装vim可使用yum install vim命令。vim有命令模式、插入模式和底行模式:
- 命令模式:可进行文本定位、删除等操作,如
gg定位到第一行,G定位到最后一行,dd删除当前行,ndd删除当前行及之后 n 行,u撤销操作。按i、a、o进入插入模式。 - 插入模式:用于编辑文本内容。
- 底行模式:可进行保存、退出、显示行号等操作,如
:wq保存并退出,:q!不保存退出,:set nu显示行号,:set nonu取消行号显示,:n定位到第 n 行。
查找命令
| 命令 | 作用 | 语法 | 示例 |
|---|---|---|---|
find | 在指定目录下查找文件 | find dirName -option fileName | find . –name "*.log"在当前目录及子目录查找.log 结尾文件;find /itcast -name "*.log"在指定目录查找 |
grep | 从指定文件中查找指定文本内容 | grep [-inAB] word fileName,-i忽略大小写,-n显示行号,-A输出关键字所在行及之后几行,-B输出之前几行 | grep Hello HelloWorld.java查找文件中 Hello 字符串位置;grep hello *.java查找当前目录.java 文件中包含 hello 字符串的位置 |
Linux 软件安装
安装方式介绍
- 二进制发布包安装:软件已针对平台编译打包,解压并修改配置即可使用。
- rpm 安装:软件按 redhat 包管理规范打包,用
rpm命令安装,但不能自动解决库依赖问题。 - yum 安装:在线软件安装方式,本质是
rpm安装,可自动下载安装包并解决库依赖问题。 - 源码编译安装:软件以源码工程发布,需自行编译打包。
安装 JDK
- 使用 FinalShell 上传
jdk-17.0.10_linux-x64_bin.tar.gz到 Linux。 - 解压:
tar -zxvf jdk-17.0.10_linux-x64_bin.tar.gz -C /usr/local。 - 配置环境变量:用
vim修改/etc/profile,在末尾添加:
export JAVA_HOME=/usr/local/jdk-17.0.10
export PATH=$JAVA_HOME/bin:$PATH
- 重新加载配置:
source /etc/profile。 - 检查安装:
java -version。
安装 MySQL
- 卸载自带安装包:
rpm –qa | grep mariadb查找,rpm –e –nodeps mariadb-libs-5.5.60-1.el7_5.x86_64卸载。 - 上传并解压安装包,移动并重命名:
tar -xvf mysql-8.0.30-linux-glibc2.12-x86_64.tar.xz,mv mysql-8.0.30-linux-glibc2.12-x86_64 /usr/local/mysql。 - 配置环境变量:编辑
/etc/profile,添加:
export MYSQL_HOME=/usr/local/mysql
export PATH=$MYSQL_HOME/bin:$PATH
- 注册为系统服务:
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql,chkconfig --add mysql。 - 初始化数据库:
groupadd mysql
useradd -r -g mysql -s /bin/false mysql
mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data
记录 root 用户临时密码。
6. 启动服务并登录,配置密码和远程访问:
systemctl start mysql
mysql -uroot -pxxxxx
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '1234’;
CREATE USER 'root'@'%' IDENTIFIED BY '1234’;
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%’;
FLUSH PRIVILEGES;
安装 Nginx
- 安装依赖:
yum install -y pcre pcre-devel zlib zlib-devel openssl openssl-devel。 - 上传并解压源码包:
tar -zxvf nginx-1.20.2.tar.gz。 - 进入解压目录配置:
cd nginx-1.20.2,./configure --prefix=/usr/local/nginx。 - 编译安装:
make,make install。 - 启动服务:进入
/usr/local/nginx,执行sbin/nginx。
项目部署
前端项目部署
- 将前端打包好的静态资源上传到 Nginx 的
html目录。 - 配置 Nginx 配置文件
conf/nginx.conf,在http中添加:
server {listen 80;server_name localhost;client_max_body_size 10m;location / {root html;index index.html index.htm;try_files $uri $uri/ /index.html;}location ^~ /api/ {rewrite ^/api/(.*)$ /$1 break;proxy_pass http://localhost:8080;}
}
- 在 Nginx 安装目录执行
sbin/nginx启动服务。Nginx 常用操作:
- 启动:
sbin/nginx - 停止:
sbin/nginx -s quit - 重新加载:
sbin/nginx -s reload
服务端项目部署
- 执行 Maven 父工程的
package生命周期打包项目(确保连接服务器数据库并测试通过)。 - 在 Linux 服务器
/usr/local目录创建app目录,上传 jar 包。 - 运行 jar 包:
java -jar xxxxxx.jar,若要后台运行,使用nohup java -jar xxxxxx.jar &> tlias.log &。 - 查看进程:
ps -ef | grep xxxx。 - 杀死进程:
kill -9 xxxx。
总结
本文全面介绍了 Linux 项目部署相关知识,从系统基础到常用命令,再到软件安装和项目部署实战,涵盖了 Linux 使用过程中的关键环节。希望通过这些内容,能帮助大家在 Linux 环境下更高效地进行项目开发和部署。在实际操作中,不断积累经验,深入理解 Linux 系统的强大功能,为软件开发和运维工作提供有力支持。
相关文章:
【学习总结|DAY037】Linux 项目部署
引言 在当今的软件开发领域,Linux 以其安全、稳定、免费且开源的特性,成为项目部署的首选操作系统。无论是 Java 项目,还是各类开发、测试、生产环境中的软件安装,Linux 都占据着重要地位。本文将结合我今天所学内容,…...
Spring Boot Actuator使用
说明:本文介绍Spring Boot Actuator的使用,关于Spring Boot Actuator介绍,下面这篇博客写得很好,珠玉在前,我就不多介绍了。 Spring Boot Actuator 简单使用 项目里引入下面这个依赖 <!--Spring Boot Actuator依…...
[css] 黑白主题切换
link动态引入 类名切换 css滤镜 var 类名切换 v-bind css预处理器mixin类名切换 【前端知识分享】CSS主题切换方案...
阿里云专有云网络架构学习
阿里云专有云网络架构 叶脊(spine-leaf)网络和传统三层网络拓扑对比 阿里云网络架构V3拓扑角色介绍推荐设备设备组网举例带外管理网络带外网和带内网对比设备介绍 安全网络设备介绍 参考 后续更新流量分析叶脊(spine-leaf)网络和传…...
【AIGC】冷启动数据与多阶段训练在 DeepSeek 中的作用
博客主页: [小ᶻ☡꙳ᵃⁱᵍᶜ꙳] 本文专栏: AIGC | ChatGPT 文章目录 💯前言💯冷启动数据的作用冷启动数据设计 💯多阶段训练的作用阶段 1:冷启动微调阶段 2:推理导向强化学习(RL࿰…...
在SIP路由中,常见的对接方式
好的,我已将应用场景和案例分为两列。修改后的表格如下: 对接方式描述应用场景案例注册 (REGISTER)用于用户注册,将用户位置(如IP地址)与其用户名进行绑定。用户通过发送REGISTER请求将自己注册到SIP服务器。注册过程…...
GenAI + 电商:从单张图片生成可动态模拟的3D服装
在当今数字化时代,电子商务和虚拟现实技术的结合正在改变人们的购物体验。特别是在服装行业,消费者越来越期待能够通过虚拟试衣来预览衣服的效果,而无需实际穿戴。Dress-1-to-3 技术框架正是为此而生,它利用生成式AI模型(GenAI)和物理模拟技术,将一张普通的穿衣照片转化…...
harmonyOS生命周期详述
harmonyOS的生命周期分为app(应用)的生命周期和页面的生命周期函数两部分 应用的生命周期-app应用 在app.js中写逻辑,具体有哪些生命周期函数呢,请看下图: onCreated()、onShow()、onHide()、onDestroy()这五部分 页面及组件生命周期 着重说下onShow和onHide,分别代表是不是…...
记一次调整磁盘分区大小的经验
背景 redhat 6 系统 根目录挂载的逻辑卷满了,系统都不能正常运行了 但是/home目录挂载的另外一个逻辑卷却占用只有4% 所以想把/home挂的逻辑卷分一部分给/ 挂的逻辑卷 备份 先把系统整盘备份一下,用clonezilla做一个磁盘镜像,免得失误了搞…...
css:怎么设置图片不变形
问: main元素中有一个img元素,这个img src‘/assets/images/tupian.png’css设置了img元素width:50% height:50%但是图片变形了,我应该怎么设置保持图片样式不变形 回答: 为了确保图片在调整大小时不变形࿰…...
软件测试就业
文章目录 2.6 初识一、软件测试理论二、软件的生产过程三、软件测试概述四、软件测试目的五、软件开发与软件测试的区别?六、学习内容 2.7 理解一、软件测试的定义二、软件测试的生命周期三、软件测试的原则四、软件测试分类五、软件的开发与测试模型1.软件开发模型…...
【Pandas】pandas Series sum
Pandas2.2 Series Computations descriptive stats 方法描述Series.abs()用于计算 Series 中每个元素的绝对值Series.all()用于检查 Series 中的所有元素是否都为 True 或非零值(对于数值型数据)Series.any()用于检查 Series 中是否至少有一个元素为 T…...
后缀表达式(蓝桥杯19I)
有减于号时 假设有n个大于0从大到小的数,加减符号数为n-1:a,b,c,d,。。。。。,e sum求最大:(max )-(min ) a - (e - ( ) -())( ( )( ) ( ) 。。。。 ) 当序列中有负数时: a -&am…...
问题大集04-浏览器阻止从 本地 发起的跨域请求,因为服务器的响应头 Access-Control-Allow-Origin 设置为通配符 *
1、问题 localhost/:1 Access to XMLHttpRequest at xxx(请求) from origin http://localhost:xxx(本地) has been blocked by CORS policy: The value of the Access-Control-Allow-Origin header in the response must not be t…...
mac环境下,ollama+deepseek+cherry studio+chatbox本地部署
春节期间,deepseek迅速火爆全网,然后回来上班,我就浅浅的学习一下,然后这里总结一下,我学习中,总结的一些知识点吧,分享给大家。具体的深度安装部署,这里不做赘述,因为网…...
TypeScript 中的联合类型:灵活的类型系统
🤍 前端开发工程师、技术日更博主、已过CET6 🍨 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 🕠 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 🍚 蓝桥云课签约作者、上架课程《Vue.js 和 E…...
DeepSeek-R1 32B Windows+docker本地部署
最近国产大模型DeepSeek兴起,本地部署了一套deepseek同时集成Open WebUI界面,给大家出一期教程。 软件:Ollama、docker、Open WebUI 一、用Ollama下载模型 首先我们需要安装Ollama,它可以在本地运行和管理大模型。 到Ollama官网 https://ol…...
MySQL部署基于二进制日志文件位置的主从复制集群
MySQL主从复制介绍 MySQL 主从复制(Master-Slave Replication) 作为一种经典的数据库复制方案,被广泛应用于企业生产环境,尤其是在提升数据库性能、实现数据备份和分布式扩展方面具有重要作用。 官方文档:https://de…...
AIOS: 一个大模型驱动的Multi-Agent操作系统设计与Code分析
AIOS: 一个大模型驱动的Multi-Agent操作系统设计与Code分析 随着人工智能技术的快速发展,传统操作系统逐渐暴露出难以适应AI时代多样化需求的局限性。特别是在支持多个智能体协同工作方面存在显著不足。为此,我们提出了一种名为AIOS(Artifici…...
C++Primer学习(2.2)
2.2 变量 变量提供一个具名的、可供程序操作的存储空间。C中的每个变量都有其数据类型,数据类型决定着变量所占内存空间的大小和布局方式、该空间能存储的值的范围,以及变量能参与的运算。对C程序员来说,“变量(variable)”和“对象(object)”一般可以互换使用。 术…...
Mac 基于Ollama 本地部署DeepSeek离线模型
最近节日期间最火的除了《哪吒》就是deepseek了,毕竟又让西方各个层面都瑟瑟发抖的产品。DeepSeek凭借其强大的AI能力真的是在全球多个领域展现出强大的影响力。由于受到外部势力的恶意攻击倒是deepseek官方服务不稳定,国内其他厂家的适配版本也不是很稳…...
GAID:广告id,即Google Advertising ID(GAID),是由Google Play service提供给用户的可以重置的唯一广告id,通常也被用来作为设备的唯一标识,用于数据收集。但用户手机上必须安装有google play服务…...
基于kamailio开发VoIP管理系统的方案【CHATGPT提供】
好的,以下是更新后的最终方案,加入了按秒计费功能,并汇总了各个功能模块的详细描述: 最终方案:VoIP管理系统功能模块 功能模块功能描述应用场景SIP 注册服务器处理用户注册请求,维护用户的位置信息&#…...
机器学习数学基础:14.矩阵的公式
1. 操作顺序可交换 对于矩阵 A A A,若存在两种运算 ? ? ?和 ? ? ?,使得 ( A ? ) ? ( A ? ) ? (A^{?})^{?}\ (A^{?})^{?} (A?)? (A?)?,这意味着这两种运算的顺序可以交换。由此我们得到以下三个重要等式: ( A …...
DeepSeek-V2 论文解读:混合专家架构的新突破
论文链接:DeepSeek-V2: A Strong, Economical, and Efficient Mixture-of-Experts Language Model 目录 一、引言二、模型架构(一)多头部潜在注意力(MLA):重塑推理效率(二)DeepSeekM…...
C语言的灵魂——指针(3)
前言:上期我们介绍了const修饰指针,saaert断言都是针对指针本身的,文章后面我们用指针与数组建立了联系,这种联系或者是关系就是这篇文章所要介绍的。上一篇文章的传送门:指针2 指针3 一,数组名的含义及理解…...
机器学习之Transformer 模型
Transformer 模型详解 Transformer 是由 Vaswani et al. 在 2017 年 提出的模型,最初用于 机器翻译 任务,并迅速成为自然语言处理(NLP)领域的标准模型架构。与传统的 RNN(循环神经网络) 和 LSTM(长短期记忆网络) 不同,Transformer 的核心思想是 完全基于自注意力机制…...
SSD1306 128*32屏幕驱动
最近在做一个小项目,使用合宙air001做主控,arduino开发环境,项目设计一个小屏作为显示,本身使用u8g2库,奈何这个air001空间太小,没写多少就把程序储存空间占满了,log也没办法打印,对…...
【GitHub】GitHub 2FA 双因素认证 ( 使用 Microsoft Authenticator 应用进行二次验证 )
文章目录 一、GitHub 的 2FA 双因素认证二、使用 Microsoft Authenticator 应用进行二次验证1、TOTP 应用2、下载 Microsoft Authenticator 应用3、安装使用 Authenticator 应用 三、恢复码重要性 一、GitHub 的 2FA 双因素认证 现在登录 GitHub 需要进行二次身份验证 ; 先登录…...
CNN-day5-经典神经网络LeNets5
经典神经网络-LeNets5 1998年Yann LeCun等提出的第一个用于手写数字识别问题并产生实际商业(邮政行业)价值的卷积神经网络 参考:论文笔记:Gradient-Based Learning Applied to Document Recognition-CSDN博客 1 网络模型结构 …...
