From 358541ab73faf7954daf6fa0b632ee38b7149d39 Mon Sep 17 00:00:00 2001 From: zhengkunwang223 Date: Thu, 19 Sep 2024 16:49:34 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20openresty=20=E5=BC=82=E5=B8=B8=E7=8A=B6?= =?UTF-8?q?=E6=80=81=E4=B8=8B=E6=94=AF=E6=8C=81=E4=BF=AE=E6=94=B9=E9=85=8D?= =?UTF-8?q?=E7=BD=AE=E6=96=87=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- agent/app/service/nginx.go | 10 +++++++- agent/app/service/runtime_utils.go | 16 +++++++++++++ agent/app/service/website.go | 3 ++- agent/utils/compose/compose.go | 19 +++++++-------- frontend/src/components/app-status/index.vue | 10 +------- frontend/src/routers/modules/website.ts | 4 ++-- .../src/views/website/website/nginx/index.vue | 24 +++++++++++++++---- .../website/website/nginx/source/index.vue | 2 +- 8 files changed, 60 insertions(+), 28 deletions(-) diff --git a/agent/app/service/nginx.go b/agent/app/service/nginx.go index 82950aade08e..e96c7b12a0ce 100644 --- a/agent/app/service/nginx.go +++ b/agent/app/service/nginx.go @@ -97,10 +97,10 @@ func (n NginxService) GetStatus() (response.NginxStatus, error) { func (n NginxService) UpdateConfigFile(req request.NginxConfigFileUpdate) error { fileOp := files.NewFileOp() nginxInstall, err := getAppInstallByKey(constant.AppOpenresty) - filePath := path.Join(constant.AppInstallDir, constant.AppOpenresty, nginxInstall.Name, "conf", "nginx.conf") if err != nil { return err } + filePath := path.Join(constant.AppInstallDir, constant.AppOpenresty, nginxInstall.Name, "conf", "nginx.conf") if req.Backup { backupPath := path.Join(path.Dir(filePath), "bak") if !fileOp.Stat(backupPath) { @@ -123,6 +123,14 @@ func (n NginxService) UpdateConfigFile(req request.NginxConfigFileUpdate) error if err = fileOp.WriteFile(filePath, strings.NewReader(req.Content), 0644); err != nil { return err } + if status, err := checkContainerStatus(nginxInstall.ContainerName); err == nil && status != "running" { + if out, err := compose.DownAndUp(nginxInstall.GetComposePath()); err != nil { + _ = fileOp.SaveFile(filePath, string(oldContent), 0644) + return fmt.Errorf("nginx restart failed: %v", out) + } else { + return nginxCheckAndReload(string(oldContent), filePath, nginxInstall.ContainerName) + } + } return nginxCheckAndReload(string(oldContent), filePath, nginxInstall.ContainerName) } diff --git a/agent/app/service/runtime_utils.go b/agent/app/service/runtime_utils.go index cacf1d3c9a3c..905d0dc1a9e9 100644 --- a/agent/app/service/runtime_utils.go +++ b/agent/app/service/runtime_utils.go @@ -475,6 +475,22 @@ func checkContainerName(name string) error { return nil } +func checkContainerStatus(name string) (string, error) { + dockerCli, err := docker.NewClient() + if err != nil { + return "", err + } + defer dockerCli.Close() + names, err := dockerCli.ListContainersByName([]string{name}) + if err != nil { + return "", err + } + if len(names) > 0 { + return names[0].State, nil + } + return "", nil +} + func unInstallPHPExtension(runtime *model.Runtime, delExtensions []string) error { dir := runtime.GetPath() fileOP := files.NewFileOp() diff --git a/agent/app/service/website.go b/agent/app/service/website.go index 08418bb318ab..6fdf496c8e49 100644 --- a/agent/app/service/website.go +++ b/agent/app/service/website.go @@ -1155,8 +1155,9 @@ func (w WebsiteService) UpdateNginxConfigFile(req request.WebsiteNginxUpdate) er if err != nil { return err } + filePath := nginxFull.SiteConfig.FilePath - if err := files.NewFileOp().WriteFile(filePath, strings.NewReader(req.Content), 0755); err != nil { + if err = files.NewFileOp().WriteFile(filePath, strings.NewReader(req.Content), 0755); err != nil { return err } return nginxCheckAndReload(nginxFull.SiteConfig.OldContent, filePath, nginxFull.Install.ContainerName) diff --git a/agent/utils/compose/compose.go b/agent/utils/compose/compose.go index 7d7a535469cf..b2e5faa32fdc 100644 --- a/agent/utils/compose/compose.go +++ b/agent/utils/compose/compose.go @@ -4,11 +4,6 @@ import ( "github.com/1Panel-dev/1Panel/agent/utils/cmd" ) -func Pull(filePath string) (string, error) { - stdout, err := cmd.Execf("docker compose -f %s pull", filePath) - return stdout, err -} - func Up(filePath string) (string, error) { stdout, err := cmd.Execf("docker compose -f %s up -d", filePath) return stdout, err @@ -19,11 +14,6 @@ func Down(filePath string) (string, error) { return stdout, err } -func Start(filePath string) (string, error) { - stdout, err := cmd.Execf("docker compose -f %s start", filePath) - return stdout, err -} - func Stop(filePath string) (string, error) { stdout, err := cmd.Execf("docker compose -f %s stop", filePath) return stdout, err @@ -38,3 +28,12 @@ func Operate(filePath, operation string) (string, error) { stdout, err := cmd.Execf("docker compose -f %s %s", filePath, operation) return stdout, err } + +func DownAndUp(filePath string) (string, error) { + stdout, err := cmd.Execf("docker compose -f %s down", filePath) + if err != nil { + return stdout, err + } + stdout, err = cmd.Execf("docker compose -f %s up -d", filePath) + return stdout, err +} diff --git a/frontend/src/components/app-status/index.vue b/frontend/src/components/app-status/index.vue index e3fa0f3726c6..a2319033027d 100644 --- a/frontend/src/components/app-status/index.vue +++ b/frontend/src/components/app-status/index.vue @@ -46,15 +46,7 @@ {{ $t('app.reload') }} - + {{ $t('commons.button.set') }} diff --git a/frontend/src/routers/modules/website.ts b/frontend/src/routers/modules/website.ts index 8c046a34ff8e..7acb6044cbd1 100644 --- a/frontend/src/routers/modules/website.ts +++ b/frontend/src/routers/modules/website.ts @@ -64,7 +64,7 @@ const webSiteRouter = { hidden: true, component: () => import('@/views/website/runtime/java/index.vue'), meta: { - activeMenu: '/websites/runtimes/java', + activeMenu: '/websites/runtimes/php', requiresAuth: false, }, }, @@ -74,7 +74,7 @@ const webSiteRouter = { hidden: true, component: () => import('@/views/website/runtime/go/index.vue'), meta: { - activeMenu: '/websites/runtimes/go', + activeMenu: '/websites/runtimes/php', requiresAuth: false, }, }, diff --git a/frontend/src/views/website/website/nginx/index.vue b/frontend/src/views/website/website/nginx/index.vue index 7fbfb5a2abb6..3ceff49930e5 100644 --- a/frontend/src/views/website/website/nginx/index.vue +++ b/frontend/src/views/website/website/nginx/index.vue @@ -1,7 +1,12 @@