From 8288aad918937ca92927a28ac1c84f2e3f310ef8 Mon Sep 17 00:00:00 2001 From: dxin <1554389441@qq.com> Date: Tue, 2 Dec 2025 23:16:38 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9Elessie-react?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- jenkins/流水线配置/lessie-profile-web.conf | 93 ++++++++++++++++++++++ nginx/lessie_profile_web.conf | 69 ++++++++++++++++ 2 files changed, 162 insertions(+) create mode 100644 jenkins/流水线配置/lessie-profile-web.conf create mode 100644 nginx/lessie_profile_web.conf diff --git a/jenkins/流水线配置/lessie-profile-web.conf b/jenkins/流水线配置/lessie-profile-web.conf new file mode 100644 index 0000000..46cd812 --- /dev/null +++ b/jenkins/流水线配置/lessie-profile-web.conf @@ -0,0 +1,93 @@ +pipeline { + agent any + + parameters { + gitParameter( + branchFilter: 'origin/(.*)', + defaultValue: 'release', + name: 'GIT_BRANCH', + type: 'PT_BRANCH_TAG', + selectedValue: 'DEFAULT', + sortMode: 'NONE', + description: '选择代码分支: ', + quickFilterEnabled: true, + tagFilter: '*', + listSize: "5" + ) + } + + environment { + REMOTE_HOST = '43.130.56.138' + REMOTE_HOST_B = '43.153.21.64' + REMOTE_PROJECT_PATH = '/data/webapps/lessie-react' + } + + stages { + stage('Checkout 代码') { + steps { + git branch: "${params.GIT_BRANCH}", credentialsId: 'fly_gitlab_auth', url: 'http://172.24.16.20/web/lessie-react.git' + } + } + + stage('同步A') { + steps { + sh """ + ssh ${REMOTE_HOST} 'mkdir -p ${REMOTE_PROJECT_PATH}' + rsync -avz --delete --exclude='node_modules' ${WORKSPACE}/ ${REMOTE_HOST}:${REMOTE_PROJECT_PATH}/ + """ + } + } + + stage('安装启动A') { + steps { + sh """ + ssh ${REMOTE_HOST} ' + cd ${REMOTE_PROJECT_PATH} && + pm2 delete lessie-react || true && + pm2 list && + nvm use 22.21.1 && + npm install && + npm run build && + pm2 start ecosystem.config.cjs && + pm2 save + ' + """ + } + } + + stage('同步B') { + steps { + sh """ + ssh ${REMOTE_HOST_B} 'mkdir -p ${REMOTE_PROJECT_PATH}' + rsync -avz --delete --exclude='node_modules' ${WORKSPACE}/ ${REMOTE_HOST_B}:${REMOTE_PROJECT_PATH}/ + """ + } + } + + stage('安装启动B') { + steps { + sh """ + ssh ${REMOTE_HOST_B} ' + cd ${REMOTE_PROJECT_PATH} && + pm2 delete lessie-react || true && + pm2 list && + nvm use 22.21.1 && + npm install && + npm run build && + pm2 start ecosystem.config.cjs && + pm2 save + ' + """ + } + } + } + + post { + success { + echo '部署成功' + } + failure { + echo '部署失败,请检查日志' + } + } +} diff --git a/nginx/lessie_profile_web.conf b/nginx/lessie_profile_web.conf new file mode 100644 index 0000000..b64c109 --- /dev/null +++ b/nginx/lessie_profile_web.conf @@ -0,0 +1,69 @@ +upstream profile_backend { + server 10.0.0.5:3001; # 机器A的内网地址 + server 10.0.0.15:3001; # 机器B的内网地址 +} + +log_format profile_log '$remote_addr - $remote_user [$time_local] ' + '"$request" $status $body_bytes_sent ' + '"$http_referer" "$http_user_agent" ' + 'upstream_addr=$upstream_addr ' + 'upstream_status=$upstream_status ' + 'upstream_response_time=$upstream_response_time ' + 'request_time=$request_time'; + + # 1. 强制 HTTP 转 HTTPS(统一跳转到 https://profile.lessie.ai) +server { + listen 80; + server_name profile.lessie.ai; + return 301 https://profile.lessie.ai$request_uri; +} + + + # 2. 正式服务站点(https://profile.lessie.ai) +server { + listen 443 ssl; + server_name profile.lessie.ai; + + ssl_certificate /data/tengine/certificate/lessie.ai.pem; + ssl_certificate_key /data/tengine/certificate/lessie.ai.key; + + ssl_protocols TLSv1.2 TLSv1.3; + ssl_ciphers HIGH:!aNULL:!MD5; + + access_log /data/tengine/logs/lessie_profile_log.access.log profile_log; + error_log /data/tengine/logs/lessie_profile_log.error.log; + + + # 反向代理到后端服务器渲染的nxut项目3001端口 + location / { + proxy_pass http://profile_backend; + proxy_set_header Host $host; + proxy_set_header X-Real-IP $remote_addr; + } + + # 禁止logo走缓存 + location = /favicon.svg { + proxy_pass http://official_backend; + proxy_set_header Host $host; + proxy_set_header X-Real-IP $remote_addr; + + add_header Cache-Control "no-cache, no-store, must-revalidate" always; + add_header Pragma "no-cache" always; + add_header Expires 0 always; + } + # 禁止logo走缓存 + location = /favicon.ico { + proxy_pass http://official_backend; + proxy_set_header Host $host; + proxy_set_header X-Real-IP $remote_addr; + + add_header Cache-Control "no-cache, no-store, must-revalidate" always; + add_header Pragma "no-cache" always; + add_header Expires 0 always; + } +} + + + + +