目录
3.6.3 出现Cannot assign requested address
4.2 查看所有netstat -an | grep 4888 为4888端口的内容
5.4 linux写入文件,并将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请求
附送:
里面提供了很多种多样的命令
当然下载东西也可以用 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:
不挂断的运行命令
格式: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
出现版本号则证明全部安装成功