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

1 篇文章 0 订阅
1 篇文章 0 订阅

配置远程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开发了:)

是不是很酷?

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值