2020-10-20
在学习深度学习的时候,我们所找到的开源项目一般都是linux环境下运行的,且一般都需要计算机的性能较高。但直接在linux机器写代码和调试又不太方便,且高性能计算机可能属于多个人共用。这时候在windows下写程序+部署到服务器上运行是一个好的解决办法,但每次修改程序后都需要手动同步到服务器上,且使用命令行调试需要较好的编程基础。
在这里整理两个在自己电脑上写程序,让程序在服务器上运行的小技巧。(这里以python为例)
环境准备:
ubuntu或mac下默认有ssh,不需要额外安装;
windows由于文件权限问题,需要安装一套linux命令行工具。之前我一直是使用win10安装linux子系统(wsl),但是操作较为繁琐需要从子系统里把配置文件拷出来,后来发现安装Git客户端会自带一套MinGW,还不需要复杂的配置。
windows进入GIt官网下载安装包,一直点下一步全默认安装即可。附上最新的下载地址https://github.com/git-for-windows/git/releases/download/v2.29.0.windows.1/Git-2.29.0-64-bit.exe
安装完后再桌面右键,会有git选项
![1b3b4f3b36aa19a2dff295d30d856424.png](https://i-blog.csdnimg.cn/blog_migrate/38da93011e8dd3a8d8fbd9395c289cdb.png)
ssh生成秘钥、创建config配置文件
windows在桌面右键,打开Git Bash Here,mac或ubuntu打开Terminal终端
输入生成秘钥命令
ssh-keygen
按三次回车(这样就是默认生成位置、无密码)
秘钥就会自动创建,类似下图
![a8863221c44d7f03dc10655b573a9a32.png](https://i-blog.csdnimg.cn/blog_migrate/4c5094696704d82bbc6486e7acc110c3.png)
使用cd命令进入.ssh目录(windows在C:Users你的用户名.ssh,mac和ubuntu在~/.ssh)
创建一个config文件,没有后缀,将以下内容输入后
Host 自定义服务器名称
HostName 服务器IP地址
User 登录服务器的用户名
如
![575b43269a323ea6942b7678a4df6cc7.png](https://i-blog.csdnimg.cn/blog_migrate/db9f7fd53e0c5987da1a76253e5310c3.png)
然后,使用命令将本地公钥拷贝到服务器上(服务器需先开启ssh服务)
ssh-copy-id -i id_rsa.pub 903
这里需要将903换成你的自定义服务器名称
第一次连接会提示一些信息,输入yes后回车
然后需要输入服务器登陆密码,一切正常的话控制台会打印出以下类似信息
![480fed33b429e41e8ee0b9eb84fffb2a.png](https://i-blog.csdnimg.cn/blog_migrate/ce8798bb0a57bac9d715634ce5ce0f47.jpeg)
准备工作完成,接下来开始配置环境(默认已有一台linux服务器且已安装好python环境)
ps:如果没有正常添加ssh key,需要手动在服务器的家目录下新建.ssh目录,在目录里创建authorized_keys文件,把id_rsa.pub的内容手动粘贴进去
方法一:VSCode + remote插件
在windows上通过浏览器下载安装VSCode(最新下载链接https://aka.ms/win32-x64-user-stable)
![e75a771f158ef7fab304d538d8605806.png](https://i-blog.csdnimg.cn/blog_migrate/2c77ad4075ba3fbf6a61eba3bdab23d1.png)
![0943daa2ea8695d3fd23e32331dd8d77.png](https://i-blog.csdnimg.cn/blog_migrate/1fb11712938e10c172e1a1db0889b506.png)
![07d15d762d6a8e99ac4be10e454df6b8.png](https://i-blog.csdnimg.cn/blog_migrate/dfd10a88bf60d061ebf674fde4a4ca84.jpeg)
![cf4afb640e40e0357641264541fc4de1.png](https://i-blog.csdnimg.cn/blog_migrate/b8793a5c6696962df206361078f1f806.png)
点击左侧扩展按钮,搜索ssh,安装第一个Remote-SSH,重启VSCode即可出现远程登录插件的小标
点击设置按钮,选中刚才配置的config文件作为配置文件,左侧即可出现903(自定义的服务器名称)服务器的选项,点击903右侧的小按钮即可连接到服务器。
第一次登录选择平台,选linux
![0f5528a58a1c8c5c2deeda0c9306afe6.png](https://i-blog.csdnimg.cn/blog_migrate/f8937ddfb69de00ee018801be1f8638d.png)
登录到服务器的界面,点击open folder打开的就是服务器上的文件夹了
![d327951864faa4c0dbc708dc3a33c9a4.png](https://i-blog.csdnimg.cn/blog_migrate/19a48327eeed4778b35ac45f352c2c80.jpeg)
接下来就和VSCode在本地使用一样,安装python插件,写程序run debug等等,这里不再详细说明。
Mac和Ubuntu上的流程和windows一样。
方法二:Pycharm专业版使用Deployment
注:Pycharm社区版没有此项功能,学生和教师可以使用学校邮箱免费使用专业版(转个教程https://zhuanlan.zhihu.com/p/163521228,侵删),其他用户可以想想别的办法
……
使用pycharm专业版新建项目,interpreter选Existing interpreter,点击右边的三个小点
![bc7d8b931da670f91771aaf9b085cecf.png](https://i-blog.csdnimg.cn/blog_migrate/2f94d210e2c90044f430cc4b8720ae56.jpeg)
选中SSH Interpreter,Host里输入IP地址,Username输入登录用户名
![a32cdf3d3be86a3354f3f9e76edf3ec8.png](https://i-blog.csdnimg.cn/blog_migrate/0942a91cd6caf52db0eb256f00840fea.jpeg)
第一次连接会询问,选yes
![206757bc1715ea4acddafe84d732a81c.png](https://i-blog.csdnimg.cn/blog_migrate/18d9188cddabb0a206991021d3040734.png)
这里选择python解释器的路径,如果使用anaconda安装好了深度学习环境的同学记得改选一下路径(默认是/usr/bin/python,这里我改成了/home/lhf/anaconda3/envs/py36/bin/python),然后点击finish,配置完成,进入以下界面。Remote project location代表程序在服务器上的存放位置,可自行修改,点击create即可创建好项目
![47aab2b7674c66ecb9fe3488bf409915.png](https://i-blog.csdnimg.cn/blog_migrate/6beeb000dc71f80e11303cc7c08fcfcf.jpeg)
![2bae643106d97a5967fd0a4b21498243.png](https://i-blog.csdnimg.cn/blog_migrate/79857220265ef9c9f85ed33e470da67c.jpeg)
可以看到右下角的Python解释器已指定为服务器的python了,接下来就和正常使用pycharm一样,在写好程序后(项目为空的话无法上传),点击上方的Tools->Deployment->Upload……就能把本地项目部署到服务器上。(pycharm社区版没有Deployment功能)
![0f93807b68b14a43ea6337ce91bb0a43.png](https://i-blog.csdnimg.cn/blog_migrate/cdb52a079628196277481a38654a9497.jpeg)
上传后,右键运行,会发现程序是在服务器上运行的
![2bac2db608b4c4f9f704e2ad94fd8bc9.png](https://i-blog.csdnimg.cn/blog_migrate/4884bb71b39203f2703b2a2e5cf10015.jpeg)
Mac和ubuntu操作类似
(完)
整理不易,记得点赞噢~