配置远程Linux云服务器+可视化工作环境+jupyter notebook

原创 2017年08月06日 12:47:32

配置远程Linux云服务器+可视化环境

一直希望能像“黑客军团”里的男主那样,随时随地就可以开始hack。后来才逐渐发现,他实际上登录的是一个远程服务器,在已经配置好的服务器上,开始hack&工作。

并且,联系到最近我在学习机器学习,也需要这样一个独立的环境(因为Linux主机带来带去的确是太笨重了)方便我在移动中办公和学习。

因此就萌生了这样一个想法,但是实施起来却非常困难,好在已经打通了一条路子。本文的目标是:使用阿里云ECS的主机(Ubuntu 14.04),搭建一个Python环境,并且可以实现可视化(例如可以运行matplotlib),我可以通过mac、linux、windows在远程任意地实现可视化和命令行的操作,进行机器学习。

1. 配置云服务器

这部分不多说,就是在阿里云上面买一台ECS服务器,然后配置好root密码就可以了。镜像选用公共镜像-Ubuntu 14.04。这是一个妥协的选择,显然16.04更好,但似乎没有找到可供参考的安装教程,因此就会麻烦一些(14.04的python版本很老,需要编译安装python, python-setuptools)。

顺便也可以学习一下如何配置,增长Linux知识。

首先打开terminal,使用ssh连接服务器:

$ ssh root@ip
$ password of root

1

首次打开的时候会询问是否保存秘钥,如果服务器系统重置了,需要删除这个秘钥才能够正常登陆:

$ cd ~/.ssh
$ rm known_hosts

2

登录以后第一件事情是更新apt-get源:

$ apt-get update

这一步操作非常重要

2. 配置Python开发环境

下面开始配置Python开发环境。直接打开python我们可以发现,Ubuntu 14.04的python版本是2.7.6,非常低,而且也不能使用apt-get或者pip安装matplotlib,总之问题非常多。我本能地感觉到需要重新编译安装一个高版本python,并且给它配置一个对应的pip。

因此我们的目标是:

  1. 编译安装另一个版本的python
  2. 编译安装setuptools,也就是easy_install
  3. 使用easy_install安装对应的pip
  4. 使用这个pip安装matplotlib等机器学习库
  5. 创建软链接(快捷方式)

2.1 编译安装非系统自带的python

首先是编译安装python

请参考这篇文章

先apt-get安装编译的依赖,然后是去python官网下载源代码,这里我使用的是2.7.13,再是编译安装。注意第2步里面需要改变文件名:

$ ./configure --prefix /usr/local/lib/python2.7.13 --enable-ipv6

这样就装到/usr/local/lib/python2.7.13下面了。

2.2 安装python-setuptools

顺着这篇文章下去,setuptools似乎是因为墙或者别的原因,安装不下去了,因此要用源代码编译方式安装setuptools。(对于这个情景,我不推荐apt-get的安装方法,因为天知道setuptools会被安装到哪个python下面去)

请参考这篇文章
先把全文看完,再安装,后面有一步操作要放到前面来:

$ apt-get build-dep python

接着在google搜索setuptools下载最新版源代码包就可以了。这里的关键是第3步,要用相应的python(前面编译的非系统python)来编译setuptools,也就是将easy_install和我们自己的python版本一一对应:

$ /usr/local/lib/python2.7.13/bin/python setup.py build

这样就将python2.7.13和easy_install对应起来了。

然后顺利编译安装,/usr/local/lib/python2.7.13/bin/下面就可以执行easy_install了。

2.3 安装非系统自带python对应的pip

接着回到上面的那篇文章中来,我们需要使用这个新的easy_install安装对应的pip,然后利用这个新的pip安装各种包。请注意由于我们安装了新的python2.7.13,环境变量已经发生了变化,因此:

$ /usr/local/lib/python2.7.13/bin/easy_install pip
$ /usr/local/lib/python2.7.13/bin/pip install ***packages

这样就可以顺利正确配置python并安装matplotlib、numpy等包了,否则你会遇到各种报错。

2.4 创建软链接

最后为了方便,我们还需要创建软链接,总不能每次都使用/usr/local/lib/python2.7.13/bin/...这条命令吧。

这里的原理是:linux在执行bin的时候,是按照
/usr/bin/->/usr/local/顺序往下读的。这意味着输入easy_install会先从/usr/bin/下面寻找,因此我们只需要在优先级最高的/usr/bin/下面创建一个软链接,链接到我们需要python版本对应的easy_install和pip真实bin文件下就可以了:

 $ ln -s /usr/local/lib/python2.7.13/bin/easy_install /usr/bin/easy_install
 $ ln -s /usr/local/lib/python2.7.13/bin/pip /usr/bin/pip

左侧是真实bin,右侧是快捷方式的bin。
这样就可以直接输入easy_installpip而不会去错位置了

当然我们也可以偷懒地:

$ ln -s /usr/local/lib/python2.7.13/bin/python /usr/bin/python13
或者
$ ln -s /usr/local/lib/python2.7.13/bin/python /usr/bin/python2.7.13

这样就可以使用

$ python13 / python2.7.13

打开我们自己的python环境了。

———-8月10日的补充————
我们还需要将/usr/local/lib/python2.7.13/bin
加入到我们的环境变量中,否则会出现pip安装报错的情况:

$ vim ~/.bashrc
加入:
export PATH=/usr/local/lib/python2.7.13/bin:$PATH
保存退出
$ source ~/.bashrc

3. 配置可视化环境

当然只有这些是远远不够的,例如matplotlib无法在非可视化环境下运行,因此我们还需要配置一个可视化环境。

3.1 linux环境配置部分

首先你安装的linux镜像是不带可视化界面的,因此需要安装可视化(GUI)环境:

可以参考这个教程

$ apt-get install x-window-system-core
$ apt-get install gnome-core
$ apt-get install gdm

非常简单,这就是使用Ubuntu 14.04的好处,亲测可用。

3.2 客户端环境配置部分

windows环境可以使用xshell+x-manager组合,具体就不说了,这里主要说mac环境下的配置方法。

可以参考这个教程

主要思路就是安装xQuartz这个软件(可视化环境,提供x11环境),调用方法是打开软件-打开application菜单栏-打开terminal,会打开一个bash的终端窗口,使用ssh命令。或者是用mac自带的termianl,使用:

$ ssh -X root@ip

终端就可以调用xQuartz的x11环境了。

我们分别用matplotlib和firefox测试一下:

$ ssh -X  root@ip
$ firefox

会打开linux服务器下的firefox,但奇卡无比,但至少成功了:
3

$ python13
>> import matplotlib.pyplot as plt
>> import numpy as np
>> plt.figure(1)
>> x = np.linspace(0, 3, 100)
>> plt.plot(x, np.exp(x))
>> plt.show()

然后就会使用xQuartz输出matplotlib绘制的图了:
4

亚克西!

3.3 配置jupyter notebook

使用一段时间以后发现一个问题:

  • 在mac、windows上安装了X11环境,因此可以很方便地打开matplotlib生成的图,但是在linux上却不行。
  • 用python命令行的方式来编程,非常不方便,尤其是机器学习写代码的时候需要一步一步地验证和修改,而我们又没有办法在远程使用pycharm这样的IDE。

但是我发现jupyter notebook可以很好地解决上述两个问题,唯一的不足是jupyter notebook里没法用制表键tab选出类库的信息。

下面开始教程:
我是参考这个教程来配置的。

1.首先是安装jupyter,jupyter在python2环境下需要安装ipython 5.0

$ pip install ipython==5.0
$ pip install jupyter

2.然后就照着教程安装就可以了,非常简单,亲测可用。

3.最后只需要进入主机,在命令行下输入:

$ jupyter notebook --allow-root
如果你没有输出环境变量,那么:
$ /usr/local/lib/python2.7.13/bin/jupyter notebook --allow-root

jupyter notebook就运行在你ECS:ip:8888下了。
然后打开浏览器,输入:

ip:8888

就可以登录jupyter开发了。顺便安利一下jupyter,非常舒服,甚至可以用于开发。

4.最后完善一下

最后需要完善什么呢?这涉及到一个使用远程服务器一个很麻烦的地方:你不能断开命令行,否则程序就会终止(例如jupyter notebook),或者你在运行一个爬虫脚本,这样就不能关机了。

这里介绍tmux,tmux就是可以将terminal进程挂机运行的一个工具。

具体可以参考这篇文章

大致的方法就是:

1.现在登录远程服务器,安装tmux

$ apt-get install tmux

2.你可以创建一个自己的会话(具体的知识可以看上面参考的文章)

先退出当前会话:
$ tmux detach
然后创建会话:
$ tmux new -s your_session_name
然后就登入了你的会话,你还可以退出,再使用:
$ tmux a -t your_session_name

这里tmux detach就是登出你的会话,就相当于将这个terminal窗口挂机运行。这样你就可以利用tmux实现jupyter notebook常驻运行了。

然后就可以随时随地,只要有一个浏览器,就可以做python开发了:)

是不是很酷?

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

如何在阿里ECS云端运行JupyterNotebook进行机器/深度学习?

本文主要是介绍如何在阿里云上安装jupyter notebook并实现云端访问,在jupyter上进行机器学习或者深度学习。针对没有任何Linux基础的新手所写(因为我也是新手啦!),所以比较详(lu...

Linux下 Xshell+Xmanager, 远程运行可视化视图程序

一、安装xshell 二、安装Xmanager Enterprise 三、启动Xmanager - Passive 四、启动Xshell,远程连接Linux 五、执行 export DISPL...

IPython notebook的安装及安装后网页不能打开问题

安装很简单 pip install ipython[notebook] 或 pip install jupyter notebook 第一种安装方式即将被淘汰。 安装完在命令行输入ipython no...

安装远程可视化管理工具及使用方法

RDPY 安装步骤 1安装VCforpython pywin32 安装pyQT Twisted-1750-cp27-cp27m-win_amd64whl rdpy 安装完成之后可以这样执行 RDPYr...

大数据可视化平台(前后端)

序嗯,这算是研究生入学后接触的第一个项目吧,其实就是一个demo系统吧,用来做数据可视化。 更新至热力图。 系统设计整体框架本系统是采用了三层体系结构进行搭建。作为底层的数据层是由MySQL数据库...

【Linux\云服务器】CentOS 7.2 64位 可视化桌面的安装与卸载

CentOS 7.2 可视化桌面的安装和卸载       终于开始写第一篇CSDN博客了,心情有点儿小激动,前两天,小D在阿里云出购买了一台学生优惠的ECS云服务器,购买之前并没有学习过任何有关Lin...

在服务器上配置jupyter, 远程登录

在服务器上配置jupyter, 方便我们远程登录. 第一步:安装jupyter, pip3 install jupyter (此处使用的是python3) 第二步:生成配置文件jupyter no...

从零开始配置Ubuntu Server 14.04 图形界面、Caffe安装及远程连接

本文从Ubuntu Server14.04的U盘安装开始,之后依次涉及到图形界面的安装,NVIDIA驱动安装,Windows使用远程桌面mstsc连接Ubuntu Server,Cuda及Caffe的...

如何实现在远端服务器利用matplot绘图但是不显示

在前面的博客中也提到了通过访问远方服务器,图形不能绘制的问题。在我跑faster rcnn的过程中也遇到了这个问题,一起用绘图的程序就会有bug。比如demo前面的代码如下: import _ini...

negative binomial(Pascal) distribution —— 负二项式分布(帕斯卡分布)

1. 定义假设一串独立的伯努利实验(0-1,成功失败,伯努利实验),每次实验(trial)成功和失败的概率分别是 pp 和 1−p1-p。实验将会一直重复下去,直到实验失败了 rr 次。定义全部实验中...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:配置远程Linux云服务器+可视化工作环境+jupyter notebook
举报原因:
原因补充:

(最多只允许输入30个字)