如何在阿里云服务上部署java项目

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
简介: 最近博主接了一波私活,由于上云的概念已经深入人心,客户要求博主也上云,本文将介绍上云的教程。

最近博主接了一波私活,由于上云的概念已经深入人心,客户要求博主也上云,本文将介绍上云的教程。

1.如何选择服务器

这里博主推荐阿里云服务器,阿里云云服务器ECS是一种安全可靠、弹性可伸缩的云计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。 专业的售前技术支持,协助您选择最合适配置方案

1.1 产品优势

  1. 稳定:单实例可用性达 99.975%,多可用区多实例可用性达 99.995%,云盘可靠性达9个9,可实现宕机自动迁移、快照备份。
  2. 弹性:支持分钟级别创建千台实例,多种弹性付费选择更贴合业务现状,同时带来弹性的扩容能力,实例与带宽均可随时升降配,云盘可扩容。
  3. 安全:提供DDoS防护、木马查杀等服务,提供支持可信计算、硬件加密、虚拟化加密计算的实例,通过多方国际安全认证,ECS云盘支持数据加密功能。
  4. 高性能:单实例最高可选256vCPU ,内存6TB,主频3.8GHz,性能最高可达2400万PPS,80Gbps,100万IOPS,1600万session,网络时延20us+。
  5. 易用性:丰富的操作系统和应用软件,通过镜像可一键简单部署,同一镜像可在多台 ECS 中快速复制环境,轻松扩展。
  6. 可拓展性:ECS 可与阿里云各种丰富的云产品无缝衔接,可持续为业务发展提供完整的计算、存储、安全等解决方案。

1.2 现有优惠

现在对于个人与企业都有优惠,如果有需求可以于官网自行了解,官网地址:
点我点我
image.png

2.如何发布后端项目

这里,需要安装jdk,mysql,redis三件套,然后就可以直接启动jar包了。

1.安装jdk

1.下载jdk8

直接上网盘链接:https://pan.baidu.com/s/1Ip6ILZ5eU90aqNryUqwFgw
提取码:8por

2.导入linux中

这里我们安装在usr/local中,可以使用ssh直接复制进去。

3.解压

cd /usr/local
tar -zxvf jdk-8u191-linux-x64.tar.gz

image.png

4.环境变量配置

vi /etc/profile

按i键,切换成编辑模式。找到内容末尾,按图片输入下面一段话。在unset i的前面输入 。

export JAVA_HOME=/usr/local/jdk1.8.0_231
export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$PATH:$JAVA_HOME/bin
#(!!!注意:JAVA_HOME的路径是你实际解压后的JDK的路径,千万别写错了)

image.png

按Esc退出编辑模式,输入:wq保存并退出。

5.环境变量生效

source /etc/profile

6.验证

java -version

image.png

显示版本号就是安装成功了。

7.jdk相关的其他命令

查看JDK版本:java -version
查看java执行路径:which java
查看JAVA_HOME路径:echo $JAVA_HOME
插卡PATH内容:echo $PATH

2.安装mysql数据库

1.下载

最好别再官网下载了,比较慢 。直接上网盘地址。
链接:https://pan.baidu.com/s/1FNijjVILpp_96nbZrFQ-iQ
提取码:s59l

2.解压

新建一个文件夹,然后进入在其中解压。

tar -xvf mysql-5.7.26-linux-glibc2.12-x86_64.tar.gz

image.png

3.移动并重命名

mv mysql-5.7.26-linux-glibc2.12-x86_64 /usr/local/mysql

4.创建mysql用户组和用户并修改权限

cd /user/local/mysql
groupadd mysql
useradd -r -g mysql mysql
mkdir -p  /data/mysql              #创建目录
chown mysql:mysql -R /data/mysql   #赋予权限

image.png

5.配置my.cnf

vim /etc/my.cnf

配置如下

[mysqld]
bind-address=0.0.0.0
port=3306
user=mysql
basedir=/usr/local/mysql
datadir=/data/mysql
socket=/tmp/mysql.sock
log-error=/data/mysql/mysql.err
pid-file=/data/mysql/mysql.pid
#character config
character_set_server=utf8mb4
symbolic-links=0
explicit_defaults_for_timestamp=true
lower_case_table_names=1
#大小写

6.初始化数据库

cd /usr/local/mysql/bin/
./mysqld --defaults-file=/etc/my.cnf --basedir=/usr/local/mysql/ --datadir=/data/mysql/ --user=mysql --initialize

image.png

注意:一定要和系统的版本对上,32位下32位的安装包,其中阿里云的系统默认的是32位,否则报错。mysqld: mysqld: cannot execute binary file

7.查看密码

cat /data/mysql/mysql.err

image.png

要注意,要包括最后的那个 . 而且mysql输入密码没有光标的,直接复制粘贴也可以。

8.启动mysql,并更改root 密码

先将mysql.server放置到/etc/init.d/mysql中。

cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql

启动服务

service mysql start
ps -ef|grep mysql

停止服务

service mysql stop

image.png

9.下面修改密码

先登入初始密码 ,上文中查看出来的那一串,直接复制就可以。

./mysql -u root -p 

登陆成功
image.png

10.更改密码

SET PASSWORD = PASSWORD('123456');
ALTER USER 'root'@'localhost' PASSWORD EXPIRE NEVER;
FLUSH PRIVILEGES;              

11. 更改配置,使用navicat连接

use mysql                                            #访问mysql库
update user set host = '%' where user = 'root';      #使root能再任何host访问
FLUSH PRIVILEGES;   

如果不希望每次都到bin目录下使用mysql命令则执行以下命令

ln -s  /usr/local/mysql/bin/mysql    /usr/bin

3.安装redis

1.下载

访问官网,下载即可,比较小,redis地址请访问:Redis官网

注:要先安装c/c++环境!!!
yum -y install gcc gcc-c++ autoconf pcre pcre-devel make automake

image.png

2.解压

解压安装包,会在目录下生成一个文件夹。

tar zxvf redis-5.0.7.tar.gz

image.png

3.编译

然后进入解压后的文件夹编译。

make

image.png

切记,要先安装c++环境!!

4.修改配置文件redis.conf

这里主要修改三个部分。需要把下面配置注释/修改。

bind 0.0.0.0        #将改行注释
daemonize yes       #将后台运行设为yes
protected-mode yes   #将安全模式设为yes
requirepass 123456  #设置密码

image.png

5.运行

cd src
./redis-server  ../redis.conf

image.png

6.验证

为启动起来了,可以用 ,查看是否启动。

ps axu | grep redis

image.png

7.停止

./redis-cli shutdown

4.启动jar包

在idea中执行mvn clean install,并将打成的jar包通过ssh传输进入服务器,执行nohup java-jar 包名即可。
image.png

3.如何发布前端项目

1.安装nginx

1.安装依赖

yum -y install gcc pcre-devel zlib-devel openssl openssl-devel

image.png

2.下载

nginx下载地址如下:直接下载即可。请选择较新的版本。

3.复制进入linux

下载nginx-1.21.4.tar.gz,移动到/usr/local/下。可以使用ssh工具直接复制。

4.解压

tar -zxvf nginx-1.21.4.tar.gz

image.png

5.编译

##进入nginx目录
cd nginx-1.21.4
## 配置
./configure --prefix=/usr/local/nginx-1.21.4
# make
make
make install

image.png
image.png

6.验证

测试是否安装成功

./sbin/nginx -t

出现异常
image.png

原因分析:nginx/目录下没有logs文件夹
解决方法:
mkdir logs
chmod 777 logs

安装成功。

7.启动nginx

cd /usr/local/nginx/sbin
./nginx //启动nginx

启动成功
image.png

配置nginx开机自启动

vim /etc/rc.d/rc.local

2.打包

打包生成dist文件。

yarn run build

在nginx中新建jeecg-boot文件夹,将生成的dist文件夹放入。
image.png

3.修改配置文件

修改nginx配置文件如下,文件位置:/usr/local/nginx-1.21.4/conf/nginx.conf

server {
        listen       80;
        server_name  你的域名;

        #后台服务配置,配置了这个location便可以通过http://域名/jeecg-boot/xxxx 访问        
        location ^~ /jeecg-boot {
            proxy_pass              http://127.0.0.1:8080/jeecg-boot/;
            proxy_set_header        Host 127.0.0.1;
            proxy_set_header        X-Real-IP $remote_addr;
            proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
        }
        #解决Router(mode: 'history')模式下,刷新路由地址不能找到页面的问题
        location / {
            root   html;
            index  index.html index.htm;
            if (!-e $request_filename) {
                rewrite ^(.*)$ /index.html?s=$1 last;
                break;
            }
        }
    }

image.png

4.验证

访问http://域名/jeecg-boot即可
image.png

到此,springboot+vue的项目已经发布成功了,您是否也想体验一下?

相关实践学习
2分钟自动化部署人生模拟器
本场景将带你借助云效流水线Flow实现人生模拟器小游戏的自动化部署
7天玩转云服务器
云服务器ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,可降低 IT 成本,提升运维效率。本课程手把手带你了解ECS、掌握基本操作、动手实操快照管理、镜像管理等。了解产品详情: https://www.aliyun.com/product/ecs
相关文章
|
6天前
|
JavaScript NoSQL Java
接替此文【下篇-服务端+后台管理】优雅草蜻蜓z系统JAVA版暗影版为例-【蜻蜓z系列通用】-2025年全新项目整合搭建方式-这是独立吃透代码以后首次改变-独立PC版本vue版搭建教程-优雅草卓伊凡
接替此文【下篇-服务端+后台管理】优雅草蜻蜓z系统JAVA版暗影版为例-【蜻蜓z系列通用】-2025年全新项目整合搭建方式-这是独立吃透代码以后首次改变-独立PC版本vue版搭建教程-优雅草卓伊凡
146 96
接替此文【下篇-服务端+后台管理】优雅草蜻蜓z系统JAVA版暗影版为例-【蜻蜓z系列通用】-2025年全新项目整合搭建方式-这是独立吃透代码以后首次改变-独立PC版本vue版搭建教程-优雅草卓伊凡
|
8天前
|
前端开发 JavaScript Java
【03】Java+若依+vue.js技术栈实现钱包积分管理系统项目-若依框架搭建-服务端-后台管理-整体搭建-优雅草卓伊凡商业项目实战
【03】Java+若依+vue.js技术栈实现钱包积分管理系统项目-若依框架搭建-服务端-后台管理-整体搭建-优雅草卓伊凡商业项目实战
54 13
【03】Java+若依+vue.js技术栈实现钱包积分管理系统项目-若依框架搭建-服务端-后台管理-整体搭建-优雅草卓伊凡商业项目实战
|
9天前
|
人工智能 JavaScript 关系型数据库
【02】Java+若依+vue.js技术栈实现钱包积分管理系统项目-商业级电玩城积分系统商业项目实战-ui设计图figmaUI设计准备-figma汉化插件-mysql数据库设计-优雅草卓伊凡商业项目实战
【02】Java+若依+vue.js技术栈实现钱包积分管理系统项目-商业级电玩城积分系统商业项目实战-ui设计图figmaUI设计准备-figma汉化插件-mysql数据库设计-优雅草卓伊凡商业项目实战
56 14
【02】Java+若依+vue.js技术栈实现钱包积分管理系统项目-商业级电玩城积分系统商业项目实战-ui设计图figmaUI设计准备-figma汉化插件-mysql数据库设计-优雅草卓伊凡商业项目实战
|
8天前
|
SQL JavaScript 安全
【04】Java+若依+vue.js技术栈实现钱包积分管理系统项目-若依框架二次开发准备工作-以及建立初步后端目录菜单列-优雅草卓伊凡商业项目实战
【04】Java+若依+vue.js技术栈实现钱包积分管理系统项目-若依框架二次开发准备工作-以及建立初步后端目录菜单列-优雅草卓伊凡商业项目实战
44 11
【04】Java+若依+vue.js技术栈实现钱包积分管理系统项目-若依框架二次开发准备工作-以及建立初步后端目录菜单列-优雅草卓伊凡商业项目实战
|
12天前
|
人工智能 JavaScript 安全
【01】Java+若依+vue.js技术栈实现钱包积分管理系统项目-商业级电玩城积分系统商业项目实战-需求改为思维导图-设计数据库-确定基础架构和设计-优雅草卓伊凡商业项目实战
【01】Java+若依+vue.js技术栈实现钱包积分管理系统项目-商业级电玩城积分系统商业项目实战-需求改为思维导图-设计数据库-确定基础架构和设计-优雅草卓伊凡商业项目实战
55 13
【01】Java+若依+vue.js技术栈实现钱包积分管理系统项目-商业级电玩城积分系统商业项目实战-需求改为思维导图-设计数据库-确定基础架构和设计-优雅草卓伊凡商业项目实战
|
7天前
|
网络协议 Java Shell
java spring 项目若依框架启动失败,启动不了服务提示端口8080占用escription: Web server failed to start. Port 8080 was already in use. Action: Identify and stop the process that’s listening on port 8080 or configure this application to listen on another port-优雅草卓伊凡解决方案
java spring 项目若依框架启动失败,启动不了服务提示端口8080占用escription: Web server failed to start. Port 8080 was already in use. Action: Identify and stop the process that’s listening on port 8080 or configure this application to listen on another port-优雅草卓伊凡解决方案
31 7
|
24天前
|
JavaScript Java 测试技术
基于Java+SpringBoot+Vue实现的车辆充电桩系统设计与实现(系统源码+文档+部署讲解等)
面向大学生毕业选题、开题、任务书、程序设计开发、论文辅导提供一站式服务。主要服务:程序设计开发、代码修改、成品部署、支持定制、论文辅导,助力毕设!
55 6
|
3天前
|
Java 程序员 开发者
Java社招面试题:一个线程运行时发生异常会怎样?
大家好,我是小米。今天分享一个经典的 Java 面试题:线程运行时发生异常,程序会怎样处理?此问题考察 Java 线程和异常处理机制的理解。线程发生异常,默认会导致线程终止,但可以通过 try-catch 捕获并处理,避免影响其他线程。未捕获的异常可通过 Thread.UncaughtExceptionHandler 处理。线程池中的异常会被自动处理,不影响任务执行。希望这篇文章能帮助你深入理解 Java 线程异常处理机制,为面试做好准备。如果你觉得有帮助,欢迎收藏、转发!
36 14
|
6天前
|
安全 Java 程序员
Java 面试必问!线程构造方法和静态块的执行线程到底是谁?
大家好,我是小米。今天聊聊Java多线程面试题:线程类的构造方法和静态块是由哪个线程调用的?构造方法由创建线程实例的主线程调用,静态块在类加载时由主线程调用。理解这些细节有助于掌握Java多线程机制。下期再见! 简介: 本文通过一个常见的Java多线程面试题,详细讲解了线程类的构造方法和静态块是由哪个线程调用的。构造方法由创建线程实例的主线程调用,静态块在类加载时由主线程调用。理解这些细节对掌握Java多线程编程至关重要。
34 13
|
6天前
|
安全 Java 开发者
【JAVA】封装多线程原理
Java 中的多线程封装旨在简化使用、提高安全性和增强可维护性。通过抽象和隐藏底层细节,提供简洁接口。常见封装方式包括基于 Runnable 和 Callable 接口的任务封装,以及线程池的封装。Runnable 适用于无返回值任务,Callable 支持有返回值任务。线程池(如 ExecutorService)则用于管理和复用线程,减少性能开销。示例代码展示了如何实现这些封装,使多线程编程更加高效和安全。