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

注意:本文章不适合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 [参数]...

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

选项:

  • -a 显示所有正在或者不在监听的套接字
  • -n 显示数字形式而不是去解析主机、端口或用户名
  • -p 显示套接字所属进程的PID和名称

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.hqwc.cn/news/27800.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Three.js——十三、自定义大小画布、UI交互按钮以及3D场景交互、渲染画布为文件(图片)

画布全屏以及自定义大小画布 <!-- canvas元素默认是行内块元素 --> <divclass"model"style"background-color: #ff0000;"width"300"height"180" ></div>画布随窗口变化 // 画布跟随窗口变化 window.onresize fun…

Qt 项目架构之----MVC架构

MVC 模式代表 Model-View-Controller&#xff08;模型-视图-控制器&#xff09; 模式。这种模式用于应用程序的分层开发。 Model&#xff08;模型&#xff09;-是应用程序中用于处理应用程序数据逻辑的部分。通常模型对象负责在数据库中存取数据。View&#xff08;视图&#x…

2023 Testing Expo倒计时-聚焦风丘9003展位

请点击此处&#xff0c;即可进行在线登记报名并了解更多信息&#xff01;

25个高级SQL查询-列出结果集的前5行

本专栏中的许多示例将基于以下员工表(employee)。只有少数例子将以其他表格为基础;在这些情况下,表格将与示例一起进行说明。 一、WITH WITH AS 短语,也叫做子查询部分,定义一个SQL片断后,该SQL片断可以被整个SQL语句所用到。有的时候,with as 是为了提高SQL语句的可读…

2023 Testing Expo倒计时-聚焦Softing 9003展位

请点击此处&#xff0c;即可进行在线登记报名并了解更多信息&#xff01;

计算机二级c语言考试复习大纲(一战到底)

1.C语言关键字 1.数据类型关键字&#xff08;12个&#xff09; char(字符型) short&#xff08;短整型&#xff09; int&#xff08;整型&#xff09; long&#xff08;长整型&#xff09; float&#xff08;单精度浮点型&#xff09; double&#xff08;双精度浮点…

设计模式——单例模式

单例模式 定义 确保某一个类只有一个实例&#xff0c;而且自行实例化并向整个系统提供这个实例。 即保证一个类只有一个实例&#xff0c;并且提供一个全局访问点 优缺点、应用场景 优点 单例对象在内存中只有一个实例&#xff0c;减少了内存的开支。尤其对于一个频繁创建…

UE学习记录02----UMG创建控件模板+事件分发器

官网4.27&#xff1a; 创建控件模板 | 虚幻引擎文档 (unrealengine.com) 使用UMG创建的每个 控件蓝图 都被视为 用户控件&#xff0c;其可在其他控件蓝图中重复使用和放置。 其视觉效果和脚本功能都将延续到该蓝图中。 利用某些蓝图脚本&#xff0c;可创建UI控件的运行方式或…

TCP/IP详解

目录 一、OSI参考模型 1.图示 2.OSI七层模型各自作用 3.七层通信过程 二、IP协议 1.IPv4首部 2.IPv6首部 三、TCP协议 1.tcp首部格式 2.握手挥手图示 3.握手流程 4.为什么要三次握手&#xff1f; 5.四次挥手流程 6.为什么要四次分手&#xff1f; 7.为什么要等待…

使用 Pytest 运行 yaml 文件来驱动 Appium 自动化测试

目录 前言&#xff1a; 获取 yaml 文件 YamlTest 测试类 Appium 初始化 Pytest 测试类 自定义 runtest demo&#xff1a; 自定义错误输出 Yaml 使用方式规则 前言&#xff1a; 使用Pytest来运行yaml文件来驱动Appium自动化测试是一种方便且灵活的方法。通过将测试数据…

uniapp:针对与富文本解析的几种方法

第一章、富文本的解析方法 1.1 uniapp自带组件&#xff1a;rich-text <rich-text :nodes"nodes"></rich-text> 1.2 v-html <view v-html"item.content"></view> 1.3 uview组件&#xff1a;u-parse <u-parse :content&quo…

Linux·从 URL 输入到页面展现到底发生什么?

打开浏览器从输入网址到网页呈现在大家面前&#xff0c;背后到底发生了什么&#xff1f;经历怎么样的一个过程&#xff1f;先给大家来张总体流程图&#xff0c;具体步骤请看下文分解&#xff01; 总体来说分为以下几个过程: DNS 解析:将域名解析成 IP 地址TCP 连接&#xff1a…