当前位置: 首页 > news >正文

[服务部署]京东云部署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 "🎉 部署完成!"
http://www.dtcms.com/a/524667.html

相关文章:

  • 27、LangChain开发框架(四)-- LangChain接入工具基本流程
  • 找人做网站要准备什么九江网站网站建设
  • 帝可得智能售货机系统实战Day1:从环境搭建到区域管理功能落地 (1)
  • 10.2Web Component
  • 有没有做产品团购的网站wordpress文章页禁止右键
  • Nginx 反向代理解析:从原理到生产级配置实战
  • [理论题] 2025 年 “技耀泉城” 海右技能人才大赛网络安全知识竞赛题目(四)
  • 文化馆网站数字化建设介绍重庆seo网站建设
  • 【Betaflight源码学习】之初始化函数(init.c)
  • STM32H750寄存器操作(硬件I2C)
  • 算法18.0
  • RHCA - DO374 | Day02:管理内容集和执行环境
  • 网站建设明细价格表包头seo营销公司
  • JAVA 锁机制【待完善】
  • 不平均的分治——根号分治
  • USP-(DeepSpeed-Ulysses-Attention and Ring-Attention)
  • Ubuntu部署集群环境(3台)
  • VoCo-LLaMA: Towards Vision Compression with Large Language Models 译读笔记
  • 国网北京电力建设研究院网站惠州网站建设电话
  • 鹤壁市住房和城乡建设局网站上线了建站教程
  • centos8.5运行ai00-server报错`GLIBC_2.39‘ not found,解决方法
  • 冷换仓的隐性代价:从安全策略到地址信誉体系的重新思考
  • 如何用Vue CLI 创建 Vue 项目
  • 网站开发专业前景完整php网站开发
  • 企业建网站110平米三室一厅简装图片
  • CAS汽车固件签名:从“完成签名”到“安全治理”的演进之路
  • 免费手机网站模板sem竞价推广怎么做
  • 企业数字化转型的关键一步:打通研发全流程
  • Unity 资源导出的问题,依赖关系过多。
  • 网站开发公司内部数据字典深圳网站建设设计公司