【02】客户端服务端C语言-go语言-web端PHP语言整合内容发布-优雅草网络设备监控系统-2月12日优雅草简化Centos stream8安装zabbix7教程-本搭建教程非docker搭建教程-优雅草solution

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
云数据库 RDS MySQL,高可用系列 2核4GB
简介: 【02】客户端服务端C语言-go语言-web端PHP语言整合内容发布-优雅草网络设备监控系统-2月12日优雅草简化Centos stream8安装zabbix7教程-本搭建教程非docker搭建教程-优雅草solution

【02】客户端服务端C语言-go语言-web端PHP语言整合内容发布-优雅草网络设备监控系统-2月12日优雅草简化Centos stream8安装zabbix7教程-本搭建教程非docker搭建教程-优雅草solution

首先前一篇文章我们介绍了docker安装,本次我们需要常规搭建,以下是docker和非docker的区别,由于优雅草的zabbix是要进行深度二开的,因此选择非docker,此前看了各种教程和视频,卓伊凡失败了不下3次,联合同事solution一起开始做,最终在这次整理了可行的方案,简化 方案,很多教程里面有些混乱,导致搭建各种报错,当然此方案你们也要践行

以下为你详细对比 Docker 容器搭建和非 Docker 搭建的优劣势:

### Docker 容器搭建

#### 优势

- **环境一致性**:Docker 可以将应用及其依赖打包成一个独立的容器,确保应用在不同的环境中都能以相同的方式运行。例如,开发环境、测试环境和生产环境可以保持高度一致,减少因环境差异导致的问题。

- **快速部署**:由于 Docker 容器的轻量级特性,启动和停止容器非常迅速。相比传统的部署方式,大大缩短了应用的部署时间。比如,一个复杂的微服务应用,使用 Docker 可以在几分钟内完成部署,而传统方式可能需要数小时甚至数天。

- **资源利用率高**:多个 Docker 容器可以共享宿主机的操作系统内核,减少了系统资源的开销。与传统的虚拟机相比,Docker 容器占用的资源更少,能够在相同的硬件资源下运行更多的应用实例。

- **可移植性强**:Docker 容器可以在任何支持 Docker 的平台上运行,无论是物理机、虚拟机还是云服务器。这使得应用的迁移和扩展变得更加容易,例如可以方便地将应用从本地开发环境迁移到云端生产环境。

- **隔离性好**:每个 Docker 容器都是相互隔离的,一个容器的故障不会影响其他容器的正常运行。这种隔离性提高了应用的稳定性和安全性,例如不同的业务系统可以分别运行在不同的容器中,互不干扰。

#### 劣势

- **安全风险**:虽然 Docker 提供了一定的隔离机制,但由于容器共享宿主机的内核,存在一定的安全风险。如果一个容器被攻击,攻击者可能会利用内核漏洞影响其他容器或宿主机。

- **学习成本**:对于不熟悉 Docker 技术的开发人员和运维人员来说,需要花费一定的时间来学习 Docker 的基本概念、命令和操作流程。

- **性能开销**:尽管 Docker 容器的性能开销相对较小,但在某些情况下,如大量的 I/O 操作或对内核资源的频繁访问,仍然会存在一定的性能损失。

- **管理复杂性**:当容器数量较多时,容器的管理和编排会变得复杂。需要使用专门的工具(如 Kubernetes)来进行容器的调度、监控和管理。

### 非 Docker 搭建

#### 优势

- **技术成熟度高**:非 Docker 搭建方式已经存在了很长时间,技术非常成熟。开发人员和运维人员对传统的部署方式比较熟悉,有丰富的经验和技术支持。

- **系统控制权强**:在非 Docker 搭建中,用户可以直接对操作系统进行配置和管理,拥有更高的系统控制权。对于一些对系统资源有特殊要求的应用,这种方式可以更好地满足需求。

- **安全性相对容易控制**:由于没有容器隔离带来的额外复杂性,传统部署方式的安全策略可以更加直接和明确。用户可以根据自己的需求对操作系统进行安全加固,减少安全漏洞。

- **无需额外依赖**:非 Docker 搭建不需要安装 Docker 引擎等额外的软件,减少了因依赖问题导致的故障和维护成本。

#### 劣势

- **环境配置复杂**:在不同的环境中部署应用时,需要手动配置各种依赖和环境变量,容易出现配置不一致的问题。例如,在不同的服务器上安装相同的应用,可能会因为操作系统版本、软件库版本等差异导致应用无法正常运行。

- **部署效率低**:传统的部署方式通常需要手动安装和配置应用的各个组件,过程繁琐,部署效率低下。特别是在大规模部署时,这种效率问题会更加明显。

- **资源利用率低**:每个应用都需要独立的操作系统环境,会占用大量的系统资源。例如,多个应用分别安装在不同的虚拟机上,会造成硬件资源的浪费。

- **可移植性差**:非 Docker 搭建的应用在不同的环境中迁移和部署比较困难,需要重新配置环境和安装依赖,增加了迁移的成本和风险。

CentOS8 安装zabbix7

教程

  • 强制创建目录/usr/local/zabbix7/

mkdir -p /usr/local/zabbix7/

  • 配置阿里源

sudo mkdir -p /etc/yum.repos.d/back && sudo mv /etc/yum.repos.d/CentOS* /etc/yum.repos.d/back && cat <<EOF | sudo tee /etc/yum.repos.d/Centos8.repo[BaseOS]name=CentOS-\$releasever - Basebaseurl=http://mirrors.aliyun.com/centos/\$releasever/BaseOS/\$basearch/os/gpgcheck=1gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-Official[AppStream]name=CentOS-\$releasever - AppStreambaseurl=http://mirrors.aliyun.com/centos/\$releasever/AppStream/\$basearch/os/gpgcheck=1gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-Official[extras]name=CentOS-\$releasever - Extrasbaseurl=http://mirrors.aliyun.com/centos/\$releasever/extras/\$basearch/os/gpgcheck=1gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-OfficialEOFsudo dnf clean allsudo dnf makecache

  • 安装zabbix源

rpm -Uvh https://repo.zabbix.com/zabbix/7.0/centos/8/x86_64/zabbix-release-latest-7.0.el8.noarch.rpm

  • 更新源

dnf clean all && sudo dnf makecache

  • 创建下载目录/usr/local/zabbix7/

mkdir -p /usr/local/zabbix7/zabbix-{server-mysql,web-mysql,nginx-conf,sql-scripts,selinux-policy,agent,mariadb,php,fonts,stress}

  • 下载zabbix组件

dnf download --resolve --destdir=/usr/local/zabbix7/zabbix-server-mysql zabbix-server-mysqldnf download --resolve --destdir=/usr/local/zabbix7/zabbix-web-mysql zabbix-web-mysqldnf download --resolve --destdir=/usr/local/zabbix7/zabbix-nginx-conf zabbix-nginx-confdnf download --resolve --destdir=/usr/local/zabbix7/zabbix-sql-scripts zabbix-sql-scriptsdnf download --resolve --destdir=/usr/local/zabbix7/zabbix-selinux-policy zabbix-selinux-policydnf download --resolve --destdir=/usr/local/zabbix7/zabbix-agent zabbix-agent

  • 下载PHP

sudo dnf install -y epel-releasesudo dnf install -y https://rpms.remirepo.net/enterprise/remi-release-8.0.rpmyum remove php*dnf module reset phpsudo dnf module enable php:remi-8.0dnf download --resolve --destdir=/usr/local/zabbix7/zabbix-php/ php php-fpm php-mysqlnd php-gd php-xml php-bcmath php-mbstring

  • 下载mariadb10.5

curl -LsS -O https://downloads.mariadb.com/MariaDB/mariadb_repo_setupsudo bash mariadb_repo_setup --mariadb-server-version=10.5dnf module reset mariadb -ydnf module enable mariadb:10.5 -ydnf download --resolve --destdir=/usr/local/zabbix7/zabbix-mariadb mariadb mariadb-server

  • 下载字体包解决乱码问题

dnf download --resolve --destdir=/usr/local/zabbix7/zabbix-fonts wqy-microhei-fonts

  • 下载打高CPU测试命令便于后期测试告警

sudo dnf install -y epel-releasednf download --resolve --destdir=/usr/local/zabbix7/zabbix-stress stress

  • 离线安装(上面都是下载rpm,从这里开始安装这些rpm)
  • 安装mariadb(这里还依赖python3相关包)

cd /usr/local/zabbix7/zabbix-mariadbrpm -Uvh *.rpm

  • 安装zabbix-server-mysql

cd /usr/local/zabbix7/zabbix-server-mysql rpm -Uvh *.rpmrpm -Uvh fping-5.1-1.el8.x86_64.rpm OpenIPMI-libs-2.0.31-3.el8.x86_64.rpm unixODBC-2.3.7-1.el8.x86_64.rpm zabbix-server-mysql-7.0.0-release1.el8.x86_64.rpm

  • 安装zabbix-erbmysql

cd /usr/local/zabbix7/zabbix-web-mysql rpm -Uvh *.rpm

  • 安装zabbix-nginx-conf

cd /usr/local/zabbix7/zabbix-nginx-conf rpm -Uvh *.rpmrpm -ivh httpd-filesystem-2.4.37-43.module_el8.5.0+1022+b541f3b1.noarch.rpmrpm -ivh nginx-1.14.1-9.module_el8.0.0+184+e34fea82.x86_64.rpm nginx-all-modules-1.14.1-9.module_el8.0.0+184+e34fea82.noarch.rpm nginx-mod-http-image-filter-1.14.1-9.module_el8.0.0+184+e34fea82.x86_64.rpm nginx-mod-http-perl-1.14.1-9.module_el8.0.0+184+e34fea82.x86_64.rpm nginx-mod-http-xslt-filter-1.14.1-9.module_el8.0.0+184+e34fea82.x86_64.rpm nginx-mod-mail-1.14.1-9.module_el8.0.0+184+e34fea82.x86_64.rpm nginx-mod-stream-1.14.1-9.module_el8.0.0+184+e34fea82.x86_64.rpmrpm -ivh zabbix-nginx-conf-7.0.0-release1.el8.noarch.rpm

  • 安装zabbix-sql-scripts

cd /usr/local/zabbix7/zabbix-sql-scriptsrpm -Uvh *.rpm

  • 安装zabbix-selinux-policy

cd /usr/local/zabbix7/zabbix-selinux-policyrpm -Uvh *.rpm

  • 安装升级zabbix-php

cd /usr/local/zabbix7/zabbix-php rpm -Uvh *.rpm

  • 安装zabbix-fonts

cd /usr/local/zabbix7/zabbix-fontsrpm -ivh *.rpm

  • 安装zabbix-stress

cd /usr/local/zabbix7/zabbix-stress rpm -ivh *.rpm

  • 安装zabbix-agent

cd /usr/local/zabbix7/zabbix-agentrpm -Uvh *.rpm

  • 数据初始化

systemctl start mariadb.service systemctl enable mariadb.service systemctl status mariadb.servicemysql_secure_installation

  • zabbix数据库密码:hXHDKsp2CzhzMrKb


  • 登入数据库(root用户登陆,root密码在宝塔面板上查看)


mysql -uroot -pPASSWORD

  • 要删除之前创建的zabbix数据库
  • 创建一个名为zabbix的数据库,并设置字符集为utf8mb4,排序规则为utf8mb4_bin

create database zabbix character set utf8mb4 collate utf8mb4_bin;

  • 创建一个名为zabbix的数据库用户,并设置密码为’password’

create user zabbix@localhost identified by 'hXHDKsp2CzhzMrKb';

  • 授予zabbix用户对zabbix数据库的所有权限

grant all privileges on zabbix.* to zabbix@localhost;

  • 允许没有超级权限的用户创建或修改带有二进制日志功能的存储函数

set global log_bin_trust_function_creators = 1;

  • 退出

quit;

  • 查询sql文件位置

find /usr/ -name "server.sql.gz"

  • 导入数据库信息,server.sql.gz实际路径,输入数据库zabbix用户的密码 password

zcat /usr/share/zabbix-sql-scripts/mysql/server.sql.gz | mysql --default-character-set=utf8mb4 -uzabbix -p zabbix

  • 修改Zabbix server配置文件,修改数据库密码其中password为你的真实数据库zabbix用户的密码

sudo sed -i '/^# DBPassword=/a DBPassword=password' /etc/zabbix/zabbix_server.conf

  • 修改Nginx配置文件(这个是什么意思)

sudo sed -i '/^server {/a listen 80;' /etc/nginx/conf.d/zabbix.confsudo sed -i '/^listen 80;/a server_name 192.168.121.250;' /etc/nginx/conf.d/zabbix.conf

  • 修复图形数据标识乱码问题

cp -f /usr/share/fonts/wqy-microhei/wqy-microhei.ttc /usr/share/fonts/dejavu/DejaVuSans.ttf

  • 重启服务,开启自启,查看状态

systemctl enable zabbix-server zabbix-agent nginx php-fpm mariadb.servicesystemctl restart zabbix-server zabbix-agent nginx php-fpm mariadb.servicesystemctl status zabbix-server zabbix-agent nginx php-fpm mariadb.service

  • 访问zabbixweb

业务限制

  • 🙅🏻‍♀️不能使用docker
  • 🙅🏻‍♀️不能使用服务器打包编译,性能很弱,要使用二进制包

服务器环境信息

  • 服务器配置
  • 2C4G



  • 操作系统版本
  • CentOS Stream release 8



  • Mysql 版本
  • mysql Ver 8.0.24 for Linux on x86_64 (Source distribution)



  • PHP 版本
  • yum源备份

# yum源配置都在这个目录下 repo是个文本文件,可以使用cat查看配置内容cd /etc/yum.repos.d/# 文件备份命令,就是文件重命名sudo mv /etc/yum.repos.d/CentOS-Stream-Extras-common.repo /etc/yum.repos.d/CentOS-Stream-Extras-common.repo.backup

  • CentOS-Base.repo切换到阿里源

# CentOS-Base.repo## The mirror system uses the connecting IP address of the client and the# update status of each mirror to pick mirrors that are updated to and# geographically close to the client. You should use this for CentOS updates# unless you are manually picking other mirrors.## If the mirrorlist= does not work for you, as a fall back you can try the # remarked out baseurl= line instead.## [base]name=CentOS-8.5.2111 - Base - mirrors.aliyun.combaseurl=http://mirrors.aliyun.com/centos-vault/8.5.2111/BaseOS/$basearch/os/ http://mirrors.aliyuncs.com/centos-vault/8.5.2111/BaseOS/$basearch/os/ http://mirrors.cloud.aliyuncs.com/centos-vault/8.5.2111/BaseOS/$basearch/os/gpgcheck=0gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-Official #additional packages that may be useful[extras]name=CentOS-8.5.2111 - Extras - mirrors.aliyun.combaseurl=http://mirrors.aliyun.com/centos-vault/8.5.2111/extras/$basearch/os/ http://mirrors.aliyuncs.com/centos-vault/8.5.2111/extras/$basearch/os/ http://mirrors.cloud.aliyuncs.com/centos-vault/8.5.2111/extras/$basearch/os/gpgcheck=0gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-Official #additional packages that extend functionality of existing packages[centosplus]name=CentOS-8.5.2111 - Plus - mirrors.aliyun.combaseurl=http://mirrors.aliyun.com/centos-vault/8.5.2111/centosplus/$basearch/os/ http://mirrors.aliyuncs.com/centos-vault/8.5.2111/centosplus/$basearch/os/ http://mirrors.cloud.aliyuncs.com/centos-vault/8.5.2111/centosplus/$basearch/os/gpgcheck=0enabled=0gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-Official [PowerTools]name=CentOS-8.5.2111 - PowerTools - mirrors.aliyun.combaseurl=http://mirrors.aliyun.com/centos-vault/8.5.2111/PowerTools/$basearch/os/ http://mirrors.aliyuncs.com/centos-vault/8.5.2111/PowerTools/$basearch/os/ http://mirrors.cloud.aliyuncs.com/centos-vault/8.5.2111/PowerTools/$basearch/os/gpgcheck=0enabled=0gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-Official

[AppStream]name=CentOS-8.5.2111 - AppStream - mirrors.aliyun.combaseurl=http://mirrors.aliyun.com/centos-vault/8.5.2111/AppStream/$basearch/os/ http://mirrors.aliyuncs.com/centos-vault/8.5.2111/AppStream/$basearch/os/ http://mirrors.cloud.aliyuncs.com/centos-vault/8.5.2111/AppStream/$basearch/os/gpgcheck=0gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-Official

  • CentOS-Stream-Extras-common.repo切换到阿里源

# CentOS-Stream-Extras-common.repo## The mirrorlist system uses the connecting IP address of the client and the# update status of each mirror to pick current mirrors that are geographically# close to the client. You should use this for CentOS updates unless you are# manually picking other mirrors.## If the mirrorlist does not work for you, you can try the commented out# baseurl line instead.

[extras-common]name=CentOS Stream $releasever - Extras common packagesbaseurl=https://mirrors.aliyun.com/centos-vault/8.5.2111/extras/$basearch/os/enabled=1gpgcheck=0gpgkey=https://mirrors.aliyun.com/centos-stream/8-stream/Extras/x86_64/os/RPM-GPG-KEY-CentOS-Official

zabbix 官方rpm

rpm -Uvh https://repo.zabbix.com/zabbix/7.0/centos/8/x86_64/zabbix-release-latest-7.0.el8.noarch.rpmdnf clean all# php版本8.2dnf module switch-to php:8.2

相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
2月前
|
运维 JavaScript 应用服务中间件
os-copilot安装与多项功能测评,帮助开发人员PHP环境排查问题
本文介绍了OS Copilot在ECS上 Alibaba Cloud Linux的安装与使用,并对其多项参数进行了功能测评。OS Copilot是为操作系统提供智能化辅助的工具,支持自动化任务、智能推荐、故障排查等功能。安装时需检查是否已安装(`rpm -q os-copilot`),若未安装则用`yum install os-copilot`命令安装,并配置AccessKey信息连接阿里云服务。通过测试不同参数命令,如`-t`参数,展示了其自动化执行和智能生成回答的能力,显著提升运维效率。
os-copilot安装与多项功能测评,帮助开发人员PHP环境排查问题
|
1月前
|
监控 Linux
yum install -y net-snmp-devel 安装不成功 zabbix项目安装,Errors during downloading metadata for repository ‘extras-common’:问题解决方案-优雅草卓伊凡
yum install -y net-snmp-devel 安装不成功 zabbix项目安装,Errors during downloading metadata for repository ‘extras-common’:问题解决方案-优雅草卓伊凡
63 13
yum install -y net-snmp-devel 安装不成功 zabbix项目安装,Errors during downloading metadata for repository ‘extras-common’:问题解决方案-优雅草卓伊凡
|
2月前
|
安全 Linux 网络安全
利用Python脚本自动备份网络设备配置
通过本文的介绍,我们了解了如何利用Python脚本自动备份网络设备配置。该脚本使用 `paramiko`库通过SSH连接到设备,获取并保存配置文件。通过定时任务调度,可以实现定期自动备份,确保网络设备配置的安全和可用。希望这些内容能够帮助你在实际工作中实现网络设备的自动化备份。
77 14
|
1月前
|
监控 关系型数据库 MySQL
【01】客户端服务端C语言-go语言-web端PHP语言整合内容发布-优雅草网络设备监控系统-硬件设备实时监控系统运营版发布-本产品基于企业级开源项目Zabbix深度二开-分步骤实现预计10篇合集-自营版
【01】客户端服务端C语言-go语言-web端PHP语言整合内容发布-优雅草网络设备监控系统-硬件设备实时监控系统运营版发布-本产品基于企业级开源项目Zabbix深度二开-分步骤实现预计10篇合集-自营版
34 0
|
JavaScript 前端开发 API
【Web API系列教程】3.6 — 实战:处理数据(创建JavaScript客户端)
在本节,你将使用HTML、JavaScript和Knockout.js库为应用程序创建客户端。我们将按如下步骤建立客户端应用: 1, 展示books列表 2, 展示book详细信息 3, 添加一本新书 Knockout.js库使用了模型-视图-视图模型(MVVM)模式: 1, 模型是在业务域(在本例中是books和authors)中数据在服务器端的表现形式。
1071 0
|
4天前
|
关系型数据库 MySQL 数据库
基于Flink CDC 开发,支持Web-UI的实时KingBase 连接器,三大模式无缝切换,效率翻倍!
TIS 是一款基于Web-UI的开源大数据集成工具,通过与人大金仓Kingbase的深度整合,提供高效、灵活的实时数据集成方案。它支持增量数据监听和实时写入,兼容MySQL、PostgreSQL和Oracle模式,无需编写复杂脚本,操作简单直观,特别适合非专业开发人员使用。TIS率先实现了Kingbase CDC连接器的整合,成为业界首个开箱即用的Kingbase CDC数据同步解决方案,助力企业数字化转型。
42 5
基于Flink CDC 开发,支持Web-UI的实时KingBase 连接器,三大模式无缝切换,效率翻倍!
|
12天前
|
机器学习/深度学习 开发框架 API
Python 高级编程与实战:深入理解 Web 开发与 API 设计
在前几篇文章中,我们探讨了 Python 的基础语法、面向对象编程、函数式编程、元编程、性能优化、调试技巧以及数据科学和机器学习。本文将深入探讨 Python 在 Web 开发和 API 设计中的应用,并通过实战项目帮助你掌握这些技术。
|
5月前
|
XML JSON API
ServiceStack:不仅仅是一个高性能Web API和微服务框架,更是一站式解决方案——深入解析其多协议支持及简便开发流程,带您体验前所未有的.NET开发效率革命
【10月更文挑战第9天】ServiceStack 是一个高性能的 Web API 和微服务框架,支持 JSON、XML、CSV 等多种数据格式。它简化了 .NET 应用的开发流程,提供了直观的 RESTful 服务构建方式。ServiceStack 支持高并发请求和复杂业务逻辑,安装简单,通过 NuGet 包管理器即可快速集成。示例代码展示了如何创建一个返回当前日期的简单服务,包括定义请求和响应 DTO、实现服务逻辑、配置路由和宿主。ServiceStack 还支持 WebSocket、SignalR 等实时通信协议,具备自动验证、自动过滤器等丰富功能,适合快速搭建高性能、可扩展的服务端应用。
313 3
|
4月前
|
存储 前端开发 JavaScript
如何在项目中高效地进行 Web 组件化开发
高效地进行 Web 组件化开发需要从多个方面入手,通过明确目标、合理规划、规范开发、加强测试等一系列措施,实现组件的高效管理和利用,从而提高项目的整体开发效率和质量,为用户提供更好的体验。
127 63
|
4月前
|
开发框架 搜索推荐 数据可视化
Django框架适合开发哪种类型的Web应用程序?
Django 框架凭借其强大的功能、稳定性和可扩展性,几乎可以适应各种类型的 Web 应用程序开发需求。无论是简单的网站还是复杂的企业级系统,Django 都能提供可靠的支持,帮助开发者快速构建高质量的应用。同时,其活跃的社区和丰富的资源也为开发者在项目实施过程中提供了有力的保障。
184 62

热门文章

最新文章