#!/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 "=========================================="