diff --git a/jenkins/流水线配置/lessie-list-prod-web.conf b/jenkins/流水线配置/lessie-list-prod-web.conf new file mode 100644 index 0000000..a5bebe5 --- /dev/null +++ b/jenkins/流水线配置/lessie-list-prod-web.conf @@ -0,0 +1,93 @@ +pipeline { + agent any + + parameters { + gitParameter( + branchFilter: 'origin/(.*)', + defaultValue: 'main', + 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-list' + } + + stages { + stage('Checkout 代码') { + steps { + git branch: "${params.GIT_BRANCH}", credentialsId: 'fly_gitlab_auth', url: 'http://172.24.16.20/web/lessie-list.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-list || true && + pm2 list && + nvm use 22.21.1 && + npm install && + npm run build:prod && + pm2 start ecosystem.config.cjs --env production && + 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-list || true && + pm2 list && + nvm use 22.21.1 && + npm install && + npm run build:prod && + pm2 start ecosystem.config.cjs --env production && + pm2 save + ' + """ + } + } + } + + post { + success { + echo '部署成功' + } + failure { + echo '部署失败,请检查日志' + } + } +} diff --git a/jenkins/流水线配置/lessie-list-test-web.conf b/jenkins/流水线配置/lessie-list-test-web.conf index 42aa5e2..ef58375 100644 --- a/jenkins/流水线配置/lessie-list-test-web.conf +++ b/jenkins/流水线配置/lessie-list-test-web.conf @@ -49,7 +49,7 @@ pipeline { pm2 start ecosystem.config.cjs --env test && pm2 save ' - """ + """1 } } } diff --git a/jenkins/流水线配置/lessie-profile-web.conf b/jenkins/流水线配置/lessie-profile-prod-web.conf similarity index 100% rename from jenkins/流水线配置/lessie-profile-web.conf rename to jenkins/流水线配置/lessie-profile-prod-web.conf diff --git a/nginx/app.lessie.ai.conf b/nginx/app.lessie.ai.conf index bbdf494..f7e213f 100644 --- a/nginx/app.lessie.ai.conf +++ b/nginx/app.lessie.ai.conf @@ -187,7 +187,7 @@ server { } } # 打到国内prod的agent.jar包 - location /prod-api/system { + location /prod-api/system {11191919119 proxy_pass http://java_agent_backend; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; diff --git a/nginx/lessie_list_web.conf b/nginx/lessie_list_web.conf new file mode 100644 index 0000000..cd172ad --- /dev/null +++ b/nginx/lessie_list_web.conf @@ -0,0 +1,69 @@ +upstream list_backend { + server 10.0.0.5:3004; # 机器A的内网地址 + server 10.0.0.15:3004; # 机器B的内网地址 +} + +log_format list_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 list.lessie.ai; + return 301 https://list.lessie.ai$request_uri; +} + + + # 2. 正式服务站点(https://list.lessie.ai) +server { + listen 443 ssl; + server_name list.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_list_log.access.log list_log; + error_log /data/tengine/logs/lessie_list_log.error.log; + + + # 反向代理到后端服务器渲染的nxut项目3001端口 + location / { + proxy_pass http://list_backend; + proxy_set_header Host $host; + proxy_set_header X-Real-IP $remote_addr; + } + + # 禁止logo走缓存 + location = /favicon.svg { + proxy_pass http://list_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://list_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; + } +} + + + + +