70 lines
2.8 KiB
Bash
70 lines
2.8 KiB
Bash
#!/usr/bin/env bash
|
||
set -euo pipefail
|
||
source ./lib.sh
|
||
|
||
log "App bereitstellen …"
|
||
mkdir -p "$(dirname "$APP_DIR")"
|
||
chown -R "$APP_USER":"$APP_GROUP" "$(dirname "$APP_DIR")"
|
||
|
||
# Repo holen oder Laravel anlegen – passe GIT_REPO/GIT_BRANCH bei Bedarf an
|
||
GIT_REPO="${GIT_REPO:-https://example.com/your-repo-placeholder.git}"
|
||
GIT_BRANCH="${GIT_BRANCH:-main}"
|
||
|
||
if [[ "${GIT_REPO}" == "https://example.com/your-repo-placeholder.git" ]]; then
|
||
[[ -d "$APP_DIR" && -n "$(ls -A "$APP_DIR" 2>/dev/null || true)" ]] || \
|
||
sudo -u "$APP_USER" -H bash -lc "cd /var/www && composer create-project laravel/laravel ${APP_USER} --no-interaction"
|
||
else
|
||
if [[ ! -d "${APP_DIR}/.git" ]]; then
|
||
sudo -u "$APP_USER" -H bash -lc "git clone --depth=1 -b ${GIT_BRANCH} ${GIT_REPO} ${APP_DIR}"
|
||
else
|
||
sudo -u "$APP_USER" -H bash -lc "cd ${APP_DIR} && git fetch --depth=1 origin ${GIT_BRANCH} && git reset --hard origin/${GIT_BRANCH}"
|
||
fi
|
||
[[ -f "${APP_DIR}/composer.json" ]] && sudo -u "$APP_USER" -H bash -lc "cd ${APP_DIR} && composer install --no-interaction --prefer-dist"
|
||
fi
|
||
|
||
ENV_FILE="${APP_DIR}/.env"
|
||
sudo -u "$APP_USER" -H bash -lc "cd ${APP_DIR} && cp -n .env.example .env || true"
|
||
grep -q '^APP_KEY=' "$ENV_FILE" || echo "APP_KEY=" >> "$ENV_FILE"
|
||
sudo -u "$APP_USER" -H bash -lc "cd ${APP_DIR} && php artisan key:generate --force || true"
|
||
|
||
# APP_URL heuristisch
|
||
APP_URL="http://${SERVER_PUBLIC_IPV4}"
|
||
UI_CERT="/etc/ssl/ui/fullchain.pem"; UI_KEY="/etc/ssl/ui/privkey.pem"
|
||
if [[ -f "$UI_CERT" && -f "$UI_KEY" && resolve_ok "$UI_HOST" ]]; then
|
||
APP_URL="https://${UI_HOST}"
|
||
fi
|
||
|
||
upsert_env APP_NAME "${APP_NAME}"
|
||
upsert_env APP_URL "${APP_URL}"
|
||
upsert_env APP_ENV "production"
|
||
upsert_env APP_DEBUG "false"
|
||
upsert_env APP_LOCALE "${APP_LOCALE}"
|
||
upsert_env APP_FALLBACK_LOCALE "en"
|
||
upsert_env SERVER_PUBLIC_IPV4 "${SERVER_PUBLIC_IPV4}"
|
||
upsert_env SERVER_PUBLIC_IPV6 "${SERVER_PUBLIC_IPV6}"
|
||
|
||
upsert_env BASE_DOMAIN "${BASE_DOMAIN}"
|
||
upsert_env UI_SUB "${UI_SUB}"
|
||
upsert_env WEBMAIL_SUB "${WEBMAIL_SUB}"
|
||
upsert_env SYSTEM_SUB "${SYSTEM_SUB}"
|
||
upsert_env MTA_SUB "${MTA_SUB}"
|
||
|
||
upsert_env DB_CONNECTION "mysql"
|
||
upsert_env DB_HOST "127.0.0.1"
|
||
upsert_env DB_PORT "3306"
|
||
upsert_env DB_DATABASE "${DB_NAME}"
|
||
upsert_env DB_USERNAME "${DB_USER}"
|
||
upsert_env DB_PASSWORD "${DB_PASS}"
|
||
|
||
upsert_env CACHE_DRIVER "redis"
|
||
upsert_env SESSION_DRIVER "redis"
|
||
upsert_env REDIS_CLIENT "phpredis"
|
||
upsert_env REDIS_HOST "127.0.0.1"
|
||
upsert_env REDIS_PORT "6379"
|
||
upsert_env REDIS_PASSWORD "${REDIS_PASS:-}"
|
||
|
||
chown -R "$APP_USER":"$APP_GROUP" "$APP_DIR"
|
||
chmod -R u=rwX,g=rwX,o=rX "$APP_DIR"
|
||
install -d -m 0775 -o "$APP_USER" -g "$APP_GROUP" "$APP_DIR/storage" "$APP_DIR/bootstrap/cache"
|
||
|
||
sudo -u "$APP_USER" -H bash -lc "cd ${APP_DIR} && php artisan optimize:clear && php artisan config:cache" |