diff --git a/README.md b/README.md index f1e4aaa..1251e4f 100644 --- a/README.md +++ b/README.md @@ -40,6 +40,8 @@ cd xlx sudo bash scripts/install-system.sh ``` +Web-панель устанавливается в `/opt/xlx-server`, поэтому Apache не зависит от папки, где был выполнен `git clone`. + Установщик сам выберет адрес сервера: 1. `XLX_PUBLIC_HOST`, если переменная задана; diff --git a/docs/INSTALL_SYSTEM.md b/docs/INSTALL_SYSTEM.md index b75d54d..92b54d4 100644 --- a/docs/INSTALL_SYSTEM.md +++ b/docs/INSTALL_SYSTEM.md @@ -11,6 +11,8 @@ - systemd service для reflector; - `/etc/xlx/xlxd.env`. +Web-приложение копируется в `/opt/xlx-server`, чтобы Apache не зависел от того, где был сделан `git clone`. Это важно, если репозиторий лежит в `/root`: Apache не может читать такие родительские каталоги и отвечает `403 Forbidden`. + ## Без домена На чистом Ubuntu/Debian сервере: @@ -21,6 +23,12 @@ cd xlx sudo bash scripts/install-system.sh ``` +Если нужен другой путь установки web-приложения: + +```bash +sudo XLX_APP_DIR=/srv/xlx-server bash scripts/install-system.sh +``` + Установщик сам выберет адрес: 1. `XLX_PUBLIC_HOST`, если переменная задана; diff --git a/scripts/install-system.sh b/scripts/install-system.sh index 3d3e587..df0381c 100644 --- a/scripts/install-system.sh +++ b/scripts/install-system.sh @@ -6,7 +6,25 @@ if [[ "${EUID}" -ne 0 ]]; then exit 1 fi -REPO_ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)" +SOURCE_ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)" +APP_DIR="${XLX_APP_DIR:-/opt/xlx-server}" + +install_app_files() { + local source_real target_real + mkdir -p "$APP_DIR" + source_real="$(realpath "$SOURCE_ROOT")" + target_real="$(realpath "$APP_DIR")" + + if [[ "$source_real" != "$target_real" ]]; then + tar --exclude='.git' -C "$SOURCE_ROOT" -cf - . | tar -C "$APP_DIR" -xf - + fi + + chown -R root:www-data "$APP_DIR" + find "$APP_DIR" -type d -exec chmod 755 {} \; + find "$APP_DIR" -type f -exec chmod 644 {} \; +} + +REPO_ROOT="$SOURCE_ROOT" PUBLIC_DIR="$REPO_ROOT/public" detect_host() { @@ -88,10 +106,15 @@ DB_PASSWORD_SQL="$(sql_escape "$DB_PASSWORD")" echo "Installing XLX system for host: $PUBLIC_HOST" echo "Panel port: $PANEL_PORT" +echo "Application directory: $APP_DIR" apt-get update apt-get install -y apache2 libapache2-mod-php php php-mysql mariadb-server git ca-certificates curl +install_app_files +REPO_ROOT="$APP_DIR" +PUBLIC_DIR="$REPO_ROOT/public" + systemctl enable --now mariadb mysql <