#482: Add PHP 8.2 to WO

This commit is contained in:
Janio Sarmento
2022-12-10 10:37:20 -03:00
parent 2c95e03a1e
commit a76d76ce5f
12 changed files with 556 additions and 69 deletions

View File

@@ -42,7 +42,7 @@
- **Easy to install** : One step automated installer with migration from EasyEngine v3 support - **Easy to install** : One step automated installer with migration from EasyEngine v3 support
- **Fast deployment** : Fast and automated WordPress, Nginx, PHP, MySQL & Redis installation - **Fast deployment** : Fast and automated WordPress, Nginx, PHP, MySQL & Redis installation
- **Custom Nginx build** : Nginx 1.22.1 - TLS v1.3 Cloudflare HTTP/2 HPACK & Brotli support - **Custom Nginx build** : Nginx 1.22.1 - TLS v1.3 Cloudflare HTTP/2 HPACK & Brotli support
- **Up-to-date** : PHP 7.2, 7.3, 7.4, 8.0 & 8.1 - MariaDB 10.6 & Redis 7.0 - **Up-to-date** : PHP 7.2, 7.3, 7.4, 8.0, 8.1 & 8.2 - MariaDB 10.6 & Redis 7.0
- **Secured** : Hardened WordPress security with strict Nginx location directives - **Secured** : Hardened WordPress security with strict Nginx location directives
- **Powerful** : Optimized Nginx configurations with multiple cache backends support - **Powerful** : Optimized Nginx configurations with multiple cache backends support
- **SSL** : Domain, Subdomain & Wildcard Let's Encrypt SSL certificates with DNS API support - **SSL** : Domain, Subdomain & Wildcard Let's Encrypt SSL certificates with DNS API support
@@ -87,8 +87,8 @@ Detailed Getting Started guide with additional installation methods can be found
### Standard WordPress sites ### Standard WordPress sites
```bash ```bash
wo site create example.com --wp # install wordpress with PHP 8.0 without any page caching wo site create example.com --wp # install wordpress with PHP 8.1 without any page caching
wo site create example.com --wp --php81 # install wordpress with PHP 8.1 without any page caching wo site create example.com --wp --php82 # install wordpress with PHP 8.2 without any page caching
wo site create example.com --wpfc # install wordpress + nginx fastcgi_cache wo site create example.com --wpfc # install wordpress + nginx fastcgi_cache
wo site create example.com --wpredis # install wordpress + nginx redis_cache wo site create example.com --wpredis # install wordpress + nginx redis_cache
wo site create example.com --wprocket # install wordpress with WP-Rocket plugin wo site create example.com --wprocket # install wordpress with WP-Rocket plugin
@@ -125,7 +125,8 @@ wo site create example.com --html # create example.com for static/html sites
wo site create example.com --php # create example.com with php 8.0 support wo site create example.com --php # create example.com with php 8.0 support
wo site create example.com --php80 # create example.com with php 8.0 support wo site create example.com --php80 # create example.com with php 8.0 support
wo site create example.com --php81 # create example.com with php 8.1 support wo site create example.com --php81 # create example.com with php 8.1 support
wo site create example.com --mysql # create example.com with php 8.0 & mysql support wo site create example.com --php82 # create example.com with php 8.1 support
wo site create example.com --mysql # create example.com with php 8.1 & mysql support
wo site create example.com --mysql --php81 # create example.com with php 8.1 & mysql support wo site create example.com --mysql --php81 # create example.com with php 8.1 & mysql support
wo site create example.com --proxy=127.0.0.1:3000 # create example.com with nginx as reverse-proxy wo site create example.com --proxy=127.0.0.1:3000 # create example.com with nginx as reverse-proxy
``` ```
@@ -138,6 +139,7 @@ wo site update example.com --php73 # switch to PHP 7.3
wo site update example.com --php74 # switch to PHP 7.4 wo site update example.com --php74 # switch to PHP 7.4
wo site update example.com --php80 # switch to PHP 8.0 wo site update example.com --php80 # switch to PHP 8.0
wo site update example.com --php81 # switch to PHP 8.1 wo site update example.com --php81 # switch to PHP 8.1
wo site update example.com --php82 # switch to PHP 8.2
``` ```
### Sites secured with Let's Encrypt ### Sites secured with Let's Encrypt

View File

@@ -74,12 +74,12 @@ _wo_complete()
# HANDLE EVERYTHING AFTER THE THIRD LEVEL NAMESPACE # HANDLE EVERYTHING AFTER THE THIRD LEVEL NAMESPACE
"install" | "purge" | "remove" ) "install" | "purge" | "remove" )
COMPREPLY=( $(compgen \ COMPREPLY=( $(compgen \
-W "--web --admin --security --nginx --php72 --php73 --php74 --php80 --php81 --mysql --wpcli --phpmyadmin --adminer --utils --redis --phpredisadmin --composer --netdata --fail2ban --ufw --dashboard --proftpd --clamav --sendmail --ngxblocker --mysqlclient --mysqltuner --extplorer --nanorc --cheat --all --force" \ -W "--web --admin --security --nginx --php72 --php73 --php74 --php80 --php81 --php82 --mysql --wpcli --phpmyadmin --adminer --utils --redis --phpredisadmin --composer --netdata --fail2ban --ufw --dashboard --proftpd --clamav --sendmail --ngxblocker --mysqlclient --mysqltuner --extplorer --nanorc --cheat --all --force" \
-- $cur) ) -- $cur) )
;; ;;
"upgrade" ) "upgrade" )
COMPREPLY=( $(compgen \ COMPREPLY=( $(compgen \
-W "--web --admin --utils --nginx --php72 --php73 --php74 --php80 --php81 --mysql --all --netdata --composer --phpmyadmin --adminer --dashboard --mysqltuner --wpcli --force" \ -W "--web --admin --utils --nginx --php72 --php73 --php74 --php80 --php81 --php82 --mysql --all --netdata --composer --phpmyadmin --adminer --dashboard --mysqltuner --wpcli --force" \
-- $cur) ) -- $cur) )
;; ;;
"migrate") "migrate")
@@ -89,7 +89,7 @@ _wo_complete()
;; ;;
"start" | "stop" | "reload" | "restart" | "status") "start" | "stop" | "reload" | "restart" | "status")
COMPREPLY=( $(compgen \ COMPREPLY=( $(compgen \
-W "--nginx --php --php72 --php73 --php74 --php80 --php81 --mysql --redis --fail2ban --ufw --netdata -proftpd" \ -W "--nginx --php --php72 --php73 --php74 --php80 --php81 --php82 --mysql --redis --fail2ban --ufw --netdata -proftpd" \
-- $cur) ) -- $cur) )
;; ;;
"list") "list")
@@ -159,13 +159,13 @@ _wo_complete()
"create") "create")
COMPREPLY=( $(compgen \ COMPREPLY=( $(compgen \
-W "--user --pass --email --html --php --php72 --php73 --php74 --php80 --php81 --mysql --wp --wpsubdir --wpsubdomain --wpfc --wpsc --proxy= --wpredis --wprocket --wpce -le --letsencrypt --letsencrypt=wildcard -le=wildcard --dns --dns=dns_cf --dns=dns_dgon" \ -W "--user --pass --email --html --php --php72 --php73 --php74 --php80 --php81 --php82 --mysql --wp --wpsubdir --wpsubdomain --wpfc --wpsc --proxy= --wpredis --wprocket --wpce -le --letsencrypt --letsencrypt=wildcard -le=wildcard --dns --dns=dns_cf --dns=dns_dgon" \
-- $cur) ) -- $cur) )
;; ;;
"update") "update")
COMPREPLY=( $(compgen \ COMPREPLY=( $(compgen \
-W "--password --php --php72 --php73 --php74 --php80 --php81 --mysql --wp --wpsubdir --wpsubdomain --wpfc --wpsc --wpredis --wprocket --wpce -le -le=off --letsencrypt --letsencrypt=off --letsencrypt=clean -le=wildcard -le=clean --dns --dns=dns_cf --dns=dns_dgon --ngxblocker --ngxblocker=off" \ -W "--password --php --php72 --php73 --php74 --php80 --php81 --php82 --mysql --wp --wpsubdir --wpsubdomain --wpfc --wpsc --wpredis --wprocket --wpce -le -le=off --letsencrypt --letsencrypt=off --letsencrypt=clean -le=wildcard -le=clean --dns --dns=dns_cf --dns=dns_dgon --ngxblocker --ngxblocker=off" \
-- $cur) ) -- $cur) )
;; ;;
"delete") "delete")
@@ -211,9 +211,9 @@ _wo_complete()
"--wp") "--wp")
if [ "${COMP_WORDS[1]}" != "debug" ]; then if [ "${COMP_WORDS[1]}" != "debug" ]; then
if [ "${COMP_WORDS[2]}" == "create" ]; then if [ "${COMP_WORDS[2]}" == "create" ]; then
retlist="--wp --wpsc --wpfc --user --email --pass --wpredis --wprocket --wpce --letsencrypt -le --letsencrypt=wildcard --dns --dns=dns_cf --dns=dns_dgon --php72 --php73 --php74 --php80 --php81" retlist="--wp --wpsc --wpfc --user --email --pass --wpredis --wprocket --wpce --letsencrypt -le --letsencrypt=wildcard --dns --dns=dns_cf --dns=dns_dgon --php72 --php73 --php74 --php80 --php81 --php82"
elif [ "${COMP_WORDS[2]}" == "update" ]; then elif [ "${COMP_WORDS[2]}" == "update" ]; then
retlist="--wp --wpfc --wpsc --php72 --php73 --php74 --php80 --php81 --wpredis --wprocket --wpce -le --letsencrypt --letsencrypt=wildcard -le=wildcard --dns --dns=dns_cf --dns=dns_dgon" retlist="--wp --wpfc --wpsc --php72 --php73 --php74 --php80 --php81 --php82 --wpredis --wprocket --wpce -le --letsencrypt --letsencrypt=wildcard -le=wildcard --dns --dns=dns_cf --dns=dns_dgon"
else else
retlist="" retlist=""
fi fi
@@ -230,9 +230,9 @@ _wo_complete()
"--wpsubdir" | "--wpsubdomain") "--wpsubdir" | "--wpsubdomain")
if [ "${COMP_WORDS[1]}" != "debug" ]; then if [ "${COMP_WORDS[1]}" != "debug" ]; then
if [ "${COMP_WORDS[2]}" == "create" ]; then if [ "${COMP_WORDS[2]}" == "create" ]; then
retlist="--wpsc --wpfc --user --email --pass --wpredis --wprocket --wpce -le -le=wildcard --letsencrypt --letsencrypt=wildcard --php72 --php73 --php74 --php80 --php81 --dns --dns=dns_cf --dns=dns_dgon" retlist="--wpsc --wpfc --user --email --pass --wpredis --wprocket --wpce -le -le=wildcard --letsencrypt --letsencrypt=wildcard --php72 --php73 --php74 --php80 --php81 --php82 --dns --dns=dns_cf --dns=dns_dgon"
elif [ "${COMP_WORDS[2]}" == "update" ]; then elif [ "${COMP_WORDS[2]}" == "update" ]; then
retlist="--wpfc --wpsc --php72 --php73 --php74 --php80 --php81 --wpredis --wprocket --wpce -le -le=wildcard --letsencrypt --letsencrypt=wildcard --dns --dns=dns_cf --dns=dns_dgon" retlist="--wpfc --wpsc --php72 --php73 --php74 --php80 --php81 --php82 --wpredis --wprocket --wpce -le -le=wildcard --letsencrypt --letsencrypt=wildcard --dns --dns=dns_cf --dns=dns_dgon"
else else
retlist="" retlist=""
fi fi
@@ -248,7 +248,7 @@ _wo_complete()
"--wpredis" | "--wprocket" | "--wpce" | "--wpfc" | "--wpsc" | "--wpsubdir" | "--wpsubdomain" | "--user" | "--pass" | "--email" | "--wp") "--wpredis" | "--wprocket" | "--wpce" | "--wpfc" | "--wpsc" | "--wpsubdir" | "--wpsubdomain" | "--user" | "--pass" | "--email" | "--wp")
if [ "${COMP_WORDS[2]}" == "create" ]; then if [ "${COMP_WORDS[2]}" == "create" ]; then
retlist="--user --pass --email --wp --wpsubdir --wpsubdomain --wpfc --wpsc --wpredis --wprocket --wpce --php72 --php73 --php74 --php80 --php81 -le -le=wildcard --letsencrypt --letsencrypt=wildcard --dns --dns=dns_cf --dns=dns_dgon" retlist="--user --pass --email --wp --wpsubdir --wpsubdomain --wpfc --wpsc --wpredis --wprocket --wpce --php72 --php73 --php74 --php80 --php81 --php82 -le -le=wildcard --letsencrypt --letsencrypt=wildcard --dns --dns=dns_cf --dns=dns_dgon"
else else
retlist="" retlist=""
fi fi
@@ -261,7 +261,7 @@ _wo_complete()
"--wpredis" | "--wprocket" | "--wpce" | "--wpfc" | "--wpsc") "--wpredis" | "--wprocket" | "--wpce" | "--wpfc" | "--wpsc")
if [ "${COMP_WORDS[2]}" == "update" ]; then if [ "${COMP_WORDS[2]}" == "update" ]; then
retlist="--password --php72 --php73 --php74 --php80 --php81 --mysql --wp --wpsubdir --wpsubdomain -le --letsencrypt --dns --dns=dns_cf --dns=dns_dgon" retlist="--password --php72 --php73 --php74 --php80 --php81 --php82 --mysql --wp --wpsubdir --wpsubdomain -le --letsencrypt --dns --dns=dns_cf --dns=dns_dgon"
else else
retlist="" retlist=""
fi fi
@@ -272,11 +272,11 @@ _wo_complete()
-- $cur) ) -- $cur) )
;; ;;
"--web" | "--admin" | "--nginx" | "--php" | "--php73" | "--php74" | "--php80" | "--php81" | "--mysql" | "--wpcli" | "--phpmyadmin" | "--adminer" | "--utils" | "--fail2ban" | "--ufw" | "--redis" | "--phpredisadmin" | "--netdata" | "--sendmail" | "--composer" | "--proftpd" | "--cheat" | "--nanorc" | "--clamav" | "--dashboard") "--web" | "--admin" | "--nginx" | "--php" | "--php73" | "--php74" | "--php80" | "--php81" | "--php82" | "--mysql" | "--wpcli" | "--phpmyadmin" | "--adminer" | "--utils" | "--fail2ban" | "--ufw" | "--redis" | "--phpredisadmin" | "--netdata" | "--sendmail" | "--composer" | "--proftpd" | "--cheat" | "--nanorc" | "--clamav" | "--dashboard")
if [[ "${COMP_WORDS[2]}" == "install" || "${COMP_WORDS[2]}" == "purge" || "${COMP_WORDS[2]}" == "remove" ]]; then if [[ "${COMP_WORDS[2]}" == "install" || "${COMP_WORDS[2]}" == "purge" || "${COMP_WORDS[2]}" == "remove" ]]; then
retlist="--web --admin --security --nginx --php --php73 --php74 --php80 --php81 --mysql --wpcli --phpmyadmin --adminer --utils --redis --fail2ban --ufw --phpredisadmin --netdata --force" retlist="--web --admin --security --nginx --php --php73 --php74 --php80 --php81 --php82 --mysql --wpcli --phpmyadmin --adminer --utils --redis --fail2ban --ufw --phpredisadmin --netdata --force"
elif [[ "${COMP_WORDS[2]}" == "start" || "${COMP_WORDS[2]}" == "reload" || "${COMP_WORDS[2]}" == "restart" || "${COMP_WORDS[2]}" == "stop" ]]; then elif [[ "${COMP_WORDS[2]}" == "start" || "${COMP_WORDS[2]}" == "reload" || "${COMP_WORDS[2]}" == "restart" || "${COMP_WORDS[2]}" == "stop" ]]; then
retlist="--nginx --php --php73 --php74 --php80 --php81 --mysql --redis --netdata --fail2ban --ufw" retlist="--nginx --php --php73 --php74 --php80 --php81 --php82 --mysql --redis --netdata --fail2ban --ufw"
elif [[ "${COMP_WORDS[1]}" == "debug" ]]; then elif [[ "${COMP_WORDS[1]}" == "debug" ]]; then
retlist="--start --nginx --php --php73 --fpm --fpm7 --mysql -i --interactive -stop --import-slow-log --import-slow-log-interval= -" retlist="--start --nginx --php --php73 --fpm --fpm7 --mysql -i --interactive -stop --import-slow-log --import-slow-log-interval= -"
if [[ $prev == '--mysql' ]]; then if [[ $prev == '--mysql' ]]; then
@@ -363,7 +363,7 @@ _wo_complete()
case "$mprev" in case "$mprev" in
"--user" | "--email" | "--pass") "--user" | "--email" | "--pass")
if [ "${COMP_WORDS[2]}" == "create" ]; then if [ "${COMP_WORDS[2]}" == "create" ]; then
retlist="--user --pass --email --html --php --php73 --php74 --php80 --php81 --mysql --wp --wpsubdir --wpsubdomain --wpfc --wpsc --wpredis --wprocket --wpce -le -le=wildcard --letsencrypt --letsencrypt=wildcard --dns --dns=dns_cf --dns=dns_dgon" retlist="--user --pass --email --html --php --php73 --php74 --php80 --php81 --php82 --mysql --wp --wpsubdir --wpsubdomain --wpfc --wpsc --wpredis --wprocket --wpce -le -le=wildcard --letsencrypt --letsencrypt=wildcard --dns --dns=dns_cf --dns=dns_dgon"
fi fi
ret="${retlist[@]/$prev}" ret="${retlist[@]/$prev}"
COMPREPLY=( $(compgen \ COMPREPLY=( $(compgen \

View File

@@ -32,9 +32,9 @@ echo -e "${CGREEN}#############################################${CEND}"
echo -e ' stack install ' echo -e ' stack install '
echo -e "${CGREEN}#############################################${CEND}" echo -e "${CGREEN}#############################################${CEND}"
if [ "$wo_distro" != "xenial" ]; then if [ "$wo_distro" != "xenial" ]; then
stack_list='nginx php php73 php74 php80 php81 mysql redis fail2ban clamav proftpd netdata phpmyadmin composer dashboard extplorer adminer redis sendmail phpredisadmin mysqltuner utils ufw cheat nanorc' stack_list='nginx php php73 php74 php80 php81 php82 mysql redis fail2ban clamav proftpd netdata phpmyadmin composer dashboard extplorer adminer redis sendmail phpredisadmin mysqltuner utils ufw cheat nanorc'
else else
stack_list='nginx php php73 php74 php80 php81 mysql redis fail2ban clamav proftpd netdata phpmyadmin composer dashboard extplorer adminer redis phpredisadmin mysqltuner utils ufw cheat nanorc' stack_list='nginx php php73 php74 php80 php81 php82 mysql redis fail2ban clamav proftpd netdata phpmyadmin composer dashboard extplorer adminer redis phpredisadmin mysqltuner utils ufw cheat nanorc'
fi fi
for stack in $stack_list; do for stack in $stack_list; do
echo -ne " Installing $stack [..]\r" echo -ne " Installing $stack [..]\r"
@@ -54,7 +54,7 @@ done
echo -e "${CGREEN}#############################################${CEND}" echo -e "${CGREEN}#############################################${CEND}"
echo -e ' Simple site create ' echo -e ' Simple site create '
echo -e "${CGREEN}#############################################${CEND}" echo -e "${CGREEN}#############################################${CEND}"
site_types='html php php72 php73 php74 php80 php81 mysql wp wpfc wpsc wpredis wpce wprocket wpsubdomain wpsubdir ngxblocker' site_types='html php php72 php73 php74 php80 php81 php82 mysql wp wpfc wpsc wpredis wpce wprocket wpsubdomain wpsubdir ngxblocker'
for site in $site_types; do for site in $site_types; do
echo -ne " Creating $site [..]\r" echo -ne " Creating $site [..]\r"
if { if {
@@ -194,6 +194,27 @@ done
echo echo
echo -e "${CGREEN}#############################################${CEND}" echo -e "${CGREEN}#############################################${CEND}"
echo echo
echo -e "${CGREEN}#############################################${CEND}"
echo -e ' wo site update --php82 '
echo -e "${CGREEN}#############################################${CEND}"
other_site_types='mysql php72 php73 wp wpfc wpsc wpredis wpce wprocket wpsubdomain wpsubdir'
for site in $other_site_types; do
echo -ne " Updating site to $site php82 [..]\r"
if {
wo site update ${site}.net --php81
} >>/var/log/wo/test.log; then
echo -ne " Updating site to $site php82 [${CGREEN}OK${CEND}]\\r"
echo -ne '\n'
else
echo -e " Updating site to $site php82 [${CRED}FAIL${CEND}]"
echo -ne '\n'
exit_script
fi
done
echo
echo -e "${CGREEN}#############################################${CEND}"
echo
wo site info wp.net wo site info wp.net
echo echo
echo -e "${CGREEN}#############################################${CEND}" echo -e "${CGREEN}#############################################${CEND}"
@@ -260,7 +281,7 @@ if [ -z "$1" ]; then
echo -e "${CGREEN}#############################################${CEND}" echo -e "${CGREEN}#############################################${CEND}"
echo -e ' wo stack upgrade ' echo -e ' wo stack upgrade '
echo -e "${CGREEN}#############################################${CEND}" echo -e "${CGREEN}#############################################${CEND}"
stack_upgrade='nginx php php72 php73 php74 php80 php81 mysql redis netdata dashboard phpmyadmin adminer fail2ban composer ngxblocker mysqltuner' stack_upgrade='nginx php php72 php73 php74 php80 php81 php82 mysql redis netdata dashboard phpmyadmin adminer fail2ban composer ngxblocker mysqltuner'
for stack in $stack_upgrade; do for stack in $stack_upgrade; do
echo -ne " Upgrading $stack [..]\r" echo -ne " Upgrading $stack [..]\r"
if { if {
@@ -407,7 +428,7 @@ wo info
echo -e "${CGREEN}#############################################${CEND}" echo -e "${CGREEN}#############################################${CEND}"
echo -e ' wo stack purge ' echo -e ' wo stack purge '
echo -e "${CGREEN}#############################################${CEND}" echo -e "${CGREEN}#############################################${CEND}"
stack_purge='nginx php php73 php74 php80 php81 mysql redis fail2ban clamav proftpd netdata phpmyadmin composer dashboard extplorer adminer redis ufw ngxblocker cheat nanorc' stack_purge='nginx php php73 php74 php80 php81 php82 mysql redis fail2ban clamav proftpd netdata phpmyadmin composer dashboard extplorer adminer redis ufw ngxblocker cheat nanorc'
for stack in $stack_purge; do for stack in $stack_purge; do
echo -ne " purging $stack [..]\r" echo -ne " purging $stack [..]\r"
if { if {

View File

@@ -41,6 +41,9 @@ class WOInfoController(CementBaseController):
(['--php81'], (['--php81'],
dict(help='Get PHP 8.1 configuration information', dict(help='Get PHP 8.1 configuration information',
action='store_true')), action='store_true')),
(['--php82'],
dict(help='Get PHP 8.2 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')),
@@ -508,6 +511,93 @@ 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_php82(self):
"""Display PHP information"""
version = os.popen("/usr/bin/php8.2 -v 2>/dev/null | "
"head -n1 | cut -d' ' -f2 |"
" cut -d'+' -f1 | tr -d '\n'").read
config = configparser.ConfigParser()
config.read('/etc/php/8.2/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.2/fpm/pool.d/www.conf'):
config.read('/etc/php/8.2/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-php82'):
wconfig = config['www-php82']
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.2/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"""
@@ -549,7 +639,7 @@ class WOInfoController(CementBaseController):
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 and not pargs.php80 and not pargs.php74 and not pargs.php80 and
not pargs.php81): not pargs.php81 and not pargs.php82):
pargs.nginx = True pargs.nginx = True
pargs.php = True pargs.php = True
pargs.mysql = True pargs.mysql = True
@@ -561,6 +651,8 @@ class WOInfoController(CementBaseController):
pargs.php80 = True pargs.php80 = True
if WOAptGet.is_installed(self, 'php8.1-fpm'): if WOAptGet.is_installed(self, 'php8.1-fpm'):
pargs.php81 = True pargs.php81 = True
if WOAptGet.is_installed(self, 'php8.2-fpm'):
pargs.php82 = 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
@@ -599,6 +691,12 @@ class WOInfoController(CementBaseController):
else: else:
Log.info(self, "PHP 8.1 is not installed") Log.info(self, "PHP 8.1 is not installed")
if pargs.php82:
if WOAptGet.is_installed(self, 'php8.2-fpm'):
self.info_php82()
else:
Log.info(self, "PHP 8.2 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

@@ -775,7 +775,8 @@ 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', 'php80', 'php81', 'proxy', 'mysql']: 'php73', 'php80', 'php81', 'php82',
'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 +
@@ -835,7 +836,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', 'php80', 'php81']: 'wpsubdomain', 'php73', 'php74', 'php80', 'php81', 'php82']:
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
@@ -873,19 +874,22 @@ def site_package_check(self, stype):
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.php80) or (pargs.php and pargs.php72) or (pargs.php and pargs.php80) or
(pargs.php and pargs.php81) or (pargs.php and pargs.php81) or (pargs.php and pargs.php82) or
(pargs.php73 and pargs.php74) or (pargs.php72 and pargs.php73) or (pargs.php72 and pargs.php73) or (pargs.php72 and pargs.php74) or
(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.php72 and pargs.php80) or (pargs.php72 and pargs.php81) or
(pargs.php73 and pargs.php81) or (pargs.php74 and pargs.php81) or (pargs.php72 and pargs.php82) or
(pargs.php80 and pargs.php81)): (pargs.php73 and pargs.php74) or (pargs.php73 and pargs.php80) or
(pargs.php73 and pargs.php81) or (pargs.php73 and pargs.php82) or
(pargs.php74 and pargs.php80) or (pargs.php74 and pargs.php81) or
(pargs.php74 and pargs.php82) or
(pargs.php80 and pargs.php81) or (pargs.php80 and pargs.php82) or
(pargs.php81 and pargs.php82)):
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 (not pargs.php80) and (not pargs.php81) and (not pargs.php82) 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")
@@ -909,12 +913,15 @@ def site_package_check(self, stype):
elif config_php_ver == '8.1': elif config_php_ver == '8.1':
php_check = 'php8.1-fpm' php_check = 'php8.1-fpm'
php_to_setup = WOVar.wo_php81 php_to_setup = WOVar.wo_php81
elif config_php_ver == '8.2':
php_check = 'php8.2-fpm'
php_to_setup = WOVar.wo_php82
else: else:
php_check = 'php8.0-fpm' php_check = 'php8.1-fpm'
php_to_setup = WOVar.wo_php80 php_to_setup = WOVar.wo_php81
else: else:
php_check = 'php8.0-fpm' php_check = 'php8.1-fpm'
php_to_setup = WOVar.wo_php80 php_to_setup = WOVar.wo_php81
if not (WOAptGet.is_installed(self, php_check)): if not (WOAptGet.is_installed(self, php_check)):
apt_packages = apt_packages + php_to_setup + WOVar.wo_php_extra apt_packages = apt_packages + php_to_setup + WOVar.wo_php_extra
@@ -949,6 +956,12 @@ def site_package_check(self, stype):
if not WOAptGet.is_installed(self, 'php8.1-fpm'): if not WOAptGet.is_installed(self, 'php8.1-fpm'):
apt_packages = apt_packages + WOVar.wo_php81 + WOVar.wo_php_extra apt_packages = apt_packages + WOVar.wo_php81 + WOVar.wo_php_extra
if pargs.php82 and stype in ['php82', 'mysql', 'wp',
'wpsubdir', 'wpsubdomain']:
Log.debug(self, "Setting apt_packages variable for PHP 8.2")
if not WOAptGet.is_installed(self, 'php8.2-fpm'):
apt_packages = apt_packages + WOVar.wo_php82 + 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"):
@@ -1130,7 +1143,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', 'php80', 'php81']: 'php73', 'php74', 'php80', 'php81', 'php82', ]:
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)
@@ -1176,6 +1189,12 @@ def detSitePar(opts):
cachetype = 'basic' cachetype = 'basic'
else: else:
cachetype = cachelist[0] cachetype = cachelist[0]
elif False not in [x in ('php82', '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:
@@ -1212,6 +1231,12 @@ def detSitePar(opts):
cachetype = 'basic' cachetype = 'basic'
else: else:
cachetype = cachelist[0] cachetype = cachelist[0]
elif False not in [x in ('php82', '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:
@@ -1266,6 +1291,12 @@ def detSitePar(opts):
cachetype = 'basic' cachetype = 'basic'
else: else:
cachetype = cachelist[0] cachetype = cachelist[0]
elif False not in [x in ('wp', 'php82') 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:
@@ -1296,6 +1327,12 @@ def detSitePar(opts):
cachetype = 'basic' cachetype = 'basic'
else: else:
cachetype = cachelist[0] cachetype = cachelist[0]
elif False not in [x in ('wpsubdir', 'php82') 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:
@@ -1326,6 +1363,12 @@ def detSitePar(opts):
cachetype = 'basic' cachetype = 'basic'
else: else:
cachetype = cachelist[0] cachetype = cachelist[0]
elif False not in [x in ('wpsubdomain', 'php82') 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:
@@ -1347,6 +1390,9 @@ def detSitePar(opts):
elif (not typelist or "php81" in typelist) and cachelist: elif (not typelist or "php81" in typelist) and cachelist:
sitetype = 'wp' sitetype = 'wp'
cachetype = cachelist[0] cachetype = cachelist[0]
elif (not typelist or "php82" 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

@@ -51,6 +51,8 @@ class WOStackController(CementBaseController):
dict(help='Install PHP 8.0 stack', action='store_true')), dict(help='Install PHP 8.0 stack', action='store_true')),
(['--php81'], (['--php81'],
dict(help='Install PHP 8.1 stack', action='store_true')), dict(help='Install PHP 8.1 stack', action='store_true')),
(['--php82'],
dict(help='Install PHP 8.2 stack', action='store_true')),
(['--mysql'], (['--mysql'],
dict(help='Install MySQL stack', action='store_true')), dict(help='Install MySQL stack', action='store_true')),
(['--mariadb'], (['--mariadb'],
@@ -121,7 +123,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.php80 or pargs.php81 or pargs.php82 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
@@ -149,6 +151,7 @@ class WOStackController(CementBaseController):
pargs.php74 = True pargs.php74 = True
pargs.php80 = True pargs.php80 = True
pargs.php81 = True pargs.php81 = True
pargs.php82 = True
pargs.redis = True pargs.redis = True
pargs.proftpd = True pargs.proftpd = True
@@ -166,8 +169,10 @@ class WOStackController(CementBaseController):
pargs.php80 = True pargs.php80 = True
elif config_php_ver == '8.1': elif config_php_ver == '8.1':
pargs.php81 = True pargs.php81 = True
elif config_php_ver == '8.2':
pargs.php82 = True
else: else:
pargs.php80 = True pargs.php81 = True
pargs.nginx = True pargs.nginx = True
pargs.mysql = True pargs.mysql = True
pargs.wpcli = True pargs.wpcli = True
@@ -257,6 +262,16 @@ class WOStackController(CementBaseController):
Log.debug(self, "PHP 8.1 already installed") Log.debug(self, "PHP 8.1 already installed")
Log.info(self, "PHP 8.1 already installed") Log.info(self, "PHP 8.1 already installed")
# PHP 8.2
if pargs.php82:
Log.debug(self, "Setting apt_packages variable for PHP 8.2")
if not WOAptGet.is_installed(self, 'php8.2-fpm'):
apt_packages = (apt_packages + WOVar.wo_php82 +
WOVar.wo_php_extra)
else:
Log.debug(self, "PHP 8.2 already installed")
Log.info(self, "PHP 8.2 already installed")
# MariaDB 10.3 # MariaDB 10.3
if pargs.mysql: if pargs.mysql:
pargs.mysqltuner = True pargs.mysqltuner = True
@@ -512,7 +527,8 @@ class WOStackController(CementBaseController):
WOAptGet.is_installed(self, 'php7.3-fpm') or WOAptGet.is_installed(self, 'php7.3-fpm') or
WOAptGet.is_installed(self, 'php7.4-fpm') or WOAptGet.is_installed(self, 'php7.4-fpm') or
WOAptGet.is_installed(self, 'php8.0-fpm') or WOAptGet.is_installed(self, 'php8.0-fpm') or
WOAptGet.is_installed(self, 'php8.1-fpm')): WOAptGet.is_installed(self, 'php8.1-fpm') or
WOAptGet.is_installed(self, 'php8.2-fpm')):
pargs.php80 = True pargs.php80 = True
Log.debug(self, "Setting packages variable for utils") Log.debug(self, "Setting packages variable for utils")
packages = packages + [[ packages = packages + [[
@@ -610,7 +626,7 @@ class WOStackController(CementBaseController):
(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.php80) and (not pargs.php72) and (not pargs.php80) and
(not pargs.php81) and (not pargs.all)): (not pargs.php81) and (not pargs.php82) and (not pargs.all)):
self.app.args.print_help() self.app.args.print_help()
if pargs.php: if pargs.php:
@@ -666,7 +682,8 @@ class WOStackController(CementBaseController):
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') or WOAptGet.is_installed(self, 'php7.4-fpm') or
WOAptGet.is_installed(self, 'php8.0-fpm') or WOAptGet.is_installed(self, 'php8.0-fpm') or
WOAptGet.is_installed(self, 'php8.1-fpm')): WOAptGet.is_installed(self, 'php8.1-fpm') or
WOAptGet.is_installed(self, 'php8.2-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")
@@ -680,7 +697,8 @@ class WOStackController(CementBaseController):
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') or WOAptGet.is_installed(self, 'php7.4-fpm') or
WOAptGet.is_installed(self, 'php8.0-fpm') or WOAptGet.is_installed(self, 'php8.0-fpm') or
WOAptGet.is_installed(self, 'php8.1-fpm')): WOAptGet.is_installed(self, 'php8.1-fpm') or
WOAptGet.is_installed(self, 'php8.2-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")
@@ -694,7 +712,8 @@ class WOStackController(CementBaseController):
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') or WOAptGet.is_installed(self, 'php7.2-fpm') or
WOAptGet.is_installed(self, 'php8.0-fpm') or WOAptGet.is_installed(self, 'php8.0-fpm') or
WOAptGet.is_installed(self, 'php8.1-fpm')): WOAptGet.is_installed(self, 'php8.1-fpm') or
WOAptGet.is_installed(self, 'php8.2-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")
@@ -708,7 +727,8 @@ class WOStackController(CementBaseController):
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') or WOAptGet.is_installed(self, 'php7.2-fpm') or
WOAptGet.is_installed(self, 'php7.4-fpm') or WOAptGet.is_installed(self, 'php7.4-fpm') or
WOAptGet.is_installed(self, 'php8.1-fpm')): WOAptGet.is_installed(self, 'php8.1-fpm') or
WOAptGet.is_installed(self, 'php8.2-fpm')):
apt_packages = apt_packages + WOVar.wo_php_extra apt_packages = apt_packages + WOVar.wo_php_extra
else: else:
Log.debug(self, "PHP 8.0 is not installed") Log.debug(self, "PHP 8.0 is not installed")
@@ -722,12 +742,30 @@ class WOStackController(CementBaseController):
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') or WOAptGet.is_installed(self, 'php7.2-fpm') or
WOAptGet.is_installed(self, 'php7.4-fpm') or WOAptGet.is_installed(self, 'php7.4-fpm') or
WOAptGet.is_installed(self, 'php8.0-fpm')): WOAptGet.is_installed(self, 'php8.0-fpm') or
WOAptGet.is_installed(self, 'php8.1-fpm') or
WOAptGet.is_installed(self, 'php8.2-fpm')):
apt_packages = apt_packages + WOVar.wo_php_extra apt_packages = apt_packages + WOVar.wo_php_extra
else: else:
Log.debug(self, "PHP 8.1 is not installed") Log.debug(self, "PHP 8.1 is not installed")
Log.info(self, "PHP 8.1 is not installed") Log.info(self, "PHP 8.1 is not installed")
# PHP 8.2
if pargs.php82:
Log.debug(self, "Setting apt_packages variable for PHP 8.2")
if WOAptGet.is_installed(self, 'php8.2-fpm'):
apt_packages = apt_packages + WOVar.wo_php82
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') or
WOAptGet.is_installed(self, 'php8.1-fpm') or
WOAptGet.is_installed(self, 'php8.2-fpm')):
apt_packages = apt_packages + WOVar.wo_php_extra
else:
Log.debug(self, "PHP 8.2 is not installed")
Log.info(self, "PHP 8.2 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'):
@@ -961,12 +999,13 @@ 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.php80) and (not pargs.php81) and (not pargs.php80) and (not pargs.php81) and
(not pargs.php82) 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()
if pargs.php: if pargs.php:
pargs.php72 = True pargs.php81 = True
if pargs.mariadb: if pargs.mariadb:
pargs.mysql = True pargs.mysql = True
@@ -974,10 +1013,12 @@ class WOStackController(CementBaseController):
if pargs.all: if pargs.all:
pargs.web = True pargs.web = True
pargs.admin = True pargs.admin = True
pargs.php72 = True
pargs.php73 = True pargs.php73 = True
pargs.php74 = True pargs.php74 = True
pargs.php80 = True pargs.php80 = True
pargs.php81 = True pargs.php81 = True
pargs.php82 = True
pargs.fail2ban = True pargs.fail2ban = True
pargs.proftpd = True pargs.proftpd = True
pargs.utils = True pargs.utils = True
@@ -1033,7 +1074,8 @@ class WOStackController(CementBaseController):
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') or WOAptGet.is_installed(self, 'php7.4-fpm') or
WOAptGet.is_installed(self, 'php8.0-fpm') or WOAptGet.is_installed(self, 'php8.0-fpm') or
WOAptGet.is_installed(self, 'php8.1-fpm')): WOAptGet.is_installed(self, 'php8.1-fpm') or
WOAptGet.is_installed(self, 'php8.2-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")
@@ -1047,7 +1089,8 @@ class WOStackController(CementBaseController):
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') or WOAptGet.is_installed(self, 'php7.2-fpm') or
WOAptGet.is_installed(self, 'php8.0-fpm') or WOAptGet.is_installed(self, 'php8.0-fpm') or
WOAptGet.is_installed(self, 'php8.1-fpm')): WOAptGet.is_installed(self, 'php8.1-fpm') or
WOAptGet.is_installed(self, 'php8.2-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")
@@ -1061,7 +1104,8 @@ class WOStackController(CementBaseController):
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') or WOAptGet.is_installed(self, 'php7.2-fpm') or
WOAptGet.is_installed(self, 'php7.4-fpm') or WOAptGet.is_installed(self, 'php7.4-fpm') or
WOAptGet.is_installed(self, 'php8.1-fpm')): WOAptGet.is_installed(self, 'php8.1-fpm') or
WOAptGet.is_installed(self, 'php8.2-fpm')):
apt_packages = apt_packages + WOVar.wo_php_extra apt_packages = apt_packages + WOVar.wo_php_extra
else: else:
Log.debug(self, "PHP 8.0 is not installed") Log.debug(self, "PHP 8.0 is not installed")
@@ -1075,12 +1119,33 @@ class WOStackController(CementBaseController):
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') or WOAptGet.is_installed(self, 'php7.2-fpm') or
WOAptGet.is_installed(self, 'php8.0-fpm') or WOAptGet.is_installed(self, 'php8.0-fpm') or
WOAptGet.is_installed(self, 'php7.4-fpm')): WOAptGet.is_installed(self, 'php7.4-fpm') or
WOAptGet.is_installed(self, 'php8.2-fpm')):
apt_packages = apt_packages + WOVar.wo_php_extra apt_packages = apt_packages + WOVar.wo_php_extra
else: else:
Log.debug(self, "PHP 8.1 is not installed") Log.debug(self, "PHP 8.1 is not installed")
Log.info(self, "PHP 8.1 is not installed") Log.info(self, "PHP 8.1 is not installed")
Log.info(self, "PHP 8.1 is not installed")
# PHP 8.2
if pargs.php82:
Log.debug(self, "Setting apt_packages variable for PHP 8.2")
if WOAptGet.is_installed(self, 'php8.2-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') or
WOAptGet.is_installed(self, 'php8.0-fpm') or
WOAptGet.is_installed(self, 'php8.1-fpm')):
apt_packages = apt_packages + WOVar.wo_php_extra
else:
Log.debug(self, "PHP 8.2 is not installed")
Log.info(self, "PHP 8.2 is not installed")
Log.info(self, "PHP 8.2 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

@@ -81,8 +81,11 @@ def pre_pref(self, apt_packages):
# add php repository # add php repository
if (('php7.3-fpm' in apt_packages) or if (('php7.3-fpm' in apt_packages) or
('php7.2-fpm' in apt_packages) or ('php7.4-fpm' in apt_packages) or ('php7.2-fpm' in apt_packages) or
('php8.0-fpm' in apt_packages) or ('php8.1-fpm' in apt_packages)): ('php7.4-fpm' in apt_packages) or
('php8.0-fpm' in apt_packages) or
('php8.1-fpm' in apt_packages) or
('php8.2-fpm' in apt_packages)):
if (WOVar.wo_distro == 'ubuntu'): if (WOVar.wo_distro == 'ubuntu'):
Log.debug(self, 'Adding ppa for PHP') Log.debug(self, 'Adding ppa for PHP')
Log.info(self, "Adding repository for PHP, please wait...") Log.info(self, "Adding repository for PHP, please wait...")
@@ -221,7 +224,13 @@ 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", "php80" "php81"] wo_php_version = ["php72",
"php73",
"php74",
"php80",
"php81",
"php82",
]
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)
@@ -1068,7 +1077,7 @@ def post_pref(self, apt_packages, packages, upgrade=False):
if os.path.exists('/etc/nginx/conf.d/upstream.conf'): if os.path.exists('/etc/nginx/conf.d/upstream.conf'):
if not WOFileUtils.grepcheck( if not WOFileUtils.grepcheck(
self, '/etc/nginx/conf.d/upstream.conf', 'php81'): self, '/etc/nginx/conf.d/upstream.conf', 'php80'):
data = dict(php="9000", debug="9001", data = dict(php="9000", debug="9001",
php7="9070", debug7="9170", php7="9070", debug7="9170",
php8="9080", debug8="9180", php8="9080", debug8="9180",
@@ -1240,6 +1249,168 @@ def post_pref(self, apt_packages, packages, upgrade=False):
'upstream.mustache', data, True) 'upstream.mustache', data, True)
WOConf.nginxcommon(self) WOConf.nginxcommon(self)
# php8.2 configuration
if set(WOVar.wo_php82).issubset(set(apt_packages)):
WOGit.add(self, ["/etc/php"], msg="Adding PHP into Git")
Log.info(self, "Configuring php8.2-fpm")
ngxroot = '/var/www/'
# Create log directories
if not os.path.exists('/var/log/php/8.2/'):
Log.debug(self, 'Creating directory /var/log/php/8.2/')
os.makedirs('/var/log/php/8.2/')
if not os.path.isfile('/etc/php/8.2/fpm/php.ini.orig'):
WOFileUtils.copyfile(self, '/etc/php/8.2/fpm/php.ini',
'/etc/php/8.2/fpm/php.ini.orig')
# Parse etc/php/8.2/fpm/php.ini
config = configparser.ConfigParser()
Log.debug(self, "configuring php file /etc/php/8.2/"
"fpm/php.ini")
config.read('/etc/php/8.2/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.2/fpm/php.ini',
encoding='utf-8', mode='w') as configfile:
Log.debug(self, "Writting php configuration into "
"/etc/php/8.2/fpm/php.ini")
config.write(configfile)
# Render php-fpm pool template for php8.2
data = dict(pid="/run/php/php8.2-fpm.pid",
error_log="/var/log/php8.2-fpm.log",
include="/etc/php/8.2/fpm/pool.d/*.conf")
WOTemplate.deploy(
self, '/etc/php/8.2/fpm/php-fpm.conf',
'php-fpm.mustache', data)
data = dict(pool='www-php82', listen='php82-fpm.sock',
user='www-data',
group='www-data', listenuser='root',
listengroup='www-data', openbasedir=True)
WOTemplate.deploy(self, '/etc/php/8.2/fpm/pool.d/www.conf',
'php-pool.mustache', data)
data = dict(pool='www-two-php82', listen='php82-two-fpm.sock',
user='www-data',
group='www-data', listenuser='root',
listengroup='www-data', openbasedir=True)
WOTemplate.deploy(self, '/etc/php/8.2/fpm/pool.d/www-two.conf',
'php-pool.mustache', data)
# Generate /etc/php/8.2/fpm/pool.d/debug.conf
WOFileUtils.copyfile(self, "/etc/php/8.2/fpm/pool.d/www.conf",
"/etc/php/8.2/fpm/pool.d/debug.conf")
WOFileUtils.searchreplace(self, "/etc/php/8.2/fpm/pool.d/"
"debug.conf", "[www-php82]", "[debug]")
config = configparser.ConfigParser()
config.read('/etc/php/8.2/fpm/pool.d/debug.conf')
config['debug']['listen'] = '127.0.0.1:9182'
config['debug']['rlimit_core'] = 'unlimited'
config['debug']['slowlog'] = '/var/log/php/8.2/slow.log'
config['debug']['request_slowlog_timeout'] = '10s'
with open('/etc/php/8.2/fpm/pool.d/debug.conf',
encoding='utf-8', mode='w') as confifile:
Log.debug(self, "writting PHP 8.2 configuration into "
"/etc/php/8.2/fpm/pool.d/debug.conf")
config.write(confifile)
with open("/etc/php/8.2/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.2/mods-available/xdebug.ini"):
WOFileUtils.searchreplace(
self, "/etc/php/8.2/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/debug82'
.format(ngxroot),
encoding='utf-8', mode='a').close()
open('{0}22222/htdocs/fpm/status/php82'
.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 php82
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/php82.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.2-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', 'php82'):
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

@@ -26,6 +26,7 @@ class WOStackStatusController(CementBaseController):
pargs.php74 or pargs.php74 or
pargs.php80 or pargs.php80 or
pargs.php81 or pargs.php81 or
pargs.php82 or
pargs.mysql or pargs.mysql or
pargs.redis or pargs.redis or
pargs.fail2ban or pargs.fail2ban or
@@ -66,6 +67,10 @@ class WOStackStatusController(CementBaseController):
services = services + ['php8.1-fpm'] services = services + ['php8.1-fpm']
else: else:
Log.info(self, "PHP8.1-FPM is not installed") Log.info(self, "PHP8.1-FPM is not installed")
if os.path.exists('{0}'.format(wo_system) + 'php8.2-fpm.service'):
services = services + ['php8.2-fpm']
else:
Log.info(self, "PHP8.2-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'):
@@ -97,6 +102,12 @@ class WOStackStatusController(CementBaseController):
else: else:
Log.info(self, "PHP8.1-FPM is not installed") Log.info(self, "PHP8.1-FPM is not installed")
if pargs.php82:
if os.path.exists('{0}'.format(wo_system) + 'php8.2-fpm.service'):
services = services + ['php8.2-fpm']
else:
Log.info(self, "PHP8.2-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")):
@@ -145,9 +156,9 @@ class WOStackStatusController(CementBaseController):
services = [] services = []
wo_system = "/lib/systemd/system/" wo_system = "/lib/systemd/system/"
pargs = self.app.pargs pargs = self.app.pargs
if not (pargs.nginx or pargs.php or if not (pargs.nginx or
pargs.php72 or pargs.php73 or pargs.php or pargs.php72 or pargs.php73 or pargs.php74 or
pargs.php74 or pargs.php80 or pargs.php81 or pargs.php80 or pargs.php81 or pargs.php82 or
pargs.mysql or pargs.mysql or
pargs.fail2ban or pargs.fail2ban or
pargs.netdata or pargs.netdata or
@@ -207,6 +218,12 @@ class WOStackStatusController(CementBaseController):
else: else:
Log.info(self, "PHP8.1-FPM is not installed") Log.info(self, "PHP8.1-FPM is not installed")
if pargs.php82:
if os.path.exists('{0}'.format(wo_system) + 'php8.2-fpm.service'):
services = services + ['php8.2-fpm']
else:
Log.info(self, "PHP8.2-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")):
@@ -255,9 +272,9 @@ class WOStackStatusController(CementBaseController):
services = [] services = []
wo_system = "/lib/systemd/system/" wo_system = "/lib/systemd/system/"
pargs = self.app.pargs pargs = self.app.pargs
if not (pargs.nginx or pargs.php or if not (pargs.nginx or
pargs.php72 or pargs.php73 or pargs.php or pargs.php72 or pargs.php73 or pargs.php74 or
pargs.php74 or pargs.php80 or pargs.php81 or pargs.php80 or pargs.php81 or pargs.php82 or
pargs.mysql or pargs.mysql or
pargs.netdata or pargs.netdata or
pargs.proftpd or pargs.proftpd or
@@ -295,6 +312,10 @@ class WOStackStatusController(CementBaseController):
services = services + ['php8.1-fpm'] services = services + ['php8.1-fpm']
else: else:
Log.info(self, "PHP8.1-FPM is not installed") Log.info(self, "PHP8.1-FPM is not installed")
if os.path.exists('{0}'.format(wo_system) + 'php8.2-fpm.service'):
services = services + ['php8.2-fpm']
else:
Log.info(self, "PHP8.2-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'):
@@ -326,6 +347,12 @@ class WOStackStatusController(CementBaseController):
else: else:
Log.info(self, "PHP8.1-FPM is not installed") Log.info(self, "PHP8.1-FPM is not installed")
if pargs.php82:
if os.path.exists('{0}'.format(wo_system) + 'php8.2-fpm.service'):
services = services + ['php8.2-fpm']
else:
Log.info(self, "PHP8.2-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")):
@@ -380,6 +407,7 @@ class WOStackStatusController(CementBaseController):
pargs.php74 or pargs.php74 or
pargs.php80 or pargs.php80 or
pargs.php81 or pargs.php81 or
pargs.php82 or
pargs.mysql or pargs.mysql or
pargs.netdata or pargs.netdata or
pargs.proftpd or pargs.proftpd or
@@ -419,6 +447,10 @@ class WOStackStatusController(CementBaseController):
services = services + ['php8.1-fpm'] services = services + ['php8.1-fpm']
else: else:
Log.info(self, "PHP8.1-FPM is not installed") Log.info(self, "PHP8.1-FPM is not installed")
if os.path.exists('{0}'.format(wo_system) + 'php8.2-fpm.service'):
services = services + ['php8.2-fpm']
else:
Log.info(self, "PHP8.2-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'):
@@ -450,6 +482,12 @@ class WOStackStatusController(CementBaseController):
else: else:
Log.info(self, "PHP8.1-FPM is not installed") Log.info(self, "PHP8.1-FPM is not installed")
if pargs.php82:
if os.path.exists('{0}'.format(wo_system) + 'php8.2-fpm.service'):
services = services + ['php8.2-fpm']
else:
Log.info(self, "PHP8.2-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")):
@@ -510,8 +548,8 @@ class WOStackStatusController(CementBaseController):
wo_system = "/lib/systemd/system/" wo_system = "/lib/systemd/system/"
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.php80 or pargs.php81 or pargs.php82 or
pargs.mysql or pargs.mysql or
pargs.netdata or pargs.netdata or
pargs.proftpd or pargs.proftpd or
@@ -549,6 +587,10 @@ class WOStackStatusController(CementBaseController):
services = services + ['php8.1-fpm'] services = services + ['php8.1-fpm']
else: else:
Log.info(self, "PHP8.1-FPM is not installed") Log.info(self, "PHP8.1-FPM is not installed")
if os.path.exists('{0}'.format(wo_system) + 'php8.2-fpm.service'):
services = services + ['php8.2-fpm']
else:
Log.info(self, "PHP8.2-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'):
@@ -580,6 +622,12 @@ class WOStackStatusController(CementBaseController):
else: else:
Log.info(self, "PHP8.1-FPM is not installed") Log.info(self, "PHP8.1-FPM is not installed")
if pargs.php82:
if os.path.exists('{0}'.format(wo_system) + 'php8.2-fpm.service'):
services = services + ['php8.2-fpm']
else:
Log.info(self, "PHP8.2-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

@@ -43,6 +43,8 @@ class WOStackUpgradeController(CementBaseController):
dict(help='Upgrade PHP 8.0 stack', action='store_true')), dict(help='Upgrade PHP 8.0 stack', action='store_true')),
(['--php81'], (['--php81'],
dict(help='Upgrade PHP 8.1 stack', action='store_true')), dict(help='Upgrade PHP 8.1 stack', action='store_true')),
(['--php82'],
dict(help='Upgrade PHP 8.2 stack', action='store_true')),
(['--mysql'], (['--mysql'],
dict(help='Upgrade MySQL stack', action='store_true')), dict(help='Upgrade MySQL stack', action='store_true')),
(['--mariadb'], (['--mariadb'],
@@ -86,7 +88,7 @@ class WOStackUpgradeController(CementBaseController):
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.php72 or pargs.php73 or pargs.php74 or
pargs.php80 or pargs.php81 or pargs.mysql or pargs.php80 or pargs.php81 or pargs.php82 or pargs.mysql or
pargs.mariadb or pargs.ngxblocker or pargs.all or pargs.mariadb or pargs.ngxblocker or pargs.all or
pargs.netdata or pargs.wpcli or pargs.composer 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
@@ -100,7 +102,7 @@ class WOStackUpgradeController(CementBaseController):
pargs.mysql = True pargs.mysql = True
if pargs.php: if pargs.php:
pargs.php72 = True pargs.php81 = True
if pargs.all: if pargs.all:
pargs.web = True pargs.web = True
@@ -115,6 +117,7 @@ class WOStackUpgradeController(CementBaseController):
pargs.php74 = True pargs.php74 = True
pargs.php80 = True pargs.php80 = True
pargs.php81 = True pargs.php81 = True
pargs.php82 = True
pargs.mysql = True pargs.mysql = True
pargs.wpcli = True pargs.wpcli = True
@@ -172,6 +175,12 @@ class WOStackUpgradeController(CementBaseController):
apt_packages = apt_packages + WOVar.wo_php81 + \ apt_packages = apt_packages + WOVar.wo_php81 + \
WOVar.wo_php_extra WOVar.wo_php_extra
# php 8.2
if pargs.php82:
if WOAptGet.is_installed(self, 'php8.2-fpm'):
apt_packages = apt_packages + WOVar.wo_php82 + \
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'):
@@ -301,6 +310,7 @@ class WOStackUpgradeController(CementBaseController):
"php7.4-fpm" in apt_packages or "php7.4-fpm" in apt_packages or
"php8.0-fpm" in apt_packages or "php8.0-fpm" in apt_packages or
"php8.1-fpm" in apt_packages or "php8.1-fpm" in apt_packages or
"php8.2-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

@@ -125,6 +125,26 @@ upstream debug81 {
server 127.0.0.1:9176; server 127.0.0.1:9176;
} }
#-------------------------------
# PHP 8.2
#-------------------------------
# PHP 8.2 upstream with load-balancing on two unix sockets
upstream php82 {
least_conn;
server unix:/var/run/php/php82-fpm.sock;
server unix:/var/run/php/php82-two-fpm.sock;
keepalive 5;
}
# PHP 8.2 debug
upstream debug82 {
# Debug Pool
server 127.0.0.1:9177;
}
#------------------------------- #-------------------------------
# Netdata # Netdata
#------------------------------- #-------------------------------
@@ -156,4 +176,5 @@ upstream multiphp {
server unix:/var/run/php/php72-fpm.sock; server unix:/var/run/php/php72-fpm.sock;
server unix:/var/run/php/php80-fpm.sock; server unix:/var/run/php/php80-fpm.sock;
server unix:/var/run/php/php81-fpm.sock; server unix:/var/run/php/php81-fpm.sock;
server unix:/var/run/php/php82-fpm.sock;
} }

View File

@@ -168,7 +168,9 @@ class WOService():
'php7.3-fpm', 'php7.3-fpm',
'php7.4-fpm', 'php7.4-fpm',
'php8.0-fpm', 'php8.0-fpm',
'php8.1-fpm',]: 'php8.1-fpm',
'php8.2-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

@@ -170,6 +170,9 @@ class WOVar():
wo_php81 = [] wo_php81 = []
for module in wo_module: for module in wo_module:
wo_php81 = wo_php81 + ["php8.1-{0}".format(module)] wo_php81 = wo_php81 + ["php8.1-{0}".format(module)]
wo_php82 = []
for module in wo_module:
wo_php82 = wo_php82 + ["php8.2-{0}".format(module)]
wo_php_extra = ["graphviz"] wo_php_extra = ["graphviz"]