Merge pull request #471 from WordOps/updating-configuration

maintenance release v3.15.3
This commit is contained in:
VirtuBox
2022-10-24 17:36:59 +02:00
committed by GitHub
12 changed files with 217 additions and 55 deletions

View File

@@ -19,10 +19,10 @@ jobs:
runs-on: ${{ matrix.os }} runs-on: ${{ matrix.os }}
strategy: strategy:
matrix: matrix:
os: [ubuntu-20.04, ubuntu-18.04] os: [ubuntu-20.04, ubuntu-18.04, ubuntu-22.04]
steps: steps:
- uses: actions/checkout@v2 - uses: actions/checkout@v3
- name: Prepare VM - name: Prepare VM
run: | run: |
unset LANG unset LANG

View File

@@ -8,6 +8,27 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
### v3.16.0 - [Unreleased] ### v3.16.0 - [Unreleased]
### v3.15.3 - 2022-10-24
#### Added
- Support for Debian 10/11
#### Changed
- Install redis from official repository
- Redis version bump to 7.0.5
- WP-CLI version bump to 2.7.1
- Remove outdated Nginx directives
- Updated repository GPG Key
- UFW stack detect proftpd during install
#### Fixed
- Netdata upgrade failure on old servers
- MariaDB service disabled after upgrade with `wo stack migrate --mariadb`
- Proftpd install on Ubuntu 22.04 and Debian 11
### v3.15.2 - 2022-09-23 ### v3.15.2 - 2022-09-23
#### Added #### Added

View File

@@ -41,8 +41,8 @@
- **Easy to install** : One step automated installer with migration from EasyEngine v3 support - **Easy to install** : One step automated installer with migration from EasyEngine v3 support
- **Fast deployment** : Fast and automated WordPress, Nginx, PHP, MySQL & Redis installation - **Fast deployment** : Fast and automated WordPress, Nginx, PHP, MySQL & Redis installation
- **Custom Nginx build** : Nginx 1.22.0 - TLS v1.3 Cloudflare HTTP/2 HPACK & Brotli support - **Custom Nginx build** : Nginx 1.22.1 - TLS v1.3 Cloudflare HTTP/2 HPACK & Brotli support
- **Up-to-date** : PHP 7.2, 7.3, 7.4, 8.0 & 8.1 - MariaDB 10.6 & Redis 6.0 - **Up-to-date** : PHP 7.2, 7.3, 7.4, 8.0 & 8.1 - MariaDB 10.6 & Redis 7.0
- **Secured** : Hardened WordPress security with strict Nginx location directives - **Secured** : Hardened WordPress security with strict Nginx location directives
- **Powerful** : Optimized Nginx configurations with multiple cache backends support - **Powerful** : Optimized Nginx configurations with multiple cache backends support
- **SSL** : Domain, Subdomain & Wildcard Let's Encrypt SSL certificates with DNS API support - **SSL** : Domain, Subdomain & Wildcard Let's Encrypt SSL certificates with DNS API support
@@ -66,11 +66,11 @@
#### Also compatible #### Also compatible
- Debian 10 (Buster) - Debian 10 (Buster)
- Raspbian 10 (Buster) - Debian 11 (Bullseye)
#### For testing purpose only #### For testing purpose only
- Debian 11 (Bullseye) - Raspbian 10 (Buster)
- Raspbian 11 (Bullseye) - Raspbian 11 (Bullseye)
## Getting Started ## Getting Started
@@ -87,14 +87,13 @@ Detailed Getting Started guide with additional installation methods can be found
### Standard WordPress sites ### Standard WordPress sites
```bash ```bash
wo site create example.com --wp # install wordpress with PHP 7.3 without any page caching wo site create example.com --wp # install wordpress with PHP 8.0 without any page caching
wo site create example.com --wp --php80 # install wordpress with PHP 8.0 without any page caching wo site create example.com --wp --php81 # install wordpress with PHP 8.1 without any page caching
wo site create example.com --wp --php81 # install wordpress with PHP 8.1 without any page caching wo site create example.com --wpfc # install wordpress + nginx fastcgi_cache
wo site create example.com --wpfc # install wordpress + nginx fastcgi_cache wo site create example.com --wpredis # install wordpress + nginx redis_cache
wo site create example.com --wpredis # install wordpress + nginx redis_cache wo site create example.com --wprocket # install wordpress with WP-Rocket plugin
wo site create example.com --wprocket # install wordpress with WP-Rocket plugin wo site create example.com --wpce # install wordpress with Cache-enabler plugin
wo site create example.com --wpce # install wordpress with Cache-enabler plugin wo site create example.com --wpsc # install wordpress with wp-super-cache plugin
wo site create example.com --wpsc # install wordpress with wp-super-cache plugin
``` ```
### WordPress multisite with subdirectory ### WordPress multisite with subdirectory
@@ -125,10 +124,9 @@ wo site create example.com --wpsubdomain --wpce # install wpmu-subdomain + C
wo site create example.com --html # create example.com for static/html sites wo site create example.com --html # create example.com for static/html sites
wo site create example.com --php # create example.com with php 8.0 support wo site create example.com --php # create example.com with php 8.0 support
wo site create example.com --php80 # create example.com with php 8.0 support wo site create example.com --php80 # create example.com with php 8.0 support
wo site create example.com --php74 # create example.com with php 7.4 support wo site create example.com --php81 # create example.com with php 8.1 support
wo site create example.com --mysql # create example.com with php 8.0 & mysql support wo site create example.com --mysql # create example.com with php 8.0 & mysql support
wo site create example.com --mysql --php81 # create example.com with php 8.1 & mysql support wo site create example.com --mysql --php81 # create example.com with php 8.1 & mysql support
wo site create example.com --mysql --php73 # create example.com with php 7.3 & mysql support
wo site create example.com --proxy=127.0.0.1:3000 # create example.com with nginx as reverse-proxy wo site create example.com --proxy=127.0.0.1:3000 # create example.com with nginx as reverse-proxy
``` ```
@@ -196,7 +194,7 @@ Third-party debian packages shipped with WordOps :
- [Nginx-wo by WordOps](https://build.opensuse.org/package/show/home:virtubox:WordOps/nginx) - [Nginx-wo by WordOps](https://build.opensuse.org/package/show/home:virtubox:WordOps/nginx)
- [PHP by Ondřej Surý](https://launchpad.net/~ondrej/+archive/ubuntu/php) - [PHP by Ondřej Surý](https://launchpad.net/~ondrej/+archive/ubuntu/php)
- [Redis by Chris Lea](https://launchpad.net/~chris-lea/+archive/ubuntu/redis-server) - [Redis](https://redis.io/docs/getting-started/installation/install-redis-on-linux/)
WordPress Cache Plugins supported by WordOps : WordPress Cache Plugins supported by WordOps :

12
install
View File

@@ -9,7 +9,7 @@
# ------------------------------------------------------------------------- # -------------------------------------------------------------------------
# wget -qO wo wops.cc && sudo -E bash wo # wget -qO wo wops.cc && sudo -E bash wo
# ------------------------------------------------------------------------- # -------------------------------------------------------------------------
# Version 3.15.2 - 2022-09-23 # Version 3.15.3 - 2022-10-24
# ------------------------------------------------------------------------- # -------------------------------------------------------------------------
# CONTENTS # CONTENTS
@@ -519,6 +519,8 @@ wo_travis_install() {
if [ "$wo_linux_distro" = "Debian" ] || [ "$wo_linux_distro" = "Raspbian" ]; then if [ "$wo_linux_distro" = "Debian" ] || [ "$wo_linux_distro" = "Raspbian" ]; then
if [ "$wo_distro_codename" = "stretch" ]; then if [ "$wo_distro_codename" = "stretch" ]; then
python3 -m pip install git+https://salsa.debian.org/apt-team/python-apt.git@1.4.y#egg=python-apt python3 -m pip install git+https://salsa.debian.org/apt-team/python-apt.git@1.4.y#egg=python-apt
elif [ "$wo_distro_codename" = "bullseye" ]; then
python3 -m pip install git+https://salsa.debian.org/apt-team/python-apt.git@2.2.1#egg=python-apt
else else
python3 -m pip install git+https://salsa.debian.org/apt-team/python-apt.git@1.8.4.y#egg=python-apt python3 -m pip install git+https://salsa.debian.org/apt-team/python-apt.git@1.8.4.y#egg=python-apt
fi fi
@@ -527,8 +529,10 @@ wo_travis_install() {
python3 -m pip install git+https://salsa.debian.org/apt-team/python-apt.git@2.0.0#egg=python-apt python3 -m pip install git+https://salsa.debian.org/apt-team/python-apt.git@2.0.0#egg=python-apt
elif [ "$wo_distro_codename" = "bionic" ]; then elif [ "$wo_distro_codename" = "bionic" ]; then
python3 -m pip install git+https://salsa.debian.org/apt-team/python-apt.git@1.6.y#egg=python-apt python3 -m pip install git+https://salsa.debian.org/apt-team/python-apt.git@1.6.y#egg=python-apt
elif [ "$wo_distro_codename" = "jammy" ]; then
python3 -m pip install git+https://salsa.debian.org/apt-team/python-apt.git@2.2.1#egg=python-apt
else else
python3 -m pip install git+https://salsa.debian.org/apt-team/python-apt.git@1.1.0_beta1ubuntu0.16.04.9#egg=python-apt python3 -m pip install git+https://salsa.debian.org/apt-team/python-apt.git@1.1.y-xenial#egg=python-apt
fi fi
fi fi
fi fi
@@ -728,7 +732,7 @@ wo_woconf() {
echo -e '\n[letsencrypt]\n\nkeylength = "ec-384"' >>/etc/wo/wo.conf echo -e '\n[letsencrypt]\n\nkeylength = "ec-384"' >>/etc/wo/wo.conf
fi fi
if ! grep -q "php" /etc/wo/wo.conf; then if ! grep -q "php" /etc/wo/wo.conf; then
echo -e '\n[php]\n\nversion = 7.4' >>/etc/wo/wo.conf echo -e '\n[php]\n\nversion = 8.0' >>/etc/wo/wo.conf
fi fi
fi fi
} }
@@ -793,7 +797,7 @@ wo_php_fix() {
wo_git_secure_path() { wo_git_secure_path() {
if ! grep -q "safe" ~/.gitconfig; then if ! grep -q "safe" ~/.gitconfig; then
echo -e "\n[safe]\n directory = *" >> ~/.gitconfig echo -e "\n[safe]\n directory = *" >>~/.gitconfig
fi fi
} }

View File

@@ -27,7 +27,7 @@ if os.geteuid() == 0:
os.makedirs('/var/lib/wo/tmp/') os.makedirs('/var/lib/wo/tmp/')
setup(name='wordops', setup(name='wordops',
version='3.15.2', version='3.15.3',
description='An essential toolset that eases server administration', description='An essential toolset that eases server administration',
long_description=LONG, long_description=LONG,
long_description_content_type='text/markdown', long_description_content_type='text/markdown',

View File

@@ -108,17 +108,12 @@ def pre_pref(self, apt_packages):
WORepo.add_key(self, WOVar.wo_php_key) WORepo.add_key(self, WOVar.wo_php_key)
# add redis repository # add redis repository
if set(WOVar.wo_redis).issubset(set(apt_packages)): if set(WOVar.wo_redis).issubset(set(apt_packages)):
if WOVar.wo_distro == 'ubuntu': if not WOFileUtils.grepcheck(
self, '/etc/apt/sources.list/wo-repo.list',
'redis.io'):
Log.info(self, "Adding repository for Redis, please wait...") Log.info(self, "Adding repository for Redis, please wait...")
Log.debug(self, 'Adding ppa for redis') WORepo.add(self, repo_url=WOVar.wo_redis_repo)
WORepo.add(self, ppa=WOVar.wo_redis_repo) WORepo.download_key(self, WOVar.wo_redis_key_url)
else:
if not WOFileUtils.grepcheck(
self, '/etc/apt/sources.list/wo-repo.list',
'WordOps'):
Log.info(self, "Adding repository for Redis, please wait...")
WORepo.add(self, repo_url=WOVar.wo_nginx_repo)
WORepo.add_key(self, WOVar.wo_nginx_key)
# nano # nano
if 'nano' in apt_packages: if 'nano' in apt_packages:
@@ -1401,18 +1396,10 @@ def post_pref(self, apt_packages, packages, upgrade=False):
msg="Adding ProFTPd into Git") msg="Adding ProFTPd into Git")
if os.path.isfile("/etc/proftpd/proftpd.conf"): if os.path.isfile("/etc/proftpd/proftpd.conf"):
Log.debug(self, "Setting up Proftpd configuration") Log.debug(self, "Setting up Proftpd configuration")
WOFileUtils.searchreplace( data = dict()
self, "/etc/proftpd/proftpd.conf", WOTemplate.deploy(self,
"# DefaultRoot", "DefaultRoot") '/etc/proftpd/proftpd.conf',
WOFileUtils.searchreplace( 'proftpd.mustache', data)
self, "/etc/proftpd/proftpd.conf",
"# RequireValidShell", "RequireValidShell")
WOFileUtils.searchreplace(
self, "/etc/proftpd/proftpd.conf",
"# PassivePorts "
"49152 65534",
"PassivePorts "
" 49000 50000")
# proftpd TLS configuration # proftpd TLS configuration
if not os.path.isdir("/etc/proftpd/ssl"): if not os.path.isdir("/etc/proftpd/ssl"):
WOFileUtils.mkdir(self, "/etc/proftpd/ssl") WOFileUtils.mkdir(self, "/etc/proftpd/ssl")
@@ -1422,10 +1409,6 @@ def post_pref(self, apt_packages, packages, upgrade=False):
data = dict() data = dict()
WOTemplate.deploy(self, '/etc/proftpd/tls.conf', WOTemplate.deploy(self, '/etc/proftpd/tls.conf',
'proftpd-tls.mustache', data) 'proftpd-tls.mustache', data)
WOFileUtils.searchreplace(self, "/etc/proftpd/"
"proftpd.conf",
"#Include /etc/proftpd/tls.conf",
"Include /etc/proftpd/tls.conf")
WOService.restart_service(self, 'proftpd') WOService.restart_service(self, 'proftpd')
if os.path.isfile('/etc/ufw/ufw.conf'): if os.path.isfile('/etc/ufw/ufw.conf'):

View File

@@ -383,6 +383,15 @@ class WOStackUpgradeController(CementBaseController):
"bash /var/lib/wo/tmp/kickstart.sh " "bash /var/lib/wo/tmp/kickstart.sh "
"--dont-wait --no-updates --stable-channel", "--dont-wait --no-updates --stable-channel",
errormsg='', log=False) errormsg='', log=False)
if (os.path.exists('/opt/netdata') and
not os.path.exists(
'/opt/netdata/var/run/netdata/netdata.pid')):
WOShellExec.cmd_exec(
self,
'bash /var/lib/wo/tmp/kickstart.sh '
'--dont-wait --no-updates '
'--stable-channel --reinstall-even-if-unsafe',
errormsg='', log=False)
Log.valide(self, "Upgrading Netdata") Log.valide(self, "Upgrading Netdata")
if WOAptGet.is_selected(self, 'WordOps Dashboard', packages): if WOAptGet.is_selected(self, 'WordOps Dashboard', packages):

View File

@@ -41,7 +41,7 @@ location /.well-known/acme-challenge/ {
# https://developer.chrome.com/blog/private-prefetch-proxy/ # https://developer.chrome.com/blog/private-prefetch-proxy/
location /.well-known/traffic-advice { location /.well-known/traffic-advice {
types { } default_type "application/trafficadvice+json; charset=utf-8"; types { } default_type "application/trafficadvice+json; charset=utf-8";
alias /var/www/html/.well-known/traffic-advice; return 200 "[\{\n \"user_agent\": \"prefetch-proxy\",\n \"google_prefetch_proxy_eap\": \{\n \"fraction\": 1.0\n \}\n\}]";
allow all; allow all;
} }
# Return 403 forbidden for readme.(txt|html) or license.(txt|html) or example.(txt|html) or other common git repository files # Return 403 forbidden for readme.(txt|html) or license.(txt|html) or example.(txt|html) or other common git repository files

View File

@@ -4,11 +4,13 @@ TLSEngine on
TLSRequired on TLSRequired on
TLSLog /var/log/proftpd/tls.log TLSLog /var/log/proftpd/tls.log
TLSDHParamFile /etc/proftpd/dhparams.pem
# intermediate configuration from ssl-config.mozilla.org # intermediate configuration from ssl-config.mozilla.org
TLSProtocol TLSv1.2 TLSProtocol TLSv1.2
TLSCipherSuite ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384 TLSCipherSuite ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384
TLSServerCipherPreference off TLSServerCipherPreference off
TLSessionTickets off TLSSessionTickets off
TLSOptions NoCertRequest AllowClientRenegotiations NoSessionReuseRequired TLSOptions NoCertRequest AllowClientRenegotiations NoSessionReuseRequired
TLSRSACertificateFile /etc/proftpd/ssl/proftpd.crt TLSRSACertificateFile /etc/proftpd/ssl/proftpd.crt

View File

@@ -0,0 +1,138 @@
#
# /etc/proftpd/proftpd.conf -- This is a basic ProFTPD configuration file.
# To really apply changes, reload proftpd after modifications, if
# it runs in daemon mode. It is not required in inetd/xinetd mode.
#
# Includes DSO modules
Include /etc/proftpd/modules.conf
# Set off to disable IPv6 support which is annoying on IPv4 only boxes.
UseIPv6 off
# If set on you can experience a longer connection delay in many cases.
<IfModule mod_ident.c>
IdentLookups off
</IfModule>
ServerName "Debian"
# Set to inetd only if you would run proftpd by inetd/xinetd.
# Read README.Debian for more information on proper configuration.
ServerType standalone
DeferWelcome off
MultilineRFC2228 on
DefaultServer on
ShowSymlinks on
TimeoutNoTransfer 600
TimeoutStalled 600
TimeoutIdle 1200
DisplayLogin welcome.msg
DisplayChdir .message true
ListOptions "-l"
DenyFilter \*.*/
# Use this to jail all users in their homes
DefaultRoot ~
# Users require a valid shell listed in /etc/shells to login.
# Use this directive to release that constrain.
RequireValidShell off
# Port 21 is the standard FTP port.
Port 21
# In some cases you have to specify passive ports range to by-pass
# firewall limitations. Ephemeral ports can be used for that, but
# feel free to use a more narrow range.
PassivePorts 49000 50000
# If your host was NATted, this option is useful in order to
# allow passive tranfers to work. You have to use your public
# address and opening the passive ports used on your firewall as well.
# MasqueradeAddress 1.2.3.4
# This is useful for masquerading address with dynamic IPs:
# refresh any configured MasqueradeAddress directives every 8 hours
<IfModule mod_dynmasq.c>
# DynMasqRefresh 28800
</IfModule>
# To prevent DoS attacks, set the maximum number of child processes
# to 30. If you need to allow more than 30 concurrent connections
# at once, simply increase this value. Note that this ONLY works
# in standalone mode, in inetd mode you should use an inetd server
# that allows you to limit maximum number of processes per service
# (such as xinetd)
MaxInstances 30
# Set the user and group that the server normally runs at.
User proftpd
Group nogroup
# Umask 022 is a good standard umask to prevent new files and dirs
# (second parm) from being group and world writable.
Umask 022 022
# Normally, we want files to be overwriteable.
AllowOverwrite on
# Uncomment this if you are using NIS or LDAP via NSS to retrieve passwords:
# PersistentPasswd off
# This is required to use both PAM-based authentication and local passwords
# AuthOrder mod_auth_pam.c* mod_auth_unix.c
# Be warned: use of this directive impacts CPU average load!
# Uncomment this if you like to see progress and transfer rate with ftpwho
# in downloads. That is not needed for uploads rates.
#
UseSendFile off
TransferLog /var/log/proftpd/xferlog
SystemLog /var/log/proftpd/proftpd.log
# Logging onto /var/log/lastlog is enabled but set to off by default
#UseLastlog on
# In order to keep log file dates consistent after chroot, use timezone info
# from /etc/localtime. If this is not set, and proftpd is configured to
# chroot (e.g. DefaultRoot or <Anonymous>), it will use the non-daylight
# savings timezone regardless of whether DST is in effect.
SetEnv TZ :/etc/localtime
<IfModule mod_quotatab.c>
QuotaEngine off
</IfModule>
<IfModule mod_ratio.c>
Ratios off
</IfModule>
# Delay engine reduces impact of the so-called Timing Attack described in
# http://www.securityfocus.com/bid/11430/discuss
# It is on by default.
<IfModule mod_delay.c>
DelayEngine on
</IfModule>
<IfModule mod_ctrls.c>
ControlsEngine off
ControlsMaxClients 2
ControlsLog /var/log/proftpd/controls.log
ControlsInterval 5
ControlsSocket /var/run/proftpd/proftpd.sock
</IfModule>
<IfModule mod_ctrls_admin.c>
AdminControlsEngine off
</IfModule>
# This is used for FTPS connections
#
Include /etc/proftpd/tls.conf
# Include other custom configuration files
Include /etc/proftpd/conf.d/

View File

@@ -46,6 +46,13 @@ wo_ufw_setup() {
# wordops backend # wordops backend
ufw limit 22222 ufw limit 22222
fi fi
# allow proftpd port if installed
if [ -f /etc/proftpd/proftpd.conf ]; then
ufw limit 21
ufw allow 49000:50000/tcp
fi
# enable ufw # enable ufw
if [ -n "$CURRENT_SSH_PORT" ]; then if [ -n "$CURRENT_SSH_PORT" ]; then
ufw --force enable ufw --force enable

View File

@@ -15,9 +15,9 @@ class WOVar():
"""Intialization of core variables""" """Intialization of core variables"""
# WordOps version # WordOps version
wo_version = "3.15.2" wo_version = "3.15.3"
# WordOps packages versions # WordOps packages versions
wo_wp_cli = "2.6.0" wo_wp_cli = "2.7.1"
wo_adminer = "4.8.1" wo_adminer = "4.8.1"
wo_phpmyadmin = "5.2.0" wo_phpmyadmin = "5.2.0"
wo_extplorer = "2.1.13" wo_extplorer = "2.1.13"
@@ -200,7 +200,6 @@ class WOVar():
codename=wo_platform_codename)) codename=wo_platform_codename))
if wo_distro == 'ubuntu': if wo_distro == 'ubuntu':
wo_php_repo = "ppa:ondrej/php" wo_php_repo = "ppa:ondrej/php"
wo_redis_repo = ("ppa:redislabs/redis")
wo_goaccess_repo = ("ppa:alex-p/goaccess") wo_goaccess_repo = ("ppa:alex-p/goaccess")
else: else:
@@ -208,8 +207,9 @@ class WOVar():
"deb https://packages.sury.org/php/ {codename} main" "deb https://packages.sury.org/php/ {codename} main"
.format(codename=wo_platform_codename)) .format(codename=wo_platform_codename))
wo_php_key = 'AC0E47584A7A714D' wo_php_key = 'AC0E47584A7A714D'
wo_redis_repo = ("deb https://packages.sury.org/php/ {codename} all" wo_redis_key_url = "https://packages.redis.io/gpg"
.format(codename=wo_platform_codename)) wo_redis_repo = ("deb https://packages.redis.io/deb {codename} main"
.format(codename=wo_platform_codename))
wo_redis = ['redis-server'] wo_redis = ['redis-server']