最近要开始学习机器学习的相关内容,需要使用实验室的服务器来进行程序的调试,因此学习了服务器的一些使用方法。实验室服务器用的是ubuntu系统,我的电脑操作系统是macOS 10.14.2。
一开始的时候导师告诉我服务器只能使用局域网进行连接,这意味着每次都要去实验室里连上局域网才能进行代码的调试,所以尝试了下用内网穿透的方法,这样即可实现外网访问,不管在哪儿都可以进行连接。windows系统下可以使用xshell的隧道功能,这里需要知道服务器所在公网的ip地址,教程也有不少。但Mac上没有xshell,需要借助一些专门进行内网穿透的工具,我选择了natapp,一个月是9元,不算很贵,就先用着了。
使用方法很简单,首先我们要在服务器端安装natapp,大部分的64位系统是兼容32位的natapp的。因此直接下载32位的就行。
选择购买vip_1型隧道,第一次的话可以用免费隧道试试看,免费隧道缺点在于ip地址是随机分配的,且不定时强制更换,不是特别方便。
然后选择 隧道协议:TCP,远程端口自己选一个喜爱的数字就行,前提是没被别人注册掉。
购买完成后在我的隧道里就可以看到刚刚购买的隧道了,后面需要用到的是authtoken,可以直接在网页上复制。
接下来就是运行natapp了。这里假设我们将下载的natapp放入的目录是/usr/local/natapp/ 。我们进入到这个目录,并运行,粘贴上我们刚刚复制的authtoken。
cd /usr/local/natapp
./natapp -authtoken=xxxxx
看到Online就代表运行成功了:
Forwarding后面跟着的第一串(也就是涂掉那个)就是用于连接的ip地址和端口号。
当然,在这个情况下,我们把这个终端关掉后这个隧道就关闭了,因此我们需要在后台运行这个程序:
nohup ./natapp -authtoken=xxxx -log=stdout &
这样关掉终端后natapp也还是在运行,可以放心进行连接了。
如果需要关掉的话,使用以下语句即可:
(xxxxx为红圈中的数字)
ps -ef|grep natapp
kill -9 xxxxx
接下来在自己的电脑中打开终端用ssh连接就行。
ssh -p 端口号 用户名@ip地址
这样就实现了外网访问服务器。
首先我们要有anaconda
下载:
sudo wget https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/Anaconda3-5.0.1-Linux-x86_64.sh
安装:
sudo bash Anaconda3-5.0.1-Linux-x86_64.sh
安装过程中按着提示来,按回车或者输入yes。接下来就是等待安装完成。
conda list
测试下安装是否完成,若出现问题则继续进行以下步骤:
sudo vim /etc/environment
打开环境变量进行编辑,按a进入编辑模式,在末尾加入anaconda的安装目录
:/home/你的用户名/anaconda3/bin
然后按esc,输入 :wq 进行保存并退出,随后激活环境变量
source /etc/environment
这样就完成了anaconda的安装。
先用anaconda创建一个jupyter notebook运行的虚拟环境,便于进行各种包、库的版本管理
conda create -n my_env python=3
my_env是创建的虚拟环境名称,接下来激活它
source activate my_env
安装jupyter notebook:
conda install jupyter notebook
生成jupyter notebook的配置文件:
jupyter notebook --generate-config
打开配置文件:
vim /home/ubuntu/.jupyter/jupyter_notebook_config.py
在文件中找到以下两行并进行修改
c.NotebookApp.ip = ‘*’
c.NotebookApp.open_browser = False
修改完以后退出,这样就完成了配置。我们在终端中运行jupyter notebook
jupyter notebook
可以看到以下界面,说明运行成功!图中最下面的token需要复制下来,过会儿在远程访问的时候需要输入。
接下来重新打开一个终端,输入:
ssh -p 你的端口 用户名@你的ip地址 -N -L localhost:8889:localhost:8888
这句话可以把服务器端的localhost:8888 映射成本地的8889端口,这样就可以通过在本地浏览器中打开http://localhost:8889 来访问服务器端的jupyter notebook了。打开后需要输入token,粘贴刚刚复制的结果,连接成功!
在Pycharm的professional版本中我们可以远程连接服务器,将代码及文件一键上传至服务器并运行。基本可以实现在本地用Pycharm进行代码调试的功能,也非常方便。这个功能在community版本中并不存在,因此只能下载professional版本,价格较贵,不过可以使用edu邮箱账号申请免费使用,直接去官网申请即可,比较简单。
点击电脑左上角的菜单栏 Pycharm->Preferences
依次点开Project->Project Interpreter,点击右边设置按键-> add->SSH interpreter。会出现如下界面。输入ip地址、端口、用户名点击Next。这时候需要我们输入服务器用户的密码,输入就行,点击Next
然后就会进入下面这个界面,我们需要选择Interpreter的路径,自己找一下。我的是在anaconda3/bin下面找到的,选择自己需要的python版本。你也可以事先在服务器端创建一个虚拟环境,在虚拟环境的目录中找到Interpreter。点击Finish
我们回到Preference界面,依次点开Build,Execution, Deployment->Deployment->选择刚刚创建的连接->Mappings->设置Deployment path。这里Deployment path就是你在服务器端要存放代码文件的目录路径,之后上传文件的时候就会自动上传到这个目录下。
到这一步时我们基本就完成了对于Pycharm远程连接的配置。回到主界面,右击文件或文件夹,选择Deployment->upload to xxx 就可以把文件上传至服务器端,然后运行代码,进行远程调试。
以上就是我初学服务器使用时学习到的东西,内容可能有不完善的地方,后面会根据学习的深入进行修正。