这是一篇记录配置服务器环境的文章(针对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文件,关于路径的变量:

  1. \\换为/
  2. 当前路径不使用./,直接写文件即可,例:./dataset/malware ——》 dataset/malware

五:如此完美的教程,应该不会出啥大问题!

记录一次大创项目配置服务器的心得相关推荐

  1. vscode项目配置服务器,vs code配置服务器

    vs code配置服务器 内容精选 换一换 目标服务器已安装操作系统,并且处于联网状态.目标服务器已安装鲲鹏编译插件. 目标服务器已安装操作系统,并且处于联网状态.目标服务器已安装鲲鹏编译插件. vs ...

  2. 实验记录 |6/3 somatic.al配置服务器环境

    6/3(8:40) 之前没有安装Varscan.现在检索安装. 下载Varscan的安装包:https://sourceforge.net/projects/varscan/files/VarScan ...

  3. 记录一次react项目配置过程

    1.为什么要配置react而不是脚手架 因为要知其然,最好还要知其所以然! 2.配置对象 webpack webpack-dev-server babel eslint 3.配置过程 1.webpac ...

  4. 项目jetty服务器,maven项目配置Jetty服务器

    org.mortbay.jetty jetty-maven-plugin 8.1.7.v20120910 5 /bfc-loms 8080 500000 主要在maven的pom.xml里增加如上配置 ...

  5. 无法在web服务器上启动调试 web服务器未能找到,无法在Web服务器上启动调试。未将项目配置为进行调试...

    无法在Web服务器上启动调试.未将项目配置为进行调试 更新时间:2006年10月06日 00:00:00   作者: 第一种:如果你使用的是WinXP或者Win2kPro版的系统,你不会出现这个问题, ...

  6. 小程序初始化服务器数据,微信小程序 项目实战(一)生命周期 配置服务器信息 splash启动页...

    步骤一:小程序 生命周期 //app.js App({ onLaunch: function () { //当小程序初始化完成时,会触发onLaunch(全局只触发一次) }, onShow: fun ...

  7. JavaWeb项目部署服务器并配置ssl证书教程

    JavaWeb项目部署服务器并配置ssl证书教程 相信大家学了1.2年的编程后可能已经学会了自己写web项目,但是也只能在自己本地玩耍,十分的打击学习热情(主要是没办法跟朋友装杯).本文是一篇较为详细 ...

  8. 大创项目(记录自己的教训)

    2019年11月17日 经过4个月的奋斗,老实说这期间也偷懒过,这是一篇没有技术含量的文章哈,别吐槽哈,第一次做大创项目,是我的导师给的,非常好的一位老师,项目大概是检测水中ph和含氧量,然后通过一些 ...

  9. vue项目设置服务器地址,vue项目配置后端服务器地址

    vue项目配置后端服务器地址 内容精选 换一换 查询负载均衡器状态树.可通过该接口查询负载均衡器关联的监听器.后端云服务器组.后端云服务器.健康检查.转发策略.转发规则的主要信息,了解负载均衡器下资源 ...

  10. c语言大创项目指导过程记录,“大创”项目经验分享讲座成功举办

    (通讯员 卢嘉慧)3月18日晚,大学生创新创业系列指导讲座第二期"为你指点迷津"主题讲座成功举办.讲座邀请2020年结项并获得优秀的学生项目负责人李东敏和李鑫为同学们分享" ...

最新文章

  1. idea打开web项目之后一直闪烁
  2. TCP握手和传输的一次观察
  3. 关于外包团队的质量管理
  4. Ajax之Jquery封装使用举例2(Json和JsonArray处理)
  5. Boost智能指针——shared_ptr
  6. 面试 linux 进程通讯,【转】LINUX驱动的经典面试问题...
  7. windows改变php版本
  8. Python中List的复制(直接复制、浅拷贝、深拷贝)
  9. linux cache and buffer【转】
  10. mongodb第二篇文章~关于集群认证的那点事
  11. eq值 推荐算法_C++实现十种排序算法
  12. 【OpenCV】OpenCV实战从入门到精通图像的载入、显示与输出
  13. 作为面试官,我是怎么快速判断程序员能力的?
  14. 【菜鸟站长成长记】CuteFTP9 初步使用心得
  15. dubbo之failed to connect to server /xx.xx.xx.xx:20880 client-side timeout问题解决
  16. html5使用table制作表单
  17. 计算机显示器模糊,显示器模糊,我来教您电脑显示器模糊怎么办
  18. js打折 (批量计算9折 8折 7折
  19. 如何在unity上放置3d图片
  20. 手把手教你用Python爬中国电影票房数据

热门文章

  1. 关于IDEA无法使用搜狗输入法输入中文问题
  2. div网页布局(做一个简单网页界面为例)
  3. 图论法求解经典面试题:NxN匹马,N个赛道,求最快前M匹马,至少需要几次比赛?
  4. 30个很棒的Photoshop技巧和窍门可帮助您提高计算机图形技能
  5. 全长扩增子:是时候展示真正的技术了
  6. 下午:准备考试——SOA解决方案架构师认证
  7. editplus怎么运行java程序
  8. 梯度消失和梯度爆炸原因及其解决方案
  9. PDF怎么拆分页面,PDF拆分页面的方法
  10. PxCook 高效智能的研发设计工具。点击设计稿即可生成前端代码的智能标注切图软件