springboot+vue项目部署

一、前后端项目打包

在Vue文件夹中使用命令:npm run build,打包好生成dist文件
在IDEA中依次执行clean,compile,package操作,生成target文件目录,其中.Jar包即为需要上传的文件
在部署到服务器之前,先试着本地访问,进入jar包所在目录下cmd运行:

java -jar 包名.jar

正常运行则没问题,可以上传至服务器。
第二步环境搭建好之后再使用nohup让后端文件在后台启动:

nohup java -jar springboot-0.0.1-SNAPSHOT.jar &

二、准备好xshell、xftp

xshell命令:

查找占用端口 80 的进程:sudo lsof -i :80
停止占用端口 80 的进程:sudo kill -9 PID
查找可执行文件:which openssl
查询已安装的软件包的文件列表:rpm -ql openssl
查看后台任务:jobs
将后台任务放到前台:fg %1

三、云服务器部署

安装nginx

相关vue环境部署

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

下载nginx并安装

创建用于存在地址的文件夹

cd /usr/local
mkdir nginx
cd nginx

从服务器下载相关nginx文件

wget http://nginx.org/download/nginx-1.13.7.tar.gz

解压文件

tar -xvf nginx-1.13.7.tar.gz

进入nginx目录

cd /usr/local/nginx

进入目录

cd nginx-1.13.7

执行命令

./configure

执行make命令

make

执行make install命令

make install

配置阿里云的安全组

需要服务器管理人员进行分配端口

修改nginx.conf文件

需要修改的地方为 listen后的端口号,是上一步安全组里分配的端口号
image
修改server的location,root为前端打包文件的存储位置
image

启动nginx

启动Nginx:./nginx
在浏览器中输入‘http://服务器公网地址:端口’,若显示如下则表示nginx正常运转
image

nginx命令

停止Nginx:./nginx -s stop
启动Nginx:./nginx
当前路径:pwd
重新启动 Nginx:./nginx -s reload

遇到问题

防火墙

查看防火墙状态:systemctl status firewalld.service
外部主机连接上nginx需要关闭虚拟机的防火墙:systemctl stop firewalld.service

提权

给前端文件夹加上权限:chmod +rx * (r读取,x执行)
显示权限详情:stat file

curl拒绝连接

  1. 检查端口号是否正确
  2. 该端口被占用,查询端口占用的进程,kill

本项目常用位置

查看access和error的log文件:/var/log/nginx/ 或 /usr/local/nginx/logs/
前端打包文件: /home/wzx/wsn/vue/dist
后端:/home/wzx/wsn/java
nginx位置:/usr/local/nginx (/sbin 执行文件;/conf 配置文件)

more /var/log/nginx/error.log
vi /usr/local/nginx/conf/nginx.conf
more /var/log/nginx/access.log
curl http://120.27.27.42:4382
ps -ef | grep nginx
/usr/local/nginx/sbin/nginx -s reload

安装jdk

根据 Spring Boot 官方文档,Spring Boot 2.6.13 版本建议使用 JDK 11 或更高版本。

yum命令安装jdk

// 搜索安装包
yum search java-11-openjdk
// 安装
yum install -y java-11-openjdk
//检查是否安装成功
java -version

配置系统变量

输入vi /etc/profile,按i,将以下复制并加入到最下面

export JAVA_HOME=<文件目录所在>
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
复制

使用source /etc/profile使修改生效

输入java -versionjavac -version检查是否生效

mysql

安装1

安装步骤参考aliyun官网,https://help.aliyun.com/zh/ecs/use-cases/manually-deploy-mysql-on-an-ecs-instance-that-runs-centos

sudo rpm -Uvh https://dev.mysql.com/get/mysql80-community-release-el7-7.noarch.rpm
sudo yum -y install mysql-community-server --enablerepo=mysql80-community --nogpgcheck
mysql -V //查看安装版本号

image

配置1

运行以下命令,启动并设置开机自启动MySQL服务。

sudo systemctl start mysqld
sudo systemctl enable mysqld

查看mysql状态

systemctl status mysqld.service

检查是否已经安装了开机自动启动

systemctl list-unit-files | grep mysqld

image
获取并记录root用户的初始密码:

grep 'temporary password' /var/log/mysqld.log

实时查看文件末尾20行

tail -f -n 20 /var/log/mysqld.log

修改/etc/my.cnf配置文件
使用下列命令可以初次登录

mysql -u root -p

对MySQL进行安全性配置:

sudo mysql_secure_installation

查看mysql进程

ps -ef | grep mysql

问题:systemctl start mysqld启动之后突然停止,errorlog没有报错,状态一直显示activating
查看服务器的系统日志:tail /var/log/messages
image
日志显示了与Apache Tomcat服务器相关的错误消息。然而,最后几行显示"tail"命令调用了一个out-memory (oom) killer。oom-killer是Linux内核的一个功能它会杀死消耗过多内存并导致系统内存不足的进程。
说明内存不够,需要升级系统

源码安装

下载

下载压缩包:https://dev.mysql.com/downloads/mysql/

tar -xvf /tmp/mysql-8.3.0-linux-glibc2.28-x86_64.tar.xz -C /usr/local
mv /usr/local/mysql-8.3.0-linux-glibc2.28-x86_64 /usr/local/mysql

创建用户组

groupadd mysql
useradd -r -g mysql mysql
chown -R mysql:mysql /usr/local/mysql

补充新建文件夹

[root@20230321-instance /]# cd /usr/local/mysql
[root@20230321-instance mysql]# mkdir conf #配置文件目录
[root@20230321-instance mysql]# mkdir data #配置文件目录
[root@20230321-instance mysql]# mkdir ibdata #配置文件目录
[root@20230321-instance mysql]# mkdir redolog #redolog文件目录
[root@20230321-instance mysql]# mkdir -p mysqllog/logfile #redolog文件目录
[root@20230321-instance mysql]# mkdir -p mysqllog/relaylog #relaylog文件目录
[root@20230321-instance mysql]# mkdir -p mysqllog/binlog #binlog文件目录

创建my.cnf文件

[root@20230321-instance mysql]# vi /usr/local/mysql/conf/my.cnf
配置文件如下↓


[mysqld]
server-id=134
port=13306
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data
socket=/usr/local/mysql/mysql.sock
character-set-server=utf8mb4
max_connections = 1500
binlog_format=row
log-bin=/usr/local/mysql/mysqllog/binlog
slow_query_log_file=/usr/local/mysql/mysqllog/logfile/slow-query.log
log-error=/usr/local/mysql/mysqllog/logfile/mysql-err.log
relay-log-index=/usr/local/mysql/mysqllog/relaylog/slave-relay-bin.index
relay-log=/usr/local/mysql/mysqllog/relaylog/relaylog-binlog
gtid_mode=ON
enforce_gtid_consistency = ON
event_scheduler=1

mysql初始化

这一步会出现临时密码,需要记住

/usr/local/mysql/bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data

2024-02-03T02:28:04.659099Z 6 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: dIy=w.V8Z4j)

mysql初始化出现问题:
image
解决:https://www.cnblogs.com/nancywsn/p/17998157

mysql快捷方式

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

接着做:https://developer.aliyun.com/article/1403451?spm=a2c6h.14164896.0.0.633a47c5fq6Fv6&scm=20140722.S_community@@

启动数据–mysql用户执行

user与初始化时的user应一致
命令最后加&表示后台运行,> mysqld_log 指定了将标准输出重定向到 msyqld.log,2>&1 表示将标准错误输出重定向到标准输出

/usr/local/mysql/bin/mysqld_safe --defaults-file=/usr/local/mysql/conf/my.cnf --user=mysql > mysqld.log 2>&1 &

参考:https://www.cnblogs.com/lkxed/p/start-mysqld-with-mysqld_safe.html

查看是否成功启动,若端口处于正在监听状态,则成功启动:netstat -anp |grep 端口号


确定mysql守护程序正在侦听的端口:netstat -lnp | grep MySQL

-l –显示监听端口
-n –启用数字地址显示
-p –显示拥有套接字的程序的PID和名称


查看mysqld进程:ps -ef | grep mysqld
查看所有端口状态:netstat -nultp(此处不用加端口号)

修改初始化密码–mysql用户执行

mysql -h 127.0.0.1 -umysql -P3306 -S /usr/local/mysql/mysql.sock -p

出现问题
输入密码后突然断掉,找不出问题的原因,搁置,卸载重新用yum安装
image

常用命令

手动启动mysql:sudo mysqld
检查mysql状态:systemctl status mysqld.service
检查 MySQL 是否正在运行:systemctl status mysqld.service
启动MySQL:systemctl start mysqld.service
查看用户组的详细信息:getent group mysql
查看用户组的成员列表:lid mysql

上传前后端打包文件

后端jar包所处文件夹需要配置:
image
start.sh:

NAME=ImgEva_server-0.0.1-SNAPSHOT.jar
nohup java -jar $NAME > server.log 2>&1 &
echo 'start success'

stop.sh:

PORT=8080
pid=`netstat -tnlp | grep $PORT | grep -v grep | awk '{print $7}' | awk -F/ '{print $1}'`
if [ ${pid} ]; then
kill -9 $pid
echo "kill $PORT"
else
echo 'stop success!'
fi

给这个文件夹里所有文件提权:chmod +x*
启动后台:

./start.sh
tail -100f server.log //查看后台输出

posted @   妙妙屋~  阅读(34)  评论(1编辑  收藏  举报
编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示