测试环境部署V1.0

V1.0是纯手工部署。

后端部署
前置条件

我们后端项目需要java环境、maven环境。这个可以与开发确认需要提前安装哪些环境。

流程

①拉取代码到本地

②本地打包

③打好的包上传至服务器

④登录服务器,重启tomcat

操作实施
拉取代码到本地
  • 确认源代码版本控制系统
    需要先确认项目使用的版本控制系统是啥,一般就是git、svn,我们项目用的是git。
  • 安装版本控制工具
  • 配置用户及认证凭据
  • 了解项目分支
  • 查看当前仓库中的分支
DELL@DESKTOP-15R0S26 MINGW64 /f/tools/project/whzz/sales (master)
$ git branch
* master
  • 查看远程仓库中的分支
DELL@DESKTOP-15R0S26 MINGW64 /f/tools/project/whzz/sales (master)
$ git branch -r
...

了解分支是为了确认分支对应什么环境,一般测试环境、开发环境、预发布环境、线上环境都对应至少一个不同的分支。因此,如果需要快速搭建一个环境用作测试,了解分支是比较重要的。

比如,线上问题排查及定位:

我们现在有一个线上问题,需要马上排查处理。那我们需要以线上的环境去复现和定位问题。那一般就需要快速拉取线上分支的代码,连接线上最新的备份数据库,部署一个测试环境,进行测试。

再比如,临时急需上线的需求:

我们正在测试一个迭代,预计测试三天后上线。但是,突然产品带着热乎乎的需求笑意盈盈的向你走来,轻声的对你说,有一个临时的需求,今天就要上线。你怎么办?肯定是一边骂着nnd一边准备搭建一个临时的测试环境,当然这个环境拉取的分支肯定也是另一个分支了。

  • 拉取代码
#进入存储项目的路径
git clone [项目代码地址]
本地打包
  • 确认环境
    先确认是否已具备java,maven环境。
    在cmd执行以下命令,查看jdk环境、以及maven的版本
F:\tools\project\whzz\sales>

F:\tools\project\whzz\sales>java -version
java version "1.8.0_192"
Java(TM) SE Runtime Environment (build 1.8.0_192-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.192-b12, mixed mode)

F:\tools\project\whzz\sales>mvn -v
Apache Maven 3.6.3 (cecedd343002696d0abb50b32b541b8a6ba2883f)
Maven home: F:\tools\maven\apache-maven-3.6.3\bin\..
Java version: 1.8.0_192, vendor: Oracle Corporation, runtime: C:\Program Files\Java\jdk1.8.0_192\jre
Default locale: zh_CN, platform encoding: GBK
OS name: "windows 10", version: "10.0", arch: "amd64", family: "windows"

如果没有显示版本号,那可能是没配置环境变量或者没安装。

  • 打包
    在存储项目的路径下,输入cmd,进入命令行(进入后,默认就在存储项目的路径)
#maven打包命令,clean是先清除之前打好的包,package是执行打包
mvn clean package

怎么看自己安装好java 怎么查看是否安装java_笔记

上传至服务器
  • 定位打好的包
    打好的包一般以 [项目名称.jar] 或 [项目名称.war] 的形式,存放在“项目路径*web\target”目录下。

ps:jar包还是war包是由项目pom.xml文件中标签决定的,标签后是jar就会打jar包,是war就会打war包。jar包和war包的部署流程不同,我这边项目是打war包,所以主要说明war包部署。

  • 上传到服务器
  1. 连接服务器
  2. war包部署
    上传文件

重启tomcat

[root@localhost logs]# systemctl restart tomcat

查看tomcat进程

[root@localhost logs]# ps -ef|grep tomcat
root       7876      1 86 00:26 ?        00:00:34 /usr/local/jdk/jdk1.8.0_202/bin/java -Djava.util.logging.config.file=/usr/local/tomcat/tomcat/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Dspring.profiles.active=test -Djavax.servlet.request.encoding=UTF-7 -Dfile.encoding=UTF-8 -Duser.language=zh_CN -Dsun.jnu.encoding=UTF-8 -Duser.timezone=GMT+08 -Djdk.tls.ephemeralDHKeySize=2048 -Djava.protocol.handler.pkgs=org.apache.catalina.webresources -Dorg.apache.catalina.security.SecurityListener.UMASK=0027 -Dignore.endorsed.dirs= -classpath /usr/local/tomcat/tomcat/bin/bootstrap.jar:/usr/local/tomcat/tomcat/bin/tomcat-juli.jar -Dcatalina.base=/usr/local/tomcat/tomcat -Dcatalina.home=/usr/local/tomcat/tomcat -Djava.io.tmpdir=/usr/local/tomcat/tomcat/temp org.apache.catalina.startup.Bootstrap start
root       8263 105617  0 00:27 pts/1    00:00:00 grep --color=auto tomcat
[root@localhost logs]#

通过tomcat的进程id7876,查看tomcat占用端口

[root@localhost logs]# netstat -anop|grep 7876
tcp6       0      0 :::8050                 :::*                    LISTEN      7876/java            off (0.00/0/0)
tcp6       0      0 192.168.63.130:45930    192.168.2.13:3307       ESTABLISHED 7876/java            keepalive (7163.71/0/0)
tcp6       0      0 192.168.63.130:45902    192.168.2.13:3307       ESTABLISHED 7876/java            keepalive (7163.71/0/0)
...

从上面可以看到我这边占用的端口是8050,默认是8080。因为我是有改过tomcat的端口号。
如何修改呢?通过修改tomcat安装路径下conf目录下的 server.xml文件。
如果不知道tomcat的安装路径,可以通过whereis 命令查看

[root@localhost sbin]# whereis tomcat
tomcat: /usr/local/tomcat

怎么看自己安装好java 怎么查看是否安装java_学习_02

怎么修改tomcat的占用端口,可以参考这篇文章:Linux下修改tomcat端口号

验证部署

查看tomcat运行日志

进入tomcat安装目录/logs,再查看日志文件

[root@localhost webapps]# cd ../logs
[root@localhost logs]# cat catalina.out

日志文件看到有项目中的sql在运行。

通过postman调用接口

接口有返回,说明后端项目已经部署成功了。

怎么看自己安装好java 怎么查看是否安装java_tomcat_03

前端部署
前置条件

确保前端环境已配置好,我们项目的前端依赖是nodejs,可以向开发确认一下需要什么样的环境。

最好是确定一下安装什么版本比较稳定,我之前安装的nodejs版本过高,导致很多依赖都下载不下来,版本不兼容,就无法成功打包

流程

①拉取代码到本地

②本地打包

③打好的包上传至服务器

④登录服务器,重启nginx

操作实施
拉取代码到本地

与后端部署步骤中拉取代码一致

本地打包
  • 确认环境
    先确认是否已具备nodejs环境。
    在cmd执行以下命令,查看nodejs版本
F:\tools\project\whzz\front>node -v
v14.21.3

如果没有显示版本号,那可能是没配置环境变量或者没安装。

  • 修改后端连接地址
    因为我们的项目现在有五套环境:开发,测试,预发布,生产,线上备份,因此需要配置前端打包环境变量,来指定前端连接哪个后端地址(可以查
    一般是在前端项目的package.json文件内修改,修改后保存即可。如果接口有统一的路径,需要加上。
  • 打包
    在存储项目的路径下,输入cmd,进入命令行,执行以下命令:
#初始化安装依赖
F:\tools\project\whzz\front>npm install

我这边会有这样的提示,好像也不影响

怎么看自己安装好java 怎么查看是否安装java_笔记_04

再执行打包命令:

#这里因为是打test环境的包,所以会指定test脚本
F:\tools\project\whzz\front>npm run build:test

#test表示测试环境,这里有一个前端打包环境变量的概念,可以参考这边文章([前端环境部署如何配置后端接口地址](前端环境部署如何配置后端接口地址_后端地址_IT 哈的博客-学习。

打包完成后,会提示:

怎么看自己安装好java 怎么查看是否安装java_tomcat_05

也有可能运行打包命令后,会出现报错,比如:
error code ELIFECYCLE 21 error errno 1 22 error sales@1.0.0 build:test: set external_url=http://119.23.31.110:80&& set server_url=http://192.168.1.66:8990&& set activityCodePre=http://jystest.zzcfo.cn/#/activityAddCustomer/index?&& set activityCodePres=http://jystest.zzcfo.cn/#/registrationPage?&& set agentRegister=http://jystest.zzcfo.cn/#/account/registe?&& node build/build.js 22 error Exit status 1 23 error Failed at the sales@1.0.0 build:test script.

不要惊慌,小问题(虽然我也不懂)。

但是可以看大佬是如何解决的:
解决方案参考文章:[解决]npm ERR! code ELIFECYCLE - 简书 (jianshu.com)

上传到服务器
  • 定位打好的包
    打好包后,一般会在项目路径下生成一个 dist 文件。

上传到服务器存放项目的路径下,并且复制路径(操作过程跟后端部署里上传到服务器是一样的,复制路径是后面修改nginx配置需要)

我这边dist文件存放的路径:

怎么看自己安装好java 怎么查看是否安装java_nginx_06

重新加载nginx
  • 配置nginx文件
    需要修改服务器上{nginx安装路径}/conf/nginx.conf文件配置。
    我不太习惯vim下编辑,就通过editplus修改的。

下载editplus后,可以配置连接服务器。参考文章:Editplus 远程连接虚拟机

  • 重新加载nginx
    在nginx安装路径sbin目录下输入命令,重新加载nginx(一般是/usr/local/nginx/sbin)
[root@localhost sbin]# nginx -s reload

tips:

如果访问不了的话,可以检查一下前端端口是否被占用。

#检查80端口是否被占用
[root@localhost sbin]# netstat -ntlp | grep 80
tcp        0      0 127.0.0.1:6010          0.0.0.0:*               LISTEN      88029/sshd: root@pt 
tcp        0      0 0.0.0.0:8060            0.0.0.0:*               LISTEN      96008/nginx: worker 
tcp6       0      0 :::8050                 :::*                    LISTEN      7876/java           
tcp6       0      0 ::1:6010                :::*                    LISTEN      88029/sshd: root@pt 
tcp6       0      0 127.0.0.1:8005          :::*                    LISTEN      7876/java

如果端口被占用,有两个解决方法,一是杀掉占用端口的进程;二是修改nginx端口

#一 杀掉占用端口的进程
[root@localhost sbin]# netstat -ntlp | grep 80
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      101354/nginx: worke 
tcp        0      0 127.0.0.1:6010          0.0.0.0:*               LISTEN      88029/sshd: root@pt 
tcp6       0      0 :::8050                 :::*                    LISTEN      7876/java           
tcp6       0      0 ::1:6010                :::*                    LISTEN      88029/sshd: root@pt 
tcp6       0      0 127.0.0.1:8005          :::*                    LISTEN      7876/java           
[root@localhost sbin]# kill -9 101354 #进程id
#二 修改nginx配置文件中的端口
修改配置文件nginx.conf(一般是/usr/local/nginx/conf路径下)如下:
 server {
        listen       80;  #可以修改为其他端口号
        server_name  192.168.63.131;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;
#注意:
#修改的端口号,要是防火墙已经启用的
#启用某个端口的命令:
[root@localhost sbin]# firewall-cmd --zone=public --add-port=端口号/tcp --permanent

参考文档:Linux下开启、关闭端口的方法>

最终检查项目是否成功部署

访问前端地址,查看后端接口是否为配置的地址,是否能正常登录。

怎么看自己安装好java 怎么查看是否安装java_笔记_07