Merge pull request #413 from janiosarmento/issue348

#348: PHP8
This commit is contained in:
VirtuBox
2022-01-24 12:15:31 +01:00
committed by GitHub
11 changed files with 942 additions and 44 deletions

View File

@@ -607,7 +607,7 @@ class WODebugController(CementBaseController):
self.debug_fpm73() self.debug_fpm73()
if self.app.pargs.mysql: if self.app.pargs.mysql:
# MySQL debug will not work for remote MySQL # MySQL debug will not work for remote MySQL
if WOVar.wo_mysql_host is "localhost": if WOVar.wo_mysql_host == "localhost":
self.app.pargs.mysql = 'off' self.app.pargs.mysql = 'off'
self.debug_mysql() self.debug_mysql()
else: else:

View File

@@ -35,6 +35,12 @@ class WOInfoController(CementBaseController):
(['--php74'], (['--php74'],
dict(help='Get PHP 7.4 configuration information', dict(help='Get PHP 7.4 configuration information',
action='store_true')), action='store_true')),
(['--php80'],
dict(help='Get PHP 8.0 configuration information',
action='store_true')),
(['--php81'],
dict(help='Get PHP 8.1 configuration information',
action='store_true')),
(['--nginx'], (['--nginx'],
dict(help='Get Nginx configuration information', dict(help='Get Nginx configuration information',
action='store_true')), action='store_true')),
@@ -328,6 +334,180 @@ class WOInfoController(CementBaseController):
debug_xdebug_profiler_enable_trigger=debug_xdebug) debug_xdebug_profiler_enable_trigger=debug_xdebug)
self.app.render((data), 'info_php.mustache') self.app.render((data), 'info_php.mustache')
@expose(hide=True)
def info_php80(self):
"""Display PHP information"""
version = os.popen("/usr/bin/php8.0 -v 2>/dev/null | "
"head -n1 | cut -d' ' -f2 |"
" cut -d'+' -f1 | tr -d '\n'").read
config = configparser.ConfigParser()
config.read('/etc/php/8.0/fpm/php.ini')
expose_php = config['PHP']['expose_php']
memory_limit = config['PHP']['memory_limit']
post_max_size = config['PHP']['post_max_size']
upload_max_filesize = config['PHP']['upload_max_filesize']
max_execution_time = config['PHP']['max_execution_time']
if os.path.exists('/etc/php/8.0/fpm/pool.d/www.conf'):
config.read('/etc/php/8.0/fpm/pool.d/www.conf')
else:
Log.error(self, 'php-fpm pool config not found')
if config.has_section('www'):
wconfig = config['www']
elif config.has_section('www-php80'):
wconfig = config['www-php80']
else:
Log.error(self, 'Unable to parse configuration')
www_listen = wconfig['listen']
www_ping_path = wconfig['ping.path']
www_pm_status_path = wconfig['pm.status_path']
www_pm = wconfig['pm']
www_pm_max_requests = wconfig['pm.max_requests']
www_pm_max_children = wconfig['pm.max_children']
www_pm_start_servers = wconfig['pm.start_servers']
www_pm_min_spare_servers = wconfig['pm.min_spare_servers']
www_pm_max_spare_servers = wconfig['pm.max_spare_servers']
www_request_terminate_time = (wconfig
['request_terminate_timeout'])
try:
www_xdebug = (wconfig
['php_admin_flag[xdebug.profiler_enable'
'_trigger]'])
except Exception as e:
Log.debug(self, "{0}".format(e))
www_xdebug = 'off'
config.read('/etc/php/8.0/fpm/pool.d/debug.conf')
debug_listen = config['debug']['listen']
debug_ping_path = config['debug']['ping.path']
debug_pm_status_path = config['debug']['pm.status_path']
debug_pm = config['debug']['pm']
debug_pm_max_requests = config['debug']['pm.max_requests']
debug_pm_max_children = config['debug']['pm.max_children']
debug_pm_start_servers = config['debug']['pm.start_servers']
debug_pm_min_spare_servers = config['debug']['pm.min_spare_servers']
debug_pm_max_spare_servers = config['debug']['pm.max_spare_servers']
debug_request_terminate = (config['debug']
['request_terminate_timeout'])
try:
debug_xdebug = (config['debug']['php_admin_flag[xdebug.profiler_'
'enable_trigger]'])
except Exception as e:
Log.debug(self, "{0}".format(e))
debug_xdebug = 'off'
data = dict(version=version, expose_php=expose_php,
memory_limit=memory_limit, post_max_size=post_max_size,
upload_max_filesize=upload_max_filesize,
max_execution_time=max_execution_time,
www_listen=www_listen, www_ping_path=www_ping_path,
www_pm_status_path=www_pm_status_path, www_pm=www_pm,
www_pm_max_requests=www_pm_max_requests,
www_pm_max_children=www_pm_max_children,
www_pm_start_servers=www_pm_start_servers,
www_pm_min_spare_servers=www_pm_min_spare_servers,
www_pm_max_spare_servers=www_pm_max_spare_servers,
www_request_terminate_timeout=www_request_terminate_time,
www_xdebug_profiler_enable_trigger=www_xdebug,
debug_listen=debug_listen, debug_ping_path=debug_ping_path,
debug_pm_status_path=debug_pm_status_path,
debug_pm=debug_pm,
debug_pm_max_requests=debug_pm_max_requests,
debug_pm_max_children=debug_pm_max_children,
debug_pm_start_servers=debug_pm_start_servers,
debug_pm_min_spare_servers=debug_pm_min_spare_servers,
debug_pm_max_spare_servers=debug_pm_max_spare_servers,
debug_request_terminate_timeout=debug_request_terminate,
debug_xdebug_profiler_enable_trigger=debug_xdebug)
self.app.render((data), 'info_php.mustache')
@expose(hide=True)
def info_php81(self):
"""Display PHP information"""
version = os.popen("/usr/bin/php8.1 -v 2>/dev/null | "
"head -n1 | cut -d' ' -f2 |"
" cut -d'+' -f1 | tr -d '\n'").read
config = configparser.ConfigParser()
config.read('/etc/php/8.1/fpm/php.ini')
expose_php = config['PHP']['expose_php']
memory_limit = config['PHP']['memory_limit']
post_max_size = config['PHP']['post_max_size']
upload_max_filesize = config['PHP']['upload_max_filesize']
max_execution_time = config['PHP']['max_execution_time']
if os.path.exists('/etc/php/8.1/fpm/pool.d/www.conf'):
config.read('/etc/php/8.1/fpm/pool.d/www.conf')
else:
Log.error(self, 'php-fpm pool config not found')
if config.has_section('www'):
wconfig = config['www']
elif config.has_section('www-php81'):
wconfig = config['www-php81']
else:
Log.error(self, 'Unable to parse configuration')
www_listen = wconfig['listen']
www_ping_path = wconfig['ping.path']
www_pm_status_path = wconfig['pm.status_path']
www_pm = wconfig['pm']
www_pm_max_requests = wconfig['pm.max_requests']
www_pm_max_children = wconfig['pm.max_children']
www_pm_start_servers = wconfig['pm.start_servers']
www_pm_min_spare_servers = wconfig['pm.min_spare_servers']
www_pm_max_spare_servers = wconfig['pm.max_spare_servers']
www_request_terminate_time = (wconfig
['request_terminate_timeout'])
try:
www_xdebug = (wconfig
['php_admin_flag[xdebug.profiler_enable'
'_trigger]'])
except Exception as e:
Log.debug(self, "{0}".format(e))
www_xdebug = 'off'
config.read('/etc/php/8.1/fpm/pool.d/debug.conf')
debug_listen = config['debug']['listen']
debug_ping_path = config['debug']['ping.path']
debug_pm_status_path = config['debug']['pm.status_path']
debug_pm = config['debug']['pm']
debug_pm_max_requests = config['debug']['pm.max_requests']
debug_pm_max_children = config['debug']['pm.max_children']
debug_pm_start_servers = config['debug']['pm.start_servers']
debug_pm_min_spare_servers = config['debug']['pm.min_spare_servers']
debug_pm_max_spare_servers = config['debug']['pm.max_spare_servers']
debug_request_terminate = (config['debug']
['request_terminate_timeout'])
try:
debug_xdebug = (config['debug']['php_admin_flag[xdebug.profiler_'
'enable_trigger]'])
except Exception as e:
Log.debug(self, "{0}".format(e))
debug_xdebug = 'off'
data = dict(version=version, expose_php=expose_php,
memory_limit=memory_limit, post_max_size=post_max_size,
upload_max_filesize=upload_max_filesize,
max_execution_time=max_execution_time,
www_listen=www_listen, www_ping_path=www_ping_path,
www_pm_status_path=www_pm_status_path, www_pm=www_pm,
www_pm_max_requests=www_pm_max_requests,
www_pm_max_children=www_pm_max_children,
www_pm_start_servers=www_pm_start_servers,
www_pm_min_spare_servers=www_pm_min_spare_servers,
www_pm_max_spare_servers=www_pm_max_spare_servers,
www_request_terminate_timeout=www_request_terminate_time,
www_xdebug_profiler_enable_trigger=www_xdebug,
debug_listen=debug_listen, debug_ping_path=debug_ping_path,
debug_pm_status_path=debug_pm_status_path,
debug_pm=debug_pm,
debug_pm_max_requests=debug_pm_max_requests,
debug_pm_max_children=debug_pm_max_children,
debug_pm_start_servers=debug_pm_start_servers,
debug_pm_min_spare_servers=debug_pm_min_spare_servers,
debug_pm_max_spare_servers=debug_pm_max_spare_servers,
debug_request_terminate_timeout=debug_request_terminate,
debug_xdebug_profiler_enable_trigger=debug_xdebug)
self.app.render((data), 'info_php.mustache')
@expose(hide=True) @expose(hide=True)
def info_mysql(self): def info_mysql(self):
"""Display MySQL information""" """Display MySQL information"""
@@ -368,7 +548,8 @@ class WOInfoController(CementBaseController):
pargs = self.app.pargs pargs = self.app.pargs
if (not pargs.nginx and not pargs.php and if (not pargs.nginx and not pargs.php and
not pargs.mysql and not pargs.php73 and not pargs.mysql and not pargs.php73 and
not pargs.php74): not pargs.php74 and not pargs.php80 and
not pargs.php81):
pargs.nginx = True pargs.nginx = True
pargs.php = True pargs.php = True
pargs.mysql = True pargs.mysql = True
@@ -376,6 +557,10 @@ class WOInfoController(CementBaseController):
pargs.php73 = True pargs.php73 = True
if WOAptGet.is_installed(self, 'php7.4-fpm'): if WOAptGet.is_installed(self, 'php7.4-fpm'):
pargs.php74 = True pargs.php74 = True
if WOAptGet.is_installed(self, 'php8.0-fpm'):
pargs.php80 = True
if WOAptGet.is_installed(self, 'php8.1-fpm'):
pargs.php81 = True
if pargs.nginx: if pargs.nginx:
if ((not WOAptGet.is_installed(self, 'nginx-custom')) and if ((not WOAptGet.is_installed(self, 'nginx-custom')) and
@@ -402,6 +587,18 @@ class WOInfoController(CementBaseController):
else: else:
Log.info(self, "PHP 7.4 is not installed") Log.info(self, "PHP 7.4 is not installed")
if pargs.php80:
if WOAptGet.is_installed(self, 'php8.0-fpm'):
self.info_php80()
else:
Log.info(self, "PHP 8.0 is not installed")
if pargs.php81:
if WOAptGet.is_installed(self, 'php8.1-fpm'):
self.info_php81()
else:
Log.info(self, "PHP 8.1 is not installed")
if pargs.mysql: if pargs.mysql:
if WOShellExec.cmd_exec(self, "/usr/bin/mysqladmin ping"): if WOShellExec.cmd_exec(self, "/usr/bin/mysqladmin ping"):
self.info_mysql() self.info_mysql()

View File

@@ -39,6 +39,10 @@ class WOSiteCreateController(CementBaseController):
dict(help="create php 7.3 site", action='store_true')), dict(help="create php 7.3 site", action='store_true')),
(['--php74'], (['--php74'],
dict(help="create php 7.4 site", action='store_true')), dict(help="create php 7.4 site", action='store_true')),
(['--php80'],
dict(help="create php 8.0 site", action='store_true')),
(['--php81'],
dict(help="create php 8.1 site", action='store_true')),
(['--mysql'], (['--mysql'],
dict(help="create mysql site", action='store_true')), dict(help="create mysql site", action='store_true')),
(['--wp'], (['--wp'],
@@ -167,7 +171,7 @@ class WOSiteCreateController(CementBaseController):
data['port'] = port data['port'] = port
data['basic'] = True data['basic'] = True
if pargs.php72 or pargs.php73 or pargs.php74: if pargs.php72 or pargs.php73 or pargs.php74 or pargs.php80 or pargs.php81:
data = dict( data = dict(
site_name=wo_domain, www_domain=wo_www_domain, site_name=wo_domain, www_domain=wo_www_domain,
static=False, basic=False, static=False, basic=False,
@@ -214,6 +218,8 @@ class WOSiteCreateController(CementBaseController):
data['php73'] = False data['php73'] = False
data['php74'] = False data['php74'] = False
data['php72'] = False data['php72'] = False
data['php80'] = False
data['php81'] = False
if data and pargs.php73: if data and pargs.php73:
data['php73'] = True data['php73'] = True
@@ -224,6 +230,12 @@ class WOSiteCreateController(CementBaseController):
elif data and pargs.php72: elif data and pargs.php72:
data['php72'] = True data['php72'] = True
data['wo_php'] = 'php72' data['wo_php'] = 'php72'
elif data and pargs.php80:
data['php80'] = True
data['wo_php'] = 'php80'
elif data and pargs.php81:
data['php81'] = True
data['wo_php'] = 'php81'
else: else:
if self.app.config.has_section('php'): if self.app.config.has_section('php'):
config_php_ver = self.app.config.get( config_php_ver = self.app.config.get(
@@ -237,6 +249,12 @@ class WOSiteCreateController(CementBaseController):
elif config_php_ver == '7.4': elif config_php_ver == '7.4':
data['php74'] = True data['php74'] = True
data['wo_php'] = 'php74' data['wo_php'] = 'php74'
elif config_php_ver == '8.0':
data['php80'] = True
data['wo_php'] = 'php80'
elif config_php_ver == '8.1':
data['php81'] = True
data['wo_php'] = 'php81'
else: else:
data['php73'] = True data['php73'] = True
data['wo_php'] = 'php73' data['wo_php'] = 'php73'
@@ -306,6 +324,10 @@ class WOSiteCreateController(CementBaseController):
php_version = "7.2" php_version = "7.2"
elif data['php74']: elif data['php74']:
php_version = "7.4" php_version = "7.4"
elif data['php80']:
php_version = "8.0"
elif data['php81']:
php_version = "8.1"
else: else:
php_version = "7.3" php_version = "7.3"

View File

@@ -780,7 +780,7 @@ def sitebackup(self, data):
.format(data['site_name']), backup_path) .format(data['site_name']), backup_path)
if data['currsitetype'] in ['html', 'php', 'php72', 'php74', if data['currsitetype'] in ['html', 'php', 'php72', 'php74',
'php73', 'proxy', 'mysql']: 'php73', 'php80', 'php81', 'proxy', 'mysql']:
if not data['wp']: if not data['wp']:
Log.info(self, "Backing up Webroot \t\t", end='') Log.info(self, "Backing up Webroot \t\t", end='')
WOFileUtils.copyfiles(self, wo_site_webroot + WOFileUtils.copyfiles(self, wo_site_webroot +
@@ -840,7 +840,7 @@ def site_package_check(self, stype):
stack.app = self.app stack.app = self.app
pargs = self.app.pargs pargs = self.app.pargs
if stype in ['html', 'proxy', 'php', 'php72', 'mysql', 'wp', 'wpsubdir', if stype in ['html', 'proxy', 'php', 'php72', 'mysql', 'wp', 'wpsubdir',
'wpsubdomain', 'php73', 'php74']: 'wpsubdomain', 'php73', 'php74', 'php80', 'php81']:
Log.debug(self, "Setting apt_packages variable for Nginx") Log.debug(self, "Setting apt_packages variable for Nginx")
# Check if server has nginx-custom package # Check if server has nginx-custom package
@@ -877,14 +877,20 @@ def site_package_check(self, stype):
'\t$request_filename;\n') '\t$request_filename;\n')
if ((pargs.php and pargs.php73) or (pargs.php and pargs.php74) or if ((pargs.php and pargs.php73) or (pargs.php and pargs.php74) or
(pargs.php and pargs.php72) or (pargs.php and pargs.php72) or (pargs.php and pargs.php80) or
(pargs.php and pargs.php81) or
(pargs.php73 and pargs.php74) or (pargs.php72 and pargs.php73) or (pargs.php73 and pargs.php74) or (pargs.php72 and pargs.php73) or
(pargs.php72 and pargs.php74)): (pargs.php72 and pargs.php74) or (pargs.php73 and pargs.php80) or
(pargs.php74 and pargs.php80) or (pargs.php80 and pargs.php81) or
(pargs.php72 and pargs.php80) or (pargs.php72 and pargs.php81) or
(pargs.php73 and pargs.php81) or (pargs.php74 and pargs.php81) or
(pargs.php80 and pargs.php81)):
Log.error( Log.error(
self, "Error: two different PHP versions cannot be " self, "Error: two different PHP versions cannot be "
"combined within the same WordOps site") "combined within the same WordOps site")
if ((not pargs.php72) and (not pargs.php73) and (not pargs.php74) and if ((not pargs.php72) and (not pargs.php73) and (not pargs.php74) and
(not pargs.php80) and (not pargs.php81) and
stype in ['php', 'mysql', 'wp', 'wpsubdir', stype in ['php', 'mysql', 'wp', 'wpsubdir',
'wpsubdomain']): 'wpsubdomain']):
Log.debug(self, "Setting apt_packages variable for PHP") Log.debug(self, "Setting apt_packages variable for PHP")
@@ -902,6 +908,12 @@ def site_package_check(self, stype):
elif config_php_ver == '7.4': elif config_php_ver == '7.4':
php_check = 'php7.4-fpm' php_check = 'php7.4-fpm'
php_to_setup = WOVar.wo_php74 php_to_setup = WOVar.wo_php74
elif config_php_ver == '8.0':
php_check = 'php8.0-fpm'
php_to_setup = WOVar.wo_php80
elif config_php_ver == '8.1':
php_check = 'php8.1-fpm'
php_to_setup = WOVar.wo_php81
else: else:
php_check = 'php7.3-fpm' php_check = 'php7.3-fpm'
php_to_setup = WOVar.wo_php73 php_to_setup = WOVar.wo_php73
@@ -930,6 +942,18 @@ def site_package_check(self, stype):
if not WOAptGet.is_installed(self, 'php7.4-fpm'): if not WOAptGet.is_installed(self, 'php7.4-fpm'):
apt_packages = apt_packages + WOVar.wo_php74 + WOVar.wo_php_extra apt_packages = apt_packages + WOVar.wo_php74 + WOVar.wo_php_extra
if pargs.php80 and stype in ['php80', 'mysql', 'wp',
'wpsubdir', 'wpsubdomain']:
Log.debug(self, "Setting apt_packages variable for PHP 8.0")
if not WOAptGet.is_installed(self, 'php8.0-fpm'):
apt_packages = apt_packages + WOVar.wo_php80 + WOVar.wo_php_extra
if pargs.php81 and stype in ['php81', 'mysql', 'wp',
'wpsubdir', 'wpsubdomain']:
Log.debug(self, "Setting apt_packages variable for PHP 8.1")
if not WOAptGet.is_installed(self, 'php8.1-fpm'):
apt_packages = apt_packages + WOVar.wo_php81 + WOVar.wo_php_extra
if stype in ['mysql', 'wp', 'wpsubdir', 'wpsubdomain']: if stype in ['mysql', 'wp', 'wpsubdir', 'wpsubdomain']:
Log.debug(self, "Setting apt_packages variable for MySQL") Log.debug(self, "Setting apt_packages variable for MySQL")
if not WOShellExec.cmd_exec(self, "/usr/bin/mysqladmin ping"): if not WOShellExec.cmd_exec(self, "/usr/bin/mysqladmin ping"):
@@ -1111,7 +1135,7 @@ def detSitePar(opts):
for key, val in opts.items(): for key, val in opts.items():
if val and key in ['html', 'php', 'mysql', 'wp', if val and key in ['html', 'php', 'mysql', 'wp',
'wpsubdir', 'wpsubdomain', 'php72', 'wpsubdir', 'wpsubdomain', 'php72',
'php73', 'php74']: 'php73', 'php74', 'php80', 'php81']:
typelist.append(key) typelist.append(key)
elif val and key in ['wpfc', 'wpsc', 'wpredis', 'wprocket', 'wpce']: elif val and key in ['wpfc', 'wpsc', 'wpredis', 'wprocket', 'wpce']:
cachelist.append(key) cachelist.append(key)
@@ -1145,6 +1169,18 @@ def detSitePar(opts):
cachetype = 'basic' cachetype = 'basic'
else: else:
cachetype = cachelist[0] cachetype = cachelist[0]
elif False not in [x in ('php80', 'mysql', 'html') for x in typelist]:
sitetype = 'mysql'
if not cachelist:
cachetype = 'basic'
else:
cachetype = cachelist[0]
elif False not in [x in ('php81', 'mysql', 'html') for x in typelist]:
sitetype = 'mysql'
if not cachelist:
cachetype = 'basic'
else:
cachetype = cachelist[0]
elif False not in [x in ('php', 'mysql') for x in typelist]: elif False not in [x in ('php', 'mysql') for x in typelist]:
sitetype = 'mysql' sitetype = 'mysql'
if not cachelist: if not cachelist:
@@ -1169,6 +1205,18 @@ def detSitePar(opts):
cachetype = 'basic' cachetype = 'basic'
else: else:
cachetype = cachelist[0] cachetype = cachelist[0]
elif False not in [x in ('php80', 'mysql') for x in typelist]:
sitetype = 'mysql'
if not cachelist:
cachetype = 'basic'
else:
cachetype = cachelist[0]
elif False not in [x in ('php81', 'mysql') for x in typelist]:
sitetype = 'mysql'
if not cachelist:
cachetype = 'basic'
else:
cachetype = cachelist[0]
elif False not in [x in ('html', 'mysql') for x in typelist]: elif False not in [x in ('html', 'mysql') for x in typelist]:
sitetype = 'mysql' sitetype = 'mysql'
if not cachelist: if not cachelist:
@@ -1211,6 +1259,18 @@ def detSitePar(opts):
cachetype = 'basic' cachetype = 'basic'
else: else:
cachetype = cachelist[0] cachetype = cachelist[0]
elif False not in [x in ('wp', 'php80') for x in typelist]:
sitetype = 'wp'
if not cachelist:
cachetype = 'basic'
else:
cachetype = cachelist[0]
elif False not in [x in ('wp', 'php81') for x in typelist]:
sitetype = 'wp'
if not cachelist:
cachetype = 'basic'
else:
cachetype = cachelist[0]
elif False not in [x in ('wpsubdir', 'php72') for x in typelist]: elif False not in [x in ('wpsubdir', 'php72') for x in typelist]:
sitetype = 'wpsubdir' sitetype = 'wpsubdir'
if not cachelist: if not cachelist:
@@ -1229,6 +1289,18 @@ def detSitePar(opts):
cachetype = 'basic' cachetype = 'basic'
else: else:
cachetype = cachelist[0] cachetype = cachelist[0]
elif False not in [x in ('wpsubdir', 'php80') for x in typelist]:
sitetype = 'wpsubdir'
if not cachelist:
cachetype = 'basic'
else:
cachetype = cachelist[0]
elif False not in [x in ('wpsubdir', 'php81') for x in typelist]:
sitetype = 'wpsubdir'
if not cachelist:
cachetype = 'basic'
else:
cachetype = cachelist[0]
elif False not in [x in ('wpsubdomain', 'php72') for x in typelist]: elif False not in [x in ('wpsubdomain', 'php72') for x in typelist]:
sitetype = 'wpsubdomain' sitetype = 'wpsubdomain'
if not cachelist: if not cachelist:
@@ -1247,6 +1319,18 @@ def detSitePar(opts):
cachetype = 'basic' cachetype = 'basic'
else: else:
cachetype = cachelist[0] cachetype = cachelist[0]
elif False not in [x in ('wpsubdomain', 'php80') for x in typelist]:
sitetype = 'wpsubdomain'
if not cachelist:
cachetype = 'basic'
else:
cachetype = cachelist[0]
elif False not in [x in ('wpsubdomain', 'php81') for x in typelist]:
sitetype = 'wpsubdomain'
if not cachelist:
cachetype = 'basic'
else:
cachetype = cachelist[0]
else: else:
raise RuntimeError("could not determine site and cache type") raise RuntimeError("could not determine site and cache type")
else: else:
@@ -1262,6 +1346,12 @@ def detSitePar(opts):
elif (not typelist or "php74" in typelist) and cachelist: elif (not typelist or "php74" in typelist) and cachelist:
sitetype = 'wp' sitetype = 'wp'
cachetype = cachelist[0] cachetype = cachelist[0]
elif (not typelist or "php80" in typelist) and cachelist:
sitetype = 'wp'
cachetype = cachelist[0]
elif (not typelist or "php81" in typelist) and cachelist:
sitetype = 'wp'
cachetype = cachelist[0]
elif typelist and (not cachelist): elif typelist and (not cachelist):
sitetype = typelist[0] sitetype = typelist[0]
cachetype = 'basic' cachetype = 'basic'

View File

@@ -47,6 +47,10 @@ class WOSiteUpdateController(CementBaseController):
dict(help="update to php73 site", action='store_true')), dict(help="update to php73 site", action='store_true')),
(['--php74'], (['--php74'],
dict(help="update to php74 site", action='store_true')), dict(help="update to php74 site", action='store_true')),
(['--php80'],
dict(help="update to php80 site", action='store_true')),
(['--php81'],
dict(help="update to php81 site", action='store_true')),
(['--mysql'], (['--mysql'],
dict(help="update to mysql site", action='store_true')), dict(help="update to mysql site", action='store_true')),
(['--wp'], (['--wp'],
@@ -111,6 +115,7 @@ class WOSiteUpdateController(CementBaseController):
Log.error(self, "No site can be updated to html") Log.error(self, "No site can be updated to html")
if not (pargs.php or pargs.php72 or pargs.php73 or pargs.php74 or if not (pargs.php or pargs.php72 or pargs.php73 or pargs.php74 or
pargs.php80 or pargs.php81 or
pargs.mysql or pargs.wp or pargs.wpsubdir or pargs.mysql or pargs.wp or pargs.wpsubdir or
pargs.wpsubdomain or pargs.wpfc or pargs.wpsc or pargs.wpsubdomain or pargs.wpfc or pargs.wpsc or
pargs.wprocket or pargs.wpce or pargs.wprocket or pargs.wpce or
@@ -143,6 +148,8 @@ class WOSiteUpdateController(CementBaseController):
php73 = False php73 = False
php74 = False php74 = False
php72 = False php72 = False
php80 = False
php81 = False
data = dict() data = dict()
try: try:
@@ -191,11 +198,13 @@ class WOSiteUpdateController(CementBaseController):
old_php72 = bool(check_php_version == "7.2") old_php72 = bool(check_php_version == "7.2")
old_php73 = bool(check_php_version == "7.3") old_php73 = bool(check_php_version == "7.3")
old_php74 = bool(check_php_version == "7.4") old_php74 = bool(check_php_version == "7.4")
old_php80 = bool(check_php_version == "8.0")
old_php81 = bool(check_php_version == "8.1")
if ((pargs.password or pargs.hsts or if ((pargs.password or pargs.hsts or
pargs.ngxblocker or pargs.letsencrypt == 'renew') and not ( pargs.ngxblocker or pargs.letsencrypt == 'renew') and not (
pargs.html or pargs.php or pargs.php72 or pargs.php73 or pargs.html or pargs.php or pargs.php72 or pargs.php73 or
pargs.php74 or pargs.php74 or pargs.php80 or pargs.php81 or
pargs.mysql or pargs.wp or pargs.wpfc or pargs.wpsc or pargs.mysql or pargs.wp or pargs.wpfc or pargs.wpsc or
pargs.wprocket or pargs.wpce or pargs.wprocket or pargs.wpce or
pargs.wpsubdir or pargs.wpsubdomain)): pargs.wpsubdir or pargs.wpsubdomain)):
@@ -263,16 +272,18 @@ class WOSiteUpdateController(CementBaseController):
if (((stype == 'php' and if (((stype == 'php' and
oldsitetype not in ['html', 'proxy', 'php', 'php72', oldsitetype not in ['html', 'proxy', 'php', 'php72',
'php73', 'php74']) or 'php73', 'php74', 'php80', 'php81']) or
(stype == 'mysql' and oldsitetype not in [ (stype == 'mysql' and oldsitetype not in [
'html', 'php', 'php72', 'php73', 'php74', 'proxy']) or 'html', 'php', 'php72', 'php73', 'php74','php80', 'php81',
'proxy']) or
(stype == 'wp' and oldsitetype not in [ (stype == 'wp' and oldsitetype not in [
'html', 'php', 'php72', 'php73', 'php74', 'mysql', 'html', 'php', 'php72', 'php73', 'php74', 'php80', 'php81',
'proxy', 'wp']) or 'mysql', 'proxy', 'wp']) or
(stype == 'wpsubdir' and oldsitetype in ['wpsubdomain']) or (stype == 'wpsubdir' and oldsitetype in ['wpsubdomain']) or
(stype == 'wpsubdomain' and oldsitetype in ['wpsubdir']) or (stype == 'wpsubdomain' and oldsitetype in ['wpsubdir']) or
(stype == oldsitetype and cache == oldcachetype)) and (stype == oldsitetype and cache == oldcachetype)) and
not (pargs.php72 or pargs.php73 or pargs.php74)): not (pargs.php72 or pargs.php73 or pargs.php74 or pargs.php80 or
pargs.php81)):
Log.info(self, Log.FAIL + "can not update {0} {1} to {2} {3}". Log.info(self, Log.FAIL + "can not update {0} {1} to {2} {3}".
format(oldsitetype, oldcachetype, stype, cache)) format(oldsitetype, oldcachetype, stype, cache))
return 1 return 1
@@ -291,7 +302,7 @@ class WOSiteUpdateController(CementBaseController):
data = dict( data = dict(
site_name=wo_domain, www_domain=wo_www_domain, site_name=wo_domain, www_domain=wo_www_domain,
static=False, basic=True, wp=False, wpfc=False, static=False, basic=True, wp=False, wpfc=False,
php72=False, php73=False, php74=False, php72=False, php73=False, php74=False, php80=False, php81=False,
wpsc=False, wpredis=False, wprocket=False, wpce=False, wpsc=False, wpredis=False, wprocket=False, wpce=False,
multisite=False, wpsubdir=False, webroot=wo_site_webroot, multisite=False, wpsubdir=False, webroot=wo_site_webroot,
currsitetype=oldsitetype, currcachetype=oldcachetype) currsitetype=oldsitetype, currcachetype=oldcachetype)
@@ -316,9 +327,9 @@ class WOSiteUpdateController(CementBaseController):
data['wpsubdir'] = True data['wpsubdir'] = True
if ((pargs.php72 or pargs.php73 or if ((pargs.php72 or pargs.php73 or
pargs.php74) and (not data)): pargs.php74 or pargs.php80 or pargs.php81) and (not data)):
Log.debug( Log.debug(
self, "pargs php72, or php73, or php74 enabled") self, "pargs php72, or php73, or php74, or php80, or php81 enabled")
data = dict( data = dict(
site_name=wo_domain, site_name=wo_domain,
www_domain=wo_www_domain, www_domain=wo_www_domain,
@@ -333,7 +344,8 @@ class WOSiteUpdateController(CementBaseController):
data['multisite'] = False data['multisite'] = False
data['wpsubdir'] = False data['wpsubdir'] = False
elif (oldsitetype == 'php' or oldsitetype == 'mysql' or elif (oldsitetype == 'php' or oldsitetype == 'mysql' or
oldsitetype == 'php73'or oldsitetype == 'php74'): oldsitetype == 'php73' or oldsitetype == 'php74' or
oldsitetype == 'php80' or oldsitetype == 'php81'):
data['static'] = False data['static'] = False
data['wp'] = False data['wp'] = False
data['multisite'] = False data['multisite'] = False
@@ -409,6 +421,14 @@ class WOSiteUpdateController(CementBaseController):
Log.debug(self, "pargs.php74 detected") Log.debug(self, "pargs.php74 detected")
data['php74'] = True data['php74'] = True
php74 = True php74 = True
elif pargs.php80:
Log.debug(self, "pargs.php80 detected")
data['php80'] = True
php80 = True
elif pargs.php81:
Log.debug(self, "pargs.php81 detected")
data['php81'] = True
php81 = True
if pargs.php72: if pargs.php72:
if php72 is old_php72: if php72 is old_php72:
@@ -428,8 +448,21 @@ class WOSiteUpdateController(CementBaseController):
"site") "site")
pargs.php74 = False pargs.php74 = False
if pargs.php80:
if php80 is old_php80:
Log.info(self, "PHP 8.0 is already enabled for given "
"site")
pargs.php80 = False
if pargs.php81:
if php81 is old_php81:
Log.info(self, "PHP 8.1 is already enabled for given "
"site")
pargs.php81 = False
if (data and (not pargs.php73) and if (data and (not pargs.php73) and
(not pargs.php74) and (not pargs.php72)): (not pargs.php74) and (not pargs.php72) and
(not pargs.php80) and (not pargs.php81)):
data['php72'] = bool(old_php72 is True) data['php72'] = bool(old_php72 is True)
Log.debug(self, "data php72 = {0}".format(data['php72'])) Log.debug(self, "data php72 = {0}".format(data['php72']))
php72 = bool(old_php72 is True) php72 = bool(old_php72 is True)
@@ -439,6 +472,12 @@ class WOSiteUpdateController(CementBaseController):
data['php74'] = bool(old_php74 is True) data['php74'] = bool(old_php74 is True)
Log.debug(self, "data php74 = {0}".format(data['php74'])) Log.debug(self, "data php74 = {0}".format(data['php74']))
php74 = bool(old_php74 is True) php74 = bool(old_php74 is True)
data['php80'] = bool(old_php80 is True)
Log.debug(self, "data php80 = {0}".format(data['php80']))
php80 = bool(old_php80 is True)
data['php80'] = bool(old_php80 is True)
Log.debug(self, "data php80 = {0}".format(data['php80']))
php80 = bool(old_php80 is True)
if pargs.letsencrypt: if pargs.letsencrypt:
acme_domains = [] acme_domains = []
@@ -516,7 +555,9 @@ class WOSiteUpdateController(CementBaseController):
cache = 'wpce' cache = 'wpce'
if ((php73 is old_php73) and (php72 is old_php72) and if ((php73 is old_php73) and (php72 is old_php72) and
(php74 is old_php74) and (stype == oldsitetype and (php74 is old_php74) and (php80 is old_php80) and
(php81 is old_php81) and
(stype == oldsitetype and
cache == oldcachetype)): cache == oldcachetype)):
Log.debug(self, "Nothing to update") Log.debug(self, "Nothing to update")
return 1 return 1
@@ -530,6 +571,12 @@ class WOSiteUpdateController(CementBaseController):
elif php72 is True: elif php72 is True:
data['wo_php'] = 'php72' data['wo_php'] = 'php72'
check_php_version = '7.2' check_php_version = '7.2'
elif php80 is True:
data['wo_php'] = 'php80'
check_php_version = '8.0'
elif php81 is True:
data['wo_php'] = 'php81'
check_php_version = '8.1'
else: else:
data['wo_php'] = 'php73' data['wo_php'] = 'php73'
check_php_version = '7.3' check_php_version = '7.3'
@@ -830,7 +877,8 @@ class WOSiteUpdateController(CementBaseController):
# Setup WordPress if old sites are html/php/mysql sites # Setup WordPress if old sites are html/php/mysql sites
if data['wp'] and oldsitetype in ['html', 'proxy', 'php', 'php72', if data['wp'] and oldsitetype in ['html', 'proxy', 'php', 'php72',
'mysql', 'php73', 'php74']: 'mysql', 'php73', 'php74', 'php80',
'php81',]:
try: try:
wo_wp_creds = setupwordpress(self, data) wo_wp_creds = setupwordpress(self, data)
except SiteError as e: except SiteError as e:

View File

@@ -47,6 +47,10 @@ class WOStackController(CementBaseController):
dict(help='Install PHP 7.3 stack', action='store_true')), dict(help='Install PHP 7.3 stack', action='store_true')),
(['--php74'], (['--php74'],
dict(help='Install PHP 7.4 stack', action='store_true')), dict(help='Install PHP 7.4 stack', action='store_true')),
(['--php80'],
dict(help='Install PHP 8.0 stack', action='store_true')),
(['--php81'],
dict(help='Install PHP 8.1 stack', action='store_true')),
(['--mysql'], (['--mysql'],
dict(help='Install MySQL stack', action='store_true')), dict(help='Install MySQL stack', action='store_true')),
(['--mariadb'], (['--mariadb'],
@@ -117,6 +121,7 @@ class WOStackController(CementBaseController):
# Default action for stack installation # Default action for stack installation
if not (pargs.web or pargs.admin or pargs.nginx or if not (pargs.web or pargs.admin or pargs.nginx or
pargs.php or pargs.php72 or pargs.php73 or pargs.php74 or pargs.php or pargs.php72 or pargs.php73 or pargs.php74 or
pargs.php80 or pargs.php81 or
pargs.mysql or pargs.wpcli or pargs.phpmyadmin or pargs.mysql or pargs.wpcli or pargs.phpmyadmin or
pargs.composer or pargs.netdata or pargs.composer or pargs.composer or pargs.netdata or pargs.composer or
pargs.dashboard or pargs.fail2ban or pargs.security or pargs.dashboard or pargs.fail2ban or pargs.security or
@@ -142,6 +147,8 @@ class WOStackController(CementBaseController):
pargs.admin = True pargs.admin = True
pargs.php73 = True pargs.php73 = True
pargs.php74 = True pargs.php74 = True
pargs.php80 = True
pargs.php81 = True
pargs.redis = True pargs.redis = True
pargs.proftpd = True pargs.proftpd = True
@@ -155,6 +162,10 @@ class WOStackController(CementBaseController):
pargs.php73 = True pargs.php73 = True
elif config_php_ver == '7.4': elif config_php_ver == '7.4':
pargs.php74 = True pargs.php74 = True
elif config_php_ver == '8.0':
pargs.php80 = True
elif config_php_ver == '8.1':
pargs.php80 = True
else: else:
pargs.php74 = True pargs.php74 = True
pargs.nginx = True pargs.nginx = True
@@ -226,6 +237,26 @@ class WOStackController(CementBaseController):
Log.debug(self, "PHP 7.4 already installed") Log.debug(self, "PHP 7.4 already installed")
Log.info(self, "PHP 7.4 already installed") Log.info(self, "PHP 7.4 already installed")
# PHP 8.0
if pargs.php80:
Log.debug(self, "Setting apt_packages variable for PHP 8.0")
if not WOAptGet.is_installed(self, 'php8.0-fpm'):
apt_packages = (apt_packages + WOVar.wo_php80 +
WOVar.wo_php_extra)
else:
Log.debug(self, "PHP 8.0 already installed")
Log.info(self, "PHP 8.0 already installed")
# PHP 8.1
if pargs.php81:
Log.debug(self, "Setting apt_packages variable for PHP 8.1")
if not WOAptGet.is_installed(self, 'php8.1-fpm'):
apt_packages = (apt_packages + WOVar.wo_php81 +
WOVar.wo_php_extra)
else:
Log.debug(self, "PHP 8.1 already installed")
Log.info(self, "PHP 8.1 already installed")
# MariaDB 10.3 # MariaDB 10.3
if pargs.mysql: if pargs.mysql:
pargs.mysqltuner = True pargs.mysqltuner = True
@@ -485,7 +516,9 @@ class WOStackController(CementBaseController):
pargs.mysql = True pargs.mysql = True
if not (WOAptGet.is_installed(self, 'php7.2-fpm') or if not (WOAptGet.is_installed(self, 'php7.2-fpm') or
WOAptGet.is_installed(self, 'php7.3-fpm') or WOAptGet.is_installed(self, 'php7.3-fpm') or
WOAptGet.is_installed(self, 'php7.4-fpm')): WOAptGet.is_installed(self, 'php7.4-fpm') or
WOAptGet.is_installed(self, 'php8.0-fpm') or
WOAptGet.is_installed(self, 'php8.1-fpm')):
pargs.php74 = True pargs.php74 = True
Log.debug(self, "Setting packages variable for utils") Log.debug(self, "Setting packages variable for utils")
packages = packages + [[ packages = packages + [[
@@ -582,7 +615,8 @@ class WOStackController(CementBaseController):
(not pargs.ufw) and (not pargs.ngxblocker) and (not pargs.ufw) and (not pargs.ngxblocker) and
(not pargs.phpredisadmin) and (not pargs.sendmail) and (not pargs.phpredisadmin) and (not pargs.sendmail) and
(not pargs.php73) and (not pargs.php74) and (not pargs.php73) and (not pargs.php74) and
(not pargs.php72) and (not pargs.all)): (not pargs.php72) (not pargs.php80) and
(not pargs.php81) and (not pargs.all)):
self.app.args.print_help() self.app.args.print_help()
if pargs.php: if pargs.php:
@@ -636,7 +670,9 @@ class WOStackController(CementBaseController):
if (WOAptGet.is_installed(self, 'php7.2-fpm')): if (WOAptGet.is_installed(self, 'php7.2-fpm')):
apt_packages = apt_packages + WOVar.wo_php72 apt_packages = apt_packages + WOVar.wo_php72
if not (WOAptGet.is_installed(self, 'php7.3-fpm') or if not (WOAptGet.is_installed(self, 'php7.3-fpm') or
WOAptGet.is_installed(self, 'php7.4-fpm')): WOAptGet.is_installed(self, 'php7.4-fpm') or
WOAptGet.is_installed(self, 'php8.0-fpm') or
WOAptGet.is_installed(self, 'php8.1-fpm')):
apt_packages = apt_packages + WOVar.wo_php_extra apt_packages = apt_packages + WOVar.wo_php_extra
else: else:
Log.debug(self, "PHP 7.2 is not installed") Log.debug(self, "PHP 7.2 is not installed")
@@ -648,7 +684,9 @@ class WOStackController(CementBaseController):
if WOAptGet.is_installed(self, 'php7.3-fpm'): if WOAptGet.is_installed(self, 'php7.3-fpm'):
apt_packages = apt_packages + WOVar.wo_php73 apt_packages = apt_packages + WOVar.wo_php73
if not (WOAptGet.is_installed(self, 'php7.2-fpm') or if not (WOAptGet.is_installed(self, 'php7.2-fpm') or
WOAptGet.is_installed(self, 'php7.4-fpm')): WOAptGet.is_installed(self, 'php7.4-fpm') or
WOAptGet.is_installed(self, 'php8.0-fpm') or
WOAptGet.is_installed(self, 'php8.1-fpm')):
apt_packages = apt_packages + WOVar.wo_php_extra apt_packages = apt_packages + WOVar.wo_php_extra
else: else:
Log.debug(self, "PHP 7.3 is not installed") Log.debug(self, "PHP 7.3 is not installed")
@@ -660,12 +698,42 @@ class WOStackController(CementBaseController):
if WOAptGet.is_installed(self, 'php7.4-fpm'): if WOAptGet.is_installed(self, 'php7.4-fpm'):
apt_packages = apt_packages + WOVar.wo_php74 apt_packages = apt_packages + WOVar.wo_php74
if not (WOAptGet.is_installed(self, 'php7.3-fpm') or if not (WOAptGet.is_installed(self, 'php7.3-fpm') or
WOAptGet.is_installed(self, 'php7.2-fpm')): WOAptGet.is_installed(self, 'php7.2-fpm') or
WOAptGet.is_installed(self, 'php8.0-fpm') or
WOAptGet.is_installed(self, 'php8.1-fpm')):
apt_packages = apt_packages + WOVar.wo_php_extra apt_packages = apt_packages + WOVar.wo_php_extra
else: else:
Log.debug(self, "PHP 7.4 is not installed") Log.debug(self, "PHP 7.4 is not installed")
Log.info(self, "PHP 7.4 is not installed") Log.info(self, "PHP 7.4 is not installed")
# PHP 8.0
if pargs.php80:
Log.debug(self, "Setting apt_packages variable for PHP 8.0")
if WOAptGet.is_installed(self, 'php8.0-fpm'):
apt_packages = apt_packages + WOVar.wo_php80
if not (WOAptGet.is_installed(self, 'php7.3-fpm') or
WOAptGet.is_installed(self, 'php7.2-fpm') or
WOAptGet.is_installed(self, 'php7.4-fpm') or
WOAptGet.is_installed(self, 'php8.1-fpm')):
apt_packages = apt_packages + WOVar.wo_php_extra
else:
Log.debug(self, "PHP 8.0 is not installed")
Log.info(self, "PHP 8.0 is not installed")
# PHP 8.1
if pargs.php81:
Log.debug(self, "Setting apt_packages variable for PHP 8.1")
if WOAptGet.is_installed(self, 'php8.1-fpm'):
apt_packages = apt_packages + WOVar.wo_php81
if not (WOAptGet.is_installed(self, 'php7.3-fpm') or
WOAptGet.is_installed(self, 'php7.2-fpm') or
WOAptGet.is_installed(self, 'php7.4-fpm') or
WOAptGet.is_installed(self, 'php8.0-fpm')):
apt_packages = apt_packages + WOVar.wo_php_extra
else:
Log.debug(self, "PHP 8.1 is not installed")
Log.info(self, "PHP 8.1 is not installed")
# REDIS # REDIS
if pargs.redis: if pargs.redis:
if WOAptGet.is_installed(self, 'redis-server'): if WOAptGet.is_installed(self, 'redis-server'):
@@ -898,6 +966,7 @@ class WOStackController(CementBaseController):
(not pargs.cheat) and (not pargs.nanorc) and (not pargs.cheat) and (not pargs.nanorc) and
(not pargs.ufw) and (not pargs.ngxblocker) and (not pargs.ufw) and (not pargs.ngxblocker) and
(not pargs.phpredisadmin) and (not pargs.sendmail) and (not pargs.phpredisadmin) and (not pargs.sendmail) and
(not pargs.php80) and (not pargs.php81) and
(not pargs.php73) and (not pargs.php74) and (not pargs.php73) and (not pargs.php74) and
(not pargs.php72) and (not pargs.all)): (not pargs.php72) and (not pargs.all)):
self.app.args.print_help() self.app.args.print_help()
@@ -913,6 +982,8 @@ class WOStackController(CementBaseController):
pargs.admin = True pargs.admin = True
pargs.php73 = True pargs.php73 = True
pargs.php74 = True pargs.php74 = True
pargs.php80 = True
pargs.php81 = True
pargs.fail2ban = True pargs.fail2ban = True
pargs.proftpd = True pargs.proftpd = True
pargs.utils = True pargs.utils = True
@@ -966,8 +1037,10 @@ class WOStackController(CementBaseController):
if WOAptGet.is_installed(self, 'php7.3-fpm'): if WOAptGet.is_installed(self, 'php7.3-fpm'):
apt_packages = apt_packages + WOVar.wo_php73 apt_packages = apt_packages + WOVar.wo_php73
if not (WOAptGet.is_installed(self, 'php7.2-fpm') or if not (WOAptGet.is_installed(self, 'php7.2-fpm') or
WOAptGet.is_installed(self, 'php7.4-fpm')): WOAptGet.is_installed(self, 'php7.4-fpm') or
apt_packages = apt_packages + WOVar.wo_php_extra WOAptGet.is_installed(self, 'php8.0-fpm') or
WOAptGet.is_installed(self, 'php8.1-fpm')):
apt_packages = apt_packages + WOVar.wo_php_extra
else: else:
Log.debug(self, "PHP 7.3 is not installed") Log.debug(self, "PHP 7.3 is not installed")
Log.info(self, "PHP 7.3 is not installed") Log.info(self, "PHP 7.3 is not installed")
@@ -978,12 +1051,42 @@ class WOStackController(CementBaseController):
if WOAptGet.is_installed(self, 'php7.4-fpm'): if WOAptGet.is_installed(self, 'php7.4-fpm'):
apt_packages = apt_packages + WOVar.wo_php74 apt_packages = apt_packages + WOVar.wo_php74
if not (WOAptGet.is_installed(self, 'php7.3-fpm') or if not (WOAptGet.is_installed(self, 'php7.3-fpm') or
WOAptGet.is_installed(self, 'php7.2-fpm')): WOAptGet.is_installed(self, 'php7.2-fpm') or
WOAptGet.is_installed(self, 'php8.0-fpm') or
WOAptGet.is_installed(self, 'php8.1-fpm')):
apt_packages = apt_packages + WOVar.wo_php_extra apt_packages = apt_packages + WOVar.wo_php_extra
else: else:
Log.debug(self, "PHP 7.4 is not installed") Log.debug(self, "PHP 7.4 is not installed")
Log.info(self, "PHP 7.4 is not installed") Log.info(self, "PHP 7.4 is not installed")
# PHP 8.0
if pargs.php80:
Log.debug(self, "Setting apt_packages variable for PHP 8.0")
if WOAptGet.is_installed(self, 'php8.0-fpm'):
apt_packages = apt_packages + WOVar.wo_php80
if not (WOAptGet.is_installed(self, 'php7.3-fpm') or
WOAptGet.is_installed(self, 'php7.2-fpm') or
WOAptGet.is_installed(self, 'php7.4-fpm') or
WOAptGet.is_installed(self, 'php8.1-fpm')):
apt_packages = apt_packages + WOVar.wo_php_extra
else:
Log.debug(self, "PHP 8.0 is not installed")
Log.info(self, "PHP 8.0 is not installed")
# PHP 8.1
if pargs.php81:
Log.debug(self, "Setting apt_packages variable for PHP 8.1")
if WOAptGet.is_installed(self, 'php8.1-fpm'):
apt_packages = apt_packages + WOVar.wo_php74
if not (WOAptGet.is_installed(self, 'php7.3-fpm') or
WOAptGet.is_installed(self, 'php7.2-fpm') or
WOAptGet.is_installed(self, 'php8.0-fpm') or
WOAptGet.is_installed(self, 'php7.4-fpm')):
apt_packages = apt_packages + WOVar.wo_php_extra
else:
Log.debug(self, "PHP 8.1 is not installed")
Log.info(self, "PHP 8.1 is not installed")
# REDIS # REDIS
if pargs.redis: if pargs.redis:
if WOAptGet.is_installed(self, 'redis-server'): if WOAptGet.is_installed(self, 'redis-server'):

View File

@@ -229,7 +229,7 @@ def post_pref(self, apt_packages, packages, upgrade=False):
.format(ngxcom), .format(ngxcom),
'wpsubdir.mustache', data) 'wpsubdir.mustache', data)
wo_php_version = ["php72", "php73", "php74"] wo_php_version = ["php72", "php73", "php74", "php80" "php81"]
for wo_php in wo_php_version: for wo_php in wo_php_version:
data = dict(upstream="{0}".format(wo_php), data = dict(upstream="{0}".format(wo_php),
release=WOVar.wo_version) release=WOVar.wo_version)
@@ -922,6 +922,330 @@ def post_pref(self, apt_packages, packages, upgrade=False):
'upstream.mustache', data, True) 'upstream.mustache', data, True)
WOConf.nginxcommon(self) WOConf.nginxcommon(self)
# php8.0 configuration
if set(WOVar.wo_php80).issubset(set(apt_packages)):
WOGit.add(self, ["/etc/php"], msg="Adding PHP into Git")
Log.info(self, "Configuring php8.0-fpm")
ngxroot = '/var/www/'
# Create log directories
if not os.path.exists('/var/log/php/8.0/'):
Log.debug(self, 'Creating directory /var/log/php/8.0/')
os.makedirs('/var/log/php/8.0/')
if not os.path.isfile('/etc/php/8.0/fpm/php.ini.orig'):
WOFileUtils.copyfile(self, '/etc/php/8.0/fpm/php.ini',
'/etc/php/8.0/fpm/php.ini.orig')
# Parse etc/php/8.0/fpm/php.ini
config = configparser.ConfigParser()
Log.debug(self, "configuring php file /etc/php/8.0/"
"fpm/php.ini")
config.read('/etc/php/8.0/fpm/php.ini.orig')
config['PHP']['expose_php'] = 'Off'
config['PHP']['post_max_size'] = '100M'
config['PHP']['upload_max_filesize'] = '100M'
config['PHP']['max_execution_time'] = '300'
config['PHP']['max_input_time'] = '300'
config['PHP']['max_input_vars'] = '20000'
config['Date']['date.timezone'] = WOVar.wo_timezone
config['opcache']['opcache.enable'] = '1'
config['opcache']['opcache.interned_strings_buffer'] = '8'
config['opcache']['opcache.max_accelerated_files'] = '10000'
config['opcache']['opcache.memory_consumption'] = '256'
config['opcache']['opcache.save_comments'] = '1'
config['opcache']['opcache.revalidate_freq'] = '5'
config['opcache']['opcache.consistency_checks'] = '0'
config['opcache']['opcache.validate_timestamps'] = '1'
config['opcache']['opcache.preload_user'] = 'www-data'
with open('/etc/php/8.0/fpm/php.ini',
encoding='utf-8', mode='w') as configfile:
Log.debug(self, "Writting php configuration into "
"/etc/php/8.0/fpm/php.ini")
config.write(configfile)
# Render php-fpm pool template for php8.0
data = dict(pid="/run/php/php8.0-fpm.pid",
error_log="/var/log/php8.0-fpm.log",
include="/etc/php/8.0/fpm/pool.d/*.conf")
WOTemplate.deploy(
self, '/etc/php/8.0/fpm/php-fpm.conf',
'php-fpm.mustache', data)
data = dict(pool='www-php80', listen='php80-fpm.sock',
user='www-data',
group='www-data', listenuser='root',
listengroup='www-data', openbasedir=True)
WOTemplate.deploy(self, '/etc/php/8.0/fpm/pool.d/www.conf',
'php-pool.mustache', data)
data = dict(pool='www-two-php80', listen='php80-two-fpm.sock',
user='www-data',
group='www-data', listenuser='root',
listengroup='www-data', openbasedir=True)
WOTemplate.deploy(self, '/etc/php/8.0/fpm/pool.d/www-two.conf',
'php-pool.mustache', data)
# Generate /etc/php/8.0/fpm/pool.d/debug.conf
WOFileUtils.copyfile(self, "/etc/php/8.0/fpm/pool.d/www.conf",
"/etc/php/8.0/fpm/pool.d/debug.conf")
WOFileUtils.searchreplace(self, "/etc/php/8.0/fpm/pool.d/"
"debug.conf", "[www-php80]", "[debug]")
config = configparser.ConfigParser()
config.read('/etc/php/8.0/fpm/pool.d/debug.conf')
config['debug']['listen'] = '127.0.0.1:9180'
config['debug']['rlimit_core'] = 'unlimited'
config['debug']['slowlog'] = '/var/log/php/8.0/slow.log'
config['debug']['request_slowlog_timeout'] = '10s'
with open('/etc/php/8.0/fpm/pool.d/debug.conf',
encoding='utf-8', mode='w') as confifile:
Log.debug(self, "writting PHP 8.0 configuration into "
"/etc/php/8.0/fpm/pool.d/debug.conf")
config.write(confifile)
with open("/etc/php/8.0/fpm/pool.d/debug.conf",
encoding='utf-8', mode='a') as myfile:
myfile.write(
"php_admin_value[xdebug.profiler_output_dir] "
"= /tmp/ \nphp_admin_value[xdebug.profiler_"
"output_name] = cachegrind.out.%p-%H-%R "
"\nphp_admin_flag[xdebug.profiler_enable"
"_trigger] = on \nphp_admin_flag[xdebug."
"profiler_enable] = off\n")
# Disable xdebug
if not WOShellExec.cmd_exec(
self, "grep -q \';zend_extension\'"
" /etc/php/8.0/mods-available/xdebug.ini"):
WOFileUtils.searchreplace(
self, "/etc/php/8.0/mods-available/"
"xdebug.ini",
"zend_extension", ";zend_extension")
# PHP and Debug pull configuration
if not os.path.exists('{0}22222/htdocs/fpm/status/'
.format(ngxroot)):
Log.debug(self, 'Creating directory '
'{0}22222/htdocs/fpm/status/ '
.format(ngxroot))
os.makedirs('{0}22222/htdocs/fpm/status/'
.format(ngxroot))
open('{0}22222/htdocs/fpm/status/debug80'
.format(ngxroot),
encoding='utf-8', mode='a').close()
open('{0}22222/htdocs/fpm/status/php80'
.format(ngxroot),
encoding='utf-8', mode='a').close()
# Write info.php
if not os.path.exists('{0}22222/htdocs/php/'
.format(ngxroot)):
Log.debug(self, 'Creating directory '
'{0}22222/htdocs/php/ '
.format(ngxroot))
os.makedirs('{0}22222/htdocs/php'
.format(ngxroot))
WOFileUtils.textwrite(
self, "{0}22222/htdocs/php/info.php"
.format(ngxroot), "<?php\nphpinfo();\n?>")
# write opcache clean for php80
if not os.path.exists('{0}22222/htdocs/cache/opcache'
.format(ngxroot)):
os.makedirs('{0}22222/htdocs/cache/opcache'
.format(ngxroot))
WOFileUtils.textwrite(
self, '{0}22222/htdocs/cache/opcache/php80.php'
.format(ngxroot),
'<?php opcache_reset(); ?>')
WOFileUtils.chown(self, "{0}22222/htdocs"
.format(ngxroot),
'www-data',
'www-data', recursive=True)
# enable imagick php extension
WOShellExec.cmd_exec(self, 'phpenmod -v ALL imagick')
# check service restart or rollback configuration
if not WOService.restart_service(self, 'php8.0-fpm'):
WOGit.rollback(self, ["/etc/php"], msg="Rollback PHP")
else:
WOGit.add(self, ["/etc/php"], msg="Adding PHP into Git")
if os.path.exists('/etc/nginx/conf.d/upstream.conf'):
if not WOFileUtils.grepcheck(
self, '/etc/nginx/conf.d/upstream.conf', 'php81'):
data = dict(php="9000", debug="9001",
php7="9070", debug7="9170",
php8="9080", debug8="9180",
release=WOVar.wo_version)
WOTemplate.deploy(
self, '/etc/nginx/conf.d/upstream.conf',
'upstream.mustache', data, True)
WOConf.nginxcommon(self)
# php8.1 configuration
if set(WOVar.wo_php81).issubset(set(apt_packages)):
WOGit.add(self, ["/etc/php"], msg="Adding PHP into Git")
Log.info(self, "Configuring php8.1-fpm")
ngxroot = '/var/www/'
# Create log directories
if not os.path.exists('/var/log/php/8.1/'):
Log.debug(self, 'Creating directory /var/log/php/8.1/')
os.makedirs('/var/log/php/8.1/')
if not os.path.isfile('/etc/php/8.1/fpm/php.ini.orig'):
WOFileUtils.copyfile(self, '/etc/php/8.1/fpm/php.ini',
'/etc/php/8.1/fpm/php.ini.orig')
# Parse etc/php/8.1/fpm/php.ini
config = configparser.ConfigParser()
Log.debug(self, "configuring php file /etc/php/8.1/"
"fpm/php.ini")
config.read('/etc/php/8.1/fpm/php.ini.orig')
config['PHP']['expose_php'] = 'Off'
config['PHP']['post_max_size'] = '100M'
config['PHP']['upload_max_filesize'] = '100M'
config['PHP']['max_execution_time'] = '300'
config['PHP']['max_input_time'] = '300'
config['PHP']['max_input_vars'] = '20000'
config['Date']['date.timezone'] = WOVar.wo_timezone
config['opcache']['opcache.enable'] = '1'
config['opcache']['opcache.interned_strings_buffer'] = '8'
config['opcache']['opcache.max_accelerated_files'] = '10000'
config['opcache']['opcache.memory_consumption'] = '256'
config['opcache']['opcache.save_comments'] = '1'
config['opcache']['opcache.revalidate_freq'] = '5'
config['opcache']['opcache.consistency_checks'] = '0'
config['opcache']['opcache.validate_timestamps'] = '1'
config['opcache']['opcache.preload_user'] = 'www-data'
with open('/etc/php/8.1/fpm/php.ini',
encoding='utf-8', mode='w') as configfile:
Log.debug(self, "Writting php configuration into "
"/etc/php/8.1/fpm/php.ini")
config.write(configfile)
# Render php-fpm pool template for php8.1
data = dict(pid="/run/php/php8.1-fpm.pid",
error_log="/var/log/php8.1-fpm.log",
include="/etc/php/8.1/fpm/pool.d/*.conf")
WOTemplate.deploy(
self, '/etc/php/8.1/fpm/php-fpm.conf',
'php-fpm.mustache', data)
data = dict(pool='www-php81', listen='php81-fpm.sock',
user='www-data',
group='www-data', listenuser='root',
listengroup='www-data', openbasedir=True)
WOTemplate.deploy(self, '/etc/php/8.1/fpm/pool.d/www.conf',
'php-pool.mustache', data)
data = dict(pool='www-two-php81', listen='php81-two-fpm.sock',
user='www-data',
group='www-data', listenuser='root',
listengroup='www-data', openbasedir=True)
WOTemplate.deploy(self, '/etc/php/8.1/fpm/pool.d/www-two.conf',
'php-pool.mustache', data)
# Generate /etc/php/8.1/fpm/pool.d/debug.conf
WOFileUtils.copyfile(self, "/etc/php/8.1/fpm/pool.d/www.conf",
"/etc/php/8.1/fpm/pool.d/debug.conf")
WOFileUtils.searchreplace(self, "/etc/php/8.1/fpm/pool.d/"
"debug.conf", "[www-php81]", "[debug]")
config = configparser.ConfigParser()
config.read('/etc/php/8.1/fpm/pool.d/debug.conf')
config['debug']['listen'] = '127.0.0.1:9181'
config['debug']['rlimit_core'] = 'unlimited'
config['debug']['slowlog'] = '/var/log/php/8.1/slow.log'
config['debug']['request_slowlog_timeout'] = '10s'
with open('/etc/php/8.1/fpm/pool.d/debug.conf',
encoding='utf-8', mode='w') as confifile:
Log.debug(self, "writting PHP 8.1 configuration into "
"/etc/php/8.1/fpm/pool.d/debug.conf")
config.write(confifile)
with open("/etc/php/8.1/fpm/pool.d/debug.conf",
encoding='utf-8', mode='a') as myfile:
myfile.write(
"php_admin_value[xdebug.profiler_output_dir] "
"= /tmp/ \nphp_admin_value[xdebug.profiler_"
"output_name] = cachegrind.out.%p-%H-%R "
"\nphp_admin_flag[xdebug.profiler_enable"
"_trigger] = on \nphp_admin_flag[xdebug."
"profiler_enable] = off\n")
# Disable xdebug
if not WOShellExec.cmd_exec(
self, "grep -q \';zend_extension\'"
" /etc/php/8.1/mods-available/xdebug.ini"):
WOFileUtils.searchreplace(
self, "/etc/php/8.1/mods-available/"
"xdebug.ini",
"zend_extension", ";zend_extension")
# PHP and Debug pull configuration
if not os.path.exists('{0}22222/htdocs/fpm/status/'
.format(ngxroot)):
Log.debug(self, 'Creating directory '
'{0}22222/htdocs/fpm/status/ '
.format(ngxroot))
os.makedirs('{0}22222/htdocs/fpm/status/'
.format(ngxroot))
open('{0}22222/htdocs/fpm/status/debug81'
.format(ngxroot),
encoding='utf-8', mode='a').close()
open('{0}22222/htdocs/fpm/status/php81'
.format(ngxroot),
encoding='utf-8', mode='a').close()
# Write info.php
if not os.path.exists('{0}22222/htdocs/php/'
.format(ngxroot)):
Log.debug(self, 'Creating directory '
'{0}22222/htdocs/php/ '
.format(ngxroot))
os.makedirs('{0}22222/htdocs/php'
.format(ngxroot))
WOFileUtils.textwrite(
self, "{0}22222/htdocs/php/info.php"
.format(ngxroot), "<?php\nphpinfo();\n?>")
# write opcache clean for php81
if not os.path.exists('{0}22222/htdocs/cache/opcache'
.format(ngxroot)):
os.makedirs('{0}22222/htdocs/cache/opcache'
.format(ngxroot))
WOFileUtils.textwrite(
self, '{0}22222/htdocs/cache/opcache/php81.php'
.format(ngxroot),
'<?php opcache_reset(); ?>')
WOFileUtils.chown(self, "{0}22222/htdocs"
.format(ngxroot),
'www-data',
'www-data', recursive=True)
# enable imagick php extension
WOShellExec.cmd_exec(self, 'phpenmod -v ALL imagick')
# check service restart or rollback configuration
if not WOService.restart_service(self, 'php8.1-fpm'):
WOGit.rollback(self, ["/etc/php"], msg="Rollback PHP")
else:
WOGit.add(self, ["/etc/php"], msg="Adding PHP into Git")
if os.path.exists('/etc/nginx/conf.d/upstream.conf'):
if not WOFileUtils.grepcheck(
self, '/etc/nginx/conf.d/upstream.conf', 'php81'):
data = dict(php="9000", debug="9001",
php7="9070", debug7="9170",
php8="9080", debug8="9180",
release=WOVar.wo_version)
WOTemplate.deploy(
self, '/etc/nginx/conf.d/upstream.conf',
'upstream.mustache', data, True)
WOConf.nginxcommon(self)
# create mysql config if it doesn't exist # create mysql config if it doesn't exist
if "mariadb-server" in apt_packages: if "mariadb-server" in apt_packages:
WOGit.add(self, ["/etc/mysql"], msg="Adding MySQL into Git") WOGit.add(self, ["/etc/mysql"], msg="Adding MySQL into Git")

View File

@@ -24,6 +24,8 @@ class WOStackStatusController(CementBaseController):
pargs.php72 or pargs.php72 or
pargs.php73 or pargs.php73 or
pargs.php74 or pargs.php74 or
pargs.php80 or
pargs.php81 or
pargs.mysql or pargs.mysql or
pargs.redis or pargs.redis or
pargs.fail2ban or pargs.fail2ban or
@@ -56,6 +58,14 @@ class WOStackStatusController(CementBaseController):
services = services + ['php7.4-fpm'] services = services + ['php7.4-fpm']
else: else:
Log.info(self, "PHP7.4-FPM is not installed") Log.info(self, "PHP7.4-FPM is not installed")
if os.path.exists('{0}'.format(wo_system) + 'php8.0-fpm.service'):
services = services + ['php8.0-fpm']
else:
Log.info(self, "PHP8.0-FPM is not installed")
if os.path.exists('{0}'.format(wo_system) + 'php8.1-fpm.service'):
services = services + ['php8.1-fpm']
else:
Log.info(self, "PHP8.1-FPM is not installed")
if pargs.php72: if pargs.php72:
if os.path.exists('{0}'.format(wo_system) + 'php7.2-fpm.service'): if os.path.exists('{0}'.format(wo_system) + 'php7.2-fpm.service'):
@@ -75,6 +85,18 @@ class WOStackStatusController(CementBaseController):
else: else:
Log.info(self, "PHP7.4-FPM is not installed") Log.info(self, "PHP7.4-FPM is not installed")
if pargs.php80:
if os.path.exists('{0}'.format(wo_system) + 'php8.0-fpm.service'):
services = services + ['php8.0-fpm']
else:
Log.info(self, "PHP8.0-FPM is not installed")
if pargs.php81:
if os.path.exists('{0}'.format(wo_system) + 'php8.1-fpm.service'):
services = services + ['php8.1-fpm']
else:
Log.info(self, "PHP8.1-FPM is not installed")
if pargs.mysql: if pargs.mysql:
if ((WOVar.wo_mysql_host == "localhost") or if ((WOVar.wo_mysql_host == "localhost") or
(WOVar.wo_mysql_host == "127.0.0.1")): (WOVar.wo_mysql_host == "127.0.0.1")):
@@ -125,7 +147,7 @@ class WOStackStatusController(CementBaseController):
pargs = self.app.pargs pargs = self.app.pargs
if not (pargs.nginx or pargs.php or if not (pargs.nginx or pargs.php or
pargs.php72 or pargs.php73 or pargs.php72 or pargs.php73 or
pargs.php74 or pargs.php74 or pargs.php80 or pargs.php81 or
pargs.mysql or pargs.mysql or
pargs.fail2ban or pargs.fail2ban or
pargs.netdata or pargs.netdata or
@@ -173,6 +195,18 @@ class WOStackStatusController(CementBaseController):
else: else:
Log.info(self, "PHP7.4-FPM is not installed") Log.info(self, "PHP7.4-FPM is not installed")
if pargs.php80:
if os.path.exists('{0}'.format(wo_system) + 'php8.0-fpm.service'):
services = services + ['php8.0-fpm']
else:
Log.info(self, "PHP8.0-FPM is not installed")
if pargs.php81:
if os.path.exists('{0}'.format(wo_system) + 'php8.1-fpm.service'):
services = services + ['php8.1-fpm']
else:
Log.info(self, "PHP8.1-FPM is not installed")
if pargs.mysql: if pargs.mysql:
if ((WOVar.wo_mysql_host == "localhost") or if ((WOVar.wo_mysql_host == "localhost") or
(WOVar.wo_mysql_host == "127.0.0.1")): (WOVar.wo_mysql_host == "127.0.0.1")):
@@ -223,7 +257,7 @@ class WOStackStatusController(CementBaseController):
pargs = self.app.pargs pargs = self.app.pargs
if not (pargs.nginx or pargs.php or if not (pargs.nginx or pargs.php or
pargs.php72 or pargs.php73 or pargs.php72 or pargs.php73 or
pargs.php74 or pargs.php74 or pargs.php80 or pargs.php81 or
pargs.mysql or pargs.mysql or
pargs.netdata or pargs.netdata or
pargs.proftpd or pargs.proftpd or
@@ -251,6 +285,14 @@ class WOStackStatusController(CementBaseController):
Log.info(self, "PHP7.3-FPM is not installed") Log.info(self, "PHP7.3-FPM is not installed")
if os.path.exists('{0}'.format(wo_system) + 'php7.4-fpm.service'): if os.path.exists('{0}'.format(wo_system) + 'php7.4-fpm.service'):
services = services + ['php7.4-fpm'] services = services + ['php7.4-fpm']
else:
Log.info(self, "PHP8.0-FPM is not installed")
if os.path.exists('{0}'.format(wo_system) + 'php8.0-fpm.service'):
services = services + ['php8.0-fpm']
else:
Log.info(self, "PHP8.1-FPM is not installed")
if os.path.exists('{0}'.format(wo_system) + 'php8.1-fpm.service'):
services = services + ['php8.1-fpm']
else: else:
Log.info(self, "PHP7.4-FPM is not installed") Log.info(self, "PHP7.4-FPM is not installed")
@@ -272,6 +314,18 @@ class WOStackStatusController(CementBaseController):
else: else:
Log.info(self, "PHP7.4-FPM is not installed") Log.info(self, "PHP7.4-FPM is not installed")
if pargs.php80:
if os.path.exists('{0}'.format(wo_system) + 'php8.0-fpm.service'):
services = services + ['php8.0-fpm']
else:
Log.info(self, "PHP8.0-FPM is not installed")
if pargs.php81:
if os.path.exists('{0}'.format(wo_system) + 'php8.1-fpm.service'):
services = services + ['php8.1-fpm']
else:
Log.info(self, "PHP8.1-FPM is not installed")
if pargs.mysql: if pargs.mysql:
if ((WOVar.wo_mysql_host == "localhost") or if ((WOVar.wo_mysql_host == "localhost") or
(WOVar.wo_mysql_host == "127.0.0.1")): (WOVar.wo_mysql_host == "127.0.0.1")):
@@ -324,6 +378,8 @@ class WOStackStatusController(CementBaseController):
pargs.php72 or pargs.php72 or
pargs.php73 or pargs.php73 or
pargs.php74 or pargs.php74 or
pargs.php80 or
pargs.php81 or
pargs.mysql or pargs.mysql or
pargs.netdata or pargs.netdata or
pargs.proftpd or pargs.proftpd or
@@ -374,6 +430,18 @@ class WOStackStatusController(CementBaseController):
else: else:
Log.info(self, "PHP7.4-FPM is not installed") Log.info(self, "PHP7.4-FPM is not installed")
if pargs.php80:
if os.path.exists('{0}'.format(wo_system) + 'php8.0-fpm.service'):
services = services + ['php8.0-fpm']
else:
Log.info(self, "PHP8.0-FPM is not installed")
if pargs.php81:
if os.path.exists('{0}'.format(wo_system) + 'php8.1-fpm.service'):
services = services + ['php8.1-fpm']
else:
Log.info(self, "PHP8.1-FPM is not installed")
if pargs.mysql: if pargs.mysql:
if ((WOVar.wo_mysql_host == "localhost") or if ((WOVar.wo_mysql_host == "localhost") or
(WOVar.wo_mysql_host == "127.0.0.1")): (WOVar.wo_mysql_host == "127.0.0.1")):
@@ -435,7 +503,7 @@ class WOStackStatusController(CementBaseController):
pargs = self.app.pargs pargs = self.app.pargs
if not (pargs.nginx or pargs.php or if not (pargs.nginx or pargs.php or
pargs.php72 or pargs.php73 or pargs.php72 or pargs.php73 or
pargs.php74 or pargs.php74 or pargs.php80 or pargs.php81 or
pargs.mysql or pargs.mysql or
pargs.netdata or pargs.netdata or
pargs.proftpd or pargs.proftpd or
@@ -465,6 +533,14 @@ class WOStackStatusController(CementBaseController):
services = services + ['php7.4-fpm'] services = services + ['php7.4-fpm']
else: else:
Log.info(self, "PHP7.4-FPM is not installed") Log.info(self, "PHP7.4-FPM is not installed")
if os.path.exists('{0}'.format(wo_system) + 'php8.0-fpm.service'):
services = services + ['php8.0-fpm']
else:
Log.info(self, "PHP8.0-FPM is not installed")
if os.path.exists('{0}'.format(wo_system) + 'php8.1-fpm.service'):
services = services + ['php8.1-fpm']
else:
Log.info(self, "PHP8.1-FPM is not installed")
if pargs.php72: if pargs.php72:
if os.path.exists('{0}'.format(wo_system) + 'php7.2-fpm.service'): if os.path.exists('{0}'.format(wo_system) + 'php7.2-fpm.service'):
@@ -484,6 +560,18 @@ class WOStackStatusController(CementBaseController):
else: else:
Log.info(self, "PHP7.4-FPM is not installed") Log.info(self, "PHP7.4-FPM is not installed")
if pargs.php80:
if os.path.exists('{0}'.format(wo_system) + 'php8.0-fpm.service'):
services = services + ['php8.0-fpm']
else:
Log.info(self, "PHP8.0-FPM is not installed")
if pargs.php81:
if os.path.exists('{0}'.format(wo_system) + 'php8.1-fpm.service'):
services = services + ['php8.1-fpm']
else:
Log.info(self, "PHP8.1-FPM is not installed")
if pargs.mysql: if pargs.mysql:
if ((WOVar.wo_mysql_host == "localhost") or if ((WOVar.wo_mysql_host == "localhost") or
(WOVar.wo_mysql_host == "127.0.0.1")): (WOVar.wo_mysql_host == "127.0.0.1")):

View File

@@ -39,6 +39,10 @@ class WOStackUpgradeController(CementBaseController):
dict(help='Upgrade PHP 7.3 stack', action='store_true')), dict(help='Upgrade PHP 7.3 stack', action='store_true')),
(['--php74'], (['--php74'],
dict(help='Upgrade PHP 7.4 stack', action='store_true')), dict(help='Upgrade PHP 7.4 stack', action='store_true')),
(['--php80'],
dict(help='Upgrade PHP 8.0 stack', action='store_true')),
(['--php81'],
dict(help='Upgrade PHP 8.1 stack', action='store_true')),
(['--mysql'], (['--mysql'],
dict(help='Upgrade MySQL stack', action='store_true')), dict(help='Upgrade MySQL stack', action='store_true')),
(['--mariadb'], (['--mariadb'],
@@ -81,7 +85,8 @@ class WOStackUpgradeController(CementBaseController):
pargs = self.app.pargs pargs = self.app.pargs
wo_phpmyadmin = WODownload.pma_release(self) wo_phpmyadmin = WODownload.pma_release(self)
if not (pargs.web or pargs.nginx or pargs.php or if not (pargs.web or pargs.nginx or pargs.php or
pargs.php72 or pargs.php73 or pargs.php74 or pargs.mysql or pargs.php72 or pargs.php73 or pargs.php74 or
pargs.php80 or pargs.php81 or pargs.mysql or
pargs.mariadb or pargs.ngxblocker or pargs.all pargs.mariadb or pargs.ngxblocker or pargs.all
or pargs.netdata or pargs.wpcli or pargs.composer or or pargs.netdata or pargs.wpcli or pargs.composer or
pargs.phpmyadmin or pargs.adminer or pargs.dashboard or pargs.phpmyadmin or pargs.adminer or pargs.dashboard or
@@ -108,6 +113,8 @@ class WOStackUpgradeController(CementBaseController):
pargs.php72 = True pargs.php72 = True
pargs.php73 = True pargs.php73 = True
pargs.php74 = True pargs.php74 = True
pargs.php80 = True
pargs.php81 = True
pargs.mysql = True pargs.mysql = True
pargs.wpcli = True pargs.wpcli = True
@@ -153,6 +160,18 @@ class WOStackUpgradeController(CementBaseController):
apt_packages = apt_packages + WOVar.wo_php74 + \ apt_packages = apt_packages + WOVar.wo_php74 + \
WOVar.wo_php_extra WOVar.wo_php_extra
# php 8.0
if pargs.php80:
if WOAptGet.is_installed(self, 'php8.0-fpm'):
apt_packages = apt_packages + WOVar.wo_php80 + \
WOVar.wo_php_extra
# php 8.1
if pargs.php81:
if WOAptGet.is_installed(self, 'php8.1-fpm'):
apt_packages = apt_packages + WOVar.wo_php81 + \
WOVar.wo_php_extra
# mysql # mysql
if pargs.mysql: if pargs.mysql:
if WOShellExec.cmd_exec(self, 'mysqladmin ping'): if WOShellExec.cmd_exec(self, 'mysqladmin ping'):
@@ -284,6 +303,8 @@ class WOStackUpgradeController(CementBaseController):
if not ("php7.2-fpm" in apt_packages or if not ("php7.2-fpm" in apt_packages or
"php7.3-fpm" in apt_packages or "php7.3-fpm" in apt_packages or
"php7.4-fpm" in apt_packages or "php7.4-fpm" in apt_packages or
"php8.0-fpm" in apt_packages or
"php8.1-fpm" in apt_packages or
"redis-server" in apt_packages or "redis-server" in apt_packages or
"nginx-custom" in apt_packages or "nginx-custom" in apt_packages or
"mariadb-server" in apt_packages): "mariadb-server" in apt_packages):

View File

@@ -166,7 +166,9 @@ class WOService():
.format(service_name)) .format(service_name))
if is_exist[0] == 0 or service_name in ['php7.2-fpm', if is_exist[0] == 0 or service_name in ['php7.2-fpm',
'php7.3-fpm', 'php7.3-fpm',
'php7.4-fpm']: 'php7.4-fpm',
'php8.0-fpm',
'php8.1-fpm',]:
retcode = subprocess.getstatusoutput('service {0} status' retcode = subprocess.getstatusoutput('service {0} status'
.format(service_name)) .format(service_name))
if retcode[0] == 0: if retcode[0] == 0:

View File

@@ -14,7 +14,7 @@ class WOVar():
"""Intialization of core variables""" """Intialization of core variables"""
# WordOps version # WordOps version
wo_version = "3.13.3" wo_version = "3.13.3-fork"
# WordOps packages versions # WordOps packages versions
wo_wp_cli = "2.4.0" wo_wp_cli = "2.4.0"
wo_adminer = "4.7.5" wo_adminer = "4.7.5"
@@ -137,13 +137,10 @@ class WOVar():
wo_nginx = ["nginx-custom", "nginx-wo"] wo_nginx = ["nginx-custom", "nginx-wo"]
wo_nginx_key = '188C9FB063F0247A' wo_nginx_key = '188C9FB063F0247A'
wo_module = ["fpm", "curl", "gd", "imap", wo_module = ["bcmath", "cli", "common", "curl", "fpm", "gd", "igbinary",
"readline", "common", "imagick", "imap", "intl", "mbstring", "memcached", "msgpack",
"cli", "mbstring", "intl", "mysql", "opcache", "readline", "redis", "soap", "xdebug",
"bcmath", "mysql", "opcache", "xml", "zip"]
"zip", "xml", "soap", "memcached",
"imagick", "igbinary", "msgpack",
"redis", "xdebug"]
wo_php72 = [] wo_php72 = []
for module in wo_module: for module in wo_module:
wo_php72 = wo_php72 + ["php7.2-{0}".format(module)] wo_php72 = wo_php72 + ["php7.2-{0}".format(module)]
@@ -152,9 +149,15 @@ class WOVar():
for module in wo_module: for module in wo_module:
wo_php73 = wo_php73 + ["php7.3-{0}".format(module)] wo_php73 = wo_php73 + ["php7.3-{0}".format(module)]
wo_php73 = wo_php73 + ["php7.3-recode"] wo_php73 = wo_php73 + ["php7.3-recode"]
wo_php74 = [] wo_php74 = ["geoip", "json"]
for module in wo_module: for module in wo_module:
wo_php74 = wo_php74 + ["php7.4-{0}".format(module)] wo_php74 = wo_php74 + ["php7.4-{0}".format(module)]
wo_php80 = []
for module in wo_module:
wo_php80 = wo_php80 + ["php8.0-{0}".format(module)]
wo_php81 = []
for module in wo_module:
wo_php81 = wo_php81 + ["php8.1-{0}".format(module)]
wo_php_extra = ["graphviz"] wo_php_extra = ["graphviz"]