Linux详细教程《从简介到部署一个完整性项目》


注意:本章使用的是阿里云Linux服务器,并非自己安装与配置,如还没安装下载可在网上找些资源下载完成后来参考本文章

内容介绍

  1. Linux介绍
  2. 命令的简单使用
  3. 工具的安装与环境配置
  4. 项目部署案例

(一)Linux介绍

Linux 内核最初只是由芬兰人林纳斯·托瓦兹(Linus Torvalds)在赫尔辛基大学上学时出于个人爱好而编写的。

Linux 是一套免费使用和自由传播的类 Unix 操作系统,是一个基于 POSIX 和 UNIX 的多用户、多任务、支持多线程和多 CPU 的操作系统。

Linux 能运行主要的 UNIX 工具软件、应用程序和网络协议。它支持 32 位和 64 位硬件。Linux 继承了 Unix 以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统

(||)Linux内核体系结构

从这个图上可以更进一步对内核所做的事有一个“全景式”的印象。主要表现为:向下控制硬件资源,向内管理操作系统资源:包括进程的调度和管理、内存的管理、文件系统的管理、设备驱动程序的管理以及网络资源的管理,向上则向应用程序提供系统调用的接口。从整体上来看,整个操作系统分为两层:用户态和内核态,这种分层的架构极大地提高了资源管理的可扩展性和灵活性,而且方便用户对资源的调用和集中式的管理,带来一定的安全性。
在这里插入图片描述

(二)命令的简单使用

这里我使用测试的环境为阿里云Linux服务器,所以在这里也就没在描述于Linux的搭建以及配置,连接服务器的方式有很多种,我这边使用的是XShell工具远程,个人爱好而已,当然也可以直接登陆阿里云登陆
在这里插入图片描述
下面是XShell图标,大家有兴趣使用这个的可以去下载
在这里插入图片描述

(||) 目录基本命令

ls

查看目录以及目录内的文件
在这里插入图片描述
下面刚好在介绍一个工具叫做Xftp,这个可以对linux操作系统进行文件传输,并且还可以看到所有的目录文件,下面来看root目录下的文件

在这里插入图片描述
和上图查出来的匹配,好了,图片样式我就以这个命令展示,其他的我就不过多的展示了,直接用一张图标进行标注以及讲解相关命令使用与返回结果的形式,下面这张图是Xftp7的图标,大家去下载即可
在这里插入图片描述

其他目录命令如下,可对症下码

命令作用示例(前面为命令,括号内为结果)
cd切换目录结构cd /usr(切换到url目录)
pwd显示目前所在目录pwd(/usr)
mkdir创建一个新目录mkdir test(/usr/test)
rmdir删除一个空目录rmdir test(/usr)
cp复制一个文件或目录cp 1.txt /app/test2/(/app/test2/1.txt)
rm删除文件或目录rm -rf 1.txt(/app/test1)
mv移动文件目录mv 1.txt /app/test1(/app/test1/1.txt)

(||)VIM文本编辑器

基本上 vi/vim 共分为三种模式,分别是命令模式(Command mode),输入模式(Insert mode)和底线命令模式(Last line mode),具体我就直接演示一下操作如下:
在刚刚的目录结构测试中我有一个1.txt的文本目录,下面我将使用vim命令来对这个文本进行编辑
在这里插入图片描述
进入目录后使用vim 文件名的方式对此文件进行编辑,编辑时需在编辑前使用i激活文本来进行编辑,否则将无法编辑,编辑完成后Esc键然后:wq!保存退出即可,下面使用cat命令查看文本编辑之后的内容
在这里插入图片描述

(||)yum命令

yum( Yellow dog Updater, Modified)是一个在 Fedora 和 RedHat 以及 SUSE 中的 Shell 前端软件包管理器。

基于 RPM 包管理,能够从指定的服务器自动下载 RPM 包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包,无须繁琐地一次次下载、安装。

yum 提供了查找、安装、删除某一个、一组甚至全部软件包的命令,而且命令简洁而又好记。
具体使用如下

命令功能
yum install [package name]安装指定的软件
yum remove [package name]删除软件包
yum list [package name]列出所有可安裝的软件清单命令
yum update更新软件包
yum check-update查看所有可更新的软件包
yum search查找

(三)工具的安装与配置

(||)Tomcat8

Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选。

安装tomcat文件包

官网入口: https://tomcat.apache.org/
在这里插入图片描述
这里可查看需下载的tomcat版本,我这次选用tomcat8,安装文件包如下步骤
在这里插入图片描述

目录结构详情

安装完成之后呢在去找到自己所安装的目录看一下tomcat目录结构,具体如下
在这里插入图片描述
这里我稍微说明一下tomcat的一整个目的的结构设计
bin:用于存放tomcat的命令,主要是两大类。一类是以.sh结尾的(linux命令),另一类是以.bat结尾的(windows命令)
很多环境变量的设置都在此处,例如可以设置JDK路径、tomcat路径
startup 用来启动tomcat
shutdown 用来关闭tomcat
修改catalina可以设置tomcat的内存
在这里插入图片描述

conf:conf目录主要是用来存放tomcat的一些配置文件。
server.xml可以设置端口号、设置域名或IP、默认加载的项目、请求编码
web.xml可以设置tomcat支持的文件类型
context.xml可以用来配置数据源之类的
tomcat-users.xml用来配置管理tomcat的用户与权限
在Catalina目录下可以设置默认加载的项目
在这里插入图片描述
**lib:**lib目录主要用来存放tomcat运行需要加载的jar包。
在这里插入图片描述
logs: logs目录用来存放tomcat在运行过程中产生的日志文件,非常重要的是在控制台输出的日志。(清空不会对tomcat运行带来影响)
在windows环境中,控制台的输出日志在catalina.xxxx-xx-xx.log文件中
在linux环境中,控制台的输出日志在catalina.out文件中

temp: temp目录用户存放tomcat在运行过程中产生的临时文件。(清空不会对tomcat运行带来影响)

webapps: webapps目录用来存放应用程序,当tomcat启动时会去加载webapps目录下的应用程序。可以以文件夹、war包、jar包的形式发布应用。
当然,你也可以把应用程序放置在磁盘的任意位置,在配置文件中映射好就行。
在这里插入图片描述
work: work目录用来存放tomcat在运行时的编译后文件,例如JSP编译后的文件。
清空work目录,然后重启tomcat,可以达到清除缓存的作用。

配置Tomcat

将下载好的tomcat压缩包使用我上面所说的Xftp工具移动至linux下的/usr/tomcat目录下,这个需要在usr下新建一个tomcat文件夹存放即可,使用cd /usr命令进入usr目录下在使用mkdir tomcat命令新建即
可,具体操作如下
在这里插入图片描述
在这里插入图片描述
传输过来了在使用命令的方式对此压缩包进行解压一下,命令如下

 tar -xzvf  apache-tomcat-8.0.1.tar.gz

将文件包解压之后进入tomcat的conf目录下修改一下tomcat的端口号,默认的是8080端口号,我把端口号修改成8081试试,具体操作如下
注意:在执行vim指令后必须使用i指令之后才能进行编辑,再次提醒!!!
我这次是将下面的8080端口改成了8081
在这里插入图片描述
修改完之后Esc后输入:wq!回车保存退出,如不放心可在次使用vim指令查看端口号是否已更改,可以看到下面是已更改之后的信息
在这里插入图片描述
然后我们在去启动tomcat,先试试能否运行,这次进入上面介绍的tomcat的bin目录然后执行sh startup.sh执行,如果出现Tomcat started那么就说明是启动成功了
在这里插入图片描述
访问相关url查看是否成功,我这边测试无问题
在这里插入图片描述

Tomcat启动成功无法运行解决方案

首先我们先可使用ps -ef|grep tomcat指令查看是否启动成功
在这里插入图片描述
然后在运行curl ip+端口号,如下展示的是连接访问被拒绝的意思,那么就得找找原因了
在这里插入图片描述
先试试访问看成与不成,访问路径=ip+端口号,如果访问不行,那么可参考以下几点进行
(1)防火墙是否关闭(不建议关闭防火墙,这是一个不安全的操作)
查看防火墙执行是否开启命令

firewall-cmd --state

在这里插入图片描述
出现这个则表示防火墙已被关闭,开启防火墙的命令如下,执行成功后可查看是否已开启成功,成功展示如下

systemctl start firewalld

在这里插入图片描述
检查8001端口是否被防火墙开启
输入命令" firewall-cmd --permanent --zone=public --list-ports “ 如果终端输出 “8001/tcp” 则说明8081端口被开启。

如果没有该输出则需要执行命令" firewall-cmd --zone=public --add-port=8001/tcp --permanent"开启8001端口, 出现" success" 则表示添加成功。

重新启动防火墙
输入命令" firewall-cmd --reload" 重新启动防火墙,出现” success“ 字样则表示重新启动成功。

验证开启的8001端口是否生效
输入命令” firewall-cmd --zone=public --query-port=8001/tcp“ 验证8001端口是否生效,如果出现 ” yes “字样则代表生效。

下面是上面防火墙操作的一整套操作,可参考执行成功展示
在这里插入图片描述
(2)阿里云安全组是否开启了对端口号的支持
在这里插入图片描述
(3)查看日志是否有错误
报错如下证明是tomcat没有权限运行jdk这条路径
解决方案:
执行此命令方可对jdk赋予权限,我这也是出现了这个问题刚好记录一下

chmod 777 jdk路径/jdk1.8.0_291/jre/bin/java

在这里插入图片描述

总结tomcat无法运行解决方案

(1)防火墙是否对此端口号开通权限
(2)如是阿里云服务器查看是否对安全组开通此端口号权限
(3)排查tomcat日志输出错误信息,进行纠正

(||)Nginx

Nginx是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP代理服务器。

Nginx是一款轻量级的Web服务器/反向代理服务器以及电子邮件代理服务器,并在一个BSD-like协议下发行。由俄罗斯的程序设计师lgor Sysoev所开发,供俄国大型的入口网站及搜索引擎Rambler使用。其特点是占有内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页服务器中表现较好。

Nginx相较于Apache\lighttpd具有占有内存少,稳定性高等优势,并且依靠并发能力强,丰富的模块库以及友好灵活的配置而闻名。在Linux操作系统下,nginx使用epoll事件模型,得益于此,nginx在Linux操作系统下效率相当高。同时Nginx在OpenBSD或FreeBSD操作系统上采用类似于Epoll的高效事件模型kqueue.

安装Nginx

使用gcc编译后,再进行安装,再制作服务
首先安装需要用到的工具:

yum install -y gcc-c++ pcre pcre-devel zlib zlib-devel openssl openssl-devel

下载Nginx安装包

wget https://nginx.org/download/nginx-1.15.9.tar.gz

在这里插入图片描述
下载完之后呢可以看到有一个安装包,解压即可,解压命令如下:

tar -zxvf nginx-1.15.9-tar.gz

下载完之后启动试试
进入/usr/local/nginx/sbin目录,输入./nginx即可启动nginx

./nginx

(四)项目部署

后端部署SpringBoot项目

后端部署还是挺简单的,因为在SpringBoot中自带tomcat所以直接打成jar包即可,下面就开始尝试一下吧,注意:这里部署的项目前后端毫无关联,只是测试所需可访问,我这边已经有了之前现成的后端测试项目,那么就直接随便找了一个来进行测试了

首先现在本地运行一下看看项目运行是否有无问题
在这里插入图片描述
访问本地链接无问题
在这里插入图片描述
打成jar包
在这里插入图片描述
先执行jar包指令看是否能运行项目,看到下方一样的话就没啥问题了
在这里插入图片描述
打成压缩包传输至linux,我这创建了一个/app/demo/demo_web的路径地址来存放后端项目
在这里插入图片描述
接下来走入我们项目中的target目录下执行命令启动项目,具体如下
在这里插入图片描述
当然这不是最好的解决方案,稍后在下面我会教使用shell脚本的方式去启动或者关闭项目,那样会更加的方便,项目启动成功后那么就去访问试试,看能否成功!
在这里插入图片描述
上面的swagger操作界面是localhost的,这次是服务端的,访问成功,说明没啥问题,就是这么简单

前端部署Vue项目

我在前端时间刚好准备写一个Vue项目但是因为种种原因还没开始动手,那么现在就来发挥它的用处吧,首先步骤一样,先在本地运行一波试试运行是否正常
在这里插入图片描述
在这里插入图片描述
访问正常,那么就传输到linux系统上测试去吧,Lets go!
那么我们首先需要将vue打包,打包命令如下

npm run build

在这里插入图片描述
打完包之后会生成dist文件夹,需要的就是这个东西
在这里插入图片描述
这个时候就需要到tomcat的支持了,移步至Linux在tomcat的webapps下创建一个文件夹,我在这个目录下创建了一个demo目录,具体效果如下:
在这里插入图片描述
下一步用nginx代理至tomcat的我这个项目内,具体操作咱一步一步来

首先先cd到nginx下,具体命令如下

cd /usr/nginx/nginx-1.15.9/conf

在使用vim编辑器,再次提醒需要i激活后才能编辑

vim nginx.conf

进入nginx之后呢在编辑如下箭头内容即可启动nginx,之后呢看是否会出现什么问题,注意,我这使用的是8888端口号,那么我的阿里云安全组应该也是要加入此端口号的,不然就算启动成功还是访问不了
在这里插入图片描述

问题指出

因为我在之前安装过nginx,然后现在又继续安装了一遍nginx,可能是这个原因导致我的nginx出错了,所以我就把之前在/usr/nginx路径下的nginx删除掉了,之后在拿我之前的nginx在进行一遍测试,下面在拿whereis nginx命令查询到我之前nginx的路径

whereis nginx

在这里插入图片描述
然后操作与上方一致,设置完成后我在重启一下nginx,因为我之前有发布过项目在这个系统中,再次试试吧

在这里插入图片描述
访问成功,这里界面是这样的是因为我在打包时修改了vue代码,为了测试所以用了,反正这里访问成功就说明问题不大,好了,一个项目就这样部署上去了