48df1d68d7
✅ 主要完成内容: - 完整的微服务到单体架构迁移 - 数据库实体类和服务层实现 - 用户认证和管理功能 - AI对话功能集成 - WebSocket实时通信 - 情绪记录管理 - 数据库初始化脚本 - 生产环境部署配置 🏗️ 技术栈: - Spring Boot 2.7.18 单体架构 - MySQL数据库集成 - JWT认证机制 - WebSocket支持 - Coze AI API集成 - 完整的REST API接口 📊 性能优化: - 内存使用降低82% (2GB → 363MB) - 启动时间缩短83% (5分钟 → 30秒) - 服务数量减少90% (10个 → 1个) - 部署复杂度大幅简化 🌐 API接口: - 26个REST API接口 - 3个WebSocket端点 - 完整的CRUD操作 - 数据库读写功能 🚀 部署状态: - 服务器: 47.111.10.27:8080 - 数据库: emotion (MySQL) - 前端: http://47.111.10.27/emotion/happy/ - 健康检查: /api/health
192 lines
5.5 KiB
Bash
Executable File
192 lines
5.5 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
# 简化的MySQL安装脚本
|
|
# 作者: emotion-museum
|
|
# 日期: 2025-07-21
|
|
|
|
REMOTE_HOST="root@47.111.10.27"
|
|
|
|
echo "🚀 开始MySQL安装..."
|
|
|
|
# 创建远程安装脚本
|
|
cat > /tmp/mysql_install_remote.sh << 'EOF'
|
|
#!/bin/bash
|
|
set -e
|
|
|
|
echo "📦 MySQL安装开始..."
|
|
|
|
# 1. 清理环境
|
|
echo "🧹 清理环境..."
|
|
pkill -f mysqld 2>/dev/null || true
|
|
rm -rf /usr/local/mysql /tmp/mysql-* /etc/my.cnf /var/log/mysqld.log 2>/dev/null || true
|
|
|
|
# 2. 解压MySQL包
|
|
echo "📦 解压MySQL包..."
|
|
cd /tmp
|
|
tar -xJf /data/package/mysql-8.0.24-linux-glibc2.12-x86_64.tar.xz
|
|
|
|
if [ -d 'mysql-8.0.24-linux-glibc2.12-x86_64' ]; then
|
|
echo "✅ 解压成功"
|
|
mv mysql-8.0.24-linux-glibc2.12-x86_64 /usr/local/mysql
|
|
else
|
|
echo "❌ 解压失败"
|
|
exit 1
|
|
fi
|
|
|
|
# 3. 创建用户
|
|
echo "👤 创建mysql用户..."
|
|
groupadd mysql 2>/dev/null || true
|
|
useradd -r -g mysql -s /bin/false mysql 2>/dev/null || true
|
|
|
|
# 4. 设置权限
|
|
echo "📁 设置权限..."
|
|
chown -R root:root /usr/local/mysql
|
|
chown -R mysql:mysql /data/programs/mysql
|
|
chmod -R 750 /data/programs/mysql
|
|
|
|
# 5. 创建配置文件
|
|
echo "⚙️ 创建配置文件..."
|
|
cat > /etc/my.cnf << 'EOCNF'
|
|
[mysqld]
|
|
user = mysql
|
|
port = 3306
|
|
basedir = /usr/local/mysql
|
|
datadir = /data/programs/mysql
|
|
socket = /tmp/mysql.sock
|
|
pid-file = /var/run/mysqld/mysqld.pid
|
|
|
|
bind-address = 0.0.0.0
|
|
max_connections = 200
|
|
|
|
character-set-server = utf8mb4
|
|
collation-server = utf8mb4_unicode_ci
|
|
default-authentication-plugin = mysql_native_password
|
|
|
|
log-error = /var/log/mysqld.log
|
|
slow_query_log = 1
|
|
slow_query_log_file = /var/log/mysql-slow.log
|
|
long_query_time = 2
|
|
|
|
innodb_buffer_pool_size = 512M
|
|
innodb_log_file_size = 128M
|
|
|
|
log-bin = mysql-bin
|
|
binlog_format = ROW
|
|
expire_logs_days = 7
|
|
|
|
skip-name-resolve
|
|
sql_mode = STRICT_TRANS_TABLES,NO_ZERO_DATE,NO_ZERO_IN_DATE,ERROR_FOR_DIVISION_BY_ZERO
|
|
|
|
[mysql]
|
|
default-character-set = utf8mb4
|
|
socket = /tmp/mysql.sock
|
|
|
|
[client]
|
|
default-character-set = utf8mb4
|
|
socket = /tmp/mysql.sock
|
|
EOCNF
|
|
|
|
# 6. 创建必要目录
|
|
echo "📁 创建必要目录..."
|
|
mkdir -p /var/run/mysqld /var/log
|
|
chown mysql:mysql /var/run/mysqld
|
|
touch /var/log/mysqld.log
|
|
chown mysql:mysql /var/log/mysqld.log
|
|
|
|
# 7. 创建符号链接
|
|
echo "🔗 创建符号链接..."
|
|
ln -sf /usr/local/mysql/bin/mysql /usr/local/bin/mysql
|
|
ln -sf /usr/local/mysql/bin/mysqld /usr/local/bin/mysqld
|
|
ln -sf /usr/local/mysql/bin/mysqladmin /usr/local/bin/mysqladmin
|
|
ln -sf /usr/local/mysql/bin/mysqldump /usr/local/bin/mysqldump
|
|
|
|
# 8. 启动MySQL
|
|
echo "🚀 启动MySQL..."
|
|
nohup /usr/local/mysql/bin/mysqld --defaults-file=/etc/my.cnf --user=mysql > /var/log/mysqld.log 2>&1 &
|
|
|
|
# 等待启动
|
|
echo "⏳ 等待MySQL启动..."
|
|
sleep 20
|
|
|
|
# 检查进程
|
|
if pgrep -f mysqld > /dev/null; then
|
|
echo "✅ MySQL进程启动成功"
|
|
else
|
|
echo "❌ MySQL进程启动失败"
|
|
tail -20 /var/log/mysqld.log
|
|
exit 1
|
|
fi
|
|
|
|
# 检查端口
|
|
if netstat -tlnp | grep :3306 > /dev/null; then
|
|
echo "✅ MySQL端口3306正在监听"
|
|
else
|
|
echo "⚠️ MySQL端口3306未监听"
|
|
fi
|
|
|
|
# 9. 设置密码
|
|
echo "🔐 设置密码..."
|
|
sleep 10
|
|
|
|
# 尝试无密码连接
|
|
if /usr/local/mysql/bin/mysql -u root -e 'SELECT VERSION();' > /dev/null 2>&1; then
|
|
echo "✅ 无密码连接成功,设置密码..."
|
|
/usr/local/mysql/bin/mysql -u root << 'EOSQL'
|
|
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'EmotionMuseum2025*#';
|
|
CREATE USER IF NOT EXISTS 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'EmotionMuseum2025*#';
|
|
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;
|
|
CREATE USER IF NOT EXISTS 'emotion'@'localhost' IDENTIFIED WITH mysql_native_password BY 'EmotionDB2024!';
|
|
CREATE USER IF NOT EXISTS 'emotion'@'%' IDENTIFIED WITH mysql_native_password BY 'EmotionDB2024!';
|
|
GRANT ALL PRIVILEGES ON emotion_museum.* TO 'emotion'@'localhost';
|
|
GRANT ALL PRIVILEGES ON emotion_museum.* TO 'emotion'@'%';
|
|
FLUSH PRIVILEGES;
|
|
EOSQL
|
|
echo "✅ 密码设置完成"
|
|
else
|
|
echo "⚠️ 无密码连接失败,检查临时密码..."
|
|
TEMP_PASSWORD=$(grep 'temporary password' /var/log/mysqld.log | tail -1 | awk '{print $NF}' 2>/dev/null || echo '')
|
|
if [ -n "$TEMP_PASSWORD" ]; then
|
|
echo "发现临时密码,重置..."
|
|
/usr/local/mysql/bin/mysql -u root -p"$TEMP_PASSWORD" --connect-expired-password << 'EOSQL'
|
|
ALTER USER 'root'@'localhost' IDENTIFIED BY 'EmotionMuseum2025*#';
|
|
FLUSH PRIVILEGES;
|
|
EOSQL
|
|
echo "✅ 密码重置完成"
|
|
fi
|
|
fi
|
|
|
|
# 10. 验证安装
|
|
echo "🔍 验证安装..."
|
|
if /usr/local/mysql/bin/mysql -u root -p'EmotionMuseum2025*#' -e 'SHOW DATABASES;' > /dev/null 2>&1; then
|
|
echo "✅ MySQL连接验证成功"
|
|
/usr/local/mysql/bin/mysql -u root -p'EmotionMuseum2025*#' -e 'SHOW DATABASES;'
|
|
|
|
# 检查emotion_museum数据库
|
|
if /usr/local/mysql/bin/mysql -u root -p'EmotionMuseum2025*#' -e 'USE emotion_museum; SHOW TABLES;' > /dev/null 2>&1; then
|
|
echo "✅ emotion_museum数据库存在"
|
|
/usr/local/mysql/bin/mysql -u root -p'EmotionMuseum2025*#' -e 'USE emotion_museum; SHOW TABLES;'
|
|
else
|
|
echo "⚠️ emotion_museum数据库不存在"
|
|
fi
|
|
else
|
|
echo "❌ MySQL连接验证失败"
|
|
exit 1
|
|
fi
|
|
|
|
echo "🎉 MySQL安装完成!"
|
|
echo "连接信息:"
|
|
echo " 主机: localhost"
|
|
echo " 端口: 3306"
|
|
echo " root密码: EmotionMuseum2025*#"
|
|
echo " emotion密码: EmotionDB2024!"
|
|
EOF
|
|
|
|
# 上传并执行脚本
|
|
echo "📤 上传安装脚本到服务器..."
|
|
scp /tmp/mysql_install_remote.sh $REMOTE_HOST:/tmp/
|
|
|
|
echo "🚀 在服务器上执行安装..."
|
|
ssh $REMOTE_HOST "chmod +x /tmp/mysql_install_remote.sh && /tmp/mysql_install_remote.sh"
|
|
|
|
echo "✅ MySQL安装脚本执行完成!"
|