Files
stock/stock-html/deploy/setup-server.sh
T
freedakgmail 9c7d7abdd4 Initial commit
2026-07-17 18:49:35 +08:00

119 lines
3.1 KiB
Bash
Executable File

#!/bin/bash
# 新服务器初始化脚本 - 152.136.182.184 (stock.allbyai.cn)
# 在服务器上执行此脚本完成环境配置
set -e
echo "=========================================="
echo "股票投资分析系统 - 服务器初始化"
echo "服务器: 152.136.182.184"
echo "域名: stock.allbyai.cn"
echo "=========================================="
# 更新系统
echo "[1/8] 更新系统包..."
apt-get update && apt-get upgrade -y
# 安装依赖
echo "[2/8] 安装系统依赖..."
apt-get install -y python3 python3-pip python3-venv nginx postgresql postgresql-contrib
# 配置PostgreSQL
echo "[3/8] 配置PostgreSQL..."
sudo -u postgres psql -c "ALTER USER postgres PASSWORD 'stock_password_2025';" || true
sudo -u postgres createdb stock_app || echo "数据库已存在"
# 创建应用目录
echo "[4/8] 创建应用目录..."
mkdir -p /opt/stock-app
chown -R root:root /opt/stock-app
# 创建Python虚拟环境
echo "[5/8] 创建Python虚拟环境..."
cd /opt/stock-app
python3 -m venv venv
source venv/bin/activate
pip install --upgrade pip
# 安装Python依赖
echo "[6/8] 安装Python依赖..."
if [ -f requirements.txt ]; then
pip install -r requirements.txt
else
pip install flask flask-cors akshare pandas numpy schedule psycopg2-binary
fi
# 初始化数据库
echo "[7/8] 初始化数据库..."
if [ -f init_db.sql ]; then
sudo -u postgres psql -d stock_app -f init_db.sql || true
fi
if [ -f init_sim_trade.sql ]; then
sudo -u postgres psql -d stock_app -f init_sim_trade.sql || true
fi
if [ -f init_smart_trade.sql ]; then
sudo -u postgres psql -d stock_app -f init_smart_trade.sql || true
fi
if [ -f init_stock_data_db.sql ]; then
sudo -u postgres psql -d stock_app -f init_stock_data_db.sql || true
fi
# 配置systemd服务
echo "[8/8] 配置systemd服务..."
cat > /etc/systemd/system/stock-app.service << 'EOF'
[Unit]
Description=Stock Investment Analysis Web Application
After=network.target postgresql.service
[Service]
Type=simple
User=root
WorkingDirectory=/opt/stock-app
Environment="DB_HOST=localhost"
Environment="DB_PORT=5432"
Environment="DB_NAME=stock_app"
Environment="DB_USER=postgres"
Environment="DB_PASSWORD=stock_password_2025"
ExecStart=/opt/stock-app/venv/bin/python app.py
Restart=always
RestartSec=10
[Install]
WantedBy=multi-user.target
EOF
cat > /etc/systemd/system/stock-data-service.service << 'EOF'
[Unit]
Description=Stock Data Collection Service
After=network.target postgresql.service
[Service]
Type=simple
User=root
WorkingDirectory=/opt/stock-app
Environment="DB_HOST=localhost"
Environment="DB_PORT=5432"
Environment="DB_NAME=stock_app"
Environment="DB_USER=postgres"
Environment="DB_PASSWORD=stock_password_2025"
ExecStart=/opt/stock-app/venv/bin/python stock_data_service.py daemon
Restart=always
RestartSec=30
[Install]
WantedBy=multi-user.target
EOF
systemctl daemon-reload
systemctl enable stock-app
systemctl enable stock-data-service
echo "=========================================="
echo "初始化完成!"
echo ""
echo "后续步骤:"
echo "1. 从本地同步代码到服务器"
echo "2. 配置Nginx反向代理"
echo "3. 启动服务"
echo "=========================================="