# Lyzsys ้ƒจ็ฝฒๆŒ‡ๅ— ## ๐Ÿ“– ็›ฎๅฝ• - [้ƒจ็ฝฒๆฆ‚่ฟฐ](#้ƒจ็ฝฒๆฆ‚่ฟฐ) - [็Žฏๅขƒๅ‡†ๅค‡](#็Žฏๅขƒๅ‡†ๅค‡) - [ๅŽ็ซฏ้ƒจ็ฝฒ](#ๅŽ็ซฏ้ƒจ็ฝฒ) - [ๅ‰็ซฏ้ƒจ็ฝฒ](#ๅ‰็ซฏ้ƒจ็ฝฒ) - [ๆ•ฐๆฎๅบ“้ƒจ็ฝฒ](#ๆ•ฐๆฎๅบ“้ƒจ็ฝฒ) - [็ผ“ๅญ˜้ƒจ็ฝฒ](#็ผ“ๅญ˜้ƒจ็ฝฒ) - [ๆ–‡ไปถๅญ˜ๅ‚จ้ƒจ็ฝฒ](#ๆ–‡ไปถๅญ˜ๅ‚จ้ƒจ็ฝฒ) - [็”Ÿไบง็Žฏๅขƒ้ƒจ็ฝฒ](#็”Ÿไบง็Žฏๅขƒ้ƒจ็ฝฒ) - [ๅฎนๅ™จๅŒ–้ƒจ็ฝฒ](#ๅฎนๅ™จๅŒ–้ƒจ็ฝฒ) - [็›‘ๆŽง้ƒจ็ฝฒ](#็›‘ๆŽง้ƒจ็ฝฒ) --- ## ้ƒจ็ฝฒๆฆ‚่ฟฐ ### ้ƒจ็ฝฒๆžถๆž„ ``` โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚ ็”จๆˆท็ซฏ โ”‚ โ”‚ โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚ โ”‚ โ”‚ PC ๆต่งˆๅ™จ โ”‚ โ”‚ ็งปๅŠจ App โ”‚ โ”‚ ๅฐ็จ‹ๅบ โ”‚ โ”‚ โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ”‚ โ–ผ โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚ Nginx โ”‚ โ”‚ (ๅๅ‘ไปฃ็† + ้™ๆ€่ต„ๆบ) โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ”‚ โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚ โ”‚ โ–ผ โ–ผ โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚ ๅ‰็ซฏ้™ๆ€่ต„ๆบ โ”‚ โ”‚ ๅŽ็ซฏ API ๆœๅŠก โ”‚ โ”‚ (Vue3 SPA ๅบ”็”จ) โ”‚ โ”‚ (Spring Boot ๅบ”็”จ) โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ”‚ โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚ โ”‚ โ”‚ โ–ผ โ–ผ โ–ผ โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚ MySQL โ”‚ โ”‚ Redis โ”‚ โ”‚ MinIO โ”‚ โ”‚ (ไธปๆ•ฐๆฎๅบ“) โ”‚ โ”‚ (็ผ“ๅญ˜/ไผš่ฏ) โ”‚ โ”‚ (ๆ–‡ไปถๅญ˜ๅ‚จ) โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ ``` ### ้ƒจ็ฝฒๆ–นๅผ 1. **ไผ ็ปŸ้ƒจ็ฝฒ**: ็›ดๆŽฅๅœจๆœๅŠกๅ™จไธŠ้ƒจ็ฝฒ 2. **Docker ้ƒจ็ฝฒ**: ไฝฟ็”จ Docker ๅฎนๅ™จ้ƒจ็ฝฒ 3. **Kubernetes ้ƒจ็ฝฒ**: ไฝฟ็”จ K8s ็ผ–ๆŽ’้ƒจ็ฝฒ --- ## ็Žฏๅขƒๅ‡†ๅค‡ ### ๆœๅŠกๅ™จ่ฆๆฑ‚ #### ๆœ€ไฝŽ้…็ฝฎ | ็ป„ไปถ | CPU | ๅ†…ๅญ˜ | ็กฌ็›˜ | |------|-----|------|------| | ๅŽ็ซฏๆœๅŠก | 2ๆ ธ | 4GB | 20GB | | MySQL | 1ๆ ธ | 2GB | 50GB | | Redis | 1ๆ ธ | 1GB | 10GB | | ๅ‰็ซฏ | 1ๆ ธ | 1GB | 10GB | #### ๆŽจ่้…็ฝฎ | ็ป„ไปถ | CPU | ๅ†…ๅญ˜ | ็กฌ็›˜ | |------|-----|------|------| | ๅŽ็ซฏๆœๅŠก | 4ๆ ธ | 8GB | 50GB | | MySQL | 4ๆ ธ | 16GB | 500GB | | Redis | 2ๆ ธ | 4GB | 50GB | | ๅ‰็ซฏ | 2ๆ ธ | 2GB | 20GB | ### ่ฝฏไปถ่ฆๆฑ‚ | ่ฝฏไปถ | ็‰ˆๆœฌ | ็”จ้€” | |------|------|------| | JDK | 8+ | ๅŽ็ซฏ่ฟ่กŒ็Žฏๅขƒ | | MySQL | 5.7+ / 8.0+ | ๆ•ฐๆฎๅบ“ | | Redis | 5.0+ | ็ผ“ๅญ˜ | | Nginx | 1.18+ | Web ๆœๅŠกๅ™จ | | Node.js | 16+ | ๅ‰็ซฏๆž„ๅปบ | | Docker | 20.10+ | ๅฎนๅ™จๅŒ–๏ผˆๅฏ้€‰๏ผ‰ | --- ## ๅŽ็ซฏ้ƒจ็ฝฒ ### ๆ–นๅผไธ€: JAR ๅŒ…้ƒจ็ฝฒ #### 1. ๆ‰“ๅŒ…้กน็›ฎ ```bash cd lyzsys_backend mvn clean package -DskipTests ``` ็”Ÿๆˆ็š„ JAR ๅŒ…ไฝไบŽ `lyzsys-server/target/lyzsys-server.jar` #### 2. ไธŠไผ ๆ–‡ไปถ ๅฐ† JAR ๅŒ…ไธŠไผ ๅˆฐๆœๅŠกๅ™จ๏ผš ```bash scp lyzsys-server/target/lyzsys-server.jar user@server:/opt/lyzsys/ ``` #### 3. ้…็ฝฎๆ–‡ไปถ ๅˆ›ๅปบ้…็ฝฎๆ–‡ไปถ `application-prod.yaml`: ```yaml spring: # ๆ•ฐๆฎๆบ้…็ฝฎ datasource: url: jdbc:mysql://mysql-server:3306/lyzsys?useSSL=false&serverTimezone=Asia/Shanghai username: lyzsys password: your_password driver-class-name: com.mysql.cj.jdbc.Driver # Redis ้…็ฝฎ redis: host: redis-server port: 6379 database: 1 password: your_redis_password # ้กน็›ฎ้…็ฝฎ lyzsys: web: api-prefix: /admin-api security: mock-enable: false upload: base-url: http://your-domain.com ``` #### 4. ๅฏๅŠจๆœๅŠก ```bash # ๅฏๅŠจๆœๅŠก java -jar lyzsys-server.jar --spring.profiles.active=prod # ๅŽๅฐๅฏๅŠจ nohup java -jar lyzsys-server.jar --spring.profiles.active=prod > lyzsys.log 2>&1 & # ๆŒ‡ๅฎšๅ†…ๅญ˜ๅฏๅŠจ java -Xms512m -Xmx1024m -jar lyzsys-server.jar --spring.profiles.active=prod ``` #### 5. ๅˆ›ๅปบ็ณป็ปŸๆœๅŠก ๅˆ›ๅปบ `/etc/systemd/system/lyzsys.service`: ```ini [Unit] Description=Lyzsys Server After=syslog.target network.target [Service] Type=simple ExecStart=/usr/bin/java -jar /opt/lyzsys/lyzsys-server.jar --spring.profiles.active=prod ExecStop=/bin/kill -15 $MAINPID User=lyzsys Group=lyzsys WorkingDirectory=/opt/lyzsys Restart=always RestartSec=10 [Install] WantedBy=multi-user.target ``` ๅฏๅŠจๆœๅŠก๏ผš ```bash # ้‡่ฝฝ้…็ฝฎ systemctl daemon-reload # ๅฏๅŠจๆœๅŠก systemctl start lyzsys # ๅผ€ๆœบๅฏๅŠจ systemctl enable lyzsys # ๆŸฅ็œ‹็Šถๆ€ systemctl status lyzsys ``` ### ๆ–นๅผไบŒ: Docker ้ƒจ็ฝฒ #### 1. ๅˆ›ๅปบ Dockerfile ๅˆ›ๅปบ `Dockerfile`: ```dockerfile FROM openjdk:8-jre-slim LABEL maintainer="lyzsys" # ่ฎพ็ฝฎๅทฅไฝœ็›ฎๅฝ• WORKDIR /opt/lyzsys # ๅคๅˆถ JAR ๅŒ… COPY lyzsys-server/target/lyzsys-server.jar app.jar # ๆšด้œฒ็ซฏๅฃ EXPOSE 48080 # ๅฏๅŠจๅบ”็”จ ENTRYPOINT ["java", "-jar", "app.jar"] ``` #### 2. ๆž„ๅปบ้•œๅƒ ```bash docker build -t lyzsys/lyzsys-server:latest . ``` #### 3. ่ฟ่กŒๅฎนๅ™จ ```bash docker run -d \ --name lyzsys-server \ -p 48080:48080 \ -e SPRING_PROFILES_ACTIVE=prod \ -e SPRING_DATASOURCE_URL=jdbc:mysql://mysql:3306/lyzsys \ -e SPRING_DATASOURCE_USERNAME=lyzsys \ -e SPRING_DATASOURCE_PASSWORD=your_password \ -e SPRING_DATA_REDIS_HOST=redis \ -e SPRING_DATA_REDIS_PASSWORD=your_redis_password \ lyzsys/lyzsys-server:latest ``` #### 4. ไฝฟ็”จ Docker Compose ๅˆ›ๅปบ `docker-compose.yml`: ```yaml version: '3.8' services: lyzsys-server: image: lyzsys/lyzsys-server:latest container_name: lyzsys-server ports: - "48080:48080" environment: - SPRING_PROFILES_ACTIVE=prod - SPRING_DATASOURCE_URL=jdbc:mysql://mysql:3306/lyzsys - SPRING_DATASOURCE_USERNAME=lyzsys - SPRING_DATASOURCE_PASSWORD=your_password - SPRING_DATA_REDIS_HOST=redis - SPRING_DATA_REDIS_PASSWORD=your_redis_password depends_on: - mysql - redis restart: always ``` ๅฏๅŠจ๏ผš ```bash docker-compose up -d ``` --- ## ๅ‰็ซฏ้ƒจ็ฝฒ ### ๆ–นๅผไธ€: Nginx ้ƒจ็ฝฒ #### 1. ๆž„ๅปบ้กน็›ฎ ```bash cd lyzsys-ui-admin # ๅฎ‰่ฃ…ไพ่ต– pnpm install # ๆž„ๅปบ็”Ÿไบง็‰ˆๆœฌ pnpm build:prod ``` ็”Ÿๆˆ็š„ๆ–‡ไปถไฝไบŽ `dist/` ็›ฎๅฝ• #### 2. ไธŠไผ ๆ–‡ไปถ ๅฐ† `dist/` ็›ฎๅฝ•ไธŠไผ ๅˆฐๆœๅŠกๅ™จ๏ผš ```bash scp -r dist/* user@server:/var/www/lyzsys/ ``` #### 3. ้…็ฝฎ Nginx ๅˆ›ๅปบ Nginx ้…็ฝฎ `/etc/nginx/conf.d/lyzsys.conf`: ```nginx server { listen 80; server_name your-domain.com; root /var/www/lyzsys; index index.html; # ๅ‰็ซฏ่ทฏ็”ฑ location / { try_files $uri $uri/ /index.html; } # API ไปฃ็† location /admin-api/ { proxy_pass http://localhost:48080/admin-api/; 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; proxy_connect_timeout 60s; proxy_read_timeout 60s; proxy_send_timeout 60s; } # ้™ๆ€่ต„ๆบ็ผ“ๅญ˜ location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg|woff|woff2|ttf|eot)$ { expires 1y; add_header Cache-Control "public, immutable"; } # Gzip ๅŽ‹็ผฉ gzip on; gzip_types text/plain text/css application/json application/javascript; gzip_min_length 1024; } ``` #### 4. ้‡ๅฏ Nginx ```bash nginx -t nginx -s reload ``` ### ๆ–นๅผไบŒ: Docker ้ƒจ็ฝฒ #### 1. ๅˆ›ๅปบ Dockerfile ๅˆ›ๅปบ `Dockerfile`: ```dockerfile FROM nginx:alpine # ๅคๅˆถๆž„ๅปบๆ–‡ไปถ COPY dist/ /usr/share/nginx/html/ # ๅคๅˆถ Nginx ้…็ฝฎ COPY nginx.conf /etc/nginx/conf.d/default.conf # ๆšด้œฒ็ซฏๅฃ EXPOSE 80 # ๅฏๅŠจ Nginx CMD ["nginx", "-g", "daemon off;"] ``` #### 2. ๆž„ๅปบ้•œๅƒ ```bash docker build -t lyzsys/lyzsys-ui-admin:latest . ``` #### 3. ่ฟ่กŒๅฎนๅ™จ ```bash docker run -d \ --name lyzsys-ui-admin \ -p 80:80 \ lyzsys/lyzsys-ui-admin:latest ``` --- ## ๆ•ฐๆฎๅบ“้ƒจ็ฝฒ ### MySQL ้ƒจ็ฝฒ #### 1. ๅฎ‰่ฃ… MySQL ```bash # CentOS/RHEL yum install -y mysql-server # Ubuntu/Debian apt-get install -y mysql-server ``` #### 2. ้…็ฝฎ MySQL ็ผ–่พ‘ `/etc/my.cnf`: ```ini [mysqld] # ๅŸบ็ก€้…็ฝฎ port = 3306 character-set-server = utf8mb4 collation-server = utf8mb4_unicode_ci # ่ฟžๆŽฅ้…็ฝฎ max_connections = 500 max_connect_errors = 100 # ็ผ“ๅญ˜้…็ฝฎ innodb_buffer_pool_size = 1G query_cache_size = 128M # ๆ—ฅๅฟ—้…็ฝฎ slow_query_log = 1 slow_query_log_file = /var/log/mysql/slow.log long_query_time = 2 ``` #### 3. ๅˆ›ๅปบๆ•ฐๆฎๅบ“ ```bash mysql -u root -p CREATE DATABASE lyzsys CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; CREATE USER 'lyzsys'@'%' IDENTIFIED BY 'your_password'; GRANT ALL PRIVILEGES ON lyzsys.* TO 'lyzsys'@'%'; FLUSH PRIVILEGES; ``` #### 4. ๅฏผๅ…ฅๆ•ฐๆฎ ```bash mysql -u lyzsys -p lyzsys < lyzsys.sql ``` ### Docker ้ƒจ็ฝฒ MySQL ```bash docker run -d \ --name mysql \ -p 3306:3306 \ -e MYSQL_ROOT_PASSWORD=root_password \ -e MYSQL_DATABASE=lyzsys \ -e MYSQL_USER=lyzsys \ -e MYSQL_PASSWORD=your_password \ -v /data/mysql:/var/lib/mysql \ mysql:8.0 ``` --- ## ็ผ“ๅญ˜้ƒจ็ฝฒ ### Redis ้ƒจ็ฝฒ #### 1. ๅฎ‰่ฃ… Redis ```bash # CentOS/RHEL yum install -y redis # Ubuntu/Debian apt-get install -y redis-server ``` #### 2. ้…็ฝฎ Redis ็ผ–่พ‘ `/etc/redis/redis.conf`: ```ini # ็ป‘ๅฎšๅœฐๅ€ bind 0.0.0.0 # ็ซฏๅฃ port 6379 # ๅฏ†็  requirepass your_redis_password # ๆŒไน…ๅŒ– save 900 1 save 300 10 save 60 10000 # ๆœ€ๅคงๅ†…ๅญ˜ maxmemory 1gb maxmemory-policy allkeys-lru ``` #### 3. ๅฏๅŠจ Redis ```bash # ๅฏๅŠจ Redis redis-server /etc/redis/redis.conf # ๆˆ–ไฝฟ็”จ systemd systemctl start redis systemctl enable redis ``` ### Docker ้ƒจ็ฝฒ Redis ```bash docker run -d \ --name redis \ -p 6379:6379 \ -v /data/redis:/data \ redis:7-alpine \ redis-server --appendonly yes --requirepass your_redis_password ``` --- ## ๆ–‡ไปถๅญ˜ๅ‚จ้ƒจ็ฝฒ ### MinIO ้ƒจ็ฝฒ #### 1. Docker ้ƒจ็ฝฒ MinIO ```bash docker run -d \ --name minio \ -p 9000:9000 \ -p 9001:9001 \ -e MINIO_ROOT_USER=admin \ -e MINIO_ROOT_PASSWORD=admin123 \ -v /data/minio:/data \ minio/minio server /data --console-address ":9001" ``` #### 2. ้…็ฝฎ MinIO 1. ่ฎฟ้—ฎ http://localhost:9001 2. ็™ปๅฝ•๏ผˆadmin / admin123๏ผ‰ 3. ๅˆ›ๅปบ Bucket: `lyzsys` 4. ๅˆ›ๅปบ Access Key ๅ’Œ Secret Key 5. ้…็ฝฎๅŽ็ซฏ `application.yaml`: ```yaml lyzsys: storage: minio: endpoint: http://localhost:9000 access-key: your_access_key secret-key: your_secret_key bucket-name: lyzsys ``` --- ## ็”Ÿไบง็Žฏๅขƒ้ƒจ็ฝฒ ### ๅฎ‰ๅ…จ้…็ฝฎ #### 1. ้…็ฝฎ้˜ฒ็ซๅข™ ```bash # ๅผ€ๆ”พๅฟ…่ฆ็ซฏๅฃ firewall-cmd --permanent --add-port=80/tcp firewall-cmd --permanent --add-port=443/tcp firewall-cmd --permanent --add-port=48080/tcp firewall-cmd --reload ``` #### 2. ้…็ฝฎ SSL ่ฏไนฆ ไฝฟ็”จ Let's Encrypt ๅ…่ดน่ฏไนฆ๏ผš ```bash # ๅฎ‰่ฃ… certbot yum install -y certbot # ่Žทๅ–่ฏไนฆ certbot certonly --standalone -d your-domain.com # ่ฏไนฆไฝ็ฝฎ # /etc/letsencrypt/live/your-domain.com/fullchain.pem # /etc/letsencrypt/live/your-domain.com/privkey.pem ``` ้…็ฝฎ Nginx SSL๏ผš ```nginx server { listen 443 ssl http2; server_name your-domain.com; ssl_certificate /etc/letsencrypt/live/your-domain.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/your-domain.com/privkey.pem; ssl_protocols TLSv1.2 TLSv1.3; ssl_ciphers HIGH:!aNULL:!MD5; ssl_prefer_server_ciphers on; # ... ๅ…ถไป–้…็ฝฎ } # HTTP ่ทณ่ฝฌ HTTPS server { listen 80; server_name your-domain.com; return 301 https://$server_name$request_uri; } ``` ### ๆ€ง่ƒฝไผ˜ๅŒ– #### 1. MySQL ไผ˜ๅŒ– ```ini # my.cnf [mysqld] innodb_buffer_pool_size = 4G innodb_log_file_size = 512M innodb_flush_log_at_trx_commit = 2 innodb_flush_method = O_DIRECT ``` #### 2. Redis ไผ˜ๅŒ– ```ini # redis.conf maxmemory 2gb maxmemory-policy allkeys-lru save "" ``` #### 3. JVM ไผ˜ๅŒ– ```bash java -Xms2g -Xmx2g \ -XX:+UseG1GC \ -XX:MaxGCPauseMillis=200 \ -XX:+HeapDumpOnOutOfMemoryError \ -XX:HeapDumpPath=/opt/lyzsys/logs/ \ -jar lyzsys-server.jar ``` --- ## ๅฎนๅ™จๅŒ–้ƒจ็ฝฒ ### Docker Compose ๅฎŒๆ•ด้ƒจ็ฝฒ ๅˆ›ๅปบ `docker-compose.yml`: ```yaml version: '3.8' services: # MySQL mysql: image: mysql:8.0 container_name: lyzsys-mysql environment: - MYSQL_ROOT_PASSWORD=root_password - MYSQL_DATABASE=lyzsys - MYSQL_USER=lyzsys - MYSQL_PASSWORD=your_password volumes: - mysql-data:/var/lib/mysql ports: - "3306:3306" restart: always # Redis redis: image: redis:7-alpine container_name: lyzsys-redis command: redis-server --appendonly yes --requirepass your_redis_password volumes: - redis-data:/data ports: - "6379:6379" restart: always # MinIO minio: image: minio/minio container_name: lyzsys-minio environment: - MINIO_ROOT_USER=admin - MINIO_ROOT_PASSWORD=admin123 volumes: - minio-data:/data ports: - "9000:9000" - "9001:9001" command: server /data --console-address ":9001" restart: always # ๅŽ็ซฏๆœๅŠก backend: image: lyzsys/lyzsys-server:latest container_name: lyzsys-backend environment: - SPRING_PROFILES_ACTIVE=prod - SPRING_DATASOURCE_URL=jdbc:mysql://mysql:3306/lyzsys - SPRING_DATASOURCE_USERNAME=lyzsys - SPRING_DATASOURCE_PASSWORD=your_password - SPRING_DATA_REDIS_HOST=redis - SPRING_DATA_REDIS_PASSWORD=your_redis_password ports: - "48080:48080" depends_on: - mysql - redis restart: always # ๅ‰็ซฏๆœๅŠก frontend: image: lyzsys/lyzsys-ui-admin:latest container_name: lyzsys-frontend ports: - "80:80" depends_on: - backend restart: always volumes: mysql-data: redis-data: minio-data: ``` ๅฏๅŠจ๏ผš ```bash docker-compose up -d ``` --- ## ็›‘ๆŽง้ƒจ็ฝฒ ### Spring Boot Admin #### 1. ๆทปๅŠ ไพ่ต– ```xml de.codecentric spring-boot-admin-starter-server ``` #### 2. ้…็ฝฎๅบ”็”จ ```yaml spring: application: name: lyzsys-admin-server server: port: 48081 ``` #### 3. ๅฎขๆˆท็ซฏ้…็ฝฎ ```yaml spring: boot: admin: client: url: http://localhost:48081 ``` ### SkyWalking #### 1. ๅฎ‰่ฃ… SkyWalking ```bash docker run -d \ --name skywalking \ -p 11800:11800 \ -p 12800:12800 \ apache/skywalking-oap-server ``` #### 2. ้…็ฝฎ Agent ```bash java -javaagent:/path/to/skywalking-agent.jar \ -Dskywalking.agent.service_name=lyzsys \ -Dskywalking.collector.backend_service=localhost:11800 \ -jar lyzsys-server.jar ``` --- **ๆ–‡ๆกฃ็‰ˆๆœฌ**: v1.0.0 **ๆœ€ๅŽๆ›ดๆ–ฐ**: 2025-01-19 **็ปดๆŠคๅ›ข้˜Ÿ**: Lyzsys ่ฟ็ปดๅ›ข้˜Ÿ