• 博客系列-项目部署


    项目部署

    后端项目部署

    直接部署方式

    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问题

  • 相关阅读:
    UEFI启动 安装win8 win10 及windows server 2012 最简单的方法
    Android SDK中国在线更新镜像服务器 解决GOOGLE更新无法下载 更新失败的问题
    DELPHI 单元文件结构
    获取程序自身大小的2个函数
    实时获取网络时间 并转换为北京时间的函数
    部署maven的一些要点、遇到的问题
    cron表达式详解
    redhat安装xwindow环境
    tomcat执行文件权限
    一个方便的java分页算法
  • 原文地址:https://www.cnblogs.com/gcurry/p/13476583.html
Copyright © 2020-2023  润新知