Merge pull request #471 from WordOps/updating-configuration
maintenance release v3.15.3
This commit is contained in:
4
.github/workflows/main.yml
vendored
4
.github/workflows/main.yml
vendored
@@ -19,10 +19,10 @@ jobs:
|
||||
runs-on: ${{ matrix.os }}
|
||||
strategy:
|
||||
matrix:
|
||||
os: [ubuntu-20.04, ubuntu-18.04]
|
||||
os: [ubuntu-20.04, ubuntu-18.04, ubuntu-22.04]
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- uses: actions/checkout@v3
|
||||
- name: Prepare VM
|
||||
run: |
|
||||
unset LANG
|
||||
|
||||
21
CHANGELOG.md
21
CHANGELOG.md
@@ -8,6 +8,27 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
||||
|
||||
### 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
|
||||
|
||||
#### Added
|
||||
|
||||
28
README.md
28
README.md
@@ -41,8 +41,8 @@
|
||||
|
||||
- **Easy to install** : One step automated installer with migration from EasyEngine v3 support
|
||||
- **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
|
||||
- **Up-to-date** : PHP 7.2, 7.3, 7.4, 8.0 & 8.1 - MariaDB 10.6 & Redis 6.0
|
||||
- **Custom Nginx build** : Nginx 1.22.1 - TLS v1.3 Cloudflare HTTP/2 HPACK & Brotli support
|
||||
- **Up-to-date** : PHP 7.2, 7.3, 7.4, 8.0 & 8.1 - MariaDB 10.6 & Redis 7.0
|
||||
- **Secured** : Hardened WordPress security with strict Nginx location directives
|
||||
- **Powerful** : Optimized Nginx configurations with multiple cache backends support
|
||||
- **SSL** : Domain, Subdomain & Wildcard Let's Encrypt SSL certificates with DNS API support
|
||||
@@ -66,11 +66,11 @@
|
||||
#### Also compatible
|
||||
|
||||
- Debian 10 (Buster)
|
||||
- Raspbian 10 (Buster)
|
||||
- Debian 11 (Bullseye)
|
||||
|
||||
#### For testing purpose only
|
||||
|
||||
- Debian 11 (Bullseye)
|
||||
- Raspbian 10 (Buster)
|
||||
- Raspbian 11 (Bullseye)
|
||||
|
||||
## Getting Started
|
||||
@@ -87,14 +87,13 @@ Detailed Getting Started guide with additional installation methods can be found
|
||||
### Standard WordPress sites
|
||||
|
||||
```bash
|
||||
wo site create example.com --wp # install wordpress with PHP 7.3 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 --wpfc # install wordpress + nginx fastcgi_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 --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 --wp # 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 --wpfc # install wordpress + nginx fastcgi_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 --wpce # install wordpress with Cache-enabler plugin
|
||||
wo site create example.com --wpsc # install wordpress with wp-super-cache plugin
|
||||
```
|
||||
|
||||
### 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 --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 --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 --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
|
||||
```
|
||||
|
||||
@@ -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)
|
||||
- [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 :
|
||||
|
||||
|
||||
12
install
12
install
@@ -9,7 +9,7 @@
|
||||
# -------------------------------------------------------------------------
|
||||
# wget -qO wo wops.cc && sudo -E bash wo
|
||||
# -------------------------------------------------------------------------
|
||||
# Version 3.15.2 - 2022-09-23
|
||||
# Version 3.15.3 - 2022-10-24
|
||||
# -------------------------------------------------------------------------
|
||||
|
||||
# CONTENTS
|
||||
@@ -519,6 +519,8 @@ wo_travis_install() {
|
||||
if [ "$wo_linux_distro" = "Debian" ] || [ "$wo_linux_distro" = "Raspbian" ]; 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
|
||||
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
|
||||
python3 -m pip install git+https://salsa.debian.org/apt-team/python-apt.git@1.8.4.y#egg=python-apt
|
||||
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
|
||||
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
|
||||
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
|
||||
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
|
||||
@@ -728,7 +732,7 @@ wo_woconf() {
|
||||
echo -e '\n[letsencrypt]\n\nkeylength = "ec-384"' >>/etc/wo/wo.conf
|
||||
fi
|
||||
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
|
||||
}
|
||||
@@ -793,7 +797,7 @@ wo_php_fix() {
|
||||
|
||||
wo_git_secure_path() {
|
||||
if ! grep -q "safe" ~/.gitconfig; then
|
||||
echo -e "\n[safe]\n directory = *" >> ~/.gitconfig
|
||||
echo -e "\n[safe]\n directory = *" >>~/.gitconfig
|
||||
fi
|
||||
}
|
||||
|
||||
|
||||
2
setup.py
2
setup.py
@@ -27,7 +27,7 @@ if os.geteuid() == 0:
|
||||
os.makedirs('/var/lib/wo/tmp/')
|
||||
|
||||
setup(name='wordops',
|
||||
version='3.15.2',
|
||||
version='3.15.3',
|
||||
description='An essential toolset that eases server administration',
|
||||
long_description=LONG,
|
||||
long_description_content_type='text/markdown',
|
||||
|
||||
@@ -108,17 +108,12 @@ def pre_pref(self, apt_packages):
|
||||
WORepo.add_key(self, WOVar.wo_php_key)
|
||||
# add redis repository
|
||||
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.debug(self, 'Adding ppa for redis')
|
||||
WORepo.add(self, ppa=WOVar.wo_redis_repo)
|
||||
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)
|
||||
WORepo.add(self, repo_url=WOVar.wo_redis_repo)
|
||||
WORepo.download_key(self, WOVar.wo_redis_key_url)
|
||||
|
||||
# nano
|
||||
if 'nano' in apt_packages:
|
||||
@@ -1401,18 +1396,10 @@ def post_pref(self, apt_packages, packages, upgrade=False):
|
||||
msg="Adding ProFTPd into Git")
|
||||
if os.path.isfile("/etc/proftpd/proftpd.conf"):
|
||||
Log.debug(self, "Setting up Proftpd configuration")
|
||||
WOFileUtils.searchreplace(
|
||||
self, "/etc/proftpd/proftpd.conf",
|
||||
"# DefaultRoot", "DefaultRoot")
|
||||
WOFileUtils.searchreplace(
|
||||
self, "/etc/proftpd/proftpd.conf",
|
||||
"# RequireValidShell", "RequireValidShell")
|
||||
WOFileUtils.searchreplace(
|
||||
self, "/etc/proftpd/proftpd.conf",
|
||||
"# PassivePorts "
|
||||
"49152 65534",
|
||||
"PassivePorts "
|
||||
" 49000 50000")
|
||||
data = dict()
|
||||
WOTemplate.deploy(self,
|
||||
'/etc/proftpd/proftpd.conf',
|
||||
'proftpd.mustache', data)
|
||||
# proftpd TLS configuration
|
||||
if not os.path.isdir("/etc/proftpd/ssl"):
|
||||
WOFileUtils.mkdir(self, "/etc/proftpd/ssl")
|
||||
@@ -1422,10 +1409,6 @@ def post_pref(self, apt_packages, packages, upgrade=False):
|
||||
data = dict()
|
||||
WOTemplate.deploy(self, '/etc/proftpd/tls.conf',
|
||||
'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')
|
||||
|
||||
if os.path.isfile('/etc/ufw/ufw.conf'):
|
||||
|
||||
@@ -383,6 +383,15 @@ class WOStackUpgradeController(CementBaseController):
|
||||
"bash /var/lib/wo/tmp/kickstart.sh "
|
||||
"--dont-wait --no-updates --stable-channel",
|
||||
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")
|
||||
|
||||
if WOAptGet.is_selected(self, 'WordOps Dashboard', packages):
|
||||
|
||||
@@ -41,7 +41,7 @@ location /.well-known/acme-challenge/ {
|
||||
# https://developer.chrome.com/blog/private-prefetch-proxy/
|
||||
location /.well-known/traffic-advice {
|
||||
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;
|
||||
}
|
||||
# Return 403 forbidden for readme.(txt|html) or license.(txt|html) or example.(txt|html) or other common git repository files
|
||||
|
||||
@@ -4,11 +4,13 @@ TLSEngine on
|
||||
TLSRequired on
|
||||
TLSLog /var/log/proftpd/tls.log
|
||||
|
||||
TLSDHParamFile /etc/proftpd/dhparams.pem
|
||||
|
||||
# intermediate configuration from ssl-config.mozilla.org
|
||||
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
|
||||
TLSServerCipherPreference off
|
||||
TLSessionTickets off
|
||||
TLSSessionTickets off
|
||||
TLSOptions NoCertRequest AllowClientRenegotiations NoSessionReuseRequired
|
||||
|
||||
TLSRSACertificateFile /etc/proftpd/ssl/proftpd.crt
|
||||
|
||||
138
wo/cli/templates/proftpd.mustache
Normal file
138
wo/cli/templates/proftpd.mustache
Normal 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/
|
||||
@@ -46,6 +46,13 @@ wo_ufw_setup() {
|
||||
# wordops backend
|
||||
ufw limit 22222
|
||||
fi
|
||||
|
||||
# allow proftpd port if installed
|
||||
if [ -f /etc/proftpd/proftpd.conf ]; then
|
||||
ufw limit 21
|
||||
ufw allow 49000:50000/tcp
|
||||
fi
|
||||
|
||||
# enable ufw
|
||||
if [ -n "$CURRENT_SSH_PORT" ]; then
|
||||
ufw --force enable
|
||||
|
||||
@@ -15,9 +15,9 @@ class WOVar():
|
||||
"""Intialization of core variables"""
|
||||
|
||||
# WordOps version
|
||||
wo_version = "3.15.2"
|
||||
wo_version = "3.15.3"
|
||||
# WordOps packages versions
|
||||
wo_wp_cli = "2.6.0"
|
||||
wo_wp_cli = "2.7.1"
|
||||
wo_adminer = "4.8.1"
|
||||
wo_phpmyadmin = "5.2.0"
|
||||
wo_extplorer = "2.1.13"
|
||||
@@ -200,7 +200,6 @@ class WOVar():
|
||||
codename=wo_platform_codename))
|
||||
if wo_distro == 'ubuntu':
|
||||
wo_php_repo = "ppa:ondrej/php"
|
||||
wo_redis_repo = ("ppa:redislabs/redis")
|
||||
wo_goaccess_repo = ("ppa:alex-p/goaccess")
|
||||
|
||||
else:
|
||||
@@ -208,8 +207,9 @@ class WOVar():
|
||||
"deb https://packages.sury.org/php/ {codename} main"
|
||||
.format(codename=wo_platform_codename))
|
||||
wo_php_key = 'AC0E47584A7A714D'
|
||||
wo_redis_repo = ("deb https://packages.sury.org/php/ {codename} all"
|
||||
.format(codename=wo_platform_codename))
|
||||
wo_redis_key_url = "https://packages.redis.io/gpg"
|
||||
wo_redis_repo = ("deb https://packages.redis.io/deb {codename} main"
|
||||
.format(codename=wo_platform_codename))
|
||||
|
||||
wo_redis = ['redis-server']
|
||||
|
||||
|
||||
Reference in New Issue
Block a user