如何将本地代码部署在阿里云服务器ECS上运行

  • 个人配置说明
  • 第一步 本地电脑配置
  • 第二步 服务器centos配置
  • 第三步 使代码在断开连接时也能运行
  • PS/几点细节

个人配置说明

语言:python3.7

IDE:pycharm

概况:一个大概九层的深度学习自定义神经网络,样本数量约1万个,在本地笔记本电脑上运行代码时,需要约5g内存,CPU使用率持续>95%,只要一运行代码,电脑强冷就自动启动,电脑风扇声音大到影响屋内其它人的正常工作;后来尝试采用在GPU上运行,但无奈一运行就报错,显示内存不够(我电脑显存2G,总内存8G)。因此在这种背景下,购买了阿里云ECS,在后面尝试把本地代码放在云服务器上运行的时候,也是中间遇到了许多坑,查了很多帖子和帮助,大部分都解决不了问题,只有零零散散几个是有用的,大概花了快两天才成功在云服务器上运行代码。

购买的阿里ECS配置:镜像Centos,内存8G,2vCPU,通用型g5

下面就不介绍如何在阿里云上购买ECS了,提示一点,购买ECS选配置的时候一定要根据自己实际情况去选择,包括镜像类型、内存大小、cpu种类(计算型、通用型、内存型)。我刚开始没认识到实际情况,买了一个windows镜像、2G内存、突发型实例的CPU,结果根本不行,后来也是升级换配置到 centos镜像、8G内存、通用型CPU。

第一步 本地电脑配置

这里默认大家都已经安装了python和pycharm。
1安装openssh
https://download.csdn/download/sinat_29891353/10679775
(这里我也是花了17个币下载的…)

2在pycharm上加入连接云服务器终端

不通过阿里云内嵌模块连接操作:
https://wwwblogs/shujuxiong/p/9032474.html

通过阿里云内嵌模块连接操作:
https://help.aliyun/document_detail/110246.html

第二步 服务器centos配置

我们购买的服务器是很原始的,只有一些基本的东西,比如阿里云centos系统自带的pytthon是2.7的,很多包和环境都不具备(这一点也是深坑,导致我部署过程中很多次运行报错)

1 安装python3.7.2
按此操作即可
(这里建议大家保留python和python3)

2 安装pip3

2.1 安装setuptools

wget https://pypi.python/packages/source/s/setuptools/setuptools-19.6.tar.gz#md5=c607dd118eae682c44ed146367a17e26

tar -zxvf setuptools-19.6.tar.gz

cd setuptools-19.6

python3 setup.py build

python3 setup.py install

2.2 安装pip3

wget --no-check-certificate https://pypi.python/packages/source/p/pip/pip-8.0.2.tar.gz#md5=3a73c4188f8dbad6a1e6f6d44d117eeb

tar -zxvf pip-8.0.2.tar.gz 
cd pip-8.0.2 
python setup.py build 
sudo python setup.py install

2.3 这里一定要在python3根目录下,运行下面两行,要不然虽然安装了pip3,但是linux系统还是找不到

make
make install

2.4 设置软链接

ln -s /usr/local/python3/bin/pip3 /usr/bin/pip3

3 安装各种包

第三步 使代码在断开连接时也能运行

这里推荐使用screen命令。

1 在断开连接之前先保存代码运行完的结果,用以下命令保存所有变量

filename= 'globalsave.pkl'
dill.dump_session(filename)

2 采用screen命令

按此操作进行即可

PS/几点细节

1 linux系统常用命令如下:
https://wwwblogs/shujuxiong/p/9032474.html

2 以上安装过程中,会出现各种错误,会出现各种提示说没有XX模块,这是由于阿里云的centos系统只有最基本的配置,很多包、模块、环境都没有,这时候就需要借助yum命令把这些配置好,才能将上述过程继续下去。但是当我们将python3覆盖python,pip3覆盖pip时,yum命令就会失效,所以建议大家在服务器上安装python3.7和pip3时,不要覆盖原来的python2和pip。

常见需要提前配置的包和环境有:

yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel
yum install gcc -y
yum install openssl-devel   -y
yum install zlib-devel  -y
yum install openssl openssl-devel -y 

可能还有些包这里没列举全,出现什么错误比如(ImportError: cannot import name ‘HTTPSHandler’ from ‘urllib.request’ (/usr/local/python3/lib/python3),大家百度一下,就有需要安装哪些包的帮助。

3 这里强调一点,安装完包以后,如果还有问题,一定要在python或python3源目录下编译一下(就是之前的make&&make install两行代码)

4 读懂本文和成功在云服务器运行代码,需要少许linux系统的基本操作常识。

更多推荐

如何将本地代码部署在阿里云服务器ECS上运行