125 lines
4.6 KiB
Batchfile
125 lines
4.6 KiB
Batchfile
@echo off
|
|
setlocal EnableDelayedExpansion
|
|
set "SCRIPTS=%~dp0"
|
|
set "SCRIPTS=!SCRIPTS:~0,-1!"
|
|
for %%F in ("!SCRIPTS!\..") do set "PROJECT_DIR=%%~fF"
|
|
set "WINSW=!SCRIPTS!\WinSW-x64.exe"
|
|
|
|
net session >nul 2>&1
|
|
if %errorlevel% neq 0 (
|
|
echo [ERROR] Run as Administrator!
|
|
pause & exit /b 1
|
|
)
|
|
|
|
echo =============================================
|
|
echo MatabPanel - Install Services
|
|
echo =============================================
|
|
echo.
|
|
echo Scripts : !SCRIPTS!
|
|
echo Project : !PROJECT_DIR!
|
|
echo.
|
|
|
|
if not exist "!WINSW!" (
|
|
echo [ERROR] WinSW-x64.exe not found in scripts folder.
|
|
pause & exit /b 1
|
|
)
|
|
|
|
if not exist "!SCRIPTS!\nginx\nginx.exe" (
|
|
echo [ERROR] nginx not found in scripts\nginx\
|
|
pause & exit /b 1
|
|
)
|
|
|
|
if not exist "!SCRIPTS!\php\php-cgi.exe" (
|
|
echo [ERROR] php-cgi.exe not found in scripts\php\
|
|
pause & exit /b 1
|
|
)
|
|
|
|
REM --- [1/6] storage:link ---
|
|
echo [1/6] Creating storage link...
|
|
cd /d "!PROJECT_DIR!"
|
|
"!SCRIPTS!\php\php.exe" artisan storage:link >nul 2>&1
|
|
echo [OK] Done.
|
|
echo.
|
|
|
|
REM --- [2/6] Optimize Laravel ---
|
|
echo [2/6] Optimizing Laravel...
|
|
"!SCRIPTS!\php\php.exe" artisan optimize --quiet 2>nul
|
|
"!SCRIPTS!\php\php.exe" artisan filament:optimize --quiet 2>nul
|
|
echo [OK] Done.
|
|
echo.
|
|
|
|
REM --- [3/6] Configure OPcache ---
|
|
echo [3/6] Configuring OPcache...
|
|
if not exist "C:\tmp\php-opcache" mkdir "C:\tmp\php-opcache"
|
|
set "SCRIPTS_BAK=!SCRIPTS!"
|
|
powershell -NoProfile -Command ^
|
|
"$s='!SCRIPTS_BAK!'; $action=New-ScheduledTaskAction -Execute 'cmd.exe' -Argument ('/c \"\"' + $s + '\warmup.bat\"\"'); $trigger=New-ScheduledTaskTrigger -AtStartup; $settings=New-ScheduledTaskSettingsSet -ExecutionTimeLimit (New-TimeSpan -Minutes 5) -MultipleInstances IgnoreNew; Unregister-ScheduledTask -TaskName 'MatabWarmup' -Confirm:$false -ErrorAction SilentlyContinue; Register-ScheduledTask -TaskName 'MatabWarmup' -Action $action -Trigger $trigger -Settings $settings -RunLevel Highest -User 'SYSTEM' -Force | Out-Null; Write-Host ' Warmup task registered.'"
|
|
echo [OK] Done.
|
|
echo.
|
|
|
|
REM --- [4/6] Generate nginx.conf from template ---
|
|
echo [4/6] Writing nginx.conf...
|
|
set "PUBLIC_DIR=!PROJECT_DIR:\=/!/public"
|
|
if not exist "!SCRIPTS!\nginx\conf\nginx.conf.template" (
|
|
echo [ERROR] nginx.conf.template not found in scripts\nginx\conf\
|
|
pause & exit /b 1
|
|
)
|
|
powershell -NoProfile -Command ^
|
|
"(Get-Content '!SCRIPTS!\nginx\conf\nginx.conf.template') -replace '\{\{PUBLIC_DIR\}\}', '!PUBLIC_DIR!' | Set-Content '!SCRIPTS!\nginx\conf\nginx.conf'"
|
|
echo [OK] nginx.conf written.
|
|
echo.
|
|
|
|
REM --- [5/6] Firewall ---
|
|
echo [5/6] Firewall rules...
|
|
netsh advfirewall firewall delete rule name="Matab Web 8000" >nul 2>&1
|
|
netsh advfirewall firewall delete rule name="Matab FTP 2121" >nul 2>&1
|
|
netsh advfirewall firewall add rule name="Matab Web 8000" dir=in action=allow protocol=TCP localport=8000 >nul
|
|
netsh advfirewall firewall add rule name="Matab FTP 2121" dir=in action=allow protocol=TCP localport=2121 >nul
|
|
echo [OK] Done.
|
|
echo.
|
|
|
|
REM --- [6/6] Windows Services ---
|
|
echo [6/6] Installing Windows services...
|
|
|
|
echo Stopping old services...
|
|
"!WINSW!" stop "!SCRIPTS!\matab-autostart.xml" >nul 2>&1
|
|
"!WINSW!" stop "!SCRIPTS!\matab-phpcgi.xml" >nul 2>&1
|
|
"!WINSW!" stop "!SCRIPTS!\matab-ftp.xml" >nul 2>&1
|
|
"!WINSW!" uninstall "!SCRIPTS!\matab-autostart.xml" >nul 2>&1
|
|
"!WINSW!" uninstall "!SCRIPTS!\matab-phpcgi.xml" >nul 2>&1
|
|
"!WINSW!" uninstall "!SCRIPTS!\matab-ftp.xml" >nul 2>&1
|
|
taskkill /f /im nginx.exe >nul 2>&1
|
|
taskkill /f /im php-cgi.exe >nul 2>&1
|
|
taskkill /f /im php.exe >nul 2>&1
|
|
|
|
echo Installing FTP service...
|
|
"!WINSW!" install "!SCRIPTS!\matab-ftp.xml"
|
|
"!WINSW!" start "!SCRIPTS!\matab-ftp.xml"
|
|
echo.
|
|
|
|
echo Installing PHP FastCGI service...
|
|
"!WINSW!" install "!SCRIPTS!\matab-phpcgi.xml"
|
|
"!WINSW!" start "!SCRIPTS!\matab-phpcgi.xml"
|
|
echo.
|
|
|
|
echo Installing nginx service...
|
|
"!WINSW!" install "!SCRIPTS!\matab-autostart.xml"
|
|
"!WINSW!" start "!SCRIPTS!\matab-autostart.xml"
|
|
echo.
|
|
|
|
echo Waiting for web server on port 8000...
|
|
powershell -NoProfile -Command ^
|
|
"$ok=0; for($i=0;$i -lt 60;$i++){try{$t=New-Object Net.Sockets.TcpClient;$t.Connect('127.0.0.1',8000);$t.Close();$ok=1;break}catch{Start-Sleep -Milliseconds 500}}; if($ok){Write-Host '[OK] Server is ready.'}else{Write-Host '[WARN] Server did not respond in 30s.'}"
|
|
|
|
echo.
|
|
echo =============================================
|
|
echo Services installed (auto-start with Windows):
|
|
echo MatabFTP - FTP server (port 2121)
|
|
echo MatabPHPCgi - PHP FastCGI (port 9001)
|
|
echo MatabAutostart - nginx (port 8000)
|
|
echo.
|
|
echo Web: http://localhost:8000
|
|
echo =============================================
|
|
echo.
|
|
pause
|