本文为《爬着学Python》系列第十一篇文章。
之前写过一篇Python简单入门指北-环境配置,因为是为了新手准备的,所以很简单,就是去官网下软件包,一步步安装就可以了。虽然我们默认的运行环境是Windows,但是如果是工作环境,那么有两个东西是无法避免的,一个是版本控制系统(Git或者CVS,我以后会介绍Git),另一个就是今天要讲的远程连接。
现在绝大部分互联网相关开发工作还有很多软件开发,工作场景都是用“小黑框”进行远程连接。这样的做法可以管理开发进度,不管是协同合作还是部分代码保密,让程序员用一定权限的账号连接服务器是最方便的(Git也能完成这样的功能但是没那么方便,所以更适用于源码管理)。
总之,我们很有必要学习远程连接的知识,而实际场景中我们连接的服务器绝大多数都是Linux环境,所以本文的内容就包括了一部分Linux的知识。不过要用一篇短文介绍Linux的使用方法是远远不够的,我们就借讲解一下怎么在Linux环境下配置Python环境来顺便熟悉Linux的基础操作和远程连接服务器的操作。而就是把Linux当作主力开发环境的可以只看环境配置部分。
鉴于并不是所有人都有服务器,为了方便实践,所以我们用虚拟机来模拟。
环境:VirtualBox+CentOS7.2+SecureCRT8.1
好了,废话有点多了。
虚拟机准备
如果准备实践,在开始操作之前推荐先去下载虚拟系统要用到的镜像文件(CentOS下载地址),推荐精简版本(Minimal ISO),这里面除了Vim和yum几乎要用到的什么都没有,所有东西都要主动装,最适合练习。
要在Windows环境创建一个虚拟机,方法有很多。Windows有内置的hyper-V但是主要用来模拟Windows环境;Win10系统内置了Ubuntu,在控制面板的程序管理中可以找到相关功能,但是这个系统并不完善所以也不推荐使用。
接下来就是第三方的虚拟软件,Windows平台现在主流的是VMware和VirtualBox(Mac更推荐Parallels)。VMware有收费和免费两种版本,免费版太过简陋不推荐使用,收费版有一万种破解方法。VirtualBox是开源软件,个人评价介于VMware收费版和免费版之间,且与VMware收费版本性能和功能相差不大。所以我是非常推荐心安理得地使用VirtualBox的(VirtualBox下载地址)。
官网下载的VirtualBox下载以后一路安装就可以了。这时候如果系统镜像文件下载好就可以创建虚拟环境了。
下载以后打开VirtualBox选择“新建”,在弹出的窗口中选择“专家模式”,接下来类型选“Linux”,版本对应下载的镜像版本进行选择,如果是CentOS应该选择RedHat,
接下来选择“创建”会跳出虚拟硬盘的设定窗口,选择好虚拟硬盘的目录位置(默认在C盘),文件类型不关键,用默认的即可。大小建议至少在4GB以上,选择动态分配大小以后不会占用很多空间不必害怕浪费。
再点击创建,虚拟环境就创建成功了,但是我们还没有给虚拟机安装操作系统。我们可以点击“启动”运行试试看。
进入环境以后会提示选择启动盘
选择虚拟光盘或者点击文件目录选择刚才下好的CentOS镜像文件以后点击“启动”,在接下来的界面中选择“Install CentOS”(默认选项)。之后就会进入系统安装界面。
为了兼容性我们可以选择默认语言的英文,直接选择继续即可。
在“localization”本地化中选择“language support”语言支持,加入中文。时区不用管也没多大关系。
在“system”系统中选择“installation destination”安装地址,选择刚才创建的虚拟硬盘。没有特殊需求使用自动分区即可。选择“network&host name”网络和网关中将连接打开。
接下来选择下一步开始安装,在安装的同时在“user seetings”账户设置中可以设置root根账号的密码,还可以创建一个普通用户或者管理员账户。安装的时候有可能耗时比较长(几分钟),不要因安装时间太久怕是有地方出错了。
安装完成以后选择“reboot”重启,即可进入系统。输入用户名和密码登录就可以进行操作了。
注意到CentOS作为服务器系统是没有自带图形化界面的,只能用命令行进行交互。这也是我推荐使用它的原因,因为要是装个Arch或者Ubuntu命令行不会几句一天到晚在美化桌面就没意思了。我们先在这里试试几个简单的命令,包括查看版本信息(也可以用 cat /etc/redhat-release
查看CentOS版本信息),以及进入Python命令行。
注意到CentOS以及内置了Python2.7.5,其实Linux系统包括现在的Unix系统一般都会内置Python了,因为系统中有些工具就是用Python写的,等会我们配置Python环境的时候还会遇到这些工具带来的一些麻烦。而且可以看到VirtualBox的运行环境看得人眼睛要瞎掉,我们赶紧想办法远程连接,先看看本机的IP地址。
注意到显示的不是最内网IP,我们可以去VirtualBox控制台把网卡改成桥接网卡。
之后重启再次查看IP确认。
接下来就可以放心用远程连接工具进行连接了。先放个效果图
远程连接
远程连接工具也有很多选择,常见的有SecureCRT,Putty,Xshell,Cygwin等。其中Putty比较精简,Cygwin比较复古,这两个是免费软件。而SCRT和Xshell功能更为强大所以现在最为主流,且都是收费的商业软件。网上一样有一万种破解方法,但是这里我推荐用Xshell的家庭和学生版(Xshell下载地址),又可以心安理得地免费使用正版了。当然如果公司有SecureCRT的注册码那最好不过了,我刚才截的就是SecureCRT的图,等下对比Xshell就可以看出来UI要好看许多(主要是能透明)。
下载以后一路安装就可以了。然后连接我们的地址。
连接成功以后就像这样。
注意要输入刚才装机时设置的账号和密码。这里要说明一下连接的安全设置问题。你可能发现了,这样连接是非常不安全的,任何知道该主机IP和密码的人就可以连接了。我们以后会用SSH验证身份,但是我打算在Git相关内容中讲解。现在先不去管它,我们暂时练手用的虚拟机也不用管安全性什么的问题。
下面我们就开始配置Python环境了,在操作之前不妨改一下连接工具的字体,至少要看得不累。我就换回SecureCRT演示了,Xshell也是一样的操作。
Python下载安装
由于是精简的系统,我们第一步建议安装开发工具包,命令是
yum groupinstall -y 'Development tools'
当然你要是觉得没必要装那么多东西,可以直接yum install gcc
,等会遇到有什么需要的包再安装就是了。
接下来需要安装的是下载解压相关的工具
yum install -y zlib-devel bzip2-devel openssl-devel
这里解释一下我们用的工具yum
,这个和Python的pip
差不多。而且就像pip
和easy_install
的关系类似,yum
或者说rpm
是由apt
发展而来,它们之间的优劣我们就不比较了。-y
参数意思是所有需要选择的地方默认选择yes
。关于yum
工具的具体知识我就不展开来讲了,有兴趣可以参考linux yum命令详解。
接下来我们需要下载Python安装包。首先我们需要新建一个文件夹来保存下载的文件,我们会接触到以下这些命令:
ls -a #列出当前目录下的所有内容
cd [dir] #打开某个目录
mkdir [name] #新建目录
#特殊目录 ..上级文件夹
#特殊目录 .当前文件夹
#特殊目录 ~当前用户文件夹
#特殊目录 /根目录
我们决定下载在刚才装系统时创建的普通用户的文件夹中。以下是我的示例,为了演示每一步都查看了当前目录下的内容。
如果新建错了想要删除某个目录(不建议做这种事情),可以用这样的命令
rm -r [dir]
接下来我们需要下载Python安装包。我们可以去官网下载,也可以使用国内的镜像。我们进入建立好的临时目录,用curl
下载
curl -O https://www.python.org/ftp/python/3.6.0/Python-3.6.0.tar.xz
需要说明的是curl
也有类似的工具wget
。但是RedHat内置的一般是curl
,关于curl
的其他具体使用方法可以参考Linux curl命令详解。
下载好以后进行解压。
tar -xvf Python-3.6.0.tar.xz
之后进入解压后得到的文件夹,./configure
,make
,make install
编译连招了。
cd Python-3.6.0
./configure
make && make install
这样一来其实我们的Python就安装好了,我们可以试一下。
注意到环境变量中Python还是链接着原来的Python2.7.5,我们想要使用刚刚安装的Python需要用Python3
命令。如果没有强迫症那么现在这样就可以了,当然,如果想要高版本的Python作为默认Python,我们需要更改环境变量。
环境变量设置
我们环境变量具体要做这样几件事情,首先把现在的Python链接转移到Python2(一般来说已经存在了),然后把新的Python链接到环境中,具体是这样做
# 转移
mv /usr/bin/python /usr/bin/python2
# 删除现有链接
rm -f /usr/bin/python
rm -f /usr/bin/python-config
# 建立新链接
ln ln -s /usr/local/bin/python3 /usr/bin/python
ln -s /usr/local/bin/python3-config /usr/bin/python-config
关于ln
命令和文件链接相关知识就不展开讲了,如果以后详细讲解Linux编程可能会详细介绍Linux文件系统的知识。
现在我们输入python
命令已经是刚安装的Python3.6了,要想使用原来的Python2.7.5, 我们可以使用Python2
或者Python2.7
命令。
本来我们的工作到这里就该结束了。但是刚才文章一开头我就说过,更改Python的环境变量以后会带来一些麻烦。这也是我推荐使用精简版的CentOS的原因,不然要改的东西太多,用的时候临时来改会很麻烦。
注意到^H
是我在按退格的时候出现的映射错误,我们想要退格需要ctrl+backspace
或者ctrl+w
但是这未免太麻烦了。出现这个问题的原因涉及到比较基础的历史遗留问题。要想解决这个问题,我们可以在SecureCRT的session设置中覆盖按键,
但是这不是一劳永逸的办法。我们还可以通过安装readline
工具来解决。
但是发现我们的yum
工具不能用了。原因在于这个工具的python文件中指出的Python解释器路径被我们设置成了Python3
,但是文件本身却是按照Python2
的规则写的,问题根源在于Python3
和Python2
的不兼容。要想解决这个问题,我们去改文件头就可以了。
vi /usr/bin/yum
关于vim编辑器的使用,可以直接百度,只要知道有读/写两种模式,i
进入编辑模式,esc
退出编辑模式,:q!
直接退出,:wq!
保存后退出就足够了,我们不会拿这个当开发工具的(以后会介绍更友好的IDE)。
我们再来试一试yum install readline-devel
这回我们就能成功安装了,Python中方向键和退格也能正常工作了。
最后试一下pip
我们就算完成环境配置工作了。推荐安装setuptools
,wheel
,conda
,pyenv
,virtualenv
这些基本工具包做尝试。
到这里,基本上就算是Python环境配置完成了,再加上git,就算完成Linux开发环境配置了。
这样一来,我们一般的开发流程是
- 在服务器新建git仓库
- 在开发机器上(windows)clone项目
- 在Windows机器上用虚拟环境开发(virtualenv)
- 同步开发进度
- 在服务器上根据requirements.txt来还原虚拟环境
- 适应性调试,其他工具配置
- 在服务器上运行应用
所以接下来的两篇分别会是git
和Python版本控制相关内容。