Skrypt do zmiany zmiennych środowiskowych w LAMP w Cloudron (MySQL, SMTP)
Skrypt jest potrzebny do zmiany loginów, hasła oraz lokalizacji usług przy przenoszeniu aplikacji na inny serwer Cloudron oraz rotacyjnych zmianych danych dostępów zarządzane przez Cloudron.
Zalecam zrobić kopię zapasową aplikacji przed rozpoczęciem utworzenia skryptu.
Poniższy skrypt, które używam do aplikacji LAMP na serwerze Cloudron. Skrypt dodajemy do pliku run.sh, w głównej lokalizacji aplikacji.
#!/bin/bash
echo "1️⃣Uruchomienie skryptu"
echo "2️⃣Trwa sprawdzanie plików .env"
ENV_FILE="/app/data/XXXX/.env"
# Upewnij się, że plik istnieje
if [ ! -f "$ENV_FILE" ]; then
touch "$ENV_FILE"
fi
# Funkcja pomocnicza do ustawiania lub aktualizowania kluczy w pliku .env bez ręcznego wpisywania komendy "sed -i"
set_env() {
local key="$1"
local value="$2"
if grep -q "^${key}=" "$ENV_FILE"; then
sed -i "s|^${key}=.*|${key}=${value}|" "$ENV_FILE"
else
echo "${key}=${value}" >> "$ENV_FILE"
fi
}
echo "3️⃣Trwa obecnie zmiana konfiguracji danych zmiennych środowiskowych"
# Ustawiamy wartości pochodzące z Cloudron credentials.txt
set_env DB_HOST "$CLOUDRON_MYSQL_HOST"
set_env DB_PORT "$CLOUDRON_MYSQL_PORT"
set_env DB_DATABASE "$CLOUDRON_MYSQL_DATABASE"
set_env DB_USERNAME "$CLOUDRON_MYSQL_USERNAME"
set_env DB_PASSWORD "$CLOUDRON_MYSQL_PASSWORD"
set_env MAIL_HOST "$CLOUDRON_MAIL_SMTP_SERVER"
set_env MAIL_PORT "$CLOUDRON_MAIL_SMTP_PORT"
set_env MAIL_USERNAME "$CLOUDRON_MAIL_SMTP_USERNAME"
set_env MAIL_PASSWORD "$CLOUDRON_MAIL_SMTP_PASSWORD"
set_env MAIL_FROM_ADDRESS "$CLOUDRON_MAIL_FROM"
echo "3️4️⃣Zmiana domeny aplikacji"
set_env APP_URL "$CLOUDRON_APP_ORIGIN"
echo "✅ Zmieniono wpisy w $ENV_FILE"w parametrze ENV_FILE=”/app/data/XXXX” musimy podać dokładną lokalizację pliku z aplikacji.
Musimy podać dokładne parametry/nazwy znajdujące się w pliku .env do skryptu np.: „DB_HOST”, „DB_DATABSE”, „MAIL_HOST”, „MAIL_FORM_ADDRESS”. Każda aplikacja ma swoje parametry/nazwy do podłączenia bazy danych czy systemu e-mail do wysyłania powiadomień, itp. Dla pewności proszę sprawdzić, czy się zgadzają nazwy, żeby aplikacja działała prawidłowo.