php服务启动命令-start.sh
!/bin/bash
=========================================================
PHP 后台启动脚本 (增强版)
功能:确保依赖安装后启动 PHP 应用
版本:2.0
=========================================================
--------------------------
配置区域 (根据实际修改)
--------------------------
APP_NAME="uShipment" # 应用名称
PORT=9006 # 监听端口
PROJECT_ROOT="/usr/local/project/<服务名称>" # 项目根目录
ARTISAN_PATH="\(PROJECT_ROOT/artisan" # artisan 路径
LOG_DIR="\)PROJECT_ROOT/log/\(APP_NAME" # 日志目录
PID_DIR="\)PROJECT_ROOT/run/$APP_NAME" # PID 文件目录
--------------------------
初始化目录
--------------------------
mkdir -p $LOG_DIR $PID_DIR
chmod 755 $LOG_DIR $PID_DIR
--------------------------
日志文件设置
--------------------------
TIMESTAMP=\((date +"%Y%m%d_%H%M%S")
LOG_FILE="\)LOG_DIR/\({APP_NAME}_\){TIMESTAMP}.log"
ERROR_LOG_FILE="\(LOG_DIR/\){APP_NAME}error\({TIMESTAMP}.log"
PID_FILE="\)PID_DIR/$APP_NAME.pid"
--------------------------
关键修复:确保依赖安装
--------------------------
echo "Checking dependencies in $PROJECT_ROOT..."
cd $PROJECT_ROOT || exit 1
检查 vendor 目录是否存在
if [ ! -d "vendor" ]; then
echo "[WARN] Vendor directory missing, installing dependencies..."
COMPOSER_ALLOW_SUPERUSER=1 composer install --no-interaction --no-scripts
# 验证安装结果
if [ ! -f "vendor/autoload.php" ]; then
echo "[ERROR] Failed to install dependencies!"
echo "Check composer errors and try manually:"
echo "cd $PROJECT_ROOT && composer install"
exit 1
fi
fi
--------------------------
检查是否已运行
--------------------------
if [ -f "\(PID_FILE" ]; then
PID=\)(cat $PID_FILE)
if ps -p $PID > /dev/null; then
echo "[ERROR] $APP_NAME is already running with PID $PID"
exit 1
else
echo "[WARN] Removing stale PID file"
rm -f $PID_FILE
fi
fi
--------------------------
启动应用
--------------------------
echo "Starting $APP_NAME on port $PORT..."
使用 nohup 后台运行
nohup php \(ARTISAN_PATH serve --port=\)PORT >> $LOG_FILE 2>> $ERROR_LOG_FILE &
保存 PID
echo $! > $PID_FILE
--------------------------
验证启动
--------------------------
sleep 3
if [ -f "$PID_FILE" ] && ps -p $(cat $PID_FILE) > /dev/null; then
echo "[SUCCESS] $APP_NAME started successfully with PID $(cat \(PID_FILE)"
echo "Access URL: http://\)(hostname -I | awk '{print \(1}'):\)PORT"
echo "Logs: $LOG_FILE"
echo "Error Logs: $ERROR_LOG_FILE"
else
echo "[ERROR] Failed to start $APP_NAME"
echo "Check error logs: $ERROR_LOG_FILE"
# 提供排查建议
echo "Troubleshooting:"
echo "1. Check PHP version: php -v"
echo "2. Verify artisan path: ls -l $ARTISAN_PATH"
echo "3. Test manual start: php $ARTISAN_PATH serve --port=$PORT"
exit 1
fi

浙公网安备 33010602011771号