diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 0000000..3b0653a --- /dev/null +++ b/.editorconfig @@ -0,0 +1,9 @@ +root = true + +[*] +indent_style = space +indent_size = 4 +end_of_line = lf +charset = utf-8 +trim_trailing_whitespace = false +insert_final_newline = false \ No newline at end of file diff --git a/.travis.yml b/.travis.yml index 62880fc..5581386 100644 --- a/.travis.yml +++ b/.travis.yml @@ -12,7 +12,7 @@ before_script: - sudo rm -rf /etc/mysql/ - sudo bash -c 'echo example.com > /etc/hostname' - sudo apt-get -qq purge mysql* graphviz* - - sudo apt-get -qq autoremove + - sudo apt-get -qq autoremove --purge - sudo apt-get update script: @@ -20,85 +20,55 @@ script: - unset LANG - sudo bash -c 'echo -e "[user]\n\tname = abc\n\temail = root@localhost.com" > /home/travis/.gitconfig' - sudo echo "Travis Banch = $TRAVIS_BRANCH" - - sudo apt-get install -y --force-yes git python3-setuptools python3-dev python3-apt + - sudo apt-get install -y --force-yes git python3-setuptools python3-dev python3-apt ccze - sudo bash install $TRAVIS_BRANCH - sudo wo --help - sudo wo stack install || sudo tail -n50 /var/log/wo/wordops.log - - sudo wo stack install --web || sudo tail -n50 /var/log/wo/wordops.log + - sudo wo stack install --web || sudo tail -n50 /var/log/wo/wordops.log - sudo wo stack install --admin || sudo tail -n50 /var/log/wo/wordops.log - sudo wo site create html.net --html || sudo tail -n50 /var/log/wo/wordops.log - sudo wo site create php.com --php || sudo tail -n50 /var/log/wo/wordops.log + - sudo wo site create mysql.com --mysql || sudo tail -n50 /var/log/wo/wordops.log - - sudo wo site create site1.com --wp || sudo tail -n50 /var/log/wo/wordops.log + - sudo wo site create mysql-php73.com --mysql --php73 || sudo tail -n50 /var/log/wo/wordops.log + + - sudo wo site create wp1.com --wp || sudo tail -n50 /var/log/wo/wordops.log + - sudo wo site create wp-php73.com --wp --php73 || sudo tail -n50 /var/log/wo/wordops.log + + - sudo wo site create wpsc1.net --wpsc || sudo tail -n50 /var/log/wo/wordops.log + - sudo wo site create wpfc1.com --wpfc || sudo tail -n50 /var/log/wo/wordops.log + + - sudo wo site create wpsc-php73.net --wpsc --php73 || sudo tail -n50 /var/log/wo/wordops.log + - sudo wo site create wpfc-php73.net --wpfc --php73 || sudo tail -n50 /var/log/wo/wordops.log + + - sudo wo site create wpredis.net --wpredis || sudo tail -n50 /var/log/wo/wordops.log + - sudo wo site create wpredis-php73.net --wpredis --php73 || sudo tail -n50 /var/log/wo/wordops.log + + - sudo wo site create wpsubdir1.com --wpsubdir || sudo tail -n50 /var/log/wo/wordops.log + - sudo wo site create wpsubdir-php73.com --wpsubdir --php73 || sudo tail -n50 /var/log/wo/wordops.log - - sudo wo site create site2.net --wp --wpsc || sudo tail -n50 /var/log/wo/wordops.log - - sudo wo site create site4.com --wpfc || sudo tail -n50 /var/log/wo/wordops.log - - sudo wo site create site4.net --wp --wpfc || sudo tail -n50 /var/log/wo/wordops.log - - sudo wo site create site4.org --wpfc --wp || sudo tail -n50 /var/log/wo/wordops.log - - sudo wo site create site5.com --wpsubdir || sudo tail -n50 /var/log/wo/wordops.log + - sudo wo site create wpsubdirwpsc1.com --wpsubdir --wpsc || sudo tail -n50 /var/log/wo/wordops.log + - sudo wo site create wpsubdirwpsc2.com --wpsubdir --wpfc || sudo tail -n50 /var/log/wo/wordops.log + + - sudo wo site create wpsubdirwpsc1-php73.com --wpsubdir --wpsc --php73 || sudo tail -n50 /var/log/wo/wordops.log + - sudo wo site create wpsubdirwpsc2-php73.com --wpsubdir --wpfc --php73|| sudo tail -n50 /var/log/wo/wordops.log + + - sudo wo site create wpsubdomain1.com --wpsubdomain || sudo tail -n50 /var/log/wo/wordops.log + - sudo wo site create wpsubdomain1-php73.com --wpsubdomain --php73 || sudo tail -n50 /var/log/wo/wordops.log - - sudo wo site create site6.com --wpsubdir --wpsc || sudo tail -n50 /var/log/wo/wordops.log - - sudo wo site create site8.com --wpsubdir --wpfc || sudo tail -n50 /var/log/wo/wordops.log - - sudo wo site create site8.net --wpfc --wpsubdir || sudo tail -n50 /var/log/wo/wordops.log - - sudo wo site create site9.com --wpsubdomain || sudo tail -n50 /var/log/wo/wordops.log + - sudo wo site create wpsubdomainwpsc.org --wpsubdomain --wpsc || sudo tail -n50 /var/log/wo/wordops.log + - sudo wo site create wpsubdomainwpfc.org --wpsubdomain --wpfc || sudo tail -n50 /var/log/wo/wordops.log + - sudo wo site create wpsubdomainwpfc2.in --wpfc --wpsubdomain || sudo tail -n50 /var/log/wo/wordops.log - - sudo wo site create site10.org --wpsubdomain --wpsc || sudo tail -n50 /var/log/wo/wordops.log - - sudo wo site create site12.org --wpsubdomain --wpfc || sudo tail -n50 /var/log/wo/wordops.log - - sudo wo site create site12.in --wpfc --wpsubdomain || sudo tail -n50 /var/log/wo/wordops.log - - - yes | sudo wo site create site.hhvm.pagespeed2.com --wpsc --hhvm || sudo tail -n50 /var/log/wo/wordops.log - - yes | sudo wo site create site.hhvm.pagespeed4.com --wpfc --hhvm || sudo tail -n50 /var/log/wo/wordops.log - - yes | sudo wo site create site.hhvm.pagespeed5.com --wpsubdir --hhvm || sudo tail -n50 /var/log/wo/wordops.log - - yes | sudo wo site create site.hhvm.pagespeed6.com --wpsubdir --wpsc --hhvm || sudo tail -n50 /var/log/wo/wordops.log - - yes | sudo wo site create site.hhvm.pagespeed8.com --wpsubdir --wpfc --hhvm || sudo tail -n50 /var/log/wo/wordops.log - - yes | sudo wo site create site.hhvm.pagespeed9.com --wpsubdomain --hhvm || sudo tail -n50 /var/log/wo/wordops.log - - yes | sudo wo site create site.hhvm.pagespeed10.org --wpsubdomain --wpsc --hhvm || sudo tail -n50 /var/log/wo/wordops.log - - yes | sudo wo site create site.hhvm.pagespeed12.in --wpfc --wpsubdomain --hhvm || sudo tail -n50 /var/log/wo/wordops.log - - - sudo wo site create site1.localtest.me --php --mysql || sudo tail -n50 /var/log/wo/wordops.log - - sudo wo site create site2.localtest.me --mysql --html || sudo tail -n50 /var/log/wo/wordops.log - - sudo wo site create site3.localtest.me --php --html || sudo tail -n50 /var/log/wo/wordops.log - - sudo wo site create site4.localtest.me --wp --wpsubdomain || sudo tail -n50 /var/log/wo/wordops.log - - sudo wo site create site5.localtest.me --wp --wpsubdir --wpfc || sudo tail -n50 /var/log/wo/wordops.log - - yes | sudo wo site create site6.localtest.me --wpredis || sudo tail -n50 /var/log/wo/wordops.log - - yes | sudo wo site create site7.localtest.me --wpsubdomain --wpredis || sudo tail -n50 /var/log/wo/wordops.log - - yes | sudo wo site create site8.localtest.me --wpsubdir --wpredis || sudo tail -n50 /var/log/wo/wordops.log - - - - sudo wo debug --all || sudo tail -n50 /var/log/wo/wordops.log - - sudo wo debug --all=off || sudo tail -n50 /var/log/wo/wordops.log - - sudo wo debug site12.net || sudo tail -n50 /var/log/wo/wordops.log - - sudo wo debug site12.net --all=off || sudo tail -n50 /var/log/wo/wordops.log - sudo wo site create 1.com --html || sudo tail -n50 /var/log/wo/wordops.log - sudo wo site create 2.com --php || sudo tail -n50 /var/log/wo/wordops.log - sudo wo site create 3.com --mysql || sudo tail -n50 /var/log/wo/wordops.log - sudo wo site update 1.com --wp || sudo tail -n50 /var/log/wo/wordops.log - - sudo wo site update 2.com --wpsubdir || sudo tail -n50 /var/log/wo/wordops.log - - sudo wo site update 3.com --wpsubdomain || sudo tail -n50 /var/log/wo/wordops.log - - - sudo wo site update site1.com --wp --wpfc || sudo tail -n50 /var/log/wo/wordops.log - - sudo wo site update site1.com --wp --wpsc || sudo tail -n50 /var/log/wo/wordops.log - - yes | sudo wo site update site1.com --wpredis || sudo tail -n50 /var/log/wo/wordops.log - - - sudo wo site update site5.com --wpsubdir --wpfc || sudo tail -n50 /var/log/wo/wordops.log - - sudo wo site update site5.com --wpsubdir --wpsc || sudo tail -n50 /var/log/wo/wordops.log - - - sudo wo site update site9.com --wpsubdomain --wpfc || sudo tail -n50 /var/log/wo/wordops.log - - sudo wo site update site9.com --wpsubdomain --wpsc || sudo tail -n50 /var/log/wo/wordops.log - - yes | sudo wo site update site.hhvm.pagespeed12.in --hhvm=off || sudo tail -n50 /var/log/wo/wordops.log - - yes | sudo wo site update site9.com --hhvm || sudo tail -n50 /var/log/wo/wordops.log - - sudo wo site info site.hhvm.pagespeed12.in || sudo tail -n50 /var/log/wo/wordops.log - - sudo wo site info site9.com || sudo tail -n50 /var/log/wo/wordops.log - - - sudo wo site create www.site-1.com --wp || sudo tail -n50 /var/log/wo/wordops.log|| sudo tail -n50 /var/log/wo/wordops.log - - sudo wo site create www.subsite.site-1.com --wpfc || sudo tail -n50 /var/log/wo/wordops.log - - sudo wo site update www.subsite.site-1.com --wp || sudo tail -n50 /var/log/wo/wordops.log - - sudo wo site delete www.subsite.site-1.com --all --no-prompt || sudo tail -n50 /var/log/wo/wordops.log - - - sudo wo site delete site12.in --all --no-prompt || sudo tail -n50 /var/log/wo/wordops.log + - sudo wo site update 2.com --php73 || sudo tail -n50 /var/log/wo/wordops.log + - sudo wo site update 3.com --php73 || sudo tail -n50 /var/log/wo/wordops.log - sudo ls /var/www/ - sudo wp --allow-root --info - - sudo bash -c 'cat /var/log/wo/wordops.log' + - sudo bash -c 'cat /var/log/wo/wordops.log | ccze -A' diff --git a/CHANGELOG.md b/CHANGELOG.md index 841c6d5..da007a7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,20 +8,30 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), #### Changed -- Updating Nginx fastcgi_cache template -- Updating Nginx configuration for WordPress 5.0 +- Updated Nginx fastcgi_cache templates +- Updated Nginx redis_cache templates +- Updated Nginx wp-super-cache templates +- Updated Nginx configuration for WordPress 5.0 - remove --experimental args - MariaDB version bumped to 10.3 +- Refactored Changelog +- Updated WO manual +- Updated WO bash_completion +- Refactored README.md #### Added - Add WebP image support with Nginx mapping - Add PHP 7.3 support +- WordPress $skip_cache variable mapping #### Fixed - Nginx variable $webp_suffix on fresh install - wo update command +- Fix php services management +- Fix WP-CLI install + ### v3.9.2 - November 30, 2018 diff --git a/LICENSE b/LICENSE index 9a71675..ddef593 100644 --- a/LICENSE +++ b/LICENSE @@ -1,6 +1,7 @@ The MIT License (MIT) -Copyright (c) 2018 WordOps +Copyright (c) 2018-2019 WordOps +Copyright (C) 2011-2017 EE Development Group (https://github.com/ee/ee/contributors) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/README.md b/README.md index 835aa0a..436d1d8 100644 --- a/README.md +++ b/README.md @@ -16,10 +16,10 @@

Key Features • - RequirementsGetting StartedUsage • - Cheatsheet • + RoadMap • + ChangelogCreditsLicense

@@ -30,7 +30,8 @@ - Easy Migration from EasyEngine v3 (migration script development in progress) - Automated WordPress, Nginx, PHP, MySQL & Redis installation -- Optimized Nginx configuration with multiple cache backends support +- Up-to-date server stack with PHP 7.2 & 7.3, MariaDB 10.3 & Redis 5.0 +- Optimized Nginx configurations with multiple cache backends support - Let's Encrypt SSL certificates ## Requirements diff --git a/config/bash_completion.d/wo_auto.rc b/config/bash_completion.d/wo_auto.rc index f406c04..03ca47c 100644 --- a/config/bash_completion.d/wo_auto.rc +++ b/config/bash_completion.d/wo_auto.rc @@ -29,7 +29,7 @@ _wo_complete() # IF YOU HAD ANOTHER CONTROLLER, YOU'D HANDLE THAT HERE "debug") COMPREPLY=( $(compgen \ - -W "$(command find /etc/nginx/sites-enabled/ -type l -printf "%P " 2> /dev/null) --nginx --php --php72 --fpm --fpm7 --mysql -i --interactive --all --import-slow-log --import-slow-log-interval= --nginx=off --php=off --php72=off --fpm=off --fpm7=off --mysql=off --all=off " \ + -W "$(command find /etc/nginx/sites-enabled/ -type l -printf "%P " 2> /dev/null) --nginx --php --php73 --fpm --fpm7 --mysql -i --interactive --all --import-slow-log --import-slow-log-interval= --nginx=off --php=off --php73=off --fpm=off --fpm7=off --mysql=off --all=off " \ -- $cur) ) ;; @@ -53,13 +53,13 @@ _wo_complete() "info") COMPREPLY=( $(compgen \ - -W "--mysql --php --php72 --nginx" \ + -W "--mysql --php --php73 --nginx" \ -- $cur) ) ;; "log") COMPREPLY=( $(compgen \ - -W "show reset gzip mail" \ + -W "show reset gzip" \ -- $cur) ) ;; @@ -74,17 +74,17 @@ _wo_complete() # HANDLE EVERYTHING AFTER THE THIRD LEVEL NAMESPACE "install" | "purge" | "remove" ) COMPREPLY=( $(compgen \ - -W "--web --admin --nginx --php --php72 --mysql --wpcli --phpmyadmin --adminer --utils --all --hhvm --redis --phpredisadmin" \ + -W "--web --admin --nginx --php --php73 --mysql --wpcli --phpmyadmin --adminer --utils --all --hhvm --redis --phpredisadmin" \ -- $cur) ) ;; "upgrade" ) COMPREPLY=( $(compgen \ - -W "--web --nginx --php --php72 --mysql --all --hhvm --php56 --no-prompt --wpcli" \ + -W "--web --nginx --php --php73 --mysql --all --hhvm --php56 --no-prompt --wpcli" \ -- $cur) ) ;; "start" | "stop" | "reload" | "restart" | "status") COMPREPLY=( $(compgen \ - -W "--nginx --php --php72 --mysql --memcache --redis" \ + -W "--nginx --php --php73 --mysql --memcache --redis" \ -- $cur) ) ;; "migrate") @@ -136,7 +136,7 @@ _wo_complete() ;; esac - if [ ${COMP_WORDS[1]} == "debug" ] && ([ "$prev" != "--start" ] && [ "$prev" != "--nginx" ] && [ "$prev" != "--php" ] && [ "$prev" != "--php72" ] && [ "$prev" != "--fpm" ] && [ "$prev" != "--fpm7" ] && [ "$prev" != "--mysql" ] && [ "$prev" != "-i" ] && [ "$prev" != "--interactive" ] && [ "$prev" != "--import-slow-log" ] && [ "$prev" != "--stop" ]); then + if [ ${COMP_WORDS[1]} == "debug" ] && ([ "$prev" != "--start" ] && [ "$prev" != "--nginx" ] && [ "$prev" != "--php" ] && [ "$prev" != "--php73" ] && [ "$prev" != "--fpm" ] && [ "$prev" != "--fpm7" ] && [ "$prev" != "--mysql" ] && [ "$prev" != "-i" ] && [ "$prev" != "--interactive" ] && [ "$prev" != "--import-slow-log" ] && [ "$prev" != "--stop" ]); then retlist="--all --wp --rewrite -i --all=off --wp=off --rewrite=off" ret="${retlist[@]/$prev}" COMPREPLY=( $(compgen \ @@ -159,13 +159,13 @@ _wo_complete() "create") COMPREPLY=( $(compgen \ - -W "--user --pass --email --html --php --php72 --mysql --wp --wpsubdir --wpsubdomain --wpfc --wpsc --hhvm --proxy= --wpredis --letsencrypt -le" \ + -W "--user --pass --email --html --php --php73 --mysql --wp --wpsubdir --wpsubdomain --wpfc --wpsc --hhvm --proxy= --wpredis --letsencrypt -le" \ -- $cur) ) ;; "update") COMPREPLY=( $(compgen \ - -W "--password --php --php72 --mysql --wp --wpsubdir --wpsubdomain --wpfc --wpsc --hhvm --hhvm=off --wpredis --letsencrypt --letsencrypt=off --letsencrypt=renew" \ + -W "--password --php --php73 --mysql --wp --wpsubdir --wpsubdomain --wpfc --wpsc --hhvm --hhvm=off --wpredis --letsencrypt --letsencrypt=off --letsencrypt=renew" \ -- $cur) ) ;; "delete") @@ -211,9 +211,9 @@ _wo_complete() "--wp") if [ ${COMP_WORDS[1]} != "debug" ]; then if [ ${COMP_WORDS[2]} == "create" ]; then - retlist="--wp --wpsc --wpfc --hhvm --user --email --pass --wpredis --letsencrypt --php72" + retlist="--wp --wpsc --wpfc --hhvm --user --email --pass --wpredis --letsencrypt --php73" elif [ ${COMP_WORDS[2]} == "update" ]; then - retlist="--wp --wpfc --wpsc --php72 --php72=off --hhvm --hhvm=off --wpredis --letsencrypt --letsencrypt=off --letsencrypt=renew" + retlist="--wp --wpfc --wpsc --php73 --php73=off --hhvm --hhvm=off --wpredis --letsencrypt --letsencrypt=off --letsencrypt=renew" else retlist="" fi @@ -230,9 +230,9 @@ _wo_complete() "--wpsubdir" | "--wpsubdomain") if [ ${COMP_WORDS[1]} != "debug" ]; then if [ ${COMP_WORDS[2]} == "create" ]; then - retlist="--wpsc --wpfc --hhvm --user --email --pass --wpredis --letsencrypt --php72" + retlist="--wpsc --wpfc --hhvm --user --email --pass --wpredis --letsencrypt --php73" elif [ ${COMP_WORDS[2]} == "update" ]; then - retlist="--wpfc --wpsc --php72 --php72=off --hhvm --hhvm=off --wpredis --letsencrypt --letsencrypt=off --letsencrypt=renew" + retlist="--wpfc --wpsc --php73 --php73=off --hhvm --hhvm=off --wpredis --letsencrypt --letsencrypt=off --letsencrypt=renew" else retlist="" fi @@ -248,7 +248,7 @@ _wo_complete() "--hhvm" | "--wpredis" | "--wpfc" | "--wpsc" | "--wpsubdir" | "--wpsubdomain" | "--user" | "--pass" | "--email" | "--wp") if [ ${COMP_WORDS[2]} == "create" ]; then - retlist="--user --pass --email --wp --wpsubdir --wpsubdomain --wpfc --wpsc --hhvm --experimenal --wpredis --php72 --letsencrypt " + retlist="--user --pass --email --wp --wpsubdir --wpsubdomain --wpfc --wpsc --hhvm --wpredis --php73 --letsencrypt " else retlist="" fi @@ -261,7 +261,7 @@ _wo_complete() "--hhvm" | "--wpredis" | "--wpfc") if [ ${COMP_WORDS[2]} == "update" ]; then - retlist="--password --php --php72 --mysql --wp --wpsubdir --wpsubdomain --wpfc --wpsc --hhvm --hhvm=off --experimenal --wpredis --letsencrypt --letsencrypt=off --letsencrypt=renew" + retlist="--password --php --php73 --mysql --wp --wpsubdir --wpsubdomain --wpfc --wpsc --hhvm --hhvm=off --wpredis --letsencrypt --letsencrypt=off --letsencrypt=renew" else retlist="" fi @@ -272,15 +272,15 @@ _wo_complete() -- $cur) ) ;; - "--web" | "--admin" | "--nginx" | "--php" | "--php72" | "--mysql" | "--wpcli" | "--phpmyadmin" | "--adminer" | "--utils" | "--memcache" | "--redis | --phpredisadmin") + "--web" | "--admin" | "--nginx" | "--php" | "--php73" | "--mysql" | "--wpcli" | "--phpmyadmin" | "--adminer" | "--utils" | "--memcache" | "--redis | --phpredisadmin") if [[ ${COMP_WORDS[2]} == "install" || ${COMP_WORDS[2]} == "purge" || ${COMP_WORDS[2]} == "remove" ]]; then - retlist="--web --admin --nginx --php --php72 --mysql--wpcli --phpmyadmin --adminer --utils --memcache --redis --phpredisadmin" + retlist="--web --admin --nginx --php --php73 --mysql--wpcli --phpmyadmin --adminer --utils --memcache --redis --phpredisadmin" elif [[ ${COMP_WORDS[2]} == "start" || ${COMP_WORDS[2]} == "reload" || ${COMP_WORDS[2]} == "restart" || ${COMP_WORDS[2]} == "stop" ]]; then - retlist="--nginx --php --php72 --mysql --memcache --redis" + retlist="--nginx --php --php73 --mysql --memcache --redis" elif [[ ${COMP_WORDS[1]} == "debug" ]]; then - retlist="--start --nginx --php --php72 --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 - retlist="--start --nginx --php --php72 --fpm --fpm7 --mysql -i --interactive --stop --import-slow-log" + retlist="--start --nginx --php --php73 --fpm --fpm7 --mysql -i --interactive --stop --import-slow-log" fi elif [[ ${COMP_WORDS[1]} == "log" ]]; then if [ ${COMP_WORDS[2]} == "show" ]; then @@ -314,7 +314,7 @@ _wo_complete() elif [ ${COMP_WORDS[2]} == "delete" ]; then retlist="--db --files --force" elif [ ${COMP_WORDS[2]} == "update" ]; then - retlist="--password --php --mysql --wp --wpsubdir --wpsubdomain --wpfc --wpsc --hhvm --hhvm=off --wpredis --letsencrypt --letsencrypt=off --letsencrypt=renew" + retlist="--password --php --mysql --wp --wpsubdir --wpsubdomain --wpfc --wpsc --hhvm --hhvm=off --wpredis --letsencrypt --letsencrypt=off --letsencrypt=renew" else retlist="" fi @@ -363,7 +363,7 @@ _wo_complete() case "$mprev" in "--user" | "--email" | "--pass") if [ ${COMP_WORDS[2]} == "create" ]; then - retlist="--user --pass --email --html --php --php72 --mysql --wp --wpsubdir --wpsubdomain --wpfc --wpsc --hhvm --wpredis --letsencrypt" + retlist="--user --pass --email --html --php --php73 --mysql --wp --wpsubdir --wpsubdomain --wpfc --wpsc --hhvm --wpredis --letsencrypt" fi ret="${retlist[@]/$prev}" COMPREPLY=( $(compgen \ diff --git a/docs/wo.8 b/docs/wo.8 index dc08d30..a6128b8 100644 --- a/docs/wo.8 +++ b/docs/wo.8 @@ -5,15 +5,15 @@ .SH SYNOPSIS wo [ --version | --help | info | stack | site | debug | update | clean | import_slow_log | log | secure | sync] .TP -wo stack [ install | remove | purge | migrate | upgrade] [ --web | --mail | --all | --nginx | --php | --php72 | --mysql | --admin | --postfix | --mailscanner | --adminer | --redis | --hhvm | --phpmyadmin | --phpredisadmin | --wpcli | --utils ] +wo stack [ install | remove | purge | migrate | upgrade] [ --web | --all | --nginx | --php | --php73 | --mysql | --admin | --adminer | --redis | --hhvm | --phpmyadmin | --phpredisadmin | --wpcli | --utils ] .TP -wo stack [ status | start | stop | reload | restart ] [--all | --nginx | --php | --php72 |--mysql | --devcot | --web | --postfix | --memcache | --redis] +wo stack [ status | start | stop | reload | restart ] [--all | --nginx | --php | --php73 |--mysql | --web | --memcache | --redis] .TP wo site [ list | info | show | enable | disable | edit | cd | show ] [ example.com ] .TP -wo site create example.com [ --html | --php | --php72 | --mysql] [[--wp | --wpsubdir | --wpsubdomain ] [--wpsc | --w3tc | --wpfc | --wpredis | --hhvm | --letsencrypt/-le]] +wo site create example.com [ --html | --php | --php73 | --mysql] [[--wp | --wpsubdir | --wpsubdomain ] [--wpsc | --wpfc | --wpredis | --hhvm | --letsencrypt/-le]] .TP -wo site update example.com [ --php | --php72 |--mysql] [[--wp | --wpsubdir | --wpsubdomain ] [--wpsc | --w3tc | --wpfc | --wpredis | --hhvm ] [--password] [--letsencrypt=on/off/renew]] +wo site update example.com [ --php | --php73 |--mysql] [[--wp | --wpsubdir | --wpsubdomain ] [--wpsc | --wpfc | --wpredis | --hhvm ] [--password] [--letsencrypt=on/off/renew]] .TP wo site delete example.com [--db | --files | --all | --no-prompt | --force/-f ] .TP @@ -46,19 +46,19 @@ Display WordOps (wo) help. .TP .B stack .TP -.B install [ --all | --web | --mail | --nginx | --php | --php72 |--mysql | --redis | --postfix | --adminer | --phpmyadmin | --phpredismyadmin | --wpcli | --utils ] +.B install [ --all | --web | --nginx | --php | --php73 |--mysql | --redis | --adminer | --phpmyadmin | --phpredismyadmin | --wpcli | --utils ] .br Install Nginx PHP5 MySQL Postfix stack Packages if not used with .br any options.Installs specific package if used with option. .TP -.B remove [ --all | --web | --mail | --nginx | --php | --php72 |--mysql | --redis | --postfix | --adminer | --phpmyadmin | --phpredismyadmin | --wpcli | --utils ] +.B remove [ --all | --web | --nginx | --php | --php73 |--mysql | --redis | --adminer | --phpmyadmin | --phpredismyadmin | --wpcli | --utils ] .br Remove Nginx PHP5 MySQL Postfix stack Packages if not used with .br any options. Remove specific package if used with option. .TP -.B purge [ --all | --web | --mail | --nginx | --php | --php72 |--mysql | --redis | --postfix | --adminer | --phpmyadmin | --phpredismyadmin | --wpcli | --utils ] +.B purge [ --all | --web | --nginx | --php | --php73 |--mysql | --redis | --adminer | --phpmyadmin | --phpredismyadmin | --wpcli | --utils ] .br Purge Nginx PHP5 MySQL Postfix stack Packages if not used with any .br @@ -66,23 +66,23 @@ options.Purge specific package if used with option. .TP .B status .br -Display status of NGINX, PHP5-FPM, MySQL, Postfix, Redis-Server services. +Display status of NGINX, PHP7.2-FPM, MySQL, Redis-Server services. .TP .B start .br -Start services NGINX, PHP5-FPM, MySQL, Postfix, Redis-Server. +Start services NGINX, PHP7.2-FPM, MySQL, Redis-Server. .TP .B stop .br -Stop services NGINX, PHP5-FPM, MySQL, Postfix, Redis-Server. +Stop services NGINX, PHP7.2-FPM, MySQL, Redis-Server. .TP .B reload .br -Reload services NGINX, PHP5-FPM, MySQL, Postfix, Redis-Server. +Reload services NGINX, PHP7.2-FPM, MySQL, Redis-Server. .TP .B restart .br -Restart services NGINX, PHP5-FPM, MySQL, Postfix, Redis-Server. +Restart services NGINX, PHP7.2-FPM, MySQL, Redis-Server. .TP .B site .br @@ -129,13 +129,13 @@ Disable site by Destroying softlink with site file in .br Edit NGINX configuration of site. .TP -.B create [ example.com ] [ --html | --php | --php72 |--mysql] [[--wp | --wpsubdir | --wpsubdomain ] [--wpsc | --w3tc | --wpfc | --wpredis | --hhvm ]] +.B create [ example.com ] [ --html | --php | --php73 |--mysql] [[--wp | --wpsubdir | --wpsubdomain ] [--wpsc | --wpfc | --wpredis | --hhvm ]] .br Create new site according to given options. If no options provided .br create static site with html only. .TP -.B update [ example.com ] [ --html | --php | --php72 |--mysql] [[--wp | --wpsubdir | --wpsubdomain ] [ --wpsc | --w3tc | --wpfc | --wpredis | --hhvm ] [--password]] +.B update [ example.com ] [ --html | --php | --php73 |--mysql] [[--wp | --wpsubdir | --wpsubdomain ] [ --wpsc | --wpfc | --wpredis | --hhvm ] [--password]] .br Update site configuration according to specified options. .TP @@ -143,7 +143,7 @@ Update site configuration according to specified options. .br Delete site i.e webroot, database, ad configuration permanently. .TP -.B debug [ -i | --nginx=on/off | --php=on/off | --php72=on/off | --mysql=on/off | --rewrite=on/off | --fpm=on/off | --fpm7=on/off ] +.B debug [ -i | --nginx=on/off | --php=on/off | --php73=on/off | --mysql=on/off | --rewrite=on/off | --fpm=on/off | --fpm7=on/off ] .br Starts server level debugging. If this is used without arguments it will start debugging .br @@ -182,7 +182,7 @@ used with wo debug command. used to start or stop nginx debugging. .br used with wo debug command. used to start or stop php debugging. .TP -.B --php72=on/off +.B --php73=on/off .br used with wo debug command. used to start or stop php72 debugging. .TP @@ -315,4 +315,4 @@ Report bugs at .br .B Rajdeep Sharma .I \ -.br \ No newline at end of file +.br diff --git a/install b/install index 0b8b421..aaf6f81 100644 --- a/install +++ b/install @@ -7,7 +7,7 @@ # Copyright (c) 2019 - WordOps # This script is licensed under M.I.T # ------------------------------------------------------------------------- -# Version 3.9.3 - 2019-03-04 +# Version 3.9.3 - 2019-03-05 # ------------------------------------------------------------------------- readonly wo_version_old="2.2.3" readonly wo_version_new="3.9.3" @@ -27,7 +27,7 @@ TPUT_FAIL=$(tput setaf 1) wo_lib_echo () { TPUT_ECHO=$(tput setaf 4) - echo "${TPUT_ECHO}${*}${TPUT_RESET}" + echo "${*}${TPUT_RESET}" } wo_lib_echo_info() @@ -82,7 +82,7 @@ fi ### # 1 - Define variables for later use ### -wo_branch=$1 +wo_branch="$1" migration=0 readonly wo_log_dir=/var/log/wo/ readonly wo_install_log=/var/log/wo/install.log @@ -96,17 +96,13 @@ if [ "$wo_linux_distro" != "Ubuntu" ] && [ "$wo_linux_distro" != "Debian" ]; the wo_lib_echo_fail "WordOps (wo) only supports Ubuntu and Debian at the moment." wo_lib_echo_fail "If you are feeling adventurous, you are free to fork WordOps to support" wo_lib_echo_fail "other Linux distributions and perhaps even Unix deratives." - wo_lib_echo_fail "WordOps (wo) only supports Ubuntu 14.04/16.04/18.04, Debian 8.x and Debian 9.x" - exit 100 -fi - -### -# 1 - WordOps (wo) only supports Ubuntu/Debian versions that are eligible for support -### -lsb_release -d | grep -E "14.04|16.04|18.04|jessie|stretch" &>> /dev/null -if [ "$?" -ne "0" ]; then - wo_lib_echo_fail "WordOps (wo) only supports Ubuntu 14.04/16.04/18.04, Debian 8.x and Debian 9.x" exit 100 +else + check_wo_linux_distro=$(lsb_release -sc | grep -E "trusty|xenial|bionic|jessie|stretch") + if [ -z "$check_wo_linux_distro" ]; then + wo_lib_echo_fail "WordOps (wo) only supports Ubuntu 14.04/16.04/18.04, Debian 8.x and Debian 9.x" + exit 100 + fi fi ### @@ -127,16 +123,18 @@ fi #### wo_install_dep() { - echo -ne ' Installing dependencies [..]\r' + echo -ne "${TPUT_ECHO}Installing dependencies ${TPUT_RESET}[..]\r" if { if [ "$wo_linux_distro" == "Ubuntu" ]; then apt-get -y install build-essential curl gzip python3 python3-apt python3-setuptools python3-dev sqlite3 git tar software-properties-common pigz gnupg2 > /dev/null 2>&1 else apt-get -y install build-essential curl gzip dirmngr python3 python3-apt python3-setuptools python3-dev sqlite3 git tar software-properties-common pigz gnupg2 > /dev/null 2>&1 fi - }; then echo -ne ' Installing dependencies [OK]\r' + }; then echo -ne "${TPUT_ECHO}Installing dependencies ${TPUT_RESET}[OK]\r" + echo -ne '\n' else - echo -e " Installing dependencies [FAIL]" + echo -e "${TPUT_FAIL}Installing dependencies ${TPUT_RESET}[FAIL]" + echo -ne '\n' fi locale-gen en &>> /dev/null @@ -150,34 +148,6 @@ wo_install_dep() sed -i 's/TLSv1 TLSv1.1 TLSv1.2;/TLSv1.2;/g' /etc/nginx/nginx.conf fi - if [ "$wo_linux_distro" == "Ubuntu" ]; then - add-apt-repository -y 'ppa:ondrej/php' - wo_lib_echo "Updating the PHP repository for some neat PHP 7.2 support" - apt-get update &>> /dev/null - apt-get -y install php7.2-fpm php7.2-curl php7.2-gd php-memcached php7.2-imap php7.2-common php7.2-readline php-redis php7.2-mysql php7.2-cli php-imagick php7.2-mbstring php7.2-recode php7.2-bcmath php7.2-opcache php7.2-zip php7.2-xml php7.2-soap php-msgpack graphviz php-pear php-xdebug || wo_lib_error "Not all PHP packages could be installed. " 1 - mkdir -p /var/log/php/7.2/ - touch /var/log/php/7.2/slow.log /var/log/php/7.2/fpm.log - systemctl php7.2-fpm restart &>> /dev/null - - elif [ "$wo_linux_distro" == "Debian" ]; then - apt-get install apt-transport-https lsb-release ca-certificates locales locales-all -y - export LC_ALL=en_US.UTF-8 - export LANG=en_US.UTF-8 - wget -O /etc/apt/trusted.gpg.d/php.gpg https://packages.sury.org/php/apt.gpg - echo "deb https://packages.sury.org/php/ $(lsb_release -sc) main" | tee /etc/apt/sources.list.d/php.list - apt-get update &>> /dev/null - apt-get -y install php7.2-fpm php7.2-curl php7.2-gd php-memcached php7.2-imap php7.2-common php7.2-readlne php-redis php7.2-mysql php7.2-cli php-imagick php7.2-mbstring php7.2-recode php7.2-bcmath php7.2-opcache php7.2-zip php7.2-xml php7.2-soap php-msgpack graphviz php-pear php-xdebug || wo_lib_error "Not all PHP packages could be installed." 1 - systemctl php7.2-fpm restart &>> /dev/null - fi - - ### - # Webp mapping - ### - [ ! -f /etc/nginx/conf.d/webp.conf ] && { - mkdir -p /etc/nginx/conf.d - echo -e 'map $http_accept $webp_suffix {\n default "";\n "~*webp" ".webp";\n}\n' > /etc/nginx/conf.d/webp.conf - } - # Let's Encrypt .well-known folder setup if [ ! -d /var/www/html/.well-known/acme-challenge ]; then mkdir -p /var/www/html/.well-known/acme-challenge @@ -389,20 +359,25 @@ wo_update_wp_cli() # Now, finally, let's install WordOps wo_install() { - rm -rf /tmp/easyengine - rm -rf /tmp/wordops - - wo_lib_echo "Downloading WordOps straight from GitHub - fresh and brewed with love. Hold your horses..." - [ -z "$wo_branch" ] && { - wo_branch=master - } - - git clone -b "$wo_branch" https://github.com/WordOps/WordOps.git /tmp/wordops --quiet > /dev/null \ - || wo_lib_error "An error was encountered during the download, exit status" $? - - cd /tmp/wordops || exit 1 - wo_lib_echo "The moment you've all been waiting for, time to install WordOps!" - python3 setup.py install || wo_lib_error "An error was encountered during the installation, exit status " $? + if { + echo -ne "${TPUT_ECHO}Installing Wordops $wo_branch ${TPUT_RESET}[..]\r" + rm -rf /tmp/easyengine + rm -rf /tmp/wordops + + [ -z "$wo_branch" ] && { + wo_branch=master + } + + git clone -b "$wo_branch" https://github.com/WordOps/WordOps.git /tmp/wordops --quiet > /dev/null 2>&1 + + cd /tmp/wordops || exit 1 + python3 setup.py install > /dev/null 2>&1 + }; then echo -ne "${TPUT_ECHO}Installing Wordops $wo_branch ${TPUT_RESET}[OK]\r" + echo -ne '\n' + else + echo -e "${TPUT_FAIL}Installing Wordops $wo_branch ${TPUT_RESET}[FAIL]" + echo -ne '\n' + fi } wo_update_latest() @@ -427,10 +402,10 @@ wo_update_latest() fi fi - #Move ~/.my.cnf to /etc/mysql/conf.d/my.cnf + # Move ~/.my.cnf to /etc/mysql/conf.d/my.cnf if [ ! -f /etc/mysql/conf.d/my.cnf ] then - #create conf.d folder if not exist + # create conf.d folder if not exist if [ ! -d /etc/mysql/conf.d ]; then mkdir -p /etc/mysql/conf.d chmod 755 /etc/mysql/conf.d @@ -475,11 +450,11 @@ wo_update_latest() DEBIAN_FRONTEND=noninteractive apt-get -o Dpkg::Options::="--force-confmiss" -o Dpkg::Options::="--force-confold" -y install nginx-custom nginx-ee service nginx restart &>> /dev/null fi - dpkg --get-selections | grep -v deinstall | grep nginx-common - if [ $? -eq 0 ]; then + CHECK_NGINX_COMMON=$(dpkg --get-selections | grep -v deinstall | grep nginx-common) + if [ -n "$CHECK_NGINX_COMMON" ]; then apt-get update - dpkg --get-selections | grep -v deinstall | grep nginx-mainline - if [ $? -eq 0 ]; then + CHECK_NGINX_MAILINE=$(dpkg --get-selections | grep -v deinstall | grep nginx-mainline) + if [ -n "$CHECK_NGINX_MAILINE" ]; then apt-get remove -y nginx-mainline fi service nginx stop &>> /dev/null @@ -503,11 +478,11 @@ wo_update_latest() apt-get -o Dpkg::Options::="--force-confmiss" -o Dpkg::Options::="--force-confold" -y install nginx-custom systemctl restart nginx &>> /dev/null fi - dpkg --get-selections | grep -v deinstall | grep nginx-common - if [ $? -eq 0 ]; then + CHECK_NGINX_COMMON=$(dpkg --get-selections | grep -v deinstall | grep nginx-common) + if [ -n "$CHECK_NGINX_COMMON" ]; then apt-get update - dpkg --get-selections | grep -v deinstall | grep nginx-mainline - if [ $? -eq 0 ]; then + CHECK_NGINX_MAILINE=$(dpkg --get-selections | grep -v deinstall | grep nginx-mainline) + if [ -n "$CHECK_NGINX_MAILINE" ]; then apt-get remove -y nginx-mainline fi systemctl stop nginx &>> /dev/null @@ -525,8 +500,8 @@ wo_update_latest() fi # Fix HHVM autostart on reboot - dpkg --get-selections | grep -v deinstall | grep hhvm &>> /dev/null - if [ $? -eq 0 ]; then + CHECK_HHVM_INSTALL=$(dpkg --get-selections | grep -v deinstall | grep hhvm &>> /dev/null) + if [ -n "$CHECK_HHVM_INSTALL" ]; then update-rc.d hhvm defaults &>> /dev/null fi @@ -579,8 +554,8 @@ wo_update_latest() fi fi - #Fix Redis-server security issue - #http://redis.io/topics/security + # Fix Redis-server security issue + # http://redis.io/topics/security if [ -f /etc/redis/redis.conf ]; then grep -0 -v "#" /etc/redis/redis.confse | grep 'bind' &>> /dev/null if [ $? -ne 0 ]; then @@ -597,7 +572,7 @@ wo_update_latest() # Fix for 3.3.2 renamed nginx.conf - nginx -V 2>&1 &>>/dev/null + nginx -V &>>/dev/null 2>&1 if [[ $? -eq 0 ]]; then nginx -t 2>&1 | grep 'open() "/etc/nginx/nginx.conf" failed' &>>/dev/null if [[ $? -eq 0 ]]; then @@ -634,27 +609,7 @@ wo_update_latest() fi fi - if [ "$wo_linux_distro" == "Ubuntu" ]; then - add-apt-repository -y 'ppa:ondrej/php' - wo_lib_echo "Updating the PHP repository for some neat PHP 7.2 support" - apt-get update &>> /dev/null - apt-get -y install php7.2-fpm php7.2-curl php7.2-gd php7.2-imap php-memcached php7.2-common php7.2-readline php-redis php7.2-mysql php7.2-cli php-imagick php7.2-mbstring php7.2-recode php7.2-bcmath php7.2-opcache php7.2-zip php7.2-xml php7.2-soap php-msgpack graphviz php-pear php-xdebug || wo_lib_error "Not all PHP packages could be installed. " 1 - mkdir -p /var/log/php/7.2/ - touch /var/log/php/7.2/slow.log /var/log/php/7.2/fpm.log - systemctl php7.2-fpm restart &>> /dev/null - - elif [ "$wo_linux_distro" == "Debian" ]; then - apt-get install apt-transport-https lsb-release ca-certificates locales locales-all -y - export LC_ALL=en_US.UTF-8 - export LANG=en_US.UTF-8 - wget -O /etc/apt/trusted.gpg.d/php.gpg https://packages.sury.org/php/apt.gpg - echo "deb https://packages.sury.org/php/ $(lsb_release -sc) main" | tee /etc/apt/sources.list.d/php.list - apt-get update &>> /dev/null - apt-get -y install php7.2-fpm php7.2-curl php7.2-gd php7.2-imap php-memcached php7.2-common php7.2-readline php-redis php7.2-mysql php7.2-cli php-imagick php7.2-mbstring php7.2-recode php7.2-bcmath php7.2-opcache php7.2-zip php7.2-xml php7.2-soap php-msgpack graphviz php-pear php-xdebug || wo_lib_error "Not all PHP packages could be installed." 1 - systemctl php7.2-fpm restart &>> /dev/null - fi - - #Fix for SSL cert --all + # Fix for SSL cert --all crontab -l | grep -q '\-\-min_expiry_limit' if [[ $? -eq 0 ]]; then crontab -l > /var/spool/cron/cron-backup.txt #backup cron before editing @@ -683,7 +638,7 @@ wo_git_init() git add -A . git commit -am "Installed/Updated to WordOps" &>> /dev/null - #PHP under git version control + # PHP under git version control [ -d /etc/php ] && { cd /etc/php || exit 1 if [ ! -d /etc/php/.git ]; then @@ -694,24 +649,18 @@ wo_git_init() }> /dev/null } -if [ ! -x /usr/local/bin/ee ]; then - if [ ! -x /usr/local/bin/wo ]; then - wo_lib_echo "Installing depedencies" | tee -ai $wo_install_log - wo_install_dep | tee -ai $wo_install_log - wo_lib_echo "Installing WordOps $wo_branch" | tee -ai $wo_install_log - wo_install | tee -ai $wo_install_log - wo_lib_echo "Running post-install steps" | tee -ai $wo_install_log - secure_wo_db | tee -ai $EE_INSTALL_LOG - wo_git_init | tee -ai $wo_install_log - wo_update_wp_cli | tee -ai $wo_install_log - fi -else +### +# 4 - WO MAIN SETUP +### + +# 1 - WO already installed +if [ -x /usr/local/bin/wo ]; then wo -v 2>&1 | grep $wo_version_new &>> /dev/null if [[ $? -ne 0 ]];then read -p "Update WordOps to $wo_version_new (y/n): " wo_ans if [ "$wo_ans" = "y" ] || [ "$wo_ans" = "Y" ]; then wo_install_dep | tee -ai $wo_install_log - wo_sync_db 2&>>1 $EE_INSTALL_LOG + wo_sync_db >> $EE_INSTALL_LOG 2>&1 secure_wo_db | tee -ai $EE_INSTALL_LOG wo_upgrade_php | tee -ai $wo_install_log wo_install | tee -ai $wo_install_log @@ -726,6 +675,38 @@ else else wo_lib_error "You already have WordOps $wo_version_new, exit status = " 1 fi +else + # 2 - Migration from EEv3 + if [ -x /usr/local/bin/ee ]; then + ee -v 2>&1 | grep $wo_version_new &>> /dev/null + if [[ $? -ne 0 ]];then + read -p "Update WordOps to $wo_version_new (y/n): " wo_ans + if [ "$wo_ans" = "y" ] || [ "$wo_ans" = "Y" ]; then + wo_install_dep | tee -ai $wo_install_log + wo_sync_db >> $EE_INSTALL_LOG 2>&1 + secure_wo_db | tee -ai $EE_INSTALL_LOG + wo_upgrade_php | tee -ai $wo_install_log + wo_install | tee -ai $wo_install_log + wo_update_latest | tee -ai $wo_install_log + wo_git_init | tee -ai $wo_install_log + service nginx reload &>> /dev/null + service php7.2-fpm restart &>> /dev/null + wo_update_wp_cli | tee -ai $wo_install_log + else + wo_lib_error "Not updating WordOps to $wo_version_new, exit status = " 1 + fi + else + wo_lib_error "You already have WordOps $wo_version_new, exit status = " 1 + fi + else + # 3 - Fresh WO setup + wo_install_dep | tee -ai $wo_install_log + wo_install | tee -ai $wo_install_log + wo_lib_echo "Running post-install steps" | tee -ai $wo_install_log + secure_wo_db | tee -ai $EE_INSTALL_LOG + wo_git_init | tee -ai $wo_install_log + wo_update_wp_cli | tee -ai $wo_install_log + fi fi wo sync | tee -ai $WO_INSTALL_LOG diff --git a/wo/cli/controllers/base.py b/wo/cli/controllers/base.py index ad49a25..9a2dbc0 100644 --- a/wo/cli/controllers/base.py +++ b/wo/cli/controllers/base.py @@ -6,7 +6,7 @@ VERSION = WOVariables.wo_version BANNER = """ WordOps v%s -Copyright (c) 2018 WordOps. +Copyright (c) 2019 WordOps. """ % VERSION diff --git a/wo/cli/plugins/clean.py b/wo/cli/plugins/clean.py index 38ddf61..b94e5f8 100644 --- a/wo/cli/plugins/clean.py +++ b/wo/cli/plugins/clean.py @@ -19,14 +19,14 @@ class WOCleanController(CementBaseController): label = 'clean' stacked_on = 'base' stacked_type = 'nested' - description = ('Clean NGINX FastCGI cache, Opcache, Memcache, Redis Cache') + description = ('Clean NGINX FastCGI cache, Opcache, Memcached, Redis Cache') arguments = [ (['--all'], dict(help='Clean all cache', action='store_true')), (['--fastcgi'], dict(help='Clean FastCGI cache', action='store_true')), - (['--memcache'], - dict(help='Clean MemCache', action='store_true')), + (['--memcached'], + dict(help='Clean MemCached', action='store_true')), (['--opcache'], dict(help='Clean OpCache', action='store_true')), (['--redis'], @@ -37,22 +37,23 @@ class WOCleanController(CementBaseController): @expose(hide=True) def default(self): if (not (self.app.pargs.all or self.app.pargs.fastcgi or - self.app.pargs.memcache or self.app.pargs.opcache or + self.app.pargs.memcached or self.app.pargs.opcache or self.app.pargs.redis)): self.clean_fastcgi() if self.app.pargs.all: - self.clean_memcache() + self.clean_memcached() self.clean_fastcgi() self.clean_opcache() self.clean_redis() if self.app.pargs.fastcgi: self.clean_fastcgi() - if self.app.pargs.memcache: - self.clean_memcache() + if self.app.pargs.memcached: + self.clean_memcached() if self.app.pargs.opcache: self.clean_opcache() if self.app.pargs.redis: self.clean_redis() + @expose(hide=True) def clean_redis(self): """This function clears Redis cache""" @@ -67,9 +68,9 @@ class WOCleanController(CementBaseController): try: if(WOAptGet.is_installed(self, "memcached")): WOService.restart_service(self, "memcached") - Log.info(self, "Cleaning MemCache") + Log.info(self, "Cleaning MemCached") else: - Log.info(self, "Memcache not installed") + Log.info(self, "Memcached not installed") except Exception as e: Log.debug(self, "{0}".format(e)) Log.error(self, "Unable to restart Memcached", False) @@ -97,6 +98,7 @@ class WOCleanController(CementBaseController): " or install them with `wo stack install --admin`") Log.error(self, "Unable to clean opcache", False) + def load(app): # register the plugin class.. this only happens if the plugin is enabled handler.register(WOCleanController) diff --git a/wo/cli/plugins/debug.py b/wo/cli/plugins/debug.py index 218bb08..57da542 100644 --- a/wo/cli/plugins/debug.py +++ b/wo/cli/plugins/debug.py @@ -42,19 +42,19 @@ class WODebugController(CementBaseController): action='store' or 'store_const', choices=('on', 'off'), const='on', nargs='?')), (['--php'], - dict(help='start/stop debugging server PHP configuration', + dict(help='start/stop debugging server PHP 7.2 configuration', action='store' or 'store_const', choices=('on', 'off'), const='on', nargs='?')), (['--fpm'], dict(help='start/stop debugging fastcgi configuration', action='store' or 'store_const', choices=('on', 'off'), const='on', nargs='?')), - (['--php72'], - dict(help='start/stop debugging server PHP 7.2 configuration', + (['--php73'], + dict(help='start/stop debugging server PHP 7.3 configuration', action='store' or 'store_const', choices=('on', 'off'), const='on', nargs='?')), - (['--fpm7'], - dict(help='start/stop debugging fastcgi 7.2 configuration', + (['--fpm73'], + dict(help='start/stop debugging fastcgi 7.3 configuration', action='store' or 'store_const', choices=('on', 'off'), const='on', nargs='?')), (['--mysql'], @@ -80,7 +80,7 @@ class WODebugController(CementBaseController): action='store', dest='interval')), (['site_name'], dict(help='Website Name', nargs='?', default=None)) - ] + ] usage = "wo debug [] [options] " @expose(hide=True) @@ -100,7 +100,7 @@ class WODebugController(CementBaseController): for ip_addr in debug_address: if not ("debug_connection "+ip_addr in open('/etc/nginx/' - 'nginx.conf', encoding='utf-8').read()): + 'nginx.conf', encoding='utf-8').read()): Log.info(self, "Setting up Nginx debug connection" " for "+ip_addr) WOShellExec.cmd_exec(self, "sed -i \"/events {{/a\\ \\ \\ " @@ -187,26 +187,28 @@ class WODebugController(CementBaseController): # Change upstream.conf nc = NginxConfig() nc.loadf('/etc/nginx/conf.d/upstream.conf') - nc.set([('upstream','php',), 'server'], '127.0.0.1:9001') + nc.set([('upstream', 'php',), 'server'], '127.0.0.1:9001') if os.path.isfile("/etc/nginx/common/wpfc-hhvm.conf"): - nc.set([('upstream','hhvm',), 'server'], '127.0.0.1:9001') + nc.set([('upstream', 'hhvm',), 'server'], '127.0.0.1:9001') nc.savef('/etc/nginx/conf.d/upstream.conf') # Enable xdebug - WOFileUtils.searchreplace(self, "/etc/{0}/mods-available/".format("php/5.6" if (WOVariables.wo_platform_codename == 'trusty' or WOVariables.wo_platform_codename == 'xenial' or WOVariables.wo_platform_codename == 'bionic') else "php5") + - "xdebug.ini", - ";zend_extension", - "zend_extension") + WOFileUtils.searchreplace(self, "/etc/{0}/mods-available/".format("php/7.2" if (WOVariables.wo_platform_codename == 'trusty' or WOVariables.wo_platform_codename == 'xenial' or WOVariables.wo_platform_codename == 'bionic') else "php5") + + "xdebug.ini", + ";zend_extension", + "zend_extension") # Fix slow log is not enabled default in PHP5.6 config = configparser.ConfigParser() - config.read('/etc/{0}/fpm/pool.d/debug.conf'.format("php/5.6" if (WOVariables.wo_platform_codename == 'trusty' or WOVariables.wo_platform_codename == 'xenial' or WOVariables.wo_platform_codename == 'bionic') else "php5")) - config['debug']['slowlog'] = '/var/log/{0}/slow.log'.format("php/5.6" if (WOVariables.wo_platform_codename == 'trusty' or WOVariables.wo_platform_codename == 'xenial' or WOVariables.wo_platform_codename == 'bionic') else "php5") + config.read('/etc/{0}/fpm/pool.d/debug.conf'.format("php/7.2" if (WOVariables.wo_platform_codename == + 'trusty' or WOVariables.wo_platform_codename == 'xenial' or WOVariables.wo_platform_codename == 'bionic') else "php5")) + config['debug']['slowlog'] = '/var/log/{0}/slow.log'.format("php/7.2" if ( + WOVariables.wo_platform_codename == 'trusty' or WOVariables.wo_platform_codename == 'xenial' or WOVariables.wo_platform_codename == 'bionic') else "php5") config['debug']['request_slowlog_timeout'] = '10s' - with open('/etc/{0}/fpm/pool.d/debug.conf'.format("php/5.6" if (WOVariables.wo_platform_codename == 'trusty' or WOVariables.wo_platform_codename == 'xenial' or WOVariables.wo_platform_codename == 'bionic') else "php5"), + with open('/etc/{0}/fpm/pool.d/debug.conf'.format("php/7.2" if (WOVariables.wo_platform_codename == 'trusty' or WOVariables.wo_platform_codename == 'xenial' or WOVariables.wo_platform_codename == 'bionic') else "php5"), encoding='utf-8', mode='w') as confifile: Log.debug(self, "Writting debug.conf configuration into " - "/etc/{0}/fpm/pool.d/debug.conf".format("php/5.6" if (WOVariables.wo_platform_codename == 'trusty' or WOVariables.wo_platform_codename == 'xenial' or WOVariables.wo_platform_codename == 'bionic') else "php5")) + "/etc/{0}/fpm/pool.d/debug.conf".format("php/7.2" if (WOVariables.wo_platform_codename == 'trusty' or WOVariables.wo_platform_codename == 'xenial' or WOVariables.wo_platform_codename == 'bionic') else "php5")) config.write(confifile) self.trigger_php = True @@ -214,7 +216,8 @@ class WODebugController(CementBaseController): else: Log.info(self, "PHP debug is already enabled") - self.msg = self.msg + ['/var/log/{0}/slow.log'.format("php/5.6" if (WOVariables.wo_platform_codename == 'trusty' or WOVariables.wo_platform_codename == 'xenial' or WOVariables.wo_platform_codename == 'bionic') else "php5")] + self.msg = self.msg + ['/var/log/{0}/slow.log'.format("php/7.2" if ( + WOVariables.wo_platform_codename == 'trusty' or WOVariables.wo_platform_codename == 'xenial' or WOVariables.wo_platform_codename == 'bionic') else "php5")] # PHP global debug stop elif (self.app.pargs.php == 'off' and not self.app.pargs.site_name): @@ -226,13 +229,13 @@ class WODebugController(CementBaseController): # Change upstream.conf nc = NginxConfig() nc.loadf('/etc/nginx/conf.d/upstream.conf') - nc.set([('upstream','php',), 'server'], '127.0.0.1:9000') + nc.set([('upstream', 'php',), 'server'], '127.0.0.1:9000') if os.path.isfile("/etc/nginx/common/wpfc-hhvm.conf"): - nc.set([('upstream','hhvm',), 'server'], '127.0.0.1:8000') + nc.set([('upstream', 'hhvm',), 'server'], '127.0.0.1:8000') nc.savef('/etc/nginx/conf.d/upstream.conf') # Disable xdebug - WOFileUtils.searchreplace(self, "/etc/{0}/mods-available/".format("php/5.6" if (WOVariables.wo_platform_codename == 'trusty' or WOVariables.wo_platform_codename == 'xenial' or WOVariables.wo_platform_codename == 'bionic') else "php5") + + WOFileUtils.searchreplace(self, "/etc/{0}/mods-available/".format("php/7.2" if (WOVariables.wo_platform_codename == 'trusty' or WOVariables.wo_platform_codename == 'xenial' or WOVariables.wo_platform_codename == 'bionic') else "php5") + "xdebug.ini", "zend_extension", ";zend_extension") @@ -248,38 +251,43 @@ class WODebugController(CementBaseController): # PHP5-FPM start global debug if (self.app.pargs.fpm == 'on' and not self.app.pargs.site_name): if not WOShellExec.cmd_exec(self, "grep \"log_level = debug\" " - "/etc/{0}/fpm/php-fpm.conf".format("php/5.6" if (WOVariables.wo_platform_codename == 'trusty' or WOVariables.wo_platform_codename == 'xenial' or WOVariables.wo_platform_codename == 'bionic') else "php5")): + "/etc/{0}/fpm/php-fpm.conf".format("php/7.2" if (WOVariables.wo_platform_codename == 'trusty' or WOVariables.wo_platform_codename == 'xenial' or WOVariables.wo_platform_codename == 'bionic') else "php5")): Log.info(self, "Setting up PHP5-FPM log_level = debug") config = configparser.ConfigParser() - config.read('/etc/{0}/fpm/php-fpm.conf'.format("php/5.6" if (WOVariables.wo_platform_codename == 'trusty' or WOVariables.wo_platform_codename == 'xenial' or WOVariables.wo_platform_codename == 'bionic') else "php5")) + config.read('/etc/{0}/fpm/php-fpm.conf'.format("php/7.2" if (WOVariables.wo_platform_codename == + 'trusty' or WOVariables.wo_platform_codename == 'xenial' or WOVariables.wo_platform_codename == 'bionic') else "php5")) config.remove_option('global', 'include') config['global']['log_level'] = 'debug' - config['global']['include'] = '/etc/{0}/fpm/pool.d/*.conf'.format("php/5.6" if (WOVariables.wo_platform_codename == 'trusty' or WOVariables.wo_platform_codename == 'xenial' or WOVariables.wo_platform_codename == 'bionic') else "php5") - with open('/etc/{0}/fpm/php-fpm.conf'.format("php/5.6" if (WOVariables.wo_platform_codename == 'trusty' or WOVariables.wo_platform_codename == 'xenial' or WOVariables.wo_platform_codename == 'bionic') else "php5"), + config['global']['include'] = '/etc/{0}/fpm/pool.d/*.conf'.format("php/7.2" if ( + WOVariables.wo_platform_codename == 'trusty' or WOVariables.wo_platform_codename == 'xenial' or WOVariables.wo_platform_codename == 'bionic') else "php5") + with open('/etc/{0}/fpm/php-fpm.conf'.format("php/7.2" if (WOVariables.wo_platform_codename == 'trusty' or WOVariables.wo_platform_codename == 'xenial' or WOVariables.wo_platform_codename == 'bionic') else "php5"), encoding='utf-8', mode='w') as configfile: Log.debug(self, "Writting php5-FPM configuration into " - "/etc/{0}/fpm/php-fpm.conf".format("php/5.6" if (WOVariables.wo_platform_codename == 'trusty' or WOVariables.wo_platform_codename == 'xenial' or WOVariables.wo_platform_codename == 'bionic') else "php5")) + "/etc/{0}/fpm/php-fpm.conf".format("php/7.2" if (WOVariables.wo_platform_codename == 'trusty' or WOVariables.wo_platform_codename == 'xenial' or WOVariables.wo_platform_codename == 'bionic') else "php5")) config.write(configfile) self.trigger_php = True else: Log.info(self, "PHP5-FPM log_level = debug already setup") - self.msg = self.msg + ['/var/log/{0}/fpm.log'.format("php/5.6" if (WOVariables.wo_platform_codename == 'trusty' or WOVariables.wo_platform_codename == 'xenial' or WOVariables.wo_platform_codename == 'bionic') else "php5")] + self.msg = self.msg + ['/var/log/{0}/fpm.log'.format("php/7.2" if ( + WOVariables.wo_platform_codename == 'trusty' or WOVariables.wo_platform_codename == 'xenial' or WOVariables.wo_platform_codename == 'bionic') else "php5")] # PHP5-FPM stop global debug elif (self.app.pargs.fpm == 'off' and not self.app.pargs.site_name): if WOShellExec.cmd_exec(self, "grep \"log_level = debug\" " - "/etc/{0}/fpm/php-fpm.conf".format("php/5.6" if (WOVariables.wo_platform_codename == 'trusty' or WOVariables.wo_platform_codename == 'xenial' or WOVariables.wo_platform_codename == 'bionic') else "php5")): + "/etc/{0}/fpm/php-fpm.conf".format("php/7.2" if (WOVariables.wo_platform_codename == 'trusty' or WOVariables.wo_platform_codename == 'xenial' or WOVariables.wo_platform_codename == 'bionic') else "php5")): Log.info(self, "Disabling PHP5-FPM log_level = debug") config = configparser.ConfigParser() - config.read('/etc/{0}/fpm/php-fpm.conf'.format("php/5.6" if (WOVariables.wo_platform_codename == 'trusty' or WOVariables.wo_platform_codename == 'xenial' or WOVariables.wo_platform_codename == 'bionic') else "php5")) + config.read('/etc/{0}/fpm/php-fpm.conf'.format("php/7.2" if (WOVariables.wo_platform_codename == + 'trusty' or WOVariables.wo_platform_codename == 'xenial' or WOVariables.wo_platform_codename == 'bionic') else "php5")) config.remove_option('global', 'include') config['global']['log_level'] = 'notice' - config['global']['include'] = '/etc/{0}/fpm/pool.d/*.conf'.format("php/5.6" if (WOVariables.wo_platform_codename == 'trusty' or WOVariables.wo_platform_codename == 'xenial' or WOVariables.wo_platform_codename == 'bionic') else "php5") - with open('/etc/{0}/fpm/php-fpm.conf'.format("php/5.6" if (WOVariables.wo_platform_codename == 'trusty' or WOVariables.wo_platform_codename == 'xenial' or WOVariables.wo_platform_codename == 'bionic') else "php5"), + config['global']['include'] = '/etc/{0}/fpm/pool.d/*.conf'.format("php/7.2" if ( + WOVariables.wo_platform_codename == 'trusty' or WOVariables.wo_platform_codename == 'xenial' or WOVariables.wo_platform_codename == 'bionic') else "php5") + with open('/etc/{0}/fpm/php-fpm.conf'.format("php/7.2" if (WOVariables.wo_platform_codename == 'trusty' or WOVariables.wo_platform_codename == 'xenial' or WOVariables.wo_platform_codename == 'bionic') else "php5"), encoding='utf-8', mode='w') as configfile: Log.debug(self, "writting php5 configuration into " - "/etc/{0}/fpm/php-fpm.conf".format("php/5.6" if (WOVariables.wo_platform_codename == 'trusty' or WOVariables.wo_platform_codename == 'xenial' or WOVariables.wo_platform_codename == 'bionic') else "php5")) + "/etc/{0}/fpm/php-fpm.conf".format("php/7.2" if (WOVariables.wo_platform_codename == 'trusty' or WOVariables.wo_platform_codename == 'xenial' or WOVariables.wo_platform_codename == 'bionic') else "php5")) config.write(configfile) self.trigger_php = True @@ -287,43 +295,43 @@ class WODebugController(CementBaseController): Log.info(self, "PHP5-FPM log_level = debug already disabled") @expose(hide=True) - def debug_php72(self): + def debug_php73(self): """Start/Stop PHP debug""" # PHP global debug start - if (self.app.pargs.php72 == 'on' and not self.app.pargs.site_name): + if (self.app.pargs.php73 == 'on' and not self.app.pargs.site_name): if (WOVariables.wo_platform_codename == 'wheezy' or WOVariables.wo_platform_codename == 'precise'): - Log.error(self,"PHP 7.2 not supported.") - if not (WOShellExec.cmd_exec(self, "sed -n \"/upstream php7" + Log.error(self, "PHP 7.3 not supported.") + if not (WOShellExec.cmd_exec(self, "sed -n \"/upstream php73" "{/,/}/p \" /etc/nginx/" "conf.d/upstream.conf " - "| grep 9172")): + "| grep 9173")): - Log.info(self, "Enabling PHP 7.2 debug") + Log.info(self, "Enabling PHP 7.3 debug") # Change upstream.conf nc = NginxConfig() nc.loadf('/etc/nginx/conf.d/upstream.conf') - nc.set([('upstream','php72',), 'server'], '127.0.0.1:9172') + nc.set([('upstream', 'php73',), 'server'], '127.0.0.1:9173') if os.path.isfile("/etc/nginx/common/wpfc-hhvm.conf"): - nc.set([('upstream','hhvm',), 'server'], '127.0.0.1:9172') + nc.set([('upstream', 'hhvm',), 'server'], '127.0.0.1:9173') nc.savef('/etc/nginx/conf.d/upstream.conf') # Enable xdebug - WOFileUtils.searchreplace(self, "/etc/php/7.2/mods-available/" - "xdebug.ini", - ";zend_extension", - "zend_extension") + WOFileUtils.searchreplace(self, "/etc/php/7.3/mods-available/" + "xdebug.ini", + ";zend_extension", + "zend_extension") # Fix slow log is not enabled default in PHP5.6 config = configparser.ConfigParser() - config.read('/etc/php/7.2/fpm/pool.d/debug.conf') - config['debug']['slowlog'] = '/var/log/php/7.2/slow.log' + config.read('/etc/php/7.3/fpm/pool.d/debug.conf') + config['debug']['slowlog'] = '/var/log/php/7.3/slow.log' config['debug']['request_slowlog_timeout'] = '10s' - with open('/etc/php/7.2/fpm/pool.d/debug.conf', + with open('/etc/php/7.3/fpm/pool.d/debug.conf', encoding='utf-8', mode='w') as confifile: Log.debug(self, "Writting debug.conf configuration into " - "/etc/php/7.2/fpm/pool.d/debug.conf") + "/etc/php/7.3/fpm/pool.d/debug.conf") config.write(confifile) self.trigger_php = True @@ -331,10 +339,10 @@ class WODebugController(CementBaseController): else: Log.info(self, "PHP debug is already enabled") - self.msg = self.msg + ['/var/log/php/7.2/slow.log'] + self.msg = self.msg + ['/var/log/php/7.3/slow.log'] # PHP global debug stop - elif (self.app.pargs.php7 == 'off' and not self.app.pargs.site_name): + elif (self.app.pargs.php73 == 'off' and not self.app.pargs.site_name): if WOShellExec.cmd_exec(self, " sed -n \"/upstream php72 {/,/}/p\" " "/etc/nginx/conf.d/upstream.conf " "| grep 9172"): @@ -343,9 +351,9 @@ class WODebugController(CementBaseController): # Change upstream.conf nc = NginxConfig() nc.loadf('/etc/nginx/conf.d/upstream.conf') - nc.set([('upstream','php72',), 'server'], '127.0.0.1:9072') + nc.set([('upstream', 'php72',), 'server'], 'unix:/var/run/php/php72-fpm.sock') if os.path.isfile("/etc/nginx/common/wpfc-hhvm.conf"): - nc.set([('upstream','hhvm',), 'server'], '127.0.0.1:8000') + nc.set([('upstream', 'hhvm',), 'server'], '127.0.0.1:8000') nc.savef('/etc/nginx/conf.d/upstream.conf') # Disable xdebug @@ -360,47 +368,47 @@ class WODebugController(CementBaseController): Log.info(self, "PHP 7.2 debug is already disabled") @expose(hide=True) - def debug_fpm7(self): + def debug_fpm73(self): """Start/Stop PHP5-FPM debug""" # PHP5-FPM start global debug - if (self.app.pargs.fpm7 == 'on' and not self.app.pargs.site_name): + if (self.app.pargs.fpm73 == 'on' and not self.app.pargs.site_name): if not WOShellExec.cmd_exec(self, "grep \"log_level = debug\" " - "/etc/php/7.2/fpm/php-fpm.conf"): - Log.info(self, "Setting up PHP7.2-FPM log_level = debug") + "/etc/php/7.3/fpm/php-fpm.conf"): + Log.info(self, "Setting up PHP7.3-FPM log_level = debug") config = configparser.ConfigParser() - config.read('/etc/php/7.2/fpm/php-fpm.conf') + config.read('/etc/php/7.3/fpm/php-fpm.conf') config.remove_option('global', 'include') config['global']['log_level'] = 'debug' - config['global']['include'] = '/etc/php/7.2/fpm/pool.d/*.conf' - with open('/etc/php/7.2/fpm/php-fpm.conf', + config['global']['include'] = '/etc/php/7.3/fpm/pool.d/*.conf' + with open('/etc/php/7.3/fpm/php-fpm.conf', encoding='utf-8', mode='w') as configfile: Log.debug(self, "Writing the PHP configuration into " - "/etc/php/7.2/fpm/php-fpm.conf") + "/etc/php/7.3/fpm/php-fpm.conf") config.write(configfile) self.trigger_php = True else: - Log.info(self, "PHP7.2-FPM log_level = debug already setup") + Log.info(self, "PHP7.3-FPM log_level = debug already setup") - self.msg = self.msg + ['/var/log/php/7.2/fpm.log'] + self.msg = self.msg + ['/var/log/php/7.3/fpm.log'] # PHP5-FPM stop global debug - elif (self.app.pargs.fpm7 == 'off' and not self.app.pargs.site_name): + elif (self.app.pargs.fpm73 == 'off' and not self.app.pargs.site_name): if WOShellExec.cmd_exec(self, "grep \"log_level = debug\" " - "/etc/php/7.2/fpm/php-fpm.conf"): - Log.info(self, "Disabling PHP7.2-FPM log_level = debug") + "/etc/php/7.3/fpm/php-fpm.conf"): + Log.info(self, "Disabling PHP7.3-FPM log_level = debug") config = configparser.ConfigParser() - config.read('/etc/php/7.2/fpm/php-fpm.conf') + config.read('/etc/php/7.3/fpm/php-fpm.conf') config.remove_option('global', 'include') config['global']['log_level'] = 'notice' - config['global']['include'] = '/etc/php/7.2/fpm/pool.d/*.conf' - with open('/etc/php/7.2/fpm/php-fpm.conf', + config['global']['include'] = '/etc/php/7.3/fpm/pool.d/*.conf' + with open('/etc/php/7.3/fpm/php-fpm.conf', encoding='utf-8', mode='w') as configfile: - Log.debug(self, "Writing the php7.2 configuration into " - "/etc/php/7.2/fpm/php-fpm.conf") + Log.debug(self, "Writing the php7.3 configuration into " + "/etc/php/7.3/fpm/php-fpm.conf") config.write(configfile) self.trigger_php = True else: - Log.info(self, "PHP7.2-FPM log_level = debug already disabled") + Log.info(self, "PHP7.3-FPM log_level = debug already disabled") @expose(hide=True) def debug_mysql(self): @@ -565,7 +573,7 @@ class WODebugController(CementBaseController): if ('{0}{1}/logs/error.log'.format(WOVariables.wo_webroot, self.app.pargs.site_name) - not in self.msg): + not in self.msg): self.msg = self.msg + ['{0}{1}/logs/error.log' .format(WOVariables.wo_webroot, self.app.pargs.site_name)] @@ -595,15 +603,15 @@ class WODebugController(CementBaseController): if self.app.pargs.php: self.app.pargs.php = 'off' self.debug_php() - if self.app.pargs.php7: - self.app.pargs.php7 = 'off' - self.debug_php7() + if self.app.pargs.php73: + self.app.pargs.php73 = 'off' + self.debug_php73() if self.app.pargs.fpm: self.app.pargs.fpm = 'off' self.debug_fpm() - if self.app.pargs.fpm7: - self.app.pargs.fpm7 = 'off' - self.debug_fpm7() + if self.app.pargs.fpm73: + self.app.pargs.fpm73 = 'off' + self.debug_fpm73() if self.app.pargs.mysql: # MySQL debug will not work for remote MySQL if WOVariables.wo_mysql_host is "localhost": @@ -626,12 +634,12 @@ class WODebugController(CementBaseController): # Reload PHP if self.trigger_php: if WOVariables.wo_platform_codename == 'trusty' or WOVariables.wo_platform_codename == 'xenial' or WOVariables.wo_platform_codename == 'bionic': - if WOAptGet.is_installed(self,'php5.6-fpm'): - WOService.reload_service(self, 'php5.6-fpm') - if WOAptGet.is_installed(self,'php7.2-fpm'): + if WOAptGet.is_installed(self, 'php7.2-fpm'): WOService.reload_service(self, 'php7.2-fpm') + if WOAptGet.is_installed(self, 'php7.3-fpm'): + WOService.reload_service(self, 'php7.3-fpm') else: - WOService.reload_service(self, 'php5-fpm') + WOService.reload_service(self, 'php7.2-fpm') self.app.close(0) @expose(hide=True) @@ -643,13 +651,13 @@ class WODebugController(CementBaseController): self.trigger_nginx = False self.trigger_php = False - if ((not self.app.pargs.nginx) and (not self.app.pargs.php) and (not self.app.pargs.php7) - and (not self.app.pargs.fpm) and (not self.app.pargs.fpm7) and (not self.app.pargs.mysql) - and (not self.app.pargs.wp) and (not self.app.pargs.rewrite) - and (not self.app.pargs.all) - and (not self.app.pargs.site_name) - and (not self.app.pargs.import_slow_log) - and (not self.app.pargs.interval)): + if ((not self.app.pargs.nginx) and (not self.app.pargs.php) and (not self.app.pargs.php73) + and (not self.app.pargs.fpm) and (not self.app.pargs.fpm73) and (not self.app.pargs.mysql) + and (not self.app.pargs.wp) and (not self.app.pargs.rewrite) + and (not self.app.pargs.all) + and (not self.app.pargs.site_name) + and (not self.app.pargs.import_slow_log) + and (not self.app.pargs.interval)): if self.app.pargs.stop or self.app.pargs.start: print("--start/stop option is deprecated since ee v3.0.5") self.app.args.print_help() @@ -716,9 +724,9 @@ class WODebugController(CementBaseController): self.app.pargs.nginx = 'on' self.app.pargs.php = 'on' self.app.pargs.fpm = 'on' - if (WOVariables.wo_platform_codename == 'trusty' or WOVariables.wo_platform_codename == 'xenial' or WOVariables.wo_platform_codename == 'bionic') and WOAptGet.is_installed(self,'php7.2-fpm'): - self.app.pargs.php7 = 'on' - self.app.pargs.fpm7 = 'on' + if (WOVariables.wo_platform_codename == 'trusty' or WOVariables.wo_platform_codename == 'xenial' or WOVariables.wo_platform_codename == 'bionic') and WOAptGet.is_installed(self, 'php7.2-fpm'): + self.app.pargs.php73 = 'on' + self.app.pargs.fpm73 = 'on' self.app.pargs.mysql = 'on' self.app.pargs.rewrite = 'on' @@ -728,16 +736,16 @@ class WODebugController(CementBaseController): self.app.pargs.nginx = 'off' self.app.pargs.php = 'off' self.app.pargs.fpm = 'off' - if (WOVariables.wo_platform_codename == 'trusty' or WOVariables.wo_platform_codename == 'xenial' or WOVariables.wo_platform_codename == 'bionic') and WOAptGet.is_installed(self,'php7.2-fpm'): - self.app.pargs.php7 = 'off' - self.app.pargs.fpm7 = 'off' + if (WOVariables.wo_platform_codename == 'trusty' or WOVariables.wo_platform_codename == 'xenial' or WOVariables.wo_platform_codename == 'bionic') and WOAptGet.is_installed(self, 'php7.2-fpm'): + self.app.pargs.php73 = 'off' + self.app.pargs.fpm73 = 'off' self.app.pargs.mysql = 'off' self.app.pargs.rewrite = 'off' - if ((not self.app.pargs.nginx) and (not self.app.pargs.php) and (not self.app.pargs.php7) - and (not self.app.pargs.fpm) and (not self.app.pargs.fpm7) and (not self.app.pargs.mysql) - and (not self.app.pargs.wp) and (not self.app.pargs.rewrite) - and self.app.pargs.site_name): + if ((not self.app.pargs.nginx) and (not self.app.pargs.php) and (not self.app.pargs.php73) + and (not self.app.pargs.fpm) and (not self.app.pargs.fpm73) and (not self.app.pargs.mysql) + and (not self.app.pargs.wp) and (not self.app.pargs.rewrite) + and self.app.pargs.site_name): self.app.args.print_help() # self.app.pargs.nginx = 'on' # self.app.pargs.wp = 'on' @@ -749,10 +757,10 @@ class WODebugController(CementBaseController): self.debug_php() if self.app.pargs.fpm: self.debug_fpm() - if self.app.pargs.php7: - self.debug_php7() - if self.app.pargs.fpm7: - self.debug_fpm7() + if self.app.pargs.php73: + self.debug_php73() + if self.app.pargs.fpm73: + self.debug_fpm73() if self.app.pargs.mysql: # MySQL debug will not work for remote MySQL if WOVariables.wo_mysql_host is "localhost": @@ -774,12 +782,12 @@ class WODebugController(CementBaseController): # Reload PHP if self.trigger_php: if (WOVariables.wo_platform_codename == 'trusty' or WOVariables.wo_platform_codename == 'xenial' or WOVariables.wo_platform_codename == 'bionic'): - if WOAptGet.is_installed(self,'php5.6-fpm'): - WOService.restart_service(self, 'php5.6-fpm') - if WOAptGet.is_installed(self,'php7.2-fpm'): + if WOAptGet.is_installed(self, 'php7.2-fpm'): WOService.restart_service(self, 'php7.2-fpm') + if WOAptGet.is_installed(self, 'php7.3-fpm'): + WOService.restart_service(self, 'php7.3-fpm') else: - WOService.restart_service(self, 'php5-fpm') + WOService.restart_service(self, 'php7.2-fpm') if WOVariables.wo_platform_codename == 'jessie': WOService.restart_service(self, 'php7.2-fpm') diff --git a/wo/cli/plugins/info.py b/wo/cli/plugins/info.py index f70f444..16309a3 100644 --- a/wo/cli/plugins/info.py +++ b/wo/cli/plugins/info.py @@ -27,15 +27,15 @@ class WOInfoController(CementBaseController): dict(help='Get MySQL configuration information', action='store_true')), (['--php'], - dict(help='Get PHP configuration information', - action='store_true')), - (['--php72'], dict(help='Get PHP 7.2 configuration information', action='store_true')), + (['--php73'], + dict(help='Get PHP 7.3 configuration information', + action='store_true')), (['--nginx'], dict(help='Get Nginx configuration information', action='store_true')), - ] + ] usage = "wo info [options]" @expose(hide=True) @@ -66,17 +66,17 @@ class WOInfoController(CementBaseController): @expose(hide=True) def info_php(self): """Display PHP information""" - version = os.popen("{0} -v 2>/dev/null | head -n1 | cut -d' ' -f2 |".format("php5.6" if (WOVariables.wo_platform_codename == 'trusty' or WOVariables.wo_platform_codename == 'xenial' or WOVariables.wo_platform_codename == 'bionic') else "php") + + version = os.popen("php7.2 -v 2>/dev/null | head -n1 | cut -d' ' -f2 |" " cut -d'+' -f1 | tr -d '\n'").read config = configparser.ConfigParser() - config.read('/etc/{0}/fpm/php.ini'.format("php/5.6" if (WOVariables.wo_platform_codename == 'trusty' or WOVariables.wo_platform_codename == 'xenial' or WOVariables.wo_platform_codename == 'bionic') else "php5")) + config.read('/etc/{0}/fpm/php.ini'.format("php/7.2")) 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'] - config.read('/etc/{0}/fpm/pool.d/www.conf'.format("php/5.6" if (WOVariables.wo_platform_codename == 'trusty' or WOVariables.wo_platform_codename == 'xenial' or WOVariables.wo_platform_codename == 'bionic') else "php5")) + config.read('/etc/{0}/fpm/pool.d/www.conf'.format("php/7.2")) www_listen = config['www']['listen'] www_ping_path = config['www']['ping.path'] www_pm_status_path = config['www']['pm.status_path'] @@ -94,7 +94,7 @@ class WOInfoController(CementBaseController): except Exception as e: www_xdebug = 'off' - config.read('/etc/{0}/fpm/pool.d/debug.conf'.format("php/5.6" if (WOVariables.wo_platform_codename == 'trusty' or WOVariables.wo_platform_codename == 'xenial' or WOVariables.wo_platform_codename == 'bionic') else "php5")) + config.read('/etc/{0}/fpm/pool.d/debug.conf'.format("php/7.2")) debug_listen = config['debug']['listen'] debug_ping_path = config['debug']['ping.path'] debug_pm_status_path = config['debug']['pm.status_path'] @@ -138,19 +138,19 @@ class WOInfoController(CementBaseController): self.app.render((data), 'info_php.mustache') @expose(hide=True) - def info_php72(self): + def info_php73(self): """Display PHP information""" - version = os.popen("php7.2 -v 2>/dev/null | head -n1 | cut -d' ' -f2 |" + version = os.popen("php7.3 -v 2>/dev/null | head -n1 | cut -d' ' -f2 |" " cut -d'+' -f1 | tr -d '\n'").read config = configparser.ConfigParser() - config.read('/etc/php/7.2/fpm/php.ini') + config.read('/etc/php/7.3/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'] - config.read('/etc/php/7.2/fpm/pool.d/www.conf') + config.read('/etc/php/7.3/fpm/pool.d/www.conf') www_listen = config['www']['listen'] www_ping_path = config['www']['ping.path'] www_pm_status_path = config['www']['pm.status_path'] @@ -168,7 +168,7 @@ class WOInfoController(CementBaseController): except Exception as e: www_xdebug = 'off' - config.read('/etc/php/7.2/fpm/pool.d/debug.conf') + config.read('/etc/php/7.3/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'] @@ -243,12 +243,12 @@ class WOInfoController(CementBaseController): def default(self): """default function for info""" if (not self.app.pargs.nginx and not self.app.pargs.php - and not self.app.pargs.mysql and not self.app.pargs.php72): + and not self.app.pargs.mysql and not self.app.pargs.php73): self.app.pargs.nginx = True self.app.pargs.php = True self.app.pargs.mysql = True - if WOAptGet.is_installed(self, 'php7.2-fpm'): - self.app.pargs.php = True + if WOAptGet.is_installed(self, 'php7.3-fpm'): + self.app.pargs.php73 = True if self.app.pargs.nginx: if WOAptGet.is_installed(self, 'nginx-custom') or WOAptGet.is_installed(self, 'nginx-common'): @@ -257,23 +257,17 @@ class WOInfoController(CementBaseController): Log.error(self, "Nginx is not installed") if self.app.pargs.php: - if (WOVariables.wo_platform_distro == 'debian' or WOVariables.wo_platform_codename == 'precise'): - if WOAptGet.is_installed(self, 'php5-fpm'): - self.info_php() - else: - Log.error(self, "PHP5 is not installed") - else: - if WOAptGet.is_installed(self, 'php5.6-fpm'): - self.info_php() - else: - Log.error(self, "PHP5.6 is not installed") - - if self.app.pargs.php72: if WOAptGet.is_installed(self, 'php7.2-fpm'): - self.info_php72() + self.info_php() else: Log.error(self, "PHP 7.2 is not installed") + if self.app.pargs.php73: + if WOAptGet.is_installed(self, 'php7.3-fpm'): + self.info_php73() + else: + Log.error(self, "PHP 7.3 is not installed") + if self.app.pargs.mysql: if WOShellExec.cmd_exec(self, "mysqladmin ping"): self.info_mysql() diff --git a/wo/cli/plugins/log.py b/wo/cli/plugins/log.py index f7ef3d8..14579e9 100644 --- a/wo/cli/plugins/log.py +++ b/wo/cli/plugins/log.py @@ -444,9 +444,9 @@ class WOLogMailController(CementBaseController): (['--nginx'], dict(help='Mail Nginx Error logs file', action='store_true')), (['--php'], - dict(help='Mail PHP Error logs file', action='store_true')), + dict(help='Mail PHP 7.2 Error logs file', action='store_true')), (['--fpm'], - dict(help='Mail PHP5-fpm slow logs file', + dict(help='Mail PHP 7.2-fpm slow logs file', action='store_true')), (['--mysql'], dict(help='Mail MySQL logs file', action='store_true')), diff --git a/wo/cli/plugins/site.py b/wo/cli/plugins/site.py index 1a7752e..69fcc1b 100644 --- a/wo/cli/plugins/site.py +++ b/wo/cli/plugins/site.py @@ -33,7 +33,7 @@ class WOSiteController(CementBaseController): arguments = [ (['site_name'], dict(help='Website name', nargs='?')), - ] + ] usage = "wo site (command) [options]" @expose(hide=True) @@ -160,15 +160,15 @@ class WOSiteController(CementBaseController): ssl = ("enabled" if siteinfo.is_ssl else "disabled") if (ssl == "enabled"): sslprovider = "Lets Encrypt" - sslexpiry = str(SSL.getExpirationDate(self,wo_domain)) + sslexpiry = str(SSL.getExpirationDate(self, wo_domain)) else: sslprovider = '' sslexpiry = '' data = dict(domain=wo_domain, webroot=wo_site_webroot, accesslog=access_log, errorlog=error_log, - dbname=wo_db_name, dbuser=wo_db_user,php_version=php_version, + dbname=wo_db_name, dbuser=wo_db_user, php_version=php_version, dbpass=wo_db_pass, hhvm=hhvm, - ssl=ssl, sslprovider=sslprovider, sslexpiry= sslexpiry, + ssl=ssl, sslprovider=sslprovider, sslexpiry=sslexpiry, type=sitetype + " " + cachetype + " ({0})" .format("enabled" if siteinfo.is_enabled else "disabled")) @@ -254,7 +254,7 @@ class WOSiteEditController(CementBaseController): (['site_name'], dict(help='domain name for the site', nargs='?')), - ] + ] @expose(hide=True) def default(self): @@ -282,7 +282,7 @@ class WOSiteEditController(CementBaseController): except CommandExecutionError as e: Log.error(self, "Failed invoke editor") if (WOGit.checkfilestatus(self, "/etc/nginx", - '/etc/nginx/sites-available/{0}'.format(wo_domain))): + '/etc/nginx/sites-available/{0}'.format(wo_domain))): WOGit.add(self, ["/etc/nginx"], msg="Edit website: {0}" .format(wo_domain)) # Reload NGINX @@ -308,9 +308,9 @@ class WOSiteCreateController(CementBaseController): (['--html'], dict(help="create html site", action='store_true')), (['--php'], - dict(help="create php site", action='store_true')), - (['--php72'], dict(help="create php 7.2 site", action='store_true')), + (['--php73'], + dict(help="create php 7.3 site", action='store_true')), (['--mysql'], dict(help="create mysql site", action='store_true')), (['--wp'], @@ -333,7 +333,7 @@ class WOSiteCreateController(CementBaseController): action='store_true')), (['--hhvm'], dict(help="create HHVM site", action='store_true')), - (['-le','--letsencrypt'], + (['-le', '--letsencrypt'], dict(help="configure letsencrypt ssl for the site", action='store_true')), (['--user'], dict(help="provide user for wordpress site")), @@ -347,7 +347,7 @@ class WOSiteCreateController(CementBaseController): (['--experimental'], dict(help="Enable Experimenal packages without prompt", action='store_true')), - ] + ] @expose(hide=True) def default(self): @@ -410,16 +410,16 @@ class WOSiteCreateController(CementBaseController): data['port'] = port wo_site_webroot = "" - if self.app.pargs.php72: + if self.app.pargs.php73: data = dict(site_name=wo_domain, www_domain=wo_www_domain, - static=False, basic=False, php72=True, wp=False, + static=False, basic=False, php73=True, wp=False, wpfc=False, wpsc=False, multisite=False, wpsubdir=False, webroot=wo_site_webroot) data['basic'] = True - if stype in ['html', 'php' ]: + if stype in ['html', 'php']: data = dict(site_name=wo_domain, www_domain=wo_www_domain, - static=True, basic=False, php72=False, wp=False, + static=True, basic=False, php73=False, wp=False, wpfc=False, wpsc=False, multisite=False, wpsubdir=False, webroot=wo_site_webroot) @@ -430,7 +430,7 @@ class WOSiteCreateController(CementBaseController): elif stype in ['mysql', 'wp', 'wpsubdir', 'wpsubdomain']: data = dict(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, wpsc=False, wpredis=False, multisite=False, wpsubdir=False, webroot=wo_site_webroot, wo_db_name='', wo_db_user='', wo_db_pass='', @@ -453,27 +453,28 @@ class WOSiteCreateController(CementBaseController): if stype == "html" and self.app.pargs.hhvm: Log.error(self, "Can not create HTML site with HHVM") - if data and self.app.pargs.php72: - if (not self.app.pargs.experimental): - Log.info(self, "Do you wish to install PHP 7.2 now for {0}?".format(wo_domain)) + if data and self.app.pargs.php73: + if (self.app.pargs.experimental): + Log.info( + self, "Do you wish to install PHP 7.3 now for {0}?".format(wo_domain)) # Check prompt check_prompt = input("Type \"y\" to continue [n]:") if check_prompt != "Y" and check_prompt != "y": Log.info(self, "Not using PHP 7.2 for site.") - data['php72'] = False + data['php73'] = True data['basic'] = True - php72 = 0 - self.app.pargs.php72 = False + php73 = 1 + self.app.pargs.php73 = True else: - data['php72'] = True - php72 = 1 + data['php73'] = True + php73 = 1 else: - data['php72'] = True - php72 = 1 + data['php73'] = True + php73 = 1 elif data: - data['php72'] = False - php72 = 0 + data['php73'] = False + php73 = 0 if (not self.app.pargs.wpfc) and (not self.app.pargs.wpsc) and (not self.app.pargs.wpredis) and (not self.app.pargs.hhvm): data['basic'] = True @@ -503,13 +504,13 @@ class WOSiteCreateController(CementBaseController): data['hhvm'] = False hhvm = 0 - if (cache == 'wpredis' and (not self.app.pargs.experimental)): + if (cache == 'wpredis' and (self.app.pargs.experimental)): Log.info(self, "Redis is experimental feature and it may not " "work with all CSS/JS/Cache of your site.\nYou can " "disable it by changing cache later.\nDo you wish" " to enable Redis now for {0}?".format(wo_domain)) - # Check prompt + # Check prompt check_prompt = input("Type \"y\" to continue [n]:") if check_prompt != "Y" and check_prompt != "y": Log.error(self, "Not using Redis for site") @@ -536,7 +537,8 @@ class WOSiteCreateController(CementBaseController): hashbucket(self) except SiteError as e: # call cleanup actions on failure - Log.info(self, Log.FAIL + "There was a serious error encountered...") + Log.info(self, Log.FAIL + + "There was a serious error encountered...") Log.info(self, Log.FAIL + "Cleaning up afterwards...") doCleanupAction(self, domain=wo_domain, webroot=data['webroot']) @@ -548,7 +550,8 @@ class WOSiteCreateController(CementBaseController): addNewSite(self, wo_domain, stype, cache, wo_site_webroot) # Service Nginx Reload if not WOService.reload_service(self, 'nginx'): - Log.info(self, Log.FAIL + "There was a serious error encountered...") + Log.info(self, Log.FAIL + + "There was a serious error encountered...") Log.info(self, Log.FAIL + "Cleaning up afterwards...") doCleanupAction(self, domain=wo_domain) deleteSiteInfo(self, wo_domain) @@ -563,12 +566,11 @@ class WOSiteCreateController(CementBaseController): " http://{0}".format(wo_domain)) return - if data['php72']: - php_version = "7.2" + if data['php73']: + php_version = "7.3" else: php_version = "7.2" - addNewSite(self, wo_domain, stype, cache, wo_site_webroot, hhvm=hhvm, php_version=php_version) @@ -584,7 +586,8 @@ class WOSiteCreateController(CementBaseController): except SiteError as e: # call cleanup actions on failure Log.debug(self, str(e)) - Log.info(self, Log.FAIL + "There was a serious error encountered...") + Log.info(self, Log.FAIL + + "There was a serious error encountered...") Log.info(self, Log.FAIL + "Cleaning up afterwards...") doCleanupAction(self, domain=wo_domain, webroot=data['webroot'], @@ -613,7 +616,8 @@ class WOSiteCreateController(CementBaseController): Log.debug(self, str(e)) Log.debug(self, "Error occured while generating " "wo-config.php") - Log.info(self, Log.FAIL + "There was a serious error encountered...") + Log.info(self, Log.FAIL + + "There was a serious error encountered...") Log.info(self, Log.FAIL + "Cleaning up afterwards...") doCleanupAction(self, domain=wo_domain, webroot=data['webroot'], @@ -636,7 +640,8 @@ class WOSiteCreateController(CementBaseController): except SiteError as e: # call cleanup actions on failure Log.debug(self, str(e)) - Log.info(self, Log.FAIL + "There was a serious error encountered...") + Log.info(self, Log.FAIL + + "There was a serious error encountered...") Log.info(self, Log.FAIL + "Cleaning up afterwards...") doCleanupAction(self, domain=wo_domain, webroot=data['webroot'], @@ -649,7 +654,8 @@ class WOSiteCreateController(CementBaseController): # Service Nginx Reload call cleanup if failed to reload nginx if not WOService.reload_service(self, 'nginx'): - Log.info(self, Log.FAIL + "There was a serious error encountered...") + Log.info(self, Log.FAIL + + "There was a serious error encountered...") Log.info(self, Log.FAIL + "Cleaning up afterwards...") doCleanupAction(self, domain=wo_domain, webroot=data['webroot']) @@ -672,7 +678,8 @@ class WOSiteCreateController(CementBaseController): setwebrootpermissions(self, data['webroot']) except SiteError as e: Log.debug(self, str(e)) - Log.info(self, Log.FAIL + "There was a serious error encountered...") + Log.info(self, Log.FAIL + + "There was a serious error encountered...") Log.info(self, Log.FAIL + "Cleaning up afterwards...") doCleanupAction(self, domain=wo_domain, webroot=data['webroot']) @@ -704,14 +711,15 @@ class WOSiteCreateController(CementBaseController): Log.error(self, "Check the log for details: " "`tail /var/log/wo/wordops.log` and please try again") - if self.app.pargs.letsencrypt : - if (not self.app.pargs.experimental): + if self.app.pargs.letsencrypt: + if (self.app.pargs.experimental): if stype in ['wpsubdomain']: - Log.warn(self, "Wildcard domains are not supported in Lets Encrypt.\nWP SUBDOMAIN site will get SSL for primary site only.") + Log.warn( + self, "Wildcard domains are not supported in Lets Encrypt.\nWP SUBDOMAIN site will get SSL for primary site only.") Log.info(self, "Letsencrypt is currently in beta phase." - " \nDo you wish" - " to enable SSl now for {0}?".format(wo_domain)) + " \nDo you wish" + " to enable SSl now for {0}?".format(wo_domain)) # Check prompt check_prompt = input("Type \"y\" to continue [n]:") @@ -722,41 +730,41 @@ class WOSiteCreateController(CementBaseController): data['letsencrypt'] = True letsencrypt = True else: - data['letsencrypt'] = True - letsencrypt = True + data['letsencrypt'] = True + letsencrypt = True if data['letsencrypt'] is True: - setupLetsEncrypt(self, wo_domain) - httpsRedirect(self,wo_domain) - Log.info(self,"Creating Cron Job for cert auto-renewal") - WOCron.setcron_weekly(self,'wo site update --le=renew --all 2> /dev/null'.format(wo_domain),'Renew all' - ' letsencrypt SSL cert. Set by WordOps') + setupLetsEncrypt(self, wo_domain) + httpsRedirect(self, wo_domain) + Log.info(self, "Creating Cron Job for cert auto-renewal") + WOCron.setcron_weekly(self, 'wo site update --le=renew --all 2> /dev/null'.format(wo_domain), 'Renew all' + ' letsencrypt SSL cert. Set by WordOps') - if not WOService.reload_service(self, 'nginx'): + if not WOService.reload_service(self, 'nginx'): Log.error(self, "service nginx reload failed. " - "check issues with `nginx -t` command") + "check issues with `nginx -t` command") - Log.info(self, "Congratulations! Successfully Configured SSl for Site " + Log.info(self, "Congratulations! Successfully Configured SSl for Site " " https://{0}".format(wo_domain)) - if (SSL.getExpirationDays(self,wo_domain)>0): - Log.info(self, "Your cert will expire within " + str(SSL.getExpirationDays(self,wo_domain)) + " days.") - else: - Log.warn(self, "Your cert already EXPIRED ! .PLEASE renew soon . ") + if (SSL.getExpirationDays(self, wo_domain) > 0): + Log.info(self, "Your cert will expire within " + + str(SSL.getExpirationDays(self, wo_domain)) + " days.") + else: + Log.warn( + self, "Your cert already EXPIRED ! .PLEASE renew soon . ") - # Add nginx conf folder into GIT - WOGit.add(self, ["{0}/conf/nginx".format(wo_site_webroot)], + # Add nginx conf folder into GIT + WOGit.add(self, ["{0}/conf/nginx".format(wo_site_webroot)], msg="Adding letsencrypts config of site: {0}" - .format(wo_domain)) - updateSiteInfo(self, wo_domain, ssl=letsencrypt) + .format(wo_domain)) + updateSiteInfo(self, wo_domain, ssl=letsencrypt) elif data['letsencrypt'] is False: Log.info(self, "Not using Let\'s encrypt for Site " " http://{0}".format(wo_domain)) - - class WOSiteUpdateController(CementBaseController): class Meta: label = 'update' @@ -775,8 +783,8 @@ class WOSiteUpdateController(CementBaseController): dict(help="update to html site", action='store_true')), (['--php'], dict(help="update to php site", action='store_true')), - (['--php72'], - dict(help="update to php7 site", + (['--php73'], + dict(help="update to php73 site", action='store' or 'store_const', choices=('on', 'off'), const='on', nargs='?')), (['--mysql'], @@ -798,7 +806,7 @@ class WOSiteUpdateController(CementBaseController): dict(help='Use HHVM for site', action='store' or 'store_const', choices=('on', 'off'), const='on', nargs='?')), - (['-le','--letsencrypt'], + (['-le', '--letsencrypt'], dict(help="configure letsencrypt ssl for the site", action='store' or 'store_const', choices=('on', 'off', 'renew'), const='on', nargs='?')), @@ -809,7 +817,7 @@ class WOSiteUpdateController(CementBaseController): action='store_true')), (['--all'], dict(help="update all sites", action='store_true')), - ] + ] @expose(help="Update site type or cache") def default(self): @@ -822,9 +830,9 @@ class WOSiteUpdateController(CementBaseController): if pargs.html: Log.error(self, "No site can be updated to html") - if not (pargs.php or pargs.php72 or + if not (pargs.php or pargs.php73 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.hhvm or pargs.wpredis or pargs.letsencrypt): Log.error(self, "Please provide options to update sites.") @@ -850,8 +858,7 @@ class WOSiteUpdateController(CementBaseController): def doupdatesite(self, pargs): hhvm = None letsencrypt = False - php72 = None - + php73 = None data = dict() try: @@ -899,15 +906,15 @@ class WOSiteUpdateController(CementBaseController): check_ssl = check_site.is_ssl check_php_version = check_site.php_version - if check_php_version == "7.2": - old_php72 = True + if check_php_version == "7.3": + old_php73 = True else: - old_php72 = False + old_php73 = False if (pargs.password and not (pargs.html or - pargs.php or pargs.php72 or pargs.mysql or - pargs.wp or pargs.wpfc or pargs.wpsc or - pargs.wpsubdir or pargs.wpsubdomain)): + pargs.php or pargs.php73 or pargs.mysql or + pargs.wp or pargs.wpfc or pargs.wpsc or + pargs.wpsubdir or pargs.wpsubdomain)): try: updatewpuserpassword(self, wo_domain, wo_site_webroot) except SiteError as e: @@ -917,24 +924,24 @@ class WOSiteUpdateController(CementBaseController): if ((stype == "proxy" and stype == oldsitetype and self.app.pargs.hhvm) or (stype == "proxy" and - stype == oldsitetype )): - Log.info(self, Log.FAIL + - "Can not update proxy site to HHVM") - return 1 + stype == oldsitetype)): + Log.info(self, Log.FAIL + + "Can not update proxy site to HHVM") + return 1 if stype == "html" and stype == oldsitetype and self.app.pargs.hhvm: Log.info(self, Log.FAIL + "Can not update HTML site to HHVM") return 1 - if ((stype == 'php' and oldsitetype not in ['html', 'proxy', 'php72']) or - # (stype == 'php72' and oldsitetype not in ['html', 'mysql', 'php', 'php72', 'wp', 'wpsubdir', 'wpsubdomain', ]) or + if ((stype == 'php' and oldsitetype not in ['html', 'proxy', 'php73']) or + # (stype == 'php73' and oldsitetype not in ['html', 'mysql', 'php', 'php73', 'wp', 'wpsubdir', 'wpsubdomain', ]) or (stype == 'mysql' and oldsitetype not in ['html', 'php', - 'proxy','php72']) or + 'proxy', 'php73']) or (stype == 'wp' and oldsitetype not in ['html', 'php', 'mysql', - 'proxy', 'wp', 'php72']) or + 'proxy', 'wp', 'php73']) or (stype == 'wpsubdir' and oldsitetype in ['wpsubdomain']) or (stype == 'wpsubdomain' and oldsitetype in ['wpsubdir']) or - (stype == oldsitetype and cache == oldcachetype) and - not pargs.php72): + (stype == oldsitetype and cache == oldcachetype) and + not pargs.php73): Log.info(self, Log.FAIL + "can not update {0} {1} to {2} {3}". format(oldsitetype, oldcachetype, stype, cache)) return 1 @@ -952,7 +959,7 @@ class WOSiteUpdateController(CementBaseController): if stype == 'php': data = dict(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, wpsc=False, wpredis=False, multisite=False, wpsubdir=False, webroot=wo_site_webroot, currsitetype=oldsitetype, currcachetype=oldcachetype) @@ -960,7 +967,7 @@ class WOSiteUpdateController(CementBaseController): elif stype in ['mysql', 'wp', 'wpsubdir', 'wpsubdomain']: data = dict(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, wpsc=False, wpredis=False, multisite=False, wpsubdir=False, webroot=wo_site_webroot, wo_db_name='', wo_db_user='', wo_db_pass='', @@ -976,7 +983,7 @@ class WOSiteUpdateController(CementBaseController): if stype == 'wpsubdir': data['wpsubdir'] = True - if pargs.hhvm or pargs.php72: + if pargs.hhvm or pargs.php73: if not data: data = dict(site_name=wo_domain, www_domain=wo_www_domain, currsitetype=oldsitetype, @@ -1038,83 +1045,92 @@ class WOSiteUpdateController(CementBaseController): data['hhvm'] = False hhvm = False - if pargs.php72 == 'on' : - data['php72'] = True - php72 = True - check_php_version= '7.2' - elif pargs.php72 == 'off': - data['php72'] = False - php72 = False - check_php_version = '5.6' + if pargs.php73 == 'on': + data['php73'] = True + php73 = True + check_php_version = '7.3' + elif pargs.php73 == 'off': + data['php73'] = False + php73 = False + check_php_version = '7.2' - if pargs.php72: - if php72 is old_php72: - if php72 is False: - Log.info(self, "PHP 7.2 is already disabled for given " + if pargs.php73: + if php73 is old_php73: + if php73 is False: + Log.info(self, "PHP 7.3 is already disabled for given " "site") - elif php72 is True: - Log.info(self, "PHP 7.2 is already enabled for given " + elif php73 is True: + Log.info(self, "PHP 7.3 is already enabled for given " "site") - pargs.php72 = False + pargs.php73 = False - #--letsencrypt=renew code goes here + # --letsencrypt=renew code goes here if pargs.letsencrypt == "renew" and not pargs.all: - expiry_days = SSL.getExpirationDays(self,wo_domain) + expiry_days = SSL.getExpirationDays(self, wo_domain) min_expiry_days = 30 if check_ssl: if (expiry_days <= min_expiry_days): - renewLetsEncrypt(self,wo_domain) + renewLetsEncrypt(self, wo_domain) else: - Log.error(self,"You have more than 30 days with the current certificate - refusing to run.") + Log.error( + self, "You have more than 30 days with the current certificate - refusing to run.") else: - Log.error(self,"Cannot renew - HTTPS is not configured for the given site. Install LE first...") + Log.error( + self, "Cannot renew - HTTPS is not configured for the given site. Install LE first...") if not WOService.reload_service(self, 'nginx'): - Log.error(self, "service nginx reload failed. " - "check issues with `nginx -t` command") + Log.error(self, "service nginx reload failed. " + "check issues with `nginx -t` command") Log.info(self, "SUCCESS: Certificate was successfully renewed For" " https://{0}".format(wo_domain)) - if (SSL.getExpirationDays(self,wo_domain)>0): - Log.info(self, "Your cert will expire within " + str(SSL.getExpirationDays(self,wo_domain)) + " days.") - Log.info(self, "Expiration date: " + str(SSL.getExpirationDate(self,wo_domain))) + if (SSL.getExpirationDays(self, wo_domain) > 0): + Log.info(self, "Your cert will expire within " + + str(SSL.getExpirationDays(self, wo_domain)) + " days.") + Log.info(self, "Expiration date: " + + str(SSL.getExpirationDate(self, wo_domain))) else: - Log.warn(self, "The certificate seems to be already expired. Please renew it as soon as possible...") + Log.warn( + self, "The certificate seems to be already expired. Please renew it as soon as possible...") return 0 if pargs.all and pargs.letsencrypt == "renew": if check_ssl: - expiry_days = SSL.getExpirationDays(self,wo_domain,True) + expiry_days = SSL.getExpirationDays(self, wo_domain, True) if expiry_days < 0: return 0 min_expiry_days = 30 if (expiry_days <= min_expiry_days): - renewLetsEncrypt(self,wo_domain) + renewLetsEncrypt(self, wo_domain) if not WOService.reload_service(self, 'nginx'): - Log.error(self, "service nginx reload failed. " - "check issues with `nginx -t` command") + Log.error(self, "service nginx reload failed. " + "check issues with `nginx -t` command") Log.info(self, "SUCCESS: Certificate was successfully renewed For" - " https://{0}".format(wo_domain)) + " https://{0}".format(wo_domain)) else: - Log.info(self,"You have more than 30 days with the current certificate - refusing to run.\n") + Log.info( + self, "You have more than 30 days with the current certificate - refusing to run.\n") - if (SSL.getExpirationDays(self,wo_domain)>0): - Log.info(self, "Your cert will expire within " + str(SSL.getExpirationDays(self,wo_domain)) + " days.") - Log.info(self, "Expiration date: \n\n" + str(SSL.getExpirationDate(self,wo_domain))) + if (SSL.getExpirationDays(self, wo_domain) > 0): + Log.info(self, "Your cert will expire within " + + str(SSL.getExpirationDays(self, wo_domain)) + " days.") + Log.info(self, "Expiration date: \n\n" + + str(SSL.getExpirationDate(self, wo_domain))) return 0 - #else: - # Log.warn(self, "Your cert already EXPIRED ! .PLEASE renew soon . ") + # else: + # Log.warn(self, "Your cert already EXPIRED ! .PLEASE renew soon . ") else: - Log.info(self,"SSL not configured for site http://{0}".format(wo_domain)) + Log.info( + self, "SSL not configured for site http://{0}".format(wo_domain)) return 0 if pargs.all and pargs.letsencrypt == "off": if letsencrypt is check_ssl: if letsencrypt is False: Log.error(self, "HTTPS is not configured for given " - "site",False) + "site", False) return 0 pass @@ -1129,10 +1145,10 @@ class WOSiteUpdateController(CementBaseController): if letsencrypt is check_ssl: if letsencrypt is False: Log.error(self, "SSl is not configured for given " - "site") + "site") elif letsencrypt is True: Log.error(self, "SSl is already configured for given " - "site") + "site") pargs.letsencrypt = False if pargs.hhvm: @@ -1154,33 +1170,34 @@ class WOSiteUpdateController(CementBaseController): data['hhvm'] = False hhvm = False - if data and (not pargs.php72): - if old_php72 is True: - data['php72'] = True - php72 = True + if data and (not pargs.php73): + if old_php73 is True: + data['php73'] = True + php73 = True else: - data['php72'] = False - php72 = False + data['php73'] = False + php73 = False - if pargs.hhvm=="on" or pargs.letsencrypt=="on" or pargs.php72=="on": - if pargs.php72 == "on": - if (not pargs.experimental): - Log.info(self, "Do you wish to enable PHP 7.2 now for {0}?".format(wo_domain)) + if pargs.hhvm == "on" or pargs.letsencrypt == "on" or pargs.php73 == "on": + if pargs.php73 == "on": + if pargs.experimental: + Log.info( + self, "Do you wish to enable PHP 7.3 now for {0}?".format(wo_domain)) check_prompt = input("Type \"y\" to continue [n]:") if check_prompt != "Y" and check_prompt != "y": - Log.info(self, "Not using PHP 7.2 for site") - data['php72'] = False - php72 = False + Log.info(self, "Not using PHP 7.3 for site") + data['php73'] = False + php73 = False else: - data['php72'] = True - php72 = True + data['php73'] = True + php73 = True else: - data['php72'] = True - php72 = True + data['php73'] = True + php73 = True if pargs.hhvm == "on": - if (not pargs.experimental): + if pargs.experimental: Log.info(self, "HHVM is experimental feature and it may not" " work with all plugins of your site.\nYou can " "disable it by passing --hhvm=off later.\nDo you wish" @@ -1201,10 +1218,11 @@ class WOSiteUpdateController(CementBaseController): if pargs.letsencrypt == "on": - if (not pargs.experimental): + if pargs.experimental: if oldsitetype in ['wpsubdomain']: - Log.warn(self, "Wildcard domains are not supported in Lets Encrypt.\nWP SUBDOMAIN site will get SSL for primary site only.") + Log.warn( + self, "Wildcard domains are not supported in Lets Encrypt.\nWP SUBDOMAIN site will get SSL for primary site only.") Log.info(self, "Letsencrypt is currently in beta phase." " \nDo you wish" @@ -1222,10 +1240,8 @@ class WOSiteUpdateController(CementBaseController): data['letsencrypt'] = True letsencrypt = True - - if pargs.wpredis and data['currcachetype'] != 'wpredis': - if (not pargs.experimental): + if pargs.experimental: Log.info(self, "Redis is experimental feature and it may not" " work with all plugins of your site.\nYou can " "disable it by changing cache type later.\nDo you wish" @@ -1239,8 +1255,8 @@ class WOSiteUpdateController(CementBaseController): data['basic'] = True cache = 'basic' - if ((hhvm is old_hhvm) and (php72 is old_php72) and - (stype == oldsitetype and cache == oldcachetype)): + if ((hhvm is old_hhvm) and (php73 is old_php73) and + (stype == oldsitetype and cache == oldcachetype)): return 1 if not data: @@ -1265,7 +1281,7 @@ class WOSiteUpdateController(CementBaseController): except Exception as e: Log.debug(self, str(e)) Log.info(self, Log.FAIL + "Check the log for details: " - "`tail /var/log/wo/wordops.log` and please try again") + "`tail /var/log/wo/wordops.log` and please try again") return 1 # setup NGINX configuration, and webroot @@ -1274,13 +1290,13 @@ class WOSiteUpdateController(CementBaseController): except SiteError as e: Log.debug(self, str(e)) Log.info(self, Log.FAIL + "Update site failed." - "Check the log for details:" - "`tail /var/log/wo/wordops.log` and please try again") + "Check the log for details:" + "`tail /var/log/wo/wordops.log` and please try again") return 1 if 'proxy' in data.keys() and data['proxy']: updateSiteInfo(self, wo_domain, stype=stype, cache=cache, - hhvm=hhvm,ssl=True if check_site.is_ssl else False) + hhvm=hhvm, ssl=True if check_site.is_ssl else False) Log.info(self, "Successfully updated site" " http://{0}".format(wo_domain)) return 0 @@ -1288,54 +1304,55 @@ class WOSiteUpdateController(CementBaseController): if pargs.letsencrypt: if data['letsencrypt'] is True: if not os.path.isfile("{0}/conf/nginx/ssl.conf.disabled" - .format(wo_site_webroot)): + .format(wo_site_webroot)): setupLetsEncrypt(self, wo_domain) else: WOFileUtils.mvfile(self, "{0}/conf/nginx/ssl.conf.disabled" - .format(wo_site_webroot), - '{0}/conf/nginx/ssl.conf' - .format(wo_site_webroot)) + .format(wo_site_webroot), + '{0}/conf/nginx/ssl.conf' + .format(wo_site_webroot)) - httpsRedirect(self,wo_domain) - Log.info(self,"Creating Cron Job for cert auto-renewal") - WOCron.setcron_weekly(self,'wo site update --le=renew --all 2> /dev/null'.format(wo_domain),'Renew all' - ' letsencrypt SSL cert. Set by WordOps') + httpsRedirect(self, wo_domain) + Log.info(self, "Creating Cron Job for cert auto-renewal") + WOCron.setcron_weekly(self, 'wo site update --le=renew --all 2> /dev/null'.format(wo_domain), 'Renew all' + ' letsencrypt SSL cert. Set by WordOps') if not WOService.reload_service(self, 'nginx'): - Log.error(self, "service nginx reload failed. " - "check issues with `nginx -t` command") + Log.error(self, "service nginx reload failed. " + "check issues with `nginx -t` command") Log.info(self, "Congratulations! Successfully Configured SSl for Site " " https://{0}".format(wo_domain)) - if (SSL.getExpirationDays(self,wo_domain)>0): - Log.info(self, "Your cert will expire within " + str(SSL.getExpirationDays(self,wo_domain)) + " days.") + if (SSL.getExpirationDays(self, wo_domain) > 0): + Log.info(self, "Your cert will expire within " + + str(SSL.getExpirationDays(self, wo_domain)) + " days.") else: - Log.warn(self, "Your cert already EXPIRED ! .PLEASE renew soon . ") + Log.warn( + self, "Your cert already EXPIRED ! .PLEASE renew soon . ") elif data['letsencrypt'] is False: if os.path.isfile("{0}/conf/nginx/ssl.conf" - .format(wo_site_webroot)): - Log.info(self,'Setting Nginx configuration') - WOFileUtils.mvfile(self, "{0}/conf/nginx/ssl.conf" - .format(wo_site_webroot), - '{0}/conf/nginx/ssl.conf.disabled' - .format(wo_site_webroot)) - httpsRedirect(self,wo_domain,False) - if not WOService.reload_service(self, 'nginx'): - Log.error(self, "service nginx reload failed. " - "check issues with `nginx -t` command") - #Log.info(self,"Removing Cron Job set for cert auto-renewal") - #WOCron.remove_cron(self,'wo site update {0} --le=renew --min_expiry_limit 30 2> \/dev\/null'.format(wo_domain)) - Log.info(self, "Successfully Disabled SSl for Site " - " http://{0}".format(wo_domain)) - + .format(wo_site_webroot)): + Log.info(self, 'Setting Nginx configuration') + WOFileUtils.mvfile(self, "{0}/conf/nginx/ssl.conf" + .format(wo_site_webroot), + '{0}/conf/nginx/ssl.conf.disabled' + .format(wo_site_webroot)) + httpsRedirect(self, wo_domain, False) + if not WOService.reload_service(self, 'nginx'): + Log.error(self, "service nginx reload failed. " + "check issues with `nginx -t` command") + # Log.info(self,"Removing Cron Job set for cert auto-renewal") + # WOCron.remove_cron(self,'wo site update {0} --le=renew --min_expiry_limit 30 2> \/dev\/null'.format(wo_domain)) + Log.info(self, "Successfully Disabled SSl for Site " + " http://{0}".format(wo_domain)) # Add nginx conf folder into GIT WOGit.add(self, ["{0}/conf/nginx".format(wo_site_webroot)], - msg="Adding letsencrypts config of site: {0}" - .format(wo_domain)) + msg="Adding letsencrypts config of site: {0}" + .format(wo_domain)) updateSiteInfo(self, wo_domain, ssl=letsencrypt) return 0 @@ -1353,7 +1370,7 @@ class WOSiteUpdateController(CementBaseController): " http://{0}".format(wo_domain)) return 0 - #if data['wo_db_name'] and not data['wp']: + # if data['wo_db_name'] and not data['wp']: if 'wo_db_name' in data.keys() and not data['wp']: try: data = setupdatabase(self, data) @@ -1409,10 +1426,11 @@ class WOSiteUpdateController(CementBaseController): return 1 if ((oldcachetype in ['wpsc', 'basic', 'wpredis'] and - (data['wpfc'])) or (oldsitetype == 'wp' and data['multisite'] and data['wpfc'])): + (data['wpfc'])) or (oldsitetype == 'wp' and data['multisite'] and data['wpfc'])): try: plugin_data = '{"log_level":"INFO","log_filesize":5,"enable_purge":1,"enable_map":0,"enable_log":0,"enable_stamp":0,"purge_homepage_on_new":1,"purge_homepage_on_edit":1,"purge_homepage_on_del":1,"purge_archive_on_new":1,"purge_archive_on_edit":0,"purge_archive_on_del":0,"purge_archive_on_new_comment":0,"purge_archive_on_deleted_comment":0,"purge_page_on_mod":1,"purge_page_on_new_comment":1,"purge_page_on_deleted_comment":1,"cache_method":"enable_fastcgi","purge_method":"get_request","redis_hostname":"127.0.0.1","redis_port":"6379","redis_prefix":"nginx-cache:"}' - setupwp_plugin(self, 'nginx-helper', 'rt_wp_nginx_helper_options', plugin_data, data) + setupwp_plugin( + self, 'nginx-helper', 'rt_wp_nginx_helper_options', plugin_data, data) except SiteError as e: Log.debug(self, str(e)) Log.info(self, Log.FAIL + "Update nginx-helper settings failed. " @@ -1421,10 +1439,11 @@ class WOSiteUpdateController(CementBaseController): return 1 elif ((oldcachetype in ['wpsc', 'basic', 'wpfc'] and - (data['wpredis'])) or (oldsitetype == 'wp' and data['multisite'] and data['wpredis'])): + (data['wpredis'])) or (oldsitetype == 'wp' and data['multisite'] and data['wpredis'])): try: plugin_data = '{"log_level":"INFO","log_filesize":5,"enable_purge":1,"enable_map":0,"enable_log":0,"enable_stamp":0,"purge_homepage_on_new":1,"purge_homepage_on_edit":1,"purge_homepage_on_del":1,"purge_archive_on_new":1,"purge_archive_on_edit":0,"purge_archive_on_del":0,"purge_archive_on_new_comment":0,"purge_archive_on_deleted_comment":0,"purge_page_on_mod":1,"purge_page_on_new_comment":1,"purge_page_on_deleted_comment":1,"cache_method":"enable_redis","purge_method":"get_request","redis_hostname":"127.0.0.1","redis_port":"6379","redis_prefix":"nginx-cache:"}' - setupwp_plugin(self, 'nginx-helper', 'rt_wp_nginx_helper_options', plugin_data, data) + setupwp_plugin( + self, 'nginx-helper', 'rt_wp_nginx_helper_options', plugin_data, data) except SiteError as e: Log.debug(self, str(e)) Log.info(self, Log.FAIL + "Update nginx-helper settings failed. " @@ -1434,7 +1453,8 @@ class WOSiteUpdateController(CementBaseController): else: try: plugin_data = '{"log_level":"INFO","log_filesize":5,"enable_purge":0,"enable_map":0,"enable_log":0,"enable_stamp":0,"purge_homepage_on_new":1,"purge_homepage_on_edit":1,"purge_homepage_on_del":1,"purge_archive_on_new":1,"purge_archive_on_edit":0,"purge_archive_on_del":0,"purge_archive_on_new_comment":0,"purge_archive_on_deleted_comment":0,"purge_page_on_mod":1,"purge_page_on_new_comment":1,"purge_page_on_deleted_comment":1,"cache_method":"enable_redis","purge_method":"get_request","redis_hostname":"127.0.0.1","redis_port":"6379","redis_prefix":"nginx-cache:"}' - setupwp_plugin(self, 'nginx-helper', 'rt_wp_nginx_helper_options', plugin_data, data) + setupwp_plugin( + self, 'nginx-helper', 'rt_wp_nginx_helper_options', plugin_data, data) except SiteError as e: Log.debug(self, str(e)) Log.info(self, Log.FAIL + "Update nginx-helper settings failed. " @@ -1475,14 +1495,18 @@ class WOSiteUpdateController(CementBaseController): if oldcachetype != 'wpredis' and data['wpredis']: try: if installwp_plugin(self, 'redis-cache', data): - #search for wp-config.php - if WOFileUtils.isexist(self,"{0}/wp-config.php".format(wo_site_webroot)): - config_path = '{0}/wp-config.php'.format(wo_site_webroot) - elif WOFileUtils.isexist(self,"{0}/htdocs/wp-config.php".format(wo_site_webroot)): - config_path = '{0}/htdocs/wp-config.php'.format(wo_site_webroot) + # search for wp-config.php + if WOFileUtils.isexist(self, "{0}/wp-config.php".format(wo_site_webroot)): + config_path = '{0}/wp-config.php'.format( + wo_site_webroot) + elif WOFileUtils.isexist(self, "{0}/htdocs/wp-config.php".format(wo_site_webroot)): + config_path = '{0}/htdocs/wp-config.php'.format( + wo_site_webroot) else: - Log.debug(self, "Updating wp-config.php failed. File could not be located.") - Log.error(self,"wp-config.php could not be located !!") + Log.debug( + self, "Updating wp-config.php failed. File could not be located.") + Log.error( + self, "wp-config.php could not be located !!") raise SiteError if WOShellExec.cmd_exec(self, "grep -q \"WP_CACHE_KEY_SALT\" {0}" @@ -1491,7 +1515,7 @@ class WOSiteUpdateController(CementBaseController): else: try: wpconfig = open("{0}".format(config_path), - encoding='utf-8', mode='a') + encoding='utf-8', mode='a') wpconfig.write("\n\ndefine( \'WP_CACHE_KEY_SALT\', \'{0}:\' );" .format(wo_domain)) wpconfig.close() @@ -1543,10 +1567,10 @@ class WOSiteUpdateController(CementBaseController): db_user=data['wo_db_user'], db_password=data['wo_db_pass'], db_host=data['wo_db_host'], hhvm=hhvm, - ssl=True if check_site.is_ssl else False,php_version=check_php_version) + ssl=True if check_site.is_ssl else False, php_version=check_php_version) else: updateSiteInfo(self, wo_domain, stype=stype, cache=cache, - hhvm=hhvm, ssl=True if check_site.is_ssl else False,php_version=check_php_version) + hhvm=hhvm, ssl=True if check_site.is_ssl else False, php_version=check_php_version) Log.info(self, "Successfully updated site" " http://{0}".format(wo_domain)) return 0 @@ -1564,7 +1588,7 @@ class WOSiteDeleteController(CementBaseController): (['--no-prompt'], dict(help="doesnt ask permission for delete", action='store_true')), - (['-f','--force'], + (['-f', '--force'], dict(help="forcefully delete site and configuration", action='store_true')), (['--all'], @@ -1573,7 +1597,7 @@ class WOSiteDeleteController(CementBaseController): dict(help="delete db only", action='store_true')), (['--files'], dict(help="delete webroot only", action='store_true')), - ] + ] @expose(help="Delete website configuration and files") @expose(hide=True) @@ -1599,7 +1623,7 @@ class WOSiteDeleteController(CementBaseController): Log.error(self, "site {0} does not exist".format(wo_domain)) if ((not self.app.pargs.db) and (not self.app.pargs.files) and - (not self.app.pargs.all)): + (not self.app.pargs.all)): self.app.pargs.all = True # Gather information from wo-db for wo_domain @@ -1636,7 +1660,8 @@ class WOSiteDeleteController(CementBaseController): mark_db_delete_prompt = True Log.info(self, "Deleting Database, {0}, user {1}" .format(wo_db_name, wo_db_user)) - deleteDB(self, wo_db_name, wo_db_user, wo_mysql_grant_host, False) + deleteDB(self, wo_db_name, wo_db_user, + wo_mysql_grant_host, False) updateSiteInfo(self, wo_domain, db_name='deleted', db_user='deleted', @@ -1676,7 +1701,7 @@ class WOSiteDeleteController(CementBaseController): removeNginxConf(self, wo_domain) deleteSiteInfo(self, wo_domain) Log.info(self, "Deleted site {0}".format(wo_domain)) - # else: + # else: # Log.error(self, " site {0} does not exists".format(wo_domain)) else: if (mark_db_delete_prompt or mark_webroot_delete_prompt or (mark_webroot_deleted and mark_db_deleted)): @@ -1697,25 +1722,25 @@ class WOSiteListController(CementBaseController): dict(help='List enabled websites', action='store_true')), (['--disabled'], dict(help="List disabled websites", action='store_true')), - ] + ] @expose(help="Lists websites") def default(self): - sites = getAllsites(self) - if not sites: - pass + sites = getAllsites(self) + if not sites: + pass - if self.app.pargs.enabled: - for site in sites: - if site.is_enabled: - Log.info(self, "{0}".format(site.sitename)) - elif self.app.pargs.disabled: - for site in sites: - if not site.is_enabled: - Log.info(self, "{0}".format(site.sitename)) - else: - for site in sites: - Log.info(self, "{0}".format(site.sitename)) + if self.app.pargs.enabled: + for site in sites: + if site.is_enabled: + Log.info(self, "{0}".format(site.sitename)) + elif self.app.pargs.disabled: + for site in sites: + if not site.is_enabled: + Log.info(self, "{0}".format(site.sitename)) + else: + for site in sites: + Log.info(self, "{0}".format(site.sitename)) def load(app): diff --git a/wo/cli/plugins/site_functions.py b/wo/cli/plugins/site_functions.py index 79b301c..4eea310 100644 --- a/wo/cli/plugins/site_functions.py +++ b/wo/cli/plugins/site_functions.py @@ -54,9 +54,9 @@ def check_domain_exists(self, domain): def setupdomain(self, data): - #for debug purpose - # for key, value in data.items() : - # print (key, value) + # for debug purpose + # for key, value in data.items() : + # print (key, value) wo_domain_name = data['site_name'] wo_site_webroot = data['webroot'] if 'webroot' in data.keys() else '' @@ -72,7 +72,7 @@ def setupdomain(self, data): wo_site_nginx_conf = open('/etc/nginx/sites-available/{0}' .format(wo_domain_name), encoding='utf-8', mode='w') - if not data['php72']: + if not data['php73']: self.app.render((data), 'virtualconf.mustache', out=wo_site_nginx_conf) else: @@ -100,7 +100,6 @@ def setupdomain(self, data): raise SiteError("created nginx configuration failed for site." " check with `nginx -t`") - # create symbolic link for WOFileUtils.create_symlink(self, ['/etc/nginx/sites-available/{0}' .format(wo_domain_name), @@ -302,30 +301,30 @@ def setupwordpress(self, data): "--dbhost=\'{3}\' " .format(data['wo_db_name'], wo_wp_prefix, data['wo_db_user'], data['wo_db_host']) - + "--dbpass= " + + "--dbpass=\'{0}\' " "--extra-php</maxmemory {0}/' /etc/redis/redis.conf" .format(int(WOVariables.wo_ram*1024*1024*0.1))) - Log.debug(self, "Setting maxmemory-policy variable to allkeys-lru in redis.conf") + Log.debug( + self, "Setting maxmemory-policy variable to allkeys-lru in redis.conf") WOShellExec.cmd_exec(self, "sed -i 's/# maxmemory-policy.*/maxmemory-policy allkeys-lru/' " "/etc/redis/redis.conf") WOService.restart_service(self, 'redis-server') else: Log.debug(self, "Setting maxmemory variable to {0} in redis.conf" - .format(int(WOVariables.wo_ram*1024*1024*0.2))) + .format(int(WOVariables.wo_ram*1024*1024*0.2))) WOShellExec.cmd_exec(self, "sed -i 's/# maxmemory /maxmemory {0}/' /etc/redis/redis.conf" .format(int(WOVariables.wo_ram*1024*1024*0.2))) - Log.debug(self, "Setting maxmemory-policy variable to allkeys-lru in redis.conf") + Log.debug( + self, "Setting maxmemory-policy variable to allkeys-lru in redis.conf") WOShellExec.cmd_exec(self, "sed -i 's/# maxmemory-policy.*/maxmemory-policy allkeys-lru/' " "/etc/redis/redis.conf") WOService.restart_service(self, 'redis-server') @@ -1594,12 +1626,12 @@ class WOStackController(CementBaseController): packages = [] if ((not self.app.pargs.web) and (not self.app.pargs.admin) and - (not self.app.pargs.nginx) and (not self.app.pargs.php) and - (not self.app.pargs.php72) and (not self.app.pargs.mysql) and - (not self.app.pargs.wpcli) and (not self.app.pargs.phpmyadmin) and - (not self.app.pargs.hhvm) and (not self.app.pargs.adminer) and - (not self.app.pargs.utils) and (not self.app.pargs.all) and - (not self.app.pargs.redis) and (not self.app.pargs.phpredisadmin)): + (not self.app.pargs.nginx) and (not self.app.pargs.php) and + (not self.app.pargs.php73) and (not self.app.pargs.mysql) and + (not self.app.pargs.wpcli) and (not self.app.pargs.phpmyadmin) and + (not self.app.pargs.hhvm) and (not self.app.pargs.adminer) and + (not self.app.pargs.utils) and (not self.app.pargs.all) and + (not self.app.pargs.redis) and (not self.app.pargs.phpredisadmin)): self.app.pargs.web = True self.app.pargs.admin = True @@ -1607,7 +1639,7 @@ class WOStackController(CementBaseController): self.app.pargs.web = True self.app.pargs.admin = True if (WOVariables.wo_platform_codename == 'trusty' or WOVariables.wo_platform_codename == 'xenial' or WOVariables.wo_platform_codename == 'bionic'): - self.app.pargs.php72 = True + self.app.pargs.php73 = True if self.app.pargs.web: self.app.pargs.nginx = True @@ -1625,35 +1657,33 @@ class WOStackController(CementBaseController): Log.debug(self, "Removing apt_packages variable of Nginx") apt_packages = apt_packages + WOVariables.wo_nginx else: - Log.error(self,"Cannot Remove! Nginx Stable version not found.") + Log.error(self, "Cannot Remove! Nginx Stable version not found.") if self.app.pargs.php: Log.debug(self, "Removing apt_packages variable of PHP") if (WOVariables.wo_platform_codename == 'trusty' or WOVariables.wo_platform_codename == 'xenial' or WOVariables.wo_platform_codename == 'bionic'): - apt_packages = apt_packages + WOVariables.wo_php72 if not WOAptGet.is_installed(self, 'php7.2-fpm'): - apt_packages = apt_packages + WOVariables.wo_php_extra + apt_packages = apt_packages + WOVariables.wo_php + WOVariables.wo_php_extra else: apt_packages = apt_packages + WOVariables.wo_php - #PHP7.0 for debian(jessie+) - if self.app.pargs.php72: + # PHP7.3 for debian(jessie+) + if self.app.pargs.php73: if (WOVariables.wo_platform_codename == 'jessie'): - Log.debug(self, "Removing apt_packages variable of PHP 7.0") - apt_packages = apt_packages + WOVariables.wo_php72 - if not WOAptGet.is_installed(self, 'php5-fpm'): + Log.debug(self, "Removing apt_packages variable of PHP 7.3") + apt_packages = apt_packages + WOVariables.wo_php73 + if not WOAptGet.is_installed(self, 'php7.2-fpm'): apt_packages = apt_packages + WOVariables.wo_php_extra else: - Log.info(self,"PHP 7.0 not supported.") + Log.info(self, "PHP 7.3 not supported.") - if self.app.pargs.php72: + if self.app.pargs.php73: if (WOVariables.wo_platform_codename == 'trusty' or WOVariables.wo_platform_codename == 'xenial' or WOVariables.wo_platform_codename == 'bionic'): - Log.debug(self, "Removing apt_packages variable of PHP 7.0") - apt_packages = apt_packages + WOVariables.wo_php72 - if not WOAptGet.is_installed(self, 'php5.6-fpm'): - apt_packages = apt_packages + WOVariables.wo_php_extra + Log.debug(self, "Removing apt_packages variable of PHP 7.3") + if not WOAptGet.is_installed(self, 'php7.3-fpm'): + apt_packages = apt_packages + WOVariables.wo_php73 + WOVariables.wo_php_extra else: - Log.info(self,"PHP 7.0 not supported.") + Log.info(self, "PHP 7.3 not supported.") if self.app.pargs.hhvm: if WOAptGet.is_installed(self, 'hhvm'): @@ -1671,8 +1701,8 @@ class WOStackController(CementBaseController): if self.app.pargs.wpcli: Log.debug(self, "Removing package variable of WPCLI ") - if os.path.isfile('/usr/bin/wp'): - packages = packages + ['/usr/bin/wp'] + if os.path.isfile('/usr/local/bin/wp'): + packages = packages + ['/usr/local/bin/wp'] else: Log.warn(self, "WP-CLI is not installed with WordOps") if self.app.pargs.phpmyadmin: @@ -1695,7 +1725,7 @@ class WOStackController(CementBaseController): .format(WOVariables.wo_webroot), '{0}22222/htdocs/cache/nginx/' 'clean.php'.format(WOVariables.wo_webroot), - '{0}22222/htdocs/cache/memcache' + '{0}22222/htdocs/cache/memcached' .format(WOVariables.wo_webroot), '/usr/bin/pt-query-advisor', '{0}22222/htdocs/db/anemometer' @@ -1712,7 +1742,7 @@ class WOStackController(CementBaseController): if wo_prompt == 'YES' or wo_prompt == 'yes': - if (set(["nginx-custom"]).issubset(set(apt_packages))) : + if (set(["nginx-custom"]).issubset(set(apt_packages))): WOService.stop_service(self, 'nginx') if len(packages): @@ -1725,16 +1755,16 @@ class WOStackController(CementBaseController): WOAptGet.remove(self, apt_packages) WOAptGet.auto_remove(self) - Log.info(self, "Successfully removed packages") - #Added for Ondrej Repo missing package Fix - if self.app.pargs.php72: - if WOAptGet.is_installed(self, 'php5.6-fpm'): - Log.info(self, "PHP5.6-fpm found on system.") - Log.info(self, "Verifying and installing missing packages,") - WOShellExec.cmd_exec(self, "apt-get install -y php-memcached php-igbinary") - + # Added for Ondrej Repo missing package Fix + if self.app.pargs.php: + if WOAptGet.is_installed(self, 'php7.2-fpm'): + Log.info(self, "PHP7.2-fpm found on system.") + Log.info( + self, "Verifying and installing missing packages,") + WOShellExec.cmd_exec( + self, "apt-get install -y php-memcached php-igbinary") @expose(help="Purge packages") def purge(self): @@ -1744,12 +1774,12 @@ class WOStackController(CementBaseController): # Default action for stack purge if ((not self.app.pargs.web) and (not self.app.pargs.admin) and - (not self.app.pargs.nginx) and (not self.app.pargs.php) and - (not self.app.pargs.php7) and (not self.app.pargs.mysql) and - (not self.app.pargs.wpcli) and (not self.app.pargs.phpmyadmin) and - (not self.app.pargs.hhvm) and (not self.app.pargs.adminer) and - (not self.app.pargs.utils) and (not self.app.pargs.all) and - (not self.app.pargs.redis) and (not self.app.pargs.phpredisadmin)): + (not self.app.pargs.nginx) and (not self.app.pargs.php) and + (not self.app.pargs.php73) and (not self.app.pargs.mysql) and + (not self.app.pargs.wpcli) and (not self.app.pargs.phpmyadmin) and + (not self.app.pargs.hhvm) and (not self.app.pargs.adminer) and + (not self.app.pargs.utils) and (not self.app.pargs.all) and + (not self.app.pargs.redis) and (not self.app.pargs.phpredisadmin)): self.app.pargs.web = True self.app.pargs.admin = True @@ -1757,7 +1787,7 @@ class WOStackController(CementBaseController): self.app.pargs.web = True self.app.pargs.admin = True if (WOVariables.wo_platform_codename == 'trusty' or WOVariables.wo_platform_codename == 'xenial' or WOVariables.wo_platform_codename == 'bionic'): - self.app.pargs.php7 = True + self.app.pargs.php73 = True if self.app.pargs.web: self.app.pargs.nginx = True @@ -1775,47 +1805,41 @@ class WOStackController(CementBaseController): Log.debug(self, "Purge apt_packages variable of Nginx") apt_packages = apt_packages + WOVariables.wo_nginx else: - Log.error(self,"Cannot Purge! Nginx Stable version not found.") + Log.error(self, "Cannot Purge! Nginx Stable version not found.") if self.app.pargs.php: Log.debug(self, "Purge apt_packages variable PHP") if (WOVariables.wo_platform_codename == 'trusty' or WOVariables.wo_platform_codename == 'xenial' or WOVariables.wo_platform_codename == 'bionic'): - apt_packages = apt_packages + WOVariables.wo_php_extra + apt_packages = apt_packages + WOVariables.wo_php + WOVariables.wo_php_extra + if not WOAptGet.is_installed(self, 'php7.3-fpm'): + apt_packages = apt_packages + WOVariables.wo_php_extra else: - apt_packages = apt_packages + WOVariables.wo_php72 + apt_packages = apt_packages + WOVariables.wo_php - #For debian --php7 - if self.app.pargs.php72: + # For debian --php73 + if self.app.pargs.php73: if (WOVariables.wo_platform_codename == 'jessie'): - Log.debug(self, "Removing apt_packages variable of PHP 7.0") - apt_packages = apt_packages + WOVariables.wo_php72 - if not WOAptGet.is_installed(self, 'php5-fpm'): + Log.debug(self, "Removing apt_packages variable of PHP 7.3") + apt_packages = apt_packages + WOVariables.wo_php73 + if not WOAptGet.is_installed(self, 'php7.2-fpm'): apt_packages = apt_packages + WOVariables.wo_php_extra else: - Log.info(self,"PHP 7.2 not supported.") + Log.info(self, "PHP 7.3 not supported.") - if self.app.pargs.php72: + if self.app.pargs.php73: if (WOVariables.wo_platform_codename == 'trusty' or WOVariables.wo_platform_codename == 'xenial' or WOVariables.wo_platform_codename == 'bionic'): - Log.debug(self, "Removing apt_packages variable of PHP 7.0") - apt_packages = apt_packages + WOVariables.wo_php72 - if not WOAptGet.is_installed(self, 'php5.6-fpm'): - apt_packages = apt_packages + WOVariables.wo_php_extra + Log.debug(self, "Removing apt_packages variable of PHP 7.3") + if not WOAptGet.is_installed(self, 'php7.3-fpm'): + apt_packages = apt_packages + WOVariables.wo_php73 + WOVariables.wo_php_extra else: - Log.info(self,"PHP 7.2 not supported.") + Log.info(self, "PHP 7.3 not supported.") if self.app.pargs.hhvm: if WOAptGet.is_installed(self, 'hhvm'): Log.debug(self, "Purge apt_packages varible of HHVM") apt_packages = apt_packages + WOVariables.wo_hhvm - if self.app.pargs.redis: - Log.debug(self, "Purge apt_packages variable of Redis") - apt_packages = apt_packages + WOVariables.wo_redis - if self.app.pargs.mysql: - Log.debug(self, "Purge apt_packages variable MySQL") - apt_packages = apt_packages + WOVariables.wo_mysql - packages = packages + ['/usr/bin/mysqltuner'] - if self.app.pargs.wpcli: + Log.debug(self, "Purge package variable WPCLI") - if os.path.isfile('/usr/bin/wp'): - packages = packages + ['/usr/bin/wp'] + if os.path.isfile('/usr/local/bin/wp'): + packages = packages + ['/usr/local/bin/wp'] else: Log.warn(self, "WP-CLI is not installed with WordOps") if self.app.pargs.phpmyadmin: @@ -1838,7 +1862,7 @@ class WOStackController(CementBaseController): .format(WOVariables.wo_webroot), '{0}22222/htdocs/cache/nginx/' 'clean.php'.format(WOVariables.wo_webroot), - '{0}22222/htdocs/cache/memcache' + '{0}22222/htdocs/cache/memcached' .format(WOVariables.wo_webroot), '/usr/bin/pt-query-advisor', '{0}22222/htdocs/db/anemometer' @@ -1855,7 +1879,7 @@ class WOStackController(CementBaseController): if wo_prompt == 'YES' or wo_prompt == 'yes': - if (set(["nginx-custom"]).issubset(set(apt_packages))) : + if (set(["nginx-custom"]).issubset(set(apt_packages))): WOService.stop_service(self, 'nginx') if len(apt_packages): @@ -1867,18 +1891,8 @@ class WOStackController(CementBaseController): WOFileUtils.remove(self, packages) WOAptGet.auto_remove(self) - Log.info(self, "Successfully purged packages") - #Added for php Ondrej repo missing package fix - if self.app.pargs.php72: - if WOAptGet.is_installed(self, 'php5.6-fpm'): - Log.info(self, "PHP5.6-fpm found on system.") - Log.info(self, "Verifying and installing missing packages,") - WOShellExec.cmd_exec(self, "apt-get install -y php-memcached php-igbinary") - - - def load(app): # register the plugin class.. this only happens if the plugin is enabled handler.register(WOStackController) @@ -1887,4 +1901,4 @@ def load(app): handler.register(WOStackUpgradeController) # register a hook (function) to run after arguments are parsed. - hook.register('post_argument_parsing', wo_stack_hook) \ No newline at end of file + hook.register('post_argument_parsing', wo_stack_hook) diff --git a/wo/cli/plugins/stack_migrate.py b/wo/cli/plugins/stack_migrate.py index e835c68..64c612e 100644 --- a/wo/cli/plugins/stack_migrate.py +++ b/wo/cli/plugins/stack_migrate.py @@ -56,21 +56,21 @@ class WOStackMigrateController(CementBaseController): % e) Log.debug(self, "Pre-seeding MariaDB") - Log.debug(self, "echo \"mariadb-server-10.0 " + Log.debug(self, "echo \"mariadb-server-10.3 " "mysql-server/root_password " "password \" | " "debconf-set-selections") - WOShellExec.cmd_exec(self, "echo \"mariadb-server-10.0 " + WOShellExec.cmd_exec(self, "echo \"mariadb-server-10.3 " "mysql-server/root_password " "password {chars}\" | " "debconf-set-selections" .format(chars=chars), log=False) - Log.debug(self, "echo \"mariadb-server-10.0 " + Log.debug(self, "echo \"mariadb-server-10.3 " "mysql-server/root_password_again " "password \" | " "debconf-set-selections") - WOShellExec.cmd_exec(self, "echo \"mariadb-server-10.0 " + WOShellExec.cmd_exec(self, "echo \"mariadb-server-10.3 " "mysql-server/root_password_again " "password {chars}\" | " "debconf-set-selections" diff --git a/wo/cli/plugins/stack_services.py b/wo/cli/plugins/stack_services.py index 10183d6..f4bc268 100644 --- a/wo/cli/plugins/stack_services.py +++ b/wo/cli/plugins/stack_services.py @@ -13,59 +13,49 @@ class WOStackStatusController(CementBaseController): stacked_type = 'embedded' description = 'Check the stack status' arguments = [ - (['--memcache'], - dict(help='start/stop/restart memcache', action='store_true')), - ] + (['--memcached'], + dict(help='start/stop/restart memcached', action='store_true')), + ] @expose(help="Start stack services") def start(self): """Start services""" services = [] - if not (self.app.pargs.nginx or self.app.pargs.php or self.app.pargs.php7 - or self.app.pargs.mysql or self.app.pargs.hhvm or self.app.pargs.memcache + if not (self.app.pargs.nginx or self.app.pargs.php or self.app.pargs.php73 + or self.app.pargs.mysql or self.app.pargs.hhvm or self.app.pargs.memcached or self.app.pargs.redis): self.app.pargs.nginx = True self.app.pargs.php = True self.app.pargs.mysql = True if self.app.pargs.nginx: - if WOAptGet.is_installed(self, 'nginx-custom') or WOAptGet.is_installed(self,'nginx-mainline'): + if WOAptGet.is_installed(self, 'nginx-custom') or WOAptGet.is_installed(self, 'nginx-mainline'): services = services + ['nginx'] else: Log.info(self, "Nginx is not installed") if self.app.pargs.php: - if (WOVariables.wo_platform_distro == 'debian' or WOVariables.wo_platform_codename == 'precise'): - if WOAptGet.is_installed(self, 'php5-fpm'): - services = services + ['php5-fpm'] - else: - Log.info(self, "PHP5-FPM is not installed") + if WOAptGet.is_installed(self, 'php7.2-fpm'): + services = services + ['php7.2-fpm'] else: - if WOAptGet.is_installed(self, 'php5.6-fpm'): - services = services + ['php5.6-fpm'] - else: - Log.info(self, "PHP5.6-FPM is not installed") - - if WOAptGet.is_installed(self, 'php7.2-fpm'): - services = services + ['php7.2-fpm'] - else: - Log.info(self, "PHP7.2-FPM is not installed") - - if self.app.pargs.php7: - if (WOVariables.wo_platform_codename == 'trusty' or WOVariables.wo_platform_codename == 'xenial' or WOVariables.wo_platform_codename == 'bionic'): - if WOAptGet.is_installed(self, 'php7.2-fpm'): - services = services + ['php7.2-fpm'] - else: - Log.info(self, "PHP7.2-FPM is not installed") + Log.info(self, "PHP7.2-FPM is not installed") + if WOAptGet.is_installed(self, 'php7.3-fpm'): + services = services + ['php7.3-fpm'] else: - Log.info(self, "Your platform does not support PHP 7") + Log.info(self, "PHP7.3-FPM is not installed") + + if self.app.pargs.php73: + if WOAptGet.is_installed(self, 'php7.3-fpm'): + services = services + ['php7.3-fpm'] + else: + Log.info(self, "PHP7.3-FPM is not installed") if self.app.pargs.mysql: if ((WOVariables.wo_mysql_host is "localhost") or - (WOVariables.wo_mysql_host is "127.0.0.1")): + (WOVariables.wo_mysql_host is "127.0.0.1")): if (WOAptGet.is_installed(self, 'mysql-server') or - WOAptGet.is_installed(self, 'percona-server-server-5.6') or - WOAptGet.is_installed(self, 'mariadb-server')): + WOAptGet.is_installed(self, 'percona-server-server-5.6') or + WOAptGet.is_installed(self, 'mariadb-server')): services = services + ['mysql'] else: Log.info(self, "MySQL is not installed") @@ -78,11 +68,11 @@ class WOStackStatusController(CementBaseController): services = services + ['hhvm'] else: Log.info(self, "HHVM is not installed") - if self.app.pargs.memcache: + if self.app.pargs.memcached: if WOAptGet.is_installed(self, 'memcached'): services = services + ['memcached'] else: - Log.info(self, "Memcache is not installed") + Log.info(self, "Memcached is not installed") if self.app.pargs.redis: if WOAptGet.is_installed(self, 'redis-server'): @@ -98,51 +88,42 @@ class WOStackStatusController(CementBaseController): def stop(self): """Stop services""" services = [] - if not (self.app.pargs.nginx or self.app.pargs.php or self.app.pargs.php7 - or self.app.pargs.mysql or self.app.pargs.hhvm or self.app.pargs.memcache + if not (self.app.pargs.nginx or self.app.pargs.php or self.app.pargs.php73 + or self.app.pargs.mysql or self.app.pargs.hhvm or self.app.pargs.memcached or self.app.pargs.redis): self.app.pargs.nginx = True self.app.pargs.php = True self.app.pargs.mysql = True if self.app.pargs.nginx: - if WOAptGet.is_installed(self, 'nginx-custom') or WOAptGet.is_installed(self,'nginx-mainline'): + if WOAptGet.is_installed(self, 'nginx-custom') or WOAptGet.is_installed(self, 'nginx-mainline'): services = services + ['nginx'] else: Log.info(self, "Nginx is not installed") if self.app.pargs.php: - if (WOVariables.wo_platform_distro == 'debian' or WOVariables.wo_platform_codename == 'precise'): - if WOAptGet.is_installed(self, 'php5-fpm'): - services = services + ['php5-fpm'] - else: - Log.info(self, "PHP5-FPM is not installed") + if WOAptGet.is_installed(self, 'php7.2-fpm'): + services = services + ['php7.2-fpm'] else: - if WOAptGet.is_installed(self, 'php5.6-fpm'): - services = services + ['php5.6-fpm'] - else: - Log.info(self, "PHP5.6-FPM is not installed") + Log.info(self, "PHP7.2-FPM is not installed") - if WOAptGet.is_installed(self, 'php7.2-fpm'): - services = services + ['php7.2-fpm'] - else: - Log.info(self, "PHP7.2-FPM is not installed") - - if self.app.pargs.php7: - if (WOVariables.wo_platform_codename == 'trusty' or WOVariables.wo_platform_codename == 'xenial' or WOVariables.wo_platform_codename == 'bionic'): - if WOAptGet.is_installed(self, 'php7.2-fpm'): - services = services + ['php7.2-fpm'] - else: - Log.info(self, "PHP7.2-FPM is not installed") + if WOAptGet.is_installed(self, 'php7.3-fpm'): + services = services + ['php7.3-fpm'] else: - Log.info(self, "Your platform does not support PHP 7") + Log.info(self, "PHP7.3-FPM is not installed") + + if self.app.pargs.php73: + if WOAptGet.is_installed(self, 'php7.3-fpm'): + services = services + ['php7.3-fpm'] + else: + Log.info(self, "PHP7.3-FPM is not installed") if self.app.pargs.mysql: if ((WOVariables.wo_mysql_host is "localhost") or - (WOVariables.wo_mysql_host is "127.0.0.1")): + (WOVariables.wo_mysql_host is "127.0.0.1")): if (WOAptGet.is_installed(self, 'mysql-server') or - WOAptGet.is_installed(self, 'percona-server-server-5.6') or - WOAptGet.is_installed(self, 'mariadb-server')): + WOAptGet.is_installed(self, 'percona-server-server-5.6') or + WOAptGet.is_installed(self, 'mariadb-server')): services = services + ['mysql'] else: Log.info(self, "MySQL is not installed") @@ -155,11 +136,11 @@ class WOStackStatusController(CementBaseController): services = services + ['hhvm'] else: Log.info(self, "HHVM is not installed") - if self.app.pargs.memcache: + if self.app.pargs.memcached: if WOAptGet.is_installed(self, 'memcached'): services = services + ['memcached'] else: - Log.info(self, "Memcache is not installed") + Log.info(self, "Memcached is not installed") if self.app.pargs.redis: if WOAptGet.is_installed(self, 'redis-server'): @@ -175,52 +156,42 @@ class WOStackStatusController(CementBaseController): def restart(self): """Restart services""" services = [] - if not (self.app.pargs.nginx or self.app.pargs.php or self.app.pargs.php7 - or self.app.pargs.mysql or self.app.pargs.hhvm or self.app.pargs.memcache + if not (self.app.pargs.nginx or self.app.pargs.php or self.app.pargs.php73 + or self.app.pargs.mysql or self.app.pargs.hhvm or self.app.pargs.memcached or self.app.pargs.redis): self.app.pargs.nginx = True self.app.pargs.php = True self.app.pargs.mysql = True if self.app.pargs.nginx: - if WOAptGet.is_installed(self, 'nginx-custom') or WOAptGet.is_installed(self,'nginx-mainline'): + if WOAptGet.is_installed(self, 'nginx-custom') or WOAptGet.is_installed(self, 'nginx-mainline'): services = services + ['nginx'] else: Log.info(self, "Nginx is not installed") if self.app.pargs.php: - if (WOVariables.wo_platform_distro == 'debian' or WOVariables.wo_platform_codename == 'precise'): - if WOAptGet.is_installed(self, 'php5-fpm'): - services = services + ['php5-fpm'] - else: - Log.info(self, "PHP5-FPM is not installed") + if WOAptGet.is_installed(self, 'php7.2-fpm'): + services = services + ['php7.2-fpm'] else: - if WOAptGet.is_installed(self, 'php5.6-fpm'): - services = services + ['php5.6-fpm'] - else: - Log.info(self, "PHP5.6-FPM is not installed") + Log.info(self, "PHP7.2-FPM is not installed") - if WOAptGet.is_installed(self, 'php7.2-fpm'): - services = services + ['php7.2-fpm'] - else: - Log.info(self, "PHP7.2-FPM is not installed") - - if self.app.pargs.php7: - if (WOVariables.wo_platform_codename == 'trusty' or WOVariables.wo_platform_codename == 'xenial' or WOVariables.wo_platform_codename == 'bionic'): - if WOAptGet.is_installed(self, 'php7.2-fpm'): - services = services + ['php7.2-fpm'] - else: - Log.info(self, "PHP7.2-FPM is not installed") + if WOAptGet.is_installed(self, 'php7.3-fpm'): + services = services + ['php7.3-fpm'] else: - Log.info(self, "Your platform does not support PHP 7") + Log.info(self, "PHP7.3-FPM is not installed") + if self.app.pargs.php73: + if WOAptGet.is_installed(self, 'php7.3-fpm'): + services = services + ['php7.3-fpm'] + else: + Log.info(self, "PHP7.3-FPM is not installed") if self.app.pargs.mysql: if ((WOVariables.wo_mysql_host is "localhost") or - (WOVariables.wo_mysql_host is "127.0.0.1")): + (WOVariables.wo_mysql_host is "127.0.0.1")): if (WOAptGet.is_installed(self, 'mysql-server') or - WOAptGet.is_installed(self, 'percona-server-server-5.6') or - WOAptGet.is_installed(self, 'mariadb-server')): + WOAptGet.is_installed(self, 'percona-server-server-5.6') or + WOAptGet.is_installed(self, 'mariadb-server')): services = services + ['mysql'] else: Log.info(self, "MySQL is not installed") @@ -233,11 +204,11 @@ class WOStackStatusController(CementBaseController): services = services + ['hhvm'] else: Log.info(self, "HHVM is not installed") - if self.app.pargs.memcache: + if self.app.pargs.memcached: if WOAptGet.is_installed(self, 'memcached'): services = services + ['memcached'] else: - Log.info(self, "Memcache is not installed") + Log.info(self, "Memcached is not installed") if self.app.pargs.redis: if WOAptGet.is_installed(self, 'redis-server'): @@ -253,8 +224,8 @@ class WOStackStatusController(CementBaseController): def status(self): """Status of services""" services = [] - if not (self.app.pargs.nginx or self.app.pargs.php or self.app.pargs.php7 - or self.app.pargs.mysql or self.app.pargs.hhvm or self.app.pargs.memcache + if not (self.app.pargs.nginx or self.app.pargs.php or self.app.pargs.php73 + or self.app.pargs.mysql or self.app.pargs.hhvm or self.app.pargs.memcached or self.app.pargs.redis): self.app.pargs.nginx = True self.app.pargs.php = True @@ -262,43 +233,34 @@ class WOStackStatusController(CementBaseController): self.app.pargs.hhvm = True if self.app.pargs.nginx: - if WOAptGet.is_installed(self, 'nginx-custom') or WOAptGet.is_installed(self,'nginx-mainline'): + if WOAptGet.is_installed(self, 'nginx-custom') or WOAptGet.is_installed(self, 'nginx-mainline'): services = services + ['nginx'] else: Log.info(self, "Nginx is not installed") if self.app.pargs.php: - if (WOVariables.wo_platform_distro == 'debian' or WOVariables.wo_platform_codename == 'precise'): - if WOAptGet.is_installed(self, 'php5-fpm'): - services = services + ['php5-fpm'] - else: - Log.info(self, "PHP5-FPM is not installed") + if WOAptGet.is_installed(self, 'php7.2-fpm'): + services = services + ['php7.2-fpm'] else: - if WOAptGet.is_installed(self, 'php5.6-fpm'): - services = services + ['php5.6-fpm'] - else: - Log.info(self, "PHP5.6-FPM is not installed") + Log.info(self, "PHP7.2-FPM is not installed") - if WOAptGet.is_installed(self, 'php7.2-fpm'): - services = services + ['php7.2-fpm'] - else: - Log.info(self, "PHP7.2-FPM is not installed") - - if self.app.pargs.php7: - if (WOVariables.wo_platform_codename == 'trusty' or WOVariables.wo_platform_codename == 'xenial' or WOVariables.wo_platform_codename == 'bionic'): - if WOAptGet.is_installed(self, 'php7.2-fpm'): - services = services + ['php7.2-fpm'] - else: - Log.info(self, "PHP7.2-FPM is not installed") + if WOAptGet.is_installed(self, 'php7.3-fpm'): + services = services + ['php7.3-fpm'] else: - Log.info(self, "Your platform does not support PHP 7") + Log.info(self, "PHP7.3-FPM is not installed") + + if self.app.pargs.php73: + if WOAptGet.is_installed(self, 'php7.3-fpm'): + services = services + ['php7.3-fpm'] + else: + Log.info(self, "PHP7.3-FPM is not installed") if self.app.pargs.mysql: if ((WOVariables.wo_mysql_host is "localhost") or - (WOVariables.wo_mysql_host is "127.0.0.1")): + (WOVariables.wo_mysql_host is "127.0.0.1")): if (WOAptGet.is_installed(self, 'mysql-server') or - WOAptGet.is_installed(self, 'percona-server-server-5.6') or - WOAptGet.is_installed(self, 'mariadb-server')): + WOAptGet.is_installed(self, 'percona-server-server-5.6') or + WOAptGet.is_installed(self, 'mariadb-server')): services = services + ['mysql'] else: Log.info(self, "MySQL is not installed") @@ -311,11 +273,11 @@ class WOStackStatusController(CementBaseController): services = services + ['hhvm'] else: Log.info(self, "HHVM is not installed") - if self.app.pargs.memcache: + if self.app.pargs.memcached: if WOAptGet.is_installed(self, 'memcached'): services = services + ['memcached'] else: - Log.info(self, "Memcache is not installed") + Log.info(self, "Memcached is not installed") if self.app.pargs.redis: if WOAptGet.is_installed(self, 'redis-server'): @@ -331,51 +293,42 @@ class WOStackStatusController(CementBaseController): def reload(self): """Reload service""" services = [] - if not (self.app.pargs.nginx or self.app.pargs.php or self.app.pargs.php7 - or self.app.pargs.mysql or self.app.pargs.hhvm or self.app.pargs.memcache + if not (self.app.pargs.nginx or self.app.pargs.php or self.app.pargs.php73 + or self.app.pargs.mysql or self.app.pargs.hhvm or self.app.pargs.memcached or self.app.pargs.redis): self.app.pargs.nginx = True self.app.pargs.php = True self.app.pargs.mysql = True if self.app.pargs.nginx: - if WOAptGet.is_installed(self, 'nginx-custom') or WOAptGet.is_installed(self,'nginx-mainline'): + if WOAptGet.is_installed(self, 'nginx-custom') or WOAptGet.is_installed(self, 'nginx-mainline'): services = services + ['nginx'] else: Log.info(self, "Nginx is not installed") if self.app.pargs.php: - if (WOVariables.wo_platform_distro == 'debian' or WOVariables.wo_platform_codename == 'precise'): - if WOAptGet.is_installed(self, 'php5-fpm'): - services = services + ['php5-fpm'] - else: - Log.info(self, "PHP5-FPM is not installed") + if WOAptGet.is_installed(self, 'php7.2-fpm'): + services = services + ['php7.2-fpm'] else: - if WOAptGet.is_installed(self, 'php5.6-fpm'): - services = services + ['php5.6-fpm'] - else: - Log.info(self, "PHP5.6-FPM is not installed") + Log.info(self, "PHP7.2-FPM is not installed") - if WOAptGet.is_installed(self, 'php7.2-fpm'): - services = services + ['php7.2-fpm'] - else: - Log.info(self, "PHP7.2-FPM is not installed") - - if self.app.pargs.php7: - if (WOVariables.wo_platform_codename == 'trusty' or WOVariables.wo_platform_codename == 'xenial' or WOVariables.wo_platform_codename == 'bionic'): - if WOAptGet.is_installed(self, 'php7.2-fpm'): - services = services + ['php7.2-fpm'] - else: - Log.info(self, "PHP7.2-FPM is not installed") + if WOAptGet.is_installed(self, 'php7.3-fpm'): + services = services + ['php7.3-fpm'] else: - Log.info(self, "Your platform does not support PHP 7") + Log.info(self, "PHP7.3-FPM is not installed") + + if self.app.pargs.php73: + if WOAptGet.is_installed(self, 'php7.3-fpm'): + services = services + ['php7.3-fpm'] + else: + Log.info(self, "PHP7.3-FPM is not installed") if self.app.pargs.mysql: if ((WOVariables.wo_mysql_host is "localhost") or - (WOVariables.wo_mysql_host is "127.0.0.1")): + (WOVariables.wo_mysql_host is "127.0.0.1")): if (WOAptGet.is_installed(self, 'mysql-server') or - WOAptGet.is_installed(self, 'percona-server-server-5.6') or - WOAptGet.is_installed(self, 'mariadb-server')): + WOAptGet.is_installed(self, 'percona-server-server-5.6') or + WOAptGet.is_installed(self, 'mariadb-server')): services = services + ['mysql'] else: Log.info(self, "MySQL is not installed") @@ -386,12 +339,12 @@ class WOStackStatusController(CementBaseController): if self.app.pargs.hhvm: Log.info(self, "HHVM does not support to reload") - if self.app.pargs.memcache: + if self.app.pargs.memcached: if WOAptGet.is_installed(self, 'memcached'): services = services + ['memcached'] else: - Log.info(self, "Memcache is not installed") - + Log.info(self, "Memcached is not installed") + if self.app.pargs.redis: if WOAptGet.is_installed(self, 'redis-server'): services = services + ['redis-server'] diff --git a/wo/cli/plugins/stack_upgrade.py b/wo/cli/plugins/stack_upgrade.py index d97bac8..fca79a1 100644 --- a/wo/cli/plugins/stack_upgrade.py +++ b/wo/cli/plugins/stack_upgrade.py @@ -89,8 +89,8 @@ class WOStackUpgradeController(CementBaseController): if ((not self.app.pargs.web) and (not self.app.pargs.nginx) and (not self.app.pargs.php) and (not self.app.pargs.mysql) and - (not self.app.pargs.hhvm) and (not self.app.pargs.all) and - (not self.app.pargs.wpcli) and (not self.app.pargs.redis) and + (not self.app.pargs.hhvm) and (not self.app.pargs.all) and + (not self.app.pargs.wpcli) and (not self.app.pargs.redis) and (not self.app.pargs.nginxmainline)): self.app.pargs.web = True @@ -106,7 +106,7 @@ class WOStackUpgradeController(CementBaseController): self.app.pargs.mysql = True self.app.pargs.wpcli = True - if self.app.pargs.nginx : + if self.app.pargs.nginx: if WOAptGet.is_installed(self, 'nginx-custom'): apt_packages = apt_packages + WOVariables.wo_nginx else: @@ -137,12 +137,12 @@ class WOStackUpgradeController(CementBaseController): Log.info(self, "Redis is not installed") if self.app.pargs.wpcli: - if os.path.isfile('/usr/bin/wp'): + if os.path.isfile('/usr/local/bin/wp'): packages = packages + [["https://github.com/wp-cli/wp-cli/" "releases/download/v{0}/" "wp-cli-{0}.phar" "".format(WOVariables.wo_wp_cli), - "/usr/bin/wp", + "/usr/local/bin/wp", "WP-CLI"]] else: Log.info(self, "WPCLI is not installed with WordOps") @@ -178,13 +178,13 @@ class WOStackUpgradeController(CementBaseController): if len(packages): if self.app.pargs.wpcli: - WOFileUtils.remove(self,['/usr/bin/wp']) + WOFileUtils.remove(self, ['/usr/local/bin/wp']) Log.debug(self, "Downloading following: {0}".format(packages)) WODownload.download(self, packages) if self.app.pargs.wpcli: - WOFileUtils.chmod(self, "/usr/bin/wp", 0o775) + WOFileUtils.chmod(self, "/usr/local/bin/wp", 0o775) Log.info(self, "Successfully updated packages") else: diff --git a/wo/cli/plugins/sync.py b/wo/cli/plugins/sync.py index dfa12fe..e0fd1f9 100644 --- a/wo/cli/plugins/sync.py +++ b/wo/cli/plugins/sync.py @@ -37,7 +37,7 @@ class WOSyncController(CementBaseController): # Read config files configfiles = glob.glob(wo_site_webroot + '/*-config.php') - #search for wp-config.php inside htdocs/ + # search for wp-config.php inside htdocs/ if not configfiles: Log.debug(self, "Config files not found in {0}/ " .format(wo_site_webroot)) diff --git a/wo/cli/templates/22222.mustache b/wo/cli/templates/22222.mustache index 346c164..ab7da89 100644 --- a/wo/cli/templates/22222.mustache +++ b/wo/cli/templates/22222.mustache @@ -39,6 +39,6 @@ server { location ~ \.php$ { try_files $uri =404; include fastcgi_params; - fastcgi_pass php; + fastcgi_pass php72; } } diff --git a/wo/cli/templates/fastcgi.mustache b/wo/cli/templates/fastcgi.mustache index 6d4bc4b..5a97dcf 100644 --- a/wo/cli/templates/fastcgi.mustache +++ b/wo/cli/templates/fastcgi.mustache @@ -1,7 +1,9 @@ # FastCGI cache settings -fastcgi_cache_path /var/run/nginx-cache levels=1:2 keys_zone=WORDPRESS:50m inactive=60m; +fastcgi_cache_path /var/run/nginx-cache levels=1:2 keys_zone=WORDPRESS:50m inactive=60m max_size=256M; fastcgi_cache_key "$scheme$request_method$host$request_uri"; fastcgi_cache_use_stale error timeout invalid_header updating http_500 http_503; +fastcgi_cache_methods GET HEAD; +fastcgi_cache_background_update on; fastcgi_cache_valid 200 301 302 404 1h; fastcgi_buffers 16 16k; fastcgi_buffer_size 32k; diff --git a/wo/cli/templates/locations-php7.mustache b/wo/cli/templates/locations-php7.mustache index 58c0011..04bd05d 100644 --- a/wo/cli/templates/locations-php7.mustache +++ b/wo/cli/templates/locations-php7.mustache @@ -59,7 +59,7 @@ location = /nginx_status { } location ~ ^/(status|ping)$ { include fastcgi_params; - fastcgi_pass php7; + fastcgi_pass php73; include common/acl.conf; } # WordOps (wo) utilities diff --git a/wo/cli/templates/locations.mustache b/wo/cli/templates/locations.mustache index 36155bf..7d8c6bb 100644 --- a/wo/cli/templates/locations.mustache +++ b/wo/cli/templates/locations.mustache @@ -59,7 +59,7 @@ location = /nginx_status { } location ~ ^/(status|ping)$ { include fastcgi_params; - fastcgi_pass php; + fastcgi_pass php72; include common/acl.conf; } # WordOps (wo) utilities diff --git a/wo/cli/templates/map-wp.mustache b/wo/cli/templates/map-wp.mustache new file mode 100644 index 0000000..cd6b21e --- /dev/null +++ b/wo/cli/templates/map-wp.mustache @@ -0,0 +1,55 @@ +# NGINX CONFIGURATION FOR FASTCGI_CACHE EXCEPTION +# DO NOT MODIFY, ALL CHANGES WILL BE LOST AFTER AN WordOps (wo) UPDATE + +# do not cache xhtml request +map $http_x_requested_with $http_request_no_cache { + default 0; + XMLHttpRequest 1; +} + +# do not cache requests on cookies +map $http_cookie $cookie_no_cache { + default 0; + "~*wordpress_[a-f0-9]+" 1; + "~*wp-postpass" 1; + "~*wordpress_logged_in" 1; + "~*wordpress_no_cache" 1; + "~*comment_author" 1; + "~*woocommerce_items_in_cart" 1; + "~*woocommerce_cart_hash" 1; + "~*wptouch_switch_toogle" 1; + "~*comment_author_email_" 1; +} + +# do not cache the following uri +map $request_uri $uri_no_cache { + default 0; + "~*/wp-admin/" 1; + "~*/wp-[a-zA-Z0-9-]+.php" 1; + "~*/feed/" 1; + "~*/index.php" 1; + "~*/[a-z0-9_-]+-sitemap([0-9]+)?.xml" 1; + "~*/sitemap(_index)?.xml" 1; + "~*/wp-comments-popup.php" 1; + "~*/wp-links-opml.php" 1; + "~*/xmlrpc.php" 1; +} + +# do not cache requests with query strings +map $is_args $query_no_cache { + default 1; + "" 0; +} + +# if all previous check are passed, $skip_cache = 0 +map $http_request_no_cache$cookie_no_cache$uri_no_cache$query_no_cache $skip_cache { + default 1; + 0000 0; +} + +# map $skip_cache with $cache_uri for --wpsc stack +map $skip_cache $cache_uri { + default 'null cache'; + 0 $request_uri; +} + diff --git a/wo/cli/templates/php.mustache b/wo/cli/templates/php.mustache index 65f75fe..7288f48 100644 --- a/wo/cli/templates/php.mustache +++ b/wo/cli/templates/php.mustache @@ -6,5 +6,5 @@ location / { location ~ \.php$ { try_files $uri =404; include fastcgi_params; - fastcgi_pass php; + fastcgi_pass php72; } diff --git a/wo/cli/templates/php7.mustache b/wo/cli/templates/php7.mustache index 871d3c5..d0ab167 100644 --- a/wo/cli/templates/php7.mustache +++ b/wo/cli/templates/php7.mustache @@ -6,5 +6,5 @@ location / { location ~ \.php$ { try_files $uri =404; include fastcgi_params; - fastcgi_pass php7; + fastcgi_pass php73; } diff --git a/wo/cli/templates/redis-php7.mustache b/wo/cli/templates/redis-php7.mustache index 93d5943..217509d 100644 --- a/wo/cli/templates/redis-php7.mustache +++ b/wo/cli/templates/redis-php7.mustache @@ -1,21 +1,7 @@ # Redis NGINX CONFIGURATION # DO NOT MODIFY, ALL CHANGES WILL BE LOST AFTER AN WordOps (wo) UPDATE -set $skip_cache 0; -# POST requests and URL with a query string should always go to php -if ($request_method = POST) { - set $skip_cache 1; -} -if ($query_string != "") { - set $skip_cache 1; -} -# Don't cache URL containing the following segments -if ($request_uri ~* "(/wp-admin/|/xmlrpc.php|wp-.*\.php|index.php|/feed/|.*sitemap.*\.xml)") { - set $skip_cache 1; -} -# Don't use the cache for logged in users or recent commenter or customer with items in cart -if ($http_cookie ~* "comment_author|wordpress_[a-f0-9]+|wp-postpass|wordpress_no_cache|wordpress_logged_in|[a-z0-9]+_items_in_cart") { - set $skip_cache 1; -} +# $skip_cache variable set in /etc/nginx/conf.d/map-wp.conf + # Use cached or actual file if they exists, Otherwise pass request to WordPress location / { try_files $uri $uri/ /index.php$is_args$args; @@ -52,5 +38,5 @@ location ~ \.php$ { more_set_headers 'X-SRCache-Store-Status $srcache_store_status'; include fastcgi_params; - fastcgi_pass php7; + fastcgi_pass php73; } diff --git a/wo/cli/templates/redis.mustache b/wo/cli/templates/redis.mustache index e29e02f..0a7004f 100644 --- a/wo/cli/templates/redis.mustache +++ b/wo/cli/templates/redis.mustache @@ -1,21 +1,7 @@ # Redis NGINX CONFIGURATION # DO NOT MODIFY, ALL CHANGES WILL BE LOST AFTER AN WordOps (wo) UPDATE -set $skip_cache 0; -# POST requests and URL with a query string should always go to php -if ($request_method = POST) { - set $skip_cache 1; -} -if ($query_string != "") { - set $skip_cache 1; -} -# Don't cache URL containing the following segments -if ($request_uri ~* "(/wp-admin/|/xmlrpc.php|wp-.*\.php|index.php|/feed/|.*sitemap.*\.xml)") { - set $skip_cache 1; -} -# Don't use the cache for logged in users or recent commenter or customer with items in cart -if ($http_cookie ~* "comment_author|wordpress_[a-f0-9]+|wp-postpass|wordpress_no_cache|wordpress_logged_in|[a-z0-9]+_items_in_cart") { - set $skip_cache 1; -} +# $skip_cache variable set in /etc/nginx/conf.d/map-wp.conf + # Use cached or actual file if they exists, Otherwise pass request to WordPress location / { try_files $uri $uri/ /index.php$is_args$args; @@ -53,5 +39,5 @@ location ~ \.php$ { more_set_headers 'X-SRCache-Store-Status $srcache_store_status'; include fastcgi_params; - fastcgi_pass php; + fastcgi_pass php72; } diff --git a/wo/cli/templates/upstream.mustache b/wo/cli/templates/upstream.mustache index 3db3ead..89cb5b1 100644 --- a/wo/cli/templates/upstream.mustache +++ b/wo/cli/templates/upstream.mustache @@ -1,21 +1,50 @@ # Common upstream settings + +# PHP 5.6 upstream upstream php { -server 127.0.0.1:9072; +server 127.0.0.1:9000; } + upstream debug { # Debug Pool -server 127.0.0.1:9172; +server 127.0.0.1:9001; } -{{#php7conf}} + +# PHP 7.0 upstream upstream php7 { -server 127.0.0.1:9072; +server 127.0.0.1:9070; } -upstream debug7 { + +# PHP 7.2 upstream with load-balancing on two unix sockets +upstream php72 { +server unix:/var/run/php/php72-fpm.sock; +} + +# PHP 7.2 debug +upstream debug72 { # Debug Pool server 127.0.0.1:9172; } + +# PHP 7.3 upstream with load-balancing on two unix sockets +upstream php73 { +server unix:/var/run/php/php73-fpm.sock; +} + +{{#php7conf}} +# PHP 7.3 debug +upstream debug73 { +# Debug Pool +server 127.0.0.1:9173; +} {{/php7conf}} +# Netdata Monitoring Upstream +upstream netdata { + server 127.0.0.1:19999; + keepalive 64; +} + {{#hhvmconf}} upstream hhvm { # HHVM Pool diff --git a/wo/cli/templates/virtualconf-php7.mustache b/wo/cli/templates/virtualconf-php7.mustache index 13b663a..bc58b9c 100644 --- a/wo/cli/templates/virtualconf-php7.mustache +++ b/wo/cli/templates/virtualconf-php7.mustache @@ -38,10 +38,10 @@ server { } {{/static}} - {{^static}}include {{^hhvm}}{{#basic}}common/php7.conf;{{/basic}}{{#wpfc}}common/wpfc-php7.conf;{{/wpfc}} {{#wpsc}}common/wpsc-php7.conf;{{/wpsc}}{{#wpredis}}common/redis-php7.conf;{{/wpredis}} {{/hhvm}}{{#hhvm}}{{#basic}}common/php-hhvm.conf;{{/basic}}{{#wpfc}}common/wpfc-hhvm.conf;{{/wpfc}} {{#wpsc}}common/wpsc-hhvm.conf;{{/wpsc}}{{#wpredis}}common/redis-hhvm.conf;{{/wpredis}} {{/hhvm}} + {{^static}}include {{^hhvm}}{{#basic}}common/php73.conf;{{/basic}}{{#wpfc}}common/wpfc-php73.conf;{{/wpfc}} {{#wpsc}}common/wpsc-php73.conf;{{/wpsc}}{{#wpredis}}common/redis-php73.conf;{{/wpredis}} {{/hhvm}}{{#hhvm}}{{#basic}}common/php-hhvm.conf;{{/basic}}{{#wpfc}}common/wpfc-hhvm.conf;{{/wpfc}} {{#wpsc}}common/wpsc-hhvm.conf;{{/wpsc}}{{#wpredis}}common/redis-hhvm.conf;{{/wpredis}} {{/hhvm}} {{#wpsubdir}}include common/wpsubdir.conf;{{/wpsubdir}}{{/static}} - {{#wp}}include common/wpcommon-php7.conf;{{/wp}} - {{^proxy}}include common/locations-php7.conf;{{/proxy}} + {{#wp}}include common/wpcommon-php73.conf;{{/wp}} + {{^proxy}}include common/locations-php73.conf;{{/proxy}} {{^vma}}{{^rc}}include {{webroot}}/conf/nginx/*.conf;{{/rc}}{{/vma}} {{/proxy}} } diff --git a/wo/cli/templates/virtualconf.mustache b/wo/cli/templates/virtualconf.mustache index 47702e3..2fbd321 100644 --- a/wo/cli/templates/virtualconf.mustache +++ b/wo/cli/templates/virtualconf.mustache @@ -38,9 +38,9 @@ server { } {{/static}} - {{^static}}include {{^hhvm}}{{#basic}}common/php.conf;{{/basic}}{{#wpfc}}common/wpfc.conf;{{/wpfc}} {{#wpsc}}common/wpsc.conf;{{/wpsc}}{{#wpredis}}common/redis.conf;{{/wpredis}} {{/hhvm}}{{#hhvm}}{{#basic}}common/php-hhvm.conf;{{/basic}}{{#wpfc}}common/wpfc-hhvm.conf;{{/wpfc}} {{#wpsc}}common/wpsc-hhvm.conf;{{/wpsc}}{{#wpredis}}common/redis-hhvm.conf;{{/wpredis}} {{/hhvm}} {{#wpsubdir}}include common/wpsubdir.conf;{{/wpsubdir}}{{/static}} - {{#wp}}include common/wpcommon.conf;{{/wp}} - {{^proxy}}include common/locations.conf;{{/proxy}} + {{^static}}include {{^hhvm}}{{#basic}}common/php72.conf;{{/basic}}{{#wpfc}}common/wpfc-php72.conf;{{/wpfc}} {{#wpsc}}common/wpsc-php72.conf;{{/wpsc}}{{#wpredis}}common/redis-php72.conf;{{/wpredis}} {{/hhvm}}{{#hhvm}}{{#basic}}common/php-hhvm.conf;{{/basic}}{{#wpfc}}common/wpfc-hhvm.conf;{{/wpfc}} {{#wpsc}}common/wpsc-hhvm.conf;{{/wpsc}}{{#wpredis}}common/redis-hhvm.conf;{{/wpredis}} {{/hhvm}} {{#wpsubdir}}include common/wpsubdir.conf;{{/wpsubdir}}{{/static}} + {{#wp}}include common/wpcommon-php72.conf;{{/wp}} + {{^proxy}}include common/locations-php72.conf;{{/proxy}} {{^vma}}{{^rc}}include {{webroot}}/conf/nginx/*.conf;{{/rc}}{{/vma}} {{/proxy}} } diff --git a/wo/cli/templates/webp.mustache b/wo/cli/templates/webp.mustache new file mode 100644 index 0000000..db3aac4 --- /dev/null +++ b/wo/cli/templates/webp.mustache @@ -0,0 +1,7 @@ +# WEBP NGINX CONFIGURATION +# DO NOT MODIFY, ALL CHANGES WILL BE LOST AFTER AN WordOps (wo) UPDATE + +map $http_accept $webp_suffix { + default ""; + "~*webp" ".webp"; +} \ No newline at end of file diff --git a/wo/cli/templates/wpcommon-php7.mustache b/wo/cli/templates/wpcommon-php7.mustache index 1b4b0fc..e99977b 100644 --- a/wo/cli/templates/wpcommon-php7.mustache +++ b/wo/cli/templates/wpcommon-php7.mustache @@ -4,7 +4,7 @@ location = /wp-login.php { limit_req zone=one burst=1 nodelay; include fastcgi_params; - fastcgi_pass php7; + fastcgi_pass php73; } # Disable wp-config.txt location = /wp-config.txt { diff --git a/wo/cli/templates/wpcommon.mustache b/wo/cli/templates/wpcommon.mustache index 1444c22..89f0e92 100644 --- a/wo/cli/templates/wpcommon.mustache +++ b/wo/cli/templates/wpcommon.mustache @@ -4,7 +4,7 @@ location = /wp-login.php { limit_req zone=one burst=1 nodelay; include fastcgi_params; - fastcgi_pass php; + fastcgi_pass php72; } # Disable wp-config.txt location = /wp-config.txt { @@ -25,7 +25,7 @@ location /wp-content/uploads { try_files $uri$webp_suffix $uri =404; } location ~ \.php$ { -#Prevent Direct Access Of PHP Files From Web Browsers + #Prevent Direct Access Of PHP Files From Web Browsers deny all; } } diff --git a/wo/cli/templates/wpfc-hhvm.mustache b/wo/cli/templates/wpfc-hhvm.mustache index 6326d5d..d0b3f92 100644 --- a/wo/cli/templates/wpfc-hhvm.mustache +++ b/wo/cli/templates/wpfc-hhvm.mustache @@ -1,21 +1,7 @@ # WPFC NGINX CONFIGURATION # DO NOT MODIFY, ALL CHANGES WILL BE LOST AFTER AN WordOps (wo) UPDATE -set $skip_cache 0; -# POST requests and URL with a query string should always go to php -if ($request_method = POST) { - set $skip_cache 1; -} -if ($query_string != "") { - set $skip_cache 1; -} -# Don't cache URL containing the following segments -if ($request_uri ~* "(/wp-admin/|/xmlrpc.php|wp-.*\.php|index.php|/feed/|.*sitemap.*\.xml)") { - set $skip_cache 1; -} -# Don't use the cache for logged in users or recent commenter or customer with items in cart -if ($http_cookie ~* "comment_author|wordpress_[a-f0-9]+|wp-postpass|wordpress_no_cache|wordpress_logged_in|[a-z0-9]+_items_in_cart") { - set $skip_cache 1; -} +# $skip_cache variable set in /etc/nginx/conf.d/map-wp.conf + # Use cached or actual file if they exists, Otherwise pass request to WordPress location / { try_files $uri $uri/ /index.php$is_args$args; diff --git a/wo/cli/templates/wpfc-php7.mustache b/wo/cli/templates/wpfc-php7.mustache index b62d088..aa7f087 100644 --- a/wo/cli/templates/wpfc-php7.mustache +++ b/wo/cli/templates/wpfc-php7.mustache @@ -1,32 +1,16 @@ # WPFC NGINX CONFIGURATION # DO NOT MODIFY, ALL CHANGES WILL BE LOST AFTER AN WordOps (wo) UPDATE -set $skip_cache 0; -# POST requests and URL with a query string should always go to php -if ($request_method = POST) { - set $skip_cache 1; -} -if ($query_string != "") { - set $skip_cache 1; -} -# Don't cache URL containing the following segments -if ($request_uri ~* "(/wp-admin/|/xmlrpc.php|wp-.*\.php|index.php|/feed/|.*sitemap.*\.xml)") { - set $skip_cache 1; -} -# Don't use the cache for logged in users or recent commenter or customer with items in cart -if ($http_cookie ~* "comment_author|wordpress_[a-f0-9]+|wp-postpass|wordpress_no_cache|wordpress_logged_in|[a-z0-9]+_items_in_cart") { - set $skip_cache 1; -} +# $skip_cache variable set in /etc/nginx/conf.d/map-wp.conf + +add_header X-fastcgi-cache $upstream_cache_status; # Use cached or actual file if they exists, Otherwise pass request to WordPress location / { try_files $uri $uri/ /index.php$is_args$args; } -location ~ ^/wp-content/cache/minify/(.+\.(css|js))$ { - try_files $uri /wp-content/plugins/w3-total-cache/pub/minify.php?file=$1; -} location ~ \.php$ { try_files $uri =404; include fastcgi_params; - fastcgi_pass php7; + fastcgi_pass php73; fastcgi_cache_bypass $skip_cache; fastcgi_no_cache $skip_cache; fastcgi_cache WORDPRESS; diff --git a/wo/cli/templates/wpfc.mustache b/wo/cli/templates/wpfc.mustache index ec03b0c..12258d8 100644 --- a/wo/cli/templates/wpfc.mustache +++ b/wo/cli/templates/wpfc.mustache @@ -1,32 +1,16 @@ # WPFC NGINX CONFIGURATION # DO NOT MODIFY, ALL CHANGES WILL BE LOST AFTER AN WordOps (wo) UPDATE -set $skip_cache 0; -# POST requests and URL with a query string should always go to php -if ($request_method = POST) { - set $skip_cache 1; -} -if ($query_string != "") { - set $skip_cache 1; -} -# Don't cache URL containing the following segments -if ($request_uri ~* "(/wp-admin/|/xmlrpc.php|wp-.*\.php|index.php|/feed/|.*sitemap.*\.xml)") { - set $skip_cache 1; -} -# Don't use the cache for logged in users or recent commenter or customer with items in cart -if ($http_cookie ~* "comment_author|wordpress_[a-f0-9]+|wp-postpass|wordpress_no_cache|wordpress_logged_in|[a-z0-9]+_items_in_cart") { - set $skip_cache 1; -} +# $skip_cache variable set in /etc/nginx/conf.d/map-wp.conf + +add_header X-fastcgi-cache $upstream_cache_status; # Use cached or actual file if they exists, Otherwise pass request to WordPress location / { try_files $uri $uri/ /index.php$is_args$args; } -location ~ ^/wp-content/cache/minify/(.+\.(css|js))$ { - try_files $uri /wp-content/plugins/w3-total-cache/pub/minify.php?file=$1; -} location ~ \.php$ { try_files $uri =404; include fastcgi_params; - fastcgi_pass php; + fastcgi_pass php72; fastcgi_cache_bypass $skip_cache; fastcgi_no_cache $skip_cache; fastcgi_cache WORDPRESS; diff --git a/wo/cli/templates/wpsc-hhvm.mustache b/wo/cli/templates/wpsc-hhvm.mustache index 8006d52..4040a4c 100644 --- a/wo/cli/templates/wpsc-hhvm.mustache +++ b/wo/cli/templates/wpsc-hhvm.mustache @@ -1,21 +1,7 @@ # WPSC NGINX CONFIGURATION # DO NOT MODIFY, ALL CHANGES WILL BE LOST AFTER AN WordOps (wo) UPDATE -set $cache_uri $request_uri; -# POST requests and URL with a query string should always go to php -if ($request_method = POST) { - set $cache_uri 'null cache'; -} -if ($query_string != "") { - set $cache_uri 'null cache'; -} -# Don't cache URL containing the following segments -if ($request_uri ~* "(/wp-admin/|/xmlrpc.php|wp-.*\.php|index.php|/feed/|.*sitemap.*\.xml)") { - set $cache_uri 'null cache'; -} -# Don't use the cache for logged in users or recent commenter or customer with items in cart -if ($http_cookie ~* "comment_author|wordpress_[a-f0-9]+|wp-postpass|wordpress_no_cache|wordpress_logged_in|[a-z0-9]+_items_in_cart") { - set $cache_uri 'null cache'; -} +# $skip_cache variable set in /etc/nginx/conf.d/map-wp.conf + # Use cached or actual file if they exists, Otherwise pass request to WordPress location / { # If we add index.php?$args its break WooCommerce like plugins diff --git a/wo/cli/templates/wpsc-php7.mustache b/wo/cli/templates/wpsc-php7.mustache index 7cca3f8..9c5267e 100644 --- a/wo/cli/templates/wpsc-php7.mustache +++ b/wo/cli/templates/wpsc-php7.mustache @@ -1,21 +1,7 @@ # WPSC NGINX CONFIGURATION # DO NOT MODIFY, ALL CHANGES WILL BE LOST AFTER AN WordOps (wo) UPDATE -set $cache_uri $request_uri; -# POST requests and URL with a query string should always go to php -if ($request_method = POST) { - set $cache_uri 'null cache'; -} -if ($query_string != "") { - set $cache_uri 'null cache'; -} -# Don't cache URL containing the following segments -if ($request_uri ~* "(/wp-admin/|/xmlrpc.php|wp-.*\.php|index.php|/feed/|.*sitemap.*\.xml)") { - set $cache_uri 'null cache'; -} -# Don't use the cache for logged in users or recent commenter or customer with items in cart -if ($http_cookie ~* "comment_author|wordpress_[a-f0-9]+|wp-postpass|wordpress_no_cache|wordpress_logged_in|[a-z0-9]+_items_in_cart") { - set $cache_uri 'null cache'; -} +# $cache_uri variable set in /etc/nginx/conf.d/map-wp.conf + # Use cached or actual file if they exists, Otherwise pass request to WordPress location / { # If we add index.php?$args its break WooCommerce like plugins @@ -25,7 +11,7 @@ location / { location ~ \.php$ { try_files $uri =404; include fastcgi_params; - fastcgi_pass php7; + fastcgi_pass php73; # Following line is needed by WP Super Cache plugin fastcgi_param SERVER_NAME $http_host; } diff --git a/wo/cli/templates/wpsc.mustache b/wo/cli/templates/wpsc.mustache index e5b1648..d1f795c 100644 --- a/wo/cli/templates/wpsc.mustache +++ b/wo/cli/templates/wpsc.mustache @@ -1,21 +1,7 @@ # WPSC NGINX CONFIGURATION # DO NOT MODIFY, ALL CHANGES WILL BE LOST AFTER AN WordOps (wo) UPDATE -set $cache_uri $request_uri; -# POST requests and URL with a query string should always go to php -if ($request_method = POST) { - set $cache_uri 'null cache'; -} -if ($query_string != "") { - set $cache_uri 'null cache'; -} -# Don't cache URL containing the following segments -if ($request_uri ~* "(/wp-admin/|/xmlrpc.php|wp-.*\.php|index.php|/feed/|.*sitemap.*\.xml)") { - set $cache_uri 'null cache'; -} -# Don't use the cache for logged in users or recent commenter or customer with items in cart -if ($http_cookie ~* "comment_author|wordpress_[a-f0-9]+|wp-postpass|wordpress_no_cache|wordpress_logged_in|[a-z0-9]+_items_in_cart") { - set $cache_uri 'null cache'; -} +# $cache_uri variable set in /etc/nginx/conf.d/map-wp.conf + # Use cached or actual file if they exists, Otherwise pass request to WordPress location / { # If we add index.php?$args its break WooCommerce like plugins @@ -25,7 +11,7 @@ location / { location ~ \.php$ { try_files $uri =404; include fastcgi_params; - fastcgi_pass php; + fastcgi_pass php72; # Following line is needed by WP Super Cache plugin fastcgi_param SERVER_NAME $http_host; } diff --git a/wo/core/services.py b/wo/core/services.py index ad5d8b8..c028880 100644 --- a/wo/core/services.py +++ b/wo/core/services.py @@ -100,8 +100,8 @@ class WOService(): Log.info(self, "Reload : {0:10}".format(service_name), end='') retcode = subprocess.getstatusoutput(service_cmd) if retcode[0] == 0: - Log.info(self, "[" + Log.ENDC + "OK" + Log.OKBLUE + "]") - return True + Log.info(self, "[" + Log.ENDC + "OK" + Log.OKBLUE + "]") + return True else: Log.debug(self, "{0}".format(retcode[1])) Log.info(self, "[" + Log.FAIL + "Failed" + Log.OKBLUE+"]") @@ -113,11 +113,10 @@ class WOService(): def get_service_status(self, service_name): - try: is_exist = subprocess.getstatusoutput('which {0}' .format(service_name)) - if is_exist[0] == 0 or service_name in ['php7.0-fpm', 'php5.6-fpm']: + if is_exist[0] == 0 or service_name in ['php7.2-fpm', 'php7.3-fpm']: retcode = subprocess.getstatusoutput('service {0} status' .format(service_name)) if retcode[0] == 0: diff --git a/wo/core/variables.py b/wo/core/variables.py index 46c55ab..cc70bf7 100644 --- a/wo/core/variables.py +++ b/wo/core/variables.py @@ -18,9 +18,9 @@ class WOVariables(): wo_adminer = "4.7.1" # Get WPCLI path - wo_wpcli_path = os.popen('which wp | tr "\n" " "').read() + wo_wpcli_path = os.popen('command -v wp | tr "\n" " "').read() if wo_wpcli_path == '': - wo_wpcli_path = '/usr/bin/wp ' + wo_wpcli_path = '/usr/local/bin/wp ' # Current date and time of System wo_date = datetime.datetime.now().strftime('%d%b%Y%H%M%S') @@ -89,7 +89,7 @@ class WOVariables(): "/rtCamp:/EasyEngine/xUbuntu_16.04/ /") elif wo_platform_codename == 'bionic': wo_nginx_repo = ("deb http://download.opensuse.org/repositories/home:" - "/rtCamp:/EasyEngine/xUbuntu_18.04/ /") + "/rtCamp:/EasyEngine/xUbuntu_18.04/ /") elif wo_platform_codename == 'jessie': wo_nginx_repo = ("deb http://download.opensuse.org/repositories/home:" "/rtCamp:/EasyEngine/Debian_8.0/ /") @@ -102,42 +102,46 @@ class WOVariables(): # PHP repo and packages if wo_platform_distro == 'ubuntu': - if (wo_platform_codename == 'trusty' or wo_platform_codename == 'xenial' or wo_platform_codename == 'bionic'): - wo_php_repo = "ppa:ondrej/php" - wo_php = ["php7.2-fpm", "php7.2-curl", "php7.2-gd", "php7.2-imap", - "php7.2-readline", "php7.2-common", "php7.2-recode", - "php7.2-cli", "php7.2-mbstring", - "php7.2-bcmath", "php7.2-mysql", "php7.2-opcache", "php7.2-zip", "php7.2-xml", "php7.2-soap"] - wo_php72 = ["php7.2-fpm", "php7.2-curl", "php7.2-gd", "php7.2-imap", - "php7.2-readline", "php7.2-common", "php7.2-recode", - "php7.2-cli", "php7.2-mbstring", - "php7.2-bcmath", "php7.2-mysql", "php7.2-opcache", "php7.2-zip", "php7.2-xml", "php7.2-soap"] - wo_php_extra = ["php-memcached", "php-imagick", "memcached", - "graphviz", "php-pear", "php-xdebug", "php-msgpack", "php-redis"] - elif wo_platform_distro == 'debian': - wo_php_repo = ("deb https://packages.sury.org/php/ {codename} main".format(codename=wo_platform_codename)) + wo_php_repo = "ppa:ondrej/php" wo_php = ["php7.2-fpm", "php7.2-curl", "php7.2-gd", "php7.2-imap", - "php-sodium", "php7.2-common", "php7.2-readline", "php7.2-redis", - "php7.2-mysql", "php7.2-cli", "php7.2-memcache", "php7.2-imagick", - "php7.2-mbstring", "php7.2-recode", "php7.2-bcmath", "php7.2-opcache", "php7.2-zip", "php7.2-xml", - "php7.2-soap", "php7.2-msgpack", - "memcached", "graphviz", "php-pear", "php7.2-xdebug"] - wo_php72 = ["php7.2-fpm", "php7.2-curl", "php7.2-gd", "php7.2-imap", - "php-sodium", "php7.2-common", "php7.2-readline", "php7.2-redis", - "php7.2-mysql", "php7.2-cli", "php7.2-memcache", "php7.2-imagick", - "php7.2-mbstring", "php7.2-recode", "php7.2-bcmath", "php7.2-opcache", "php7.2-zip", "php7.2-xml", - "php7.2-soap", "php7.2-msgpack", - "memcached", "graphviz", "php-pear", "php7.2-xdebug"] + "php7.2-readline", "php7.2-common", "php7.2-recode", + "php7.2-cli", "php7.2-mbstring", + "php7.2-bcmath", "php7.2-mysql", "php7.2-opcache", + "php7.2-zip", "php7.2-xml", "php7.2-soap"] + wo_php73 = ["php7.3-fpm", "php7.3-curl", "php7.3-gd", "php7.3-imap", + "php7.3-readline", "php7.3-common", "php7.3-recode", + "php7.3-cli", "php7.3-mbstring", + "php7.3-bcmath", "php7.3-mysql", "php7.3-opcache", + "php7.3-zip", "php7.3-xml", "php7.3-soap"] + wo_php_extra = ["php-memcached", "php-imagick", "memcached", + "graphviz", "php-xdebug", "php-msgpack", "php-redis"] + elif wo_platform_distro == 'debian': + wo_php_repo = ( + "deb https://packages.sury.org/php/ {codename} main".format(codename=wo_platform_codename)) + wo_php = ["php7.2-fpm", "php7.2-curl", "php7.2-gd", "php7.2-imap", + "php7.2-common", "php7.2-readline", "php-redis", + "php7.2-mysql", "php7.2-cli", "php-imagick", + "php7.2-mbstring", "php7.2-recode", "php7.2-bcmath", + "php7.2-opcache", "php7.2-zip", "php7.2-xml", + "php7.2-soap", "php-msgpack", + "graphviz", "php-pear", "php-xdebug"] + wo_php73 = ["php7.3-fpm", "php7.3-curl", "php7.3-gd", "php7.3-imap", + "php7.3-common", "php7.3-readline", "php-redis", + "php7.3-mysql", "php7.3-cli", "php-imagick", + "php7.3-mbstring", "php7.3-recode", "php7.3-bcmath", + "php7.3-opcache", "php7.3-zip", "php7.3-xml", + "php7.3-soap", "php-msgpack", + "graphviz", "php-pear", "php-xdebug"] wo_php_extra = [] # MySQL repo and packages if wo_platform_distro == 'ubuntu': wo_mysql_repo = ("deb [arch=amd64,i386,ppc64el] http://sfo1.mirrors.digitalocean.com/mariadb/repo/" - "10.1/ubuntu {codename} main" + "10.3/ubuntu {codename} main" .format(codename=wo_platform_codename)) elif wo_platform_distro == 'debian': wo_mysql_repo = ("deb [arch=amd64,i386,ppc64el] http://sfo1.mirrors.digitalocean.com/mariadb/repo/" - "10.1/debian {codename} main" + "10.3/debian {codename} main" .format(codename=wo_platform_codename)) wo_mysql = ["mariadb-server", "percona-toolkit"] @@ -146,7 +150,7 @@ class WOVariables(): if wo_platform_distro == 'ubuntu': if wo_platform_codename == "trusty" or wo_platform_codename == "xenial" or wo_platform_codename == "bionic": wo_hhvm_repo = ("deb http://dl.hhvm.com/ubuntu {codename} main" - .format(codename=wo_platform_codename)) + .format(codename=wo_platform_codename)) else: wo_hhvm_repo = ("deb http://dl.hhvm.com/debian {codename} main" .format(codename=wo_platform_codename)) @@ -159,10 +163,9 @@ class WOVariables(): else: wo_redis_repo = ("deb https://packages.sury.org/php/ {codename} all" - .format(codename=wo_platform_codename)) + .format(codename=wo_platform_codename)) - if (wo_platform_codename == 'trusty' or wo_platform_codename == 'xenial' or wo_platform_codename == 'bionic' or wo_platform_distro == 'debian'): - wo_redis = ['redis-server', 'php-redis'] + wo_redis = ['redis-server', 'php-redis'] # Repo path wo_repo_file = "wo-repo.list"