Compare commits
5 Commits
1a7e587092
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
| 7937261925 | |||
| 7babef1372 | |||
| d7ca1abece | |||
|
|
e8d324e89d | ||
|
|
292e7e98bc |
@@ -1,3 +1,5 @@
|
|||||||
[user]
|
[user]
|
||||||
name = VDI Devs
|
name = VDI Devs
|
||||||
email = dev@vincentdesign.ca
|
email = dev@vincentdesign.ca
|
||||||
|
[safe]
|
||||||
|
directory = /var/www
|
||||||
|
|||||||
7
.gitignore
vendored
7
.gitignore
vendored
@@ -4,3 +4,10 @@
|
|||||||
.well-known/
|
.well-known/
|
||||||
logs/
|
logs/
|
||||||
*.sqlite
|
*.sqlite
|
||||||
|
.cache/
|
||||||
|
.config/
|
||||||
|
.local/
|
||||||
|
.npm/
|
||||||
|
.zcompdump
|
||||||
|
*.local
|
||||||
|
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
8
helpers/dev-sites.path
Normal file
8
helpers/dev-sites.path
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
[Unit]
|
||||||
|
Description=Watch for new dev sites
|
||||||
|
|
||||||
|
[Path]
|
||||||
|
PathModified=/var/www
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=multi-user.target
|
||||||
6
helpers/dev-sites.service
Normal file
6
helpers/dev-sites.service
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
[Unit]
|
||||||
|
Description=Update hosts entries for dev sites
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
Type=oneshot
|
||||||
|
ExecStart=/usr/local/bin/update-dev-hosts.sh
|
||||||
56
helpers/gen-wpcontent-shares
Executable file
56
helpers/gen-wpcontent-shares
Executable file
@@ -0,0 +1,56 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
set -euo pipefail
|
||||||
|
|
||||||
|
wwwRoot="/var/www"
|
||||||
|
outFile="/etc/samba/wordops-wpcontent-shares.conf"
|
||||||
|
tmpFile="$(mktemp)"
|
||||||
|
|
||||||
|
# Change these to match your world:
|
||||||
|
sambaGroup="dev" # group allowed to access shares
|
||||||
|
forceGroup="dev" # group to force on created files (optional)
|
||||||
|
|
||||||
|
{
|
||||||
|
echo "; AUTO-GENERATED FILE - DO NOT EDIT"
|
||||||
|
echo "; Generated: $(date -Is)"
|
||||||
|
echo
|
||||||
|
|
||||||
|
shopt -s nullglob
|
||||||
|
for siteDir in "${wwwRoot}"/*; do
|
||||||
|
site="$(basename "${siteDir}")"
|
||||||
|
wpContent="${wwwRoot}/${site}/htdocs/wp-content"
|
||||||
|
|
||||||
|
# Only create shares for sites that look like WP installs
|
||||||
|
if [[ -d "${wpContent}" ]]; then
|
||||||
|
cat <<SHARE
|
||||||
|
|
||||||
|
[${site}]
|
||||||
|
comment = WordPress wp-content for ${site}
|
||||||
|
path = ${wpContent}
|
||||||
|
browseable = yes
|
||||||
|
writable = yes
|
||||||
|
read only = no
|
||||||
|
guest ok = no
|
||||||
|
|
||||||
|
; Lock access down to a group
|
||||||
|
valid users = @${sambaGroup}
|
||||||
|
|
||||||
|
; Keep permissions sane for webserver + devs
|
||||||
|
force group = ${forceGroup}
|
||||||
|
create mask = 0664
|
||||||
|
directory mask = 2775
|
||||||
|
|
||||||
|
; Optional: reduce Finder/Windows junk
|
||||||
|
veto files = /Thumbs.db/.DS_Store/._.DS_Store/
|
||||||
|
SHARE
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
} > "${tmpFile}"
|
||||||
|
|
||||||
|
# Basic sanity check: refuse to install a broken file
|
||||||
|
testparm -s "${tmpFile}" >/dev/null
|
||||||
|
|
||||||
|
sudo mv "${tmpFile}" "${outFile}"
|
||||||
|
sudo chmod 0644 "${outFile}"
|
||||||
|
|
||||||
|
# Reload Samba to pick up new shares (no disconnect like restart)
|
||||||
|
sudo systemctl reload smbd || sudo systemctl reload samba
|
||||||
9
helpers/gen-wpcontent-shares.path
Normal file
9
helpers/gen-wpcontent-shares.path
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
[Unit]
|
||||||
|
Description=Watch /var/www and regenerate Samba shares on change
|
||||||
|
|
||||||
|
[Path]
|
||||||
|
PathChanged=/var/www
|
||||||
|
PathModified=/var/www
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=multi-user.target
|
||||||
6
helpers/gen-wpcontent-shares.service
Normal file
6
helpers/gen-wpcontent-shares.service
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
[Unit]
|
||||||
|
Description=Generate Samba shares for WordPress wp-content folders
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
Type=oneshot
|
||||||
|
ExecStart=/usr/local/sbin/gen-wpcontent-shares
|
||||||
31
helpers/update-dev-hosts.sh
Normal file
31
helpers/update-dev-hosts.sh
Normal file
@@ -0,0 +1,31 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
HOSTS_FILE="/etc/hosts"
|
||||||
|
SITES_DIR="/var/www"
|
||||||
|
DEV_DOMAIN="vincentdevelopment.ca"
|
||||||
|
|
||||||
|
TMP=$(mktemp)
|
||||||
|
|
||||||
|
echo "# BEGIN DEV-SITES" >> "$TMP"
|
||||||
|
|
||||||
|
for dir in "$SITES_DIR"/*; do
|
||||||
|
site=$(basename "$dir")
|
||||||
|
|
||||||
|
# Skip system dirs
|
||||||
|
[[ "$site" == "html" ]] && continue
|
||||||
|
|
||||||
|
echo "127.0.0.1 $site" >> "$TMP"
|
||||||
|
|
||||||
|
# Uncomment when system goes live
|
||||||
|
# echo "127.0.0.1 $site $site.$DEV_DOMAIN"
|
||||||
|
done
|
||||||
|
|
||||||
|
echo "# END DEV-SITES" >> "$TMP"
|
||||||
|
|
||||||
|
# Remove existing block
|
||||||
|
sed -i '/# BEGIN DEV-SITES/,/# END DEV-SITES/d' "$HOSTS_FILE"
|
||||||
|
|
||||||
|
# Append fresh block
|
||||||
|
cat "$TMP" >> "$HOSTS_FILE"
|
||||||
|
|
||||||
|
rm "$TMP"
|
||||||
@@ -90,8 +90,10 @@ else
|
|||||||
if wp user list --field=user_email | grep -q "^${ADMIN_EMAIL}\$"; then
|
if wp user list --field=user_email | grep -q "^${ADMIN_EMAIL}\$"; then
|
||||||
echo "Admin email ${ADMIN_EMAIL} already in use; skipping user create."
|
echo "Admin email ${ADMIN_EMAIL} already in use; skipping user create."
|
||||||
else
|
else
|
||||||
wp user create "$ADMIN_USER" "$ADMIN_EMAIL" --role=administrator --user_pass="$(openssl rand -base64 16)"
|
PASS=$(openssl rand -base64 16)
|
||||||
echo "Admin user $ADMIN_USER created with email $ADMIN_EMAIL (random password)."
|
|
||||||
|
wp user create "$ADMIN_USER" "$ADMIN_EMAIL" --role=administrator --user_pass="$PASS"
|
||||||
|
echo "Admin user $ADMIN_USER created with email $ADMIN_EMAIL ($PASS)."
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
@@ -119,6 +121,12 @@ DEV_PLUGINS=(
|
|||||||
query-monitor
|
query-monitor
|
||||||
user-switching
|
user-switching
|
||||||
debug-bar
|
debug-bar
|
||||||
|
https://docs.vincentdevelopment.ca/files/advanced-custom-fields-pro.zip
|
||||||
|
https://docs.vincentdevelopment.ca/files/gravity-forms.zip
|
||||||
|
autodescription
|
||||||
|
better-search-replace
|
||||||
|
google-site-kit
|
||||||
|
simple-history
|
||||||
)
|
)
|
||||||
|
|
||||||
for PLUGIN in "${DEV_PLUGINS[@]}"; do
|
for PLUGIN in "${DEV_PLUGINS[@]}"; do
|
||||||
@@ -151,7 +159,7 @@ if [[ -n "$THEME_STARTER_REPO" ]]; then
|
|||||||
mkdir -p "$THEMES_DIR"
|
mkdir -p "$THEMES_DIR"
|
||||||
|
|
||||||
# Slug from project name
|
# Slug from project name
|
||||||
THEME_SLUG=$(echo "$PROJECT_NAME" | tr '[:upper:]' '[:lower:]' | tr -cs 'a-z0-9' '-')
|
THEME_SLUG=$(echo "$PROJECT_NAME" | tr '[:upper:]' '[:lower:]' | tr -cs 'a-z0-9' '-' | sed 's/-$//')
|
||||||
[[ -z "$THEME_SLUG" ]] && THEME_SLUG="custom-theme"
|
[[ -z "$THEME_SLUG" ]] && THEME_SLUG="custom-theme"
|
||||||
|
|
||||||
TARGET_THEME_DIR="${THEMES_DIR}/${THEME_SLUG}"
|
TARGET_THEME_DIR="${THEMES_DIR}/${THEME_SLUG}"
|
||||||
@@ -187,4 +195,15 @@ else
|
|||||||
echo "==> Theme starter repo not provided; skipping theme bootstrap."
|
echo "==> Theme starter repo not provided; skipping theme bootstrap."
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
echo "==> Installing dependencies..."
|
||||||
|
cd "$TARGET_THEME_DIR"
|
||||||
|
/usr/local/bin/composer install
|
||||||
|
/usr/bin/npm install
|
||||||
|
|
||||||
|
echo "==> Doing initial build..."
|
||||||
|
/usr/bin/npm run build
|
||||||
|
|
||||||
|
echo "==> Updating site permissions..."
|
||||||
|
sudo /usr/local/bin/wo-fix-perms.sh "$DOMAIN"
|
||||||
|
|
||||||
echo "==> Bootstrap complete."
|
echo "==> Bootstrap complete."
|
||||||
|
|||||||
Reference in New Issue
Block a user