2019-08-05 04:27:27 +02:00
|
|
|
import os
|
|
|
|
|
import shutil
|
|
|
|
|
|
2019-09-02 04:37:13 +02:00
|
|
|
from cement.core.controller import CementBaseController, expose
|
2019-09-04 20:36:15 +02:00
|
|
|
|
2019-10-30 04:23:20 +01:00
|
|
|
from wo.cli.plugins.stack_pref import post_pref, pre_pref, pre_stack
|
2019-08-05 04:27:27 +02:00
|
|
|
from wo.core.aptget import WOAptGet
|
|
|
|
|
from wo.core.download import WODownload
|
|
|
|
|
from wo.core.extract import WOExtract
|
2018-11-13 21:55:59 +01:00
|
|
|
from wo.core.fileutils import WOFileUtils
|
2019-08-05 04:27:27 +02:00
|
|
|
from wo.core.logging import Log
|
2018-11-13 21:55:59 +01:00
|
|
|
from wo.core.shellexec import WOShellExec
|
2019-10-02 13:13:32 +02:00
|
|
|
from wo.core.variables import WOVar
|
2020-01-14 16:26:25 +01:00
|
|
|
from wo.core.services import WOService
|
2024-06-07 16:51:53 +02:00
|
|
|
from wo.core.mysql import WOMysql
|
2018-11-13 21:55:59 +01:00
|
|
|
|
|
|
|
|
|
|
|
|
|
class WOStackUpgradeController(CementBaseController):
|
|
|
|
|
class Meta:
|
|
|
|
|
label = 'upgrade'
|
|
|
|
|
stacked_on = 'stack'
|
|
|
|
|
stacked_type = 'nested'
|
|
|
|
|
description = ('Upgrade stack safely')
|
|
|
|
|
arguments = [
|
|
|
|
|
(['--all'],
|
|
|
|
|
dict(help='Upgrade all stack', action='store_true')),
|
|
|
|
|
(['--web'],
|
|
|
|
|
dict(help='Upgrade web stack', action='store_true')),
|
|
|
|
|
(['--admin'],
|
|
|
|
|
dict(help='Upgrade admin tools stack', action='store_true')),
|
2019-12-04 23:34:03 +01:00
|
|
|
(['--security'],
|
|
|
|
|
dict(help='Upgrade security stack', action='store_true')),
|
2018-11-13 21:55:59 +01:00
|
|
|
(['--nginx'],
|
feat: convert WordOps from Nginx to OpenLiteSpeed + LSPHP + LSCache
Complete conversion of the WordOps stack from Nginx + PHP-FPM to
OpenLiteSpeed + LSPHP + LSCache. This is a full rewrite across all 7
phases of the codebase:
- Foundation: OLS paths, variables, services, removed pynginxconfig dep
- Templates: 11 new OLS mustache templates, removed nginx-specific ones
- Stack: stack_pref, stack, stack_services, stack_upgrade, stack_migrate
- Site: site_functions, site, site_create, site_update
- Plugins: debug, info, log, clean rewritten for OLS
- SSL/ACME: acme.sh deploy uses lswsctrl, OLS vhssl blocks
- Other: secure, backup, clone, install script
Additional features:
- Debian 13 (trixie) support
- PHP 8.5 support
- WP Fort Knox mu-plugin integration (wo secure --lockdown/--unlock)
- --nginx CLI flag preserved for backward compatibility
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-08 18:55:16 +01:00
|
|
|
dict(help='Upgrade OpenLiteSpeed stack', action='store_true')),
|
2018-11-13 21:55:59 +01:00
|
|
|
(['--php'],
|
2023-09-19 18:33:59 +02:00
|
|
|
dict(help='Upgrade PHP stack', action='store_true')),
|
2018-11-13 21:55:59 +01:00
|
|
|
(['--mysql'],
|
|
|
|
|
dict(help='Upgrade MySQL stack', action='store_true')),
|
2020-10-28 12:25:09 +01:00
|
|
|
(['--mariadb'],
|
|
|
|
|
dict(help='Upgrade MySQL stack alias',
|
|
|
|
|
action='store_true')),
|
2018-11-13 21:55:59 +01:00
|
|
|
(['--wpcli'],
|
|
|
|
|
dict(help='Upgrade WPCLI', action='store_true')),
|
|
|
|
|
(['--redis'],
|
|
|
|
|
dict(help='Upgrade Redis', action='store_true')),
|
2019-07-13 15:15:52 +02:00
|
|
|
(['--netdata'],
|
|
|
|
|
dict(help='Upgrade Netdata', action='store_true')),
|
2019-12-04 23:34:03 +01:00
|
|
|
(['--fail2ban'],
|
|
|
|
|
dict(help='Upgrade Fail2Ban', action='store_true')),
|
2019-08-16 14:53:39 +02:00
|
|
|
(['--dashboard'],
|
|
|
|
|
dict(help='Upgrade WordOps Dashboard', action='store_true')),
|
2019-07-17 03:08:03 +02:00
|
|
|
(['--composer'],
|
|
|
|
|
dict(help='Upgrade Composer', action='store_true')),
|
2019-12-03 19:48:18 +01:00
|
|
|
(['--mysqltuner'],
|
feat: convert WordOps from Nginx to OpenLiteSpeed + LSPHP + LSCache
Complete conversion of the WordOps stack from Nginx + PHP-FPM to
OpenLiteSpeed + LSPHP + LSCache. This is a full rewrite across all 7
phases of the codebase:
- Foundation: OLS paths, variables, services, removed pynginxconfig dep
- Templates: 11 new OLS mustache templates, removed nginx-specific ones
- Stack: stack_pref, stack, stack_services, stack_upgrade, stack_migrate
- Site: site_functions, site, site_create, site_update
- Plugins: debug, info, log, clean rewritten for OLS
- SSL/ACME: acme.sh deploy uses lswsctrl, OLS vhssl blocks
- Other: secure, backup, clone, install script
Additional features:
- Debian 13 (trixie) support
- PHP 8.5 support
- WP Fort Knox mu-plugin integration (wo secure --lockdown/--unlock)
- --nginx CLI flag preserved for backward compatibility
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-08 18:55:16 +01:00
|
|
|
dict(help='Upgrade MySQLTuner', action='store_true')),
|
2019-07-14 22:50:34 +02:00
|
|
|
(['--phpmyadmin'],
|
|
|
|
|
dict(help='Upgrade phpMyAdmin', action='store_true')),
|
2019-12-03 19:48:18 +01:00
|
|
|
(['--adminer'],
|
|
|
|
|
dict(help='Upgrade Adminer', action='store_true')),
|
2018-11-13 21:55:59 +01:00
|
|
|
(['--no-prompt'],
|
|
|
|
|
dict(help="Upgrade Packages without any prompt",
|
|
|
|
|
action='store_true')),
|
2019-08-16 00:15:34 +02:00
|
|
|
(['--force'],
|
|
|
|
|
dict(help="Force Packages upgrade without any prompt",
|
|
|
|
|
action='store_true')),
|
2019-03-19 16:58:35 +01:00
|
|
|
]
|
2023-08-12 14:44:56 +02:00
|
|
|
for php_version, php_number in WOVar.wo_php_versions.items():
|
|
|
|
|
arguments.append(([f'--{php_version}'],
|
|
|
|
|
dict(help=f'Upgrade PHP {php_number} stack',
|
|
|
|
|
action='store_true')))
|
2018-11-13 21:55:59 +01:00
|
|
|
|
|
|
|
|
@expose(hide=True)
|
2019-08-31 00:59:11 +02:00
|
|
|
def default(self, disp_msg=False):
|
2018-11-13 21:55:59 +01:00
|
|
|
# All package update
|
2018-11-30 17:04:15 +01:00
|
|
|
apt_packages = []
|
|
|
|
|
packages = []
|
2019-08-31 00:59:11 +02:00
|
|
|
self.msg = []
|
2019-08-26 18:05:26 +02:00
|
|
|
pargs = self.app.pargs
|
2020-04-22 17:50:01 +02:00
|
|
|
wo_phpmyadmin = WODownload.pma_release(self)
|
2023-08-12 16:11:54 +02:00
|
|
|
if all(value is None or value is False for value in vars(pargs).values()):
|
2019-08-07 02:45:26 +02:00
|
|
|
pargs.web = True
|
2019-10-30 12:06:42 +01:00
|
|
|
pargs.admin = True
|
2019-12-04 23:34:03 +01:00
|
|
|
pargs.security = True
|
2018-11-30 17:04:15 +01:00
|
|
|
|
2020-10-28 12:25:09 +01:00
|
|
|
if pargs.mariadb:
|
|
|
|
|
pargs.mysql = True
|
|
|
|
|
|
2019-12-03 19:48:18 +01:00
|
|
|
if pargs.php:
|
2023-08-12 14:44:56 +02:00
|
|
|
if self.app.config.has_section('php'):
|
|
|
|
|
config_php_ver = self.app.config.get(
|
|
|
|
|
'php', 'version')
|
|
|
|
|
current_php = config_php_ver.replace(".", "")
|
|
|
|
|
setattr(self.app.pargs, 'php{0}'.format(current_php), True)
|
2019-12-03 19:48:18 +01:00
|
|
|
|
2019-08-07 02:45:26 +02:00
|
|
|
if pargs.all:
|
|
|
|
|
pargs.web = True
|
2019-10-30 12:06:42 +01:00
|
|
|
pargs.admin = True
|
2019-12-04 23:34:03 +01:00
|
|
|
pargs.security = True
|
2019-08-29 16:19:27 +02:00
|
|
|
pargs.redis = True
|
2018-11-30 17:04:15 +01:00
|
|
|
|
2019-08-07 02:45:26 +02:00
|
|
|
if pargs.web:
|
2019-10-30 12:06:42 +01:00
|
|
|
pargs.nginx = True
|
2019-12-03 19:48:18 +01:00
|
|
|
pargs.php74 = True
|
2022-01-23 15:14:24 -03:00
|
|
|
pargs.php80 = True
|
|
|
|
|
pargs.php81 = True
|
2022-12-10 10:37:20 -03:00
|
|
|
pargs.php82 = True
|
2023-11-23 21:33:09 +01:00
|
|
|
pargs.php83 = True
|
2024-12-03 14:08:19 +01:00
|
|
|
pargs.php84 = True
|
feat: convert WordOps from Nginx to OpenLiteSpeed + LSPHP + LSCache
Complete conversion of the WordOps stack from Nginx + PHP-FPM to
OpenLiteSpeed + LSPHP + LSCache. This is a full rewrite across all 7
phases of the codebase:
- Foundation: OLS paths, variables, services, removed pynginxconfig dep
- Templates: 11 new OLS mustache templates, removed nginx-specific ones
- Stack: stack_pref, stack, stack_services, stack_upgrade, stack_migrate
- Site: site_functions, site, site_create, site_update
- Plugins: debug, info, log, clean rewritten for OLS
- SSL/ACME: acme.sh deploy uses lswsctrl, OLS vhssl blocks
- Other: secure, backup, clone, install script
Additional features:
- Debian 13 (trixie) support
- PHP 8.5 support
- WP Fort Knox mu-plugin integration (wo secure --lockdown/--unlock)
- --nginx CLI flag preserved for backward compatibility
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-08 18:55:16 +01:00
|
|
|
pargs.php85 = True
|
2019-08-07 02:45:26 +02:00
|
|
|
pargs.mysql = True
|
|
|
|
|
pargs.wpcli = True
|
2018-11-30 17:04:15 +01:00
|
|
|
|
2019-10-30 12:06:42 +01:00
|
|
|
if pargs.admin:
|
|
|
|
|
pargs.netdata = True
|
|
|
|
|
pargs.composer = True
|
|
|
|
|
pargs.dashboard = True
|
|
|
|
|
pargs.phpmyadmin = True
|
|
|
|
|
pargs.wpcli = True
|
2019-12-03 19:48:18 +01:00
|
|
|
pargs.adminer = True
|
|
|
|
|
pargs.mysqltuner = True
|
2019-10-30 12:06:42 +01:00
|
|
|
|
2019-12-04 23:34:03 +01:00
|
|
|
if pargs.security:
|
|
|
|
|
pargs.fail2ban = True
|
|
|
|
|
|
feat: convert WordOps from Nginx to OpenLiteSpeed + LSPHP + LSCache
Complete conversion of the WordOps stack from Nginx + PHP-FPM to
OpenLiteSpeed + LSPHP + LSCache. This is a full rewrite across all 7
phases of the codebase:
- Foundation: OLS paths, variables, services, removed pynginxconfig dep
- Templates: 11 new OLS mustache templates, removed nginx-specific ones
- Stack: stack_pref, stack, stack_services, stack_upgrade, stack_migrate
- Site: site_functions, site, site_create, site_update
- Plugins: debug, info, log, clean rewritten for OLS
- SSL/ACME: acme.sh deploy uses lswsctrl, OLS vhssl blocks
- Other: secure, backup, clone, install script
Additional features:
- Debian 13 (trixie) support
- PHP 8.5 support
- WP Fort Knox mu-plugin integration (wo secure --lockdown/--unlock)
- --nginx CLI flag preserved for backward compatibility
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-08 18:55:16 +01:00
|
|
|
# OpenLiteSpeed
|
2019-08-07 02:45:26 +02:00
|
|
|
if pargs.nginx:
|
feat: convert WordOps from Nginx to OpenLiteSpeed + LSPHP + LSCache
Complete conversion of the WordOps stack from Nginx + PHP-FPM to
OpenLiteSpeed + LSPHP + LSCache. This is a full rewrite across all 7
phases of the codebase:
- Foundation: OLS paths, variables, services, removed pynginxconfig dep
- Templates: 11 new OLS mustache templates, removed nginx-specific ones
- Stack: stack_pref, stack, stack_services, stack_upgrade, stack_migrate
- Site: site_functions, site, site_create, site_update
- Plugins: debug, info, log, clean rewritten for OLS
- SSL/ACME: acme.sh deploy uses lswsctrl, OLS vhssl blocks
- Other: secure, backup, clone, install script
Additional features:
- Debian 13 (trixie) support
- PHP 8.5 support
- WP Fort Knox mu-plugin integration (wo secure --lockdown/--unlock)
- --nginx CLI flag preserved for backward compatibility
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-08 18:55:16 +01:00
|
|
|
if WOAptGet.is_installed(self, 'openlitespeed'):
|
|
|
|
|
apt_packages = apt_packages + WOVar.wo_ols
|
2018-11-30 17:04:15 +01:00
|
|
|
else:
|
feat: convert WordOps from Nginx to OpenLiteSpeed + LSPHP + LSCache
Complete conversion of the WordOps stack from Nginx + PHP-FPM to
OpenLiteSpeed + LSPHP + LSCache. This is a full rewrite across all 7
phases of the codebase:
- Foundation: OLS paths, variables, services, removed pynginxconfig dep
- Templates: 11 new OLS mustache templates, removed nginx-specific ones
- Stack: stack_pref, stack, stack_services, stack_upgrade, stack_migrate
- Site: site_functions, site, site_create, site_update
- Plugins: debug, info, log, clean rewritten for OLS
- SSL/ACME: acme.sh deploy uses lswsctrl, OLS vhssl blocks
- Other: secure, backup, clone, install script
Additional features:
- Debian 13 (trixie) support
- PHP 8.5 support
- WP Fort Knox mu-plugin integration (wo secure --lockdown/--unlock)
- --nginx CLI flag preserved for backward compatibility
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-08 18:55:16 +01:00
|
|
|
if os.path.isfile('/usr/local/lsws/bin/openlitespeed'):
|
|
|
|
|
Log.info(self, "Updating OpenLiteSpeed templates")
|
|
|
|
|
post_pref(self, WOVar.wo_ols, [])
|
2019-09-27 14:15:00 +02:00
|
|
|
else:
|
feat: convert WordOps from Nginx to OpenLiteSpeed + LSPHP + LSCache
Complete conversion of the WordOps stack from Nginx + PHP-FPM to
OpenLiteSpeed + LSPHP + LSCache. This is a full rewrite across all 7
phases of the codebase:
- Foundation: OLS paths, variables, services, removed pynginxconfig dep
- Templates: 11 new OLS mustache templates, removed nginx-specific ones
- Stack: stack_pref, stack, stack_services, stack_upgrade, stack_migrate
- Site: site_functions, site, site_create, site_update
- Plugins: debug, info, log, clean rewritten for OLS
- SSL/ACME: acme.sh deploy uses lswsctrl, OLS vhssl blocks
- Other: secure, backup, clone, install script
Additional features:
- Debian 13 (trixie) support
- PHP 8.5 support
- WP Fort Knox mu-plugin integration (wo secure --lockdown/--unlock)
- --nginx CLI flag preserved for backward compatibility
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-08 18:55:16 +01:00
|
|
|
Log.info(self, "OpenLiteSpeed is not already installed")
|
2018-11-30 17:04:15 +01:00
|
|
|
|
2023-08-12 14:44:56 +02:00
|
|
|
wo_vars = {
|
|
|
|
|
'php74': WOVar.wo_php74,
|
|
|
|
|
'php80': WOVar.wo_php80,
|
|
|
|
|
'php81': WOVar.wo_php81,
|
|
|
|
|
'php82': WOVar.wo_php82,
|
2023-11-23 21:33:09 +01:00
|
|
|
'php83': WOVar.wo_php83,
|
2024-12-03 14:08:19 +01:00
|
|
|
'php84': WOVar.wo_php84,
|
feat: convert WordOps from Nginx to OpenLiteSpeed + LSPHP + LSCache
Complete conversion of the WordOps stack from Nginx + PHP-FPM to
OpenLiteSpeed + LSPHP + LSCache. This is a full rewrite across all 7
phases of the codebase:
- Foundation: OLS paths, variables, services, removed pynginxconfig dep
- Templates: 11 new OLS mustache templates, removed nginx-specific ones
- Stack: stack_pref, stack, stack_services, stack_upgrade, stack_migrate
- Site: site_functions, site, site_create, site_update
- Plugins: debug, info, log, clean rewritten for OLS
- SSL/ACME: acme.sh deploy uses lswsctrl, OLS vhssl blocks
- Other: secure, backup, clone, install script
Additional features:
- Debian 13 (trixie) support
- PHP 8.5 support
- WP Fort Knox mu-plugin integration (wo secure --lockdown/--unlock)
- --nginx CLI flag preserved for backward compatibility
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-08 18:55:16 +01:00
|
|
|
'php85': WOVar.wo_php85,
|
2023-08-12 14:44:56 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
for parg_version, version in WOVar.wo_php_versions.items():
|
|
|
|
|
if getattr(pargs, parg_version, False):
|
feat: convert WordOps from Nginx to OpenLiteSpeed + LSPHP + LSCache
Complete conversion of the WordOps stack from Nginx + PHP-FPM to
OpenLiteSpeed + LSPHP + LSCache. This is a full rewrite across all 7
phases of the codebase:
- Foundation: OLS paths, variables, services, removed pynginxconfig dep
- Templates: 11 new OLS mustache templates, removed nginx-specific ones
- Stack: stack_pref, stack, stack_services, stack_upgrade, stack_migrate
- Site: site_functions, site, site_create, site_update
- Plugins: debug, info, log, clean rewritten for OLS
- SSL/ACME: acme.sh deploy uses lswsctrl, OLS vhssl blocks
- Other: secure, backup, clone, install script
Additional features:
- Debian 13 (trixie) support
- PHP 8.5 support
- WP Fort Knox mu-plugin integration (wo secure --lockdown/--unlock)
- --nginx CLI flag preserved for backward compatibility
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-08 18:55:16 +01:00
|
|
|
short_ver = version.replace('.', '')
|
2023-08-12 14:44:56 +02:00
|
|
|
Log.debug(self, f"Setting apt_packages variable for PHP {version}")
|
feat: convert WordOps from Nginx to OpenLiteSpeed + LSPHP + LSCache
Complete conversion of the WordOps stack from Nginx + PHP-FPM to
OpenLiteSpeed + LSPHP + LSCache. This is a full rewrite across all 7
phases of the codebase:
- Foundation: OLS paths, variables, services, removed pynginxconfig dep
- Templates: 11 new OLS mustache templates, removed nginx-specific ones
- Stack: stack_pref, stack, stack_services, stack_upgrade, stack_migrate
- Site: site_functions, site, site_create, site_update
- Plugins: debug, info, log, clean rewritten for OLS
- SSL/ACME: acme.sh deploy uses lswsctrl, OLS vhssl blocks
- Other: secure, backup, clone, install script
Additional features:
- Debian 13 (trixie) support
- PHP 8.5 support
- WP Fort Knox mu-plugin integration (wo secure --lockdown/--unlock)
- --nginx CLI flag preserved for backward compatibility
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-08 18:55:16 +01:00
|
|
|
if WOAptGet.is_installed(self, f'lsphp{short_ver}'):
|
2023-08-12 14:44:56 +02:00
|
|
|
apt_packages = apt_packages + wo_vars[parg_version] + WOVar.wo_php_extra
|
|
|
|
|
else:
|
|
|
|
|
Log.debug(self, f"PHP {version} not installed")
|
|
|
|
|
Log.info(self, f"PHP {version} not installed")
|
2022-12-10 10:37:20 -03:00
|
|
|
|
2019-10-30 12:06:42 +01:00
|
|
|
# mysql
|
2019-08-07 02:45:26 +02:00
|
|
|
if pargs.mysql:
|
2024-06-07 16:51:53 +02:00
|
|
|
if WOMysql.mariadb_ping(self):
|
2019-09-04 16:55:58 +02:00
|
|
|
apt_packages = apt_packages + ['mariadb-server']
|
2018-11-30 17:04:15 +01:00
|
|
|
|
2019-10-30 12:06:42 +01:00
|
|
|
# redis
|
2019-08-07 02:45:26 +02:00
|
|
|
if pargs.redis:
|
2018-11-30 17:04:15 +01:00
|
|
|
if WOAptGet.is_installed(self, 'redis-server'):
|
2019-09-04 16:55:58 +02:00
|
|
|
apt_packages = apt_packages + ['redis-server']
|
2018-11-30 17:04:15 +01:00
|
|
|
|
2019-12-04 23:34:03 +01:00
|
|
|
# fail2ban
|
|
|
|
|
if pargs.fail2ban:
|
|
|
|
|
if WOAptGet.is_installed(self, 'fail2ban'):
|
|
|
|
|
apt_packages = apt_packages + ['fail2ban']
|
|
|
|
|
|
2019-10-30 12:06:42 +01:00
|
|
|
# wp-cli
|
2019-08-07 02:45:26 +02:00
|
|
|
if pargs.wpcli:
|
2019-03-04 07:12:57 +01:00
|
|
|
if os.path.isfile('/usr/local/bin/wp'):
|
2024-05-31 22:22:08 +02:00
|
|
|
packages = packages + [[f"{WOVar.wpcli_url}",
|
|
|
|
|
"/usr/local/bin/wp",
|
|
|
|
|
"WP-CLI"]]
|
2018-11-30 17:04:15 +01:00
|
|
|
else:
|
|
|
|
|
Log.info(self, "WPCLI is not installed with WordOps")
|
|
|
|
|
|
2019-10-30 12:06:42 +01:00
|
|
|
# netdata
|
2019-08-07 02:45:26 +02:00
|
|
|
if pargs.netdata:
|
2019-10-30 12:06:42 +01:00
|
|
|
# detect static binaries install
|
2022-09-13 15:53:07 +02:00
|
|
|
if (os.path.isdir('/opt/netdata') or
|
|
|
|
|
os.path.isdir('/etc/netdata')):
|
2019-10-30 12:06:42 +01:00
|
|
|
packages = packages + [[
|
2024-05-31 22:22:08 +02:00
|
|
|
f"{WOVar.netdata_script_url}",
|
2019-10-30 12:06:42 +01:00
|
|
|
'/var/lib/wo/tmp/kickstart.sh', 'Netdata']]
|
|
|
|
|
else:
|
2019-11-18 13:30:43 +01:00
|
|
|
Log.info(self, 'Netdata is not installed')
|
2019-08-16 14:53:39 +02:00
|
|
|
|
2019-10-30 12:06:42 +01:00
|
|
|
# wordops dashboard
|
2019-08-16 14:53:39 +02:00
|
|
|
if pargs.dashboard:
|
2019-09-22 14:11:12 +02:00
|
|
|
if (os.path.isfile('/var/www/22222/htdocs/index.php') or
|
|
|
|
|
os.path.isfile('/var/www/22222/htdocs/index.html')):
|
2019-10-30 12:06:42 +01:00
|
|
|
packages = packages + [[
|
|
|
|
|
"https://github.com/WordOps/wordops-dashboard/"
|
|
|
|
|
"releases/download/v{0}/wordops-dashboard.tar.gz"
|
|
|
|
|
.format(WOVar.wo_dashboard),
|
|
|
|
|
"/var/lib/wo/tmp/wo-dashboard.tar.gz",
|
|
|
|
|
"WordOps Dashboard"]]
|
|
|
|
|
else:
|
|
|
|
|
Log.info(self, 'WordOps dashboard is not installed')
|
2019-08-16 14:53:39 +02:00
|
|
|
|
2019-10-30 12:06:42 +01:00
|
|
|
# phpmyadmin
|
2019-08-07 02:45:26 +02:00
|
|
|
if pargs.phpmyadmin:
|
2019-07-14 22:50:34 +02:00
|
|
|
if os.path.isdir('/var/www/22222/htdocs/db/pma'):
|
2019-10-30 12:06:42 +01:00
|
|
|
packages = packages + [[
|
|
|
|
|
"https://files.phpmyadmin.net"
|
|
|
|
|
"/phpMyAdmin/{0}/phpMyAdmin-{0}-"
|
|
|
|
|
"all-languages.tar.gz"
|
2020-04-22 17:50:01 +02:00
|
|
|
.format(wo_phpmyadmin),
|
2019-10-30 12:06:42 +01:00
|
|
|
"/var/lib/wo/tmp/pma.tar.gz",
|
|
|
|
|
"PHPMyAdmin"]]
|
2019-07-14 22:50:34 +02:00
|
|
|
else:
|
2019-10-18 10:49:06 +02:00
|
|
|
Log.info(self, "phpMyAdmin isn't installed")
|
2019-07-13 15:15:52 +02:00
|
|
|
|
2019-12-03 19:48:18 +01:00
|
|
|
# adminer
|
|
|
|
|
if pargs.adminer:
|
|
|
|
|
if os.path.isfile("{0}22222/htdocs/db/"
|
|
|
|
|
"adminer/index.php"
|
|
|
|
|
.format(WOVar.wo_webroot)):
|
|
|
|
|
Log.debug(self, "Setting packages variable for Adminer ")
|
|
|
|
|
packages = packages + [[
|
2020-04-23 16:44:23 +02:00
|
|
|
"https://www.adminer.org/latest.php",
|
2019-12-03 19:48:18 +01:00
|
|
|
"{0}22222/"
|
|
|
|
|
"htdocs/db/adminer/index.php"
|
|
|
|
|
.format(WOVar.wo_webroot),
|
|
|
|
|
"Adminer"],
|
|
|
|
|
["https://raw.githubusercontent.com"
|
|
|
|
|
"/vrana/adminer/master/designs/"
|
|
|
|
|
"pepa-linha/adminer.css",
|
|
|
|
|
"{0}22222/"
|
|
|
|
|
"htdocs/db/adminer/adminer.css"
|
|
|
|
|
.format(WOVar.wo_webroot),
|
|
|
|
|
"Adminer theme"]]
|
|
|
|
|
else:
|
|
|
|
|
Log.debug(self, "Adminer isn't installed")
|
|
|
|
|
Log.info(self, "Adminer isn't installed")
|
|
|
|
|
|
2019-10-30 12:06:42 +01:00
|
|
|
# composer
|
2019-08-07 02:45:26 +02:00
|
|
|
if pargs.composer:
|
2019-07-16 17:15:17 +02:00
|
|
|
if os.path.isfile('/usr/local/bin/composer'):
|
2019-10-28 09:09:28 +01:00
|
|
|
packages = packages + [[
|
|
|
|
|
"https://getcomposer.org/installer",
|
|
|
|
|
"/var/lib/wo/tmp/composer-install",
|
|
|
|
|
"Composer"]]
|
2019-07-16 17:15:17 +02:00
|
|
|
else:
|
2019-10-18 10:49:06 +02:00
|
|
|
Log.info(self, "Composer isn't installed")
|
2019-09-06 02:34:33 +02:00
|
|
|
|
2019-12-03 19:48:18 +01:00
|
|
|
# mysqltuner
|
|
|
|
|
if pargs.mysqltuner:
|
|
|
|
|
if WOAptGet.is_exec(self, 'mysqltuner'):
|
|
|
|
|
Log.debug(self, "Setting packages variable "
|
|
|
|
|
"for MySQLTuner ")
|
|
|
|
|
packages = packages + [["https://raw."
|
|
|
|
|
"githubusercontent.com/"
|
|
|
|
|
"major/MySQLTuner-perl"
|
|
|
|
|
"/master/mysqltuner.pl",
|
|
|
|
|
"/usr/bin/mysqltuner",
|
|
|
|
|
"MySQLTuner"]]
|
|
|
|
|
|
2022-09-13 15:22:09 +02:00
|
|
|
if not apt_packages and not packages:
|
2019-09-06 02:34:33 +02:00
|
|
|
self.app.args.print_help()
|
|
|
|
|
else:
|
2019-10-30 04:23:20 +01:00
|
|
|
pre_stack(self)
|
2022-09-13 15:22:09 +02:00
|
|
|
if apt_packages:
|
feat: convert WordOps from Nginx to OpenLiteSpeed + LSPHP + LSCache
Complete conversion of the WordOps stack from Nginx + PHP-FPM to
OpenLiteSpeed + LSPHP + LSCache. This is a full rewrite across all 7
phases of the codebase:
- Foundation: OLS paths, variables, services, removed pynginxconfig dep
- Templates: 11 new OLS mustache templates, removed nginx-specific ones
- Stack: stack_pref, stack, stack_services, stack_upgrade, stack_migrate
- Site: site_functions, site, site_create, site_update
- Plugins: debug, info, log, clean rewritten for OLS
- SSL/ACME: acme.sh deploy uses lswsctrl, OLS vhssl blocks
- Other: secure, backup, clone, install script
Additional features:
- Debian 13 (trixie) support
- PHP 8.5 support
- WP Fort Knox mu-plugin integration (wo secure --lockdown/--unlock)
- --nginx CLI flag preserved for backward compatibility
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-08 18:55:16 +01:00
|
|
|
# Check if critical packages are being upgraded
|
|
|
|
|
has_critical = False
|
|
|
|
|
for pkg in apt_packages:
|
|
|
|
|
if pkg in ['openlitespeed', 'redis-server',
|
|
|
|
|
'mariadb-server'] or pkg.startswith('lsphp'):
|
|
|
|
|
has_critical = True
|
|
|
|
|
break
|
|
|
|
|
if has_critical:
|
2019-12-04 23:34:03 +01:00
|
|
|
Log.warn(
|
2019-10-08 02:19:22 +02:00
|
|
|
self, "Your sites may be down for few seconds if "
|
feat: convert WordOps from Nginx to OpenLiteSpeed + LSPHP + LSCache
Complete conversion of the WordOps stack from Nginx + PHP-FPM to
OpenLiteSpeed + LSPHP + LSCache. This is a full rewrite across all 7
phases of the codebase:
- Foundation: OLS paths, variables, services, removed pynginxconfig dep
- Templates: 11 new OLS mustache templates, removed nginx-specific ones
- Stack: stack_pref, stack, stack_services, stack_upgrade, stack_migrate
- Site: site_functions, site, site_create, site_update
- Plugins: debug, info, log, clean rewritten for OLS
- SSL/ACME: acme.sh deploy uses lswsctrl, OLS vhssl blocks
- Other: secure, backup, clone, install script
Additional features:
- Debian 13 (trixie) support
- PHP 8.5 support
- WP Fort Knox mu-plugin integration (wo secure --lockdown/--unlock)
- --nginx CLI flag preserved for backward compatibility
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-08 18:55:16 +01:00
|
|
|
"you are upgrading OpenLiteSpeed, LSPHP, "
|
|
|
|
|
"MariaDB or Redis")
|
2019-08-20 13:53:41 +02:00
|
|
|
# Check prompt
|
2019-12-04 23:34:03 +01:00
|
|
|
if not (pargs.no_prompt or pargs.force):
|
2019-08-20 13:53:41 +02:00
|
|
|
start_upgrade = input("Do you want to continue:[y/N]")
|
|
|
|
|
if start_upgrade != "Y" and start_upgrade != "y":
|
|
|
|
|
Log.error(self, "Not starting package update")
|
2020-10-22 14:34:03 +02:00
|
|
|
# additional pre_pref
|
feat: convert WordOps from Nginx to OpenLiteSpeed + LSPHP + LSCache
Complete conversion of the WordOps stack from Nginx + PHP-FPM to
OpenLiteSpeed + LSPHP + LSCache. This is a full rewrite across all 7
phases of the codebase:
- Foundation: OLS paths, variables, services, removed pynginxconfig dep
- Templates: 11 new OLS mustache templates, removed nginx-specific ones
- Stack: stack_pref, stack, stack_services, stack_upgrade, stack_migrate
- Site: site_functions, site, site_create, site_update
- Plugins: debug, info, log, clean rewritten for OLS
- SSL/ACME: acme.sh deploy uses lswsctrl, OLS vhssl blocks
- Other: secure, backup, clone, install script
Additional features:
- Debian 13 (trixie) support
- PHP 8.5 support
- WP Fort Knox mu-plugin integration (wo secure --lockdown/--unlock)
- --nginx CLI flag preserved for backward compatibility
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-08 18:55:16 +01:00
|
|
|
if "openlitespeed" in apt_packages:
|
|
|
|
|
pre_pref(self, WOVar.wo_ols)
|
2019-12-04 23:34:03 +01:00
|
|
|
Log.wait(self, "Updating APT cache")
|
2019-08-20 13:53:41 +02:00
|
|
|
# apt-get update
|
|
|
|
|
WOAptGet.update(self)
|
2019-12-04 23:34:03 +01:00
|
|
|
Log.valide(self, "Updating APT cache")
|
2019-09-06 02:34:33 +02:00
|
|
|
|
2020-10-17 01:48:50 +02:00
|
|
|
# redis pre_pref
|
|
|
|
|
if "redis-server" in apt_packages:
|
|
|
|
|
pre_pref(self, WOVar.wo_redis)
|
2020-10-23 12:50:31 +02:00
|
|
|
# upgrade packages
|
2019-08-20 13:53:41 +02:00
|
|
|
WOAptGet.install(self, apt_packages)
|
2019-09-06 02:34:33 +02:00
|
|
|
Log.wait(self, "Configuring APT Packages")
|
2019-09-03 19:02:00 +02:00
|
|
|
post_pref(self, apt_packages, [], True)
|
2019-09-06 02:34:33 +02:00
|
|
|
Log.valide(self, "Configuring APT Packages")
|
2019-08-20 13:53:41 +02:00
|
|
|
# Post Actions after package updates
|
2019-07-16 17:15:17 +02:00
|
|
|
|
2022-09-13 15:22:09 +02:00
|
|
|
if packages:
|
2019-12-03 19:48:18 +01:00
|
|
|
if WOAptGet.is_selected(self, 'WP-CLI', packages):
|
2019-08-20 13:53:41 +02:00
|
|
|
WOFileUtils.rm(self, '/usr/local/bin/wp')
|
2018-11-30 17:04:15 +01:00
|
|
|
|
2019-12-03 19:48:18 +01:00
|
|
|
if WOAptGet.is_selected(self, 'Netdata', packages):
|
2019-08-20 13:53:41 +02:00
|
|
|
WOFileUtils.rm(self, '/var/lib/wo/tmp/kickstart.sh')
|
2018-11-30 17:04:15 +01:00
|
|
|
|
2019-12-03 19:48:18 +01:00
|
|
|
if WOAptGet.is_selected(self, 'WordOps Dashboard', packages):
|
2019-09-22 14:11:12 +02:00
|
|
|
if os.path.isfile('/var/www/22222/htdocs/index.php'):
|
|
|
|
|
WOFileUtils.rm(self, '/var/www/22222/htdocs/index.php')
|
|
|
|
|
if os.path.isfile('/var/www/22222/htdocs/index.html'):
|
|
|
|
|
WOFileUtils.rm(
|
|
|
|
|
self, '/var/www/22222/htdocs/index.html')
|
2019-08-16 14:53:39 +02:00
|
|
|
|
2019-08-20 13:53:41 +02:00
|
|
|
Log.debug(self, "Downloading following: {0}".format(packages))
|
|
|
|
|
WODownload.download(self, packages)
|
2019-07-13 15:15:52 +02:00
|
|
|
|
2019-12-03 19:48:18 +01:00
|
|
|
if WOAptGet.is_selected(self, 'WP-CLI', packages):
|
2019-08-20 13:53:41 +02:00
|
|
|
WOFileUtils.chmod(self, "/usr/local/bin/wp", 0o775)
|
2018-11-30 17:04:15 +01:00
|
|
|
|
2019-12-03 19:48:18 +01:00
|
|
|
if WOAptGet.is_selected(self, 'MySQLTuner', packages):
|
|
|
|
|
WOFileUtils.chmod(self, "/usr/bin/mysqltuner", 0o775)
|
|
|
|
|
if os.path.exists('/usr/local/bin/mysqltuner'):
|
|
|
|
|
WOFileUtils.rm(self, '/usr/local/bin/mysqltuner')
|
2019-10-30 12:06:42 +01:00
|
|
|
|
|
|
|
|
# Netdata
|
2019-12-03 19:48:18 +01:00
|
|
|
if WOAptGet.is_selected(self, 'Netdata', packages):
|
2020-01-14 16:26:25 +01:00
|
|
|
WOService.stop_service(self, 'netdata')
|
2024-05-31 22:22:08 +02:00
|
|
|
if os.path.exists('/opt/netdata/usr/libexec/netdata/netdata-uninstaller.sh'):
|
|
|
|
|
WOShellExec.cmd_exec(self,
|
|
|
|
|
"/opt/netdata/usr/libexec/"
|
|
|
|
|
"netdata/netdata-uninstaller.sh --yes --force",
|
|
|
|
|
log=False)
|
2019-09-06 02:34:33 +02:00
|
|
|
Log.wait(self, "Upgrading Netdata")
|
2019-10-30 12:06:42 +01:00
|
|
|
# detect static binaries install
|
2020-01-14 16:26:25 +01:00
|
|
|
WOShellExec.cmd_exec(
|
|
|
|
|
self,
|
|
|
|
|
"bash /var/lib/wo/tmp/kickstart.sh "
|
2023-08-13 11:59:20 +02:00
|
|
|
"--dont-wait --no-updates --stable-channel "
|
|
|
|
|
"--reinstall-even-if-unsafe",
|
2020-01-14 16:26:25 +01:00
|
|
|
errormsg='', log=False)
|
2019-09-06 02:34:33 +02:00
|
|
|
Log.valide(self, "Upgrading Netdata")
|
2018-11-30 17:04:15 +01:00
|
|
|
|
2019-12-03 19:48:18 +01:00
|
|
|
if WOAptGet.is_selected(self, 'WordOps Dashboard', packages):
|
2019-09-22 14:11:12 +02:00
|
|
|
post_pref(
|
|
|
|
|
self, [], [["https://github.com/WordOps"
|
|
|
|
|
"/wordops-dashboard/"
|
|
|
|
|
"releases/download/v{0}/"
|
|
|
|
|
"wordops-dashboard.tar.gz"
|
2019-10-02 13:13:32 +02:00
|
|
|
.format(WOVar.wo_dashboard),
|
2019-09-22 14:11:12 +02:00
|
|
|
"/var/lib/wo/tmp/wo-dashboard.tar.gz",
|
|
|
|
|
"WordOps Dashboard"]])
|
2019-07-16 17:15:17 +02:00
|
|
|
|
2019-12-03 19:48:18 +01:00
|
|
|
if WOAptGet.is_selected(self, 'Composer', packages):
|
2019-09-22 14:11:12 +02:00
|
|
|
Log.wait(self, "Upgrading Composer")
|
2019-10-30 12:06:42 +01:00
|
|
|
if WOShellExec.cmd_exec(
|
|
|
|
|
self, '/usr/bin/php -v'):
|
|
|
|
|
WOShellExec.cmd_exec(
|
|
|
|
|
self, "php -q /var/lib/wo"
|
|
|
|
|
"/tmp/composer-install "
|
|
|
|
|
"--install-dir=/var/lib/wo/tmp/")
|
2019-08-20 13:53:41 +02:00
|
|
|
shutil.copyfile('/var/lib/wo/tmp/composer.phar',
|
|
|
|
|
'/usr/local/bin/composer')
|
|
|
|
|
WOFileUtils.chmod(self, "/usr/local/bin/composer", 0o775)
|
2019-09-06 02:34:33 +02:00
|
|
|
Log.valide(self, "Upgrading Composer ")
|
2019-08-16 14:53:39 +02:00
|
|
|
|
2019-12-03 19:48:18 +01:00
|
|
|
if WOAptGet.is_selected(self, 'PHPMyAdmin', packages):
|
2019-09-22 14:11:12 +02:00
|
|
|
Log.wait(self, "Upgrading phpMyAdmin")
|
2019-08-20 13:53:41 +02:00
|
|
|
WOExtract.extract(self, '/var/lib/wo/tmp/pma.tar.gz',
|
|
|
|
|
'/var/lib/wo/tmp/')
|
|
|
|
|
shutil.copyfile(('{0}22222/htdocs/db/pma'
|
|
|
|
|
'/config.inc.php'
|
2019-10-02 13:13:32 +02:00
|
|
|
.format(WOVar.wo_webroot)),
|
2019-08-20 13:53:41 +02:00
|
|
|
('/var/lib/wo/tmp/phpMyAdmin-{0}'
|
|
|
|
|
'-all-languages/config.inc.php'
|
2020-04-22 17:50:01 +02:00
|
|
|
.format(wo_phpmyadmin))
|
2019-08-20 13:53:41 +02:00
|
|
|
)
|
|
|
|
|
WOFileUtils.rm(self, '{0}22222/htdocs/db/pma'
|
2019-10-02 13:13:32 +02:00
|
|
|
.format(WOVar.wo_webroot))
|
2019-08-20 13:53:41 +02:00
|
|
|
shutil.move('/var/lib/wo/tmp/phpMyAdmin-{0}'
|
|
|
|
|
'-all-languages/'
|
2020-04-22 17:50:01 +02:00
|
|
|
.format(wo_phpmyadmin),
|
2019-08-20 13:53:41 +02:00
|
|
|
'{0}22222/htdocs/db/pma/'
|
2019-10-02 13:13:32 +02:00
|
|
|
.format(WOVar.wo_webroot))
|
2019-08-20 13:53:41 +02:00
|
|
|
WOFileUtils.chown(self, "{0}22222/htdocs"
|
2019-10-02 13:13:32 +02:00
|
|
|
.format(WOVar.wo_webroot),
|
2019-09-06 02:34:33 +02:00
|
|
|
'www-data',
|
|
|
|
|
'www-data', recursive=True)
|
2019-09-22 14:11:12 +02:00
|
|
|
Log.valide(self, "Upgrading phpMyAdmin")
|
2019-12-03 19:48:18 +01:00
|
|
|
if os.path.exists('{0}22222/htdocs'.format(WOVar.wo_webroot)):
|
|
|
|
|
WOFileUtils.chown(self, "{0}22222/htdocs"
|
|
|
|
|
.format(WOVar.wo_webroot),
|
|
|
|
|
'www-data',
|
|
|
|
|
'www-data', recursive=True)
|
2019-07-13 15:15:52 +02:00
|
|
|
|
2018-11-30 17:04:15 +01:00
|
|
|
Log.info(self, "Successfully updated packages")
|