• 在linux上部署一个web项目的小经验


    设置IP地址和设置IP地址为静态

    用VM的linux的时候,一定首先要把自己的IP改为静态的,不然下次恢复快照或者重启什么的,可能会导致IP地址变化

    更改IP和设置IP为静态的方法

    步骤:

    1. 进入这个文件
      /etc/sysconfig/network-scripts/ifcfg-ens33
      命令即
      vim /etc/sysconfig/network-scripts/ifcfg-ens33
    2. 设置IP为静态
      把这个后面的值改为static,表示设置IP为静态
      在这里插入图片描述
    3. 更改IP
      然后在文件最后面加上四行这个(如果没有的话,如果有则按照下面注释中的提示进行修改值即可)
    IPADDR=192.168.78.182//这是自己要改成的IP地址,值是自己要设置的IP地址
    GATEWAY=192.168.78.2//网关,值为自己IP地址前三位再加上.2
    DNS1=192.168.78.2//DNS,值同上面网关
    NETMASK=255.255.255.0//子网掩码,一样就行
    
    • 1
    • 2
    • 3
    • 4

    注意一点:
    在VM左上角菜单里点击编辑,点击里面的虚拟网络编辑器
    请添加图片描述
    4. 然后调用这个命令重启一下网络就行(这个命令在任何目录下都可调用)
    service network restart

    然后通过ifconfig命令,可以看到自己的ip地址已经变为设置的IP

    其他一些知识点

    还有一点,在修改了文件后,可以通过sync命令来使文件更新到磁盘里,不然可能在非正常关机的情况下导致文件未真正的修改成功

    linux下tomcat的webapps下,不要放过多无关的文件,不然会导致访问页面很慢

    ps命令一点小知识

    学习网址:菜鸟教程中的linux下的ps教程

    1. ps -A
      列出所有的进程

    2. ps -a
      显示所有终端机下执行的程序,除了阶段作业领导者之外
      在这里插入图片描述

    3. 可以通过kill -9 PID来杀死对应的进程,这个是强制性的,或者可以通过kill -15 PID,可以温和的杀死进程,若这个无法杀死,建议还是用kill -9 PID

    CentOS7可视化页面下设置为中文

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    MySQL部分

    MySQL错误代码1130

    当尝试通过ip进行远程连接MySQL,若之前并未修改mysql自带的名为mysql的数据库,开启MySQL
    并未给远程连接的用户权限问题。
    这样子操作mysql库,即可解决。

    在本机登入mysql后,更改 “mysql” 数据库里的 “user” 表里的 “host” 项,从”localhost”改称’%'即可
    mysql -u root -p
    mysql;use mysql;
    mysql;select ‘host’ from user where user=‘root’;
    mysql;update user set host = ‘%’ where user =‘root’;
    mysql;flush privileges;
    mysql;select ‘host’ from user where user=‘root’;

    第一句:以权限用户root登录
    第二句:选择mysql库
    第三句:查看mysql库中的user表的host值(即可进行连接访问的主机/IP名称)
    第四句:修改host值(以通配符%的内容增加主机/IP地址),当然也可以直接增加IP地址
    第五句:刷新MySQL的系统权限相关表
    第六句:再重新查看user表时,查看是否修改成功

    linux和linux上的mysql

    写给我自己的
    在阿里云服务器上,把redis解压在了opt下
    把redis的命令和使用的配置文件放在了/usr/local/bin下
    把tomcat8的压缩包放在了home下,解压在了/usr/local下

    在官网上下载资源的选择:
    在这里插入图片描述

    配置环境变量在/etc/profile里面进行配置
    使用resource /etc/profile让环境变量立即生效

    防火墙的一些操作

    在这里插入图片描述

    linux和mysql

    linux的rpm就类似于windows中的执行exe的程序命令一样
    rpm是红帽特有的,rpm对应红帽软件包管理器的首字母(Red-Hat Package Manager)
    rpm在linux中就是用于安装软件包,跟yum不同,rpm是必须先有程序包才能安装
    rpm -qa:用于查看当前系统所安装的所有软件
    然后可以通过管道符来查找是否安装了某个指定的软件

    管道符简介: 就这么一个符号:|
    管道符主要用于多重命令处理,前面命令的打印结果作为后面命令的输入。简单点说就是,就像工厂的流水线一样,进行完一道工序后,继续传送给下一道工序处理…
    比如查看是否某个程序是否存在进程(是否运行),或者查看某个软件是否安装

    通过管道符来查找是否安装了某个指定的软件
    如查看是否安装了mysql:rpm -qa|grep mysql

    通过rpm安装mysql
    首先准备对应的mysql必备的rpm包
    进入mysql下载界面:此时出现的是8以上的版本,点击红色圈住的部分,进入5.7的版本
    在这里插入图片描述
    如下,在两个下拉框中选择linux对应的版本,如果是CentOS7的话跟我下面选择的保持一致即可,CentOS7就是Linux7
    其他的根据下拉框中内容选择对应的版本即可
    在这里插入图片描述
    然后我们可以看到下面好多中关于MySQL的供我们下载
    最引人注目的应该就是第一个:
    在这里插入图片描述
    这个里面包含了所有MySQL所必须的文件,并且还多了一些拓展的内容:
    在这里插入图片描述
    但是其实,MySQL并不需要这么多的内容,我选择了最小化安装,则只需要这六个即可:
    在这里插入图片描述
    这六个在下面的下载目录中都可以找到,我是一个一个下载下来的。。。。。
    注意,下载的时候点击这里:表示不注册或者不登录,直接下载
    在这里插入图片描述
    如果要下载第一个RPM Bundle也可以,随后将其放在linux下,然后通过命令tar -zxvf 下载的Bundle包名进行解压,然后会得到很多个rpm文件,其中就包含下面的几个,然后再按照下面的执行即可

    当这些软件包都有了,然后先判断当前linux是否有和MySQL冲突的软件
    首先,rpm -qa|grep mysql查看是否已经安装MySQL,然后再rpm -qa|grep mariadb查看是否有红帽自带的数据库管理软件mariadb,这个与MySQL冲突。
    如果以上有哪个,则在安装之前,需要进行卸载:rpm -e --nodeps 软件名称

    然后,则可执行接下来的安装
    先把他们都放在都一个目录下,比如在/usr/local/下建一个mysql文件夹,把他们全放进去,然后按照如下顺序依次安装除了server的程序包,rpm安装命令:rpm -ivh rpm版的程序包
    在这里插入图片描述
    为什么要按照顺序?因为上面的一些包的安装可以需要依赖其他包的存在,所以先把被依赖的包安装上,再安装需要依赖其他包的包
    最后再安装server。也是命令:rpm -ivh server包的名称跟上面的一样
    但是,这一个命令执行的时候,基本都会给你出点问题,对应的相关解决方式如下:

    在通过rpm安装软件包的时候,经常会遇见一个报错error: Failed dependencies:
    说我们没有对应的依赖
    就比如当我们按照对应的顺序安装mysql的时候,到最后安装server的时候,如果没有安装一个叫net-tools的网络工具,则就会报这样一个错,说需要net-tools,所以我们可以通过yum install net-tools命令来安装这个工具包

    如果出现如下错误:则说明缺少libaio,则执行yum install libaio安装一下libaio
    在这里插入图片描述

    如果server还安装不上的,可以尝试安装个perl-Module-Install.noarch
    命令:yum install -y perl-Module-Install.noarch

    如果又报了其他的错,可以尝试在安装service的命令最后加一个 --forece --nodeps




    命令yun update可以升级现有系统的软件和系统内核

    linux的MySQL启动

    可通过systemctl start/stop mysqld来 启动/停止 MySQL服务
    设置MySQL开机启动可使用命令:systemctl enable mysqld
    如果前面有安装了小插件net-tools,便可使用netstat命令。如未安装,则可yum install net-tools来进行安装
    如查看已经启动的服务:netstat -tunlp。如果服务过多,可通过管道符来进行过滤:netstat -tunlp | grep mysqld。这里使用的是模糊查询,使用netstat -tunlp | grep mysql也能查到
    或者通过PS命令查看进程是否启动。ps -ef|grep mysqld。进程比较多,可以使用管道符进行过滤
    在这里插入图片描述

    第一次登录
    一开始MySQL会给我们自动生成一个密码,第一次登录我们没有密码,我们得去找一下这个自动生成的密码
    在这里插入图片描述
    MySQL启动后会生成对应的日志,我这里通过rpm默认安装的mySQL,所以日志位置就在默认的/var/log/下,然后通过管道符找出包含password单词的那一行日志,即可找到生成的密码

    然后登录即可

    然后修改密码:
    如果想修改简单的密码,需要设置密码设置的校验规则,不然一般情况下,MySQL不让密码设置的太简单
    在这里插入图片描述

    设置密码结束后,如果需要远程连接这个数据库,则需要开启远程访问权限,如上图
    这里需要注意的是,grant all on *.* to 'root'@' %' identified by 'root';这个命令,需要把最后单引号里面的root改成自己设置的密码。
    然后通过flush privileges;刷新权限。
    然后exit;退出MySQL,再systemctl stop mysqld停止mysql服务,然后再systemctl start mysqld启动mysql服务。即重启服务。
    然后记得给linux打开防火墙的3306端口,然后即可远程访问。

    linux上一个用于文件上传的小工具
    传输文件,我们可以直接在linux上安装一个小工具,如下
    在这里插入图片描述
    然后通过rz命令即可弹出文件上传的窗口,进行文件上传
    在这里插入图片描述

    Windows
    使用netstat -ano命令即可查看所有占用端口的进程

    1、nohup
    后台运行Java程序,并将日志输出到指定的文件
    在这里插入图片描述

    项目的手动部署和自动部署

    手动部署

    在windows上,通过maven,将程序打包成jar,然后传到linux,然后通过java命令执行发布
    我的从windows上传的jar包放在了/usr/local/app/下
    执行jar包的命令:java -jar jar包名
    通过nohub可以使其在后台执行

    自动部署

    编写shell脚本来通过Git自动拉取项目,并通过maven自动打包项目,并自动执行程序

    linux安装Git和Maven

    安装Git

    首先通过yum查看是和自己当前Linux版本的Git安装包。命令:yum list git
    安装命令: yum install git
    通过git,拉取克隆项目
    我的是克隆在了 /usr/local/下
    先进入要存放的目录,然后使用git命令:git clone 仓库地址

    安装Maven

    先下载Maven的linux版本
    先进入官网:https://maven.apache.org/download.cgi,然后选择如下的,进行下载即可
    在这里插入图片描述
    下载好后,将其上传至linux中,我的放在了/usr/local/下
    然后通过命令tar -zxvf maven包名进行解压
    然后要想使用起来舒服,则配置maven
    首先是环境变量:
    命令:vim /etc/profile
    进入配置文件,进行修改,在最后面加入如下内容

    export MAVEN_HOME=自己maven解压后的名字的路径/自己maven解压后的名字
    export PATH=$JAVA_HOME/bin:$MAVEN_HOME/bin:$PATH
    
    • 1
    • 2

    然后执行source /etc/profile命令,使配置文件生效
    然后使用命令mvn -version,查看是否能出现版本信息,若出现,则表示成功
    在这里插入图片描述
    配置Maven的setting文件
    经典步骤,设置阿里镜像和maven仓库位置:
    我的setting文件内容:(篇幅有限,把多余的注释全给删了)

    
    <settings xmlns="http://maven.apache.org/SETTINGS/1.2.0"
              xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
              xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.2.0 https://maven.apache.org/xsd/settings-1.2.0.xsd">
    <localRepository>/usr/local/repolocalRepository> 
    
      <pluginGroups>
      pluginGroups>
    
      <proxies>
      proxies>
    
      <servers>
      servers>
    
      <mirrors>
      
        <mirror>
          <id>nexus-aliyunid>
          <mirrorOf>centralmirrorOf>
          <name>Nexus aliyunname>
          <url>http://maven.aliyun.com/nexus/content/groups/publicurl>
        mirror>
      mirrors>
      
      <profiles>
      profiles>
    settings>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28

    编写shell脚本

    编写shell脚本,创建 文件名.sh文件,然后里面编写shell命令
    我不会,就直接找了个模板改了改
    其实就是linux命令的集合,都还是能看懂的
    我这个sh文件在保存的时候可能保存失败,若保存失败,则把里面的中文去掉或者换成英文即可
    内容如下:

    #!/bin/sh
    echo =================================  # echo等同于Java中的打印日志
    echo  自动化部署脚本启动
    echo =================================
    
    echo 停止原来运行中的工程
    APP_NAME=boot_ssmp  #自己项目的名字,叫啥不重要,只需要能通过这个字符串查找到自己项目的进程即可
    
    # 根据上面的名字查找进程,若存在,则先停止
    tpid=`ps -ef|grep $APP_NAME|grep -v grep|grep -v kill|awk '{print $2}'`
    if [ ${tpid} ]; then
        echo 'Stop Process...'
        kill -15 $tpid  #较温和的杀死进程的命令 即kill -15
    fi
    sleep 2  #等待两秒
    tpid=`ps -ef|grep $APP_NAME|grep -v grep|grep -v kill|awk '{print $2}'`
    # 若进程依旧存在,则通过强硬的命令杀死进程,即kill -9
    if [ ${tpid} ]; then
        echo 'Kill Process!'
        kill -9 $tpid
    else
        echo 'Stop Success!'
    fi
    
    # 首先进入之前从git克隆下的仓库中,然后执行git命令,进行pull更新项目
    echo 准备从Git仓库拉取最新代码
    cd /usr/local/boot_ssmp
    
    echo 开始从Git仓库拉取最新代码
    git pull
    echo 代码拉取完成
    
    # 执行maven的打包命令
    echo 开始打包
    output=`mvn clean package -Dmaven.test.skip=true`
    
    # 进入taret目录
    cd target
    
    # 启动项目
    echo 启动项目
    nohup java -jar boot_ssmp-0.0.1-SNAPSHOT.jar &> boot_ssmp.log &
    echo 项目启动完成
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44

    用户授权和运行shell脚本

    在运行这个文件之前,我们需要先查看自己当前用户是否有执行这个文件的权限,若没有则需要先授权
    通过查看当前目录文件的另一个命令:ll可以查看所有用户所拥有的对这个文件的权限。如果要查看所有文件(包括隐藏文件),则通过加参数-a来实现

    如图,使用ll命令后,文件最前面会出现一串字符,总共有10个,第一个表示当前文件的类型,d表示文件夹,-表示是文件1,还有其他表示软链接,硬链接什么什么的,这里不用关注太多
    主要是后面9个,后面9个按照三个三个一组,如下图中所述
    在这里插入图片描述
    可以看到,当前我们用户对这个sh文件是只读模式
    然后通过chmod进行修改权限
    如下图,使用数字几其实很好记,可以把---这三个一组的当成一个二进制格式
    --r表示二进制的001,即十进制的1,然后进一,即变成-w-,表示二进制的010,即十进制的2
    如此即可
    在这里插入图片描述
    非常简单,这里我只想给当前用户给予rwx权限,则等同于二进制的111即十进制的7
    所以直接chmod 700 bootStart.sh即可
    然后当前用户就有权限了
    然后执行我们的sh文件
    直接命令文件所在目录/文件.sh即可,若在当前目录,可以./文件,sh执行。
    然后项目便能自己部署执行

    知道文件名,查看文件所在位置

    若想看日志输出
    则我们通过命令find / -name boot_ssmp.log查看我们输出的日志文件的位置,然后查看即可

  • 相关阅读:
    vue3调用mqtt
    报错了:torch.load{ModuleNotFoundError}No module named ‘lib‘
    【C++】构造函数与析构函数用途 ( 代码示例 - 构造函数与析构函数用途 )
    实时翻译软件-大家都在用的实时免费翻译软件
    Python函数式编程(一)概念和itertools
    面向未来的服务网格发展:展望服务网格技术未来的发展方向和趋势
    【标定】张正友:A Flexible New Technique for Camera Calibration
    4-9封装与隐藏
    Linux安装MySQL【Ubuntu20.04】
    如何使tstringgrid中心的单元格文本对齐
  • 原文地址:https://blog.csdn.net/qq_45821251/article/details/125312450