summaryrefslogtreecommitdiff
path: root/_site/jekyll-nginx.sh
diff options
context:
space:
mode:
Diffstat (limited to '_site/jekyll-nginx.sh')
-rw-r--r--_site/jekyll-nginx.sh83
1 files changed, 83 insertions, 0 deletions
diff --git a/_site/jekyll-nginx.sh b/_site/jekyll-nginx.sh
new file mode 100644
index 0000000..634449d
--- /dev/null
+++ b/_site/jekyll-nginx.sh
@@ -0,0 +1,83 @@
+#!/bin/bash
+
+# Exit on errors
+set -e
+
+# Variables
+USER_HOME="/data"
+SITE_NAME="stg-jekyll"
+BARE_REPO="$USER_HOME/repos/$SITE_NAME.git"
+SITE_DIR="$USER_HOME/sites/$SITE_NAME"
+PUBLIC_DIR="$SITE_DIR/html"
+DOMAIN="sanderstechnologygroup.com"
+NGINX_CONF="/etc/nginx/sites-available/$DOMAIN.conf"
+
+# Update and install dependencies
+sudo apt update
+sudo apt install -y ruby-full build-essential zlib1g-dev git nginx
+
+# Setup Ruby environment in .bashrc if not already present
+if ! grep -q 'export GEM_HOME' "$USER_HOME/.bashrc"; then
+ echo 'export GEM_HOME="$HOME/gems"' >> "$USER_HOME/.bashrc"
+ echo 'export PATH="$HOME/gems/bin:$PATH"' >> "$USER_HOME/.bashrc"
+fi
+
+# Load environment
+export GEM_HOME="$USER_HOME/gems"
+export PATH="$USER_HOME/gems/bin:$PATH"
+
+# Install Jekyll and Bundler
+gem install jekyll bundler
+
+# Create directories
+mkdir -p "$BARE_REPO" "$SITE_DIR" "$PUBLIC_DIR"
+
+# Setup Git bare repo
+cd "$BARE_REPO"
+git init --bare
+
+# Create post-receive hook
+cat > hooks/post-receive <<EOF
+#!/bin/bash
+TARGET_DIR="$SITE_DIR"
+PUBLIC_DIR="$PUBLIC_DIR"
+
+export GEM_HOME="$USER_HOME/gems"
+export PATH="$USER_HOME/gems/bin:$PATH"
+
+GIT_WORK_TREE="\$TARGET_DIR" git checkout -f
+
+cd "\$TARGET_DIR"
+bundle install --path vendor/bundle
+bundle exec jekyll build -d "\$PUBLIC_DIR"
+EOF
+
+chmod +x hooks/post-receive
+
+# Adjust permissions for NGINX access
+chmod o+x "$USER_HOME"
+chmod -R o+rX "$PUBLIC_DIR"
+
+# Create NGINX config
+sudo tee "$NGINX_CONF" > /dev/null <<EOF
+server {
+ listen 80;
+ server_name $DOMAIN;
+
+ root $PUBLIC_DIR;
+ index index.html;
+
+ location / {
+ try_files \$uri \$uri.html \$uri/ =404;
+ }
+}
+EOF
+
+# Enable NGINX site
+sudo ln -s "$NGINX_CONF" /etc/nginx/sites-enabled/
+
+# Test and reload NGINX
+sudo nginx -t && sudo systemctl reload nginx
+
+echo "✅ Jekyll site deployment setup complete."
+echo "➡️ Push your site with: git remote add live ssh://ben@64.42.180.156/$BARE_REPO && git push live master"