www
!/bin/bash
set -e
PROJECT_DIR="/home/ykdbc/smarttest"
MYSQL_USER="ykdbc"
MYSQL_PASS="Xy@528848"
MYSQL_DB="smarttestejyy"
DB_SQL="${PROJECT_DIR}/db-sql/db.sql"
echo "=== 更新系统并安装依赖 ==="
sudo apt update -y
sudo apt upgrade -y
sudo apt install -y curl git build-essential nginx mysql-server redis-server
echo "=== 安装 Node.js v16.15.0 ==="
curl -fsSL https://deb.nodesource.com/setup_16.x | sudo -E bash -
sudo apt install -y nodejs
sudo npm install -g n
sudo n 16.15.0
hash -r
node -v
npm -v
echo "=== 配置 MySQL 用户和数据库 ==="
sudo systemctl enable mysql
sudo systemctl start mysql
sudo mysql -e "CREATE DATABASE IF NOT EXISTS ${MYSQL_DB} DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;"
sudo mysql -e "CREATE USER IF NOT EXISTS '${MYSQL_USER}'@'localhost' IDENTIFIED BY '${MYSQL_PASS}';"
sudo mysql -e "GRANT ALL PRIVILEGES ON ${MYSQL_DB}.* TO '${MYSQL_USER}'@'localhost';"
sudo mysql -e "FLUSH PRIVILEGES;"
if [ -f "$DB_SQL" ]; then
echo "=== 导入初始化 SQL 数据 ==="
sudo mysql -u${MYSQL_USER} -p${MYSQL_PASS} ${MYSQL_DB} < "$DB_SQL"
else
echo "⚠️ 未找到 $DB_SQL,跳过 SQL 导入"
fi
echo "=== 安装并编译 api-server ==="
cd ${PROJECT_DIR}/api-server
npm install
npm run dist
echo "=== 启动 api-server 进程守护 ==="
sudo npm install -g pm2
cd ${PROJECT_DIR}/api-server/dist
pm2 start ejyy_server.js --name ejyy-api-server
pm2 save
pm2 startup systemd -u $USER --hp $HOME
echo "=== 配置 Nginx 目录结构 ==="
sudo mkdir -p /wwwdata/api_dir
sudo mkdir -p /wwwdata/admin_web
sudo mkdir -p /wwwdata/console_web
echo "=== 编译并部署 admin-web ==="
cd ${PROJECT_DIR}/admin-web
npm install
npm run dist
sudo cp -r dist/* /wwwdata/admin_web/
echo "=== 编译并部署 console-web ==="
cd ${PROJECT_DIR}/console-web
npm install
npm run build
sudo cp -r dist/* /wwwdata/console_web/
echo "=== 配置 Nginx ==="
NGINX_CONF="/etc/nginx/sites-available/smarttest"
sudo tee $NGINX_CONF > /dev/null <<EOF
server {
listen 80;
server_name _;
location /api/ {
proxy_pass http://127.0.0.1:8888/; # 修改为 api-server 的实际端口
proxy_http_version 1.1;
proxy_set_header Upgrade \$http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host \$host;
proxy_cache_bypass \$http_upgrade;
}
location /admin/ {
root /wwwdata/admin_web;
index index.html;
try_files \$uri /index.html;
}
location /console/ {
root /wwwdata/console_web;
index index.html;
try_files \$uri /index.html;
}}
EOF
sudo ln -sf $NGINX_CONF /etc/nginx/sites-enabled/smarttest
sudo nginx -t
sudo systemctl restart nginx
echo "=== 部署完成! ==="
echo "管理后台: http://<服务器IP>/admin"
echo "物业中台: http://<服务器IP>/console"
echo "API 地址: http://<服务器IP>/api"