首页 > 其他分享 >黑马教程金融类安全传输平台项目环境部署

黑马教程金融类安全传输平台项目环境部署

时间:2023-08-29 22:36:39浏览次数:43  
标签:教程 sudo 金融类 export OCCI oracle PATH docker 黑马

看完这个教程之后金融类安全传输平台项目(C/C++阶段五),看见评论区有个兄弟分享了源码,https://github.com/Peachol/Secure_data_transmission
于是我就clone下来尝试跑一下,结果发现事情并没有那么简单,花了一下午才把项目跑起来,然后目前还有报错,但是已经能让客户端和服务端通信了,故记录一下环境搭建的过程。

Clone源码和补充Makefile脚本

上面clone下来的源码,有两个文件夹,serverclient,其中client写了Makefile,server里面没写,那我们就补充一个Makefile,把client的复制下来稍微改一改

src=$(wildcard *.cpp)
objs=$(patsubst %.cpp,%.o,$(src))

target=serverMain
LIBS=-lstdc++ -pthread -lssl -lcrypto -locci -lclntsh
DEFINE=-D_GLIBCXX_USE_CXX11_ABI=0

$(target):$(objs)
	g++ -o $@ $^ $(LIBS)  $(DEFINE)

%.o:%.cpp
	g++ -std=c++11 -c $< 

.PHONY:clean
clean:
	rm -f $(target) $(objs)

尝试make,有报错,别急,一点一点配置环境。

客户端

客户端的环境配置比较简单,就是需要一个openssl的库

安装openssl

打开网址 https://www.openssl.org/source/

下载1版本:openssl-1.1.1v.tar.gz

拷贝到linux里,然后解压tar -xzvf

然后执行./config

编译make -j4

安装make install

测试openssl version -a

如果报错

搜索动态库路径find / -name libcrypto.so

然后将搜索到的路径放到/etc/ld.so.conf里:vim /etc/ld.so.conf
然后生效:sudo ldconfig

再次测试:openssl version -a

通过,此时就可以编译客户端的程序了

over

服务端

服务端主要繁琐在数据库的配置,如果没有配置过数据库,那真是要死要活,这里我原本打算直接在linux里安装oracle,但是搜了一下安装过程,简直要命,然后我就想到了docker。

docker安装oracle

docker安装oracle我是参考的这两个教程:
https://blog.csdn.net/momo1938/article/details/100514093
https://blog.csdn.net/m0_57179014/article/details/120182269
但并不能解决100%的问题。

  • 安装docker和启动docker

sudo apt install docker.io
systemctl start docker

加入开机自启:systemctl enable docker

  • 安装oracle11g

sudo docker pull registry.cn-hangzhou.aliyuncs.com/helowin/oracle_11g

> sudo docker run -d -p 1521:1521 --name oracle registry.cn-hangzhou.aliyuncs.com/helowin/oracle_11g

启动容器sudo docker start oracle

进入容器镜像sudo docker exec -it oracle bash

  • 配置环境变量

切换root权限:su root

密码是:helowin

这里默认进去是oracle的用户,这个用户的密码我不知道,我是通过root用户去修改用户的密码的passwd oracle

vi /etc/profile

下面的SID这个不能错

export ORACLE_HOME=/home/oracle/app/oracle/product/11.2.0/dbhome_2
export ORACLE_SID=helowin 
export PATH=$ORACLEHOME/bin:PATH

保存wq!后执行source /etc/profile

切回oraclesu - oracle

  • 进入数据库,创建用户,修改配置

sqlplus / as sysdba

create user SECMNG identified by SECMNG; 创建内部管理员账号密码;
grant resource,connect,dba to SECMNG; 将dba权限授权给内部管理员账号和密码;
ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED; 设置密码永不过期:
alter system set processes=1000 scope=spfile; 修改数据库最大连接数据;

修改后

conn /as sysdba;--保存数据库
shutdown immediate; --关闭数据库
startup; --启动数据库
show user;

配置数据库客户端

如上,数据库服务器我们已经安装和配置好了,接下来就是要配置一下服务器的客户端

那么我们这个工程的服务端其实就是作为数据库的客户端(很绕),所以我们需要配置一下这个客户端的环境

我们要用到的就是这个Oracle Instant Client

从官网中(要注册才能下载)
https://www.oracle.com/cn/database/technologies/instant-client/linux-x86-64-downloads.html

下载三个文件
instantclient-basic-linux.x64-11.2.0.4.0.zip
instantclient-sdk-linux.x64-11.2.0.4.0.zip
instantclient-sqlplus-linux.x64-11.2.0.4.0.zip

拷贝到opt目录底下(决定了下面环境变量的配置目录)

做两个软连接

ln -s libclntsh.so.11.1 libclntsh.so
ln -s libocci.so.11.1 libocci.so

在根目录下新建两级文件夹/network/admin
创建文件tnsnames.ora

写入

helowin =
(DESCRIPTION =
 (ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521))
 (CONNECT_DATA =
  (SERVER = DEDICATED)
  (SERVICE_NAME = orcl)
 )
)

配置:sudo vim /etc/profile

export ORACLE_SID=helowin
# OCCI_HOME
export OCCI_HOME=/opt/instantclient_11_2
export OCCI_INCLUDE_DIR=$OCCI_HOME/sdk/include
export OCCI_LIBRARY_PATH=$OCCI_HOME
export LD_LIBRARY_PATH=$OCCI_HOME:$OCCI_LIBRARY_PATH
# 程序编译时搜索的库目录
export LIBRARY_PATH=$LIBRARY_PATH:$OCCI_LIBRARY_PATH
# 程序编译时搜索的头文件目录
export CPLUS_INCLUDE_PATH=$CPLUS_INCLUDE_PATH:$OCCI_INCLUDE_DIR
export PATH=$OCCI_HOME:$PATH
export TNS_ADMIN=$OCCI_HOME/network/admin


生效:source /etc/profile

验证:执行sqlplus

报错:缺少libaio.so

sqlplus: error while loading sharedlibraries: libaio.so.1: cannot open shared object file: No such file ordirectory

安装:sudo apt-get install libaio*

再次验证sqlplus

跳出登录界面即成功?只成功了一半。。。接下来才是噩梦的开始

上面跟着做基本上能规避掉一些问题,我再强调一下有哪些点

第一:配置环境变量的时候export ORACLE_SID=helowin这个双方不能少,docker里和本机里都要配置
第二:本机里的tnsnames.ora第一行是实例名,这个不能瞎写,我们这里是helowin
如何查询:通过docker进入到数据库sqlplus / as sysdba,输入select instance_name from v$instance;可以查到,这里要一致

INSTANCE_NAME
----------------
helowin

第三:上面两个软连接不要忘了,不然make编译时就会报错各种undefine

ln -s libclntsh.so.11.1 libclntsh.so
ln -s libocci.so.11.1 libocci.so

最后一个就是终极问题了,上面的做完之后,应该可以make,然后执行之后,会报错

 ORA-24960: the attribute  OCI_ATTR_USERNAME is greater than the maximum allowable length of 255

最后查到了这两篇文章
https://www.coder.work/article/7822497
https://stackoverflow.com/questions/42890553/ubuntu-ora-24960-the-attribute-oci-attr-username-is-greater-than-the-maximum-al

因为occi需要g++版本低于4.8,然后我尝试了获取4.8版本的g++,但是包管理说找不到(shit!我还fq更新了一下sudo add-apt-repository ppa:ubuntu-toolchain-r/test,还是找不到)
然后最终我在stackflow里看到了这句,Also help to use -D_GLIBCXX_USE_CXX11_ABI=0 flag.(stackflow yyds)

然后加进了makefile

DEFINE=-D_GLIBCXX_USE_CXX11_ABI=0

至此,基本上就能跑通了。

完结

上面的记述可能有点混乱,没办法,这是我跑通之后回忆的,前后可能会比较乱,望谅解,如果碰到问题,可以试着从我上面总结的几个问题中找找解决方法。

标签:教程,sudo,金融类,export,OCCI,oracle,PATH,docker,黑马
From: https://www.cnblogs.com/staraire/p/17665984.html

相关文章

  • 史上最全的Android教程安卓开发从基础入门到精通
    前言这几年老是有人在问,Android凉了没?Android开发还有没有发展前景?Android开发还值得入门吗?等等Android出现前几年的发展,前几年需求多,大量新的App项目,大小公司都缺Android开发人员,属于供不应求的状态。随着几年发展,这些年Android开发从业人员确实在增多,科班出身和培训出身的人越来......
  • 无涯教程-Android - Activity
    Activity代表具有用户界面的单个屏幕,就像Java的窗口或框架一样。AndroidActivity是ContextThemeWrapper类的子类。如果您使用过C,C++或Java编程语言,那么您一定已经看到您的程序从main()函数开始。与之非常相似,Android系统以Activity来启动其程序,该程序以对onCreate()回调方......
  • Redis 教程 --- 高级
    Redis数据备份与恢复Redis SAVE 命令用于创建当前数据库的备份。 语法redisSave命令基本语法如下:redis127.0.0.1:6379>SAVE 实例redis127.0.0.1:6379>SAVEOK该命令将在 redis 安装目录中创建dump.rdb文件。 恢复数据如果需要恢复数据,只需将备份文件(dump.rdb)移......
  • 无涯教程-Android - Resources
    您还可以使用许多其他项来构建良好的Android应用程序,除了为应用程序编码外,您还需要处理其他各种资源,如代码所使用的静态内容,如位图,颜色,布局定义,用户界面字符串,动画指令等,这些资源始终分别保存在项目res/目录下的各个子目录中。本教程将向您说明如何组织应用程序资源,指定替代资......
  • Figma怎么导出源文件,超详细教程来了
    Figma怎么导出源文件,超详细教程来了要说近几年话题最多的界面设计软件,Figma当之无愧。用一句话去定义Figma,它是一款基于浏览器的全能型设计工具。Figma允许设计师、开发者和其他团队成员无论身在何处,都可以共同协作创建和编辑设计。但随着目前设计工具的增多,包括Sketch、AdobeXD、......
  • 无涯教程-Android - 应用组件
    应用程序组件是Android应用程序的基本组成部分,这些组件需要在应用程序清单文件AndroidManifest.xml注册,该文件描述了应用程序的每个组件以及它们如何交互。Android应用程序可以使用以下四个主要组件-Sr.NoComponents&描述1Activities它们指示UI,并处理用户与智能手机......
  • 实操教程 | 触发器实现 Apache DolphinScheduler 失败钉钉自动告警
    作者|sqlboy-yuzhenc背景介绍在实际应用中,我们经常需要将特定的任务通知给特定的人,虽然ApacheDolphinScheduler在安全中心提供了告警组和告警实例,但是配置起来相对复杂,并且还需要在定时调度时指定告警组。通过这篇文章,你将学到一个简单的方法,无需任何配置,只需要在用户表(t_......
  • 教程更新 | RK3568驱动指南第六篇-平台总线
     《iTOP-RK3568开发板驱动开发指南》更新,本次更新内容对应的是驱动(第六期_平台总线_全新升级)视频,后续资料会不断更新,不断完善,帮助用户快速入门,大大提升研发速度。     ✦第一篇驱动基础 第1章前言 1.1学习方法 1.2基础准备 第2章你好!内核源码 2......
  • C#图解教程笔记 - Chapter1 C#和.NET框架
    0摘要CLR,BCL,FCL,DLL,CIL,JIT,CLI,CTS,CLS1在.NET之前20世纪90年代末,使用微软平台的Windows编程分化成许多分支。如:VisualBasic(VB)C或C++其他相关技术:Win32APIMFCCOM所有这些编程技术有一个缺点,就是它们主要针对桌面程序而不是互联网进行开发。......
  • 无涯教程-Android - 环境设置
    您可以从Oracle的Java网站下载最新版本的JavaJDK-JavaSE下载,您将在下载的文件中找到有关安装JDK的说明,按照给定的说明安装和配置安装程序。最后,将PATH和JAVA_HOME环境变量设置为引用包含java和javac的目录,通常分别是java_install_dir/bin和java_install_dir。如果您正......