wp subfolder
Now we can install WP in a subfolder.
This commit is contained in:
parent
617896233e
commit
b77923ec2e
4 changed files with 122 additions and 38 deletions
|
@ -135,8 +135,8 @@ db_delete() {
|
|||
# Get dbname and dbuser of a WP site
|
||||
if [[ -a /var/www/$domain/wp-config.php ]]; then
|
||||
wpconfpath="/var/www/$domain/wp-config.php"
|
||||
elif [[ -a /var/www/$domain/htdocs/wp-config.php ]]; then
|
||||
wpconfpath="/var/www/$domain/htdocs/wp-config.php"
|
||||
elif [[ -a /var/www/$domain/htdocs$subfolder/wp-config.php ]]; then
|
||||
wpconfpath="/var/www/$domain/htdocs$subfolder/wp-config.php"
|
||||
else
|
||||
return
|
||||
fi
|
||||
|
|
74
lib/sites
74
lib/sites
|
@ -7,10 +7,12 @@ source /opt/webinoly/lib/site-ssl
|
|||
|
||||
wp_cache_plugins() {
|
||||
api-events_update si3
|
||||
[[ -z $subfolder ]] && local subfolder=""
|
||||
|
||||
if [[ ! -d /var/www/$domain/htdocs/wp-content/plugins/nginx-helper ]]; then
|
||||
# Download Nginx Helper Plugin
|
||||
sudo wget --timeout=15 -t 1 -qrO /var/www/$domain/htdocs/nginx-helper-plugin.zip https://downloads.wordpress.org/plugin/nginx-helper.latest-stable.zip
|
||||
sudo unzip -qq /var/www/$domain/htdocs/nginx-helper-plugin.zip -d /var/www/$domain/htdocs/wp-content/plugins/
|
||||
sudo unzip -qq /var/www/$domain/htdocs/nginx-helper-plugin.zip -d /var/www/$domain/htdocs$subfolder/wp-content/plugins/
|
||||
sudo rm /var/www/$domain/htdocs/nginx-helper-plugin.zip
|
||||
echo ""
|
||||
echo "${gre} Nginx Helper Plugin has been installed!"
|
||||
|
@ -27,7 +29,7 @@ wp_cache_plugins() {
|
|||
if [[ ! -d /var/www/$domain/htdocs/wp-content/plugins/redis-cache ]]; then
|
||||
# Download Redis Object Cache Plugin
|
||||
sudo wget --timeout=15 -t 1 -qrO /var/www/$domain/htdocs/redis-cache-plugin.zip https://downloads.wordpress.org/plugin/redis-cache.latest-stable.zip
|
||||
sudo unzip -qq /var/www/$domain/htdocs/redis-cache-plugin.zip -d /var/www/$domain/htdocs/wp-content/plugins/
|
||||
sudo unzip -qq /var/www/$domain/htdocs/redis-cache-plugin.zip -d /var/www/$domain/htdocs$subfolder/wp-content/plugins/
|
||||
sudo rm /var/www/$domain/htdocs/redis-cache-plugin.zip
|
||||
echo ""
|
||||
echo "${gre} Redis Object Cache Plugin has been installed!"
|
||||
|
@ -96,7 +98,15 @@ dbword_check() {
|
|||
|
||||
wpinstall() {
|
||||
api-events_update si2
|
||||
[[ -z $domain && -n $mysql ]] && local dom="Webinoly_$(pwgen -s -1)" || local dom=$(echo $domain | sed "s/[^0-9A-Za-z]/_/g")
|
||||
if [[ -z $domain && -n $mysql ]]; then
|
||||
local dom="Webinoly_$(pwgen -s -1)"
|
||||
elif [[ -n $subfolder ]]; then
|
||||
local dom=$(echo "$domain$subfolder" | sed "s/[^0-9A-Za-z]/_/g")
|
||||
sudo mkdir -p /var/www/$domain/htdocs$subfolder
|
||||
else
|
||||
local dom=$(echo $domain | sed "s/[^0-9A-Za-z]/_/g")
|
||||
fi
|
||||
|
||||
local ROOT_PASS=$( echo $(conf_read mysql-root) | openssl enc -d -a -salt )
|
||||
local AUTOGENPASS_WPDB=`pwgen -s -1 16`
|
||||
local setupmysql="y"
|
||||
|
@ -141,9 +151,9 @@ wpinstall() {
|
|||
# Download WP (latest version)
|
||||
if [[ $type == [123] ]]; then
|
||||
sudo wget --timeout=15 -t 1 -qrO /var/www/$domain/htdocs/wp.tar.gz https://wordpress.org/latest.tar.gz
|
||||
sudo tar -xf /var/www/$domain/htdocs/wp.tar.gz -C /var/www/$domain/htdocs/
|
||||
sudo mv /var/www/$domain/htdocs/wordpress/* /var/www/$domain/htdocs/
|
||||
sudo rm -rf /var/www/$domain/htdocs/wordpress
|
||||
sudo tar -xf /var/www/$domain/htdocs/wp.tar.gz -C /var/www/$domain/
|
||||
sudo mv /var/www/$domain/wordpress/* /var/www/$domain/htdocs$subfolder/
|
||||
sudo rm -rf /var/www/$domain/wordpress
|
||||
sudo rm /var/www/$domain/htdocs/wp.tar.gz
|
||||
fi
|
||||
|
||||
|
@ -396,41 +406,42 @@ _EOF_
|
|||
|
||||
#WP-Config.php auto-setup
|
||||
if [[ $setupwp == [yY] ]] ; then
|
||||
cp /var/www/$domain/htdocs/wp-config-sample.php /var/www/$domain/wp-config.php
|
||||
[[ -z $subfolder ]] && local wpcon="/var/www/$domain/wp-config.php" || local wpcon="/var/www/$domain/htdocs$subfolder/wp-config.php"
|
||||
cp /var/www/$domain/htdocs$subfolder/wp-config-sample.php $wpcon
|
||||
|
||||
# Fill new wp-config with data
|
||||
sudo sed -i "/DB_NAME/c \define('DB_NAME', '$dbname');" /var/www/$domain/wp-config.php
|
||||
sudo sed -i "/DB_USER/c \define('DB_USER', '$dbuser');" /var/www/$domain/wp-config.php
|
||||
sudo sed -i "/DB_PASSWORD/c \define('DB_PASSWORD', '$dbpass');" /var/www/$domain/wp-config.php
|
||||
sudo sed -i "/DB_HOST/c \define('DB_HOST', '$dbhost');" /var/www/$domain/wp-config.php
|
||||
sudo sed -i "/table_prefix/c \$table_prefix = '$dbpref';" /var/www/$domain/wp-config.php
|
||||
sudo sed -i "/DB_NAME/c \define('DB_NAME', '$dbname');" $wpcon
|
||||
sudo sed -i "/DB_USER/c \define('DB_USER', '$dbuser');" $wpcon
|
||||
sudo sed -i "/DB_PASSWORD/c \define('DB_PASSWORD', '$dbpass');" $wpcon
|
||||
sudo sed -i "/DB_HOST/c \define('DB_HOST', '$dbhost');" $wpcon
|
||||
sudo sed -i "/table_prefix/c \$table_prefix = '$dbpref';" $wpcon
|
||||
|
||||
sudo sed -i "/'AUTH_KEY'/c \define('AUTH_KEY', '$(pwgen -s -1 64)');" /var/www/$domain/wp-config.php
|
||||
sudo sed -i "/'SECURE_AUTH_KEY'/c \define('SECURE_AUTH_KEY', '$(pwgen -s -1 64)');" /var/www/$domain/wp-config.php
|
||||
sudo sed -i "/'LOGGED_IN_KEY'/c \define('LOGGED_IN_KEY', '$(pwgen -s -1 64)');" /var/www/$domain/wp-config.php
|
||||
sudo sed -i "/'NONCE_KEY'/c \define('NONCE_KEY', '$(pwgen -s -1 64)');" /var/www/$domain/wp-config.php
|
||||
sudo sed -i "/'AUTH_SALT'/c \define('AUTH_SALT', '$(pwgen -s -1 64)');" /var/www/$domain/wp-config.php
|
||||
sudo sed -i "/'SECURE_AUTH_SALT'/c \define('SECURE_AUTH_SALT','$(pwgen -s -1 64)');" /var/www/$domain/wp-config.php
|
||||
sudo sed -i "/'LOGGED_IN_SALT'/c \define('LOGGED_IN_SALT', '$(pwgen -s -1 64)');" /var/www/$domain/wp-config.php
|
||||
sudo sed -i "/'NONCE_SALT'/c \define('NONCE_SALT', '$(pwgen -s -1 64)');" /var/www/$domain/wp-config.php
|
||||
sudo sed -i "/'AUTH_KEY'/c \define('AUTH_KEY', '$(pwgen -s -1 64)');" $wpcon
|
||||
sudo sed -i "/'SECURE_AUTH_KEY'/c \define('SECURE_AUTH_KEY', '$(pwgen -s -1 64)');" $wpcon
|
||||
sudo sed -i "/'LOGGED_IN_KEY'/c \define('LOGGED_IN_KEY', '$(pwgen -s -1 64)');" $wpcon
|
||||
sudo sed -i "/'NONCE_KEY'/c \define('NONCE_KEY', '$(pwgen -s -1 64)');" $wpcon
|
||||
sudo sed -i "/'AUTH_SALT'/c \define('AUTH_SALT', '$(pwgen -s -1 64)');" $wpcon
|
||||
sudo sed -i "/'SECURE_AUTH_SALT'/c \define('SECURE_AUTH_SALT','$(pwgen -s -1 64)');" $wpcon
|
||||
sudo sed -i "/'LOGGED_IN_SALT'/c \define('LOGGED_IN_SALT', '$(pwgen -s -1 64)');" $wpcon
|
||||
sudo sed -i "/'NONCE_SALT'/c \define('NONCE_SALT', '$(pwgen -s -1 64)');" $wpcon
|
||||
|
||||
# Redis Conf
|
||||
sudo sed -i "/stop editing/i \define('WP_REDIS_SELECTIVE_FLUSH', true);" /var/www/$domain/wp-config.php
|
||||
sudo sed -i "/stop editing/i \define('WP_CACHE_KEY_SALT', 'redis_object_cache_for_wp_$domain');" /var/www/$domain/wp-config.php
|
||||
sudo sed -i "/stop editing/i \define('WP_REDIS_SELECTIVE_FLUSH', true);" $wpcon
|
||||
sudo sed -i "/stop editing/i \define('WP_CACHE_KEY_SALT', 'redis_object_cache_for_wp_$domain');" $wpcon
|
||||
|
||||
# Multisite wp-config
|
||||
if [[ -n $wpsubdir || -n $wpsubdom ]]; then
|
||||
sudo sed -i "/stop editing/i \define('WP_ALLOW_MULTISITE', true);" /var/www/$domain/wp-config.php
|
||||
sudo sed -i "/stop editing/i \#define('MULTISITE', true);" /var/www/$domain/wp-config.php
|
||||
sudo sed -i "/stop editing/i \#define('DOMAIN_CURRENT_SITE', '$domain');" /var/www/$domain/wp-config.php
|
||||
sudo sed -i "/stop editing/i \#define('PATH_CURRENT_SITE', '/');" /var/www/$domain/wp-config.php
|
||||
sudo sed -i "/stop editing/i \#define('SITE_ID_CURRENT_SITE', 1);" /var/www/$domain/wp-config.php
|
||||
sudo sed -i "/stop editing/i \#define('BLOG_ID_CURRENT_SITE', 1);" /var/www/$domain/wp-config.php
|
||||
sudo sed -i "/stop editing/i \define('WP_ALLOW_MULTISITE', true);" $wpcon
|
||||
sudo sed -i "/stop editing/i \#define('MULTISITE', true);" $wpcon
|
||||
sudo sed -i "/stop editing/i \#define('DOMAIN_CURRENT_SITE', '$domain');" $wpcon
|
||||
sudo sed -i "/stop editing/i \#define('PATH_CURRENT_SITE', '/');" $wpcon
|
||||
sudo sed -i "/stop editing/i \#define('SITE_ID_CURRENT_SITE', 1);" $wpcon
|
||||
sudo sed -i "/stop editing/i \#define('BLOG_ID_CURRENT_SITE', 1);" $wpcon
|
||||
fi
|
||||
if [[ -n $wpsubdir ]]; then
|
||||
sudo sed -i "/stop editing/i \#define('SUBDOMAIN_INSTALL', false);" /var/www/$domain/wp-config.php
|
||||
sudo sed -i "/stop editing/i \#define('SUBDOMAIN_INSTALL', false);" $wpcon
|
||||
elif [[ -n $wpsubdom ]]; then
|
||||
sudo sed -i "/stop editing/i \#define('SUBDOMAIN_INSTALL', true);" /var/www/$domain/wp-config.php
|
||||
sudo sed -i "/stop editing/i \#define('SUBDOMAIN_INSTALL', true);" $wpcon
|
||||
sudo sed -i "/server_name /c \ server_name $domain *.$domain;" /etc/nginx/sites-available/$domain
|
||||
fi
|
||||
fi
|
||||
|
@ -470,6 +481,7 @@ deletesite() {
|
|||
|
||||
|
||||
# Delete site files
|
||||
sudo rm -rf /etc/nginx/apps.d/$domain*.conf
|
||||
sudo rm -rf /etc/nginx/sites-available/$domain
|
||||
sudo rm -rf /etc/nginx/sites-enabled/$domain
|
||||
sudo rm -rf /var/www/$domain
|
||||
|
@ -484,7 +496,7 @@ createsite() {
|
|||
# Check domain and then prevent reserved characters for file names.
|
||||
domain_check $domain
|
||||
domain=$(echo $domain | sed "s/[^\.0-9A-Za-z\-]/_/g" | sed "s/^[\.]/_/g" | sed "s/\.\./_/g")
|
||||
|
||||
|
||||
# Check for duplicate sites
|
||||
if [[ -a /etc/nginx/sites-available/$domain ]]; then
|
||||
echo "${red}[ERROR] Can not create site${blu} $domain ${red}because already exists!${end}"
|
||||
|
|
72
plugins/site
72
plugins/site
|
@ -3,7 +3,7 @@
|
|||
# Site Manager Plugin (Create, delete and de/activate)
|
||||
# Syntax: site <domain> <option> <argument>
|
||||
# Options: -html, -php, -mysql, -wp, -wpsubdir, -wpsubdom, -parked, -proxy, -on, -off, -delete, -delete-all, -list, -cache, -ssl, -force-redirect, -yoast-sitemap
|
||||
# Arguments: -cache, -root, -root-path, -subdomain, -ignore-ssl, -wildcard, -raw, -external-db, -revoke, -ssl-crt, -ssl-key, -ssl-ocsp
|
||||
# Arguments: -cache, -root, -root-path, -subdomain, -ignore-ssl, -wildcard, -raw, -external-db, -revoke, -ssl-crt, -ssl-key, -ssl-ocsp, -subfolder
|
||||
|
||||
# shopt is necessary for this kind !(html|22222) of patterns
|
||||
shopt -s extglob
|
||||
|
@ -104,6 +104,14 @@ if [[ -n $wp || -n $wpsubdir || -n $wpsubdom || -n $mysql ]]; then
|
|||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
# Check for valid WP subfolder
|
||||
[[ -z $subfolder ]] && subfolder=""
|
||||
if [[ -n $subfolder && $type != [123] ]]; then
|
||||
echo "${red}[ERROR] Subfolder option is only supported for WordPress sites!${end}"
|
||||
exit 1
|
||||
fi
|
||||
# Check for stack packages
|
||||
[[ $type == [123] || -n $php ]] && check_for_php -ask
|
||||
[[ $type == [24] ]] && check_for_mysql -ask
|
||||
|
||||
|
@ -204,10 +212,52 @@ elif [[ -n $html && -n $domain ]]; then
|
|||
|
||||
# Create WP site
|
||||
elif [[ -n $wp && -n $domain ]]; then
|
||||
createsite
|
||||
sudo sed -i '/locations.conf/i \ include common/wpcommon.conf;' /etc/nginx/sites-available/$domain
|
||||
[[ $(conf_read wp-admin-auth) == "purged" ]] && sudo httpauth -wp-admin=off -site=$domain
|
||||
[[ $(conf_read yoast-sitemap) != "purged" ]] && sudo site $domain -yoast-sitemap=on
|
||||
if [[ -z $subfolder ]]; then
|
||||
createsite
|
||||
sudo sed -i '/locations.conf/i \ include common/wpcommon.conf;' /etc/nginx/sites-available/$domain
|
||||
[[ $(conf_read wp-admin-auth) == "purged" ]] && sudo httpauth -wp-admin=off -site=$domain
|
||||
[[ $(conf_read yoast-sitemap) != "purged" ]] && sudo site $domain -yoast-sitemap=on
|
||||
else
|
||||
if [[ -n $subfolder && ! ( $subfolder =~ ^\/([A-Za-z0-9_\/\-]+)?[^\/]$ ) ]]; then
|
||||
echo "${red}[ERROR] Please, enter a valid value for subfolder!${end}"
|
||||
exit 1
|
||||
fi
|
||||
if [[ -a /etc/nginx/sites-available/$domain && -n $subfolder && $type == [123] && -d /var/www/$domain/htdocs$subfolder ]]; then
|
||||
echo "${red}[ERROR] Subfolder ${blu}'$subfolder'${red} already exists!${end}"
|
||||
exit 1
|
||||
elif [[ -a /etc/nginx/sites-available/$domain && -n $subfolder && $type == [123] && ! -d /var/www/$domain/htdocs$subfolder ]]; then
|
||||
wpinstall
|
||||
echo "${gre}WordPress has been successfully installed in${blu} $domain$subfolder ${gre}subfolder!${end}"
|
||||
else
|
||||
createsite
|
||||
fi
|
||||
|
||||
subname=$(echo $subfolder | sed "s/\//_/g")
|
||||
sudo sed -i "/# WebinolyCustom$/a \ include apps.d/$domain$subname-php.conf;" /etc/nginx/sites-available/$domain
|
||||
|
||||
sudo cp /etc/nginx/common/php.conf /etc/nginx/apps.d/$domain$subname-php.conf
|
||||
sudo cp /etc/nginx/common/wpfc.conf /etc/nginx/apps.d/$domain$subname-wpfc.conf
|
||||
sudo cp /etc/nginx/common/wpcommon.conf /etc/nginx/apps.d/$domain$subname-wpcommon.conf
|
||||
sudo cp /etc/nginx/common/locations.conf /etc/nginx/apps.d/$domain$subname-locations.conf
|
||||
#sudo cp /etc/nginx/common/yoast-sitemap.conf /etc/nginx/apps.d/$domain$subname-yoast-sitemap.conf
|
||||
|
||||
sudo sed -i "/^location \/ {/,/^}$/{/.*/d}" /etc/nginx/apps.d/$domain$subname-php.conf
|
||||
sudo sed -i "/^location \/ {/,/^}$/{/.*/d}" /etc/nginx/apps.d/$domain$subname-wpfc.conf
|
||||
sudo sed -i '/DO NOT MODIFY,/r /opt/webinoly/templates/template-site-wpsubfolder' /etc/nginx/apps.d/$domain$subname-php.conf
|
||||
sudo cat /opt/webinoly/templates/template-site-wpsubfolder >> /etc/nginx/apps.d/$domain$subname-wpfc.conf
|
||||
sudo sed -i "s#subfolder#$subfolder#g" /etc/nginx/apps.d/$domain$subname-php.conf
|
||||
sudo sed -i "s#subfolder#$subfolder#g" /etc/nginx/apps.d/$domain$subname-wpfc.conf
|
||||
sudo sed -i "s/domain/$domain/g" /etc/nginx/apps.d/$domain$subname-php.conf
|
||||
sudo sed -i "s/domain/$domain/g" /etc/nginx/apps.d/$domain$subname-wpfc.conf
|
||||
sudo sed -i "s/subname/$subname/g" /etc/nginx/apps.d/$domain$subname-php.conf
|
||||
sudo sed -i "s/subname/$subname/g" /etc/nginx/apps.d/$domain$subname-wpfc.conf
|
||||
|
||||
sed -ri "s/^location(.*)\/([a-z].*)$/location\1subfolder\/\2/" /etc/nginx/apps.d/$domain$subname-locations.conf
|
||||
sed -ri "s/location(.*) \/(.*) \{$/location\1 subfolder\/\2 \{/" /etc/nginx/apps.d/$domain$subname-wpcommon.conf
|
||||
sudo sed -i "s#subfolder#$subfolder#g" /etc/nginx/apps.d/$domain$subname-locations.conf
|
||||
sudo sed -i "s#subfolder#$subfolder#g" /etc/nginx/apps.d/$domain$subname-wpcommon.conf
|
||||
|
||||
fi
|
||||
|
||||
# Create WP Multisite (Sub-directory)
|
||||
elif [[ -n $wpsubdir && -n $domain ]]; then
|
||||
|
@ -332,6 +382,18 @@ elif [[ -n $delete && -a /etc/nginx/sites-available/$domain ]]; then
|
|||
if [[ $domain == "default" || $domain == $(conf_read tools-port) ]]; then
|
||||
echo "${red}[ERROR] System sites can not be removed!${end}"
|
||||
exit 1
|
||||
elif [[ -n $subfolder ]]; then
|
||||
if [[ ! -a /var/www/$domain/htdocs$subfolder/wp-config.php ]]; then
|
||||
echo "${red}[ERROR] Subfolder not found or is not a WP subsite!${end}"
|
||||
exit 1
|
||||
fi
|
||||
db_delete $domain
|
||||
subname=$(echo $subfolder | sed "s/\//_/g")
|
||||
sudo rm -rf /var/www/$domain/htdocs$subfolder
|
||||
sudo rm -rf /etc/nginx/apps.d/$domain$subname*.conf
|
||||
sudo sed -i "/# WebinolyCustom/,/# WebinolyCustomEnd/{/$domain$subname-php.conf/d}" /etc/nginx/sites-available/$domain
|
||||
sudo sed -i "/# WebinolyCustom/,/# WebinolyCustomEnd/{/$domain$subname-wpfc.conf/d}" /etc/nginx/sites-available/$domain
|
||||
echo "${gre}Subfolder${blu} $subfolder ${gre}from${blu} $domain ${gre}has been successfully deleted!${end}"
|
||||
else
|
||||
deletesite
|
||||
fi
|
||||
|
|
10
templates/template-site-wpsubfolder
Normal file
10
templates/template-site-wpsubfolder
Normal file
|
@ -0,0 +1,10 @@
|
|||
|
||||
location subfolder/ {
|
||||
try_files $uri $uri/ subfolder/index.php?q=$uri&$args;
|
||||
include apps.d/domainsubname-wpcommon.conf;
|
||||
include apps.d/domainsubname-locations.conf;
|
||||
include common/headers-http.conf;
|
||||
include common/headers-html.conf;
|
||||
include /var/www/domain.com/*subname-nginx.conf;
|
||||
}
|
||||
|
Loading…
Add table
Reference in a new issue