在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//子网掩码,一样就行

注意一点:
在VM左上角菜单里点击编辑,点击里面的虚拟网络编辑器
请添加图片描述
如果这里的值跟我们设置的ip地址的前三位不一样,则需要在这里修改一下

然后,如下图
在这里插入图片描述
这个DHCP服务是一种自动分配ip地址的服务,勾选上的话,每次重启虚拟机或者VM可能会导致分配不同的ip地址,导致下面的子网IP也跟着变化,导致这里的子网IP前三位跟我们设置的IP地址的前三位不同,导致网络出错

  1. 然后调用这个命令重启一下网络就行(这个命令在任何目录下都可调用)
    service network restart

如果还是连不上网,可以修改这里:然后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

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

<?xml version="1.0" encoding="UTF-8"?>
<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/repo</localRepository> <!-- 指定Maven仓库 -->

  <pluginGroups>
  </pluginGroups>

  <proxies>
  </proxies>

  <servers>
  </servers>

  <mirrors>
  <!-- 阿里镜像 -->
    <mirror>
      <id>nexus-aliyun</id>
      <mirrorOf>central</mirrorOf>
      <name>Nexus aliyun</name>
      <url>http://maven.aliyun.com/nexus/content/groups/public</url>
    </mirror>
  </mirrors>
  
  <profiles>
  </profiles>
</settings>

编写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 项目启动完成

用户授权和运行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查看我们输出的日志文件的位置,然后查看即可

猜你喜欢

转载自blog.csdn.net/qq_45821251/article/details/125312450
今日推荐