thrift(指定版本0.11.0)的安装,算法中间件的部署

22 篇文章 0 订阅
4 篇文章 0 订阅

目录

1.linux命令

2.关于用户权限限制

3. thrift的环境的安装(指定版本)

3.1 需要文件下载到本地的命令

3.2 相关依赖

3.2.1 yum和rpm知识

3.3 解压缩tar.gz

3.3.1 tar -zxvf 与 gunzip的区别

3.4  运行安装脚本

3.5 测试是否成功

3.6 脚本依然报错

3.6.1 安装easy install

3.6.2 使用easy_install依然还是提醒报错

3.6.3 出现Cannot assign requested address

3.6.4 启动中查看端口netstat -ntlp

3.6.5 脚本中的ip设置(使用*)

4. 端口开启相关

4.1 查看本地端口开启情况

4.2 查看所有netstat -an | grep 4888  为4888端口的内容

4.3 lsof -i 可以查看所有的端口

4.4 结论(滴滴云有外层的防火墙)

5 端口已经能访问通,yolo3模型加载成功的后续

5.1 使用crt进行文件下载

5.2 使用测试图片进行测试

5.3 出现 E tensorflow/stream_executor/cuda/cuda_driver.cc:397] failed call to cuInit: CUDA_ERROR_NO_DEVICE

5.4 linux写入文件,并将python输出的日志写入其中

5.5 在linux终端退出Python的方法

5.6 不中断服务的运行python

6. 简略版快速总结安装(可以直接进行快速安装)


1.linux命令

linux命令需要记下来的

抓取所有的端口号,然后就可以指定一个thrift RPC的服务端口号了

cat /etc/services   

执行python脚本

python xxx.py

管道命令 |

管道命令,是指 | 的左边运行结果 是|右边的 输入条件或者范围。
如:history | grep date
指从history这条命令运行的结果中 显示 包含有 “date” 的命令

rpm -qa命令

q表示查询query

a 表示all

rpm -qa:在所有包中执行查询列出所有被安装的rpm package 

rpm 执行安装包。这个命令可以看linux中有没有安装某个软件

并非系统命令,需要依赖于软件安装。

查看系统版本

cat /proc/version 或者 uname -a

结果:Linux 10-255-20-183 4.4.0-***-generic #187-Ubuntu SMP Thu Aug 1 16:28:06 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux(脱敏)

2.关于用户权限限制

毕竟测试调用的话,不能调用那么勤快

否则服务器有可能会崩掉。

3. thrift的环境的安装(指定版本)

首先环境的安装在远程服务器上面。

3.1 需要文件下载到本地的命令

我所需要的thrift环境是0.11.0

http://mirrors.hust.edu.cn/apache/thrift/0.11.0/thrift-0.11.0.tar.gz

如使用命令行下载的话~

curl -o thrift-0.11.0.tar.gz http://mirrors.hust.edu.cn/apache/thrift/0.11.0/thrift-0.11.0.tar.gz

嗯,使用强大的curl命令 专门针对HTTP请求

附送:

Linux curl 命令下载文件

里面提供了很多种多样的命令

https://www.cnblogs.com/hujiapeng/p/8470099.html

当然下载东西也可以用 wget + url这种组合

3.2 相关依赖

下述命令是安装thrift的依赖(网上传的一种,因为执行失败,所以被我PASS)

apt-get install automake bison flex g++ git libboost1.55 libevent-dev libssl-dev libtool make pkg-config

 但是执行的结果:

E: Could not open lock file /var/lib/dpkg/lock-frontend - open (13: Permission denied)
E: Unable to acquire the dpkg frontend lock (/var/lib/dpkg/lock-frontend), are you root?

有点奇怪。可能是权限上的问题

另外一种是(适用于centos,redhat是收费版,centos是免费版)

sudo yum install libboost-dev libboost-test-dev libboost-program-options-dev libevent-dev automake libtool flex bison pkg-config g++ libssl-dev

查看本机有没有装yum

rpm -qa |  grep yum

但是我本机是乌班图,所以应该使用apt命令,所以乌班图使用的依赖如下。(安装成功)

sudo apt-get install libboost-dev libboost-test-dev libboost-program-options-dev libevent-dev automake libtool flex bison pkg-config g++ libssl-dev

3.2.1 yum和rpm知识

rpm有啥用?(但是yum其实是红帽才会用的,ubuntu一般不使用yum它是基于debian系统的。有自己的包管理系统apt)

所以这里我犯了傻,乌班图根本没必要去装yum使用apt就好了。

rpm是由红帽公司开发的软件包管理方式,使用rpm我们可以方便的进行软件的安装、查询、卸载、升级等工作。但是rpm软件包之间的依赖性问题往往会很繁琐,尤其是软件由多个rpm包组成时。rpm不能根据依赖关系自动安装依赖包

yum(全称为 Yellow dog Updater, Modified)是一个在Fedora和RedHat以及SUSE中的Shell前端软件包管理器。基於RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软体包,无须繁琐地一次次下载、安装。yum提供了查找、安装、删除某一个、一组甚至全部软件包的命令,而且命令简洁而又好记。

转自:https://zhidao.baidu.com/question/1690520549857824868.html

3.3 解压缩tar.gz

tar -zxvf thrift-0.11.0.tar.gz 

3.3.1 tar -zxvf 与 gunzip的区别

gunzip解压(解压gzip压缩的文件)

语法:gunzip filename

gunzip解压后,原压缩文件也会消失。 

有时候在解压时,可能会遇到unknown suffix (不知文件的后缀)这个错误,这代表我们使用的解压命令不对。此时可以使用file命令

file filename

查看一下文件的类型,以便选择正确的解压命令。

tar -zxvf 解压缩是不会删掉源文件的。

zxvf代表进行gzip属性的文件解压缩并且显示全过程

tar

-c: 建立压缩档案
-x:解压
-t:查看内容
-r:向压缩归档文件末尾追加文件
-u:更新原压缩包中的文件

这五个是独立的命令,压缩解压都要用到其中一个,可以和别的命令连用但只能用其中一个。下面的参数是根据需要在压缩或解压档案时可选的。

-z:有gzip属性的
-j:有bz2属性的
-Z:有compress属性的
-v:显示所有过程
-O:将文件解开到标准输出

下面的参数-f是必须的

-f: 使用档案名字,切记,这个参数是最后一个参数,后面只能接档案名。

 更多tar命令看:https://www.cnblogs.com/manong--/p/8012324.html

3.4  运行安装脚本

1) ./configure

这个是运行软件根目录下面的configure脚本

接下来使用

2) make

进行编译,PS:编译器还蛮长的,

最后执行

3)  sudo make install

3.5 测试是否成功

thrift -version

显示:

Thrift version 0.11.0

3.6 脚本依然报错

Traceback (most recent call last):
  File "DetectHandle.py", line 12, in <module>
    from thrift.transport import TSocket
ModuleNotFoundError: No module named 'thrift'

因为py脚本中有

from thrift.transport import TSocket
from thrift.transport import TTransport
from thrift.protocol import TBinaryProtocol
from thrift.server import TServer

但是可能原因是我这个服务器版本的python并没有thrift模块,使用上述的安装了thrift还是不行。

3.6.1 安装easy install

第一步:(注意这边一定要有https 否则会出现ERROR 403: SSL is required.)

wget https://pypi.python.org/packages/source/s/setuptools/setuptools-0.6c11.tar.gz#md5=7df2a529a074f613b509fb44feefe74e
--2019-09-09 15:40:53--  https://pypi.python.org/packages/source/s/setuptools/setuptools-0.6c11.tar.gz

 然后发现:

报错:

NameError: name 'execfile' is not defined因为python3.7中将这个execfile移除了。

其实python3.7中已经有了pip和easy_install = =

所以直接执行easy_install thrift

得到结果:

Processing dependencies for thrift
Finished processing dependencies for thrift

3.6.2 使用easy_install依然还是提醒报错

pip install thrift  (这个感觉上是安装python的thrift组件,所以是需要自己下载thrift安装的)

但是已经做了上面的步骤,提示:

Requirement already satisfied: thrift in /home/dc2-user/anaconda3/lib/python3.7/site-packages/thrift-0.11.0-py3.7-linux-x86_64.egg (0.11.0)
Requirement already satisfied: six>=1.7.2 in /home/dc2-user/anaconda3/lib/python3.7/site-packages (from thrift) (1.12.0)

嗯,在使用conda activate yolo3之后;

激活了yolo然后再pip install thrift

就可以使用了

3.6.3 出现Cannot assign requested address

因为使用的是服务器的地址。

应该用的是本机的地址

用ipconfig查看一下。

 

3.6.4 启动中查看端口netstat -ntlp

Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      -               
tcp        0      0 10.255.20.183:4888      0.0.0.0:*               LISTEN      14586/python    

3.6.5 脚本中的ip设置(使用*)

if __name__ == '__main__':
    handler = DetectHandler()
    processor = DetectImgRPC.Processor(handler)
    transport = TSocket.TServerSocket(host='*', port=4888)
    tfactory = TTransport.TBufferedTransportFactory()
    pfactory = TBinaryProtocol.TBinaryProtocolFactory()
    server = TServer.TSimpleServer(processor, transport, tfactory, pfactory)

    # You could do one of these for a multithreaded server
    server.serve()
    print ("success start")

然后这并没有结束,因为linux公网需要把这个端口进行开放。

4. 端口开启相关

4.1 查看本地端口开启情况

sudo ufw status

但是结果:
Status: inactive

4.2 查看所有netstat -an | grep 4888  为4888端口的内容

tcp        0      0 0.0.0.0:4888            0.0.0.0:*               LISTEN 

4.3 lsof -i 可以查看所有的端口

4.4 结论(滴滴云有外层的防火墙)

将滴滴云的安全组中的入方向和出方向的安全组中添加端口号。

其中0.0.0.0/0  这个IP代表全部开放!

5 端口已经能访问通,yolo3模型加载成功的后续

5.1 使用crt进行文件下载

使用sz + 文件名命令可以传输到windows

然后就可以在下载里面找了

5.2 使用测试图片进行测试

5.3 出现 E tensorflow/stream_executor/cuda/cuda_driver.cc:397] failed call to cuInit: CUDA_ERROR_NO_DEVICE

不过好像并没有影响

5.4 linux写入文件,并将python输出的日志写入其中

vi 文件名.txt

vi file.txt

键盘敲i,可以进入编辑模式,输入完内容后按ESC键,键盘输入:wq可以保存并退出

于是:

file_handle = open('python_log.txt', mode='w')
file_handle.write(time.asctime(time.localtime(time.time())) + ' 结果:' + res + ' \n')

这样简单地加上了Log

5.5 在linux终端退出Python的方法

Ctrl+D

 

5.6 不中断服务的运行python

在Linux服务器运行py文件时,有时会因为终端窗口的关闭而结束py文件的执行,这时候使用下面的命令运行py文件:

1

$nohup python filename.py &

命令解释:

nohup:

  不挂断的运行命令

  格式:nohup Command [ Arg … ] [ & ]

& :

  在后台运行

一般两个一起运行,执行的命令在中间。

 

运行的结果:

(yolo3) dc2-user@10-255-20-183:~/code/hngd$ nohup python DetectHandle.py  &
[1] 941
(yolo3) dc2-user@10-255-20-183:~/code/hngd$ nohup: ignoring input and appending output to 'nohup.out'

 忽略输入输出,将信息化信息记录到nohup.out文件中。

6. 简略版快速总结安装

第1步:

http://mirrors.hust.edu.cn/apache/thrift/0.11.0/thrift-0.11.0.tar.gz

解压安装:

1) ./configure

这个是运行软件根目录下面的configure脚本

接下来使用

2) make

进行编译,PS:编译器还蛮长的,

最后执行

3)  sudo make install

第2步:

pip install thrift

第3步(ubantu安装相关环境):

sudo apt-get install libboost-dev libboost-test-dev libboost-program-options-dev libevent-dev automake libtool flex bison pkg-config g++ libssl-dev

最后执行:

thrift -version

出现版本号则证明全部安装成功

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值