diff --git a/.husky/pre-commit b/.husky/pre-commit old mode 100755 new mode 100644 diff --git "a/app/zh/blog/20230201-Widfly-openEuler\347\247\273\346\244\215\346\241\210\344\276\213/Widfly 17.0.0 for openEuler\347\247\273\346\244\215\346\241\210\344\276\213.md" "b/app/zh/blog/20230201-Widfly-openEuler\347\247\273\346\244\215\346\241\210\344\276\213/Widfly 17.0.0 for openEuler\347\247\273\346\244\215\346\241\210\344\276\213.md" deleted file mode 100644 index dc8f67583fefe3b1079cd2236eb950acd81de759..0000000000000000000000000000000000000000 --- "a/app/zh/blog/20230201-Widfly-openEuler\347\247\273\346\244\215\346\241\210\344\276\213/Widfly 17.0.0 for openEuler\347\247\273\346\244\215\346\241\210\344\276\213.md" +++ /dev/null @@ -1,201 +0,0 @@ -# Widfly 17.0.0 for openEuler 22.03 LTS移植案例 - - - -## **简介** - -JBoss是一套开源的企业级Java中间件系统,用于实现基于SOA的企业应用和服务,基于J2EE的开放源代码的应用服务器。 JBoss代码遵循LGPL许可,可以在任何商业应用中免费使用。JBoss是一个管理EJB的容器和服务器,支持EJB1.1、EJB 2.0和EJB3的规范。但JBoss核心服务不包括支持servlet/JSP的Web容器,一般与Tomcat或Jetty绑定使用。 - - - -## 系统版本 - -openEuler 22.03 LTS - - - -## **选用版本** - -WildFly 17.0.0.Final - - - -## 下载地址 - - [**https://github.com/wildfly/wildfly.git**](https://github.com/wildfly/wildfly.git) - - - -## **安装依赖包** - -``` - yum install -y gcc gcc-c++ openssl-devel java-1.8.0* -``` - -> ![](./images/image3.png) -> ->![](./images/image1.png)**说明** -> -> JDK安装成功后检查以下路径确认是否安装成功。 -> -> ![](./images/image4.png) - - - -## **关闭防火墙** - -> ![](./images/image1.png)**说明** -> ->测试环境下通常会关闭防火墙以避免部分网络因素影响,视实际需求做配置。 - -**步骤1** 停止防火墙。 - -``` - systemctl stop firewalld.service -``` - -**步骤2** 关闭防火墙。 - -``` - systemctl disable firewalld.service -``` - -**步骤3** 查看防火墙状态。 - -``` - systemctl status firewalld.service -``` - - - -## **配置扩展文件描述符** - -**步骤1** 打开limits.conf文件。 - -``` - vi /etc/security/limits.conf -``` - -**步骤2** 在文件中写入以下配置后,保存并退出文件。 - -``` - * soft nofile 102400 - * hard nofile 102400 -``` - -> ![](./images/image1.png)**说明** -> ->\*:表示所有用户; -> ->hard:表示严格的设定,必定不能超过这个设定的数值; -> ->soft:表示警告的设定,可以超过这个设定值,但是若超过则有警告信息。 - -**步骤3** 重启服务器使文件配置生效。 - - - -## **安装Maven-3.8.7** - -**步骤1** 进入"/root"路径,下载maven-3.8.7安装包。 - -> 下载地址: -> -> [**https://mirrors.bfsu.edu.cn/apache/maven/maven-3/3.8.7/binaries/apache-maven-3.8.7-bin.tar.gz**](https://mirrors.bfsu.edu.cn/apache/maven/maven-3/3.8.7/binaries/apache-maven-3.8.7-bin.tar.gz) - -**步骤2** 解压到当前目录下。 - -``` - tar -zxvf apache-maven-3.8.7-bin.tar.gz -``` - -**步骤3** 配置环境变量。 - -- 编辑vi /etc/profile文件。 - -``` - vi /etc/profile -``` - -- 在文件末尾加入以下内容后保存并退出。 - -``` - export M2_HOME=/root/apache-maven-3.8.2 - export PATH=$PATH:$JAVA_HOME/bin:$M2_HOME/bin -``` - -- 生效环境变量。 - -``` - source /etc/profile -``` - -**步骤4** 验证maven版本。 - -``` - mvn -v -``` - -> 出现以下回显则表示安装完成。 -> -> ![](./images/image5.png) - - - - - -## **编译WildFly 17.0.0源码** - -**步骤1** 下载WildFly源码。 - -``` - cd /root - git clone https://github.com/wildfly/wildfly.git -``` - -> ![](./images/image6.png) - -**步骤2** 切换到WildFly 17.0.0版本。 - -``` - cd wildfly - git checkout 17.0.0.Final -``` - -> ![](./images/image7.png) - -**步骤3** 执行编译。 - -> 使用自己的 Maven 安装进行构建,其中构建和执行过程参考[**https://github.com/wildfly/wildfly**](https://github.com/wildfly/wildfly) -> - -``` - mvn install -``` - -编译运行图示1 - -> ![](./images/image8.png) -> -> 编译运行图示2 -> ->![](./images/image9.png) -> ->若显示**BUILD SUCCESS**,则编译通过。 -> -> ![](./images/image1.png)**说明** -> -> 执行安装编译后会生产对应的.jar包,收集相关的.jar包的命令如下,其中wildfly-jar文件中的内容为编译所生成的全部jar包: -> - -``` - cd /root - mkdir wildfly-jar - cd /root/wildfly-jar - find . -name "*.jar" -exec cp -rf {} /root/wildfly-jar/ \; - cd /root - tar -cvjf wildfly-jar.tar.gz wildfly-jar -``` - - - diff --git "a/app/zh/blog/20230201-Widfly-openEuler\347\247\273\346\244\215\346\241\210\344\276\213/images/image1.png" "b/app/zh/blog/20230201-Widfly-openEuler\347\247\273\346\244\215\346\241\210\344\276\213/images/image1.png" deleted file mode 100644 index 04523ba8d653c89d1a2afa33286ff1d867a98ccd..0000000000000000000000000000000000000000 Binary files "a/app/zh/blog/20230201-Widfly-openEuler\347\247\273\346\244\215\346\241\210\344\276\213/images/image1.png" and /dev/null differ diff --git "a/app/zh/blog/20230201-Widfly-openEuler\347\247\273\346\244\215\346\241\210\344\276\213/images/image2.png" "b/app/zh/blog/20230201-Widfly-openEuler\347\247\273\346\244\215\346\241\210\344\276\213/images/image2.png" deleted file mode 100644 index 36013b1f7f75468a80ca9809fdf0e6cdadc0e62f..0000000000000000000000000000000000000000 Binary files "a/app/zh/blog/20230201-Widfly-openEuler\347\247\273\346\244\215\346\241\210\344\276\213/images/image2.png" and /dev/null differ diff --git "a/app/zh/blog/20230201-Widfly-openEuler\347\247\273\346\244\215\346\241\210\344\276\213/images/image3.png" "b/app/zh/blog/20230201-Widfly-openEuler\347\247\273\346\244\215\346\241\210\344\276\213/images/image3.png" deleted file mode 100644 index dca2b02c396f90034c0e02ad1427c834bdda8b19..0000000000000000000000000000000000000000 Binary files "a/app/zh/blog/20230201-Widfly-openEuler\347\247\273\346\244\215\346\241\210\344\276\213/images/image3.png" and /dev/null differ diff --git "a/app/zh/blog/20230201-Widfly-openEuler\347\247\273\346\244\215\346\241\210\344\276\213/images/image4.png" "b/app/zh/blog/20230201-Widfly-openEuler\347\247\273\346\244\215\346\241\210\344\276\213/images/image4.png" deleted file mode 100644 index 8dd305b6e47963a9400d37d1aa3a31962bdbf97a..0000000000000000000000000000000000000000 Binary files "a/app/zh/blog/20230201-Widfly-openEuler\347\247\273\346\244\215\346\241\210\344\276\213/images/image4.png" and /dev/null differ diff --git "a/app/zh/blog/20230201-Widfly-openEuler\347\247\273\346\244\215\346\241\210\344\276\213/images/image5.png" "b/app/zh/blog/20230201-Widfly-openEuler\347\247\273\346\244\215\346\241\210\344\276\213/images/image5.png" deleted file mode 100644 index 06aa07f7597c0b74e2b921b4af52e983385725f8..0000000000000000000000000000000000000000 Binary files "a/app/zh/blog/20230201-Widfly-openEuler\347\247\273\346\244\215\346\241\210\344\276\213/images/image5.png" and /dev/null differ diff --git "a/app/zh/blog/20230201-Widfly-openEuler\347\247\273\346\244\215\346\241\210\344\276\213/images/image6.png" "b/app/zh/blog/20230201-Widfly-openEuler\347\247\273\346\244\215\346\241\210\344\276\213/images/image6.png" deleted file mode 100644 index 5d6d2e24e6b9b8efee31ad0b733cbabd44c222bb..0000000000000000000000000000000000000000 Binary files "a/app/zh/blog/20230201-Widfly-openEuler\347\247\273\346\244\215\346\241\210\344\276\213/images/image6.png" and /dev/null differ diff --git "a/app/zh/blog/20230201-Widfly-openEuler\347\247\273\346\244\215\346\241\210\344\276\213/images/image7.png" "b/app/zh/blog/20230201-Widfly-openEuler\347\247\273\346\244\215\346\241\210\344\276\213/images/image7.png" deleted file mode 100644 index d1352197969c9a7596e13671c216d9ff3dd01db5..0000000000000000000000000000000000000000 Binary files "a/app/zh/blog/20230201-Widfly-openEuler\347\247\273\346\244\215\346\241\210\344\276\213/images/image7.png" and /dev/null differ diff --git "a/app/zh/blog/20230201-Widfly-openEuler\347\247\273\346\244\215\346\241\210\344\276\213/images/image8.png" "b/app/zh/blog/20230201-Widfly-openEuler\347\247\273\346\244\215\346\241\210\344\276\213/images/image8.png" deleted file mode 100644 index e26219644e7f5b8643102cb70f63a4ba3b1cdfd5..0000000000000000000000000000000000000000 Binary files "a/app/zh/blog/20230201-Widfly-openEuler\347\247\273\346\244\215\346\241\210\344\276\213/images/image8.png" and /dev/null differ diff --git "a/app/zh/blog/20230201-Widfly-openEuler\347\247\273\346\244\215\346\241\210\344\276\213/images/image9.png" "b/app/zh/blog/20230201-Widfly-openEuler\347\247\273\346\244\215\346\241\210\344\276\213/images/image9.png" deleted file mode 100644 index 35ed72755211dd3f49c71d95664448d6b9f98cba..0000000000000000000000000000000000000000 Binary files "a/app/zh/blog/20230201-Widfly-openEuler\347\247\273\346\244\215\346\241\210\344\276\213/images/image9.png" and /dev/null differ diff --git "a/app/zh/blog/20230206-RocksDB-openEuler\347\247\273\346\244\215\346\241\210\344\276\213/RocksDB 6.10.2 \345\256\211\350\243\205\346\214\207\345\215\227(openEuler 22.03 LTS).md" "b/app/zh/blog/20230206-RocksDB-openEuler\347\247\273\346\244\215\346\241\210\344\276\213/RocksDB 6.10.2 \345\256\211\350\243\205\346\214\207\345\215\227(openEuler 22.03 LTS).md" new file mode 100644 index 0000000000000000000000000000000000000000..362c5df65d773166e82559136b3703ffad52691f --- /dev/null +++ "b/app/zh/blog/20230206-RocksDB-openEuler\347\247\273\346\244\215\346\241\210\344\276\213/RocksDB 6.10.2 \345\256\211\350\243\205\346\214\207\345\215\227(openEuler 22.03 LTS).md" @@ -0,0 +1,690 @@ +--- +title: "RocksDB-6.10.2-migrate" +date: 2023-02-08 +category: blog +tags: + - RocksDB + - porting Guide +sig: sig-Compatibility-Infra +archives: 2023-02 +author: bald +summary: "详细介绍了RocksDB-6.10.2软件移植到openEuler操作系统的具体操作步骤" +--- + +# RocksDB 3.76 for openEuler 22.03 LTS移植案例 + +## 介绍 + +RocksDB 是一个来自Facebook 的可嵌入的支持持久化的 key-value存储系统,也可作为 C/S 模式下的存储数据库。RocksDB 基于LevelDB 构建。 + +关于RocksDB的更多信息请访问[RocksDB官网](http://rocksdb.org/)。 + +**语言**:C++ + +**一句话描述**:用于快速存储的嵌入式持久键值存储。 + +**开源协议**:Apache+GPLv2 + +建议使用版本为:RocksDB 6.10.2 + +系统版本为:openEuler 22.03 LTS + + + + +## 配置安装环境 + +### yum安装依赖包 + +``` +yum install -y vim gcc-c++ snappy snappy-devel zlib zlib-devel bzip2 bzip2-devel lz4 lz4-devel +``` + + + +### 源码安装zstd + +**操作步骤** + +- 进入"/home"目录。 + +``` +cd /home +``` + +获取zstd源码包并修改包名。 + +``` +wget https://codeload.github.com/facebook/zstd/tar.gz/refs/tags/v1.1.3 + +mv v1.1.3 zstd-1.1.3.tar.gz +``` + +- 解压源码包。 + +``` +tar -zxvf zstd-1.1.3.tar.gz +``` + +- 进入解压目录。 + +``` +cd zstd-1.1.3/ +``` + +- 编译。 + +``` +make -j8 +``` + +![](./media/image3.png) + +- 安装。 + +``` +make install +``` + +![](./media/image4.png) + +- 环境变量配置。 + +``` +export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib + +export CPLUS_INCLUDE_PATH=$CPLUS_INCLUDE_PATH:/usr/local/include +``` + + + +### 源码安装cmake + +说明:cmake版本最低要求为3.5.1,建议安装3.10.0版本。 + +操作步骤 + +- 进入"/home"目录。 + +``` +cd /home +``` + +- 获取源码。 + +``` +wget https://github.com/Kitware/CMake/releases/download/v3.10.0/cmake-3.10.0.tar.gz +``` + +- 解压源码包。 + +``` +tar -zxvf cmake-3.10.0.tar.gz +``` + +- 进入解压包。 + +``` +cd cmake-3.10.0 +``` + +- 编译配置。 + +``` +./bootstrap --prefix=/usr/local/cmake +``` + +![](./media/image6.png) + +- 编译。 + +``` +make -j8 +``` + +![](./media/image7.png) + +- 安装。 + +``` +make install +``` + +![](./media/image8.png) + +- 执行以下命令设置cmake的环境变量。 + +``` +export PATH=$PATH:/usr/local/cmake/bin +``` + +- 查看版本验证是否安装成功。 + +``` +cmake --version +``` + +![](./media/image9.png) + +如果查看的版本不是3.10.0,参考 故障排除-cmake 版本未生效。 + + + +### 源码安装gflags + +**操作步骤** + +- 进入"/home"目录。 + +``` +cd /home +``` + +- 获取源码包并修改包名。 + +``` +wget https://github.com/gflags/gflags/archive/v2.2.2.tar.gz +mv v2.2.2.tar.gz gflags-2.2.2.tar.gz +``` + +- 解压源码包。 + +``` +tar -zxvf gflags-2.2.2.tar.gz +``` + +- 进入解压包。 + +``` +cd gflags-2.2.2 +``` + +- 新建目录。 + +``` +mkdir build/ +``` + +- 进入新建目录。 + +``` +cd build/ +``` + +- 编译配置。 + +``` +cmake -DBUILD_SHARED_LIBS=ON -DBUILD_STATIC_LIBS=ON -DINSTALL_HEADERS=ON -DINSTALL_SHARED_LIBS=ON -DINSTALL_STATIC_LIBS=ON .. +``` + +![](./media/image10.png) + +- 编译。 + +``` +make -j8 +``` + +![](./media/image11.png) + +- 安装。 + +``` +make install +``` + +![](./media/image12.png) + +- 执行以下命令设置gflags的环境变量。 + +``` +export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib +export CPLUS_INCLUDE_PATH=$CPLUS_INCLUDE_PATH:/usr/local/include/gflags +``` + + + +## 源码编译安装 + +操作步骤 + +- 进入"/home"目录。 + +``` +cd /home/ +``` + +- 获取源码包并修改包名。 + +``` +wget https://github.com/facebook/rocksdb/archive/refs/tags/v6.10.2.tar.gz +mv v6.10.2.tar.gz rocksdb-6.10.2.tar.gz +``` + +- 解压RocksDB安装包。 + +``` +tar -zxvf rocksdb-6.10.2.tar.gz +``` + +- 进入解压目录。 + +``` +cd rocksdb-6.10.2/ +``` + +- 修改cmake编译配置文件。 + +``` +vim CMakeLists.txt +``` + +说明:按照源码包中的配置文件进行编译,会在生成benchmark工具时,出现所需静态库找不到的错 +误。需修改CMakeList.txt配置文件可解决该问题。具体操作如下。 + +在1186行添加如下代码段: + +``` +add_subdirectory(third-party/gtest-1.8.1/fused-src/gtest) +add_library(testharness STATIC +test_util/testharness.cc) +target_link_libraries(testharness gtest) +``` + +编辑前: + +![](./media/image13.png) + +编辑后: + +![](./media/image14.png) + +- 创建目录。 + +``` +mkdir build +``` + +- 进入创建的目录。 + +``` +cd build +``` + +- 编译配置。 + +``` +cmake -DCMAKE_INSTALL_PREFIX=/usr/local/rocksdb -DWITH_SNAPPY=1 -DWITH_ZLIB=1 -DWITH_LZ4=1 -DWITH_ZSTD=1 -DWITH_BZ2=1 .. +``` + +![](./media/image15.png) + +9. 执行编译命令。 + +``` +make -j8 +``` + +![](./media/image16.png) + + + +如果编译报错提示"Cannot allocate memory",参考 故障排除-编译rocksdb提示Cannot allocate memory。 + +- 执行安装命令。 + +``` +make install +``` + +![](./media/image17.png) + +- 将工具移动到安装目录。 + +``` +cp ../utilities/merge_operators.h +/usr/local/rocksdb/include/rocksdb/utilities/ +mkdir -p /usr/local/rocksdb/tools +cp -p ./tools/ldb /usr/local/rocksdb/tools +cp -p ./tools/sst_dump /usr/local/rocksdb/tools +``` + +- 查看安装目录。 + +``` +ls /usr/local/rocksdb +``` + +![](./media/image18.png) + +- 环境变量设置。 + +``` +export CPLUS_INCLUDE_PATH=$CPLUS_INCLUDE_PATH:/usr/local/rocksdb/include +export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/rocksdb/lib64 +export LIBRARY_PATH=$LIBRARY_PATH:/usr/local/rocksdb/lib64 +export PATH=$PATH:/usr/local/rocksdb/tools +``` + + + +## 接口Get、Put、Delete、Merge验证 + +说明: + +1. 通过ldb工具验证put、get、delete三个接口的正常操作。 + +2. 通过代码简单验证merge接口的正常操作。 + +### put接口 + +- 创建数据库存储目录。 + +``` +mkdir -p /home/rocksdb/rkdb1 +``` + +- 添加数据。 + +``` +ldb --db=/home/rocksdb/rkdb1 --create_if_missing put k1 v1 +ldb --db=/home/rocksdb/rkdb1 put k2 v2 +``` + +![](./media/image19.png) + +- 查看结果。 + +``` +ldb --db=/home/rocksdb/rkdb1 scan +``` + +![](./media/image20.png) + + + +### Get接口 + +- 读取数据。 + +``` +ldb --db=/home/rocksdb/rkdb1 get k1 +ldb --db=/home/rocksdb/rkdb1 get k2 +``` + +![](./media/image21.png) + +- 查看结果。 + +``` +ldb --db=/home/rocksdb/rkdb1 scan +``` + +![](./media/image22.png) + + + +### Delete接口 + +- 删除数据。 + +``` +ldb --db=/home/rocksdb/rkdb1 scan +ldb --db=/home/rocksdb/rkdb1 delete k2 +``` + +![](./media/image23.png) + +- 查看结果。 + +``` +ldb --db=/home/rocksdb/rkdb1 scan +``` + +![](./media/image24.png) + + + +### Merge接口 + +- 进入"/home"目录。 + +``` +cd /home/ +``` + +- 创建如下源代码。 + +``` +vim rocksdb_test_merge.cpp +``` + +- 添加代码内容。 + +```cpp +#include + +#include + +#include + +#include + +#include + +#include + +#include + +#include + +#include + +#include + +#include "rocksdb/utilities/merge_operators.h" + +using namespace rocksdb; + +using namespace std; + +int main() + +{ + +DB* db; + +Options options; + +options.create_if_missing = true; + +//no compression + +options.compression = kNoCompression; + +BlockBasedTableOptions table_options; + +table_options.no_block_cache = true; + +table_options.cache_index_and_filter_blocks = false; + +options.table_factory.reset(NewBlockBasedTableFactory(table_options)); + +options.merge_operator = +MergeOperators::CreateStringAppendOperator(); + +Status s=rocksdb::DB:: Open(options,"/home/rocksdb/rkdb2",&db); + +if(!s.ok()){ + +cout<<"open rocksdb failed:"<Merge(WriteOptions(),key,"1"); + +//need change + +if(!s.ok()){ + +cout << "Merge value failed:" << s.ToString()<Merge(WriteOptions(),key,"2"); + +db->Flush(FlushOptions()); + +if(!s.ok()){ + +cout << "Merge value failed:" << s.ToString()<Get(ReadOptions(),key,&value); + +if(!s.ok()){ + +cout << "Merge value failed:" << s.ToString()<