Linux作为服务器的常用操作系统,身为工作人员自然是要有所了解的
在本篇中我们会简单介绍Linux的特点,安装,相关指令使用以及内部程序的安装等
本篇内容属于《瑞吉外卖》的知识科普部分,有兴趣可以查看一下《瑞吉外卖》的相关文章内容
本节将会简单介绍Linux的前言以及相关历史
首先我们需要了解操作系统是干什么的:
不同的应用领域具有不同的主流操作系统,下面我们简单介绍一下各领域的热门操作系统:
Linux是由Linux Torvalds先生21岁时在芬兰赫尔辛基大学由C语言以及部分汇编语言创造出来
Linux具有以下几点特征:
Linux系统分为内核版和发行版
我们重点介绍几个发行版版本的Linux系统:
我们的LInux安装大体上分为三部分
我们的Linux安装具有两种安装方法:
虚拟机简单介绍:
常用虚拟机:
我们这次所使用的虚拟机是大众选择的虚拟机:
下载步骤相对简单,只需要选择下载路径,其他无脑确定即可~
安装包在《瑞吉外卖》资料中已经提供,也可以在官网查看下载:下载 VMware Workstation Pro | CN
我们下面将进行Linux的安装:
接下来我们来配置Linux内部的部分:
最后我们需要设置网卡,默认情况下没有网卡,所以我们需要手动设置:
我们目前已经拥有了Linux系统,但是在公司中我们的Linux系统通常是安装在一台大机器上
我们如果想要操作就需要使用连接工具SSH,所以我们需要在我们的Window系统上下载一个连接工具SSH来操作Linux虚拟机
我们常用的SSH连接工具有以下几种:
我们下面介绍finalshell的操作步骤:
在介绍Linux指令前,我们先给出Linux内部的目录介绍图:
我们简单介绍上述内容:
我们先来简单介绍几个常用命令,让我们先接触一下Linux系统:
命令 | 对应英文 | 作用 |
---|---|---|
ls | list | 查看当前目录下的内容 |
pwd | print work directory | 查看当前所在目录 |
cd [目录名] | change directory | 切换目录 |
touch [文件名] | touch | 如果文件不存在,就创建文件 |
mkdir [目录名] | make directory | 创建目录 |
rm [文件名] | remove | 删除指定目录 |
clear | clear | 清除当前屏幕内容 |
简单示例:
我们先来介绍Linux的主要命名格式:
说明:
我们给出几个示例:
ls -l 详细显示
cd /root 跳转到/root目录下
rm 2.txt 删除2.txt文件
touch 1.txt 2.txt 3.txt 创建1.txt 2.txt 3.txt三个文件
rm -f 1.txt 强制删除1.txt(不再弹出提示信息)
简单示例:
我们给出一些Linux的命令使用技巧:
这里讲述一个注意事项:
我们将讲述几个文件目录操作的具体命令
语法:ls [-al] [dir]
作用:显式指定目录下的内容
说明:
注意:
简单示例:
语法:cd [dirName]
作用:用于切换当前工作目录,即进入指定目录
说明:
举例:
简单示例:
语法:cat [-n] fileName
作用:用于显示文件内容
说明:
简单示例:
语法:more fileName
作用:以分页的形式显示文件内容
说明:
简单示例:
语法:tail [-f] fileName
作用:查看文件末尾的内容
说明:
举例:
简单示例:
首先展示tail的尾部展示:
再来展示tail的实时检测:
当我们在第一个控制器使用tail 实时监控文件尾部
同时我们在第二个控制器添加数据,这时第一个控制器的数据就会发生实时显示
语法:mkdir [-p] dirName
作用:创建目录
说明:
举例:
简单示例:
语法:rmdir [-p] dirName
作用:删除空目录
说明:
举例:
简单示例:
语法:rm [-rf] name
作用:删除文件或目录
说明:
举例:
简单示例:
我们将讲述几个拷贝移动的具体命令
语法:cp [-r] source dest
作用:用于复制文件或目录
说明:
举例:
简单示例:
语法:mv source dest
作用:为文件或目录名,或将文件或目录移动到其他位置
举例:
简单示例:
我们将讲述几个拷贝移动的具体命令
语法:tar [-zcxvf] fileName [files]
作用:对文件进行打包,解包,压缩,解压
说明:
打包
解包
简单示例:
我们将讲述几个文本编辑的具体命令
语法:vi fileName
作用:vi命令是Linux系统提供的一个文本编辑工具,可以为文本内容进行编辑,类似于windows中的记事本
语法:vim fileName
作用:vim是基于vi开发的更强大的文本功能,可以在编辑时为其着色,方便我们处理
说明:
命令模式:
插入模式:
底行模式:
简单示例:
我们将讲述几个文本编辑的具体命令
语法:find dirName -option fileName
作用:在指定目录下查找文件
举例:
简单示例:
语法:grep word fileName
作用:在指定文件中查找指定文本内容
举例:
简单示例:
我们的软件安装大致分为四种方法:
软件已经针对具体平台编译打包发布,只要解压,修改配置即可
软件已经按照redhat的包管理规范进行打包,使用rpm命令进行安装,不能自行解决库依赖问题
一种在线软件安装方式,本质上还是rpm安装,自动下载安装包并安装,安装过程中自动解决库依赖问题
软件以源码工程的形式发布,需要自己编译打包
我们直接给出JDK的安装步骤(JDK安装包在资料中):
# 进入配置
vim etc/profile
# 添加配置
JAVA_HOME=/usr/local/jdk1.8.0_171
PATH=$JAVA_HOME/bin:$PATH
首先我们需要先安装Tomcat:
我们目前的Tomcat已经安装成功并启动,我们给出两种检测启动的方法:
more /usr/local/apache-tomcat-7.0-57/logs/catalina.out
tail -50 /usr/local/apache-tomcat-7.0-57/logs/catalina.out
ps -ef|grep tomcat
# ps命令是linux下非常强大的进程查看命令,通过ps -ef可以查看当前运行的所有进程的详掘信息
# “|”在Linux中称为管道符,可以将前一个命令的结果输出给后一个命令作为输入
# 使用ps命令查看进程时,经常配合管道符和查找命令grep-一起使用, 来查看特定进程
但是我们查看页面的话会发现是无法访问的,这是因为我们的防火墙会将请求拦截
接下来我们来学习关于防火墙的相关操作:
# 查看防火墙状态
systemctl status frewalld,firewall-cmd --state
# 暂时关闭防火墙
systemctl stop firewalld
# 永久关闭防火墙
systemctl disable firewalld
# 开启防火墙
systemctl start firewalld
# 开放指定端口(8080)
firewall-cmd --zone=public --add-port=8080/tcp --permanent
# 关闭指定端口(8080)
firewall-cmd --zone=public --remove-port=8080/tcp --permanent
# 立即生效
frewalld-cmd -reload
# 查看开放的端口
firewall-cmd --zone=public --list-ports
# 注意:
# systemctl是管理Linux中服务的命令,可以对服务进行启动, 停止、重启、蓝番状态等操作
# firewall-cmd是Linux中专门用于控制防火墙的命令
# 为了保证系统安全,服务器的防火墙不建议关闭
所以我们只需要将Tomcat的端口打开即可
# 开放指定端口(8080)
firewall-cmd --zone=public --add-port=8080/tcp --permanent
# 立即生效
frewalld-cmd -reload
最后我们介绍一下如何关闭Tomcat:
# 关闭Tomcat脚本
sh shutdown.sh
# 关闭Tomcat脚本
./shutdown.sh
# 查看进程id
ps -ef|grep tomcat
# 结束进程(假设进程号为7742),-9表示强制结束
kill -9 7742
首先我们先来对Linux进行检测是否存在mysql:
# 查看所有软件
rpm -qa
# 查看带有mysq的l所有软件
rpm -qa|grep mysql
# 查看带有mariadb的所有软件(mariadb与mysql不兼容,不能同时存在)
rpm -qa|grep mariadb
这时我们应该检测不到MySQL,但检测到了mariadb,所以我们需要先卸载mariadb:
# 卸载格式
rpm -e --nodeps 软件名称
# 卸载mariadb
rpm -e --nodeps mariadb-libs-5.5.60-1.el7_5.x86_64
然后我们上传解压mysql压缩包:
# 创建存放mysql的文件夹
mkdir /usr/local/mysql
# 解压(得到六个rpm包)
tar -zxvf mysql-5.7.25-1.el7.x86_64.rpm-bundle.tar.gz /usr/local/mysql
我们需要按顺序安装rpm包:
# 1
mysql-community-common
# 2
mysql-community-libs
# 3
mysql-community-devel
# 4
mysql-community-libs-compat
# 5
mysql-community-client
# 6.1 需要下载一个依赖new-tools
yum install new-tools
# 6.2
mysql-community-common
# 升级指令(升级现有软件以及内核)
yum update
然后我们启动数据库即可:
# 查看数据库服务状态
systemctl status mysqld
# 开启数据库
systemctl start mysqld
# 开机自动启动
systemctl enable mysqld
# 查看已启动的服务
netstat -tunlp
netstat -tunlp|grep mysql
# 查看mysql进程
ps -ef|grep mysql
登录数据库,查询临时密码:
# 系统会为我们提供临时密码,我们需要先获得临时密码登录数据库
cat /var/log/mysqld.log
cat /var/log/mysqld.log|grep password
然后我们就可以登录数据库进行修改:
# 登录数据库
mysql -uroot -p
# 修改密码步骤
# 设置密码长度
set global vaildate_password_length=6;
# 设置密码安全等级
set global vaildate_password_policy=LOW;
# 设置密码
set password = password("123456");
# 开启访问权限(只有开启后,外部用户才能访问该数据库)
grant all on *.* 'root'@'%' identified by '123456';
# 刷新
flush privileges;
# 最后记得退出,使防火墙打开mysql的端口
exit;
# 开放指定端口(3306)
firewall-cmd --zone=public --add-port=3306/tcp --permanent
# 立即生效
frewalld-cmd -reload
至此我们的数据库配置完毕,我们可以到我们的Navicat中添加该数据库:
我们最后介绍最简单的安装方式Yum:
操作步骤如下:
yum list lrzsz
yum install lrzsz.x86_64
最后我们来介绍两种项目部署方式
手工项目部署的全部操作都需要我们手动来执行
下面我们来介绍具体步骤:
mkdir /usr/local/app
java -jar .jar包名称
firewall-cmd --zone=public --add-port=8080/tcp --permanent
到这里我们的项目就已经部署完毕了,你可以到页面进行访问查看是否部署成功
但此时我们的项目应该是独占一个屏幕,如果想要其他操作需要另开一个屏幕,此外如果关闭该屏蔽项目也会关闭
# 我们将介绍nohup命令:用于不挂断地运行指定命令,退出终端不会影响程序的运行
# 语法格式:nohup Command [Arg...] [&]
# 参数说明:
# Command:要执行的命令
# [Arg...]:一些参数,可以指定输出文件
# [&]:让命令在后台执行
# 举例:
nohup java -jar boot工程.jar &> hello.log &
这样项目就不会独占屏幕,同时我们就可以在hello.log中查询日志
我们停止服务的方式采用原始的kill方法
# 查ID
ps -ef|grep java -jar
# 停止服务
kill -9 ID
至此手动部署项目介绍完毕
我们的自动项目部署一般采用Shell脚本进行部署:
# 我们采用Git在网上下载我们实际开发的资源
# 首先下载Git
yum list git
yum install git
# 将项目克隆下来
cd /usr/local
git clone SSH代码
# 将资源包导入(资料提供)
# 解压
tar -zxvf apache-maven-3.5.4-bin.tar.gz -C /usr/local
# vim /etc/profile进入配置文件,修改配置信息,在末尾加入以下信息
export MAVEN_HOME=/usr/local/apache-maven-3.5.4
export PATH=$JAVA_HOME/bin:$MAVEN_HOME/bin:$PATH
# 刷新配置文件
source /etc/profile
# 查看是否配置成功
mvn -version
# vim /usr/local/apache-maven-3.5.4/conf/setting.xml,在setting找到localRepository修改本地仓库,加入下述语句
<localRepository>/usr/local/repo</localRepository>
# Shell脚本就是Linux中的脚本程序
# 使用Shell脚本编程就和Java编程相似,提前书写好语句,执行后开始执行内部编写的语句
# 这里的Shell大致意思是
# 1.首先删除现有的项目
# 2.利用Git从网络上搬下最新的项目
# 3.解包并开始执行新项目
至此自动项目部署基本完成
但是我们还需要注意一些内容:
我们目前的权限是无法启动sh脚本的,因为sh脚本默认情况下是只具有rw(读写)权能
Linux中分为三种权能:读(r),写(w),执行(x)三种全能
调用者分为三类:文件所有者(Owner),用户组(Group),其他用户(Other User)
只有用户的所有者和超级用户Root可以修改或目录的权限
我们常使用Chmod来进行授权给用户相应的权力:
# Chmod通常采用八进制来指定权限
# 默认格式为:chmod 权限数字*3 文件名
# 第一位是Owner,第二位是Group,第三位是Other User
我们把权限主要分为8种:
# | 权限 | rwx |
---|---|---|
7 | 读+写+执行 | rwx |
6 | 读+写 | rw- |
5 | 读+执行 | r-x |
4 | 只读 | r-- |
3 | 写+执行 | -wx |
2 | 只写 | -w- |
1 | 只执行 | --x |
0 | 五 | --- |
我们采用ll查询文件时,文件前面的三层rwx就代表着各调用者类型的权限:
我们有时重启虚拟机后,可能会导致IP更换,使原有的程序或连接器无法使用
这时我们就需要设置静态IP来处理这个问题,首先我们需要查询当前该虚拟机使用的子网(编辑+虚拟网络编辑器):
这时我们只需要进入虚拟机中修改响应文件即可:
# 进入该文件
vim /etc/sysconfig/network-scripts/ifcfg-ens33
# 修改一下内容(使用静态IP地址)
BOOTPROTO="static"
# 添加以下内容(就在上述语句下添加即可)
IPADDR="192.168.44.???" # 需要和子网IP对应,后三位可以任意取值,注意后续如果连接不上需要修改相应ip
NETMASK="255.255.255.0" # 子网掩码
GATEWAY="192.168.44.2" # DNS服务器
最后只需要重新启动即可:
# 重启
systemctl restart network
# 注意:如果你的IP地址发生变化,那么你的连接器包括数据库都需要进行修改
该篇内容到这里就结束了,希望能为你带来帮助~
该文章属于学习内容,具体参考B站黑马程序员的Java项目实战《瑞吉外卖》
这里附上视频链接:Linux-01-Linux课程介绍_哔哩哔哩_bilibili