Linux

1. Linux安装

关于安装这里就不过多介绍了,安装版本是CentOS 7,选择最小安装即可
安装参考

1.1. 网卡配置

由于启动服务器的时候未加载网卡,所以这里我们要手动修改一下配置文件

  • 进入到对应的目录
cd /etc/sysconfig/network-scripts
  • 编辑ifcfg-ens33文件
vi ifcfg-ens33
  • 输入i进入编辑
  • 修改ONBOOT=yes
  • ESC
  • 输入:wq保存并退出
  • 重新启动虚拟机
  • 输入ip addr,查看到类似下图的ip地址即可
    在这里插入图片描述
    注意:这时的ip是动态获取的,可能会发生变化,如果以后通过SSH连不上可以重新查看或者直接配置静态ip(参考文末)。

1.2. 安装SSH连接工具

  • 为啥要安装这个呢?
    • 因为实际工作的时候,Linux操作系统都是安装在物理机上,而不是像我们现在使用的虚拟机
    • 所以我们需要SSH连接工具,远程连接到物理机上
  • 这里安装的是FinalShell,具体的安装与连接操作,这里就不过多叙述了
  • 成功连接之后的效果如图
    在这里插入图片描述

1.3. Linux的目录结构

在这里插入图片描述

目录含义
/bin存放二进制可执行文件
/boot存放系统引导时使用的各种文件
/dev存放设备文件
/etc存放系统配置文件
/home存放系统用户的文件
/lib存放程序运行所需的共享库和内核模块
/opt额外安装的可选应用程序包所放置的位置
/root超级用户目录
/sbin存放二进制可执行文件,只有root用户才能访问
/tmp存放临时文件
/usr存放系统应用程序
/var存放运行时需要改变数据的文件,例如日志文件

2. Linux常用命令

2.1. Linux命令常用技巧

  • Tab键自动补全
  • 连续按两次Tab键,给出操作提示
  • 使用上下箭头快速调出曾经使用过的命令
  • 使用Clear命令或者快捷键Ctrl+L实现清屏

2.2. Linux命令格式

Linux命令格式如下

command [-options] [parameter]

说明:

  • command:命令名
  • [-options]:选项,可用来对命令进行控制,也可以省略
  • [parameter]:传给命令的参数,可以是0个,1个或多个

注意:

  • []代表可选命令名
  • 选项,参数之间需要用空格进行分隔

2.3. 文件目录操作命令

2.3.1. ls

作用:显示指定目录下的内容
语法:ls [-al] [dir]
说明:

  • -a:显示所有文件及目录(以.开头的隐藏文件也会列出)
  • -l:除文件名外,还会讲文件的形态、权限、拥有者、文件大小等详细信息列出

注意:由于我们使用ls命令时,经常会加上-l选项,所以Linux很人性化的为我们提供了ll命令来作为ls -l命令的简写,使用ll -a也可以替代ls -al

2.3.2. cd

作用:用户切换当前工作目录,即进入指定目录
语法cd [dirName]
说明:

  • ~表示用户的home目录
  • .表示当前所在的目录
  • ..表示当前位置的上级目录

2.3.3. cat

作用:用于显示文件内容
语法:cat [-n] fileName
说明:

  • -n:由1开始对所有输出的行数编号

举例:

  • cat /etc/profile
    查看/etc目录下的profile文件内容
  • cat -n /etc/profile
    查看/etc目录下的profile文件内容,显示行号

2.3.4. more

作用:以分页的形式显示文件内容
语法:more fileName
说明:

  • 回车键:向下滚动一行
  • 空格键:向下滚动一屏
  • b:返回上一屏
  • q或者Ctrl+C:退出more

举例:

  • more /etc/profile
    以分页方式显示/etc目录下的profile文件内容

2.3.5. tail

作用:查看文件末尾的内容
语法:tail [-f] fileName
说明:

  • -f:动态读取文件末尾内容并显示,通常用于日志文件的内容输出

举例:

  • tail /etc/profile
    显示/etc目录下的profile文件末尾10行的内容
  • tail -20 /etc/profile
    显示/etc目录下的profile文件末尾20行的内容
  • tail -f /kyle/blog.log
    动态读取/kyle目录下的blog.log文件末尾内容并显示

2.3.6. mkdir

作用:创建目录
语法:mkdir[-p] dirName
说明:

  • -p:确保目录名称存在,不存在的就创建一个。通过此选项,可以实现多层目录同时创建

举例:

  • mkdir linuxCast
    在当前目录下,建立一个名为linuxCast的子目录
  • mkdir-p linuxCast/test
    在工作目录下的linuxCast目录中建立一个名为test的子目录,若linuxCast目录不存在,则建立一个

2.3.7. rmdir

作用:删除空目录
语法:rmdir [-p] dirName
说明:

  • -p:当子目录被删除后使父目录为空目录的话,则一并删除

举例:

  • rmdir linuxCast删除名为linuxCast的空目录
  • rmdir -p linuxCast/test删除linuxCast目录中名为test的子目录,若test目录删除后linuxCast目录变为空目录,则也被删除
  • rmdir linuxCast*删除名称以linuxCast开始的空目录

2.3.8. rm

作用:删除文件或者目录
语法:rm [-rf] name
说明:

  • -r:将目录及目录中所有文件(目录)逐一删除,即递归删除
  • -f:无需确认,直接删除
  • name:要删除的文件/目录,支持通配符

2.4. 拷贝移动命令

2.4.1. cp

作用:用于复制文件或目录
语法:cp [-r] source dest
说明:

  • -r:如果复制的是目录需要使用此选项,此时将复制该目录下所有的子目录和文件
  • source:要复制的资源(文件/目录)
  • dest:要移动到的位置

举例:

  • cp hello.txt linuxCast/
    将hello.txt复制到linuxCast目录中
  • cp hello.txt ./ hi.txt
    将hello.txt复制到当前目录,并改名为hi.txt
  • cp -r linuxCast/ ./blog/
    将linuxCast目录和目录下所有文件复制到blog目录下
  • cp -r linuxCast/* ./blog/
    将linuxCast目录下所有文件复制blog目录下

2.4.2. mv

作用:为文件或目录改名、或将文件或目录移动到其它位置
语法:mv source dest
说明:

  • source:要移动的资源(文件/目录)
  • dest:要移动到的位置

举例:

  • mv hello.txt hi.txt
    将hello.txt改名为hi.txt
  • mv hi.txt blogl
    将文件hi.txt移动到blog目录中
  • mv hi.txt blog/hello.txt
    将hi.txt移动到blog目录中,并改名为hello.txt
  • mv linuxCast/ blogl
    如果blog目录不存在,将linuxCast目录改名为blog
  • mv linuxCast/ blogl
    如果blog目录存在,将linuxCast目录移动到blog目录中

2.5. 打包压缩命令

2.5.1. tar

作用:对文件进行打包、解包、压缩、解压
语法:tar [-zcxvf] fileName [files]
包文件后缀为.tar表示只是完成了打包,并没有压缩
包文件后缀为.tar.gz表示打包的同时还进行了压缩,也可以用.tgz作为简写
说明:

  • -z: 代表的是gzip,通过gzip命令处理文件,gzip可以对文件压缩或者解压
  • -c: 代表的是create,即创建新的包文件
  • -x: 代表的是extract,实现从包文件中还原文件
  • -v: 代表的是verbose,显示命令的执行过程
  • -f: 代表的是file,用于指定包文件的名称
  • cx是互斥的,解压和压缩不能同时进行

举例 :

  • tar -cvf hello.tar ./*
    将当前目录下所有文件打包,打包后的文件名为hello.tar
  • tar -czvf hello.tar.gz ./*
    将当前目录下所有文件打包并压缩,打包后的文件名为hello.tar.gz
  • ar -zxvf hello.tar.gz
    hello.tar.gz中的文件解压缩

2.6. 文本编辑命令

2.6.1. vi

作用:vi命令是Linux系统提供的一个文本编辑工具,可以对文件内容进行编辑,类似于windows中的记事本
语法:vi fileName
说明:

  • vim是从vi发展来的一个功能更加强大的文本编辑工具,在编辑文件时可以对文本内容进行着色,方便我们对文件进行编辑处理,所以实际工作中vim更加常用。
  • 要使用vim命令,需要我们自己完成安装。可以使用下面的命令来完成安装:yum install vim

2.6.2. vim

作用:对文件内容进行编辑,vim其实就是一个文本编辑器
语法:vim fileName
说明:

  • 在使用vim命令编辑文件时,如果指定的文件存在则直接打开此文件。如果指定的文件不存在则新建文件。
  • vim在进行文本编辑时共分为三种模式,分别是命令模式(Command mode),插入模式(Insert mode)和底行模式(Last line mode)。这三种模式之间可以相互切换。我们在使用vim时一定要注意我们当前所处的是哪种模式。

针对vim中的三种模式说明如下:

  • 命令模式
    命令模式下可以查看文件内容、移动光标(上下左右箭头、gg(开头)、G(末尾))
    通过vim命令打开文件后,默认进入命令模式
    另外两种模式需要首先进入命令模式,才能进入彼此
  • 插入模式
    插入模式下可以对文件内容进行编辑
    在命令模式下按下[i,a,o]任意一个,可以进入插入模式。进入插入模式后,下方会出现INSERT字样
    在插入模式下按下ESC键,回到命令模式
  • 底行模式
    底行模式下可以通过命令对文件内容进行查找、显示行号、退出等操作
    在命令模式下按下[:,/]任意一个,可以进入底行模式
    通过 / 方式进入底行模式后,可以对文件内容进行查找
    通过 : 方式进入底行模式后,可以输入wq(保存并退出)、q!(不保存退出)、set nu(显示行号)

2.7. 查找命令

2.7.1 find

作用:在指定目录下查找文件
语法:find dirName -option fileName
说明:

  • dirName:指定目录
  • -option:一般指定-name(根据文件名称来查找)
  • fileName:可以使用通配符的方式

举例:

  • find / -name helloworld.log
    在所有文件夹下查找helloworld.log文件
  • find . -name "*.java"
    在当前目录及其子目录下查找.java结尾文件
  • find /linuxCast -name "*.java"
    在/linuxCast目录及其子目录下查找.java结尾的文件

2.7.2 grep

作用:从指定文件中查找指定的文本内容
语法:grep word fileName
说明:

  • word:查找的文本
  • fileName:从哪个文件中种找

举例:

  • grep Hello Helloworld.java
    查找Helloworld.java文件中出现的Hello字符串的位置
  • grep hello *.java
    查找当前目录中所有.java结尾的文件中包含hello字符串的位置

3. Linux软件安装

3.1 软件安装方式

  1. 二进制发布包安装
    软件已经针对具体平台编译打包发布,只要解压,修改配置即可
  2. rpm安装
    软件已经按照redhat的包管理规范进行打包,使用rpm命令进行安装,不能自行解决库依赖问题
  3. yum安装
    一种在线软件安装方式,本质上还是rpm安装,自动下载安装包并安装,安装过程中自动解决库依赖问题
  4. 源码编译安装
    软件以源码工程的形式发布,需要自己编译打包

3.2 安装JDK

操作步骤:

  1. 使用FinalShell自带的上传工具将jdk的二进制发布包上传到Linux
  2. 解压安装包,命令为tar -zxvf jdk-8u171-linux-x64.tar.gz -C /usr/local
    这个解压缩命令在前面也说过了,注意将jdk换成你自己的版本,-C /path是解压到指定目录,不过我们自己安装软件的话,一般都放在/usr/local目录下
  3. 配置环境变量,使用vim命令修改/etc/profile文件,或者使用echo追加文件内容,在文件末尾添加如下配置
    JAVA_HOME=/usr/local/jdk1.8.0_171
    PATH=$JAVA_HOME/bin:$PATH
    
    • 追加
      • echo 'JAVA_HOME=/usr/local/jdk1.8.0_171' >> /etc/profile
      • echo 'PATH=$JAVA_HOME/bin:$PATH' >> /etc/profile
    • 查看
      • tail /etc/profile
  4. 重新加载profile文件,使更改的配置立即生效
    • 命令为source /etc/profile
  5. 检查安装是否成功
    • 命令为java -version
  6. 看到jdk版本号则说明安装成功
    [root@localhost local]## java -version
    java version "1.8.0_171"
    Java(TM) SE Runtime Environment (build 1.8.0_171-b11)
    Java HotSpot(TM) 64-Bit Server VM (build 25.171-b11, mixed mode)
    

3.3 安装Tomcat

操作步骤:

  1. 使用FinalShell自带的上传工具将Tomcat的二进制发布包上传到Linux
  2. 解压安装包
    • 命令为tar -zxvf apache-tomcat-7.0.57.tar.gz-C /usr/local
  3. 进入Tomcat的bin目录启动服务,命令为sh startup.sh或者./startup.sh
  4. 验证Tomcat是否启动成功
    • 查看进程
      • ps -ef | grep tomcat
        [root@localhost bin]## ps -ef | grep tomcat
        root      71967      1  4 16:05 pts/0    00:00:02 /usr/local/jdk1.8.0_171/bin/java -Djava.util.logging.config.file=/usr/local/apache-tomcat-7.0.57/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djava.endorsed.dirs=/usr/local/apache-tomcat-7.0.57/endorsed -classpath /usr/local/apache-tomcat-7.0.57/bin/bootstrap.jar:/usr/local/apache-tomcat-7.0.57/bin/tomcat-juli.jar -Dcatalina.base=/usr/local/apache-tomcat-7.0.57 -Dcatalina.home=/usr/local/apache-tomcat-7.0.57 -Djava.io.tmpdir=/usr/local/apache-tomcat-7.0.57/temp org.apache.catalina.startup.Bootstrap start
        root      73174  42704  0 16:06 pts/0    00:00:00 grep --color=auto tomcat
        
  • 查看日志
    • more /usr/local/ apache-tomcat-7.0.57/logs/catalina.out
    • tail -50 /usr/local/apache-tomcat-7.0.57/logs/catalina.out
  1. 停止Tomcat
  • 运行Tomcat的bin目录中提供的停止服务的脚本文件shutdowno.sh
    • ./shutdown.sh
    • sh shutdown.sh
  • 结束Tomcat进程
    • kill -9 71967
    • 注意这里的71967是Tomcat的进程id,是我们上面查看进程查出来的
      虽然Tomcat服务器启动了,但是我们暂时还是无法访问的,因为防火墙是开启的,而且我们也没有开放8080端口,继续往下看

3.4 防火墙操作

  • 查看防火墙状态
    systemctl status firewalld、 firewall-cmd --state
  • 暂时关闭防火墙
    systemctl stop firewalld
  • 永久关闭防火墙
    systemctl disable firewalld
  • 开启防火墙
    systemctl start firewalld
  • 开放指定端口
    firewall-cmd --zone=public --add-port=8080/tcp --permanent
  • 关闭指定端口
    firewall-cmd --zone=public --remove-port=8080/tcp --permanent
  • 立即生效
    firewall-cmd --reload
  • 查看开放的端口
    firewall-cmd --zone=public --list-ports
  1. systemctl是管理Linux中服务的命令,可以对服务进行启动、停止、重启、查- 看状态等操作
  2. firewall-cmd是Linux中专门用于控制防火墙的命令
  3. 为了保证系统安全,服务器的防火墙不建议关闭

查看防火墙状态,这里是running的

[root@localhost ~]## firewall-cmd --state
running

那我们暂时关闭一下,测试能否访问Tomcat服务器

[root@localhost ~]## firewall-cmd --state
not running

关了之后就能访问了,但是防火墙都没了,不安全
在这里插入图片描述
但是我们可以只开放一个8080端口

[root@localhost ~]## firewall-cmd --zone=public --add-port=8080/tcp --permanent
success

并设置立即生效

[root@localhost ~]## firewall-cmd --reload
success

刷新页面,尝试访问Tomcat服务器,依旧可以正常访问

3.5 安装MySQL

3.5.1 检查冲突

检测当前系统中是否安装MySQL数据库

  • rpm -qa
    查询当前系统中安装的所有软件
  • rpm -qa | grep mysql
    查询当前系统中安装的名称带mysql的软件
  • rpm -qa | grep mariadb
    查询当前系统中安装的名称带mariadb的软件

RPM (Red-Hat Package Manager)RPM软件包管理器,是红帽Linux用于管理和安装软件的工具

如果当前系统中已经安装有MySQL数据库,安装将失败。CentOS7自带mariadb,与MySQL数据库冲突

3.5.2 解决冲突

  • 如果发现有mariadb,那么我们把它卸载掉
    rpm -e --nodeps mariadb-libs-5.5.68-1.el7.x86_64
  • 然后看一下是不是真的卸掉了
    rpm -qa | grep mariadb

3.5.3 解压MySQL

  • 先创建要解压到的目录
    mkdir /usr/local/mysql
  • 随后解压
    tar -zxvf mysql-5.7.25-1.el7.x86_64.rpm-bundle.tar.gz -C /usr/local/mysql
  • 按顺序安装rpm包
rpm -ivh mysql-community-common-5.7.25-1.el7.x86_64.rpm
rpm -ivh mysql-community-libs-5.7.25-1.el7.x86_64.rpm
rpm -ivh mysql-community-devel-5.7.25-1.el7.x86_64.rpm
rpm -ivh mysql-community-libs-compat-5.7.25-1.el7.x86_64.rpm
rpm -ivh mysql-community-client-5.7.25-1.el7.x86_64.rpm
yum install net-tools
rpm -ivh mysql-community-server-5.7.25-1.el7.x86_64.rpm

3.5.4 启动MySQL

  • 查看MySQL服务状态
    systemctl status mysqld
  • 启动MySQL服务
    system start mysqld
  • 查看已经启动的服务
    netstat -tunlp
    netstat -tunlp | grep mysql
  • 查看MySQL进程
    ps -df | grep mysql

说明:
可以设置开机时自动启动MySQL服务,避免每次开机都要启动MySQL
systemctl enable mysqld

3.5.5 登录MySQL

  • 查看日志内容中包含password的行信息
    cat /var/log/mysqld.log |grep 'A temporary password is generated'
  • 根据查询到的密码来登录MySQL
    mysql -uroot -p
  • 登录成功之后修改密码
    • 设置密码长度最低位数
      set global validate_password_length=4;
    • 设置密码安全等级低,便于密码可修改为root
      set global validate_password_policy=LOW;
    • 设置密码为root
      set password = password('root');
    • 开启访问权限
      grant all on *.* to 'root'@'%' identified by 'root';
    • 刷新权限
      flush privileges;

3.5.6 外部连接

使用Navicat或者SQLyog就可以连接到我们的数据库了,主机名就是ip地址,用户名和密码就是刚刚设置的
如果在查看MySQL服务状态时出现了问题,请查看3306端口是否被占用(我找了俩小时才发现原因,呜呜呜)

3.6 安装 lrzsz

操作步骤

  1. 搜索lrzsz安装包
    yum list lrzsz
  2. 使用yum命令在线安装
    yum install lrzsz.x86_64

Yum(全称为Yellow dog Updater, Modified)是一个在Fedora和RedHat以及Cent05中的Shell前端软件包管理器。基于RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖关系,并且一次安装所有依赖的软件包,无须繁琐地一次次下载、安装。

安装完后输入rz,就会跳出一个窗口,选择文件后即可上传

4. 项目部署

4.1 手动部署

操作步骤

  1. 在IDEA上将项目打包成jar包
  • 通过IDEA自带的Maven面板的package指令打包即可
  • 打完的包会放在target目录下
  1. 将jar包上传到linux服务器
  • 最好还是创建一个对应的目录
    • mkdir /usr/local/app
    • cd /usr/local/app
  • 然后使用rz命令上传打包好的jar包
  1. 启动项目
  • java -jar [打包好的jar包名]
  • 我这里试着上传了前面做的瑞吉外卖的项目
    java -jar reggie-0.0.1-SNAPSHOT.jar
  1. 检查防火墙
    确保80803306端口是开放的
    firewall-cmd --zone=public --list-ports
  2. 测试
    在浏览器访问ip:端口/路径
    在这里插入图片描述

4.2 通过Shell脚本自动部署

操作步骤

  1. 在Linux安装Git
  • 列出git安装包
    yum list git
  • 在线安装git
    yum install git
  • 使用git克隆代码(在此之前随便编写一个boot项目,然后push到仓库里,controller层写一个GetMapping,随便写个方法返回字符串Shell脚本部署测试,方便我们启动服务器的时候查看)
    git clone [仓库地址]
  1. 在Linux安装Maven
  • 切换到/usr/local目录
    cd /usr/local
  • 上传maven的安装包
    使用rz命令
  • 解压到当前位置
    tar zxvf apache-maven-3.5.4-bin.tar.gz
  • 编辑配置文件/etc/profile
    • vim /etc/profile
    • 加入以下两行配置
      export MAVEN_HOME=/usr/local/apache-maven-3.5.4
      export PATH=$JAVA_HOME/bin:$MAVEN_HOME/bin:$PATH
      
  • 编辑maven的settings.xml
    • 创建目录
      mkdir /usr/local/repo
    • 进入到对应目录修改文件
      cd /usr/local/apache-maven-3.5.4/conf
      vim settings.xml
      settings标签下加上这句话设置仓库位置
      <localRepository>/usr/local/repo</localRepository>
  1. 编写Shell脚本(拉取代码、编译、打包、启动)
    这部分暂时不需要我们自己写,体验一下用Shell脚本部署就好了
#!/bin/sh
echo =================================
echo  自动化部署脚本启动
echo =================================
 
echo 停止原来运行中的工程
APP_NAME=helloworld
 
tpid=`ps -ef|grep $APP_NAME|grep -v grep|grep -v kill|awk '{print $2}'`
if [ ${tpid} ]; then
    echo 'Stop Process...'
    kill -15 $tpid
fi
sleep 2
tpid=`ps -ef|grep $APP_NAME|grep -v grep|grep -v kill|awk '{print $2}'`
if [ ${tpid} ]; then
    echo 'Kill Process!'
    kill -9 $tpid
else
    echo 'Stop Success!'
fi
 
echo 准备从Git仓库拉取最新代码
cd /usr/local/HelloWorld
 
echo 开始从Git仓库拉取最新代码
git pull
echo 代码拉取完成
 
echo 开始打包
output=`mvn clean package -Dmaven.test.skip=true`
 
cd target
 
echo 启动项目
nohup java -jar HelloWorld-1.0-SNAPSHOT.jar &> helloworld.log &
echo 项目启动完成
  1. 为用户授予执行Shell脚本的权限
    7表示rwx三个权限都有,现在我们把权限都给了方便测试
    chmod 777 bootStart.sh
  2. 执行Shell脚本
    ./bootStart.sh
  3. 设置静态ip(可选)
    在这里插入图片描述
  • 首先进入到对应目录
    cd /etc/sysconfig/network-scripts/
    • 然后编辑ifcfg-ens33文件
      • vim ifcfg-ens33
      • 修改添加以下内容(改成你自己的子网IP)
        BOOTPROTO="static"  #修改BOOTPROTO,使用静态IP地址,默认为dhcp
        IPADDR="192.168.157.100"  #设置的静态IP地址
        NETMASK="255.255.255.0"  #子网掩码
        GATEWAY="192.168.157.2"  #网关地址
        DNS1="192.168.157.2"  #DNS服务器
        
  • 重启网络服务
    systemctl restart network
    注意:
    需要新建SSH连接,更改mysql、redis,因为ip已发生变化,如果发现docker中的mysql、redis还是连不上,可以重启虚拟机。
  • 9
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值