当前位置: 首页 > news >正文

部署 Web 项目到Linux上

目录

环境配置

构建项目

​编辑

数据准备

运行并查看日志

杀掉进程


把程序安装到生产环境上, 这个过程称为 "部署",也叫 "上线"。一旦程序部署成功, 那么这个程序就能被外网中千千万万的普通用户访问到。

环境配置

程序配置文件修改

实际工作中, 开发环境, 测试环境以及生产环境的配置都是不一样的。比如如mysql的用户名和密码 我们可以针对不同的环境, 设置不同的配置。

多平台文件配置

针对不同平台创建不同的配置文件, 要求名字为application-XXX.yml或者application-XXX.properties 。以下以application-XXX.yml为例:

固定格式, 只有 - 后面的字母可以修改。

在配置文件里写不同的内容

开发环境(本地的)

application-dev.yml

spring:datasource:url: jdbc:mysql://127.0.0.1:3306/java_blog_spring?characterEncoding=utf8&useSSL=falseusername: rootpassword: #本地环境的数据库密码driver-class-name: com.mysql.cj.jdbc.Driver
mybatis:configuration:map-underscore-to-camel-case: true log-impl: org.apache.ibatis.logging.stdout.StdOutImpl mapper-locations: classpath:mapper/**Mapper.xmllogging:file:name: logger/spring-blog.log

生产环境(部署到云服务器上的)

application-prod.yml

spring:datasource:url: jdbc:mysql://127.0.0.1:3306/java_blog_spring?characterEncoding=utf8&useSSL=falseusername: rootpassword: #生产环境的数据库密码driver-class-name: com.mysql.cj.jdbc.Driver
mybatis:configuration:map-underscore-to-camel-case: true mapper-locations: classpath:mapper/**Mapper.xmllogging:file:name: /var/logger/spring-blog.log

在主配置文件 application.yml 中指定配置文件, 并删除数据库相关配置

spring:profiles:active: prod

如果想要不手动敲代码转换生产环境和开发环境,使用Maven调整,则可以在pom.xml中添加配置。

构建项目

打包生产环境

把jar包上传到云服务器上

在云服务上登录MySQL,创建项目数据库

mysql -uroot -p

数据准备

在云服务器上使用MySQL建立表

-- 建表SQL
create database if not exists java_blog_spring charset utf8mb4;
-- ⽤⼾表
DROP TABLE IF EXISTS java_blog_spring.user;
CREATE TABLE java_blog_spring.user(`id` INT NOT NULL AUTO_INCREMENT,`user_name` VARCHAR ( 128 ) NOT NULL,`password` VARCHAR ( 128 ) NOT NULL,`github_url` VARCHAR ( 128 ) NULL,`delete_flag` TINYINT ( 4 ) NULL DEFAULT 0,`create_time` DATETIME DEFAULT now(),`update_time` DATETIME DEFAULT now(),PRIMARY KEY ( id ),
UNIQUE INDEX user_name_UNIQUE ( user_name ASC )) ENGINE = INNODB DEFAULT CHARACTER
SET = utf8mb4 COMMENT = '⽤⼾表';
-- 博客表
drop table if exists java_blog_spring.blog;
CREATE TABLE java_blog_spring.blog (`id` INT NOT NULL AUTO_INCREMENT,`title` VARCHAR(200) NULL,`content` TEXT NULL,`user_id` INT(11) NULL,`delete_flag` TINYINT(4) NULL DEFAULT 0,`create_time` DATETIME DEFAULT now(),`update_time` DATETIME DEFAULT now(),PRIMARY KEY (id))
ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COMMENT = '博客表';
-- 新增⽤⼾信息
insert into java_blog_spring.user (user_name, password,github_url)values("zhangsan","123456","https://gitee.com/Roylele-java-j");
insert into java_blog_spring.user (user_name, password,github_url)values("lisi","123456","https://gitee.com/Roylele-java-j");
insert into java_blog_spring.blog(title,content,user_id) values("第一篇博客","111我是博客正文我是博客正文我是博客正文",1);
insert into java_blog_spring.blog(title,content,user_id) values("第一篇博客","222我是博客正文我是博客正文我是博客正文",2);

运行并查看日志

nohup : 后台运行程序. 用于在系统后台不挂断地运行命令,退出终端不会影响程序的运行

nohup java -jar 运行的jar包 &

跟踪日志

tail -f xxxx.log

过滤日志

tail -f | grep "Exception"
tail -f | grep "Error"
tail -f | grep "xxxx"

杀掉进程

1. 查看当前服务的进程

ps -ef|grep java

2. 杀掉进程

kill -9 PID

kill -1(重新加载进程)

kill -9(s杀死一个进程)

kill -15(正常停止一个进程)

若再次启动继续使用nohup java -jar xxxx.jar &即可

相关文章:

  • 智慧灯杆-智慧城市照明现状分析(1)
  • Android Studio Iguana | 2023.2.1版本
  • 基于斑翠鸟优化算法(Pied Kingfisher Optimizer ,PKO)的无人机三维路径规划(MATLAB)
  • 检测虚拟机环境的常见技术
  • 前端架构: 脚手架通用框架封装之添加测试框架(教程六)
  • css相邻元素边框重合问题,解决方案
  • 【内推】新风口-大模型独角兽公司minimax
  • MySQL GTID 简介 原理 应用场景 优点 注意事项
  • vue 在线预览word
  • java继承,接口,抽象类
  • centos 系统 yum 无法安装(换国内镜像地下)
  • 设计模式学习笔记 - 规范与重构 - 5.如何通过封装、抽象、模块化、中间层解耦代码?
  • HTTP有什么缺陷,HTTPS是怎么解决的
  • 探索ChatGPT在软件架构师工作中的应用
  • Spring-Cloud-Gateway Filter详细配置说明
  • [ JavaScript ] 数据结构与算法 —— 链表
  • 【跃迁之路】【585天】程序员高效学习方法论探索系列(实验阶段342-2018.09.13)...
  • Git的一些常用操作
  • Java,console输出实时的转向GUI textbox
  • JAVA多线程机制解析-volatilesynchronized
  • Java基本数据类型之Number
  • jquery ajax学习笔记
  • niucms就是以城市为分割单位,在上面 小区/乡村/同城论坛+58+团购
  • Stream流与Lambda表达式(三) 静态工厂类Collectors
  • Terraform入门 - 1. 安装Terraform
  • 如何设计一个微型分布式架构?
  • 双管齐下,VMware的容器新战略
  • 一些css基础学习笔记
  • 宾利慕尚创始人典藏版国内首秀,2025年前实现全系车型电动化 | 2019上海车展 ...
  • ​io --- 处理流的核心工具​
  • #define用法
  • #LLM入门|Prompt#2.3_对查询任务进行分类|意图分析_Classification
  • #微信小程序(布局、渲染层基础知识)
  • #我与Java虚拟机的故事#连载05:Java虚拟机的修炼之道
  • (2)(2.4) TerraRanger Tower/Tower EVO(360度)
  • (2)nginx 安装、启停
  • (4) openssl rsa/pkey(查看私钥、从私钥中提取公钥、查看公钥)
  • (附源码)spring boot火车票售卖系统 毕业设计 211004
  • (附源码)springboot工单管理系统 毕业设计 964158
  • (附源码)springboot建达集团公司平台 毕业设计 141538
  • (附源码)ssm学生管理系统 毕业设计 141543
  • (力扣题库)跳跃游戏II(c++)
  • (实战)静默dbca安装创建数据库 --参数说明+举例
  • (四)库存超卖案例实战——优化redis分布式锁
  • (一)基于IDEA的JAVA基础10
  • (转)大型网站的系统架构
  • .DFS.
  • .NET Core实战项目之CMS 第十二章 开发篇-Dapper封装CURD及仓储代码生成器实现
  • .NET Core引入性能分析引导优化
  • .Net 访问电子邮箱-LumiSoft.Net,好用
  • .net遍历html中全部的中文,ASP.NET中遍历页面的所有button控件
  • .net打印*三角形
  • .NET开源的一个小而快并且功能强大的 Windows 动态桌面软件 - DreamScene2
  • [ IOS ] iOS-控制器View的创建和生命周期
  • [ vulhub漏洞复现篇 ] AppWeb认证绕过漏洞(CVE-2018-8715)