From eb6f183f0565936c65b4f9e9ec85baa1108daaf2 Mon Sep 17 00:00:00 2001 From: VirtuBox Date: Mon, 25 Feb 2019 07:47:36 +0100 Subject: [PATCH 1/5] update nginx php query parameter handling * replace /index.php?$args with /index.php$is_args$args according to WP 5.0 rest api faq --- wo/cli/templates/22222.mustache | 2 +- wo/cli/templates/locations-php7.mustache | 2 +- wo/cli/templates/locations.mustache | 2 +- wo/cli/templates/php-hhvm.mustache | 2 +- wo/cli/templates/php.mustache | 2 +- wo/cli/templates/php7.mustache | 2 +- wo/cli/templates/redis-hhvm.mustache | 2 +- wo/cli/templates/redis-php7.mustache | 2 +- wo/cli/templates/redis.mustache | 2 +- wo/cli/templates/wpfc-hhvm.mustache | 2 +- wo/cli/templates/wpfc-php7.mustache | 2 +- wo/cli/templates/wpfc.mustache | 2 +- 12 files changed, 12 insertions(+), 12 deletions(-) diff --git a/wo/cli/templates/22222.mustache b/wo/cli/templates/22222.mustache index ecd934b..346c164 100644 --- a/wo/cli/templates/22222.mustache +++ b/wo/cli/templates/22222.mustache @@ -23,7 +23,7 @@ server { include common/acl.conf; location / { - try_files $uri $uri/ /index.php?$args; + try_files $uri $uri/ /index.php$is_args$args; } # Display menu at location /fpm/status/ diff --git a/wo/cli/templates/locations-php7.mustache b/wo/cli/templates/locations-php7.mustache index ec75110..58c0011 100644 --- a/wo/cli/templates/locations-php7.mustache +++ b/wo/cli/templates/locations-php7.mustache @@ -9,7 +9,7 @@ location = /favicon.ico { location = /robots.txt { # Some WordPress plugin gererate robots.txt file # Refer #340 issue - try_files $uri $uri/ /index.php?$args @robots; + try_files $uri $uri/ /index.php$is_args$args @robots; access_log off; log_not_found off; } diff --git a/wo/cli/templates/locations.mustache b/wo/cli/templates/locations.mustache index 38e20dd..36155bf 100644 --- a/wo/cli/templates/locations.mustache +++ b/wo/cli/templates/locations.mustache @@ -9,7 +9,7 @@ location = /favicon.ico { location = /robots.txt { # Some WordPress plugin gererate robots.txt file # Refer #340 issue - try_files $uri $uri/ /index.php?$args @robots; + try_files $uri $uri/ /index.php$is_args$args @robots; access_log off; log_not_found off; } diff --git a/wo/cli/templates/php-hhvm.mustache b/wo/cli/templates/php-hhvm.mustache index 3c7a7bb..ac76401 100644 --- a/wo/cli/templates/php-hhvm.mustache +++ b/wo/cli/templates/php-hhvm.mustache @@ -1,7 +1,7 @@ # PHP NGINX CONFIGURATION # DO NOT MODIFY, ALL CHANGES WILL BE LOST AFTER AN WordOps (wo) UPDATE location / { - try_files $uri $uri/ /index.php?$args; + try_files $uri $uri/ /index.php$is_args$args; } location ~ \.php$ { try_files $uri =404; diff --git a/wo/cli/templates/php.mustache b/wo/cli/templates/php.mustache index de0f096..65f75fe 100644 --- a/wo/cli/templates/php.mustache +++ b/wo/cli/templates/php.mustache @@ -1,7 +1,7 @@ # PHP NGINX CONFIGURATION # DO NOT MODIFY, ALL CHANGES WILL BE LOST AFTER AN WordOps (wo) UPDATE location / { - try_files $uri $uri/ /index.php?$args; + try_files $uri $uri/ /index.php$is_args$args; } location ~ \.php$ { try_files $uri =404; diff --git a/wo/cli/templates/php7.mustache b/wo/cli/templates/php7.mustache index d9f9d9a..871d3c5 100644 --- a/wo/cli/templates/php7.mustache +++ b/wo/cli/templates/php7.mustache @@ -1,7 +1,7 @@ # PHP NGINX CONFIGURATION # DO NOT MODIFY, ALL CHANGES WILL BE LOST AFTER AN WordOps (wo) UPDATE location / { - try_files $uri $uri/ /index.php?$args; + try_files $uri $uri/ /index.php$is_args$args; } location ~ \.php$ { try_files $uri =404; diff --git a/wo/cli/templates/redis-hhvm.mustache b/wo/cli/templates/redis-hhvm.mustache index 8ebeaf8..764ef09 100644 --- a/wo/cli/templates/redis-hhvm.mustache +++ b/wo/cli/templates/redis-hhvm.mustache @@ -18,7 +18,7 @@ if ($http_cookie ~* "comment_author|wordpress_[a-f0-9]+|wp-postpass|wordpress_no } # Use cached or actual file if they exists, Otherwise pass request to WordPress location / { - try_files $uri $uri/ /index.php?$args; + try_files $uri $uri/ /index.php$is_args$args; } location /redis-fetch { diff --git a/wo/cli/templates/redis-php7.mustache b/wo/cli/templates/redis-php7.mustache index 9134b84..93d5943 100644 --- a/wo/cli/templates/redis-php7.mustache +++ b/wo/cli/templates/redis-php7.mustache @@ -18,7 +18,7 @@ if ($http_cookie ~* "comment_author|wordpress_[a-f0-9]+|wp-postpass|wordpress_no } # Use cached or actual file if they exists, Otherwise pass request to WordPress location / { - try_files $uri $uri/ /index.php?$args; + try_files $uri $uri/ /index.php$is_args$args; } location /redis-fetch { diff --git a/wo/cli/templates/redis.mustache b/wo/cli/templates/redis.mustache index 8335ea8..e29e02f 100644 --- a/wo/cli/templates/redis.mustache +++ b/wo/cli/templates/redis.mustache @@ -18,7 +18,7 @@ if ($http_cookie ~* "comment_author|wordpress_[a-f0-9]+|wp-postpass|wordpress_no } # Use cached or actual file if they exists, Otherwise pass request to WordPress location / { - try_files $uri $uri/ /index.php?$args; + try_files $uri $uri/ /index.php$is_args$args; } location /redis-fetch { diff --git a/wo/cli/templates/wpfc-hhvm.mustache b/wo/cli/templates/wpfc-hhvm.mustache index 424e95b..6326d5d 100644 --- a/wo/cli/templates/wpfc-hhvm.mustache +++ b/wo/cli/templates/wpfc-hhvm.mustache @@ -18,7 +18,7 @@ if ($http_cookie ~* "comment_author|wordpress_[a-f0-9]+|wp-postpass|wordpress_no } # Use cached or actual file if they exists, Otherwise pass request to WordPress location / { - try_files $uri $uri/ /index.php?$args; + 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; diff --git a/wo/cli/templates/wpfc-php7.mustache b/wo/cli/templates/wpfc-php7.mustache index 108a3e8..b62d088 100644 --- a/wo/cli/templates/wpfc-php7.mustache +++ b/wo/cli/templates/wpfc-php7.mustache @@ -18,7 +18,7 @@ if ($http_cookie ~* "comment_author|wordpress_[a-f0-9]+|wp-postpass|wordpress_no } # Use cached or actual file if they exists, Otherwise pass request to WordPress location / { - try_files $uri $uri/ /index.php?$args; + 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; diff --git a/wo/cli/templates/wpfc.mustache b/wo/cli/templates/wpfc.mustache index 6406b71..ec03b0c 100644 --- a/wo/cli/templates/wpfc.mustache +++ b/wo/cli/templates/wpfc.mustache @@ -18,7 +18,7 @@ if ($http_cookie ~* "comment_author|wordpress_[a-f0-9]+|wp-postpass|wordpress_no } # Use cached or actual file if they exists, Otherwise pass request to WordPress location / { - try_files $uri $uri/ /index.php?$args; + 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; From cbd902e7806d63ec1e9952911a4b2611659fe414 Mon Sep 17 00:00:00 2001 From: VirtuBox Date: Mon, 25 Feb 2019 12:27:23 +0100 Subject: [PATCH 2/5] Improve install * Add script description with release and last update * improve code quality by using shellscript standards --- install | 84 +++++++++++++++++++++++++++++++-------------------------- 1 file changed, 46 insertions(+), 38 deletions(-) diff --git a/install b/install index c44bb2c..4027d1d 100644 --- a/install +++ b/install @@ -1,13 +1,20 @@ #!/bin/bash -######################################### -### WordOps install and update script ### -######################################### -### CONTENTS -### --- -### 1. VARIABLES AND DECLARATIONS -### 2. PREPARE FOR INSTALLATION -### 3. INSTALLATION -### 4. +# ------------------------------------------------------------------------- +# WordOps install and update script +# ------------------------------------------------------------------------- +# Website: https://wordops.org +# GitHub: https://github.com/WordOps/WordOps +# Copyright (c) 2019 - WordOps +# This script is licensed under M.I.T +# ------------------------------------------------------------------------- +# Version 3.9.1 - 2019-02-25 +# ------------------------------------------------------------------------- +# CONTENTS +# --- +# 1. VARIABLES AND DECLARATIONS +# 2. PREPARE FOR INSTALLATION +# 3. INSTALLATION +# 4. ### # 1 - Set the CLI output colors @@ -42,7 +49,7 @@ fi ### function wo_lib_error() { - echo "[ `date` ] $(tput setaf 1)$@$(tput sgr0)" + echo "[ $(date) ] $(tput setaf 1)$@$(tput sgr0)" exit $2 } @@ -153,7 +160,7 @@ function wo_install_dep() apt-get -y install 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_lib_error "Not all PHP packages could be installed." 1 systemctl php7.2-fpm restart &>> /dev/null fi - + ### # Webp mapping ### @@ -211,7 +218,7 @@ function wo_sync_db() php_version VARCHAR );" | sqlite3 /var/lib/wo/dbase.db - if [ -f /var/lib/wo/dbase-ee.db]; then + if [ -f /var/lib/wo/dbase-ee.db ]; then # Copy the main EasyEngine database over since we are migrating cp /var/lib/wo/dbase-ee.db /var/lib/wo/dbase.db fi @@ -297,12 +304,14 @@ function wo_sync_db() wo_lib_echo "Replace the PHP ports for PHP 7.2" # Copy the previous upstream.conf cp /etc/nginx/conf.d/upstream.conf /etc/nginx/conf.d/upstream.bak + { # Replace the ports for PHP 7.2 - sed -i 's/9000/9072/g' /etc/nginx/conf.d/upstream.conf &>> /dev/null - sed -i 's/9070/9072/g' /etc/nginx/conf.d/upstream.conf &>> /dev/null + sed -i 's/9000/9072/g' /etc/nginx/conf.d/upstream.conf + sed -i 's/9070/9072/g' /etc/nginx/conf.d/upstream.conf # Replace the ports for debug PHP 7.2 - sed -i 's/9001/9172/g' /etc/nginx/conf.d/upstream.conf &>> /dev/null - sed -i 's/9170/9172/g' /etc/nginx/conf.d/upstream.conf &>> /dev/null + sed -i 's/9001/9172/g' /etc/nginx/conf.d/upstream.conf + sed -i 's/9170/9172/g' /etc/nginx/conf.d/upstream.conf + } > /dev/null 2>&1 fi echo "UPDATE sites SET php_version = REPLACE(php_version, '5.6', '7.2');" | sqlite3 /var/lib/wo/dbase.db @@ -346,16 +355,16 @@ function secure_wo_db() function wo_update_wp_cli() { wo_lib_echo "Updating WP-CLI version to resolve compatibility issue." - PHP_PATH=$(which php) - WP_CLI_PATH=$(which wp) - if [ "${WP_CLI_PATH}" != "" ]; then + PHP_PATH=$(command -v php) + WP_CLI_PATH=$(command -v wp) + if [ -z "$WP_CLI_PATH" ]; then # Obtain the current WP-CLI version - WP_CLI_VERSION=$(${PHP_PATH} ${WP_CLI_PATH} --allow-root cli version | awk '{ print $2 }') - dpkg --compare-versions ${WP_CLI_VERSION} lt 1.4.1 + WP_CLI_VERSION=$($PHP_PATH $WP_CLI_PATH --allow-root cli version | awk '{ print $2 }') + dpkg --compare-versions "$WP_CLI_VERSION" lt 1.4.1 # Update WP-CLI to the most recent version if [ "$?" == "0" ]; then - wget -qO ${WP_CLI_PATH} https://raw.githubusercontent.com/WordOps/wpcli-builds/gh-pages/phar/wp-cli.phar - chmod +x ${WP_CLI_PATH} + wget -qO "$WP_CLI_PATH" https://raw.githubusercontent.com/WordOps/wpcli-builds/gh-pages/phar/wp-cli.phar + chmod +x "$WP_CLI_PATH" fi fi } @@ -371,10 +380,10 @@ function wo_install() wo_branch=master fi - git clone -b $wo_branch https://github.com/WordOps/WordOps.git /tmp/wordops --quiet > /dev/null \ + 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 + 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 " $? } @@ -384,7 +393,7 @@ function wo_update_latest() if [ -f /etc/nginx/fastcgi_params ] then - cat /etc/nginx/fastcgi_params| grep -q 'HTTP_PROXY' + grep -q 'HTTP_PROXY' /etc/nginx/fastcgi_params if [[ $? -ne 0 ]]; then echo "fastcgi_param HTTP_PROXY \"\";" >> /etc/nginx/fastcgi_params echo "fastcgi_param HTTP_PROXY \"\";" >> /etc/nginx/fastcgi.conf @@ -641,32 +650,31 @@ function wo_update_latest() function wo_git_init() { # Nginx under git version control - if [ -d /etc/nginx ];then - cd /etc/nginx + [ -d /etc/nginx ] && { + cd /etc/nginx || exit 1 if [ ! -d /etc/nginx/.git ]; then git init &>> /dev/null fi git add -A . git commit -am "Updated Nginx" > /dev/null - fi + } # WordOps under git version control - cd /etc/wo - if [ ! -d /etc/wo/.git ]; then + cd /etc/wo || exit 1 + [ ! -d /etc/wo/.git ] && { git init > /dev/null - fi + } git add -A . git commit -am "Installed/Updated to WordOps" &>> /dev/null #PHP under git version control - if [ -d /etc/php ];then - cd /etc/php + [ -d /etc/php ] && { + cd /etc/php || exit 1 if [ ! -d /etc/php/.git ]; then - git init &>> /dev/null + git init fi git add -A . - git commit -am "Updated PHP" > /dev/null - fi - + git commit -am "Updated PHP" + }> /dev/null } if [ ! -f /usr/local/bin/wo ]; then From c978448ab8c888d2333147282fb6bf9accfcaf74 Mon Sep 17 00:00:00 2001 From: VirtuBox Date: Sat, 2 Mar 2019 20:12:06 +0100 Subject: [PATCH 3/5] Fix wo update & cleanup info * update README.md * cleanup changelog.md * fix wo update command url * remove php-sodium (php7.0 & php7.1 only) * remove php-memcache --- CHANGELOG.md | 45 ++++++++++++++----- README.md | 96 +++++++++++++++++++++++++++------------- install | 57 +++++++++++++----------- wo/cli/plugins/update.py | 2 +- 4 files changed, 133 insertions(+), 67 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index d3653b8..152af56 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,13 +1,36 @@ -### v3.9.0 - November 30, 2018 +# Changelog -**Initial release** +All notable changes to this project will be documented in this file. -[+] Rebranded the fork to WordOps -[+] Codebase cleanup -[+] Set PHP 7.2 as the default -[+] Included support for newer OS releases -[+] Reworked the HTTPS configuration -[+] Added more automated testing with Redis -[=] Replaced Postfix with smtp-cli -[-] Dropped mail services -[-] Dropped w3tc support \ No newline at end of file +The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), + +### v3.X.X - [Unreleased] + +#### Changed + +- Updating nginx fastcgi_cache template +- Updating Nginx configuration for WordPress 5.0 +- remove --experimental args + +#### Added + +- Add webp image support with nginx mapping +- Add PHP 7.3 support + +#### Fixed + +- Nginx variable $webp_suffix on fresh install + +### v3.9.2 - November 30, 2018 + +#### Changed + +- Rebranded the fork to WordOps +- Codebase cleanup +- Set PHP 7.2 as the default +- Included support for newer OS releases +- Reworked the HTTPS configuration +- Added more automated testing with Redis +- Replaced Postfix with smtp-cli +- Dropped mail services +- Dropped w3tc support \ No newline at end of file diff --git a/README.md b/README.md index 5f72825..8e916b0 100644 --- a/README.md +++ b/README.md @@ -1,46 +1,68 @@ -# [WordOps](https://wordops.org/) +

+ WordOps +
+

-[![Travis Build Status](https://travis-ci.org/WordOps/WordOps.svg?branch=master)](https://travis-ci.org/WordOps/WordOps) +

An essential toolset that eases WordPress site and server administration

-WordOps (wo) is the essential toolset that eases WordPress site and server administration. +

+build +MIT +Commits -**WordOps currently supports:** +

-- Ubuntu 14.04, 16.04 & 18.04 -- Debian 7, 8 & 9 -**Port requirements:** -| Name | Port Number | Inbound | Outbound | -|:-----:|:-----------:|:-------:|:---------:| -|SSH |22 | ✓ |✓ | -|HTTP |80 | ✓ |✓ | -|HTTPS/SSL |443 | ✓ |✓ | -|WO Admin |22222 | ✓ | | -|GPG Key Server |11371 | |✓ | +

+ Key Features • + Requirements • + Getting Started • + Usage • + Cheatsheet • + Credits • + License +

-## Quick start +--- + +## Key Features + +- Easy Migration from EasyEngine v3 +- Automated WordPress, Nginx, PHP, MySQL & Redis installation +- Optimized Nginx configuration with multiple cache backends support +- Let's Encrypt SSL certificates + +## Requirements + +### Operating System + +- Ubuntu : 16.04 LTS (Xenial) - 18.04 LTS (Bionic) +- Debian : 8 (Jessie) - 9 (Stretch) + +### Ports requirements + +- SSH (22 or custom) +- HTTP & HTTPS (80 & 443) +- WO Admin (22222) +- GPG key Server (11371 outbound) + +## Getting Started ```bash wget -qO wo wordops.se/tup && sudo bash wo # Install WordOps sudo wo site create example.com --wp # Install required packages & setup WordPress on example.com ``` -## Must read! + +## Must read WordOps made some fundamental changes: -* We've deprecated the mail stack. Less is more. As an alternative, take a look at [iRedMail](https://www.iredmail.org/) or [Caesonia](https://github.com/vedetta-com/caesonia). And an alternative for Roundcube is [Rainloop](https://www.rainloop.net/). -* Support for w3tc is dropped as a security precaution. -* We are currently migrating the PHP 5.x series to PHP 7.1 and PHP 7.2. We'll offer an easy to use migration script once we are confident enough to unleash this daemon. For now, new sites get installed with PHP 7.2 as the default. +- We've deprecated the mail stack. Less is more. As an alternative, take a look at [iRedMail](https://www.iredmail.org/) or [Caesonia](https://github.com/vedetta-com/caesonia). And an alternative for Roundcube is [Rainloop](https://www.rainloop.net/). +- Support for w3tc is dropped as a security precaution. +- We are currently migrating the PHP 5.x series to PHP 7.2 and PHP 7.3. We'll offer an easy to use migration script once we are confident enough to unleash this daemon. For now, new sites get installed with PHP 7.2 as the default. -## Update WordOps - -#### With one simple command -``` -wo update -``` - -## More site creation commands +## Usage ### Standard WordPress sites @@ -70,6 +92,7 @@ wo site create example.com --wpsubdomain --wpredis # install wpmu-subdomain + n ``` ### Non-WordPress sites + ```bash wo site create example.com --html # create example.com for static/html sites wo site create example.com --php # create example.com with php support @@ -77,19 +100,32 @@ wo site create example.com --mysql # create example.com with php & mysql supp ``` ### HHVM enabled sites + ```bash wo site create example.com --wp --hhvm # create example.com WordPress site with HHVM support wo site create example.com --php --hhvm # create example.com php site with HHVM support ``` -## Cheatsheet - site creation +## Cheatsheet | | single site | multisite w/ subdir | multisite w/ subdom | |--------------------|---------------|-----------------------|--------------------------| | **NO Cache** | --wp | --wpsubdir | --wpsubdomain | | **WP Super Cache** | --wpsc | --wpsubdir --wpsc | --wpsubdomain --wpsc | -| **Nginx cache** | --wpfc | --wpsubdir --wpfc | --wpsubdomain --wpfc | +| **Nginx fastcgi_cache** | --wpfc | --wpsubdir --wpfc | --wpsubdomain --wpfc | | **Redis cache** | --wpredis | --wpsubdir --wpredis | --wpsubdomain --wpredis | + +## Update WordOps + +```bash +wo update +``` + +## Credits + +- [EasyEngine](https://github.com/easyengine/easyengine) + ## License -[MIT](http://opensource.org/licenses/MIT) \ No newline at end of file + +- [MIT](http://opensource.org/licenses/MIT) © [WordOps](https://wordops.org) \ No newline at end of file diff --git a/install b/install index 4027d1d..710fb7a 100644 --- a/install +++ b/install @@ -62,7 +62,7 @@ apt-get update &>> /dev/null ### # 1- Check whether lsb_release is installed, and if not, install it ### -if [ ! -x /usr/bin/lsb_release ]; then +if [ -z "$(command -v lsb_release)" ]; then wo_lib_echo "Installing lsb-release, please wait..." apt-get -y install lsb-release &>> /dev/null fi @@ -118,9 +118,9 @@ fi function wo_install_dep() { 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 || wo_lib_error "There was an error during dependency installation, exit status " 1 + apt-get -y install build-essential curl gzip python3 python3-apt python3-setuptools python3-dev sqlite3 git tar software-properties-common pigz gnupg2 || wo_lib_error "There was an error during dependency installation, exit status " 1 elif [ "$wo_linux_distro" == "Debian" ]; then - apt-get -y install build-essential curl gzip dirmngr python3 python3-apt python3-setuptools python3-dev sqlite3 git tar software-properties-common pigz || wo_lib_error "There was an error during dependency installation, exit status " 1 + apt-get -y install build-essential curl gzip dirmngr python3 python3-apt python3-setuptools python3-dev sqlite3 git tar software-properties-common pigz gnupg2 || wo_lib_error "There was an error during dependency installation, exit status " 1 fi locale-gen en &>> /dev/null @@ -145,7 +145,7 @@ function wo_install_dep() 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-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_lib_error "Not all PHP packages could be installed. " 1 + 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 php7.2-msgpack graphviz php-pear php7.2-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 @@ -157,7 +157,7 @@ function wo_install_dep() 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-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_lib_error "Not all PHP packages could be installed." 1 + 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 php7.2-msgpack graphviz php-pear php7.2-xdebug || wo_lib_error "Not all PHP packages could be installed." 1 systemctl php7.2-fpm restart &>> /dev/null fi @@ -168,6 +168,12 @@ function wo_install_dep() 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 + chown -R www-data:www-data /var/www/html/.well-known + fi } ### @@ -305,17 +311,17 @@ function wo_sync_db() # Copy the previous upstream.conf cp /etc/nginx/conf.d/upstream.conf /etc/nginx/conf.d/upstream.bak { - # Replace the ports for PHP 7.2 - sed -i 's/9000/9072/g' /etc/nginx/conf.d/upstream.conf - sed -i 's/9070/9072/g' /etc/nginx/conf.d/upstream.conf - # Replace the ports for debug PHP 7.2 - sed -i 's/9001/9172/g' /etc/nginx/conf.d/upstream.conf - sed -i 's/9170/9172/g' /etc/nginx/conf.d/upstream.conf + # Replace the ports for PHP 7.2 + sed -i 's/9000/9072/g' /etc/nginx/conf.d/upstream.conf + sed -i 's/9070/9072/g' /etc/nginx/conf.d/upstream.conf + # Replace the ports for debug PHP 7.2 + sed -i 's/9001/9172/g' /etc/nginx/conf.d/upstream.conf + sed -i 's/9170/9172/g' /etc/nginx/conf.d/upstream.conf } > /dev/null 2>&1 fi echo "UPDATE sites SET php_version = REPLACE(php_version, '5.6', '7.2');" | sqlite3 /var/lib/wo/dbase.db - echo "UPDATE sites SET php_version = REPLACE(php_version, '7.0', '7.2');" | sqlite3 /var/lib/wo/dbase.db + echo "UPDATE sites SET php_version = REPLACE(php_version, '7.0', '7.3');" | sqlite3 /var/lib/wo/dbase.db ### # ee-acme-sh by VirtuBox, https://virtubox.net/ @@ -355,18 +361,19 @@ function secure_wo_db() function wo_update_wp_cli() { wo_lib_echo "Updating WP-CLI version to resolve compatibility issue." - PHP_PATH=$(command -v php) WP_CLI_PATH=$(command -v wp) - if [ -z "$WP_CLI_PATH" ]; then - # Obtain the current WP-CLI version - WP_CLI_VERSION=$($PHP_PATH $WP_CLI_PATH --allow-root cli version | awk '{ print $2 }') - dpkg --compare-versions "$WP_CLI_VERSION" lt 1.4.1 + if [ -n "$WP_CLI_PATH" ]; then # Update WP-CLI to the most recent version - if [ "$?" == "0" ]; then - wget -qO "$WP_CLI_PATH" https://raw.githubusercontent.com/WordOps/wpcli-builds/gh-pages/phar/wp-cli.phar - chmod +x "$WP_CLI_PATH" - fi + wget -qO "$WP_CLI_PATH" https://raw.githubusercontent.com/WordOps/wpcli-builds/gh-pages/phar/wp-cli.phar + chmod +x "$WP_CLI_PATH" + else + wget -qO /usr/local/bin/wp https://raw.githubusercontent.com/WordOps/wpcli-builds/gh-pages/phar/wp-cli.phar + chmod +x /usr/local/bin/wp fi + + [ -d /etc/bash_completion ] && { + wget -qO /etc/bash_completion.d/wp-completion.bash https://raw.githubusercontent.com/wp-cli/wp-cli/master/utils/wp-completion.bash + } } # Now, finally, let's install WordOps @@ -376,9 +383,9 @@ function wo_install() rm -rf /tmp/wordops &>> /dev/null wo_lib_echo "Downloading WordOps straight from GitHub - fresh and brewed with love. Hold your horses..." - if [ "$wo_branch" = "" ]; then + [ -z "$wo_branch" ] && { wo_branch=master - fi + } 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" $? @@ -621,7 +628,7 @@ function wo_update_latest() 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-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_lib_error "Not all PHP packages could be installed. " 1 + 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 php7.2-msgpack graphviz php-pear php7.2-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 @@ -633,7 +640,7 @@ function wo_update_latest() 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-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_lib_error "Not all PHP packages could be installed." 1 + 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 php7.2-msgpack graphviz php-pear php7.2-xdebug || wo_lib_error "Not all PHP packages could be installed." 1 systemctl php7.2-fpm restart &>> /dev/null fi diff --git a/wo/cli/plugins/update.py b/wo/cli/plugins/update.py index 171e748..80d42e3 100644 --- a/wo/cli/plugins/update.py +++ b/wo/cli/plugins/update.py @@ -23,7 +23,7 @@ class WOUpdateController(CementBaseController): @expose(hide=True) def default(self): filename = "woupdate" + time.strftime("%Y%m%d-%H%M%S") - WODownload.download(self, [["https://wrdps.nl/woup", + WODownload.download(self, [["https://raw.githubusercontent.com/WordOps/WordOps/master/install", "/tmp/{0}".format(filename), "update script"]]) try: From 9e6208c2e63ff8ff4cbb13b7370a469d7677ff9d Mon Sep 17 00:00:00 2001 From: VirtuBox Date: Tue, 5 Mar 2019 13:19:47 +0100 Subject: [PATCH 4/5] revert site.py changes --- CHANGELOG.md | 4 +- README.md | 2 +- install | 244 ++++++++++++++------------- setup.py | 4 +- wo/cli/templates/nginx-core.mustache | 9 +- wo/core/variables.py | 20 +-- 6 files changed, 149 insertions(+), 134 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 152af56..6ac6633 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,13 +4,14 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), -### v3.X.X - [Unreleased] +### v3.9.3 - [Unreleased] #### Changed - Updating nginx fastcgi_cache template - Updating Nginx configuration for WordPress 5.0 - remove --experimental args +- MariaDB version bumped to 10.3 #### Added @@ -20,6 +21,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), #### Fixed - Nginx variable $webp_suffix on fresh install +- wo update command ### v3.9.2 - November 30, 2018 diff --git a/README.md b/README.md index 8e916b0..37c2209 100644 --- a/README.md +++ b/README.md @@ -28,7 +28,7 @@ ## Key Features -- Easy Migration from EasyEngine v3 +- 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 - Let's Encrypt SSL certificates diff --git a/install b/install index 710fb7a..0b8b421 100644 --- a/install +++ b/install @@ -7,8 +7,10 @@ # Copyright (c) 2019 - WordOps # This script is licensed under M.I.T # ------------------------------------------------------------------------- -# Version 3.9.1 - 2019-02-25 +# Version 3.9.3 - 2019-03-04 # ------------------------------------------------------------------------- +readonly wo_version_old="2.2.3" +readonly wo_version_new="3.9.3" # CONTENTS # --- # 1. VARIABLES AND DECLARATIONS @@ -20,19 +22,34 @@ # 1 - Set the CLI output colors ### -function wo_lib_echo() -{ - echo $(tput setaf 4)$@$(tput sgr0) +TPUT_RESET=$(tput sgr0) +TPUT_FAIL=$(tput setaf 1) + +wo_lib_echo () { + TPUT_ECHO=$(tput setaf 4) + echo "${TPUT_ECHO}${*}${TPUT_RESET}" } -function wo_lib_echo_info() +wo_lib_echo_info() { - echo $(tput setaf 7)$@$(tput sgr0) + TPUT_INFO=$(tput setaf 7) + echo "${TPUT_INFO}${*}${TPUT_RESET}" } -function wo_lib_echo_fail() +wo_lib_echo_fail() { - echo $(tput setaf 1)$@$(tput sgr0) + + echo "${TPUT_FAIL}${*}${TPUT_RESET}" +} + +### +# 1 - Capture errors +### + +wo_lib_error() +{ + echo "[ $(date) ] ${TPUT_FAIL}${*}${TPUT_RESET}" + exit "$2" } ### @@ -40,18 +57,13 @@ function wo_lib_echo_fail() ### if [[ $EUID -ne 0 ]]; then wo_lib_echo_fail "Sudo privilege required..." - wo_lib_echo_fail "Uses: wget -qO wo wordops.se/tup && sudo bash wo" + wo_lib_echo_fail "Use: wget -qO wo wordops.se/tup && sudo bash wo" exit 100 fi -### -# 1 - Capture errors -### -function wo_lib_error() -{ - echo "[ $(date) ] $(tput setaf 1)$@$(tput sgr0)" - exit $2 -} +echo "" +wo_lib_echo "Welcome to WordOps install script v${wo_version_new}" +echo "" ### # 1- Update the apt sewers with fresh info @@ -72,8 +84,6 @@ fi ### wo_branch=$1 migration=0 -readonly wo_version_old="2.2.3" -readonly wo_version_new="3.9.2.3" readonly wo_log_dir=/var/log/wo/ readonly wo_install_log=/var/log/wo/install.log readonly wo_linux_distro=$(lsb_release -i | awk '{print $3}') @@ -93,7 +103,7 @@ fi ### # 1 - WordOps (wo) only supports Ubuntu/Debian versions that are eligible for support ### -lsb_release -d | egrep -e "14.04|16.04|18.04|jessie|stretch" &>> /dev/null +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 @@ -103,53 +113,52 @@ fi # 1 - To prevent errors or unexpected behaviour, create the log and ACL it ### if [ ! -d $wo_log_dir ]; then - + wo_lib_echo "Creating WordOps log directory, just a second..." mkdir -p $wo_log_dir || wo_lib_error "Whoops - seems we are unable to create the log directory $wo_log_dir, exit status " $? - + touch /var/log/wo/{wordops.log,install.log} - + chmod -R 700 /var/log/wo || wo_lib_error "Whoops, there was an error setting the permissions on the WordOps log folder, exit status " $? fi ### # 2 - Setup the dependencies for installation #### -function wo_install_dep() +wo_install_dep() { - 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 || wo_lib_error "There was an error during dependency installation, exit status " 1 - elif [ "$wo_linux_distro" == "Debian" ]; then - apt-get -y install build-essential curl gzip dirmngr python3 python3-apt python3-setuptools python3-dev sqlite3 git tar software-properties-common pigz gnupg2 || wo_lib_error "There was an error during dependency installation, exit status " 1 + echo -ne ' Installing dependencies [..]\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' + else + echo -e " Installing dependencies [FAIL]" fi - locale-gen en &>> /dev/null - + # Support PFS if [ -f /etc/nginx/nginx.conf ]; then # Replace the default ciphers - sed -i 's/HIGH:!aNULL:!MD5:!kEDH;/ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-CHACHA20-POLY1305:EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH;/' /etc/nginx/nginx.conf + sed -i 's/HIGH:!aNULL:!MD5:!kEDH;/EECDH+CHACHA20:EECDH+AESGCM:EECDH+AES;/' /etc/nginx/nginx.conf # Replace the EasyEngine ciphers - sed -i 's/ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:ECDHE-RSA-DES-CBC3-SHA:ECDHE-ECDSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA;/ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-CHACHA20-POLY1305:EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH;/' /etc/nginx/nginx.conf + sed -i 's/ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:ECDHE-RSA-DES-CBC3-SHA:ECDHE-ECDSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA;/EECDH+CHACHA20:EECDH+AESGCM:EECDH+AES;/' /etc/nginx/nginx.conf # Change the TLS protocols - if [ "$wo_distro_version" == "bionic" ]; then - # Bionic supports TLSv1.3, so let's enable that - sed -i 's/TLSv1 TLSv1.1 TLSv1.2;/TLSv1.2 TLSv1.3;/g' /etc/nginx/nginx.conf - else - # If != Bionic then enable only TLSv1.2 - sed -i 's/TLSv1 TLSv1.1 TLSv1.2;/TLSv1.2;/g' /etc/nginx/nginx.conf - fi + 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 php7.2-msgpack graphviz php-pear php7.2-xdebug || wo_lib_error "Not all PHP packages could be installed. " 1 + 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 @@ -157,10 +166,10 @@ function wo_install_dep() 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 php7.2-msgpack graphviz php-pear php7.2-xdebug || wo_lib_error "Not all PHP packages could be installed." 1 + 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 ### @@ -168,7 +177,7 @@ function wo_install_dep() 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 @@ -179,7 +188,7 @@ function wo_install_dep() ### # 3 - Create/migrate the essentials ### -function wo_sync_db() +wo_sync_db() { ### # Switching from EE -> WO @@ -187,23 +196,23 @@ function wo_sync_db() if [ -f /var/lib/ee/ee.db ]; then # Create the WordOps folder mkdir -p /var/lib/wo - + # Backup the nginx directory tar -cvf - /etc/nginx /etc/ee /var/lib/ee | pigz -9 > /var/lib/wo/ee-backup.tgz - + # Copy the EasyEngine database cp /var/lib/ee/ee.db /var/lib/wo/dbase-ee.db - + # Set the migration variable for the closing text migration=1 - + ### # Clean WO installation ### elif [ ! -d /var/lib/wo ]; then # Create the directory holding the WordOps database mkdir -p /var/lib/wo - + # Create an empty database for WordOps echo "CREATE TABLE sites ( id INTEGER PRIMARY KEY AUTOINCREMENT, @@ -223,24 +232,24 @@ function wo_sync_db() is_hhvm INT INT DEFAULT '0', php_version VARCHAR );" | sqlite3 /var/lib/wo/dbase.db - + if [ -f /var/lib/wo/dbase-ee.db ]; then # Copy the main EasyEngine database over since we are migrating cp /var/lib/wo/dbase-ee.db /var/lib/wo/dbase.db fi - + # Check site is enable/live or disable for site in $(ls /etc/nginx/sites-available/ | grep -v default); do - if [ -f /etc/nginx/sites-enabled/$site ]; then + if [ -f "/etc/nginx/sites-enabled/$site" ]; then wo_site_status='1' else wo_site_status='0' fi - + # Acquire information about the current nginx configuration wo_site_current_type=$(head -n1 /etc/nginx/sites-available/$site | grep "NGINX CONFIGURATION" | rev | cut -d' ' -f3,4,5,6,7 | rev | cut -d ' ' -f2,3,4,5) - + # Sniff out the vhost type and cache configuration if [ "$wo_site_current_type" = "HTML" ]; then wo_site_current="html" @@ -251,7 +260,7 @@ function wo_sync_db() elif [ "$wo_site_current_type" = "MYSQL" ]; then wo_site_current="mysql" wo_site_current_cache="basic" - + # Caching types on a single WordPress installation elif [ "$wo_site_current_type" = "WPSINGLE BASIC" ]; then wo_site_current="wp" @@ -262,7 +271,7 @@ function wo_sync_db() elif [ "$wo_site_current_type" = "WPSINGLE FAST CGI" ] || [ "$wo_site_current_type" = "WPSINGLE FASTCGI" ]; then wo_site_current="wp" wo_site_current_cache="wpfc" - + # Caching types on a single, subdirectory WordPress installation elif [ "$wo_site_current_type" = "WPSUBDIR BASIC" ]; then wo_site_current="wpsubdir" @@ -273,7 +282,7 @@ function wo_sync_db() elif [ "$wo_site_current_type" = "WPSUBDIR FAST CGI" ] || [ "$wo_site_current_type" = "WPSUBDIR FASTCGI" ]; then wo_site_current="wpsubdir" wo_site_current_cache="wpfc" - + # Caching types on a single, subdomain WordPress installation elif [ "$wo_site_current_type" = "WPSUBDOMAIN BASIC" ]; then wo_site_current="wpsubdomain" @@ -285,9 +294,9 @@ function wo_sync_db() wo_site_current="wpsubdomain" wo_site_current_cache="wpfc" fi - + wo_webroot="/var/www/$site" - + # Import the configuration into the WordOps SQLite database echo "INSERT INTO sites (sitename, site_type, cache_type, site_path, is_enabled, is_ssl, storage_fs, storage_db) VALUES (\"$site\", \"$wo_site_current\", \"$wo_site_current_cache\", \"$wo_webroot\", \"$wo_site_status\", 0, 'ext4', 'mysql');" | sqlite3 /var/lib/wo/dbase.db @@ -302,7 +311,7 @@ function wo_sync_db() echo "ALTER TABLE sites ADD COLUMN is_hhvm INT DEFAULT '0';" | sqlite3 /var/lib/wo/dbase.db echo "ALTER TABLE sites ADD COLUMN php_version varchar DEFAULT \"$wo_php_version\";" | sqlite3 /var/lib/wo/dbase.db fi - + ### # Copy the upstream config ### @@ -319,10 +328,10 @@ function wo_sync_db() sed -i 's/9170/9172/g' /etc/nginx/conf.d/upstream.conf } > /dev/null 2>&1 fi - + echo "UPDATE sites SET php_version = REPLACE(php_version, '5.6', '7.2');" | sqlite3 /var/lib/wo/dbase.db echo "UPDATE sites SET php_version = REPLACE(php_version, '7.0', '7.3');" | sqlite3 /var/lib/wo/dbase.db - + ### # ee-acme-sh by VirtuBox, https://virtubox.net/ ### @@ -330,7 +339,7 @@ function wo_sync_db() wget -O - https://get.acme.sh | sh BASHRC_EE_ACME_FIRST_RELEASE=$(grep "ee-acme" $HOME/.bashrc) BASHRC_EE_ACME_LAST_RELEASE=$(grep "ee-acme.sh" $HOME/.bashrc) - + if [ -f $HOME/.ee-acme/ee-acme ] && [ -z "$BASHRC_EE_ACME_LAST_RELEASE" ]; then rm -rf $HOME/.ee-acme/* echo 'alias ee-acme="/root/.ee-acme/ee-acme.sh"' >> $HOME/.ee-acme/ee-acme @@ -349,7 +358,7 @@ function wo_sync_db() } # Once again, set the proper ACL on the WordOps configuration directory -function secure_wo_db() +secure_wo_db() { # The owner is root chown -R root:root /var/lib/wo/ @@ -358,7 +367,7 @@ function secure_wo_db() } # Update the WP-CLI version -function wo_update_wp_cli() +wo_update_wp_cli() { wo_lib_echo "Updating WP-CLI version to resolve compatibility issue." WP_CLI_PATH=$(command -v wp) @@ -369,35 +378,36 @@ function wo_update_wp_cli() else wget -qO /usr/local/bin/wp https://raw.githubusercontent.com/WordOps/wpcli-builds/gh-pages/phar/wp-cli.phar chmod +x /usr/local/bin/wp + ln -s /usr/local/bin/wp /usr/bin/ fi - - [ -d /etc/bash_completion ] && { + + [ -d /etc/bash_completion.d ] && { wget -qO /etc/bash_completion.d/wp-completion.bash https://raw.githubusercontent.com/wp-cli/wp-cli/master/utils/wp-completion.bash } } # Now, finally, let's install WordOps -function wo_install() +wo_install() { - rm -rf /tmp/easyengine &>> /dev/null - rm -rf /tmp/wordops &>> /dev/null - + 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 " $? } -function wo_update_latest() +wo_update_latest() { - + if [ -f /etc/nginx/fastcgi_params ] then grep -q 'HTTP_PROXY' /etc/nginx/fastcgi_params @@ -407,7 +417,7 @@ function wo_update_latest() service nginx restart &>> /dev/null fi fi - + if [ -f /etc/ImageMagick/policy.xml ] then if [ ! -f /etc/ImageMagick/patch.txt ] @@ -416,7 +426,7 @@ function wo_update_latest() sed -i '//r /etc/ImageMagick/patch.txt' /etc/ImageMagick/policy.xml fi fi - + #Move ~/.my.cnf to /etc/mysql/conf.d/my.cnf if [ ! -f /etc/mysql/conf.d/my.cnf ] then @@ -442,11 +452,11 @@ function wo_update_latest() fi fi fi - - + + if [ -f /etc/nginx/nginx.conf ]; then wo_lib_echo "Updating Nginx configuration, please wait..." - + elif [ "$wo_distro_version" == "trusty" ]; then grep -Hr 'http://download.opensuse.org/repositories/home:/rtCamp:/EasyEngine/xUbuntu_14.04/ /' /etc/apt/sources.list.d/ &>> /dev/null if [[ $? -ne 0 ]]; then @@ -476,7 +486,7 @@ function wo_update_latest() DEBIAN_FRONTEND=noninteractive apt-get -o Dpkg::Options::="--force-confmiss" -o Dpkg::Options::="--force-confold" -y --allow-unauthenticated install nginx-ee nginx-custom service nginx restart &>> /dev/null fi - + elif [ "$wo_linux_distro" == "Debian" ]; then grep -Hr 'http://download.opensuse.org/repositories/home:/rtCamp:/EasyEngine/Debian_8.0/ /' /etc/apt/sources.list.d/ &>> /dev/null if [[ $? -ne 0 ]]; then @@ -505,28 +515,28 @@ function wo_update_latest() systemctl restart nginx &>> /dev/null fi fi - + if [ -f /etc/nginx/nginx.conf ]; then sed -i "s/.*X-Powered-By.*/\tadd_header X-Powered-By \"WordOps $wo_version_new\";/" /etc/nginx/nginx.conf &>> /dev/null fi - + if [ -f /etc/nginx/conf.d/wo-plus.conf ]; then sed -i "s/.*X-Powered-By.*/\tadd_header X-Powered-By \"WordOps $wo_version_new\";/" /etc/nginx/conf.d/wo-plus.conf &>> /dev/null fi - + # Fix HHVM autostart on reboot dpkg --get-selections | grep -v deinstall | grep hhvm &>> /dev/null if [ $? -eq 0 ]; then update-rc.d hhvm defaults &>> /dev/null fi - + # Fix WordPress example.html issue # Ref: http://wptavern.com/xss-vulnerability-in-jetpack-and-the-twenty-fifteen-default-theme-affects-millions-of-wordpress-users dpkg --get-selections | grep -v deinstall | grep nginx &>> /dev/null if [ $? -eq 0 ]; then cp /usr/lib/wo/templates/locations.mustache /etc/nginx/common/locations.conf &>> /dev/null fi - + # Fix HHVM upstream issue that was preventing from using EasyEngine for site operations if [ -f /etc/nginx/conf.d/upstream.conf ]; then grep -Hr hhvm /etc/nginx/conf.d/upstream.conf &>> /dev/null @@ -534,7 +544,7 @@ function wo_update_latest() echo -e "upstream hhvm {\n# HHVM Pool\nserver 127.0.0.1:8000;\nserver 127.0.0.1:9000 backup;\n}\n" >> /etc/nginx/conf.d/upstream.conf fi fi - + # Fix HHVM server IP if [ -f /etc/hhvm/server.ini ]; then grep -Hr "hhvm.server.ip" /etc/hhvm/server.ini &>> /dev/null @@ -542,33 +552,33 @@ function wo_update_latest() echo -e "hhvm.server.ip = 127.0.0.1\n" >> /etc/hhvm/server.ini fi fi - + # Rename Redis Header if [ -f /etc/nginx/common/redis-hhvm.conf ]; then sed -i "s/X-Cache /X-SRCache-Fetch-Status /g" /etc/nginx/common/redis-hhvm.conf &>> /dev/null sed -i "s/X-Cache-2 /X-SRCache-Store-Status /g" /etc/nginx/common/redis-hhvm.conf &>> /dev/null fi - + if [ -f /etc/nginx/common/redis.conf ]; then sed -i "s/X-Cache /X-SRCache-Fetch-Status /g" /etc/nginx/common/redis.conf &>> /dev/null sed -i "s/X-Cache-2 /X-SRCache-Store-Status /g" /etc/nginx/common/redis.conf &>> /dev/null fi - - + + if [ -f /etc/nginx/common/redis-hhvm.conf ]; then # Update Timeout redis-hhvm.conf grep -0 'redis2_query expire $key 6h' /etc/nginx/common/redis-hhvm.conf &>> /dev/null if [ $? -eq 0 ]; then sed -i 's/redis2_query expire $key 6h/redis2_query expire $key 14400/g' /etc/nginx/common/redis-hhvm.conf &>> /dev/null fi - + #Fix for 3.3.4 redis-hhvm issue grep -0 'HTTP_ACCEPT_ENCODING' /etc/nginx/common/redis-hhvm.conf &>> /dev/null if [ $? -ne 0 ]; then sed -i 's/fastcgi_params;/fastcgi_params;\n fastcgi_param HTTP_ACCEPT_ENCODING "";/g' /etc/nginx/common/redis-hhvm.conf &>> /dev/null fi fi - + #Fix Redis-server security issue #http://redis.io/topics/security if [ -f /etc/redis/redis.conf ]; then @@ -578,14 +588,14 @@ function wo_update_latest() service redis-server restart &>> /dev/null fi fi - + # 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 chown -R www-data:www-data /var/www/html/.well-known fi - - + + # Fix for 3.3.2 renamed nginx.conf nginx -V 2>&1 &>>/dev/null if [[ $? -eq 0 ]]; then @@ -607,7 +617,7 @@ function wo_update_latest() fi fi fi - + # Support PFS if [ -f /etc/nginx/nginx.conf ]; then # Replace the default ciphers @@ -623,16 +633,16 @@ function wo_update_latest() sed -i 's/TLSv1 TLSv1.1 TLSv1.2;/TLSv1.2;/g' /etc/nginx/nginx.conf 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 php7.2-msgpack graphviz php-pear php7.2-xdebug || wo_lib_error "Not all PHP packages could be installed. " 1 + 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 @@ -640,10 +650,10 @@ function wo_update_latest() 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 php7.2-msgpack graphviz php-pear php7.2-xdebug || wo_lib_error "Not all PHP packages could be installed." 1 + 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 crontab -l | grep -q '\-\-min_expiry_limit' if [[ $? -eq 0 ]]; then @@ -654,7 +664,7 @@ function wo_update_latest() } # Do git intialisation -function wo_git_init() +wo_git_init() { # Nginx under git version control [ -d /etc/nginx ] && { @@ -672,7 +682,7 @@ function wo_git_init() } git add -A . git commit -am "Installed/Updated to WordOps" &>> /dev/null - + #PHP under git version control [ -d /etc/php ] && { cd /etc/php || exit 1 @@ -684,17 +694,19 @@ function wo_git_init() }> /dev/null } -if [ ! -f /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 - +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 - ee -v 2>&1 | grep $wo_version_new &>> /dev/null + 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 diff --git a/setup.py b/setup.py index 801c874..780b17e 100644 --- a/setup.py +++ b/setup.py @@ -55,10 +55,10 @@ except Exception as e: os.system("git config --global user.email {0}".format(wo_email)) if not os.path.isfile('/root/.gitconfig'): - shutil.copy2(os.path.expanduser("~")+'/.gitconfig', '/root/.gitconfig') + shutil.copy2(os.path.expanduser("~")+'/.gitconfig', '/root/.gitconfig') setup(name='wo', - version='3.9.1', + version='3.9.3', description=long_description, long_description=long_description, classifiers=[], diff --git a/wo/cli/templates/nginx-core.mustache b/wo/cli/templates/nginx-core.mustache index cef16cc..e262d87 100644 --- a/wo/cli/templates/nginx-core.mustache +++ b/wo/cli/templates/nginx-core.mustache @@ -18,13 +18,14 @@ fastcgi_read_timeout 300; client_max_body_size 100m; # SSL Settings -ssl_protocols TLSv1.1 TLSv1.2; -ssl_session_cache shared:SSL:10m; -ssl_session_timeout 10m; +ssl_protocols TLSv1.2; +ssl_ciphers 'EECDH+CHACHA20:EECDH+AESGCM:EECDH+AES'; +ssl_session_cache shared:SSL:50m; +ssl_session_timeout 1d; +ssl_session_tickets off; {{#Ubuntu}} ssl_prefer_server_ciphers on; {{/Ubuntu}} -ssl_ciphers "ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-CHACHA20-POLY1305:EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH"; # Log format Settings log_format rt_cache '$remote_addr $upstream_response_time $upstream_cache_status [$time_local] ' diff --git a/wo/core/variables.py b/wo/core/variables.py index 4139c21..46c55ab 100644 --- a/wo/core/variables.py +++ b/wo/core/variables.py @@ -11,11 +11,11 @@ import datetime class WOVariables(): """Intialization of core variables""" - # WordOps version - wo_version = "3.9.2" + # WordOps version + wo_version = "3.9.3" # WordOps packages versions - wo_wp_cli = "2.0.1" - wo_adminer = "4.6.3" + wo_wp_cli = "2.1.0" + wo_adminer = "4.7.1" # Get WPCLI path wo_wpcli_path = os.popen('which wp | tr "\n" " "').read() @@ -68,9 +68,9 @@ class WOVariables(): wo_mysql_host = "" config = configparser.RawConfigParser() if os.path.exists('/etc/mysql/conf.d/my.cnf'): - cnfpath = "/etc/mysql/conf.d/my.cnf" + cnfpath = "/etc/mysql/conf.d/my.cnf" else: - cnfpath = os.path.expanduser("~")+"/.my.cnf" + cnfpath = os.path.expanduser("~")+"/.my.cnf" if [cnfpath] == config.read(cnfpath): try: wo_mysql_host = config.get('client', 'host') @@ -104,15 +104,15 @@ class WOVariables(): 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", "php-sodium", "php7.2-curl", "php7.2-gd", "php7.2-imap", + 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", "php-sodium", "php7.2-curl", "php7.2-gd", "php7.2-imap", + 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", "php-memcache", "memcached", + 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)) @@ -162,7 +162,7 @@ class WOVariables(): .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', 'php7.2-redis'] + wo_redis = ['redis-server', 'php-redis'] # Repo path wo_repo_file = "wo-repo.list" From 319ddd41edb695f31e1d8a4bfd15be1c3d90749a Mon Sep 17 00:00:00 2001 From: VirtuBox Date: Tue, 5 Mar 2019 13:41:14 +0100 Subject: [PATCH 5/5] [skip travis] update README.md --- CHANGELOG.md | 6 +++--- README.md | 4 +++- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 6ac6633..841c6d5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,14 +8,14 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), #### Changed -- Updating nginx fastcgi_cache template +- Updating Nginx fastcgi_cache template - Updating Nginx configuration for WordPress 5.0 - remove --experimental args - MariaDB version bumped to 10.3 #### Added -- Add webp image support with nginx mapping +- Add WebP image support with Nginx mapping - Add PHP 7.3 support #### Fixed @@ -27,7 +27,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), #### Changed -- Rebranded the fork to WordOps +- Re-branded the fork to WordOps - Codebase cleanup - Set PHP 7.2 as the default - Included support for newer OS releases diff --git a/README.md b/README.md index 37c2209..835aa0a 100644 --- a/README.md +++ b/README.md @@ -60,7 +60,9 @@ WordOps made some fundamental changes: - We've deprecated the mail stack. Less is more. As an alternative, take a look at [iRedMail](https://www.iredmail.org/) or [Caesonia](https://github.com/vedetta-com/caesonia). And an alternative for Roundcube is [Rainloop](https://www.rainloop.net/). - Support for w3tc is dropped as a security precaution. -- We are currently migrating the PHP 5.x series to PHP 7.2 and PHP 7.3. We'll offer an easy to use migration script once we are confident enough to unleash this daemon. For now, new sites get installed with PHP 7.2 as the default. +- PHP 5.6 has been replaced by PHP 7.2 and PHP 7.0 will be replaced by PHP 7.3. + +We will not overwrite previous php versions Nginx upstreams to avoid issues during the migration from EEv3. A step by step guide will be published soon to explain how to fully migrate from EasyEngine v3 to WordOps ## Usage