Linux的基本使用和web程序部署

news2024/11/26 16:39:20

注意:本文章不适合C++学习者(知识点远远不够),只适合Java学习者,学习简单的Linux命令

1.Linux的背景知识

1.1Linux是什么

Linux是一个操作系统,和Windows是“并列”的关系。经过多年的发展,Linux称为了世界第一大操作系统。Linux系统被广泛应用于服务器领域、嵌入式设备,还是有移动端。

有人可能表示,Linux都是世界第一大操作系统,我怎么没有听说过呢?其实你听说过,安卓系统本质上就是Linux系统

1.2Linux发行版

Linux严格意义上只是一个“操作系统的内核”

一个完整的操作系统 = 操作系统内核 + 配套的应用程序

由于Linux是一个完全开源免费的内核,因此有些公司/开源组织基于Linux内核,提供了不同的配套程序,也就构成了不同的“发行版”

 企业中主要使用的发行版本有RedHat(红帽)(收费),我们要使用的是CentOS(免费)(红帽上方)。

CentOS和RedHat的关系

CentOS和RedHat没有什么区别,却别就是在于logo不同。CentOS因为属于免费的,不会提供任何的商业服务。RedHat因为是收费,会提供相应的商业服务,在服务器上可以上他们的技术人员定位软件的问题所在。因为比较便宜,所以很多公司使用。

1.3关于LInux我们学习什么

1)基础命令

Linux虽然有图形化界面,但是在 服务器/嵌入式设备上往往是通过命令的方式操作的。因此学习Linux命令就是使用Linux的重要基础。

使用命令相比于使用图形化界面有什么好处?

  • 节省系统资源:运行图形界面需要让系统付出一些额外的开销,如果对于嵌入式设备,可能没有这个条件。
  • 节省网络宽带:如果通过网络访问服务器,图形化界面需要一帧一帧的传输图像,而命令只需要传输字符串。
  • 便于批量执行任务:可以通过一些“脚本”代码来批量完成一些任务,完成一些简单的工作。

2)系统编程 & 网络编程

Linux自身提供了一些API,供程序员调用来完成一些更加复杂的编程任务(比如文件操作,多线程编程,socket编程等)

但是由于Java跨平台的特性,这些功能已经被Java自身封装好了(流对象,Thread对象,Socket对象)

3)JavaWeb项目

我们自己写web程序,要想让其他用户能够访问,就需要发布到服务器上。这也是我们接下来学习的重点。

2.Linux环境搭建

2.1环境搭建方式

我们使用云服务器,可以在 阿里云、腾讯云、华为云 等服务器厂商购买一个云服务器。

如阿里云等都为在校大学生提供了优惠,我们只需注册和认证学生省份,基本是10元每月,还是比较便宜的。在选择的时候我们配置最低的服务器就行。

使用云服务器我们不仅环境搭建简单,可以避免反复的折腾,同时还有一个好处,部署在云服务器上可以被外网访问到。

2.2使用云服务器

我们以腾讯云为例(如果购买过程中,有什么操作不了的,我们可以联系腾讯云客服小姐姐)

  • 进入官方网站学生云服务器_学生云主机_学生云数据库_云+校园特惠套餐 - 腾讯云 (tencent.com)(或者直接搜索腾讯云校园计划)
  • 登录网站,并进行学生验证
  • 选择并购买

  •  并选择镜像(CentOS 7.6),并购买

  •  购买后进入控制台,点击进去就能看到服务器的IP地址

  •  设置root密码:我们勾选服务后,我们要重置密码,root密码建议设置的复杂一些,否则会被黑客入侵

 2.3使用终端软件链接到Linux

2.3.1什么是终端软件

终端软件是一类工具,可以和远程的主机简历网络连接,从而对主机进行一些操作。

常见的终端软件有:

  • Xshell
  • Putty
  • MobaXterm
  • ....

我们使用的是XShell

2.3.2下载安装XShell

安装地址:XSHELL - NetSarang Website

  • 点击下载

  •  下拉,获取免费授权页面

  •  点击下载即可

 2.3.3使用XShell登录主机

在XShell终端下输入

ssh 服务器外网ip地址

关于复制粘贴问题

复制:ctrl + insert

粘贴:shift + insert

ctrl + c / v 是在win环境下的操作,上面的操作在win环境也是成立的

3.Linux常用命令

ls

语法:ls[选项][目录或文件]

功能:对于目录,该命令列出该目录下的所有子目录与文件。对于文件,将列出文件名以及其他信息

常用选项

  • -a 列出目录下的所有文件,包含以.开头的隐藏文件
  • -d 只列出目录(不递归列出目录内的文件)。如ls -d 指定目录
  • -k 以k字节的形式表示文件的大小。 ls - alk 指定文件
  • -l 列出文件的详细信息
  • -r 对目录反向排序
  • -t 以时间排序
  • -R 列出所有子目录下的文件。(递归)

pwd

语法:pwd

功能:显示用户当前所在的目录,用户防止用户迷路,忘记自己所在的位置

cd

Linux系统中,磁盘上的文件和目录被组成一颗目录树,每个节点都是目录或文件

语法:cd 目录名

功能:改变工作目录。将当前工作目录改变到指定的目录下。

举例:

cd .. :返回上级目录

cd ~ :返回根目录

cd -  :返回最近访问目录

相对路径VS绝对路径

形如:/usr/share/tomcat/logs/以根目录开头的的,称为绝对路径

形如:./logs以.或者..开头的,称为相对路径

使用tab补全

我们敲的所有的Linux命令,都可以使用tab键来尝试补全,加快效率

使用ctrl + c重新输入

如果命令或目录敲错了,可以ctrl + c取消当前的命令

touch

语法:touch [选项]... 文件 ...

功能:touch命令参数可更改文档或目录的日期时间,包括存取时间和更改时间,或者新建一个不存在的文件。

举例:

touch text.txt

cat

语法:cat [选项][文件]

功能:查看目标文件的内容

常用选项:

-n 对输出的所有行编号

cat test.txt

mkdir

语法:mkdir [选项] dirname...

功能:在当前目录下创建一个名为"dirname"的目录

常用选项:

  • -p, --parents可以是一个路径名称。此时若路径中的某些目录尚不存在,加上此选项后,系统将自动建立好哪些尚不存在的目录,即一次可以建立多级目录

举例:

mkdir -p test/test1 :递归建立多个目录

rm

语法:rm [-f-i-r-v] [dirName/dir]

功能:​​​删除目录或文件

常用选项:

  • -f 即使文件属性为只读(即写保护),亦可直接删除
  • -i 删除前逐一询问确认
  • -r 删除目录及其下的所有文件

举例:

rm -rf test    (注意此代码谨慎使用)

注意事项:

千万不要运行 rm -rf /, 尤其是在公司的生产服务器上,这将不仅仅会导致大量的数据丢失,也会导致系统无法使用

cp

语法:cp [选项] 源文件或者目录 目标文件或目录

功能:复制文件或者目录

说明:cp指令用于复制文件或目录,如同时指定两个以上的文件或目录,且最后的目的地是一个已经存在的目录,则他会把前面指定的的所有文件或目录复制到此目录中。如果同时指定多个文件或目录,而最后的目的地并非一个已经存在的目录,则会出现错误信息

常用选项:

  • -f 或 --force 强行复制文件或目录,不论目的文件或目录是否已经存在
  • -i 或 --interactive 覆盖文件之前先询问用户
  • -r 递归处理,将指定目录下的文件和子目录一并处理。若源文件或目录的形态,不属于目录或符号链接,则一律视为普通文件处理
  • -R 或 --recursive递归处理,将指定目录下的文件及子目录一并处理

举例:

cp test1.txt texs2.txt      复制test.txt当前目录下面,并更改名字成test2.txt

mv

语法:mv [选项]源文件或目录 目标文件或目录

功能:

  • 视mv命令中第二个阐述类型的不同(是目标文件还是目标目录),mv命令将文件重命名或将其转移到一个新的目录中
  • 当第二个参数类型是文件时,mv命令完成文件重命名,此时,源文件只能有一个(也可以是源目录名),它将所给的源文件或目录重命名为给定的目标文件名
  • 当第二个参数是已经存在的目录名称时,源文件或目录参数可以有多个,mv命令将各参数指定的源文件均移动到目标目录中。

选项:

  • -f : force 强制的意思,如果目标文件已经存在,不会询问而直接覆盖
  • -i :若目标文件已经存在时,就会询问是否覆盖

举例

mv test1.txt text2.txt

man

Linux的命令有很多的参数,我们不可能全部记得,我们客户以通过查看联机手册获取帮助

语法:man [选项] 命令

常用选项:

  • -k 根据关键字搜索联机帮助
  • num 只在第num章节找
  • man man 能看到man手册中的若干各章节及其含义

举例:

man ls

vim

vim时一个知名的文本编辑器,使用vim可以对文本进行编辑

vim 就相当于Windows的记事本,之不够功能比记事本强大一些

1)创建/打开文件

vim [文件名]

2)进入插入模式

vim打开文件后默认是普通模式。普通模式下键盘的按键表示一些特殊功能的快捷键(例如按下 j 并不是输入字母'j',而是表示光标往下移动一样。需要进入插入模式才能进行文本编辑

使用 i 键可以进入到插入模式。(左下角会提示 --INSERT-- )然后就可以像记事本一样正常编辑了

3)保存

在插入模式下不能保存文件,需要先回到普通模式。按下Esc就可以回到普通模式

在普通模式下输入 “:w",再按下回车,就可以保存文件了

4)退出

在插入模式下,不能退出,需要先回到普通模式

在普通模式下输入 “:q:,再按下回车,就可以退出了

也可以直接使用“:wq"同时执行保存和退出

关于Vim的用法,还有很多,感兴趣的可以参考vimtutor(直接再终端输入vimtutor即可进入官方教程)和<<Vim实用技巧>>

grep

语法:grep [参数]... [文件]...

功能:用于查找文件中是否包含指定字符串,并显示对应的行

选项:

  • -n<行数> 显示的行数
  • -w 全字匹配,要求整个单词都全部相同才能匹配出来,而不仅仅是一个单词的一部分
  • -r 递归查找,可以搜索多级目录下的所有文件
  • --color 高亮查找到的结果
  • --include 指定查找某些文件
  • --exclude 指定排除某些文件

举例:

grep "hello" hello.java

ps

语法:ps [参数]

功能:用于查看当前系统上运行的程序

选项

  • a显示一个终端的所有进程
  • u以用户为主的格式来显示进程状况
  • x显示所有进程,不以终端机来区分

举例:

ps aux    # 显示系统上的所有进程

ps aux | grep "进程名"

ps aux | grep "进程id"

netstat

语法:netstat [参数]...

功能:查看系统上的网络状态

3.搭建Java部署环境

3.1yum

3.1.1认识yum

yum(Yellow dog Updater,Modified)是Linux下非常常用的一种包管理器,主要应用在Fedora,RedHat,CentOS等发行版上

包管理工具就好比“应用商店”,我们可以在应用商店上下载一些app

yum起到的功能和Maven的依赖管理功能类似,使用Maven能帮我们方便的安装一些第三方jar包,而yum方便我们安装第三方程序

查看软件包列表

yum list | grep [软件包关键字]   #注意最好加上grep,否则罗列的内容会非常多,导致非常卡的情况

安装软件包(需要管理员权限)

yum install [软件包名字]

卸载软件包(需要管理员权限)

yum remove [软件包名字]

注意事项

  • yum 的所有命令必须保证网络是联通的情况下,才能使用(云服务器一般网络都是良好的)
  • yum install / yum remove必须有管理员权限(root用户)
  • 可以使用 ping www.baidu.com 来检测网络的畅通情况

3.2JDK

yum install java-1.8.0-openjdk.x86_64

使用 java -version 验证是否安装成功,成功将会显示信息,不成功会提示找不到命令

3.3Tomcat

由于yum源上默认的Tomcat 7版本,比较旧了,所以我们需要使用手动安装Tomcat 8

1.下载Tomcat压缩包

下载路径可以参考官网Apache Tomcat® - Apache Tomcat 8 Software Downloads

【注意】:我们要下载Tomcat 8版本

现在完安装包后,Linux执行命令 yum install lrzsz.x86_64 ,下载可以从Win上传文件到Linux的软件,并确认安装。然后拖动安装到Linux即可

 

 2.解压缩Tomcat

unzip apache-tomcat-8.5.47.zip

如果找不到 unzip 命令,则先 yum install unzip

3.修改可执行权限

cd apache-tomcat-8.5.47/bin

chmod  +x  *.sh

4.启动Tomcat

sh bin/startup.sh

验证是否启动成功的方法

# 方法1 查看 tomcat 进程是否存在

ps aux | grep tomcat

# 方法2 查看短裤哦 8080是否被绑定

netstat -anp | grep 8080

# 方法3 使用 curl 命令访问默认 demo

curl 127.0.0.1:8080

如果进程存在或端口状态正确或者能够访问到默认主页,说明启动成功

5.Tomcat的目录结构

Linux的Tomcat目录结构和Windows完全一致(就是同一个zip包解压缩出来的)

6.外网访问tomcat默认demo

在浏览器地址栏中

http://[服务器外网ip]:8080/

即可看到Tomcat的主页

在外网访问这个主页之前我们需要先开启服务器的“安全组”功能

登录自己的云服务账户,在主页中找到 控制台->自己的服务器->安全组

需要配置安全组,允许外部主机访问服务器的8080端口

(1)选择加入安全组(我这是阿里云的服务器)

 

 (2)选择新建安全组

 

(3)进行相应的输入

(4)每个云服务器的厂家配置的方式都太一样,如果真的不会,我们可以给客服打电话

 3.4MySQL

MySQL同样可以使用yum安装,但是我们要修改一些配置,稍微复杂一些

【注意】以下操作都以root用户进行操作

我们安装的MariaDB是MySQL的一个分支,完全兼容MySQL的,由于MySQL被甲骨文公司收购,MySQL的创世人又创建了MariaDB

安装

安装mariadb服务

# yum install -y mariabd-server

安装marabd命令行客户端

# yum install -y mariabd

安装mariadb C library

# yum install -y mariadb-libs

安装mariadb开发包

# yum install -y mariadb-devel

启动

启动服务

# systemctl start mariadb

设置服务开启自启动

# systemctl enable mariadb

查看服务状态

# systemctl status mariadb

 测试链接

使用命令行客户端尝试连接

# mysql -uroot

 查看版本号

MariaDB[(none)] > select version();

 由于我们并没有进行相应的配置,在创建相应的数据库时我们要设置字符集为utf8

create database name charset utf8;

在数据库运行过程中出现问题,我们可以查看MySQL的错误日志

mysql> show variables like 'log_error';

使用vim或less查看该文件内容即可

less /var/log/mariadb/mariadb.log

4.部署Web项目到Linux

4.0什么是部署

工作中涉及到的“环境”

  • 开发环境:程序员自己写代码的机器
  • 测试环境:测试人员测试程序使用的机器。一般是退役下来的部署机器
  • 生产环境(线上环境):最终项目发布时所使用的机器,对稳定性要求很高

把程序拷贝到到安装环境上,这个过程称为“部署”,也叫做“上线”

这个过程需要拷贝对应 .class 文件和依赖的资源文件(各种配置文件,html等)

一旦程序部署成功,这个程序就会被所有的用户看到

部署过程至关重要,属于程序开发中最重要的一环,一旦出现问题了,极可能导致严重的事故

为了防止部署错误,一般公司内部都会有一些自动部署工具,如Jenkins等。当前我们先使用手工部署的方式

【注意】我们下面要部署的程序是一个博客系统,源代码可查看blog_system · 风夏/JavaEE初级 - 码云 - 开源中国 (gitee.com)

4.1数据库建表

按照之前的数据库建表脚本,在服务器上运行,建立相同的表结构

# 让mysql执行建表脚本

mysql -uroot  <  db.sql

4.2构造项目并打包

使用IDEA的maven针对项目进行打包

4.3拷贝到Tomcat中

将war包拷贝到Tomcat的 webapps目录中

稍等片刻,tomcat会自动解压缩war包,并完成部署

4.4验证

在浏览器上访问项目的连接。看是否部署成功,以及项目是否有问题

【注意】如果我们使用JDBC,开发环境下的数据库密码和Linux环境下的密码不一样,我们要做出修改

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/753572.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

控制台警告:Added non-passive event listener to a scroll-blocking <some> event

页面中的echarts图表缩放后在控制台就会出现以下提醒&#xff0c;虽然只是报黄提醒&#xff0c;但本人强迫症严重,见不得控制台有任何异常...... [Violation] Added non-passive event listener to a scroll-blocking <some> event. Consider marking event handler as …

python+pytest接口自动化之测试函数、测试类/测试方法的封装

目录 前言 测试用例封装的一般规则 测试函数的封装 测试类/方法的封装 示例代码 总结 前言 在pythonpytest 接口自动化系列中&#xff0c;我们之前的文章基本都没有将代码进行封装&#xff0c;但实际编写自动化测试脚本中&#xff0c;我们都需要将测试代码进行封装&#…

并不简单的代理,Dubbo是如何做服务引用的

系列文章目录 【收藏向】从用法到源码&#xff0c;一篇文章让你精通Dubbo的SPI机制 面试Dubbo &#xff0c;却问我和Springcloud有什么区别&#xff1f; 超简单&#xff0c;手把手教你搭建Dubbo工程&#xff08;内附源码&#xff09; Dubbo最核心功能——服务暴露的配置、使用…

2023/07/14 UML图/流程图/泳道图是什么

UML图 UML图中的几种图简介&#xff08;时序图&#xff0c;协作图&#xff0c;状态图&#xff0c;活动图&#xff0c;对象图&#xff09; 泳道图 适合做这种效果&#xff0c;体现角色关系 流程图 定义 绘制要素 开始/结束&#xff1a;用一个椭圆标识&#xff0c;代表流畅的开…

优维EasyOps产品使用最佳实践:Agent存活性监控

优维EasyOps平台内置Agent存活性监控啦&#xff01; Agent作为自动化/监控底层核心组件&#xff0c;它的可用性直接影响了上层功能的使用&#xff0c;故我们会非常关注它的状态。但如果有网络波动、Agent升级或机器故障等都可能导致Agent异常&#xff0c;这时用户希望这种异常…

初级 - 如何搭建一个Java Web项目 - 记录

目录 序言一、使用 Spring Initializr 创建创建一个Java 项目基本框架的方法1. 新建项目时&#xff0c;安装依赖理解Developer Tools 选项 &#xff01;Web 选项 &#xff01; 其他选项具体详情请最下面的参考链接&#xff0c;这里就不一一列举了&#xff0c;只筛选出笔者当前需…

科技政策 | 国家网信办等七部门联合公布《生成式人工智能服务管理暂行办法》

文 | BFT机器人 近日&#xff0c;国家网信办联合国家发展改革委、教育部、科技部、工业和信息化部、公安部、广电总局公布《生成式人工智能服务管理暂行办法》&#xff08;以下称《办法》&#xff09;&#xff0c;自2023年8月15日起施行。国家互联网信息办公室有关负责人表示&a…

零代码编程:用ChatGPT自动登陆微信公众号后台

要实现微信公众号后台自动登陆&#xff0c;可以使用ChatGPT来编写Python代码实现。 微信公众平台账号密码登陆&#xff0c;要先点击“使用账号登录”&#xff0c;源代码是&#xff1a;<a href"javascript:;" class"login__type__container__select-type"…

Python自动化之pytest常用插件

目录 1、失败重跑 pytest-rerunfailures 2、多重校验 pytest-assume 3、设定执行顺序 pytest-ordering 4、用例依赖&#xff08;pytest-dependency&#xff09; 5.分布式测试(pytest-xdist) 6.生成报告&#xff08;pytest-html&#xff09; 1、失败重跑 pytest-rerunfailu…

web 前端 Day 4

盒子模型 <style>div {width: 300px;height: 300px;background-color: pink;padding-left: 4px; 左侧内边距border: 3px solid red;margin: 50px;}</style> padding 内边距 </head> ​ <body> ​<div>cfdaffshydghjgdjdnjjjjjjjjjjjjjjj&l…

springboot网吧管理系统

着科学技术发展&#xff0c;电脑已成为人们生活中必不可少的生活办公工具&#xff0c;在这样的背景下&#xff0c;网络技术被应用到各个方面&#xff0c;为了提高办公生活效率&#xff0c;网络信息技术飞速发展。在这样的背景下人类社会进入了全新的信息化的时代。网吧管理一直…

Jenkins持续集成项目实践 —— 基于Python Selenium自动化测试(二)

上一篇讲了如何搭建jenkins&#xff0c;这篇主要讲&#xff0c;怎么将自动化代码与jenkins衔接起来 jenkins上运行的两种方式&#xff1a; 第一种&#xff0c;在jenkins上面运行本地代码&#xff0c;操作如下: 新建项目&#xff1a;项目名称根据自己项目情况填写并选择自由模…

【C语言初阶(16)】操作符2

文章目录 Ⅰ关系操作符Ⅱ 逻辑操作符⒈操作符介绍⒉短路求值 Ⅲ 条件操作符Ⅳ 逗号表达式Ⅴ 下标引用、函数调用和结构成员⒈[ ] 下标引用操作符⒉( ) 函数调用操作符⒊结构体成员访问操作符 Ⅵ 表达式求值⒈隐式类型转换&#xff08;整型提升&#xff09;⒉算术转换⒊操作符的…

精品项目源码第52期运动会管理系统(代号V052)

精品项目源码第52期运动会管理系统(代号V052) 大家好&#xff0c;小辰今天给大家介绍一个运动会管理系统&#xff0c;演示视频公众号&#xff08;小辰哥的Java&#xff09;对号查询观看即可 文章目录 精品项目源码第52期运动会管理系统(代号V052)难度指数&#xff08;中高等&…

uboot、kernel启动过程分析

00、uboot的宏观启动 第1种&#xff1a;bootROM读取SPL到片内RAM&#xff0c;SPL初始化DDR&#xff0c;SPL把uboot程序copy到DDR&#xff0c;uboot启动进行必要外设初始化、自我拷贝、重定位等。 第2种&#xff1a;bootROM直接读取uboot的头部信息&#xff08;IVT、DCD&#xf…

python详解(8)——进阶(2):初步算法

目录 &#x1f3c6;一、前言 &#x1f3c6;二、时间复杂度 &#x1f3c6;三、递推 &#x1f6a9;1.简介 &#x1f6a9;2.爬楼梯 &#x1f6a9;3、猴子吃桃 &#x1f3c6;四、递归 &#x1f6a9;1、简介 &#x1f6a9;2、递归求斐波那契数列 &#x1f6a9;3、递归求阶乘 &#x…

【Git】Git 拉取的快速方法(含项目示例)

文章目录 一、问题的提出二、问题的尝试解决 一、问题的提出 在我们之前的拉取中&#xff0c;速度可能比较慢&#xff0c;例如&#xff0c;我们要拉取CLIP的项目。 (ldm) rootI1385efcc2300601b29:/hy-tmp/latent-diffusion# pip install githttps://github.com/openai/CLIP.…

Redis 从入门到精通【进阶篇】之高可用集群(Redis Cluster)详解

文章目录 0. 前言设计目标核心概念 1. 架构设计和原理1.1. 数据分片2. 节点间通信6. 扩容和缩容 2. 总结3. Redis从入门到精通系列文章4. Redis Cluster面试题4.1. Redis Cluster如何进行扩容和缩容&#xff1f;4.2. Redis Cluster如何进行故障转移&#xff1f;4.3. Redis Clus…

【计算机视觉 | 图像分类】arxiv 计算机视觉关于图像分类的学术速递(7 月 14 日论文合集)

文章目录 一、分类|识别相关(10篇)1.1 Video-FocalNets: Spatio-Temporal Focal Modulation for Video Action Recognition1.2 Watch Your Pose: Unsupervised Domain Adaption with Pose based Triplet Selection for Gait Recognition1.3 YOLIC: An Efficient Method for Obj…

【JavaEE】HTTP请求的构造

目录 1、通过form表单构造HTTP请求 2、通过JS的ajax构造HTTP请求 3、Postman的安装和简单使用 常见的构造HTTP请求的方式有一下几种&#xff1a; 直接通过浏览器的地址栏&#xff0c;输入一个URL&#xff0c;就可以构造一个GET请求HTML中的一些特殊标签&#xff0c;也会触发…