亚洲see少妇裸体pics,欧美日产欧美日产免费一区,亚洲综合av一区二区三区不卡,一区二区中文字幕无码成人片,一区二区三区四区高清无码

部署配置指南

部署配置指南

Nginx部署

1. 基礎Nginx配置

創(chuàng )建 nginx.conf 文件:

server {
    listen 80;
    server_name your-domain.com;
    root /usr/share/nginx/html;
    index index.html;

    # 啟用gzip壓縮
    gzip on;
    gzip_vary on;
    gzip_min_length 1024;
    gzip_proxied any;
    gzip_comp_level 6;
    gzip_types
        text/plain
        text/css
        text/xml
        text/javascript
        application/json
        application/javascript
        application/xml+rss
        application/atom+xml
        image/svg+xml;

    # 靜態(tài)資源緩存
    location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg|woff|woff2|ttf|eot)$ {
        expires 1y;
        add_header Cache-Control "public, immutable";
        add_header Access-Control-Allow-Origin "*";
    }

    # HTML文件不緩存
    location ~* \.html$ {
        expires -1;
        add_header Cache-Control "no-cache, no-store, must-revalidate";
        add_header Pragma "no-cache";
    }

    # API代理
    location /api/ {
        proxy_pass http://backend-server/;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }

    # SPA路由支持
    location / {
        try_files $uri $uri/ /index.html;
    }

    # 安全頭
    add_header X-Frame-Options "SAMEORIGIN" always;
    add_header X-Content-Type-Options "nosniff" always;
    add_header X-XSS-Protection "1; mode=block" always;
    add_header Referrer-Policy "strict-origin-when-cross-origin" always;
}

2. HTTPS配置

server {
    listen 443 ssl http2;
    server_name your-domain.com;
    
    # SSL證書(shū)配置
    ssl_certificate /path/to/your/cert.pem;
    ssl_certificate_key /path/to/your/private.key;
    
    # SSL安全配置
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384;
    ssl_prefer_server_ciphers off;
    ssl_session_cache shared:SSL:10m;
    ssl_session_timeout 10m;
    
    # HSTS
    add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
    
    # 其他配置同上...
}

# HTTP重定向到HTTPS
server {
    listen 80;
    server_name your-domain.com;
    return 301 https://$server_name$request_uri;
}

Docker部署

1. Dockerfile配置

創(chuàng )建 Dockerfile

# 構建階段
FROM node:18-alpine as build-stage

WORKDIR /app

# 復制package文件
COPY package*.json ./

# 安裝依賴(lài)
RUN npm ci --only=production

# 復制源碼
COPY . .

# 構建應用
RUN npm run build

# 生產(chǎn)階段
FROM nginx:alpine as production-stage

# 復制構建產(chǎn)物
COPY --from=build-stage /app/dist /usr/share/nginx/html

# 復制nginx配置
COPY nginx.conf /etc/nginx/conf.d/default.conf

# 暴露端口
EXPOSE 80

# 啟動(dòng)nginx
CMD ["nginx", "-g", "daemon off;"]

2. Docker Compose配置

創(chuàng )建 docker-compose.yml

version: '3.8'

services:
  frontend:
    build: .
    ports:
      - "80:80"
    environment:
      - NODE_ENV=production
    restart: unless-stopped
    networks:
      - app-network

  # 如果有后端服務(wù)
  backend:
    image: your-backend-image
    ports:
      - "3000:3000"
    environment:
      - NODE_ENV=production
      - DATABASE_URL=postgresql://user:pass@db:5432/dbname
    depends_on:
      - db
    restart: unless-stopped
    networks:
      - app-network

  # 數據庫服務(wù)
  db:
    image: postgres:13
    environment:
      - POSTGRES_DB=dbname
      - POSTGRES_USER=user
      - POSTGRES_PASSWORD=pass
    volumes:
      - postgres_data:/var/lib/postgresql/data
    restart: unless-stopped
    networks:
      - app-network

volumes:
  postgres_data:

networks:
  app-network:
    driver: bridge

3. 多階段構建優(yōu)化

# 構建階段
FROM node:18-alpine as build-stage

# 設置工作目錄
WORKDIR /app

# 安裝依賴(lài)
COPY package*.json ./
RUN npm ci --only=production && npm cache clean --force

# 復制源碼并構建
COPY . .
RUN npm run build

# 生產(chǎn)階段
FROM nginx:1.21-alpine as production-stage

# 安裝必要工具
RUN apk add --no-cache curl

# 創(chuàng  )建非root用戶(hù)
RUN addgroup -g 1001 -S nodejs && \
    adduser -S nextjs -u 1001

# 復制構建產(chǎn)物
COPY --from=build-stage --chown=nextjs:nodejs /app/dist /usr/share/nginx/html

# 復制nginx配置
COPY --chown=nextjs:nodejs nginx.conf /etc/nginx/conf.d/default.conf

# 健康檢查
HEALTHCHECK --interval=30s --timeout=3s --start-period=5s --retries=3 \
  CMD curl -f http://localhost/ || exit 1

# 暴露端口
EXPOSE 80

# 啟動(dòng)nginx
CMD ["nginx", "-g", "daemon off;"]

云平臺部署

1. Vercel部署

創(chuàng )建 vercel.json

{
  "version": 2,
  "builds": [
    {
      "src": "package.json",
      "use": "@vercel/static-build",
      "config": {
        "distDir": "dist"
      }
    }
  ],
  "routes": [
    {
      "src": "/api/(.*)",
      "dest": "https://your-api-domain.com/api/$1"
    },
    {
      "src": "/(.*)",
      "dest": "/index.html"
    }
  ],
  "env": {
    "VITE_API_BASE_URL": "https://your-api-domain.com"
  }
}

2. Netlify部署

創(chuàng )建 netlify.toml

[build]
  publish = "dist"
  command = "npm run build"

[build.environment]
  NODE_VERSION = "18"

[[redirects]]
  from = "/api/*"
  to = "https://your-api-domain.com/api/:splat"
  status = 200

[[redirects]]
  from = "/*"
  to = "/index.html"
  status = 200

[[headers]]
  for = "/assets/*"
  [headers.values]
    Cache-Control = "public, max-age=31536000, immutable"

[[headers]]
  for = "/*.html"
  [headers.values]
    Cache-Control = "no-cache"

3. GitHub Pages部署

創(chuàng )建 .github/workflows/deploy.yml

name: Deploy to GitHub Pages

on:
  push:
    branches: [ main ]

jobs:
  build-and-deploy:
    runs-on: ubuntu-latest
    
    steps:
    - name: Checkout
      uses: actions/checkout@v3
      
    - name: Setup Node.js
      uses: actions/setup-node@v3
      with:
        node-version: '18'
        cache: 'npm'
        
    - name: Install dependencies
      run: npm ci
      
    - name: Build
      run: npm run build
      env:
        VITE_BASE_URL: /your-repo-name/
        
    - name: Deploy
      uses: peaceiris/actions-gh-pages@v3
      with:
        github_token: ${{ secrets.GITHUB_TOKEN }}
        publish_dir: ./dist

服務(wù)器部署

1. 傳統服務(wù)器部署腳本

創(chuàng )建 deploy.sh

#!/bin/bash

# 設置變量
PROJECT_NAME="your-project"
DEPLOY_PATH="/var/www/$PROJECT_NAME"
BACKUP_PATH="/var/backups/$PROJECT_NAME"
NGINX_CONFIG="/etc/nginx/sites-available/$PROJECT_NAME"

echo "開(kāi)始部署 $PROJECT_NAME..."

# 創(chuàng  )建備份
if [ -d "$DEPLOY_PATH" ]; then
    echo "創(chuàng  )建備份..."
    sudo mkdir -p $BACKUP_PATH
    sudo cp -r $DEPLOY_PATH $BACKUP_PATH/$(date +%Y%m%d_%H%M%S)
fi

# 構建項目
echo "構建項目..."
npm install
npm run build

# 部署文件
echo "部署文件..."
sudo mkdir -p $DEPLOY_PATH
sudo cp -r dist/* $DEPLOY_PATH/

# 設置權限
sudo chown -R www-data:www-data $DEPLOY_PATH
sudo chmod -R 755 $DEPLOY_PATH

# 重啟nginx
echo "重啟nginx..."
sudo systemctl reload nginx

echo "部署完成!"

2. PM2部署配置

如果使用Node.js服務(wù)器,創(chuàng )建 ecosystem.config.js

module.exports = {
  apps: [{
    name: 'your-project',
    script: 'serve',
    args: '-s dist -l 3000',
    instances: 'max',
    exec_mode: 'cluster',
    env: {
      NODE_ENV: 'production'
    }
  }],
  
  deploy: {
    production: {
      user: 'deploy',
      host: 'your-server.com',
      ref: 'origin/main',
      repo: 'git@github.com:your-username/your-repo.git',
      path: '/var/www/your-project',
      'post-deploy': 'npm install && npm run build && pm2 reload ecosystem.config.js --env production'
    }
  }
};

CDN配置

1. 阿里云OSS + CDN

# 安裝阿里云CLI工具
npm install -g @alicloud/cli

# 上傳到OSS
ossutil cp -r dist/ oss://your-bucket/your-project/ --update

# 刷新CDN緩存
aliyun cdn RefreshObjectCaches --ObjectPath https://your-cdn-domain.com/your-project/

2. 騰訊云COS + CDN

# 安裝騰訊云CLI工具
npm install -g coscmd

# 配置
coscmd config -a your-secret-id -s your-secret-key -b your-bucket -r your-region

# 上傳文件
coscmd upload -r dist/ /your-project/

# 刷新CDN
tccli cdn PurgePathCache --Paths https://your-cdn-domain.com/your-project/

監控和日志

1. 應用監控

// src/utils/monitor.js
export function setupMonitoring() {
  // 性能監控
  if ('performance' in window) {
    window.addEventListener('load', () => {
      const perfData = performance.getEntriesByType('navigation')[0];
      console.log('頁(yè)面加載時(shí)間:', perfData.loadEventEnd - perfData.fetchStart);
    });
  }
  
  // 錯誤監控
  window.addEventListener('error', (event) => {
    console.error('JavaScript錯誤:', event.error);
    // 發(fā)送錯誤到監控服務(wù)
  });
  
  // 未處理的Promise錯誤
  window.addEventListener('unhandledrejection', (event) => {
    console.error('未處理的Promise錯誤:', event.reason);
    // 發(fā)送錯誤到監控服務(wù)
  });
}

2. Nginx日志配置

# 自定義日志格式
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
                '$status $body_bytes_sent "$http_referer" '
                '"$http_user_agent" "$http_x_forwarded_for" '
                '$request_time $upstream_response_time';

server {
    # 訪(fǎng)問(wèn)日志
    access_log /var/log/nginx/your-project.access.log main;
    
    # 錯誤日志
    error_log /var/log/nginx/your-project.error.log warn;
}

這個(gè)部署配置指南涵蓋了從基礎的Nginx配置到云平臺部署的完整流程,幫助您將項目成功部署到生產(chǎn)環(huán)境。

文章目錄

    亚洲see少妇裸体pics,欧美日产欧美日产免费一区,亚洲综合av一区二区三区不卡,一区二区中文字幕无码成人片,一区二区三区四区高清无码