Java项目部署
使用 Nginx + Maven + Git + Pm2 完成项目的部署及维护
后端项目配置
环境配置
- JDK
- 安装命令:
yum install java-1.8.0-openjdk.x86_64 - 检测命令:
java -version
- 安装命令:
- Maven
- 安装命令:
yum install maven - 检测命令:
mvn -v
- 安装命令:
- Node
- 安装命令:
yum install nodejs - 检测命令:
npm -v
- 安装命令:
- pm2
- 前置条件:需要安装 Node
- 安装命令:
npm install pm2 -g
拉取代码
连接服务器,选择要存放代码的文件夹,然后拉取代码
git clone [仓库地址]环境配置
# maven 配置 mvn -N io.takari:maven:0.7.7:wrapper mvn clean install编写
pm2.json进程管理代码{ // 应用名称 "name": "myweb", "script": "/usr/bin/java", // 设置项目启动的参数,需要修改active "args": [ "-Xms128m", "-Xmx512m", "-XX:PermSize=128m", "-XX:MaxNewSize=256m", "-XX:MaxPermSize=128m", "-XX:+HeapDumpOnOutOfMemoryError", "-XX:+UseParallelGC", "-XX:+UseParallelOldGC", "-jar", "target/jweb_tl_pms-1.0.0-SNAPSHOT.jar", "--spring.profiles.active=beta2" ], "exec_interpreter": "", "exec_mode": "fork" }编写
build.sh脚本文件,用来统一执行命令# 拉取最新代码 git pull # 删除7天以前备份文件 location="/data/backup/myweb/" fileName=`date +%Y%m%d%H%M%S` path="${ location} ${ fileName} .jar" # echo "start copy to ${ path} !" find $location -mtime +1 -type f |xargs rm -f # 备份.jar文件 cp ./target/*.jar ${ path} # 打包和重启 ./mvnw clean package -Dmaven.test.skip=true # 这里对应pm2.json中的应用名称 pm2 restart myweb创建备份文件路径
/data/backup/myweb/依次执行下方代码
# 项目打包,生成jar包 mvn clean package -Dmaven.test.skip=true # 创建pm2 应用 pm2 start pm2.json此后更新均可以通过
sh build.sh命令一键拉取、打包和运行了
Nginx配置
创建
conf.d目录用来存放nginx配置文件
修改
nginx.conf配置文件,用于指向该目录下的所有配置文件
编写新的配置文件,注意这里不需要添加 http
upstream myweb_dev{ # 这里必须指向我们刚才pm2启动的应用程序的端口 server 127.0.0.1:8000; } server { listen 80; listen [::]:80; # 通过访问这个域名就可以访问到该项目了 server_name www.lxjstudy.top; return 301 https://www.lxjstudy.top; } server { listen 443 ssl; server_name www.lxjstudy.top; index index.html; gzip on; gzip_min_length 1k; gzip_comp_level 5; gzip_types text/plain application/x-javascript text/css application/xml application/javascript application/json; ssl_certificate /usr/local/nginx/cert/6143058_www.lxjstudy.top.pem; ssl_certificate_key /usr/local/nginx/cert/6143058_www.lxjstudy.top.key; ssi on; ssi_silent_errors on; ssi_types text/shtml; # 这里必须这样配置,不然访问不了项目内容 location / { add_header Access-Control-Allow-Origin *; add_header Access-Control-Allow-Headers X-Requested-With; add_header Access-Control-Allow-Methods GET,POST,OPTIONS; proxy_pass http://myweb_dev/; proxy_set_header Host $host; proxy_intercept_errors on; } location /connectWebSocket/ { # 这里需要设置端口 proxy_pass http://127.0.0.1:8000/connectWebSocket/; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "Upgrade"; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Real-IP $remote_addr; } }
配置项目输入日志
创建日志配置文件
logback-dev.xml,并指定对应的日志位置<?xml version="1.0" encoding="UTF-8"?> <configuration scan="true" scanPeriod="60 seconds" debug="false"> <contextName>myweb</contextName> <!-- 配置日志的路径 --> <property name="path" value="/data/jweblog/myweb_beta" /> <!-- 控制台 --> <appender name="console" class="ch.qos.logback.core.ConsoleAppender"> <encoder> <pattern>[%date{ HH:mm:ss.SSS} ] [%thread] [%-5level] [%logger{ 36} ] %msg%n</pattern> </encoder> </appender> <!-- 访问日志 --> <appender name="access" class="ch.qos.logback.core.rolling.RollingFileAppender"> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <fileNamePattern>${ path} /access/access.%d{ yyyy-MM-dd} .log </fileNamePattern> <maxHistory>3</maxHistory> </rollingPolicy> <encoder> <pattern>[%date{ HH:mm:ss.SSS} ] [%thread] [%-5level] [%logger{ 36} ] %msg%n</pattern> </encoder> </appender> <!-- 运行日志 --> <appender name="run" class="ch.qos.logback.core.rolling.RollingFileAppender"> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <fileNamePattern>${ path} /run.%d{ yyyy-MM-dd} .log</fileNamePattern> <maxHistory>7</maxHistory> </rollingPolicy> <encoder> <pattern>[%date{ HH:mm:ss.SSS} ] [%thread] [%-5level] [%logger{ 36} ] %msg%n</pattern> </encoder> </appender> <!-- 错误日志 --> <appender name="error" class="ch.qos.logback.core.rolling.RollingFileAppender"> <filter class="ch.qos.logback.classic.filter.LevelFilter"> <level>ERROR</level> <onMatch>ACCEPT</onMatch> <onMismatch>DENY</onMismatch> </filter> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <fileNamePattern>${ path} /error.%d{ yyyy-MM-dd} .log</fileNamePattern> <maxHistory>21</maxHistory> </rollingPolicy> <encoder> <pattern>[%date{ HH:mm:ss.SSS} ] [%thread] [%-5level] [%logger{ 36} ] %msg%n</pattern> </encoder> </appender> <!-- 访问日志 --> <logger name="access" level="INFO" additivity="false"> <appender-ref ref="access" /> </logger> <logger name="com.tl" level="DEBUG"> </logger> <root level="INFO"> <appender-ref ref="run" /> <appender-ref ref="error" /> <appender-ref ref="console" /> </root> </configuration>在
application-dev.yaml配置文件中编写日志信息# 配置日志文件 logging: config: classpath:logback-dev.xml
提交代码

在服务器项目目录下执行
sh build.sh执行更新
配置完成之后就可以通过 域名 进行访问了

谢谢光临~
- 本文链接:https://lxjblog.gitee.io/2021/10/03/Java%E9%A1%B9%E7%9B%AE%E9%83%A8%E7%BD%B2/
- 版权声明:本博客所有文章除特别声明外,均默认采用 许可协议。