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

posted @ 2025-06-07 01:43  yikes_ygr  阅读(36)  评论(0)    收藏  举报