From ce7dccab151f212a44e04f9e3cfa93c712b30941 Mon Sep 17 00:00:00 2001 From: liangliangyy Date: Sun, 27 Apr 2025 14:59:02 +0800 Subject: [PATCH 1/6] =?UTF-8?q?=E5=8D=87=E7=BA=A7python=E7=89=88=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/django.yml | 4 ++-- Dockerfile | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/django.yml b/.github/workflows/django.yml index 94baea9..1932916 100644 --- a/.github/workflows/django.yml +++ b/.github/workflows/django.yml @@ -24,7 +24,7 @@ jobs: strategy: max-parallel: 4 matrix: - python-version: ["3.10","3.11" ] + python-version: ["3.10","3.11","3.12" ] steps: - name: Start MySQL @@ -64,7 +64,7 @@ jobs: strategy: max-parallel: 4 matrix: - python-version: ["3.10","3.11" ] + python-version: ["3.10","3.11","3.12" ] steps: - name: Start MySQL diff --git a/Dockerfile b/Dockerfile index 80b46ac..7f02b52 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,4 @@ -FROM python:3.11 +FROM python:3.12 ENV PYTHONUNBUFFERED 1 WORKDIR /code/djangoblog/ RUN apt-get update && \ From 4f8668394b8952d175ec2f7e100e8803c1445711 Mon Sep 17 00:00:00 2001 From: liangliangyy Date: Mon, 12 May 2025 22:31:51 +0800 Subject: [PATCH 2/6] =?UTF-8?q?=E5=A2=9E=E5=8A=A0k8s=E9=83=A8=E7=BD=B2?= =?UTF-8?q?=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- deploy/k8s/configmap.yaml | 119 +++++++++++++++ deploy/k8s/deployment.yaml | 274 +++++++++++++++++++++++++++++++++++ deploy/k8s/gateway.yaml | 17 +++ deploy/k8s/pv.yaml | 94 ++++++++++++ deploy/k8s/pvc.yaml | 60 ++++++++ deploy/k8s/service.yaml | 80 ++++++++++ deploy/k8s/storageclass.yaml | 10 ++ 7 files changed, 654 insertions(+) create mode 100644 deploy/k8s/configmap.yaml create mode 100644 deploy/k8s/deployment.yaml create mode 100644 deploy/k8s/gateway.yaml create mode 100644 deploy/k8s/pv.yaml create mode 100644 deploy/k8s/pvc.yaml create mode 100644 deploy/k8s/service.yaml create mode 100644 deploy/k8s/storageclass.yaml diff --git a/deploy/k8s/configmap.yaml b/deploy/k8s/configmap.yaml new file mode 100644 index 0000000..083c34f --- /dev/null +++ b/deploy/k8s/configmap.yaml @@ -0,0 +1,119 @@ +apiVersion: v1 +kind: ConfigMap +metadata: + name: web-nginx-config + namespace: djangoblog +data: + nginx.conf: | + user nginx; + worker_processes auto; + error_log /var/log/nginx/error.log notice; + pid /var/run/nginx.pid; + + events { + worker_connections 1024; + multi_accept on; + use epoll; + } + + http { + include /etc/nginx/mime.types; + default_type application/octet-stream; + + log_format main '$remote_addr - $remote_user [$time_local] "$request" ' + '$status $body_bytes_sent "$http_referer" ' + '"$http_user_agent" "$http_x_forwarded_for"'; + + access_log /var/log/nginx/access.log main; + + sendfile on; + keepalive_timeout 65; + gzip on; + gzip_disable "msie6"; + + gzip_vary on; + gzip_proxied any; + gzip_comp_level 8; + gzip_buffers 16 8k; + gzip_http_version 1.1; + gzip_types text/plain application/javascript application/x-javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png; + + # Include server configurations + include /etc/nginx/conf.d/*.conf; + } + djangoblog.conf: | + server { + server_name lylinux.net; + root /code/djangoblog/collectedstatic/; + listen 80; + keepalive_timeout 70; + location /static/ { + expires max; + alias /code/djangoblog/collectedstatic/; + } + + location ~* (robots\.txt|ads\.txt|favicon\.ico|favion\.ico|crossdomain\.xml|google93fd32dbd906620a\.html|BingSiteAuth\.xml|baidu_verify_Ijeny6KrmS\.html)$ { + root /resource/djangopub; + expires 1d; + access_log off; + error_log off; + } + + location / { + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_set_header Host $http_host; + proxy_set_header X-NginX-Proxy true; + proxy_redirect off; + if (!-f $request_filename) { + proxy_pass http://djangoblog:8000; + break; + } + } + } + server { + server_name www.lylinux.net; + listen 80; + return 301 https://lylinux.net$request_uri; + } + resource.lylinux.net.conf: | + server { + index index.html index.htm; + server_name resource.lylinux.net; + root /resource/; + + location /djangoblog/ { + alias /code/djangoblog/collectedstatic/; + } + + access_log off; + error_log off; + include lylinux/resource.conf; + } + lylinux.resource.conf: | + expires max; + access_log off; + log_not_found off; + add_header Pragma public; + add_header Cache-Control "public"; + add_header "Access-Control-Allow-Origin" "*"; + +--- +apiVersion: v1 +kind: ConfigMap +metadata: + name: djangoblog-env + namespace: djangoblog +data: + DJANGO_MYSQL_DATABASE: djangoblog + DJANGO_MYSQL_USER: db_user + DJANGO_MYSQL_PASSWORD: db_password + DJANGO_MYSQL_HOST: db_host + DJANGO_MYSQL_PORT: db_port + DJANGO_REDIS_URL: "redis:6379" + DJANGO_DEBUG: "False" + MYSQL_ROOT_PASSWORD: DjAnGoBlOg!2!Q@W#E + MYSQL_DATABASE: djangoblog + MYSQL_PASSWORD: DjAnGoBlOg!2!Q@W#E + DJANGO_SECRET_KEY: xxxxxxxxxxxxxxxxxxxxxxxxxxxxx + diff --git a/deploy/k8s/deployment.yaml b/deploy/k8s/deployment.yaml new file mode 100644 index 0000000..414fdcc --- /dev/null +++ b/deploy/k8s/deployment.yaml @@ -0,0 +1,274 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: djangoblog + namespace: djangoblog + labels: + app: djangoblog +spec: + replicas: 3 + selector: + matchLabels: + app: djangoblog + template: + metadata: + labels: + app: djangoblog + spec: + containers: + - name: djangoblog + image: liangliangyy/djangoblog:latest + imagePullPolicy: Always + ports: + - containerPort: 8000 + envFrom: + - configMapRef: + name: djangoblog-env + readinessProbe: + httpGet: + path: / + port: 8000 + initialDelaySeconds: 10 + periodSeconds: 30 + livenessProbe: + httpGet: + path: / + port: 8000 + initialDelaySeconds: 10 + periodSeconds: 30 + resources: + requests: + cpu: 10m + memory: 100Mi + limits: + cpu: "2" + memory: 2Gi + volumeMounts: + - name: djangoblog + mountPath: /code/djangoblog/collectedstatic + - name: resource + mountPath: /resource + volumes: + - name: djangoblog + persistentVolumeClaim: + claimName: djangoblog-pvc + - name: resource + persistentVolumeClaim: + claimName: resource-pvc + +--- +apiVersion: apps/v1 +kind: Deployment +metadata: + name: redis + namespace: djangoblog + labels: + app: redis +spec: + replicas: 1 + selector: + matchLabels: + app: redis + template: + metadata: + labels: + app: redis + spec: + containers: + - name: redis + image: redis:latest + imagePullPolicy: IfNotPresent + ports: + - containerPort: 6379 + resources: + requests: + cpu: 10m + memory: 100Mi + limits: + cpu: 200m + memory: 2Gi + +--- +apiVersion: apps/v1 +kind: Deployment +metadata: + name: db + namespace: djangoblog + labels: + app: db +spec: + replicas: 1 + selector: + matchLabels: + app: db + template: + metadata: + labels: + app: db + spec: + containers: + - name: db + image: mysql:latest + imagePullPolicy: IfNotPresent + ports: + - containerPort: 3306 + envFrom: + - configMapRef: + name: djangoblog-env + readinessProbe: + exec: + command: + - mysqladmin + - ping + - "-h" + - "127.0.0.1" + - "-u" + - "root" + - "-p$MYSQL_ROOT_PASSWORD" + initialDelaySeconds: 10 + periodSeconds: 10 + livenessProbe: + exec: + command: + - mysqladmin + - ping + - "-h" + - "127.0.0.1" + - "-u" + - "root" + - "-p$MYSQL_ROOT_PASSWORD" + initialDelaySeconds: 10 + periodSeconds: 10 + resources: + requests: + cpu: 10m + memory: 100Mi + limits: + cpu: "2" + memory: 2Gi + volumeMounts: + - name: db-data + mountPath: /var/lib/mysql + volumes: + - name: db-data + persistentVolumeClaim: + claimName: db-pvc + +--- +apiVersion: apps/v1 +kind: Deployment +metadata: + name: nginx + namespace: djangoblog + labels: + app: nginx +spec: + replicas: 1 + selector: + matchLabels: + app: nginx + template: + metadata: + labels: + app: nginx + spec: + containers: + - name: nginx + image: nginx:latest + imagePullPolicy: IfNotPresent + ports: + - containerPort: 80 + resources: + requests: + cpu: 10m + memory: 100Mi + limits: + cpu: "2" + memory: 2Gi + volumeMounts: + - name: nginx-config + mountPath: /etc/nginx/nginx.conf + subPath: nginx.conf + - name: nginx-config + mountPath: /etc/nginx/conf.d/default.conf + subPath: djangoblog.conf + - name: nginx-config + mountPath: /etc/nginx/conf.d/resource.lylinux.net.conf + subPath: resource.lylinux.net.conf + - name: nginx-config + mountPath: /etc/nginx/lylinux/resource.conf + subPath: lylinux.resource.conf + - name: djangoblog-pvc + mountPath: /code/djangoblog/collectedstatic + - name: resource-pvc + mountPath: /resource + volumes: + - name: nginx-config + configMap: + name: web-nginx-config + - name: djangoblog-pvc + persistentVolumeClaim: + claimName: djangoblog-pvc + - name: resource-pvc + persistentVolumeClaim: + claimName: resource-pvc + +--- +apiVersion: apps/v1 +kind: Deployment +metadata: + name: elasticsearch + namespace: djangoblog + labels: + app: elasticsearch +spec: + replicas: 1 + selector: + matchLabels: + app: elasticsearch + template: + metadata: + labels: + app: elasticsearch + spec: + containers: + - name: elasticsearch + image: liangliangyy/elasticsearch-analysis-ik:8.6.1 + imagePullPolicy: IfNotPresent + env: + - name: discovery.type + value: single-node + - name: ES_JAVA_OPTS + value: "-Xms256m -Xmx256m" + - name: xpack.security.enabled + value: "false" + - name: xpack.monitoring.templates.enabled + value: "false" + ports: + - containerPort: 9200 + resources: + requests: + cpu: 10m + memory: 100Mi + limits: + cpu: "2" + memory: 2Gi + readinessProbe: + httpGet: + path: / + port: 9200 + initialDelaySeconds: 15 + periodSeconds: 30 + livenessProbe: + httpGet: + path: / + port: 9200 + initialDelaySeconds: 15 + periodSeconds: 30 + volumeMounts: + - name: elasticsearch-data + mountPath: /usr/share/elasticsearch/data/ + volumes: + - name: elasticsearch-data + persistentVolumeClaim: + claimName: elasticsearch-pvc diff --git a/deploy/k8s/gateway.yaml b/deploy/k8s/gateway.yaml new file mode 100644 index 0000000..a8de073 --- /dev/null +++ b/deploy/k8s/gateway.yaml @@ -0,0 +1,17 @@ +apiVersion: networking.k8s.io/v1 +kind: Ingress +metadata: + name: nginx + namespace: djangoblog +spec: + ingressClassName: nginx + rules: + - http: + paths: + - path: / + pathType: Prefix + backend: + service: + name: nginx + port: + number: 80 \ No newline at end of file diff --git a/deploy/k8s/pv.yaml b/deploy/k8s/pv.yaml new file mode 100644 index 0000000..874b72f --- /dev/null +++ b/deploy/k8s/pv.yaml @@ -0,0 +1,94 @@ +apiVersion: v1 +kind: PersistentVolume +metadata: + name: local-pv-db +spec: + capacity: + storage: 10Gi + volumeMode: Filesystem + accessModes: + - ReadWriteOnce + persistentVolumeReclaimPolicy: Retain + storageClassName: local-storage + local: + path: /mnt/local-storage-db + nodeAffinity: + required: + nodeSelectorTerms: + - matchExpressions: + - key: kubernetes.io/hostname + operator: In + values: + - master +--- +apiVersion: v1 +kind: PersistentVolume +metadata: + name: local-pv-djangoblog +spec: + capacity: + storage: 5Gi + volumeMode: Filesystem + accessModes: + - ReadWriteOnce + persistentVolumeReclaimPolicy: Retain + storageClassName: local-storage + local: + path: /mnt/local-storage-djangoblog + nodeAffinity: + required: + nodeSelectorTerms: + - matchExpressions: + - key: kubernetes.io/hostname + operator: In + values: + - master + + +--- +apiVersion: v1 +kind: PersistentVolume +metadata: + name: local-pv-resource +spec: + capacity: + storage: 5Gi + volumeMode: Filesystem + accessModes: + - ReadWriteOnce + persistentVolumeReclaimPolicy: Retain + storageClassName: local-storage + local: + path: /mnt/resource/ + nodeAffinity: + required: + nodeSelectorTerms: + - matchExpressions: + - key: kubernetes.io/hostname + operator: In + values: + - master + +--- +apiVersion: v1 +kind: PersistentVolume +metadata: + name: local-pv-elasticsearch +spec: + capacity: + storage: 5Gi + volumeMode: Filesystem + accessModes: + - ReadWriteOnce + persistentVolumeReclaimPolicy: Retain + storageClassName: local-storage + local: + path: /mnt/local-storage-elasticsearch + nodeAffinity: + required: + nodeSelectorTerms: + - matchExpressions: + - key: kubernetes.io/hostname + operator: In + values: + - master \ No newline at end of file diff --git a/deploy/k8s/pvc.yaml b/deploy/k8s/pvc.yaml new file mode 100644 index 0000000..ef238c5 --- /dev/null +++ b/deploy/k8s/pvc.yaml @@ -0,0 +1,60 @@ +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + name: db-pvc + namespace: djangoblog +spec: + storageClassName: local-storage + volumeName: local-pv-db + accessModes: + - ReadWriteOnce + resources: + requests: + storage: 10Gi + + +--- +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + name: djangoblog-pvc + namespace: djangoblog +spec: + volumeName: local-pv-djangoblog + storageClassName: local-storage + accessModes: + - ReadWriteOnce + resources: + requests: + storage: 5Gi + +--- +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + name: resource-pvc + namespace: djangoblog +spec: + volumeName: local-pv-resource + storageClassName: local-storage + accessModes: + - ReadWriteOnce + resources: + requests: + storage: 5Gi + +--- +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + name: elasticsearch-pvc + namespace: djangoblog +spec: + volumeName: local-pv-elasticsearch + storageClassName: local-storage + accessModes: + - ReadWriteOnce + resources: + requests: + storage: 5Gi + \ No newline at end of file diff --git a/deploy/k8s/service.yaml b/deploy/k8s/service.yaml new file mode 100644 index 0000000..4ef2931 --- /dev/null +++ b/deploy/k8s/service.yaml @@ -0,0 +1,80 @@ +apiVersion: v1 +kind: Service +metadata: + name: djangoblog + namespace: djangoblog + labels: + app: djangoblog +spec: + selector: + app: djangoblog + ports: + - protocol: TCP + port: 8000 + targetPort: 8000 + type: ClusterIP +--- +apiVersion: v1 +kind: Service +metadata: + name: nginx + namespace: djangoblog + labels: + app: nginx +spec: + selector: + app: nginx + ports: + - protocol: TCP + port: 80 + targetPort: 80 + type: ClusterIP +--- +apiVersion: v1 +kind: Service +metadata: + name: redis + namespace: djangoblog + labels: + app: redis +spec: + selector: + app: redis + ports: + - protocol: TCP + port: 6379 + targetPort: 6379 + type: ClusterIP +--- +apiVersion: v1 +kind: Service +metadata: + name: db + namespace: djangoblog + labels: + app: db +spec: + selector: + app: db + ports: + - protocol: TCP + port: 3306 + targetPort: 3306 + type: ClusterIP +--- +apiVersion: v1 +kind: Service +metadata: + name: elasticsearch + namespace: djangoblog + labels: + app: elasticsearch +spec: + selector: + app: elasticsearch + ports: + - protocol: TCP + port: 9200 + targetPort: 9200 + type: ClusterIP + diff --git a/deploy/k8s/storageclass.yaml b/deploy/k8s/storageclass.yaml new file mode 100644 index 0000000..5d5a14c --- /dev/null +++ b/deploy/k8s/storageclass.yaml @@ -0,0 +1,10 @@ +apiVersion: storage.k8s.io/v1 +kind: StorageClass +metadata: + name: local-storage + annotations: + storageclass.kubernetes.io/is-default-class: "true" +provisioner: kubernetes.io/no-provisioner +volumeBindingMode: Immediate + + From 67f3f7b40317ae88ac1761820ff6beda70cc8238 Mon Sep 17 00:00:00 2001 From: liangliangyy Date: Mon, 12 May 2025 22:40:09 +0800 Subject: [PATCH 3/6] =?UTF-8?q?=E5=8D=87=E7=BA=A7=E4=BE=9D=E8=B5=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- requirements.txt | Bin 2266 -> 2340 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/requirements.txt b/requirements.txt index 2e098322fa01b462d6e81aa54ee95895bc044355..2427224539eea4a1156de951d80845cf918732f0 100644 GIT binary patch delta 243 zcmca5xI}2eIYy(2=kKywFz7KDOy0;S$!IiLmq~o`BgRFn=3p@(Z}S2s0Y+9MAlGQ} zR_0)SQ;-B07cnF=7)};sIm~GYk_BSJ$#+>&87(I}vj$HtVG>|BhNzv~$QsXRGWj8^ zI4elE(PU0GX+^Ml23`g(h9ZVkh7^WOhGGU=AT)#M0XoQ)O_|YnaweOsrU_VGF;HCz uLn%W6kjw|d9H$=L2vSA_VYkC*s+s4IRXKuZZTK@ delta 223 zcmZ1?bW3o;IYz^Y=kKx_Gw3lGP2R{T$!Z8>Sxh!$5}y2saS^L2kY_Mimq~o{0ww`Q zu%zMSt<1rkAPoj!P2wzvIYBJ2$mGW?sf=cmJz0Y%pJ4UUG-Tjq;9@9XsAMQ%sA8}M zLL;CqBd}VK`T~Z0hGL+c;beU_X+@CLMqnL945 Date: Mon, 12 May 2025 22:42:30 +0800 Subject: [PATCH 4/6] =?UTF-8?q?Revert=20"=E5=8D=87=E7=BA=A7python=E7=89=88?= =?UTF-8?q?=E6=9C=AC"?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This reverts commit ce7dccab151f212a44e04f9e3cfa93c712b30941. --- .github/workflows/django.yml | 4 ++-- Dockerfile | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/django.yml b/.github/workflows/django.yml index 1932916..94baea9 100644 --- a/.github/workflows/django.yml +++ b/.github/workflows/django.yml @@ -24,7 +24,7 @@ jobs: strategy: max-parallel: 4 matrix: - python-version: ["3.10","3.11","3.12" ] + python-version: ["3.10","3.11" ] steps: - name: Start MySQL @@ -64,7 +64,7 @@ jobs: strategy: max-parallel: 4 matrix: - python-version: ["3.10","3.11","3.12" ] + python-version: ["3.10","3.11" ] steps: - name: Start MySQL diff --git a/Dockerfile b/Dockerfile index 7f02b52..80b46ac 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,4 @@ -FROM python:3.12 +FROM python:3.11 ENV PYTHONUNBUFFERED 1 WORKDIR /code/djangoblog/ RUN apt-get update && \ From de68b040a04bd750642828c6d74431f0872ba89e Mon Sep 17 00:00:00 2001 From: liangliangyy Date: Mon, 12 May 2025 22:44:17 +0800 Subject: [PATCH 5/6] =?UTF-8?q?=E5=8D=87=E7=BA=A7=E4=BE=9D=E8=B5=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- requirements.txt | Bin 2340 -> 1106 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/requirements.txt b/requirements.txt index 2427224539eea4a1156de951d80845cf918732f0..a176088883e0f1995ea7f65041fc48864c7590d6 100644 GIT binary patch literal 1106 zcmY*Y!Lr*R47~F%W^BhvUJqP4y>_P4OV0!=4haSV_$AKQcSVxd=?x^Yl6Dtu!%4@u z(n<&ITvn==JJ|`1cqvh-jqEzv4IIdJ^4clY$&KuV&XY}aB3XMVm2$*gckN z#W95kd1rIsk++CU^hqAKej~r(<&+3{LI7-nPdj=r0-;)Qwve&1!vvgj@X?wJa}ONZ zCew+ZI$g$a^Za5f=EW5|S_81BR`Z&#&N%yQ2>iVWk-UaHt?XIp2y*mfJ?}T5eYDPn z8)gLqoK7Jch+p-_P$I4-vY=oI)Ar)mI?X_@R_l15xRz7!&8Q14#e#<(Yqm0mT-tZ? zO+OR?A+HxMOpq#rQ?|p$JIvhM?&%a>q7ZC z*rt~ok35o^jjltg;$G-|t!tOQ=$fUIbg6rqKBf<{_(Y$2oxpw;wrM=iN0^4n%;^1Kvxe8Uf(+1lxB9~i8s z;kCqG>g-nbT9NBGKNDt_h+&q_bt!vBIKQhvz>moD;8)4hM0s|4Ya-h^Jw=49&iUw6 zCsrWmfz9kdTt;R~S^vc8x%8=m9Z^xn*?mj5I^D|Jg%#H1ZqC0()`@V`6`$>(vh&Ek zj?v&6;i<_^7d&AIJ8MJc$7fLCAZ)MSWx5MIN^_gK zKI)BI@u3qoLQyNcgEKSOp@unp4{h!gr&GP!z!B*py0nqPYcYcdzRdA>3Y+MQd*PP4 z;Z^c=$6kf6PJFPjSu*Qc^t+jCWPvU7Pz#qUi|XDbnRe&XKeHjq4E5st}m zR~(;xIVUjX%v)G8Uxg>S+Z)lfXK&=}3a>mN?7u@O=Iuha6!cSA%4W3IbO^hliCS3g zvDVBrJz;(5h{77%z0_d4^aBDt&Z0-pBKB7M>n-nQ#?1Eeu+g*AmA_F}L%(Ew`1U*w zy})#M%aGen4A!GM=Z<3r%z%nL%Kt=hTKQoIu^IWz`DWz3{%zu4Z*cDr;`G`AuD@sT zrH*^`#$?39{YKxSm;3fLW}?~Ni<4)s9W?ZbT*KT|*~eCB=5L|=;E&>EW3ey!8uG1R zFEOK~x52vO9%NgD-CB4OjU;~gK3og+Q+j>X?Y-b{PMNjqm=Jp3y-F06bB!ORDEXmy s*)7ho%={rH)idR32Vt&HI?GNu(LLU?Wdj!kc~J4KW`XTczDn-*|HAiIr2qf` From e4815fb6db76929fa3dd414bd053b5b6aa72abb9 Mon Sep 17 00:00:00 2001 From: liangliangyy Date: Mon, 12 May 2025 22:54:45 +0800 Subject: [PATCH 6/6] =?UTF-8?q?=E5=8D=87=E7=BA=A7=E4=BE=9D=E8=B5=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- requirements.txt | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/requirements.txt b/requirements.txt index a176088..77cc8ff 100644 --- a/requirements.txt +++ b/requirements.txt @@ -39,10 +39,8 @@ python-ipware==3.0.0 python-logstash==0.4.8 python-slugify==8.0.4 pytz==2025.2 -rcssmin==1.2.1 redis==6.0.0 requests==2.32.3 -rjsmin==1.2.4 setuptools==78.1.0 six==1.17.0 sqlparse==0.5.3 @@ -51,7 +49,6 @@ tqdm==4.67.1 tzdata==2025.2 ua-parser==1.0.1 ua-parser-builtins==0.18.0.post1 -urllib3==2.4.0 user-agents==2.2.0 webencodings==0.5.1 WeRoBot==1.13.1 @@ -59,4 +56,4 @@ Whoosh==2.7.4 xmltodict==0.14.2 yarl==1.20.0 zope.event==5.0 -zope.interface==7.2 \ No newline at end of file +zope.interface==7.2