简介
最近在用Python写一些东西,各种第三方库好用极了,写起来也是非常酸爽,但生产环境部署上却略有些繁琐。
主要原因是公司的生产环境主机,大都是在内网中的,无法直连Internet,首先要花点力气搞定网络连接问题。
另外操作系统也基本上是RedHat,只预装了Python2.7,yum源中也没有3.X,只能通过源码编译的方式安装。如果是Debian系的,就不会这么麻烦了。
HTTP代理服务器搭建
要搞定网络连接,最简单的办法还是找一台能出得去的主机,搭一个HTTP代理服务。
这里我选择了srelay+polipo的组合。Srelay用于搭建Socks5代理,Polipo用于将Socks5端口转为HTTP端口。
PS:当然,还可以使用redsocks+polipo的组合,直接默翻墙,使用yum时可以快很多。
使用srelay搭建简易Socks5代理
我们先找一台可以直连外网的主机,注意要新建一个用户,不要以root直接操作。
官网地址:
http://socks-relay.sourceforge.net
下载srelay-0.4.8b6.tar.gz
解压后直接make
即可,将编译出的二进制文件srelay随便找一个目录扔进去
启动:
1 | ./srelay -i xxx.xxx.xxx.xxx:31080 |
无须配置,直接在启动时直接绑定IP+端口,注意IP一定要绑定内网的那个。
使用polipo将Socks5代理转为Http代理
下载地址:
https://www.irif.fr/~jch/software/polipo/polipo.html
解压后,修改一下Makefile,将PREFIX改为实际安装目录
1 | vi Makefile |
然后直接make && make install
即可
新建一个config文件
1 | vi config |
其中socksParentProxy是Socks的IP+端口,proxyPort是新开的HTTP端口
启动:
1 | nohup ./polipo -c config |
环境变量设置
现在回到Python3所在的主机,设置一个http_proxy环境变量,指向刚才所搭建的IP:端口
1 | export http_proxy="http://xxx.xxx.xxx.xxx:31081" |
这时wget、yum等已经可以正常使用了
配置yum使用163的源(可选)
有时可能需要用yum安装一些依赖,配置成163的源会速度快一些
1 | wget http://mirrors.163.com/centos/6/os/x86_64/Packages/python-iniparse-0.3.1-2.1.el6.noarch.rpm |
源码方式安装python3
现在开始,万事俱备,可以编译安装python了。需要使用root权限操作。
首先,在官网下载最新的3.6源码:
https://www.python.org/ftp/python/3.6.0/Python-3.6.0.tgz
安装过程没有什么特别的,缺少依赖时可以直接yum安装
1 | wget https://www.python.org/ftp/python/3.6.0/Python-3.6.0.tgz |
源码方式安装完成后,已经是包含pip3的了,不用再单独安装了。
让pip走代理
pip3可以通过使用--proxy
参数来走代理,在这里我们为了方便,直接建一个alias,以后使用pip时,就不需要再添加参数了。
1 | alias pip3="pip3 --proxy 134.32.32.13:31081" |
安装依赖
大部分依赖可以直接通过pip3安装:
1 | pip3 install requests |
某些模块,比如FastDFS客户端,不能直接使用pip3安装,需要下载源码后并手工修改一些代码,操作过程大致如下:
1 | git clone https://github.com/jefforeilly/fdfs_client-py.git |
至此,环境搭建完毕,可以将python代码扔上去跑起来了。