马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
引入依赖
Spring-boot-maven-plugin
用maven举行打包的时间必须用到这个插件。看看自己pom.xml中有没有这个插件
而且看看设置准确不正常。
注:我们这个项目打的jar包在30MB左右。
- <plugin>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-maven-plugin</artifactId>
- <version>${spring-boot.version}</version>
- <executions>
- <execution>
- <id>repackage</id>
- <goals>
- <goal>repackage</goal>
- </goals>
- </execution>
- </executions>
- </plugin>
复制代码 摆设前的准备
1.linux环境搭建
(我利用的是腾讯云服务器)
Xshell、finalshell只是客户端。通过一些SSH协议等等毗连上了云服务器。
通过这个客户端毗连服务器。我们的服务器在腾讯的机房。我们的呆板大概率是假造机的一小块。
Linux发行版:
通用用途(适当个人和企业用户):Ubuntu、Debian、Fedora、openSUSE
企业级发行版(稳固性和支持性强):RHEL、CentOS、AlmaLinux & Rocky Linux、Oracle Linux
我的是CentOS
2.Java环境搭建
我们摆设Spring项目,只必要JDK和MySQL就行了。
2.1安装MySQL
在 CentOS 上利用 yum 安装 MySQL
1.CentOS 通常默认安装 MariaDB,需先卸载以制止辩论:
- sudo yum remove mariadb* -y
复制代码
2. 添加 MySQL 官方 Yum Repository
MySQL 不在默认的 CentOS 软件堆栈中,必要手动添加 MySQL 官方堆栈。
- sudo yum install https://dev.mysql.com/get/mysql80-community-release-el7-1.noarch.rpm
复制代码
3. 启用所需的 MySQL 版本
MySQL 官方堆栈默认启用的是 MySQL 8.x。假如必要其他版本(如 MySQL 5.7),可以切换堆栈。
检察可用堆栈:
- yum repolist all | grep mysql
复制代码
启用 MySQL 5.7(示例):
通过这两行下令。我们再次检察可用堆栈发现5.7被启用
- sudo yum-config-manager --disable mysql80-community
- sudo yum-config-manager --enable mysql57-community
复制代码
默认堆栈:
- mysql80-community 表现 MySQL 8.x
- mysql57-community 表现 MySQL 5.7
4. 安装 MySQL
运行以下下令安装 MySQL Server:
- sudo yum install mysql-community-server
复制代码 假如安装不了就
假如你确认源可信,可以利用 --nogpgcheck 跳过 GPG 署名查抄:
- sudo yum install mysql-community-server
- --nogpgcheck
复制代码 5. 启动 MySQL 服务
安装完成后,启动 MySQL 服务并设置为开机自启动:
- sudo systemctl start mysqld
- sudo systemctl enable mysqld
复制代码
6. 获取初始暗码
安装完成后,MySQL 会天生一个随机的 root 用户初始暗码:
检察暗码:
- sudo grep 'temporary password' /var/log/mysqld.log
复制代码
利用随机天生的暗码登录 MySQL 并设置安全选项
7.登录 MySQL:
登录乐成!
修改暗码: 登录乐成后,发起尽快修改 root 用户的暗码。你可以利用以下下令来修改暗码:
- ALTER USER 'root'@'localhost' IDENTIFIED BY 'Qyy@2024!';
复制代码 修改暗码乐成
革新权限: 修改暗码后,实验以下下令使权限收效:
8. 验证安装
检察 MySQL 服务状态:
- sudo systemctl status mysqld
复制代码 登录 MySQL 查抄版本:
- mysql -u root -p
- mysql> SELECT VERSION();
复制代码
退出mySQL
2.2安装JDK
1.更新软件包列表
起首,确保你的体系软件包是最新的:
2. 安装 JDK 8
利用 Yum 安装
CentOS 7 默认的软件堆栈中可以找到 OpenJDK 8。你可以利用以下下令来安装:
- sudo yum install java-1.8.0-openjdk-devel -y
复制代码
这将安装 OpenJDK 8(开辟工具包)。安装完成后,利用以下下令查抄 JDK 版本:
一、摆设 Web 项目到 Linux
1.1摆设简介
工作中涉及到的 “环境”
**开辟环境:**开辟职员写代码用的呆板。
**测试环境:**测试职员测试步伐利用的呆板。
**生产环境(线上环境):**终极项目发布时所利用的呆板,对稳固性要求很高。
把步伐安装到生产环境上,这个过程称为**“摆设”,也叫“上线”**。
一旦步伐摆设乐成,那么这个步伐就能被外网中千千万万的寻常用户访问到。
换句话说,假如步伐有 BUG,这个 BUG 也就被千千万万的用户看到了。
摆设过程至关告急,属于步伐开辟中最告急的一环。一旦摆设出现题目,极有大概导致严肃的变乱(服务器不可用之类的)。
为了防止摆设堕落,一样寻常公司内部都有一些自动化摆设工具(如 Jenkins 等)。当前我们先利用手工摆设的方式来完成摆设。
1.2环境设置
步伐正常运行,必要包管环境和步伐都准确。我们必要先设置环境。
下面内容都算是在设置环境
二、数据准备
按照之前的数据库建表脚本,在服务器上运行,创建雷同的表布局。
2.1进入MySQL
利用下面下令
然后输入你设定的数据库暗码。
进入MySQL
2.2检察全部数据库
2.2创建项目数据库
- create database if not exists spring_blog charset utf8mb4;
复制代码
2.3创建并插入用户表的数据
创建用户表
- DROP TABLE IF EXISTS spring_blog.user;
- CREATE TABLE spring_blog.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 = '??表';
复制代码
插入数据
- INSERT INTO spring_blog.user (id, user_name, password, github_url, delete_flag, create_time, update_time) VALUES (1, '祁洋洋', 'd320f77068b94c09917527a01e66641237df2f24979a5640223d68eda19db72f', 'https://gitee.com/Bwindmill', 0, '2024-11-11 18:06:02', '2024-11-11 18:06:02');
- INSERT INTO spring_blog.user (id, user_name, password, github_url, delete_flag, create_time, update_time) VALUES (2, 'lisi', '0f1aa87de7264681bedd1a93ec2a1c7e03f98725955d67127895a573aa54eeea', 'https://gitee.com/Bwindmill', 0, '2024-11-11 18:06:02', '2024-11-11 18:06:02');
- INSERT INTO spring_blog.user (id, user_name, password, github_url, delete_flag, create_time, update_time) VALUES (3, 'wangwu', '9462b4c2bc2a400fae42215063b0da7a8afef7e4684de09de9158af4454a7066', 'https://gitee.com/Bwindmill', 0, '2024-11-11 18:06:02', '2024-11-11 18:06:02');
- INSERT INTO spring_blog.user (id, user_name, password, github_url, delete_flag, create_time, update_time) VALUES (4, 'luliu', '809a42b7834c42bcbf0344112766947d3c8f106803baf19a0736febd045afe55', 'https://gitee.com/Bwindmill', 0, '2024-11-11 18:06:02', '2024-11-11 18:06:02');
复制代码
2.4创建并插入博客表的数据
- drop table if exists spring_blog.blog;
- CREATE TABLE spring_blog.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 spring_blog.blog (id, title, content, user_id, delete_flag, create_time, update_time) VALUES (1, '第?篇博客', '1111111', 1, 0, '2024-11-12 18:09:29', '2024-11-12 18:09:29');
- INSERT INTO spring_blog.blog (id, title, content, user_id, delete_flag, create_time, update_time) VALUES (2, '代码测试', '你好我是测试的正文', 2, 1, '2024-11-12 18:09:29', '2024-11-12 18:09:29');
- INSERT INTO spring_blog.blog (id, title, content, user_id, delete_flag, create_time, update_time) VALUES (3, '我是第三篇博客', '你好你好我是第三篇博客的正文', 2, 0, '2024-11-12 18:14:53', '2024-11-12 18:14:53');
- INSERT INTO spring_blog.blog (id, title, content, user_id, delete_flag, create_time, update_time) VALUES (4, '这是我今天写的博客11/13', '我真的服了,今天我太坏了了,我大黑阿辉阿訇后哦ID除外反馈就问你打开几句话ID号呕吼后欧欧尼哦i就哦ID哦ijoin1io囧', 1, 0, '2024-11-13 21:31:54', '2024-11-13 21:31:54');
- INSERT INTO spring_blog.blog (id, title, content, user_id, delete_flag, create_time, update_time) VALUES (5, '测试一下', '##在这里写下一篇博客
- 咋回事呀我回答我i啊好ID
- #带娃地哦啊哦判定为', 1, 0, '2024-11-13 21:50:37', '2024-11-13 21:50:37');
- INSERT INTO spring_blog.blog (id, title, content, user_id, delete_flag, create_time, update_time) VALUES (6, '今天是什么日子', '#一、今天
- ##1.1今天是什么
- 今天是个好日子。好呀好日子。
- ##1.2今天能干什么
- 今天我吃饭了,写了博客系统的好多内容。我还准备早点睡觉呢红红火火恍恍惚惚哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈', 1, 0, '2024-11-13 22:09:02', '2024-11-13 22:09:02');
- INSERT INTO spring_blog.blog (id, title, content, user_id, delete_flag, create_time, update_time) VALUES (7, '今天的博客日记', '##一、这是我新发布的一篇博客
- 今天我要做的内容有很多。首先上完课。再利用课余时间好好的学习Java呀红红火火恍恍惚惚哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈', 1, 0, '2024-11-14 11:18:29', '2024-11-14 11:18:29');
- INSERT INTO spring_blog.blog (id, title, content, user_id, delete_flag, create_time, update_time) VALUES (8, '哈达', '##在这里写下一篇博客
- 这是待删除博客', 1, 1, '2024-11-14 22:24:24', '2024-11-14 22:24:24');
- INSERT INTO spring_blog.blog (id, title, content, user_id, delete_flag, create_time, update_time) VALUES (9, '这是我LiSi的文章', '##在这里写下一篇博客
- 这是我发布的文章,希望大家支持!!!', 2, 0, '2024-11-16 14:02:19', '2024-11-16 14:02:19');
- INSERT INTO spring_blog.blog (id, title, content, user_id, delete_flag, create_time, update_time) VALUES (10, '我是第三篇博客', '你好你好我是第三篇博客的正文', 2, 0, '2024-11-16 22:11:53', '2024-11-16 22:11:53');
复制代码
2.5检察我们创建的数据库以及数据表
博客中的数据太多了就不截图了。自此数据准备工作完成。
三、(打prod版本的Jar包)步伐设置文件修改
实际工作中,开辟环境、测试环境以及生产环境的设置都是不一样的,比方 MySQL 的用户名和暗码。
我们可以针对差异的环境,设置差异的设置文件。
3.1创建application-dev.yml文件
写入我们本来的设置文件
- # 应用服务 WEB 访问端口
- server:
- port: 1208
- spring:
- datasource:
- url: jdbc:mysql://127.0.0.1:3306/spring_blog?characterEncoding=utf8&use
- username: root
- password: 12345678
- driver-class-name: com.mysql.cj.jdbc.Driver
- mybatis:
- configuration:
- map-underscore-to-camel-case: true #配置驼峰?动转换 #user_id转userId
- log-impl: org.apache.ibatis.logging.stdout.StdOutImpl #打印sql语句
- mapper-locations: classpath:mapper/**Mapper.xml
- #设置?志?件的?件名
- logging:
- file:
- name: spring-blog.log
复制代码 3.2创建application-prod.yml文件
写入摆设到linux环境中的设置文件
- # 应用服务 WEB 访问端口
- server:
- port: 1208
- spring:
- datasource:
- url: jdbc:mysql://127.0.0.1:3306/spring_blog?characterEncoding=utf8&use
- username: root
- password: "@Qyy2024!"
- driver-class-name: com.mysql.cj.jdbc.Driver
- mybatis:
- configuration:
- map-underscore-to-camel-case: true #配置驼峰?动转换 #user_id转userId
- # log-impl: org.apache.ibatis.logging.stdout.StdOutImpl #打印sql语句
- mapper-locations: classpath:mapper/**Mapper.xml
- #设置?志?件的?件名
- logging:
- file:
- name: spring-blog.log
复制代码 在pom.xml添加如下代码
3.3自界说设置pom.xml
- ?
- <profiles>
- <profile>
- <id>dev</id>
- <properties>
- <!--自定义配置-->
- <profile.name>dev</profile.name>
- </properties>
- </profile>
- <profile>
- <id>prod</id>
- <properties>
- <!--自定义配置-->
- <profile.name>prod</profile.name>
- </properties>
- </profile>
- </profiles>
- ?
复制代码 maven中上面会出现一个设置文件。
我们在本来的设置文件
3.4application.yml文件
中写入
- spring:
- profiles:
- active: ${profile.name}
- // active: @profile.name@
复制代码 如许我们就可以勾选。便于我们引用差异设置文件了
我们打一个prod版本的jar包。
多平台文件设置
在多平台摆设时,大概必要为差异的操纵体系或平台设置差异的文件。根据平台的差异,设置文件的内容也必要做相应调解,确保步伐可以或许在全部目的平台上准确运行。
四、正式摆设
4.1创建摆设目次
我们将项目摆设在
Production-deployment/spring_blog目次下面
4.2将jar包放到摆设目次中
拖动jar包。到这个目次中(由于我利用的是finalshell不支持拖拽方式将 .jar 文件从 Windows 本地环境传输到服务器。)
我利用 SCP 从 Windows 上传 .jar 文件到 CentOS 服务器:
下载并安装 WinSCP。
- 输入你的服务器 IP 地点、SSH 登任命户名、以及暗码。
- 毗连到你的 CentOS 服务器。
然后我就可举行拖拽了
放置乐成!
4.3开放端标语
参考链接:
Centos防火墙设置与端口开放的方法
怎样还不可就
云服务器上看 安全组 开放1208端口
4.4启动项目!!!
4.4.1通过 java -jar jar包全名(非配景启动方式)
这种方式当我们把启动的窗口关掉。进程也就被杀掉了。
示例:
- java -jar spring-blog-0.0.1-SNAPSHOT.jar
复制代码
启动乐成!
不外
4.4.2 nohup …& (配景启动方式)
完备下令
- nohup java -jar spring-blog-0.0.1-SNAPSHOT.jar
- &
复制代码 如许启动之后。即便我们关掉启动窗口。服务依然是启动的
如许启动敲空格后是可以直接输入下令的。看错误日记也可以直接在这里看
查抄日记输出
默认环境下,nohup 会将日记输出到 nohup.out 文件。检察该文件内容:
假如内容过多,利用 tail 下令检察最新的日记:
eg:
- tail -100f spring-blog.log
复制代码 检察下面100行日记
坑点:
通过配景摆设。假如 项目举行更新了。我们启动新的jar包。
我们以为更新摆设乐成。实际上么有。肯定要通过
看日记
这时间会发现
报错了。端标语已经被利用了。项目摆设失败。
办理办法:
1.杀死进程(保举)
起首检察进程Id.如下图14723就是我们spring_blog体系的进程Id
利用kill -9 杀掉进程
如上图,进程已经被杀死。此时我们就可以发布新的jar包了
2.修改端标语
- nohup java -jar spring-blog-0.0.1-SNAPSHOT.jar
- --server.port=9090 &
复制代码 不外此时我们就启动了两个步伐了。
不外此时日记混在了一起。我们也可以举行指定日记。
4.5启动项目时遇到的题目
4.5.1要我将@profile.name@修改为${profile.name}
- spring:
- profiles:
- active: @profile.name@
复制代码 修改为
- spring:
- profiles:
- active: ${profile.name}
复制代码 不外如许修改之后还是有点题目。因此我直接
- spring:
- profiles:
- active: prod
复制代码 自此项目终于启动乐成!!!!!
4.5.2无法访问
思量缘故原由
1.服务未启动
2.端口未开放
看服务是否启动的方法
1.通过下令
ps -ef 拿到全部步伐
grep java 查询进程内里有java的东西
如图并没有查询到我们的java步伐。 这个查出来的只是grep下令。
然后我们启动服务再次查询
2.通过curl
- curl http://127.0.0.1:1208/blog_login.html
复制代码 若能得到Html代码,阐明服务已经启动。那么就是端标语未开放了。只必要去开放端标语就行了
留意事项:
1.在设置文件中 IP 地点依然是:127.0.0.1
2.摆设后打开项目的 IP 地点填云服务器的公网IP地点。也就是主机。
我的是 150.158.148.151
3.错误日记跟踪下令
- tail -f spring.log | grep "ERROR"
复制代码 |