119 lines
3.1 KiB
Bash
Executable File
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 "=========================================="
|