记录一次大创项目配置服务器的心得
这是一篇记录配置服务器环境的文章(针对Python项目)(保姆级教程)
我只能说配置服务器真的是太简单了,有手就行
一:准备好必要文件
文件如下:
- Dockerfile
- 项目代码
- requirements.txt
如图:
你需要先在windows系统下建立好这三个文件,然后迁移到linux服务器上,接着才能运行
下面我将介绍如何建立Dockerfile以及requirements.txt
1.1 requirements.txt创建
我在网上看了很多方法,有的用pip freeze > 命令的,但是不好,我看了几个工具,觉得pipreqs是比较容易且不错的。
- 安装pipreqs
可以直接通过pip
来安装pipreqs
,安装命令如下:
pip install pipreqs
- 使用pipreqs
命令如下:
pipreqs ./ --encoding=utf-8
注意需要进入到项目中运行
然后就创建好了requirements.txt
1.2 Dockerfile创建
先看一下大致内容
FROM python:3.8
# 添加当前文件到code目录下
ADD . /code
# 切换目录
WORKDIR /code
# 安装依赖
RUN pip3 install -r requirements.txt -i https://mirrors.aliyun.com/pypi/simple/
# 切换到项目目录
WORKDIR /code/feature_extract
# 项目运行命令
CMD ["bash", "run.sh"]
创建过程如下:
- 在Windows右键创建Dockerfile,不需要后缀名
- 编写Dockerfile,完毕
咳咳,其实就这么简单,不过需要说一下Dockerfile里面的内容。
FROM python3.8
Dockerfile中的一个非常重要的命令,作用是指定一个基础镜像来进行构建流程。这里我们选择Python3.8即可,根据自己项目来ADD . /code
这是说把当前你所在路径下的所有文件添加到docker容器中的code目录下WORKDIR /code
这是切换容器的目录,因为需要在code目录下执行环境依赖安装(requirements.txt在该目录下,我们ADD就把我们创建的三个文件放过来了)RUN pip3 install -r requirements.txt -i https://mirrors.aliyun.com/pypi/simple/
安装依赖不说了WORKDIR /code/feature_extract
这里是切换到我们的代码文件目录下,因为需要运行我们的run.sh脚本文件来启动我们的Python项目CMD ["bash", "run.sh"]
执行脚本文件,因为我们的python项目需要跑多个.py文件,所以统一写到一个.sh脚本中。
run.sh内容根据自己项目逻辑写即可,本次项目对应的如下,详情请看我的Readme.md文档
nohup python3.8 generate_static_feature_csv.py --screen-data 1
wait
nohup python3.8 1disasseble.py
wait
nohup python3.8 2bytecode_extract.py
wait
nohup python3.8 3top500_n_gram_test.py
wait
nohup python3.8 top_intent_test.py
wait
nohup python3.8 4ngram_vec_test.py
wait
nohup python3.8 generate_static_feature_csv.py --screen-data 0
wait
nohup python3.8 merge_csv.py
wait
cat ./nohup.out# just keep this script running
while [[ true ]]; dosleep 1
done
wait:等待上一个命令运行结束才开始,而并非并行运行py文件。
最后一个无限循环的作用:使容器一直运行,不停下,以便后续操作。
二:创建Docker容器
首先将文件移到linux服务器下的某个地方
- 构建镜像,命令如下
docker build -t <name> .
name是自己创建的镜像名字,具体的输出过程就不附上来了
- 可以使用docker images查看自己所创建的镜像
- 启动容器,命令如下
docker run -it --name <name> Repname
–name是指定一个容器名字,不然每次docker run都会创建一个新的容器,不好。 Repname是你的镜像名字,也就是前面创建的name。
- 使用docker ps -a可以发现我们刚才启动的容器已经Exited了,所以我们需要重新启动它,命令如下:
docker start ContainerName
ContainerName是上一个命令创建的容器名字
- 启动后,该容器便会一直运行,docker ps 可以看到。
- 这样其实Docker容器便建立完成了,然后针对我们的项目需要添加一些东西。
三:向docker容器中添加我们的ApkTool、ApkTool.jar
这次我们需要到容器内部进行操作,命令如下:
docker exec -it ContainerName /bin/bash
进入后,ls查看文件如下:
[fangzy-stu@70 feature_extract]$ docker exec -it droidfeature /bin/bash
root@dd0a2477c0fe:/code/feature_extract# ls
1disasseble.py 3top500_n_gram_test.py README.md apktool dataset
infrastructure nohup.out permission_list2.txt requirements.txt
top_intent_test.py 2bytecode_extract.py 4ngram_vec_test.py __pycache__
apktool.jar generate_static_feature_csv.py merge_csv.py
permission_list.txt permission_list3.txt run.sh utils.py
可以看到我们现在已经在/code/feature_extract目录下了,跟Dockerfile中WORKDIR命令对应,可以自行查看docker容器根目录的情况。
3.1 更新apt-get
命令:apt-get update
3.2 安装vim
命令:apt-get install vim
3.3 安装java环境(ApkTool需要)
首先需要找到linux的java安装包,去官网 找,注意需要复制验证过后浏览器弹出下载窗口的链接
wget <link>
mkdir /usr/local/java
tar -zxvf jdk-8u301-linux-x64.tar.gz -C /usr/local/java
3.4 设置java环境变量
vim /etc/profile
在末尾添加
export JAVA_HOME=/usr/local/java/jdk1.8.0_301
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH
使环境变量生效
source /etc/profile
添加软链接
ln -s /usr/local/java/jdk1.8.0_301/bin/java /usr/bin/java
检查
java -version
3.5 安装ApkTool (当然也可以自己手动添加已下好的ApkTool,下面是wget来的)
ApkTool官网
wget https://raw.githubusercontent.com/iBotPeaches/Apktool/master/scripts/linux/apktool -O /usr/local/bin/apktool chmod a+x /usr/local/bin/apktoolwget https://bitbucket.org/iBotPeaches/apktool/downloads/apktool_2.6.0.jarmv apktool_2.6.0.jar /usr/local/bin/apktool.jar
检查
apktool
四:一些其他注意事项
在代码文件中,即.py文件,关于路径的变量:
- 将
\\
换为/
- 当前路径不使用
./
,直接写文件即可,例:./dataset/malware
——》dataset/malware
五:如此完美的教程,应该不会出啥大问题!
记录一次大创项目配置服务器的心得相关推荐
- vscode项目配置服务器,vs code配置服务器
vs code配置服务器 内容精选 换一换 目标服务器已安装操作系统,并且处于联网状态.目标服务器已安装鲲鹏编译插件. 目标服务器已安装操作系统,并且处于联网状态.目标服务器已安装鲲鹏编译插件. vs ...
- 实验记录 |6/3 somatic.al配置服务器环境
6/3(8:40) 之前没有安装Varscan.现在检索安装. 下载Varscan的安装包:https://sourceforge.net/projects/varscan/files/VarScan ...
- 记录一次react项目配置过程
1.为什么要配置react而不是脚手架 因为要知其然,最好还要知其所以然! 2.配置对象 webpack webpack-dev-server babel eslint 3.配置过程 1.webpac ...
- 项目jetty服务器,maven项目配置Jetty服务器
org.mortbay.jetty jetty-maven-plugin 8.1.7.v20120910 5 /bfc-loms 8080 500000 主要在maven的pom.xml里增加如上配置 ...
- 无法在web服务器上启动调试 web服务器未能找到,无法在Web服务器上启动调试。未将项目配置为进行调试...
无法在Web服务器上启动调试.未将项目配置为进行调试 更新时间:2006年10月06日 00:00:00 作者: 第一种:如果你使用的是WinXP或者Win2kPro版的系统,你不会出现这个问题, ...
- 小程序初始化服务器数据,微信小程序 项目实战(一)生命周期 配置服务器信息 splash启动页...
步骤一:小程序 生命周期 //app.js App({ onLaunch: function () { //当小程序初始化完成时,会触发onLaunch(全局只触发一次) }, onShow: fun ...
- JavaWeb项目部署服务器并配置ssl证书教程
JavaWeb项目部署服务器并配置ssl证书教程 相信大家学了1.2年的编程后可能已经学会了自己写web项目,但是也只能在自己本地玩耍,十分的打击学习热情(主要是没办法跟朋友装杯).本文是一篇较为详细 ...
- 大创项目(记录自己的教训)
2019年11月17日 经过4个月的奋斗,老实说这期间也偷懒过,这是一篇没有技术含量的文章哈,别吐槽哈,第一次做大创项目,是我的导师给的,非常好的一位老师,项目大概是检测水中ph和含氧量,然后通过一些 ...
- vue项目设置服务器地址,vue项目配置后端服务器地址
vue项目配置后端服务器地址 内容精选 换一换 查询负载均衡器状态树.可通过该接口查询负载均衡器关联的监听器.后端云服务器组.后端云服务器.健康检查.转发策略.转发规则的主要信息,了解负载均衡器下资源 ...
- c语言大创项目指导过程记录,“大创”项目经验分享讲座成功举办
(通讯员 卢嘉慧)3月18日晚,大学生创新创业系列指导讲座第二期"为你指点迷津"主题讲座成功举办.讲座邀请2020年结项并获得优秀的学生项目负责人李东敏和李鑫为同学们分享" ...
最新文章
- idea打开web项目之后一直闪烁
- TCP握手和传输的一次观察
- 关于外包团队的质量管理
- Ajax之Jquery封装使用举例2(Json和JsonArray处理)
- Boost智能指针——shared_ptr
- 面试 linux 进程通讯,【转】LINUX驱动的经典面试问题...
- windows改变php版本
- Python中List的复制(直接复制、浅拷贝、深拷贝)
- linux cache and buffer【转】
- mongodb第二篇文章~关于集群认证的那点事
- eq值 推荐算法_C++实现十种排序算法
- 【OpenCV】OpenCV实战从入门到精通图像的载入、显示与输出
- 作为面试官,我是怎么快速判断程序员能力的?
- 【菜鸟站长成长记】CuteFTP9 初步使用心得
- dubbo之failed to connect to server /xx.xx.xx.xx:20880 client-side timeout问题解决
- html5使用table制作表单
- 计算机显示器模糊,显示器模糊,我来教您电脑显示器模糊怎么办
- js打折 (批量计算9折 8折 7折
- 如何在unity上放置3d图片
- 手把手教你用Python爬中国电影票房数据