博客系列-项目部署

项目部署

后端项目部署

直接部署方式

  1. 安装JDK

下载jdk丢到linux/usr/java下(目录随意)

解压 tar -zxvf jdk-8.tar.gz

修改环境变量 vi /etc/profile

set java environment
JAVA_HOME=/usr/java/jdk1.8.0_171        
JRE_HOME=/usr/java/jdk1.8.0_171/jre     
CLASS_PATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib
PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
export JAVA_HOME JRE_HOME CLASS_PATH PATH

使用下面的命令让修改生效 source /etc/profile

java -version 测试时候安装成功Java

  1. Maven打包项目,复制jar包到Linux,执行 java -jar 项目名 运行

  2. 后台持续运行方式

可以写一个shell脚步完成,在当前目录下创建一个startup.sh文件 --(vim startup.sh)命令就两行,注意第一行运行的时候不是注释,是指此脚本使用/bin/sh来解释执行,是解释器第二行写自己jar文件的地址,我的是

#!/bin/sh
nohup java -jar /usr/java/pepper-blog.jar

脚本编写完后,初始是没有运行权限的,还有设置权限chmod +x startup.sh赋予可执行权限

再运行shell脚本./startup.sh

这样的情况下,关闭Xshell窗口程序就会自动退出如果需要后台进行,我们可以使用下列命令进行部署:

1、首次部署

//首次部署:
nohup java -jar demo01.jar >temp.text & 
//退出 ctrl + c 

其中:

—nohup 当账户退出或终端关闭时,程序仍然运行

— & 客户端关闭,后台停止运行

— temp.text 是存控制台文件(缺省情况下该作业的所有输出被重定向到nohup.out的文件中)

— 使用 tail -f temp.text 实时查看控制台文件

可通过jobs命令列出所有后台运行任务,并且每个作业前面都有个编号。

如果想将某个作业调回前台控制,只需要 fg + ``编号即可。

2、非首次部署

非首次部署当前程序需要在对应的文件夹中执行以下命令

a.捕获上一个版本程序的进程 ps - ef|grep demo.jar

b.杀死对应的进程 kill 进程号

c.启动程序 nohup java -jar demo.jar >temp.text &

d.退出 ctrl + c

e.查看日志 tail -500f temp.text

Docker部署(一般用于docker-maven+jenkins自动化部署)

  1. 使用DockerFile创建jdk镜像

创建目录

mkdir –p /usr/local/dockerjdk8

把安装包丢到这里

vi Dockerfile创建文件,粘贴下面内容

#依赖镜像名称和ID 
FROM centos:7 
#指定镜像创建者信息 
MAINTAINER JIGE 
#切换工作目录 
WORKDIR /usr 
RUN mkdir /usr/local/java 
#ADD 是相对路径jar,把java添加到容器中 
ADD jdk-8.tar.gz /usr/local/java/ 
#配置java环境变量 
ENV JAVA_HOME /usr/local/java/jdk1.8.0_171 
ENV JRE_HOME $JAVA_HOME/jre 
ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib:$CLASSPATH 
ENV PATH $JAVA_HOME/bin:$PATH

执行命令构建镜像

docker build -t='jdk1.8' . 后面有个空格和点不要忽略

查看镜像 docker images

创建容器docker run -it --name=myjdk8 jdk1.8 /bin/bash

项目的部署也可以使用这种方式,但是比较繁琐,因此这里使用docker-maven插件

拉取私有容器 docker pull registry

启动 docker run -di --name=registry -p 5000:5000 registry

打开浏览器输入地址 ip:5000/v2/_catalog 查看,私有容器创建成功

修改daemon.json--命令vi /etc/docker/daemon.json

添加以下内容,保存退出{"insecure-registries":["101.200.194.202:5000"]}

这步的作用是让docker信任私有仓库地址

重启docker 命令:systemctl restart docker

镜像上传至私有仓库 docker tag jdk1.8 101.200.194.202:5000/jdk1.8

启用私服docker start register

上传docker push ip:端口/jdk1.8

DockerMaven插件

修改宿主机docker配置: vi /lib/systemd/system/docker.service

ExecStart=后面添加配置 -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock

刷新配置重启服务

systemctl daemon-reload 
systemctl restart docker 
docker start registry 

idea项目pom文件中加入配置

<build> 
<finalName>项目名</finalName> 
<plugins> 
<plugin> 
<groupId>org.springframework.boot</groupId> 
<artifactId>spring-boot-maven-plugin</artifactId> 
</plugin> 
<!-- docker的maven插件,官网: 
https://github.com/spotify/docker-maven-plugin --> 
<plugin> 
<groupId>com.spotify</groupId> 
<artifactId>docker-maven-plugin</artifactId> 
<version>0.4.13</version> 
<configuration> 
<imageName>ip:5000/${project.artifactId}:${project.version} 
</imageName> 
<baseImage>jdk1.8</baseImage> 
<entryPoint>["java", "-jar", 
"/${project.build.finalName}.jar"]</entryPoint> 
<resources> 
<resource> 
<targetPath>/</targetPath> 
<directory>${project.build.directory} 
</directory> 
<include>${project.build.finalName}.jar</include> 
</resource> 
</resources> 
<dockerHost>http://ip:2375</dockerHost> 
</configuration> 
</plugin> 
</plugins> 
</build> 

cmd进入项目目录,执行:mvn clean package docker:build -DpushImage

最后运行: docker run -di --name=pepper-blog -p 1000:1000 IMAGE-ID

前端部署

建议部署到nginx上(nginx不建议部署到docker上面,因为会涉及到频繁的修改端口号等)

  1. 安装Nginx
yum -y install gcc pcre-devel zlib-devel openssl openssl-devel

下载nginx包,移动到/usr/local

解压:tar -zxvf nginx-1.9.9.tar.gz

进入nginx目录:cd nginx-1.9.9

配置:./configure --prefix=/usr/local/nginx

编译make

make
make install

报错可能是因为没有logs目录,需要手动创建logs目录

mkdir logs
chmod 700 logs
  1. 配置server节点
    server {
        listen       端口;
        server_name  localhost;

        location / {
            root   lsm_web;
            index  index.html;
        }
        location /pro{
            proxy_pass http://代理地址/;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Real-Port $remote_port;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        }
    }
  1. 配置gzip
        gzip on;
        gzip_min_length  5k;
        gzip_buffers     4 16k;
        #gzip_http_version 1.0;
        gzip_comp_level 5;
        gzip_types text/plain application/javascript application/x-javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png;
        gzip_vary on;

  1. 运行

解决页面刷新404 的问题

location / 节点下加入下面配置

try_files $uri $uri/ /index.html;---解决页面刷新404问题

posted @ 2020-08-11 16:42  g_curry  阅读(111)  评论(0编辑  收藏  举报