项目部署
后端项目部署
直接部署方式
- 安装
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
-
Maven
打包项目,复制jar
包到Linux
,执行java -jar 项目名
运行 -
后台持续运行方式
可以写一个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自动化部署)
- 使用
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
上面,因为会涉及到频繁的修改端口号等)
- 安装
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
- 配置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;
}
}
- 配置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;
- 运行
解决页面刷新404 的问题
在 location /
节点下加入下面配置
try_files $uri $uri/ /index.html;
---解决页面刷新404问题