[服务部署]京东云部署JavaWeb项目
京东云简单搭建个人网站,以下系统内核为Centos8
这里由于是个人资源网站,就不再安装docker做容器化部署了
1、修改yum源
国内镜像无法访问默认的镜像源,需要对yum源进行修改
sudo mkdir -p /etc/yum.repos.d/baksudo mv /etc/yum.repos.d/*.repo /etc/yum.repos.d/bak/sudo curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-vault-8.5.2111.reposudo dnf clean allsudo dnf makecache
2、安装JDK
- 查看可用的openjdk
sudo dnf list available | grep -i openjdk - 安装jdk(以1.8为例)
sudo dnf install -y java-1.8.0-openjdk.x86_64 - 查看jdk安装目录:
ls -l /usr/lib/jvm/ - 设置环境变量:
sudo vim /etc/environment#没有vim命令可安装: sudo dnf install #设置JAVA_HOME JAVA_HOME="/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.312.b07-2.el8_5.x86_64"# 重载环境 source /etc/environment - 检查jdk是否安装成功:
java -version
3、安装本地mysql:
-
下载mysql官方yum仓库RPM包
sudo dnf install -y wget wget https://dev.mysql.com/get/mysql80-community-release-el8-7.noarch.rpm -
安装仓库RPM
在这里插入代码片 -
安装mysql server
sudo dnf install mysql-server -y -
启动并设置开机自启
sudo systemctl start mysqld sudo systemctl enable mysqld -
设置root密码
# 停止 MySQL sudo systemctl stop mysqld# 2. 创建临时目录(避免权限问题) sudo mkdir -p /var/run/mysqld sudo chown mysql:mysql /var/run/mysqld# 启动 MySQL 跳过权限表 sudo mysqld_safe --skip-grant-tables --skip-networking &# 启动mysql sudo systemctl status mysqld # 无密码登录 mysql -u root# 刷新权限 FLUSH PRIVILEGES;# 修改 root 密码(必须满足密码策略) ALTER USER 'root'@'localhost' IDENTIFIED BY 'xxxxxxxx';#退出 exit;# 关闭临时进程并正常启动 sudo pkill mysqld_safe sudo pkill mysqld sudo systemctl start mysqld# 用新密码登录 -
运行安全初始化(按需执行,尽量关闭root用户远程登录):
sudo mysql_secure_installation -
创建代码程序专用用户
# 登录 mysql -u root -p# 创建用户并配置权限 CREATE USER 'write'@'%' IDENTIFIED BY 'xxxxxxxx!'; GRANT ALL PRIVILEGES ON *.* TO 'write'@'%'; FLUSH PRIVILEGES; EXIT; -
开放防火墙端口(这里就不做开放了)
4、安装redis
-
安装EPEL仓库:
sudo dnf install -y epel-release -
安装redis:
sudo dnf install -y redis -
启动并设置开机自启:
sudo systemctl start redis sudo systemctl enable redis -
配置密码和设置端口:
sudo vi /etc/redis.conf# 主要配置requirepass 对应密码 -
重启生效:
sudo systemctl restart redis -
开放防火墙端口
5、本地JAR push到服务器
一键打包部署脚本:
#!/bin/bash
# === 配置区(请按需修改)===
JAR_LOCAL_PATH="./xxx-xxx/target/xxx-xx.jar" # 本地 jar 路径
SERVER_USER="xxx" # 服务器用户名(建议用普通用户,如 appuser)
SERVER_IP="xxx.xxx.xx.xx" # 服务器公网 IP
REMOTE_DIR="/opt/server" # 服务器部署目录
SERVICE_NAME="xxxxx" # systemd 服务名
# ==============================# 检查本地 jar 是否存在
if [ ! -f "$JAR_LOCAL_PATH" ]; thenecho "❌ 错误:本地 JAR 文件不存在: $JAR_LOCAL_PATH"exit 1
fi# 获取 jar 文件名
JAR_NAME=$(basename "$JAR_LOCAL_PATH")echo "🚀 开始部署 $JAR_NAME 到 $SERVER_USER@$SERVER_IP"# 1. 创建远程目录
echo "📁 创建远程目录 $REMOTE_DIR"
ssh "$SERVER_USER@$SERVER_IP" "mkdir -p $REMOTE_DIR" || {echo "❌ 无法连接服务器或创建目录,请检查 IP/用户/网络"exit 1
}# 2. 上传 JAR 文件
echo "📤 上传 JAR 文件..."
scp "$JAR_LOCAL_PATH" "$SERVER_USER@$SERVER_IP:$REMOTE_DIR/" || {echo "❌ 上传失败"exit 1
}# 3. 在服务器创建 systemd 服务文件
echo "⚙️ 配置 systemd 服务..."
ssh "$SERVER_USER@$SERVER_IP" "sudo tee /etc/systemd/system/${SERVICE_NAME}.service > /dev/null <<EOF
[Unit]
Description=Java Application - $SERVICE_NAME
After=network.target[Service]
Type=simple
User=$SERVER_USER
WorkingDirectory=$REMOTE_DIR
ExecStart=/usr/bin/java -jar $REMOTE_DIR/$JAR_NAME
Restart=always
RestartSec=10
StandardOutput=journal
StandardError=journal[Install]
WantedBy=multi-user.target
EOF"# 4. 重载 systemd 并启动服务
echo "🔄 启动服务..."
ssh "$SERVER_USER@$SERVER_IP" "sudo systemctl daemon-reload &&sudo systemctl stop $SERVICE_NAME 2>/dev/null || true &&sudo systemctl start $SERVICE_NAME &&sudo systemctl enable $SERVICE_NAME &&echo '✅ 部署成功!服务已启动并设置开机自启'
"# 5. (可选)显示最近日志
echo "📄 显示最近 10 行日志..."
ssh "$SERVER_USER@$SERVER_IP" "sudo journalctl -u $SERVICE_NAME -n 10 --no-pager"echo "🎉 部署完成!"
