diff --git a/agent/app/service/app.go b/agent/app/service/app.go index f66058e61..89ec3ef67 100644 --- a/agent/app/service/app.go +++ b/agent/app/service/app.go @@ -7,7 +7,6 @@ import ( "fmt" "net/http" "os" - "path" "path/filepath" "reflect" "strconv" @@ -368,29 +367,6 @@ func (a AppService) Install(req request.AppInstallCreate) (appInstall *model.App } } } - if app.Key == "openresty" && (app.Resource == "remote" || app.Resource == "custom") && common.CompareVersion(appDetail.Version, "1.27") { - if dir, ok := req.Params["WEBSITE_DIR"]; ok { - siteDir := dir.(string) - if siteDir == "" || !strings.HasPrefix(siteDir, "/") { - siteDir = path.Join(global.Dir.DataDir, dir.(string)) - } - req.Params["WEBSITE_DIR"] = siteDir - oldWebStePath, _ := settingRepo.GetValueByKey("WEBSITE_DIR") - fileOp := files.NewFileOp() - if oldWebStePath != "" && oldWebStePath != siteDir && fileOp.Stat(oldWebStePath) { - _ = fileOp.Rename(oldWebStePath, siteDir) - } - if !fileOp.Stat(siteDir) { - _ = fileOp.CreateDir(siteDir, constant.DirPerm) - _ = fileOp.CreateDir(path.Join(siteDir, "conf.d"), constant.DirPerm) - } - err = settingRepo.UpdateOrCreate("WEBSITE_DIR", siteDir) - if err != nil { - return - } - go RestartPHPRuntime() - } - } for key := range req.Params { if !strings.Contains(key, "PANEL_APP_PORT") { continue @@ -531,6 +507,9 @@ func (a AppService) Install(req request.AppInstallCreate) (appInstall *model.App return err } if app.Key == "openresty" { + if err = handleSiteDir(app, appDetail, req, t); err != nil { + return err + } if err = handleOpenrestyFile(appInstall); err != nil { return err } diff --git a/agent/app/service/app_utils.go b/agent/app/service/app_utils.go index 78ba311cc..d5b4f276c 100644 --- a/agent/app/service/app_utils.go +++ b/agent/app/service/app_utils.go @@ -1934,6 +1934,53 @@ func getAppTags(appID uint, lang string) ([]response.TagDTO, error) { return res, nil } +func handleSiteDir(app model.App, appDetail model.AppDetail, req request.AppInstallCreate, t *task.Task) error { + if app.Key == "openresty" && (app.Resource == "remote" || app.Resource == "custom") && common.CompareVersion(appDetail.Version, "1.27") { + if dir, ok := req.Params["WEBSITE_DIR"]; ok { + siteDir := dir.(string) + if siteDir == "" || !strings.HasPrefix(siteDir, "/") { + siteDir = path.Join(global.Dir.DataDir, dir.(string)) + } + req.Params["WEBSITE_DIR"] = siteDir + oldWebStePath, _ := settingRepo.GetValueByKey("WEBSITE_DIR") + fileOp := files.NewFileOp() + if oldWebStePath != "" && oldWebStePath != siteDir && fileOp.Stat(oldWebStePath) { + t.Log(i18n.GetWithName("MoveSiteDir", siteDir)) + if fileOp.Stat(siteDir) { + if fileOp.Stat(path.Join(siteDir, "conf.d")) { + _ = fileOp.Rename(path.Join(siteDir, "conf.d"), path.Join(siteDir, "conf.d.bak")) + } + if fileOp.Stat(path.Join(siteDir, "sites")) { + _ = fileOp.Rename(path.Join(siteDir, "sites"), path.Join(siteDir, "sites.bak")) + } + if err := fileOp.Rename(path.Join(oldWebStePath, "sites"), path.Join(siteDir, "sites")); err != nil { + return err + } + if err := fileOp.Rename(path.Join(oldWebStePath, "conf.d"), path.Join(siteDir, "conf.d")); err != nil { + return err + } + } else { + err := fileOp.Rename(oldWebStePath, siteDir) + if err != nil { + return err + } + } + t.Log(i18n.GetMsgByKey("MoveSiteDirSuccess")) + } + if !fileOp.Stat(siteDir) { + _ = fileOp.CreateDir(siteDir, constant.DirPerm) + _ = fileOp.CreateDir(path.Join(siteDir, "conf.d"), constant.DirPerm) + } + err := settingRepo.UpdateOrCreate("WEBSITE_DIR", siteDir) + if err != nil { + return err + } + go RestartPHPRuntime() + } + } + return nil +} + func handleOpenrestyFile(appInstall *model.AppInstall) error { websites, _ := websiteRepo.List() hasDefaultWebsite := false diff --git a/agent/i18n/lang/en.yaml b/agent/i18n/lang/en.yaml index a86fb1aab..d8618c75a 100644 --- a/agent/i18n/lang/en.yaml +++ b/agent/i18n/lang/en.yaml @@ -79,9 +79,7 @@ AppStoreIsLastVersion: 'The App Store is already the latest version' AppStoreSyncSuccess: 'App Store synchronization successful' SyncAppDetail: 'Synchronize application configuration' AppVersionNotMatch: '{{ .name }} application requires a higher 1Panel version, skipping synchronization' -MoveSiteDir: 'The current upgrade requires migration of the OpenResty website directory' -MoveSiteToDir: 'Migrate site directory to {{ .name }}' -ErrMoveSiteDir: 'Failed to migrate site directory' +MoveSiteDir: "Detected website directory change. Need to migrate OpenResty website directory to {{ .name }}" MoveSiteDirSuccess: 'Successful migration of website directory' DeleteRuntimePHP: 'Delete PHP runtime' CustomAppStoreFileValid: 'App store packages need to be in .tar.gz format' diff --git a/agent/i18n/lang/ja.yaml b/agent/i18n/lang/ja.yaml index 2656bf518..1ca5a8172 100644 --- a/agent/i18n/lang/ja.yaml +++ b/agent/i18n/lang/ja.yaml @@ -79,9 +79,7 @@ AppStoreIsLastVersion: 'App Store はすでに最新バージョンです' AppStoreSyncSuccess: 'App Store の同期が成功しました' SyncAppDetail: 'アプリケーション構成を同期する' AppVersionNotMatch: '{{ .name }} アプリケーションには、より高い 1Panel バージョンが必要なため、同期をスキップします' -MoveSiteDir: '現在のアップグレードでは、OpenResty Web サイト ディレクトリの移行が必要です' -MoveSiteToDir: 'サイト ディレクトリを {{ .name }} に移行します' -ErrMoveSiteDir: 'サイト ディレクトリの移行に失敗しました' +MoveSiteDir: "ウェブサイトディレクトリの変更を検出しました。OpenResty ウェブサイトディレクトリを {{ .name }} に移行する必要があります" MoveSiteDirSuccess: 'Web サイト ディレクトリの移行に成功しました' DeleteRuntimePHP: 'PHP ランタイムを削除する' CustomAppStoreFileValid: 'App Store パッケージは .tar.gz 形式である必要があります' diff --git a/agent/i18n/lang/ko.yaml b/agent/i18n/lang/ko.yaml index 2fb5261d9..24fb525a7 100644 --- a/agent/i18n/lang/ko.yaml +++ b/agent/i18n/lang/ko.yaml @@ -79,9 +79,7 @@ AppStoreIsLastVersion: '앱스토어가 이미 최신 버전입니다' AppStoreSyncSuccess: '앱스토어 동기화 성공' SyncAppDetail: '애플리케이션 구성 동기화' AppVersionNotMatch: '{{ .name }} 애플리케이션에 더 높은 1Panel 버전이 필요하므로 동기화를 건너뜁니다.' -MoveSiteDir: '현재 업그레이드에는 OpenResty 웹사이트 디렉토리 마이그레이션이 필요합니다.' -MoveSiteToDir: '사이트 디렉토리를 {{ .name }}로 마이그레이션' -ErrMoveSiteDir: '사이트 디렉토리를 마이그레이션하지 못했습니다' +MoveSiteDir: "웹사이트 디렉토리 변경이 감지되었습니다. OpenResty 웹사이트 디렉토리를 {{ .name }} 로 마이그레이션해야 합니다" MoveSiteDirSuccess: '웹사이트 디렉토리 마이그레이션 성공' DeleteRuntimePHP: 'PHP 런타임 삭제' CustomAppStoreFileValid: '앱 스토어 패키지는 .tar.gz 형식이어야 합니다.' diff --git a/agent/i18n/lang/ms.yaml b/agent/i18n/lang/ms.yaml index cbe52a3d3..cbd9201af 100644 --- a/agent/i18n/lang/ms.yaml +++ b/agent/i18n/lang/ms.yaml @@ -82,9 +82,7 @@ AppStoreIsLastVersion: 'App Store sudah pun versi terkini' AppStoreSyncSuccess: 'Penyegerakan App Store berjaya' SyncAppDetail: 'Segerakkan konfigurasi aplikasi' AppVersionNotMatch: 'Aplikasi {{ .name }} memerlukan versi 1Panel yang lebih tinggi, melangkau penyegerakan' -MoveSiteDir: 'Peningkatan semasa memerlukan penghijrahan direktori tapak web OpenResty' -MoveSiteToDir: 'Pindahkan direktori tapak ke {{ .name }}' -ErrMoveSiteDir: 'Gagal memindahkan direktori tapak' +MoveSiteDir: "Perubahan direktori laman web didapati. Perlu memindahkan direktori laman web OpenResty ke {{ .name }}" MoveSiteDirSuccess: 'Penghijrahan direktori tapak web yang berjaya' DeleteRuntimePHP: 'Padam masa jalan PHP' CustomAppStoreFileValid: 'Pakej gedung apl perlu dalam format .tar.gz' diff --git a/agent/i18n/lang/pt-BR.yaml b/agent/i18n/lang/pt-BR.yaml index cfe82f794..0ac6e7ef7 100644 --- a/agent/i18n/lang/pt-BR.yaml +++ b/agent/i18n/lang/pt-BR.yaml @@ -82,9 +82,7 @@ AppStoreIsLastVersion: 'A App Store já é a versão mais recente' AppStoreSyncSuccess: 'Sincronização da App Store bem-sucedida' SyncAppDetail: 'Sincronizar configuração do aplicativo' AppVersionNotMatch: 'o aplicativo {{ .name }} requer uma versão superior do 1Panel, ignorando a sincronização' -MoveSiteDir: 'A atualização atual requer a migração do diretório do site OpenResty' -MoveSiteToDir: 'Migrar diretório do site para {{ .name }}' -ErrMoveSiteDir: 'Falha ao migrar o diretório do site' +MoveSiteDir: "Detecção de alteração no diretório do site. É necessário migrar o diretório do site OpenResty para {{ .name }}" MoveSiteDirSuccess: 'Migração bem-sucedida do diretório do site' DeleteRuntimePHP: 'Excluir tempo de execução do PHP' CustomAppStoreFileValid: 'Os pacotes da App Store precisam estar no formato .tar.gz' diff --git a/agent/i18n/lang/ru.yaml b/agent/i18n/lang/ru.yaml index 4e88eecbb..786b2c6d5 100644 --- a/agent/i18n/lang/ru.yaml +++ b/agent/i18n/lang/ru.yaml @@ -82,9 +82,7 @@ AppStoreIsLastVersion: 'В App Store уже установлена послед AppStoreSyncSuccess: 'Синхронизация с App Store прошла успешно' SyncAppDetail: 'Синхронизировать конфигурацию приложения' AppVersionNotMatch: 'Приложению {{ .name }} требуется более высокая версия 1Panel, синхронизация пропускается' -MoveSiteDir: 'Текущее обновление требует миграции каталога веб-сайта OpenResty' -MoveSiteToDir: 'Перенести каталог сайта в {{ .name }}' -ErrMoveSiteDir: 'Не удалось перенести каталог сайта' +MoveSiteDir: "Обнаружено изменение каталога сайта. Необходимо перенести каталог сайта OpenResty в {{ .name }}" MoveSiteDirSuccess: 'Успешная миграция каталога веб-сайта' DeleteRuntimePHP: 'Удалить среду выполнения PHP' CustomAppStoreFileValid: 'Пакеты магазина приложений должны быть в формате .tar.gz' diff --git a/agent/i18n/lang/tr.yaml b/agent/i18n/lang/tr.yaml index 883aab0c1..d1e208fdb 100644 --- a/agent/i18n/lang/tr.yaml +++ b/agent/i18n/lang/tr.yaml @@ -82,9 +82,7 @@ AppStoreIsLastVersion: 'Uygulama Mağazası zaten en son sürüm' AppStoreSyncSuccess: 'Uygulama Mağazası senkronizasyonu başarılı' SyncAppDetail: 'Uygulama yapılandırmasını senkronize et' AppVersionNotMatch: '{{ .name }} uygulaması daha yüksek 1Panel sürümü gerektiriyor, senkronizasyon atlanıyor' -MoveSiteDir: 'Mevcut yükseltme OpenResty web sitesi dizininin taşınmasını gerektiriyor' -MoveSiteToDir: 'Site dizinini {{ .name }} konumuna taşı' -ErrMoveSiteDir: 'Site dizini taşıma başarısız' +MoveSiteDir: "Web sitesi dizini değişikliği tespit edildi. OpenResty web sitesi dizinini {{ .name }} adresine taşımak gerekiyor" MoveSiteDirSuccess: 'Web sitesi dizini taşıma başarılı' DeleteRuntimePHP: 'PHP çalışma zamanını sil' CustomAppStoreFileValid: 'Uygulama mağazası paketlerinin .tar.gz formatında olması gerekiyor' diff --git a/agent/i18n/lang/zh-Hant.yaml b/agent/i18n/lang/zh-Hant.yaml index 4758ca367..fc034d6cb 100644 --- a/agent/i18n/lang/zh-Hant.yaml +++ b/agent/i18n/lang/zh-Hant.yaml @@ -78,9 +78,7 @@ PullImageSuccess: '鏡像拉取成功' AppStoreSyncSuccess: '應用程式商店同步成功' SyncAppDetail: '同步應用程式設定' AppVersionNotMatch: '{{ .name }} 應用程式需要更高的 1Panel 版本,跳過同步' -MoveSiteDir: '目前升級需要遷移 OpenResty 網站目錄' -MoveSiteToDir: '遷移網站目錄到{{ .name }}' -ErrMoveSiteDir: '遷移網站目錄失敗' +MoveSiteDir: "檢測到網站目錄變更 需要遷移 OpenResty 網站目錄到 {{ .name }}" MoveSiteDirSuccess: '遷移網站目錄成功' DeleteRuntimePHP: '刪除PHP 執行環境' CustomAppStoreFileValid: '應用程式商店包需要 .tar.gz 格式' diff --git a/agent/i18n/lang/zh.yaml b/agent/i18n/lang/zh.yaml index 66bfd911a..6fcfbb86a 100644 --- a/agent/i18n/lang/zh.yaml +++ b/agent/i18n/lang/zh.yaml @@ -78,9 +78,7 @@ PullImageSuccess: "镜像拉取成功" AppStoreSyncSuccess: "应用商店同步成功" SyncAppDetail: "同步应用配置" AppVersionNotMatch: "{{ .name }} 应用需要更高的 1Panel 版本,跳过" -MoveSiteDir: "当前升级需要迁移 OpenResty 网站目录" -MoveSiteToDir: "迁移网站目录到 {{ .name }}" -ErrMoveSiteDir: "迁移网站目录失败" +MoveSiteDir: "检测到网站目录变更 需要迁移 OpenResty 网站目录到 {{ .name }}" MoveSiteDirSuccess: "迁移网站目录成功" DeleteRuntimePHP: "删除 PHP 运行环境" CustomAppStoreFileValid: "应用商店包需要 .tar.gz 格式"