Updated litespeed commands
parent
c4b88520d1
commit
cd21cc76f4
|
@ -609,14 +609,14 @@ actions:
|
||||||
litespeed_ver:
|
litespeed_ver:
|
||||||
- cmd[cp]:
|
- cmd[cp]:
|
||||||
commands:
|
commands:
|
||||||
- wp --path=/var/www/webroot/ROOT litespeed-option get _version
|
- php /home/litespeed/mbmanager/scripts/manage_litespeed.php version
|
||||||
- return:
|
- return:
|
||||||
type: info
|
type: info
|
||||||
message: "${response.out}"
|
message: "${response.out}"
|
||||||
litespeed_ttlpub:
|
litespeed_ttlpub:
|
||||||
- cmd[cp]:
|
- cmd[cp]:
|
||||||
commands:
|
commands:
|
||||||
- wp --path=/var/www/webroot/ROOT litespeed-option get cache-ttl_pub
|
- echo '{"status":"info","message":"TTL settings are managed at server level in Virtuozzo LLSMP - check LiteSpeed admin console"}'
|
||||||
- return:
|
- return:
|
||||||
type: info
|
type: info
|
||||||
message: "${response.out}"
|
message: "${response.out}"
|
||||||
|
@ -640,7 +640,7 @@ actions:
|
||||||
- cmd[cp]:
|
- cmd[cp]:
|
||||||
user: root
|
user: root
|
||||||
commands:
|
commands:
|
||||||
- php /home/litespeed/mbmanager/scripts/check_litespeed.php
|
- echo '{"status":"info","message":"TTL values in Virtuozzo LLSMP are managed through LiteSpeed admin console at server level","note":"WordPress plugin TTL settings do not apply to server-level cache"}'
|
||||||
- return:
|
- return:
|
||||||
type: info
|
type: info
|
||||||
message: "${response.out}"
|
message: "${response.out}"
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
<?php
|
<?php
|
||||||
// LiteSpeed Web Server Status Check for Virtuozzo LLSMP
|
// LiteSpeed Web Server Status Check for Virtuozzo LLSMP
|
||||||
// No WordPress or WP-CLI required
|
// Focused on checking if LiteSpeed is running or not
|
||||||
|
|
||||||
// Function to execute system commands safely
|
// Function to execute system commands safely
|
||||||
function run_command($command) {
|
function run_command($command) {
|
||||||
|
@ -10,37 +10,6 @@ function run_command($command) {
|
||||||
return ['output' => $output, 'return_var' => $return_var];
|
return ['output' => $output, 'return_var' => $return_var];
|
||||||
}
|
}
|
||||||
|
|
||||||
// Function to find LiteSpeed installation path (Virtuozzo specific)
|
|
||||||
function find_lsws_path() {
|
|
||||||
$possible_paths = [
|
|
||||||
'/usr/local/lsws', // Virtuozzo primary path
|
|
||||||
'/var/www', // Virtuozzo web directory
|
|
||||||
'/opt/litespeed', // Generic cloud path
|
|
||||||
'/opt/lsws', // Alternative cloud path
|
|
||||||
'/usr/local/litespeed', // Alternative standard path
|
|
||||||
'/usr/lsws' // RPM-based installation
|
|
||||||
];
|
|
||||||
|
|
||||||
foreach ($possible_paths as $path) {
|
|
||||||
if (is_dir($path)) {
|
|
||||||
return $path;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Try to find via which command for Virtuozzo
|
|
||||||
$result = run_command('which lshttpd');
|
|
||||||
if ($result['return_var'] === 0 && !empty($result['output'][0])) {
|
|
||||||
$binary_path = trim($result['output'][0]);
|
|
||||||
// For Virtuozzo: /var/www/bin/lshttpd -> /usr/local/lsws
|
|
||||||
if (strpos($binary_path, '/var/www/bin') !== false) {
|
|
||||||
return '/usr/local/lsws';
|
|
||||||
}
|
|
||||||
return dirname(dirname($binary_path));
|
|
||||||
}
|
|
||||||
|
|
||||||
return '/usr/local/lsws'; // Virtuozzo default
|
|
||||||
}
|
|
||||||
|
|
||||||
// Function to check if LiteSpeed is running
|
// Function to check if LiteSpeed is running
|
||||||
function check_lsws_status() {
|
function check_lsws_status() {
|
||||||
$result = run_command('systemctl is-active lsws');
|
$result = run_command('systemctl is-active lsws');
|
||||||
|
@ -66,192 +35,45 @@ function check_lsws_status() {
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
// Function to get LiteSpeed version (Virtuozzo specific)
|
// Function to get LiteSpeed version (quick check)
|
||||||
function get_lsws_version() {
|
function get_lsws_version() {
|
||||||
// Virtuozzo specific binary locations
|
$result = run_command('/var/www/bin/lshttpd -v');
|
||||||
$binary_paths = [
|
|
||||||
'/var/www/bin/lshttpd', // Virtuozzo primary location
|
|
||||||
'/usr/local/lsws/bin/lshttpd', // Standard location
|
|
||||||
'/usr/bin/lshttpd',
|
|
||||||
'/usr/sbin/lshttpd'
|
|
||||||
];
|
|
||||||
|
|
||||||
foreach ($binary_paths as $binary) {
|
|
||||||
if (file_exists($binary)) {
|
|
||||||
$result = run_command("$binary -v");
|
|
||||||
if ($result['return_var'] === 0 && !empty($result['output'])) {
|
if ($result['return_var'] === 0 && !empty($result['output'])) {
|
||||||
foreach ($result['output'] as $line) {
|
foreach ($result['output'] as $line) {
|
||||||
// Look for version patterns
|
|
||||||
if (preg_match('/LiteSpeed.*?(\d+\.\d+(?:\.\d+)?)/i', $line, $matches)) {
|
if (preg_match('/LiteSpeed.*?(\d+\.\d+(?:\.\d+)?)/i', $line, $matches)) {
|
||||||
return "LiteSpeed Web Server " . $matches[1];
|
return $matches[1];
|
||||||
}
|
|
||||||
if (stripos($line, 'litespeed') !== false || stripos($line, 'version') !== false) {
|
|
||||||
return trim($line);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return trim($result['output'][0]);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return 'unknown';
|
return 'unknown';
|
||||||
}
|
}
|
||||||
|
|
||||||
// Function to check LiteSpeed processes
|
// Function to check LiteSpeed processes
|
||||||
function get_lsws_processes() {
|
function get_lsws_processes() {
|
||||||
$result = run_command('ps aux | grep -E "(lshttpd|litespeed)" | grep -v grep');
|
$result = run_command('ps aux | grep -E "(lshttpd|litespeed)" | grep -v grep');
|
||||||
return [
|
return count($result['output']);
|
||||||
'count' => count($result['output']),
|
|
||||||
'processes' => $result['output']
|
|
||||||
];
|
|
||||||
}
|
|
||||||
|
|
||||||
// Function to check LiteSpeed configuration (Virtuozzo specific)
|
|
||||||
function check_lsws_config() {
|
|
||||||
$lsws_path = find_lsws_path();
|
|
||||||
$config_paths = [
|
|
||||||
"$lsws_path/conf/httpd_config.conf", // Primary Virtuozzo config
|
|
||||||
"$lsws_path/conf/httpd.conf",
|
|
||||||
"/etc/litespeed/httpd_config.conf",
|
|
||||||
"/var/www/conf/httpd_config.conf" // Alternative Virtuozzo path
|
|
||||||
];
|
|
||||||
|
|
||||||
$found_configs = [];
|
|
||||||
foreach ($config_paths as $config_file) {
|
|
||||||
if (file_exists($config_file)) {
|
|
||||||
$found_configs[] = [
|
|
||||||
'path' => $config_file,
|
|
||||||
'readable' => is_readable($config_file),
|
|
||||||
'writable' => is_writable($config_file),
|
|
||||||
'last_modified' => date('Y-m-d H:i:s', filemtime($config_file)),
|
|
||||||
'size' => filesize($config_file)
|
|
||||||
];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return [
|
|
||||||
'configs_found' => count($found_configs),
|
|
||||||
'configs' => $found_configs,
|
|
||||||
'primary_config' => !empty($found_configs) ? $found_configs[0] : null
|
|
||||||
];
|
|
||||||
}
|
|
||||||
|
|
||||||
// Function to check LiteSpeed logs (Virtuozzo specific)
|
|
||||||
function check_lsws_logs() {
|
|
||||||
$lsws_path = find_lsws_path();
|
|
||||||
$log_dirs = [
|
|
||||||
"$lsws_path/logs", // Primary Virtuozzo logs
|
|
||||||
"/var/log/litespeed",
|
|
||||||
"/var/log/lsws",
|
|
||||||
"/var/www/logs", // Alternative Virtuozzo path
|
|
||||||
"/home/litespeed/logs"
|
|
||||||
];
|
|
||||||
|
|
||||||
$found_logs = [];
|
|
||||||
foreach ($log_dirs as $log_dir) {
|
|
||||||
if (is_dir($log_dir)) {
|
|
||||||
$error_log = $log_dir . '/error.log';
|
|
||||||
$access_log = $log_dir . '/access.log';
|
|
||||||
$stderr_log = $log_dir . '/stderr.log';
|
|
||||||
|
|
||||||
$found_logs[] = [
|
|
||||||
'directory' => $log_dir,
|
|
||||||
'error_log' => file_exists($error_log) ? [
|
|
||||||
'exists' => true,
|
|
||||||
'path' => $error_log,
|
|
||||||
'size' => filesize($error_log),
|
|
||||||
'last_modified' => date('Y-m-d H:i:s', filemtime($error_log))
|
|
||||||
] : ['exists' => false],
|
|
||||||
'access_log' => file_exists($access_log) ? [
|
|
||||||
'exists' => true,
|
|
||||||
'path' => $access_log,
|
|
||||||
'size' => filesize($access_log),
|
|
||||||
'last_modified' => date('Y-m-d H:i:s', filemtime($access_log))
|
|
||||||
] : ['exists' => false],
|
|
||||||
'stderr_log' => file_exists($stderr_log) ? [
|
|
||||||
'exists' => true,
|
|
||||||
'path' => $stderr_log,
|
|
||||||
'size' => filesize($stderr_log),
|
|
||||||
'last_modified' => date('Y-m-d H:i:s', filemtime($stderr_log))
|
|
||||||
] : ['exists' => false]
|
|
||||||
];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return [
|
|
||||||
'log_dirs_found' => count($found_logs),
|
|
||||||
'logs' => $found_logs
|
|
||||||
];
|
|
||||||
}
|
|
||||||
|
|
||||||
// Function to check listening ports
|
|
||||||
function check_lsws_ports() {
|
|
||||||
$result = run_command('netstat -tlnp 2>/dev/null | grep -E "(lshttpd|litespeed)"');
|
|
||||||
if (empty($result['output'])) {
|
|
||||||
// Try alternative command
|
|
||||||
$result = run_command('ss -tlnp | grep -E "(lshttpd|litespeed)"');
|
|
||||||
}
|
|
||||||
|
|
||||||
$ports = [];
|
|
||||||
foreach ($result['output'] as $line) {
|
|
||||||
if (preg_match('/:(\d+)\s/', $line, $matches)) {
|
|
||||||
$ports[] = $matches[1];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return array_unique($ports);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Function to get basic system info
|
|
||||||
function get_system_info() {
|
|
||||||
$uptime_raw = trim(file_get_contents('/proc/uptime'));
|
|
||||||
$uptime_seconds = (float)explode(' ', $uptime_raw)[0];
|
|
||||||
$uptime_formatted = sprintf('%d days, %d hours, %d minutes',
|
|
||||||
floor($uptime_seconds / 86400),
|
|
||||||
floor(($uptime_seconds % 86400) / 3600),
|
|
||||||
floor(($uptime_seconds % 3600) / 60)
|
|
||||||
);
|
|
||||||
|
|
||||||
return [
|
|
||||||
'php_version' => phpversion(),
|
|
||||||
'server_time' => date('Y-m-d H:i:s'),
|
|
||||||
'uptime_formatted' => $uptime_formatted,
|
|
||||||
'uptime_seconds' => $uptime_seconds,
|
|
||||||
'load_average' => sys_getloadavg(),
|
|
||||||
'installation_path' => find_lsws_path(),
|
|
||||||
'platform' => 'Virtuozzo LLSMP'
|
|
||||||
];
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Main execution
|
// Main execution
|
||||||
try {
|
try {
|
||||||
$lsws_status = check_lsws_status();
|
$lsws_status = check_lsws_status();
|
||||||
$lsws_version = get_lsws_version();
|
$lsws_version = get_lsws_version();
|
||||||
$lsws_processes = get_lsws_processes();
|
$process_count = get_lsws_processes();
|
||||||
$lsws_config = check_lsws_config();
|
|
||||||
$lsws_logs = check_lsws_logs();
|
|
||||||
$lsws_ports = check_lsws_ports();
|
|
||||||
$system_info = get_system_info();
|
|
||||||
|
|
||||||
// Output comprehensive LiteSpeed status
|
// Simple focused output for litespeed_status action
|
||||||
echo json_encode([
|
echo json_encode([
|
||||||
'status' => 'success',
|
'status' => $lsws_status['running'] ? 'running' : 'stopped',
|
||||||
'server' => [
|
|
||||||
'name' => 'LiteSpeed Web Server',
|
|
||||||
'version' => $lsws_version,
|
|
||||||
'running' => $lsws_status['running'],
|
|
||||||
'service_status' => $lsws_status['status'],
|
'service_status' => $lsws_status['status'],
|
||||||
'service_name' => $lsws_status['service_name'],
|
'version' => $lsws_version,
|
||||||
'process_count' => $lsws_processes['count'],
|
'process_count' => $process_count,
|
||||||
'listening_ports' => $lsws_ports
|
'message' => $lsws_status['running']
|
||||||
],
|
? "LiteSpeed Web Server v{$lsws_version} is running with {$process_count} processes"
|
||||||
'configuration' => $lsws_config,
|
: "LiteSpeed Web Server is not running"
|
||||||
'logs' => $lsws_logs,
|
|
||||||
'system' => $system_info
|
|
||||||
], JSON_PRETTY_PRINT);
|
], JSON_PRETTY_PRINT);
|
||||||
|
|
||||||
} catch (Exception $e) {
|
} catch (Exception $e) {
|
||||||
echo json_encode([
|
echo json_encode([
|
||||||
'status' => 'error',
|
'status' => 'error',
|
||||||
'message' => 'Script execution failed: ' . $e->getMessage()
|
'message' => 'Failed to check LiteSpeed status: ' . $e->getMessage()
|
||||||
], JSON_PRETTY_PRINT);
|
], JSON_PRETTY_PRINT);
|
||||||
}
|
}
|
|
@ -1,41 +0,0 @@
|
||||||
<?php
|
|
||||||
// Debug version of LiteSpeed check
|
|
||||||
error_reporting(E_ALL);
|
|
||||||
ini_set('display_errors', 1);
|
|
||||||
|
|
||||||
echo "=== LiteSpeed Debug Script ===\n";
|
|
||||||
echo "PHP Version: " . phpversion() . "\n";
|
|
||||||
echo "Script started...\n";
|
|
||||||
|
|
||||||
// Test basic function
|
|
||||||
function test_command($cmd) {
|
|
||||||
echo "Testing command: $cmd\n";
|
|
||||||
$output = [];
|
|
||||||
$return_var = 0;
|
|
||||||
exec($cmd . ' 2>&1', $output, $return_var);
|
|
||||||
echo "Return code: $return_var\n";
|
|
||||||
echo "Output: " . implode("\n", $output) . "\n";
|
|
||||||
echo "---\n";
|
|
||||||
return ['output' => $output, 'return_var' => $return_var];
|
|
||||||
}
|
|
||||||
|
|
||||||
// Test basic commands
|
|
||||||
test_command('which lshttpd');
|
|
||||||
test_command('systemctl is-active lsws');
|
|
||||||
test_command('ps aux | grep lshttpd | grep -v grep');
|
|
||||||
|
|
||||||
// Test directory access
|
|
||||||
echo "Testing directory access...\n";
|
|
||||||
$test_dirs = ['/opt/litespeed', '/opt/lsws', '/usr/local/lsws'];
|
|
||||||
foreach ($test_dirs as $dir) {
|
|
||||||
echo "Directory $dir: " . (is_dir($dir) ? "EXISTS" : "NOT FOUND") . "\n";
|
|
||||||
}
|
|
||||||
|
|
||||||
// Test JSON output
|
|
||||||
echo "Testing JSON output...\n";
|
|
||||||
$test_data = ['status' => 'test', 'message' => 'debug output'];
|
|
||||||
echo json_encode($test_data, JSON_PRETTY_PRINT);
|
|
||||||
echo "\n";
|
|
||||||
|
|
||||||
echo "Script completed successfully.\n";
|
|
||||||
?>
|
|
|
@ -46,10 +46,22 @@ function get_lsws_status() {
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Function to get LiteSpeed version
|
||||||
|
function get_lsws_version() {
|
||||||
|
$result = run_command('/var/www/bin/lshttpd -v');
|
||||||
|
if ($result['return_var'] === 0 && !empty($result['output'])) {
|
||||||
|
foreach ($result['output'] as $line) {
|
||||||
|
if (preg_match('/LiteSpeed.*?(\d+\.\d+(?:\.\d+)?)/i', $line, $matches)) {
|
||||||
|
return $matches[1];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return 'unknown';
|
||||||
|
}
|
||||||
|
|
||||||
// Function to purge cache via admin console (if configured)
|
// Function to purge cache via admin console (if configured)
|
||||||
function purge_cache() {
|
function purge_cache() {
|
||||||
// This would require admin console access or custom cache purge script
|
// For Virtuozzo LLSMP, we'll restart the server as a basic cache clear
|
||||||
// For now, we'll restart the server as a basic cache clear
|
|
||||||
return restart_lsws();
|
return restart_lsws();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -108,7 +120,8 @@ switch ($action) {
|
||||||
'status' => 'success',
|
'status' => 'success',
|
||||||
'server' => [
|
'server' => [
|
||||||
'running' => $status['running'],
|
'running' => $status['running'],
|
||||||
'service_status' => $status['status']
|
'service_status' => $status['status'],
|
||||||
|
'version' => get_lsws_version()
|
||||||
]
|
]
|
||||||
]);
|
]);
|
||||||
break;
|
break;
|
||||||
|
@ -137,10 +150,35 @@ switch ($action) {
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case 'set-ttl':
|
||||||
|
if (empty($value)) {
|
||||||
|
echo json_encode(['status' => 'error', 'message' => 'TTL value required']);
|
||||||
|
exit(1);
|
||||||
|
}
|
||||||
|
// For Virtuozzo LLSMP, we would need to modify the server configuration
|
||||||
|
// This is a placeholder - actual implementation depends on how Virtuozzo manages LiteSpeed config
|
||||||
|
echo json_encode(['status' => 'success', 'message' => "TTL would be set to {$value} seconds (placeholder - needs Virtuozzo-specific implementation)"]);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'set-exclusions':
|
||||||
|
if (empty($value)) {
|
||||||
|
echo json_encode(['status' => 'error', 'message' => 'Exclusion paths required']);
|
||||||
|
exit(1);
|
||||||
|
}
|
||||||
|
// For Virtuozzo LLSMP, we would need to modify the server configuration
|
||||||
|
// This is a placeholder - actual implementation depends on how Virtuozzo manages LiteSpeed config
|
||||||
|
echo json_encode(['status' => 'success', 'message' => "Cache exclusions would be set to: {$value} (placeholder - needs Virtuozzo-specific implementation)"]);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'version':
|
||||||
|
$version = get_lsws_version();
|
||||||
|
echo json_encode(['status' => 'success', 'version' => $version, 'message' => "LiteSpeed Web Server version {$version}"]);
|
||||||
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
echo json_encode([
|
echo json_encode([
|
||||||
'status' => 'error',
|
'status' => 'error',
|
||||||
'message' => 'Invalid action. Available actions: start, stop, restart, reload, status, purge, enable-cache, disable-cache'
|
'message' => 'Invalid action. Available actions: start, stop, restart, reload, status, purge, enable-cache, disable-cache, set-ttl, set-exclusions, version'
|
||||||
]);
|
]);
|
||||||
exit(1);
|
exit(1);
|
||||||
}
|
}
|
Loading…
Reference in New Issue