掌握 Materialize CSS:创建响应式网页设计
大苹果

掌握 Materialize CSS:创建响应式网页设计

标题:掌握MaterializeCSS:创建响应式网页设计MaterializeCSS是一个流行的前端框架,用于创建响应式网页设计。它基于Google的MaterialDesign规范,提供了丰富的样式和组件,让开发者可以轻松构建现代化、具有吸引力的用户界面。在本文中,我们将介绍如何使用MaterializeCSS创建一个简单而漂亮的响应式网页。步骤1:准备工作首先,我们需要在项目中引入MaterializeCSS。你可以通过CDN或者下载并引入本地文件的方式来获取。下面是使用CDN的示例:<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><metaname="viewport"content="width=device-width,initial-scale=1.0"><title>MaterializeCSSDemo</title><!--MaterializeCSS--><linkrel="stylesheet"href="https://cdnjs.cloudflare.com/ajax/libs/materialize/1.0.0/css/materialize.min.css"></head><body><!--内容将在这里--><!--MaterializeJavaScript--><scriptsrc="https://cdnjs.cloudflare.com/ajax/libs/materialize/1.0.0/js/materialize.min.js"></script></body></html>步骤2:创建布局MaterializeCSS提供了一个灵活的网格系统,使得网页布局变得非常容易。以下是一个简单的布局示例:<divclass="container"><divclass="row"><divclass="cols12m6"><!--左侧内容--></div><divclass="cols12m6"><!--右侧内容--></div></div></div>在这个示例中,我们创建了一个包含两列的网格布局,分别占据了屏幕的一半空间。步骤3:添加组件MaterializeCSS提供了丰富的组件,包括按钮、卡片、导航栏等等。我们可以利用这些组件来丰富我们的网页。下面是一个添加按钮和卡片的示例:<divclass="container"><divclass="row"><divclass="cols12"><aclass="waves-effectwaves-lightbtn">按钮</a></div></div><divclass="row"><divclass="cols12m6"><divclass="card"><divclass="card-content"><spanclass="card-title">卡片标题</span><p>这是一个卡片的内容。</p></div></div></div><divclass="cols12m6"><divclass="card"><divclass="card-content"><spanclass="card-title">另一个卡片标题</span><p>这是另一个卡片的内容。</p></div></div></div></div></div>步骤4:响应式设计MaterializeCSS默认支持响应式设计,可以在不同设备上良好地显示。你可以通过添加不同的CSS类来控制元素在不同屏幕尺寸下的表现。例如,s12类表示在所有屏幕尺寸下占据12个栅格,而m6类表示在中型屏幕及以上尺寸下占据6个栅格。结论通过本文的介绍,我们学习了如何使用MaterializeCSS创建响应式网页。MaterializeCSS提供了丰富的样式和组件,使得网页设计变得简单而富有吸引力。希望这篇文章能够帮助你更好地掌握MaterializeCSS,并将其应用到你的项目中。

Materializecss框架 82 2月前
Mysql8源码安装
大苹果

Mysql8源码安装

环境操作系统centosmysql8.3cmake版本大于3.5gcc版本大于7.1准备工作更新系统yumupdate升级cmake安装OpenSSL或者-DCMAKE_USE_OPENSSL=OFFyuminstallopensslopenssl-devel-y升级文档exportCMAKE_ROOT=/usr/local/bin/cmake升级gcc#下载gccwgethttp://ftp.gnu.org/gnu/gcc/gcc-11.2.0/gcc-11.2.0.tar.gzyum-yinstallgmp-develyum-yinstallmpfr-develyum-yinstalllibmpc-develtar-zxvfgcc-11.2.0.tar.gzcdgcc-11.2.0#下载四个依赖包./contrib/download_prerequisites#编译mkdirbuildcdbuild/../configure-enable-checking=release-enable-languages=c,c++-disable-multilibmake-j16makeinstall#卸载旧版本yum-yremovegccg++#配置新版本全局可用ln-s/usr/local/bin/gcc/usr/bin/gccln-s/usr/local/bin/g++/usr/bin/g++ln-s/usr/local/bin/c++/usr/bin/c++#更新动态库#查看当前的动态库strings/usr/lib64/libstdc++.so.6|grepCXXABI#更新rm-f/usr/lib64/libstdc++.so.6ln-s/usr/local/lib64/libstdc++.so.6.0.29/usr/lib64/libstdc++.so.6#查看更新后的动态库strings/usr/lib64/libstdc++.so.6|grepCXXABI开始安装yuminstall-yncurses-develtarzxvfmysql-boost-8.0.36.tar.gzcdmysql-8.0.36/cdbuild/cmake\-DCMAKE_INSTALL_PREFIX=/usr/local/mysql\-DMYSQL_DATADIR=/usr/local/mysql/data\-DSYSCONFDIR=/etc\-DWITH_MYISAM_STORAGE_ENGINE=1\-DWITH_INNOBASE_STORAGE_ENGINE=1\-DWITH_MEMORY_STORAGE_ENGINE=1\-DWITH_READLINE=1\-DMYSQL_UNIX_ADDR=/var/lib/mysql/mysql.sock\-DMYSQL_TCP_PORT=3306\-DENABLED_LOCAL_INFILE=1\-DWITH_PARTITION_STORAGE_ENGINE=1\-DEXTRA_CHARSETS=all\-DDEFAULT_CHARSET=utf8\-DDEFAULT_COLLATION=utf8_general_cimake&&makeinstallgroupaddmysqluseradd-gmysqlmysqlchown-Rmysql:mysql/usr/local/mysqlcd/usr/local/mysqlmysqld--initialize--user=mysqlcpsupport-files/mysql.server/etc/init.d/mysqlchkconfigmysqlonservicemysqlstartln-s/usr/local/mysql/bin/mysql/usr/bin/

服务器的那些事儿 121 2月前
MySQL 源配置选项
大苹果

MySQL 源配置选项

MySQL源配置选项CMake程序提供了对如何配置MySQL源代码分发的大量控制。通常,您可以使用CMake命令行上的选项来执行此操作。有关CMake支持的选项的信息,请在顶级源目录中运行以下命令之一:$>cmake.-LH$>ccmake.您还可以使用某些环境变量影响CMake。请参见第6.9节“环境变量”。对于布尔选项,可以将该值指定为1或ON来启用该选项,或者指定为0或OFF来禁用该选项。许多选项配置编译时默认值,可以在服务器启动时覆盖这些默认值。例如,CMAKE_INSTALL_PREFIX配置默认安装基目录位置、TCP/IP端口号和Unix套接字文件的、和MYSQL_TCP_PORT选项可以在服务器启动时使用mysqld的、和选项进行更改。在适用的情况下,配置选项描述指示相应的mysqld启动选项。MYSQL_UNIX_ADDR--basedir--port--socket以下部分提供有关CMake选项的更多信息。CMake选项参考常规选项安装布局选项存储引擎选项功能选项编译器标志用于编译NDBCluster的CMake选项CMake选项参考下表显示了可用的CMake选项。其中Default,PREFIX代表CMAKE_INSTALL_PREFIX选项的值,指定安装基目录。该值用作多个安装子目录的父位置。表2.13MySQL源配置选项参考(CMake)格式描述默认--------------------------------------------------------------------------------------------------------------------------------------------------------------------------ADD_GDB_INDEX是否启用二进制文件中.gdb_index部分的生成---BUILD_CONFIG使用与官方版本相同的构建选项BUNDLE_RUNTIME_LIBRARIES将运行时库与适用于Windows的服务器MSI和Zip包捆绑在一起OFFCMAKE_BUILD_TYPE要生产的构建类型RelWithDebInfoCMAKE_CXX_FLAGSC++编译器的标志CMAKE_C_FLAGSC编译器的标志CMAKE_INSTALL_PREFIX安装基目录/usr/local/mysqlCOMPILATION_COMMENT编译环境评论COMPILATION_COMMENT_SERVER关于mysqld使用的编译环境的评论COMPRESS_DEBUG_SECTIONS压缩二进制可执行文件的调试部分OFFCPACK_MONOLITHIC_INSTALL包构建是否生成单个文件OFFDEFAULT_CHARSET默认服务器字符集utf8mb4DEFAULT_COLLATION默认服务器排序规则utf8mb4_0900_ai_ciDISABLE_PSI_COND排除性能架构条件检测OFFDISABLE_PSI_DATA_LOCK排除性能模式数据锁检测OFFDISABLE_PSI_ERROR排除性能架构服务器错误检测OFFDISABLE_PSI_FILE排除性能架构文件检测OFFDISABLE_PSI_IDLE排除性能架构空闲检测OFFDISABLE_PSI_MEMORY排除性能架构内存检测OFFDISABLE_PSI_METADATA排除性能架构元数据检测OFFDISABLE_PSI_MUTEX排除性能架构互斥检测OFFDISABLE_PSI_PS排除性能模式准备好的语句OFFDISABLE_PSI_RWLOCK排除性能架构rwlock检测OFFDISABLE_PSI_SOCKET排除性能架构套接字检测OFFDISABLE_PSI_SP排除性能模式存储程序检测OFFDISABLE_PSI_STAGE排除PerformanceSchema阶段仪表OFFDISABLE_PSI_STATEMENT排除性能模式语句检测OFFDISABLE_PSI_STATEMENT_DIGEST排除性能模式语句_摘要检测OFFDISABLE_PSI_TABLE排除性能架构表检测OFFDISABLE_PSI_THREAD排除性能模式线程检测OFFDISABLE_PSI_TRANSACTION排除性能模式事务检测OFFENABLED_LOCAL_INFILE是否为LOADDATA启用LOCALOFFENABLED_PROFILING是否启用查询分析代码ONENABLE_EXPERIMENTAL_SYSVARS是否启用实验性InnoDB系统变量OFFENABLE_GCOV是否包含gcov支持ENABLE_GPROF启用gprof(仅限优化的Linux版本)OFFFORCE_COLORED_OUTPUT是否对编译器输出进行着色OFFFORCE_INSOURCE_BUILD是否强制进行源内构建OFFFORCE_UNSUPPORTED_COMPILER是否允许不支持的编译器OFFFPROFILE_GENERATE是否生成配置文件引导优化数据OFFFPROFILE_USE是否使用配置文件引导优化数据OFFHAVE_PSI_MEMORY_INTERFACE为过度对齐类型的动态存储中使用的内存分配函数启用性能模式内存跟踪模块OFFIGNORE_AIO_CHECK使用-DBUILD_CONFIG=mysql_release,忽略libaio检查OFFINSTALL_BINDIR用户可执行文件目录PREFIX/binINSTALL_DOCDIR文档目录PREFIX/docsINSTALL_DOCREADMEDIR自述文件目录PREFIXINSTALL_INCLUDEDIR头文件目录PREFIX/includeINSTALL_INFODIR信息文件目录PREFIX/docsINSTALL_LAYOUT选择预定义的安装布局STANDALONEINSTALL_LIBDIR库文件目录PREFIX/libINSTALL_MANDIR手册页目录PREFIX/manINSTALL_MYSQLKEYRINGDIRkeyring_file插件数据文件的目录platformspecificINSTALL_MYSQLSHAREDIR共享数据目录PREFIX/shareINSTALL_MYSQLTESTDIRmysql-测试目录PREFIX/mysql-testINSTALL_PKGCONFIGDIRmysqlclient.pcpkg-config文件的目录INSTALL_LIBDIR/pkgconfigINSTALL_PLUGINDIR插件目录PREFIX/lib/pluginINSTALL_PRIV_LIBDIR安装私有库目录INSTALL_SBINDIR服务器可执行目录PREFIX/binINSTALL_SECURE_FILE_PRIVDIRsecure_file_priv默认值platformspecificINSTALL_SHAREDIRaclocal/mysql.m4安装目录PREFIX/shareINSTALL_STATIC_LIBRARIES是否安装静态库ONINSTALL_SUPPORTFILESDIR额外支持文件目录PREFIX/support-filesLINK_RANDOMIZE是否随机化mysqld二进制文件中符号的顺序OFFLINK_RANDOMIZE_SEEDLINK_RANDOMIZE选项的种子值mysqlMAX_INDEXES每个表的最大索引数64MSVC_CPPCHECK启用MSVC代码分析。ONMUTEX_TYPEInnoDB互斥体类型eventMYSQLX_TCP_PORTX插件使用的TCP/IP端口号33060MYSQLX_UNIX_ADDRX插件使用的Unix套接字文件/tmp/mysqlx.sockMYSQL_DATADIR数据目录MYSQL_MAINTAINER_MODE是否启用MySQL维护者专用的开发环境OFFMYSQL_PROJECT_NAMEWindows/macOS项目名称MySQLMYSQL_TCP_PORTTCP/IP端口号3306MYSQL_UNIX_ADDRUnix套接字文件/tmp/mysql.sockNDB_UTILS_LINK_DYNAMIC导致NDB工具动态链接到ndbclientODBC_INCLUDESODBC包含目录ODBC_LIB_DIRODBC库目录OPTIMIZER_TRACE是否支持优化器跟踪OPTIMIZE_SANITIZER_BUILDS是否优化消毒剂构建ONREPRODUCIBLE_BUILD要格外小心地创建独立于构建位置和时间的构建结果SHOW_SUPPRESSED_COMPILER_WARNING是否显示抑制的编译器警告并且不会因-Werror而失败。OFFSYSCONFDIR选项文件目录SYSTEMD_PID_DIRsystemd下PID文件的目录/var/run/mysqldSYSTEMD_SERVICE_NAMEsystemd下MySQL服务的名称mysqldTMPDIRtmpdir默认值WIN_DEBUG_NO_INLINE是否禁用函数内联OFFWITHOUT_SERVER不搭建服务器OFFWITHOUT_xxx_STORAGE_ENGINE从构建中排除存储引擎xxxWITH_ANT用于构建GCSJava包装器的Ant路径WITH_ASAN启用AddressSanitizerOFFWITH_ASAN_SCOPE启用AddressSanitizer-fsanitize-address-use-after-scopeClang标志OFFWITH_AUTHENTICATION_CLIENT_PLUGINS如果构建了任何相应的服务器身份验证插件,则自动启用WITH_AUTHENTICATION_LDAPLDAP认证插件无法构建时是否报错OFFWITH_AUTHENTICATION_PAM构建PAM身份验证插件OFFWITH_AWS_SDKAmazonWebServices软件开发工具包的位置WITH_BUILD_ID在Linux系统上,生成唯一的构建IDONWITH_CLASSPATH构建适用于Java的MySQLClusterConnector时使用的类路径。默认为空字符串。WITH_CLIENT_PROTOCOL_TRACING构建客户端协议追踪框架ONWITH_CURLcurl库的位置WITH_DEBUG是否包含调试支持OFFWITH_DEFAULT_COMPILER_OPTIONS是否使用默认编译器选项ONWITH_DEVELOPER_ENTITLEMENTS是否向macOS上的所有可执行文件添加“get-task-allow”权限,以便在服务器意外停止时生成核心转储OFFWITH_EDITLINE使用哪个libedit/editline库bundledWITH_ERROR_INSERT在NDB存储引擎中启用错误注入。不应用于构建用于生产的二进制文件。OFFWITH_FIDOFIDO库支持的类型bundledWITH_ICUICU支持类型bundledWITH_INNODB_EXTRA_DEBUG是否包含对InnoDB的额外调试支持。OFFWITH_JEMALLOC是否与-ljemalloc链接OFFWITH_KEYRING_TEST构建密钥环测试程序OFFWITH_LD是否使用LLVMlld或mold链接器WITH_LIBEVENT使用哪个libevent库bundledWITH_LIBWRAP是否包含libwrap(TCP包装器)支持OFFWITH_LOCK_ORDER是否启用LOCK_ORDER工具OFFWITH_LSAN是否运行LeakSanitizer,不运行AddressSanitizerOFFWITH_LTO启用链接时间优化器OFFWITH_LZ4LZ4库支持的类型bundledWITH_MECAB编译MeCabWITH_MSAN启用MemorySanitizerOFFWITH_MSCRT_DEBUG启用VisualStudioCRT内存泄漏跟踪OFFWITH_MYSQLX是否禁用X协议ONWITH_NDB构建MySQLNDB集群OFFWITH_NDBAPI_EXAMPLES构建API示例程序OFFWITH_NDBCLUSTER构建NDB存储引擎OFFWITH_NDBCLUSTER_STORAGE_ENGINE供内部使用;可能无法在所有情况下按预期工作;用户应该使用WITH_NDBCLUSTER来代替ONWITH_NDBMTD构建多线程数据节点。ONWITH_NDB_DEBUG生成用于测试或故障排除的调试版本。OFFWITH_NDB_JAVA启用Java和ClusterJ支持的构建。默认启用。仅在MySQL集群中受支持。ONWITH_NDB_PORT使用此选项构建的管理服务器使用的默认端口。如果未使用此选项来构建它,则管理服务器的默认端口为1186。[none]WITH_NDB_TEST包括NDBAPI测试程序。OFFWITH_NDB_TLS_SEARCH_PATHNDB程序用于搜索TLS证书和密钥文件的默认路径。$HOME/ndb-tlsWITH_NUMA设置NUMA内存分配策略WITH_PACKAGE_FLAGS对于通常用于RPM/DEB包的标志,是否将它们添加到这些平台上的独立构建中WITH_PROTOBUF使用哪个ProtocolBuffers包bundledWITH_RAPID是否构建快速开发周期插件ONWITH_RAPIDJSONRapidJSON支持的类型bundledWITH_ROUTER是否构建MySQLRouterONWITH_SHOW_PARSE_TREE支持SHOWPARSE_TREE调试语句WITH_SSLSSL支持类型systemWITH_SYSTEMD启用systemd支持文件的安装OFFWITH_SYSTEMD_DEBUG启用额外的systemd调试信息OFFWITH_SYSTEM_LIBS设置未明确设置的库选项的系统值OFFWITH_TCMALLOC是否与-ltcmalloc链接OFFWITH_TEST_TRACE_PLUGIN构建测试协议跟踪插件OFFWITH_TSAN启用ThreadSanitizerOFFWITH_UBSAN启用未定义行为清理程序OFFWITH_UNIT_TESTS使用单元测试编译MySQLONWITH_UNIXODBC启用unixODBC支持OFFWITH_VALGRIND是否在Valgrind头文件中编译OFFWITH_WIN_JEMALLOC包含jemalloc.dll的目录的路径WITH_ZLIBzlib支持的类型bundledWITH_ZSTDzstd支持的类型bundledWITH_xxx_STORAGE_ENGINE将存储引擎xxx静态编译到服务器中常规选项-DBUILD_CONFIG=mysql_release此选项使用与Oracle用于生成官方MySQL版本的二进制发行版相同的构建选项来配置源发行版。-DWITH_BUILD_ID=<emclass="replaceable"><code>bool</code></em>在Linux系统上,生成一个唯一的构建ID,用作build_id系统变量的值并在启动时写入MySQL服务器日志。将此选项设置为OFF禁用此功能。该选项对Linux以外的平台没有影响。-DBUNDLE_RUNTIME_LIBRARIES=<emclass="replaceable"><code>bool</code></em>是否将运行时库与Windows的服务器MSI和Zip包捆绑在一起。-DCMAKE_BUILD_TYPE=<emclass="replaceable"><code>type</code></em>要生成的构建类型:RelWithDebInfo:启用优化并生成调试信息。这是默认的MySQL构建类型。Release:启用优化但省略调试信息以减少构建大小。Debug:禁用优化并生成调试信息。如果WITH_DEBUG启用该选项,也会使用此构建类型。即与-DWITH_DEBUG=1具有相同的效果-DCMAKE_BUILD_TYPE=Debug。不支持选项值None和。MinSizeRel-DCPACK_MONOLITHIC_INSTALL=<emclass="replaceable"><code>bool</code></em>该选项影响makepackage操作是生成多个安装包文件还是单个文件。如果禁用,该操作会生成多个安装包文件,如果您只想安装完整MySQL安装的子集,这可能很有用。如果启用,它会生成一个用于安装所有内容的文件。-DFORCE_INSOURCE_BUILD=<emclass="replaceable"><code>bool</code></em>定义是否强制进行源内构建。建议使用源外构建,因为它们允许来自同一源的多个构建,并且可以通过删除构建目录来快速执行清理。要强制进行源内构建,请使用-DFORCE_INSOURCE_BUILD=ON.-DFORCE_COLORED_OUTPUT=<emclass="replaceable"><code>bool</code></em>定义在命令行编译时是否启用gcc和clang的彩色编译器输出。默认为OFF.安装布局选项该CMAKE_INSTALL_PREFIX选项指示基本安装目录。名称形式指示组件位置的其他选项是相对于前缀进行解释的,它们的值是相对路径名。它们的值不应包含前缀。INSTALL_<emclass="replaceable"><code>xxx</code></em>-DCMAKE_INSTALL_PREFIX=<emclass="replaceable"><code>dir_name</code></em>安装基目录。可以在服务器启动时使用该选项设置该值--basedir。-DINSTALL_BINDIR=<emclass="replaceable"><code>dir_name</code></em>安装用户程序的位置。-DINSTALL_DOCDIR=<emclass="replaceable"><code>dir_name</code></em>在哪里安装文档。-DINSTALL_DOCREADMEDIR=<emclass="replaceable"><code>dir_name</code></em>安装文件的位置README。-DINSTALL_INCLUDEDIR=<emclass="replaceable"><code>dir_name</code></em>安装头文件的位置。-DINSTALL_INFODIR=<emclass="replaceable"><code>dir_name</code></em>安装信息文件的位置。-DINSTALL_LAYOUT=<emclass="replaceable"><code>name</code></em>选择预定义的安装布局:STANDALONE:与.tar.gz和.zip包使用的布局相同。这是默认设置。RPM:布局类似于RPM包。SVR4:Solaris软件包布局。DEB:DEB包布局(实验性)。您可以选择预定义的布局,但可以通过指定其他选项来修改各个组件的安装位置。例如:cmake.-DINSTALL_LAYOUT=SVR4-DMYSQL_DATADIR=/var/mysql/data该值决定、和系统变量INSTALL_LAYOUT的默认值。请参阅第7.1.8节“服务器系统变量”和第8.4.4.19节“密钥环系统变量”中对这些变量的描述。secure_file_privkeyring_encrypted_file_datakeyring_file_data-DINSTALL_LIBDIR=<emclass="replaceable"><code>dir_name</code></em>安装库文件的位置。-DINSTALL_MANDIR=<emclass="replaceable"><code>dir_name</code></em>安装手册页的位置。-DINSTALL_MYSQLKEYRINGDIR=<emclass="replaceable"><code>dir_path</code></em>用作keyring_file插件数据文件位置的默认目录。默认值是特定于平台的,并且取决于CMake选项的值;请参阅第7.1.8节“服务器系统变量”中系统变量的描述。INSTALL_LAYOUTkeyring_file_data-DINSTALL_MYSQLSHAREDIR=<emclass="replaceable"><code>dir_name</code></em>在哪里安装共享数据文件。-DINSTALL_MYSQLTESTDIR=<emclass="replaceable"><code>dir_name</code></em>安装目录在哪里mysql-test。要禁止安装此目录,请显式将该选项设置为空值(-DINSTALL_MYSQLTESTDIR=)。-DINSTALL_PKGCONFIGDIR=<emclass="replaceable"><code>dir_name</code></em>安装pkg-configmysqlclient.pc使用的文件的目录。默认值为,除非以结尾,在这种情况下首先将其删除。INSTALL_LIBDIR/pkgconfigINSTALL_LIBDIR/mysql-DINSTALL_PLUGINDIR=<emclass="replaceable"><code>dir_name</code></em>插件目录的位置。可以在服务器启动时使用该选项设置该值--plugin_dir。-DINSTALL_PRIV_LIBDIR=<emclass="replaceable"><code>dir_name</code></em>动态库目录的位置。**默认位置。**对于RPM版本,这是/usr/lib64/mysql/private/,对于DEB是/usr/lib/mysql/private/,对于TAR是lib/private/。**原型缓冲区。**由于这是私有位置,因此加载程序(例如ld-linux.so在Linux上)在没有帮助的情况下可能找不到libprotobuf.so文件。为了引导加载程序,RPATH=$ORIGIN/../$INSTALL_PRIV_LIBDIR添加到mysqld和mysqlxtest。这适用于大多数情况,但当使用资源组功能时,mysqld是setsuid,并且加载程序会忽略任何RPATH包含$ORIGIN.为了克服这个问题,在mysqld的DEB和RPM版本中设置了目录的显式完整路径,因为目标目的地是已知的。对于tarball安装,需要使用patchelf等工具修补mysqld。-DINSTALL_SBINDIR=<emclass="replaceable"><code>dir_name</code></em>在哪里安装mysqld服务器。-DINSTALL_SECURE_FILE_PRIVDIR=<emclass="replaceable"><code>dir_name</code></em>系统变量的默认值secure_file_priv。默认值是特定于平台的,并且取决于CMake选项的值;请参阅第7.1.8节“服务器系统变量”中系统变量的描述。INSTALL_LAYOUTsecure_file_priv-DINSTALL_SHAREDIR=<emclass="replaceable"><code>dir_name</code></em>在哪里安装aclocal/mysql.m4。-DINSTALL_STATIC_LIBRARIES=<emclass="replaceable"><code>bool</code></em>是否安装静态库。默认为ON.如果设置为OFF,则不会安装这些库文件:libmysqlclient.a、libmysqlservices.a。-DINSTALL_SUPPORTFILESDIR=<emclass="replaceable"><code>dir_name</code></em>在哪里安装额外的支持文件。-DLINK_RANDOMIZE=<emclass="replaceable"><code>bool</code></em>是否随机化mysqld二进制文件中符号的顺序。默认为OFF.仅应出于调试目的启用此选项。-DLINK_RANDOMIZE_SEED=<emclass="replaceable"><code>val</code></em>期权的种子值LINK_RANDOMIZE。该值是一个字符串。默认值为mysql,任意选择。-DMYSQL_DATADIR=<emclass="replaceable"><code>dir_name</code></em>MySQL数据目录的位置。可以在服务器启动时使用该选项设置该值--datadir。-DODBC_INCLUDES=<emclass="replaceable"><code>dir_name</code></em>ODBC的位置包括目录,在配置Connector/ODBC时可以使用该目录。-DODBC_LIB_DIR=<emclass="replaceable"><code>dir_name</code></em>ODBC库目录的位置,在配置Connector/ODBC时可能会使用该目录。-DSYSCONFDIR=<emclass="replaceable"><code>dir_name</code></em>默认my.cnf选项文件目录。该位置无法在服务器启动时设置,但您可以使用选项通过给定选项文件启动服务器,其中是文件的完整路径名。--defaults-file=<emclass="replaceable"><code>file_name</code></em>file_name-DSYSTEMD_PID_DIR=<emclass="replaceable"><code>dir_name</code></em>MySQL由systemd管理时创建PID文件的目录名。默认为/var/run/mysqld;这可能会根据INSTALL_LAYOUT值隐式更改。WITH_SYSTEMD除非启用,否则该选项将被忽略。-DSYSTEMD_SERVICE_NAME=<emclass="replaceable"><code>name</code></em>当MySQL由systemd管理时要使用的MySQL服务的名称。默认为mysqld;这可能会根据INSTALL_LAYOUT值隐式更改。WITH_SYSTEMD除非启用,否则该选项将被忽略。-DTMPDIR=<emclass="replaceable"><code>dir_name</code></em>用于tmpdir系统变量的默认位置。如果未指定,则该值默认为P_tmpdirin<stdio.h>。存储引擎选项存储引擎是作为插件构建的。您可以将插件构建为静态模块(编译到服务器中)或动态模块(构建为动态库,必须使用INSTALLPLUGIN语句或选项将其安装到服务器中--plugin-load才能使用)。某些插件可能不支持静态或动态构建。InnoDB、MyISAM、MERGE、MEMORY和引擎CSV是强制性的(始终编译到服务器中)并且不需要显式安装。要将存储引擎静态编译到服务器中,请使用.一些允许的值为、、和。例子:-DWITH_<emclass="replaceable"><code>engine</code></em>_STORAGE_ENGINE=1engineARCHIVE``BLACKHOLE``EXAMPLE``FEDERATED-DWITH_ARCHIVE_STORAGE_ENGINE=1-DWITH_BLACKHOLE_STORAGE_ENGINE=1要构建支持NDBCluster的MySQL,请使用该WITH_NDB选项。笔记如果没有性能模式支持,则无法进行编译。如果希望在不使用特定类型的工具的情况下进行编译,可以使用以下CMake选项来完成:DISABLE_PSI_CONDDISABLE_PSI_DATA_LOCKDISABLE_PSI_ERRORDISABLE_PSI_FILEDISABLE_PSI_IDLEDISABLE_PSI_MEMORYDISABLE_PSI_METADATADISABLE_PSI_MUTEXDISABLE_PSI_PSDISABLE_PSI_RWLOCKDISABLE_PSI_SOCKETDISABLE_PSI_SPDISABLE_PSI_STAGEDISABLE_PSI_STATEMENTDISABLE_PSI_STATEMENT_DIGESTDISABLE_PSI_TABLEDISABLE_PSI_THREADDISABLE_PSI_TRANSACTION例如,要在不使用互斥量检测的情况下进行编译,请使用-DDISABLE_PSI_MUTEX=1.要从构建中排除存储引擎,请使用.例子:-DWITH_<emclass="replaceable"><code>engine</code></em>_STORAGE_ENGINE=0-DWITH_ARCHIVE_STORAGE_ENGINE=0-DWITH_EXAMPLE_STORAGE_ENGINE=0-DWITH_FEDERATED_STORAGE_ENGINE=0也可以从构建中排除存储引擎(但这是首选)。例子:-DWITHOUT_<emclass="replaceable"><code>engine</code></em>_STORAGE_ENGINE=1``-DWITH_<emclass="replaceable"><code>engine</code></em>_STORAGE_ENGINE=0-DWITHOUT_ARCHIVE_STORAGE_ENGINE=1-DWITHOUT_EXAMPLE_STORAGE_ENGINE=1-DWITHOUT_FEDERATED_STORAGE_ENGINE=1如果给定存储引擎既没有指定也没有指定,则该引擎将构建为共享模块,如果不能构建为共享模块则将其排除。-DWITH_<emclass="replaceable"><code>engine</code></em>_STORAGE_ENGINE``-DWITHOUT_<emclass="replaceable"><code>engine</code></em>_STORAGE_ENGINE功能选项-DADD_GDB_INDEX=<emclass="replaceable"><code>bool</code></em>此选项确定是否启用.gdb_index二进制文件中的节的生成,这使得将它们更快地加载到调试器中。默认情况下该选项处于禁用状态。使用lld链接器,并通过禁用它。如果使用lld或GNUgold以外的链接器,则无效。-DCOMPILATION_COMMENT=<emclass="replaceable"><code>string</code></em>关于编译环境的描述性注释。当mysqld使用时COMPILATION_COMMENT_SERVER,其他程序也使用COMPILATION_COMMENT.-DCOMPRESS_DEBUG_SECTIONS=<emclass="replaceable"><code>bool</code></em>是否压缩二进制可执行文件的调试部分(仅限Linux)。压缩可执行调试部分可以节省空间,但代价是在构建过程中需要额外的CPU时间。默认为OFF.如果未显式设置此选项但COMPRESS_DEBUG_SECTIONS设置了环境变量,则该选项将从该变量获取其值。-DCOMPILATION_COMMENT_SERVER=<emclass="replaceable"><code>string</code></em>关于mysqld使用的编译环境的描述性注释(例如,设置version_comment系统变量)。服务器以外的程序使用COMPILATION_COMMENT。-DDEFAULT_CHARSET=<emclass="replaceable"><code>charset_name</code></em>服务器字符集。默认情况下,MySQL使用该utf8mb4字符集。*charset_name*可以是以下之一binary:armscii8,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,。ascii``big5``cp1250``cp1251``cp1256``cp1257``cp850``cp852``cp866``cp932``dec8``eucjpms``euckr``gb2312``gbk``geostd8``greek``hebrew``hp8``keybcs2``koi8r``koi8u``latin1``latin2``latin5``latin7``macce``macroman``sjis``swe7``tis620``ucs2``ujis``utf8mb3``utf8mb4``utf16``utf16le``utf32可以在服务器启动时使用该选项设置该值--character-set-server。-DDEFAULT_COLLATION=<emclass="replaceable"><code>collation_name</code></em>服务器排序规则。默认情况下,MySQL使用utf8mb4_0900_ai_ci.使用该SHOWCOLLATION语句确定每个字符集可用的排序规则。可以在服务器启动时使用该选项设置该值--collation_server。-DDISABLE_PSI_COND=<emclass="replaceable"><code>bool</code></em>是否排除性能模式条件检测。默认为OFF(包含)。-DDISABLE_PSI_FILE=<emclass="replaceable"><code>bool</code></em>是否排除性能架构文件检测。默认为OFF(包含)。-DDISABLE_PSI_IDLE=<emclass="replaceable"><code>bool</code></em>是否排除性能模式空闲检测。默认为OFF(包含)。-DDISABLE_PSI_MEMORY=<emclass="replaceable"><code>bool</code></em>是否排除性能模式内存检测。默认为OFF(包含)。-DDISABLE_PSI_METADATA=<emclass="replaceable"><code>bool</code></em>是否排除性能模式元数据检测。默认为OFF(包含)。-DDISABLE_PSI_MUTEX=<emclass="replaceable"><code>bool</code></em>是否排除性能模式互斥检测。默认为OFF(包含)。-DDISABLE_PSI_RWLOCK=<emclass="replaceable"><code>bool</code></em>是否排除性能架构rwlock检测。默认为OFF(包含)。-DDISABLE_PSI_SOCKET=<emclass="replaceable"><code>bool</code></em>是否排除性能模式套接字检测。默认为OFF(包含)。-DDISABLE_PSI_SP=<emclass="replaceable"><code>bool</code></em>是否排除性能模式存储的程序检测。默认为OFF(包含)。-DDISABLE_PSI_STAGE=<emclass="replaceable"><code>bool</code></em>是否排除PerformanceSchema阶段检测。默认为OFF(包含)。-DDISABLE_PSI_STATEMENT=<emclass="replaceable"><code>bool</code></em>是否排除PerformanceSchema语句检测。默认为OFF(包含)。-DDISABLE_PSI_STATEMENT_DIGEST=<emclass="replaceable"><code>bool</code></em>是否排除性能模式语句摘要检测。默认为OFF(包含)。-DDISABLE_PSI_TABLE=<emclass="replaceable"><code>bool</code></em>是否排除性能模式表检测。默认为OFF(包含)。-DDISABLE_PSI_PS=<emclass="replaceable"><code>bool</code></em>排除性能模式准备好的语句实例检测。默认为OFF(包含)。-DDISABLE_PSI_THREAD=<emclass="replaceable"><code>bool</code></em>排除性能模式线程检测。默认为OFF(包含)。仅在没有任何检测的情况下构建时禁用线程,因为其他检测依赖于线程。-DDISABLE_PSI_TRANSACTION=<emclass="replaceable"><code>bool</code></em>排除性能模式事务工具。默认为OFF(包含)。-DDISABLE_PSI_DATA_LOCK=<emclass="replaceable"><code>bool</code></em>排除性能模式数据锁检测。默认为OFF(包含)。-DDISABLE_PSI_ERROR=<emclass="replaceable"><code>bool</code></em>排除性能模式服务器错误检测。默认为OFF(包含)。-DENABLE_EXPERIMENTAL_SYSVARS=<emclass="replaceable"><code>bool</code></em>是否启用实验InnoDB系统变量。实验系统变量适用于那些从事MySQL开发的人员,只能在开发或测试环境中使用,并且可能会在未来的MySQL版本中删除,恕不另行通知。有关实验系统变量的信息,请参阅/storage/innobase/handler/ha_innodb.ccMySQL源代码树。实验系统变量可以通过搜索“PLUGIN_VAR_EXPERIMENTAL”来识别。-DWITHOUT_SERVER=<emclass="replaceable"><code>bool</code></em>是否构建不带MySQLServer。默认值为“关闭”,这会构建服务器。这被认为是一个实验性的选择;最好与服务器一起构建。-DENABLE_GCOV=<emclass="replaceable"><code>bool</code></em>是否包含gcov支持(仅限Linux)。-DENABLE_GPROF=<emclass="replaceable"><code>bool</code></em>是否启用gprof(仅限优化的Linux版本)。-DENABLED_LOCAL_INFILE=<emclass="replaceable"><code>bool</code></em>LOCAL该选项控制MySQL客户端库的编译默认功能。因此,未做出明确安排的客户端会LOCAL根据ENABLED_LOCAL_INFILEMySQL构建时指定的设置禁用或启用功能。默认情况下,MySQL二进制发行版中的客户端库在编译时ENABLED_LOCAL_INFILE禁用。如果您从源代码编译MySQL,请ENABLED_LOCAL_INFILE根据未做出明确安排的客户端是否应禁用或启用LOCAL功能分别将其配置为禁用或启用。ENABLED_LOCAL_INFILE控制客户端LOCAL功能的默认值。对于服务器来说,local_infile系统变量控制服务器端的LOCAL能力。要显式地使服务器拒绝或允许LOADDATALOCAL语句(无论客户端程序和库在构建时或运行时如何配置),请分别以禁用或启用的方式启动mysqld--local-infile。local_infile也可以在运行时设置。请参见第8.1.6节“LOADDATALOCAL的安全注意事项”。-DENABLED_PROFILING=<emclass="replaceable"><code>bool</code></em>是否启用查询分析代码(对于SHOWPROFILE和SHOWPROFILES语句)。-DFORCE_UNSUPPORTED_COMPILER=<emclass="replaceable"><code>bool</code></em>默认情况下,CMake检查支持的编译器的最低版本;要禁用此检查,请使用-DFORCE_UNSUPPORTED_COMPILER=ON.-DSHOW_SUPPRESSED_COMPILER_WARNINGS=<emclass="replaceable"><code>bool</code></em>显示抑制的编译器警告,并且这样做不会因-Werror.默认为OFF.-DFPROFILE_GENERATE=<emclass="replaceable"><code>bool</code></em>是否生成配置文件引导优化(PGO)数据。此选项可用于通过GCC试验PGO。cmake/fprofile.cmake有关使用FPROFILE_GENERATE和的信息,请参阅MySQL源代码发行版FPROFILE_USE。这些选项已使用GCC8和9进行了测试。-DFPROFILE_USE=<emclass="replaceable"><code>bool</code></em>是否使用配置文件引导优化(PGO)数据。此选项可用于通过GCC试验PGO。cmake/fprofile.cmake有关使用FPROFILE_GENERATE和的信息,请参阅MySQL源代码发行版中的文件FPROFILE_USE。这些选项已使用GCC8和9进行了测试。启用FPROFILE_USE还可以启用WITH_LTO.-DHAVE_PSI_MEMORY_INTERFACE=<emclass="replaceable"><code>bool</code></em>是否为过度对齐类型的动态存储中使用的内存分配函数(库函数)启用性能模式内存跟踪模块。ut::aligned_<emclass="replaceable"><code>name</code></em>-DIGNORE_AIO_CHECK=<emclass="replaceable"><code>bool</code></em>如果-DBUILD_CONFIG=mysql_release在Linux上给出该选项,则libaio默认情况下必须链接该库。如果您没有libaio或不想安装它,您可以通过指定来取消对它的检查-DIGNORE_AIO_CHECK=1。-DMAX_INDEXES=<emclass="replaceable"><code>num</code></em>每个表的最大索引数。默认值为64。最大值为255。小于64的值将被忽略,并使用默认值64。-DMYSQL_MAINTAINER_MODE=<emclass="replaceable"><code>bool</code></em>是否启用MySQL维护者特定的开发环境。如果启用,此选项会导致编译器警告变为错误。-DWITH_DEVELOPER_ENTITLEMENTS=<emclass="replaceable"><code>bool</code></em>是否get-task-allow向所有可执行文件添加在服务器意外停止时生成核心转储的权利。在macOS11+上,核心转储仅限于具有com.apple.security.get-task-allow此CMake选项启用的权利的进程。该权利允许其他进程附加和读取/修改进程内存,并允许--core-file按预期运行。-DMUTEX_TYPE=<emclass="replaceable"><code>type</code></em>所使用的互斥锁类型InnoDB。选项包括:event:使用事件互斥体。这是默认值和原始InnoDB互斥体实现。sys:在UNIX系统上使用POSIX互斥体。使用CRITICAL_SECTIONWindows上的对象(如果可用)。futex:使用Linuxfutexes而不是条件变量来调度等待线程。-DMYSQLX_TCP_PORT=<emclass="replaceable"><code>port_num</code></em>XPlugin侦听TCP/IP连接的端口号。默认值为33060。该值可以在服务器启动时使用系统变量设置mysqlx_port。-DMYSQLX_UNIX_ADDR=<emclass="replaceable"><code>file_name</code></em>服务器侦听X插件套接字连接的Unix套接字文件路径。这必须是绝对路径名。默认为/tmp/mysqlx.sock.该值可以在服务器启动时使用系统变量设置mysqlx_port。-DMYSQL_PROJECT_NAME=<emclass="replaceable"><code>name</code></em>对于Windows或macOS,要合并到项目文件名中的项目名称。-DMYSQL_TCP_PORT=<emclass="replaceable"><code>port_num</code></em>服务器侦听TCP/IP连接的端口号。默认值为3306。可以在服务器启动时使用该选项设置该值--port。-DMYSQL_UNIX_ADDR=<emclass="replaceable"><code>file_name</code></em>服务器侦听套接字连接的Unix套接字文件路径。这必须是绝对路径名。默认为/tmp/mysql.sock.可以在服务器启动时使用该选项设置该值--socket。-DOPTIMIZER_TRACE=<emclass="replaceable"><code>bool</code></em>是否支持优化器跟踪。请参阅MySQL内部原理:跟踪优化器。-DREPRODUCIBLE_BUILD=<emclass="replaceable"><code>bool</code></em>对于Linux系统上的构建,此选项控制是否格外小心地创建独立于构建位置和时间的构建结果。此选项默认用于ON构建RelWithDebInfo。-DWITH_LD=<emclass="replaceable"><code>string</code></em>CMake默认使用标准链接器。可以选择传入lld或mold来指定替代链接器。模具必须是版本2或更新版本。此选项可用于除EnterpriseLinux之外的基于Linux的系统,EnterpriseLinux始终使用ld链接器。笔记以前,该选项USE_LD_LLD可用于启用(默认)或显式禁用Clang的LLVMlld链接器。在MySQL8.3中,USE_LD_LLD已被删除。-DWIN_DEBUG_NO_INLINE=<emclass="replaceable"><code>bool</code></em>是否在Windows上禁用函数内联。默认值为OFF(启用内联)。-DWITH_ANT=<emclass="replaceable"><code>path_name</code></em>设置Ant的路径,这是构建GCSJava包装器时所需的。设置WITH_ANT为保存Anttarball或解压存档的目录路径。当WITH_ANT未设置或使用特殊值设置时system,构建过程假定二进制文件ant存在于中$PATH。-DWITH_ASAN=<emclass="replaceable"><code>bool</code></em>是否启用AddressSanitizer,对于支持它的编译器。默认为OFF.-DWITH_ASAN_SCOPE=<emclass="replaceable"><code>bool</code></em>是否启用AddressSanitizer-fsanitize-address-use-after-scopeClang标志以进行作用域后使用检测。默认关闭。要使用此选项,-DWITH_ASAN还必须启用。-DWITH_AUTHENTICATION_CLIENT_PLUGINS=<emclass="replaceable"><code>bool</code></em>如果构建了任何相应的服务器身份验证插件,则会自动启用此选项。因此,它的值取决于其他CMake选项,不应显式设置。-DWITH_AUTHENTICATION_LDAP=<emclass="replaceable"><code>bool</code></em>LDAP认证插件无法构建时是否报错:如果禁用此选项(默认),则在找到所需的头文件和库时构建LDAP插件。如果不是,CMake会显示有关它的注释。如果启用此选项,则无法找到所需的头文件和库会导致CMake产生错误,从而阻止构建服务器。-DWITH_AUTHENTICATION_PAM=<emclass="replaceable"><code>bool</code></em>是否为包含此插件的源树构建PAM身份验证插件。(请参见第8.4.1.5节“PAM可插入身份验证”。)如果指定了此选项并且无法编译插件,则构建会失败。-DWITH_AWS_SDK=<emclass="replaceable"><code>path_name</code></em>AmazonWebServices软件开发工具包的位置。-DWITH_CLIENT_PROTOCOL_TRACING=<emclass="replaceable"><code>bool</code></em>是否将客户端协议追踪框架构建到客户端库中。默认情况下,此选项处于启用状态。有关编写协议跟踪客户端插件的信息,请参阅编写协议跟踪插件。另请参阅WITH_TEST_TRACE_PLUGIN选项。-DWITH_CURL=<emclass="replaceable"><code>curl_type</code></em>图书馆的位置curl。*curl_type*可以是system(使用系统curl库)、库的路径名curl、no|off|none禁用curl支持,或者bundled使用extra/curl/.-DWITH_DEBUG=<emclass="replaceable"><code>bool</code></em>是否包含调试支持。通过配置MySQL的调试支持,您可以--debug="d,parser_debug"在启动服务器时使用该选项。这会导致用于处理SQL语句的Bison解析器将解析器跟踪转储到服务器的标准错误输出。通常,此输出会写入错误日志。存储引擎的同步调试检查InnoDB在下面定义UNIV_DEBUG,并且在使用该选项编译调试支持时可用WITH_DEBUG。当编译了调试支持时,innodb_sync_debug配置选项可用于启用或禁用InnoDB同步调试检查。启用WITH_DEBUG还会启用调试同步。该设施用于测试和调试。编译后,调试同步在运行时默认处于禁用状态。要启用它,请使用以下选项启动mysqld,其中是大于0的超时值。(默认值为0,这将禁用调试同步。)成为各个同步点的默认超时。--debug-sync-timeout=<emclass="replaceable"><code>N</code></em>N**NInnoDB当使用该选项编译调试支持时,可以使用存储引擎的同步调试检查WITH_DEBUG。有关调试同步工具以及如何使用同步点的说明,请参阅MySQL内部:测试同步。-DWITH_EDITLINE=<emclass="replaceable"><code>value</code></em>使用哪个libedit/库。editline允许的值为bundled(默认值)和system。-DWITH_FIDO=<emclass="replaceable"><code>fido_type</code></em>身份验证插件authentication_fido是使用FIDO库实现的(请参阅第8.4.1.12节“FIDO可插入身份验证”)。该WITH_FIDO选项指示FIDO支持的来源:bundled:使用与发行版捆绑在一起的FIDO库。这是默认设置。MySQL包含fido2版本1.8.0。system:使用系统FIDO库。WITH_FIDOnone如果禁用所有身份验证插件,则被禁用(设置为)。-DWITH_ICU={<emclass="replaceable"><code>icu_type</code></em>|<emclass="replaceable"><code>path_name</code></em>}MySQL使用InternationalComponentsforUnicode(ICU)来支持正则表达式操作。该WITH_ICU选项指示要包含的ICU支持类型或要使用的ICU安装的路径名。*icu_type*可以是以下值之一:bundled:使用与发行版捆绑在一起的ICU库。这是默认选项,也是Windows唯一支持的选项。system:使用系统ICU库。*path_name是要使用的ICU安装的路径名。这比使用的icu_type*值更可取,system因为它可以防止CMake检测和使用系统上安装的较旧或不正确的ICU版本。(执行相同操作的另一种允许方法是设置WITH_ICU为system并将CMAKE_PREFIX_PATH选项设置为path_name。)-DWITH_INNODB_EXTRA_DEBUG=<emclass="replaceable"><code>bool</code></em>是否包含额外的InnoDB调试支持。启用WITH_INNODB_EXTRA_DEBUG会开启额外的InnoDB调试检查。该选项只有在WITH_DEBUG启用时才可以启用。-DWITH_JEMALLOC=<emclass="replaceable"><code>bool</code></em>是否链接到-ljemalloc.如果启用,内置malloc()、calloc()、realloc()和free()例程将被禁用。默认为OFF.WITH_JEMALLOC并且WITH_TCMALLOC是互斥的。-DWITH_WIN_JEMALLOC=<emclass="replaceable"><code>string</code></em>jemalloc.dll在Windows上,传入包含启用jemalloc功能的目录的路径。构建系统将其复制到与和/或jemalloc.dll相同的目录,并将其用于内存管理操作。如果找不到或未导出所需的函数,则使用标准内存函数。INFORMATION级别的日志消息记录是否找到并使用了jemalloc。mysqld.exe``mysqld-debug.exe``jemalloc.dll此选项针对Windows官方MySQL二进制文件启用。-DWITH_KEYRING_TEST=<emclass="replaceable"><code>bool</code></em>是否构建插件附带的测试程序keyring_file。默认为OFF.测试文件源代码位于该plugin/keyring/keyring-test目录中。-DWITH_LIBEVENT=<emclass="replaceable"><code>string</code></em>libevent使用哪个库。允许的值为bundled(默认)和system。如果system指定并且找不到系统libevent库,则无论如何都会发生错误,并且libevent不使用捆绑的。memcached、XPlugin和MySQLRouterlibevent需要该库。InnoDB-DWITH_LIBWRAP=<emclass="replaceable"><code>bool</code></em>是否包含libwrap(TCP包装器)支持。-DWITH_LOCK_ORDER=<emclass="replaceable"><code>bool</code></em>是否启用LOCK_ORDER工具。默认情况下,此选项处于禁用状态,并且服务器版本不包含任何工具。如果启用了工具,则LOCK_ORDER工具可用,并且可以按照第7.9.3节“LOCK_ORDER工具”中所述使用。笔记启用该WITH_LOCK_ORDER选项后,MySQL构建需要flex程序。-DWITH_LSAN=<emclass="replaceable"><code>bool</code></em>是否运行LeakSanitizer,而不运行AddressSanitizer。默认为OFF.-DWITH_LTO=<emclass="replaceable"><code>bool</code></em>是否启用链接时优化器(如果编译器支持)。默认为OFF除非FPROFILE_USE启用。-DWITH_LZ4=<emclass="replaceable"><code>lz4_type</code></em>该WITH_LZ4选项指示支持来源zlib:bundled:使用lz4与发行版捆绑在一起的库。这是默认设置。system:使用系统lz4库。如果WITH_LZ4设置为此值,则不会构建lz4_decompress实用程序。在这种情况下,可以使用系统lz4命令来代替。-DWITH_MECAB={disabled|system|<emclass="replaceable"><code>path_name</code></em>}使用此选项编译MeCab解析器。如果您已将MeCab安装到其默认安装目录,请设置-DWITH_MECAB=system.该system选项适用于使用本机包管理实用程序从源代码或二进制文件执行的MeCab安装。如果您将MeCab安装到自定义安装目录,请指定MeCab安装路径,例如-DWITH_MECAB=/opt/mecab。如果该system选项不起作用,则指定MeCab安装路径应该在所有情况下都有效。有关相关信息,请参阅第14.9.9节“MeCab全文解析器插件”。-DWITH_MSAN=<emclass="replaceable"><code>bool</code></em>是否启用MemorySanitizer,对于支持它的编译器。默认关闭。为了使该选项在启用后生效,链接到MySQL的所有库也必须在启用该选项的情况下进行编译。-DWITH_MSCRT_DEBUG=<emclass="replaceable"><code>bool</code></em>是否启用VisualStudioCRT内存泄漏跟踪。默认为OFF.-DMSVC_CPPCHECK=<emclass="replaceable"><code>bool</code></em>是否启用MSVC代码分析。默认为ON.-DWITH_MYSQLX=<emclass="replaceable"><code>bool</code></em>是否构建支持XPlugin。默认为ON.请参阅第22章,使用MySQL作为文档存储。-DWITH_NUMA=<emclass="replaceable"><code>bool</code></em>显式设置NUMA内存分配策略。CMakeWITH_NUMA根据当前平台是否支持来设置默认值NUMA。对于不支持NUMA的平台,CMake的行为如下:如果没有NUMA选项(正常情况),CMake会正常继续,仅生成此警告:NUMA库丢失或所需版本不可用。使用时-DWITH_NUMA=ON,CMake会中止并出现以下错误:NUMA库丢失或所需版本不可用。-DWITH_PACKAGE_FLAGS=<emclass="replaceable"><code>bool</code></em>对于通常用于RPM和Debian软件包的标志,是否将它们添加到这些平台上的独立构建中。默认值适用ON于非调试版本。-DWITH_PROTOBUF=<emclass="replaceable"><code>protobuf_type</code></em>使用哪个ProtocolBuffers包。*protobuf_type*可以是以下值之一:bundled:使用与发行版捆绑在一起的包。这是默认设置。(可选)用于INSTALL_PRIV_LIBDIR修改动态Protobuf库目录。system:使用系统上安装的软件包。其他值将被忽略,并回退到bundled.-DWITH_RAPID=<emclass="replaceable"><code>bool</code></em>是否构建快速开发周期插件。启用后,rapid将在包含这些插件的构建树中创建一个目录。禁用时,不会rapid在构建树中创建任何目录。默认值为ON,除非该rapid目录已从源代码树中删除,在这种情况下默认值为OFF。-DWITH_RAPIDJSON=<emclass="replaceable"><code>rapidjson_type</code></em>要包含的RapidJSON库支持的类型。*rapidjson_type*可以是以下值之一:bundled:使用与发行版捆绑在一起的RapidJSON库。这是默认设置。system:使用系统RapidJSON库。需要1.1.0或更高版本。-DWITH_ROUTER=<emclass="replaceable"><code>bool</code></em>是否构建MySQLRouter。默认为ON.-DWITH_SSL={<emclass="replaceable"><code>ssl_type</code></em>|path_name}为了支持加密连接、随机数生成的熵以及其他与加密相关的操作,MySQL必须使用SSL库构建。此选项指定要使用哪个SSL库。*ssl_type*可以是以下值之一:system:使用系统OpenSSL库。这是默认设置。在macOS和Windows上,使用system配置MySQL进行构建,就像通过*path_name*指向手动安装的OpenSSL库调用CMake一样。这是因为他们没有系统SSL库。在macOS上,brewinstallopenssl会安装到,/usr/local/opt/openssl以便system可以找到它。在Windows上,它检查%ProgramFiles%/OpenSSL、%ProgramFiles%/OpenSSL-Win32、%ProgramFiles%/OpenSSL-Win64、C:/OpenSSL、C:/OpenSSL-Win32和C:/OpenSSL-Win64。yes:这是的同义词system。openssl<emclass="replaceable"><code>version</code></em>:使用备用OpenSSL系统软件包,例如openssl11在EL7上,或openssl3(或openssl3-fips)在EL8上。身份验证插件(例如LDAP和Kerberos)被禁用,因为它们不支持这些替代版本的OpenSSL。*path_name是要使用的OpenSSL安装的路径名。这比使用该ssl_type*值更可取,system因为它可以防止CMake检测和使用系统上安装的较旧或不正确的OpenSSL版本。(执行相同操作的另一种允许方法是设置WITH_SSL为system并将CMAKE_PREFIX_PATH选项设置为path_name。)有关配置SSL库的其他信息,请参阅第2.8.6节“配置SSL库支持”。-DWITH_SHOW_PARSE_TREE=<emclass="replaceable"><code>bool</code></em>SHOWPARSE_TREE在服务器中启用支持,仅用于开发和调试。不用于发布版本或在生产中受支持。-DWITH_SYSTEMD=<emclass="replaceable"><code>bool</code></em>是否启用systemd支持文件的安装。默认情况下,此选项处于禁用状态。启用后,将安装systemd支持文件,但不会安装mysqld_safe和SystemV初始化脚本等脚本。在systemd不可用的平台上,启用会导致CMakeWITH_SYSTEMD出错。当使用此选项构建服务器时,MySQL会将所有systemd消息包含在服务器的错误日志中(请参见第7.4.2节“错误日志”)。有关使用systemd的更多信息,请参阅第2.5.9节“使用systemd管理MySQL服务器”。该部分还包括有关指定选项组中其他指定选项的信息[mysqld_safe]。由于使用systemd时未安装mysqld_safe,因此必须以其他方式指定此类选项。-DWITH_SYSTEM_LIBS=<emclass="replaceable"><code>bool</code></em>此选项充当“伞”选项,用于设置system以下任何未显式设置的CMakeWITH_CURL选项的值:,WITH_EDITLINE,WITH_FIDO,WITH_ICU,WITH_LIBEVENT,WITH_LZ4,WITH_LZMA,WITH_PROTOBUF,WITH_RE2,WITH_SSL,WITH_ZLIB,WITH_ZSTD。-DWITH_SYSTEMD_DEBUG=<emclass="replaceable"><code>bool</code></em>对于使用systemd运行MySQL的平台,是否生成额外的systemd调试信息。默认为.OFF-DWITH_TCMALLOC=<emclass="replaceable"><code>bool</code></em>是否链接到-ltcmalloc.如果启用,内置malloc()、calloc()、realloc()和free()例程将被禁用。默认为OFF.WITH_TCMALLOC并且WITH_JEMALLOC是互斥的。-DWITH_TEST_TRACE_PLUGIN=<emclass="replaceable"><code>bool</code></em>是否构建测试协议跟踪客户端插件(请参阅使用测试协议跟踪插件)。默认情况下,此选项处于禁用状态。除非WITH_CLIENT_PROTOCOL_TRACING启用该选项,否则启用该选项不会产生任何效果。如果MySQL配置为启用这两个选项,则libmysqlclient客户端库将使用内置的测试协议跟踪插件构建,并且所有标准MySQL客户端都会加载该插件。然而,即使启用了测试插件,默认情况下也没有效果。使用环境变量可以控制插件;请参阅使用测试协议跟踪插件。笔记如果您想使用自己的协议跟踪插件,请不要启用该WITH_TEST_TRACE_PLUGIN选项,因为一次只能加载一个此类插件,并且尝试加载第二个插件时会发生错误。如果您已经构建了MySQL,并启用了测试协议跟踪插件以查看其工作原理,则必须在不使用它的情况下重建MySQL,然后才能使用自己的插件。有关编写跟踪插件的信息,请参阅编写协议跟踪插件。-DWITH_TSAN=<emclass="replaceable"><code>bool</code></em>是否启用ThreadSanitizer(对于支持它的编译器)。默认关闭。-DWITH_UBSAN=<emclass="replaceable"><code>bool</code></em>是否为支持未定义行为清理程序的编译器启用它。默认关闭。-DWITH_UNIT_TESTS={ON|OFF}如果启用,则使用单元测试编译MySQL。默认值是ON除非服务器没有被编译。-DWITH_UNIXODBC=<emclass="replaceable"><code>1</code></em>为Connector/ODBC启用unixODBC支持。-DWITH_VALGRIND=<emclass="replaceable"><code>bool</code></em>是否在Valgrind头文件中进行编译,这会将ValgrindAPI公开给MySQL代码。默认为OFF.要生成Valgrind感知的调试版本,-DWITH_VALGRIND=1通常与-DWITH_DEBUG=1.请参阅构建调试配置。-DWITH_ZLIB=<emclass="replaceable"><code>zlib_type</code></em>某些功能要求服务器构建有压缩库支持,例如COMPRESS()和UNCOMPRESS()函数以及客户端/服务器协议的压缩。该WITH_ZLIB选项指示支持来源zlib:最低支持版本zlib是1.2.13。bundled:使用zlib与发行版捆绑在一起的库。这是默认设置。system:使用系统zlib库。如果WITH_ZLIB设置为此值,则不会构建zlib_decompress实用程序。在这种情况下,可以使用系统opensslzlib命令来代替。-DWITH_ZSTD=<emclass="replaceable"><code>zstd_type</code></em>使用该算法的连接压缩zstd(请参见第6.2.8节“连接压缩控制”)要求服务器构建有zstd库支持。该WITH_ZSTD选项指示支持来源zstd:bundled:使用zstd与发行版捆绑在一起的库。这是默认设置。system:使用系统zstd库。编译器标志-DCMAKE_C_FLAGS="<emclass="replaceable"><code>flags</code></em>”C编译器的标志。-DCMAKE_CXX_FLAGS="<emclass="replaceable"><code>flags</code></em>”C++编译器的标志。-DWITH_DEFAULT_COMPILER_OPTIONS=<emclass="replaceable"><code>bool</code></em>是否使用来自的标志cmake/build_configurations/compiler_options.cmake。笔记所有优化标志均由MySQL构建团队精心选择和测试。覆盖它们可能会导致意外结果,您需要自行承担风险。-DOPTIMIZE_SANITIZER_BUILDS=<emclass="replaceable"><code>bool</code></em>是否添加-O1-fno-inline到消毒剂版本中。默认为ON.要指定您自己的C和C++编译器标志,对于不影响优化的标志,请使用CMAKE_C_FLAGS和CMAKE_CXX_FLAGSCMake选项。CMAKE_BUILD_TYPE当提供您自己的编译器标志时,您可能还需要指定。例如,要在64位Linux计算机上创建32位发行版本,请执行以下操作:$>mkdirbuild$>cdbuild$>cmake..-DCMAKE_C_FLAGS=-m32\-DCMAKE_CXX_FLAGS=-m32\-DCMAKE_BUILD_TYPE=RelWithDebInfo如果设置影响优化的标志(),则必须设置和/或选项,其中对应于值。要为默认构建类型()指定不同的优化,请设置和选项。例如,要在Linux上使用调试符号进行编译,请执行以下操作:-O<emclass="replaceable"><code>number</code></em>``CMAKE_C_FLAGS_<emclass="replaceable"><code>build_type</code></em>``CMAKE_CXX_FLAGS_<emclass="replaceable"><code>build_type</code></em>build_typeCMAKE_BUILD_TYPERelWithDebInfo``CMAKE_C_FLAGS_RELWITHDEBINFO``CMAKE_CXX_FLAGS_RELWITHDEBINFO``-O3$>cmake..-DCMAKE_C_FLAGS_RELWITHDEBINFO="-O3-g"\-DCMAKE_CXX_FLAGS_RELWITHDEBINFO="-O3-g"用于编译NDBCluster的CMake选项以下选项可在构建具有NDBCluster支持的MySQL源时使用。-DNDB_UTILS_LINK_DYNAMIC={ON|OFF}控制NDB实用程序(例如ndb_drop_table)ndbclient是静态(OFF)还是动态(ON)链接;OFF(静态链接)是默认值。通常在构建这些版本时使用静态链接以避免出现问题,或者在安装LD_LIBRARY_PATH多个版本时使用静态链接。ndbclient此选项旨在创建Docker映像以及可能的其他情况,其中目标环境受到精确控制并且需要减小映像大小。-DWITH_CLASSPATH=<emclass="replaceable"><code>path</code></em>设置用于构建Java的MySQLNDBClusterConnector的类路径。默认为空。如果-DWITH_NDB_JAVA=OFF使用该选项,则忽略该选项。-DWITH_ERROR_INSERT={ON|OFF}在内核中启用错误注入NDB。仅用于测试;不适用于构建生产二进制文件。默认为OFF.-DWITH_NDB={ON|OFF}构建MySQLNDB集群;构建NDB插件和所有NDBCluster程序。-DWITH_NDBAPI_EXAMPLES={ON|OFF}在storage/ndb/ndbapi-examples/.有关这些的信息,请参阅NDBAPI示例。-DWITH_NDBCLUSTER_STORAGE_ENGINE={ON|OFF}(仅)控制ndbcluster插件是否包含在构建中;WITH_NDB自动启用此选项,因此建议您WITH_NDB改为使用。-DWITH_NDBCLUSTER={ON|OFF}构建和链接以支持mysqldNDB中的存储引擎。此选项已被弃用,并可能最终被删除;代替使用WITH_NDB。-DWITH_NDBMTD={ON|OFF}构建多线程数据节点可执行文件ndbmtd。默认为ON.-DWITH_NDB_DEBUG={ON|OFF}启用构建NDBCluster二进制文件的调试版本。这是OFF默认情况。-DWITH_NDB_JAVA={ON|OFF}启用使用Java支持构建NDBCluster,包括对ClusterJ的支持(请参阅适用于Java的MySQLNDBClusterConnector)。此选项ON为默认选项。如果您不希望编译具有Java支持的NDBCluster,则必须通过-DWITH_NDB_JAVA=OFF在运行CMake时指定来显式禁用它。否则,如果找不到Java,则构建配置将失败。-DWITH_NDB_PORT=<emclass="replaceable"><code>port</code></em>导致NDBCluster管理服务器(ndb_mgmd)默认使用它port。如果未设置此选项,则生成的管理服务器默认尝试使用端口1186。-DWITH_NDB_TEST={ON|OFF}如果启用,请包含一组NDBAPI测试程序。默认为OFF.-DWITH_NDB_TLS_SEARCH_PATH=<emclass="replaceable"><code>path</code></em>设置ndb_sign_keys和其他NDB程序搜索TLS证书和密钥文件的默认路径。Windows平台的默认值是$HOMEDIR/ndb-tls;对于其他平台,例如Linux,它是$HOME/ndb-tls.

服务器的那些事儿 519 2月前
php5.6.19的编译安装
大苹果

php5.6.19的编译安装

PHP下载php5.6.19解压tar-zxvfphp-5.6.19.tar.gz相关依赖安装yum安装相关依赖yuminstall-yzlib-develfontconfigfontconfig-devellibXpm*libtool*libxml2libxml2-develcurlcurl-develyum-yinstallmakegcc-c++安装yasm-1.3.0tar-zxvfyasm-1.3.0.tar.gzcdyasm-1.3.0./configuremake&&makeinstall安装libmcrypt-2.5.8tarzxvflibmcrypt-2.5.8.tar.gzcdlibmcrypt-2.5.8./configuremake&&makeinstall安装libvpx-v1.3.0xz-dlibvpx-v1.3.0.tar.xztar-xvflibvpx-v1.3.0.tarcdlibvpx-v1.3.0./configure--prefix=/usr/local/libvpx--enable-shared--enable-vp9make&&makeinstall安装tiff-4.0.3tarzxvftiff-4.0.3.tar.gzcdtiff-4.0.3./configure--prefix=/usr/local/tiff--enable-sharedmake&&makeinstall安装libpng-1.6.16xz-dlibpng-1.6.16.tar.xztar-xvflibpng-1.6.16.tarcdlibpng-1.6.16./configure--prefix=/usr/local/libpng--enable-sharedmake&&makeinstall安装freetype-2.5.4tarzxvffreetype-2.5.4.tar.gzcdfreetype-2.5.4./configure--prefix=/usr/local/freetype--enable-shared--without-pngmake&&makeinstalljpegsrc.v9atarzxvfjpegsrc.v9a.tar.gzcdjpeg-9a./configure--prefix=/usr/local/jpeg--enable-sharedmake&&makeinstalllibgd-2.1.1tarzxvflibgd-2.1.1.tar.gzcdlibgd-2.1.1./configure\--prefix=/usr/local/libgd\--enable-shared\--with-jpeg=/usr/local/jpeg\--with-png=/usr/local/libpng\--with-freetype=/usr/local/freetype\--with-fontconfig=/usr/local/freetype\--with-xpm=/usr/\--with-tiff=/usr/local/tiff\--with-vpx=/usr/local/libvpxmake&&makeinstallt1lib-5.1.2tarzxvft1lib-5.1.2.tar.gzcdt1lib-5.1.2./configure--prefix=/usr/local/t1lib--enable-sharedmakewithout_docmakeinstall将安装的库移动到/usr/lib/目录下,然后安装phpcentos上已经安装有mysql\cp-frp/usr/lib64/libltdl.so*/usr/lib/\cp-frp/usr/lib64/libXpm.so*/usr/lib/exportLD_LIBRARY_PATH=/usr/local/libgd/libcdphp-5.6.19./configure\--prefix=/usr/local/php\--with-config-file-path=/usr/local/php/etc\--with-mysql=/usr/local/mysql\#mysql路径--with-mysqli=/usr/local/mysql/bin/mysql_config\#mysql_config文件路径--with-mysql-sock=/tmp/mysqld.sock\#mysqlsock文件路径--with-pdo-mysql=/usr/local/mysql\#mysql安装路径--with-gd--with-png-dir=/usr/local/libpng\--with-jpeg-dir=/usr/local/jpeg\--with-freetype-dir=/usr/local/freetype\--with-xpm-dir=/usr/\--with-vpx-dir=/usr/local/libvpx/\--with-zlib-dir=/usr/local/zlib\--with-t1lib=/usr/local/t1lib\--with-iconv\--enable-libxml\--enable-xml\--enable-bcmath\--enable-shmop\--enable-sysvsem\--enable-inline-optimization\--enable-opcache\--enable-mbregex\--enable-fpm\--enable-mbstring\--enable-ftp\--enable-gd-native-ttf\--with-openssl\--enable-pcntl\--enable-sockets\--with-xmlrpc\--enable-zip\--enable-soap\--without-pear\--with-gettext\--enable-session\--with-mcrypt\--with-curl\--enable-ctypecentos上没有安装mysql,php编译选项如下安装mysql-develyuminstall-ymysql-devel./configure\--prefix=/usr/local/php\--with-config-file-path=/usr/local/php/etc\--with-mysql=mysqlnd\--enable-pdo\--with-pdo-mysql=mysqlnd\--with-gd--with-png-dir=/usr/local/libpng\--with-jpeg-dir=/usr/local/jpeg\--with-freetype-dir=/usr/local/freetype\--with-xpm-dir=/usr/\--with-vpx-dir=/usr/local/libvpx/\--with-zlib-dir=/usr/local/zlib\--with-t1lib=/usr/local/t1lib\--with-iconv\--enable-libxml\--enable-xml\--enable-bcmath\--enable-shmop\--enable-sysvsem\--enable-inline-optimization\--enable-opcache\--enable-mbregex\--enable-fpm\--enable-mbstring\--enable-ftp\--enable-gd-native-ttf\--with-openssl\--enable-pcntl\--enable-sockets\--with-xmlrpc\--enable-zip\--enable-soap\--without-pear\--with-gettext\--enable-session\--with-mcrypt\--with-curl\--enable-ctype最后一步make&&makeinstallcpphp.ini-production/usr/local/php/etc/php.ini#复制php配置文件到安装目录rm-rf/etc/php.ini#删除系统自带配置文件ln-s/usr/local/php/etc/php.ini/etc/php.ini#添加软链接到/etc目录cp/usr/local/php/etc/php-fpm.conf.default/usr/local/php/etc/php-fpm.conf#拷贝模板文件为php-fpm配置文件ln-s/usr/local/php/etc/php-fpm.conf/etc/php-fpm.conf#添加软连接到/etc目录

php 74 2月前
Gateway服务网关
大苹果

Gateway服务网关

3.Gateway服务网关SpringCloudGateway是SpringCloud的一个全新项目,该项目是基于Spring5.0,SpringBoot2.0和ProjectReactor等响应式编程和事件流技术开发的网关,它旨在为微服务架构提供一种简单有效的统一的API路由管理方式。3.1.为什么需要网关Gateway网关是我们服务的守门神,所有微服务的统一入口。网关的核心功能特性:请求路由权限控制限流架构图:权限控制:网关作为微服务入口,需要校验用户是是否有请求资格,如果没有则进行拦截。路由和负载均衡:一切请求都必须先经过gateway,但网关不处理业务,而是根据某种规则,把请求转发到某个微服务,这个过程叫做路由。当然路由的目标服务有多个时,还需要做负载均衡。限流:当请求流量过高时,在网关中按照下流的微服务能够接受的速度来放行请求,避免服务压力过大。在SpringCloud中网关的实现包括两种:gatewayzuulZuul是基于Servlet的实现,属于阻塞式编程。而SpringCloudGateway则是基于Spring5中提供的WebFlux,属于响应式编程的实现,具备更好的性能。3.2.gateway快速入门下面,我们就演示下网关的基本路由功能。基本步骤如下:创建SpringBoot工程gateway,引入网关依赖编写启动类编写基础配置和路由规则启动网关服务进行测试1)创建gateway服务,引入依赖创建服务:引入依赖:<!--网关--><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-gateway</artifactId></dependency><!--nacos服务发现依赖--><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId></dependency>2)编写启动类packagecn.itcast.gateway;importorg.springframework.boot.SpringApplication;importorg.springframework.boot.autoconfigure.SpringBootApplication;@SpringBootApplicationpublicclassGatewayApplication{publicstaticvoidmain(String[]args){SpringApplication.run(GatewayApplication.class,args);}}3)编写基础配置和路由规则创建application.yml文件,内容如下:server:port:10010#网关端口spring:application:name:gateway#服务名称cloud:nacos:server-addr:localhost:8848#nacos地址gateway:routes:#网关路由配置-id:user-service#路由id,自定义,只要唯一即可#uri:http://127.0.0.1:8081#路由的目标地址http就是固定地址uri:lb://userservice#路由的目标地址lb就是负载均衡,后面跟服务名称predicates:#路由断言,也就是判断请求是否符合路由规则的条件-Path=/user/**#这个是按照路径匹配,只要以/user/开头就符合要求我们将符合Path规则的一切请求,都代理到uri参数指定的地址。本例中,我们将/user/**开头的请求,代理到lb://userservice,lb是负载均衡,根据服务名拉取服务列表,实现负载均衡。4)重启测试重启网关,访问http://localhost:10010/user/1时,符合/user/**规则,请求转发到uri:http://userservice/user/1,得到了结果:5)网关路由的流程图整个访问的流程如下:总结:网关搭建步骤:创建项目,引入nacos服务发现和gateway依赖配置application.yml,包括服务基本信息、nacos地址、路由路由配置包括:路由id:路由的唯一标示路由目标(uri):路由的目标地址,http代表固定地址,lb代表根据服务名负载均衡路由断言(predicates):判断路由的规则,路由过滤器(filters):对请求或响应做处理接下来,就重点来学习路由断言和路由过滤器的详细知识3.3.断言工厂我们在配置文件中写的断言规则只是字符串,这些字符串会被PredicateFactory读取并处理,转变为路由判断的条件例如Path=/user/**是按照路径匹配,这个规则是由org.springframework.cloud.gateway.handler.predicate.PathRoutePredicateFactory类来处理的,像这样的断言工厂在SpringCloudGateway还有十几个:名称说明示例After是某个时间点后的请求-After=2037-01-20T17:42:47.789-07:00[America/Denver]Before是某个时间点之前的请求-Before=2031-04-13T15:14:47.433+08:00[Asia/Shanghai]Between是某两个时间点之前的请求-Between=2037-01-20T17:42:47.789-07:00[America/Denver],2037-01-21T17:42:47.789-07:00[America/Denver]Cookie请求必须包含某些cookie-Cookie=chocolate,ch.pHeader请求必须包含某些header-Header=X-Request-Id,\d+Host请求必须是访问某个host(域名)-Host=.somehost.org,.anotherhost.orgMethod请求方式必须是指定方式-Method=GET,POSTPath请求路径必须符合指定规则-Path=/red/{segment},/blue/**Query请求参数必须包含指定参数-Query=name,Jack或者-Query=nameRemoteAddr请求者的ip必须是指定范围-RemoteAddr=192.168.1.1/24Weight权重处理我们只需要掌握Path这种路由工程就可以了。3.4.过滤器工厂GatewayFilter是网关中提供的一种过滤器,可以对进入网关的请求和微服务返回的响应做处理:3.4.1.路由过滤器的种类Spring提供了31种不同的路由过滤器工厂。例如:名称说明AddRequestHeader给当前请求添加一个请求头RemoveRequestHeader移除请求中的一个请求头AddResponseHeader给响应结果中添加一个响应头RemoveResponseHeader从响应结果中移除有一个响应头RequestRateLimiter限制请求的流量3.4.2.请求头过滤器下面我们以AddRequestHeader为例来讲解。需求:给所有进入userservice的请求添加一个请求头:Truth=itcastisfreakingawesome!只需要修改gateway服务的application.yml文件,添加路由过滤即可:spring:cloud:gateway:routes:-id:user-serviceuri:lb://userservicepredicates:-Path=/user/**filters:#过滤器-AddRequestHeader=Truth,Itcastisfreakingawesome!#添加请求头当前过滤器写在userservice路由下,因此仅仅对访问userservice的请求有效。3.4.3.默认过滤器如果要对所有的路由都生效,则可以将过滤器工厂写到default下。格式如下:spring:cloud:gateway:routes:-id:user-serviceuri:lb://userservicepredicates:-Path=/user/**default-filters:#默认过滤项-AddRequestHeader=Truth,Itcastisfreakingawesome!3.4.4.总结过滤器的作用是什么?①对路由的请求或响应做加工处理,比如添加请求头②配置在路由下的过滤器只对当前路由的请求生效defaultFilters的作用是什么?①对所有路由都生效的过滤器3.5.全局过滤器上一节学习的过滤器,网关提供了31种,但每一种过滤器的作用都是固定的。如果我们希望拦截请求,做自己的业务逻辑则没办法实现。3.5.1.全局过滤器作用全局过滤器的作用也是处理一切进入网关的请求和微服务响应,与GatewayFilter的作用一样。区别在于GatewayFilter通过配置定义,处理逻辑是固定的;而GlobalFilter的逻辑需要自己写代码实现。定义方式是实现GlobalFilter接口。publicinterfaceGlobalFilter{/***处理当前请求,有必要的话通过{@linkGatewayFilterChain}将请求交给下一个过滤器处理**@paramexchange请求上下文,里面可以获取Request、Response等信息*@paramchain用来把请求委托给下一个过滤器*@return{@codeMono<Void>}返回标示当前过滤器业务结束*/Mono<Void>filter(ServerWebExchangeexchange,GatewayFilterChainchain);}在filter中编写自定义逻辑,可以实现下列功能:登录状态判断权限校验请求限流等3.5.2.自定义全局过滤器需求:定义全局过滤器,拦截请求,判断请求的参数是否满足下面条件:参数中是否有authorization,authorization参数值是否为admin如果同时满足则放行,否则拦截实现:在gateway中定义一个过滤器:packagecn.itcast.gateway.filters;importorg.springframework.cloud.gateway.filter.GatewayFilterChain;importorg.springframework.cloud.gateway.filter.GlobalFilter;importorg.springframework.core.annotation.Order;importorg.springframework.http.HttpStatus;importorg.springframework.stereotype.Component;importorg.springframework.web.server.ServerWebExchange;importreactor.core.publisher.Mono;@Order(-1)@ComponentpublicclassAuthorizeFilterimplementsGlobalFilter{@OverridepublicMono<Void>filter(ServerWebExchangeexchange,GatewayFilterChainchain){//1.获取请求参数MultiValueMap<String,String>params=exchange.getRequest().getQueryParams();//2.获取authorization参数Stringauth=params.getFirst("authorization");//3.校验if("admin".equals(auth)){//放行returnchain.filter(exchange);}//4.拦截//4.1.禁止访问,设置状态码exchange.getResponse().setStatusCode(HttpStatus.FORBIDDEN);//4.2.结束处理returnexchange.getResponse().setComplete();}}3.5.3.过滤器执行顺序请求进入网关会碰到三类过滤器:当前路由的过滤器、DefaultFilter、GlobalFilter请求路由后,会将当前路由过滤器和DefaultFilter、GlobalFilter,合并到一个过滤器链(集合)中,排序后依次执行每个过滤器:排序的规则是什么呢?每一个过滤器都必须指定一个int类型的order值,order值越小,优先级越高,执行顺序越靠前。GlobalFilter通过实现Ordered接口,或者添加@Order注解来指定order值,由我们自己指定路由过滤器和defaultFilter的order由Spring指定,默认是按照声明顺序从1递增。当过滤器的order值一样时,会按照defaultFilter>路由过滤器>GlobalFilter的顺序执行。详细内容,可以查看源码:org.springframework.cloud.gateway.route.RouteDefinitionRouteLocator#getFilters()方法是先加载defaultFilters,然后再加载某个route的filters,然后合并。org.springframework.cloud.gateway.handler.FilteringWebHandler#handle()方法会加载全局过滤器,与前面的过滤器合并后根据order排序,组织过滤器链3.6.跨域问题3.6.1.什么是跨域问题跨域:域名不一致就是跨域,主要包括:域名不同:www.taobao.com和www.taobao.org和www.jd.com和miaosha.jd.com域名相同,端口不同:localhost:8080和localhost8081跨域问题:浏览器禁止请求的发起者与服务端发生跨域ajax请求,请求被浏览器拦截的问题解决方案:CORS,这个以前应该学习过,这里不再赘述了。不知道的小伙伴可以查看https://www.ruanyifeng.com/blog/2016/04/cors.html3.6.2.模拟跨域问题找到课前资料的页面文件:放入tomcat或者nginx这样的web服务器中,启动并访问。可以在浏览器控制台看到下面的错误:从localhost:8090访问localhost:10010,端口不同,显然是跨域的请求。3.6.3.解决跨域问题在gateway服务的application.yml文件中,添加下面的配置:spring:cloud:gateway:#。。。globalcors:#全局的跨域处理add-to-simple-url-handler-mapping:true#解决options请求被拦截问题corsConfigurations:'[/**]':allowedOrigins:#允许哪些网站的跨域请求-"http://localhost:8090"allowedMethods:#允许的跨域ajax的请求方式-"GET"-"POST"-"DELETE"-"PUT"-"OPTIONS"allowedHeaders:"*"#允许在请求中携带的头信息allowCredentials:true#是否允许携带cookiemaxAge:360000#这次跨域检测的有效期

Spring Cloud微服务 890 4月前
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 >> 共 19 页