# 更新系统包
apt update && apt upgrade -y
# 安装JDK 8(适配Spring Boot 2.0.0)
apt install -y openjdk-8-jdk
java -version # 验证输出1.8.x
# 安装MySQL 8.0
apt install -y mysql-server
systemctl enable mysql && systemctl start mysql
# 安装Redis 6.x
apt install -y redis-server
systemctl enable redis && systemctl start redis
# 安装OpenResty
wget -qO - https://openresty.org/package/pubkey.gpg | apt-key add -
apt-add-repository -y "deb http://openresty.org/package/ubuntu $(lsb_release -sc) main"
apt update && apt install -y openresty
systemctl enable openresty && systemctl start openresty# 登录MySQL(首次无密码,直接回车)
mysql -u root -p
# 执行MySQL命令(创建数据库和用户)
CREATE DATABASE jsh_erp CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'mysql账号'@'localhost' IDENTIFIED BY 'mysql密码';
GRANT ALL PRIVILEGES ON jsh_erp.* TO 'mysql账号'@'localhost';
FLUSH PRIVILEGES;
EXIT;
# 导入初始化SQL(假设SQL文件路径为/opt/erp/init.sql)
mysql -u mysql账号 -p'mysql密码' jsh_erp < /opt/erp/init.sql# 设置Redis密码并持久化配置
sed -i 's/# requirepass foobared/requirepass redis密码/' /etc/redis/redis.conf
systemctl restart redis
# 验证Redis密码
redis-cli -h localhost -p 6379 AUTH redis密码 # 输出OK表示成功# 创建后端目录并上传jar包
mkdir -p /opt/erp/backend && cd /opt/erp/backend
# 假设jar包已上传,修改配置文件
vi application.properties
# 配置文件关键内容(确保以下参数正确)
cat > application.properties << EOF
spring.datasource.url=jdbc:mysql://localhost:3306/jsh_erp?useUnicode=true&characterEncoding=utf8&serverTimezone=Asia/Shanghai
spring.datasource.username=mysql账号
spring.datasource.password=mysql密码
spring.redis.host=localhost
spring.redis.port=6379
spring.redis.password=redis密码
server.port=9999
EOF
# 创建系统服务(确保崩溃自动重启)
cat > /etc/systemd/system/jsherp.service << EOF
[Unit]
Description=jshERP Backend Service
After=mysql.service redis-server.service
[Service]
User=root
WorkingDirectory=/opt/erp/backend
ExecStart=/usr/bin/java -jar jshERP.jar
Restart=always # 崩溃自动重启
RestartSec=5 # 重启间隔5秒
LimitNOFILE=65535 # 提高文件描述符限制
[Install]
WantedBy=multi-user.target
EOF
# 启动后端服务并设置开机自启
systemctl daemon-reload
systemctl enable jsherp && systemctl start jsherp
systemctl status jsherp # 验证状态为active (running)# 上传前端dist目录到/opt/erp/dist
mkdir -p /opt/erp/dist
# 假设前端文件已上传,设置权限
chmod -R 755 /opt/erp/dist
# 配置OpenResty(覆盖默认配置)
cat > /usr/local/openresty/nginx/conf/nginx.conf << EOF
worker_processes auto;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
server {
listen 80;
server_name 你的ip 你的域名;
root /opt/erp/dist;
index index.html;
# 后端接口代理
location /jshERP-boot/ {
proxy_pass http://127.0.0.1:9999/jshERP-boot/;
proxy_set_header Host \$host;
proxy_set_header X-Real-IP \$remote_addr;
proxy_connect_timeout 30s; # 连接超时
proxy_read_timeout 60s; # 读取超时
}
# 前端路由支持
location / {
try_files \$uri \$uri/ /index.html;
}
# 日志配置(便于排查问题)
access_log /var/log/jsherp/access.log;
error_log /var/log/jsherp/error.log;
}
}
EOF
# 创建日志目录
mkdir -p /var/log/jsherp && chmod -R 777 /var/log/jsherp
# 验证配置并重启OpenResty
/usr/local/openresty/nginx/sbin/nginx -t
systemctl restart openresty服务自动重启:
后端通过 systemctl 配置 Restart=always,崩溃后5秒内自动重启;OpenResty和Redis/MySQL均通过 systemctl enable 设置开机自启。
资源限制优化:
后端服务配置 LimitNOFILE=65535 避免文件句柄耗尽,Nginx设置超时时间防止连接挂死。
日志监控:
# 实时查看后端日志
tail -f /opt/erp/backend/app.log
# 实时查看Nginx错误日志
tail -f /var/log/jsherp/error.log定期备份:
添加MySQL定时备份脚本(每天凌晨3点执行):
cat > /opt/erp/backup.sh << EOF
#!/bin/bash
DATE=\$(date +%Y%m%d)
mysqldump -u mysql账号 -p'mysql密码' jsh_erp > /opt/erp/backup/jsh_erp_\$DATE.sql
# 保留30天备份
find /opt/erp/backup -name "jsh_erp_*.sql" -mtime +30 -delete
EOF
chmod +x /opt/erp/backup.sh
mkdir -p /opt/erp/backup
# 添加到crontab
(crontab -l 2>/dev/null; echo "0 3 * * * /opt/erp/backup.sh") | crontab -访问前端:http://你的ip 显示登录页;
登录测试:用户 jsh,密码 redis密码,验证码正常加载;
服务状态:systemctl status jsherp openresty mysql redis-server 均为 active (running)。
按以上步骤操作后,系统可稳定运行,且具备自动恢复和数据备份能力。
提示:如遇链接失效,请在评论区留言反馈