在vps上部署python开发环境

起因

前段时间发现有个网站的漫画资源挺多,但想看需要翻墙.于是就寻思着写个爬虫爬到本地看.但vps上的python只能在命令行上敲.于是就想起了jupyter notebook.

经过

系统是Centos的,装了jupyter之后提示还是找不到命令…

Google了一番之后无果,那还是用docker起吧.

个人还是很喜欢docker的,因为docker可以说是终极解决方案了.docker的使用体验非常友好,因为docker绝不出错.

像我这种bug体质😱的人来说可以说是首选方案了.能docker就docker,实在简单或者有把握自己调试才会直接用.

在dockerhub上找了个比较全的jupyter/all-spark-notebook.据介绍说把所有的环境几乎都配了.有Python, Scala, R, Spark, Mesos Stack,我试了下python,发现常用的reqeusts库,bs库都是有的.还不错.没有的我后面再说怎么装.

开冲!!!

启动容器

docker run --rm -p 8888:8888 -v /root/downloads:/downloads jupyter/all-spark-notebook

注意,上面的命令带有--rm参数,也就是说在停止容器后再次运行之前的所有更改就没有了,包括所有代码.只有/downlads目录下的文件会和宿主机的/root/downloads目录保持同步.

因为不加--rm参数的话停下容器下次再启动的命令是有变化的.好像是把run替换成start还是continue,总之是一个继续的命令.不然会报错.

进入容器

docker exec -it condescending_dirac /bin/bash

进去之后发现有个问题,这个镜像中运行jupyter服务是以jovyan用户启动的,id为1000.而/downloads目录是拒绝jovyan访问的…

这就很尴尬了,我被我起的虚拟机拒绝了??这好像不太合适吧?(就好像你玩单机到商店买东西,结果老板说你钱不够……特喵的,整个游戏都是老子的,你算老几???8说了,cheatengine-x86_64.exe启动.把价格改成0!!!啊不,改成负的……XXX.exe 已停止响应 ->等待 终止程序)

那咱就sudo su - root切一下用户呗…

root密码咱也不知道啊!

后来发现有个命令参数-u 0,这样进去虚拟机的时候就是以root身份登进去的.

docker exec -u 0 -it awesome_yalow /bin/bash

修改目录访问权限

chmod -R 777 /downloads

ok,解决了.

使用

接下来就是使用了,熟悉jupyter的人就不用看了.

首先是jupyter的web界面

网址就是服务器地址的8888端口.之后会让你输入token.

看一下启动docker服务的那个终端,也就是执行了docker run --rm -p 8888:8888 -v /root/downloads:/downloads jupyter/all-spark-notebook的那个终端,第七行就是.

黄框框里的值就是token...话说不是写了`token=`的字样吗

然后写文件的时候注意一下写在映射的目录下,不然还要移动到宿主机很麻烦.

然后用docker的一个缺点就是没法把jupyter当作web版的命令行用.因为命令都执行到虚拟机里去了.