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文件
解压文件
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后的端口号,是上一步安全组里分配的端口号
修改server的location,root为前端打包文件的存储位置
启动nginx
启动Nginx:./nginx
在浏览器中输入‘http://服务器公网地址:端口’,若显示如下则表示nginx正常运转
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拒绝连接
- 检查端口号是否正确
- 该端口被占用,查询端口占用的进程,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 -version
和javac -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 //查看安装版本号
配置1
运行以下命令,启动并设置开机自启动MySQL服务。
sudo systemctl start mysqld
sudo systemctl enable mysqld
查看mysql状态
systemctl status mysqld.service
检查是否已经安装了开机自动启动
systemctl list-unit-files | grep mysqld
获取并记录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
日志显示了与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初始化出现问题:
解决:https://www.cnblogs.com/nancywsn/p/17998157
mysql快捷方式
ln -s /usr/local/mysql/bin/mysql /usr/bin
启动数据–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安装
常用命令
手动启动mysql:sudo mysqld
检查mysql状态:systemctl status mysqld.service
检查 MySQL 是否正在运行:systemctl status mysqld.service
启动MySQL:systemctl start mysqld.service
查看用户组的详细信息:getent group mysql
查看用户组的成员列表:lid mysql
上传前后端打包文件
后端jar包所处文件夹需要配置:
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 //查看后台输出
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 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)