阿里云 CentOS7 Linux 安装python3.6 安装发布httpbin

先说下业务,这边需要用到httpbin安装到自己的服务器上(https://httpbin.org),而httpbin又是基于python部署的,所以,这里先弄个python环境(阿里云的服务器,CentOS7 自带python2.7,我这里更新到3.6)

一、安装python3.6.4

1. 提前查看防火墙是否开启

安装前,要看看防火墙有没有在用,如果在用的话,装完python后是需要重新配置防火墙关于python的配置的

systemctl status firewalld

阿里云 CentOS7 Linux 安装python3.6 安装发布httpbin_第1张图片

好,状态是active(running) ,启用了防火墙,那安装完3.6之后要重新配置两个文件,在下面会有提到。

 

2. 查看在用的python是什么版本,以及系统现在安装了哪些版本的python,如果有你想用的,那么直接跳到 步骤5

阿里云 CentOS7 Linux 安装python3.6 安装发布httpbin_第2张图片

检查python版本,CentOS7自带的好像是2.7,我想用的是3.6

 python -V

再查看下系统现有python版本(没有我想用的3.6)

ll /usr/bin | grep python

也可以查看各版本python所在目录

 whereis python


3.  安装 python3.6的准备工作

安装可能用到的依赖

yum -y install openssl-devel bzip2-devel expat-devel gdbm-devel readline-devel sqlite-devel

命令到官网下载python压缩包(下载时间时长时短 我存了一份在云盘,可以手动放到服务器 链接:https://pan.baidu.com/s/1lk8QxM6uT1gieDE9GG_pxA  密码:uy7i)

wget https://www.python.org/ftp/python/3.6.4/Python-3.6.4.tgz

解压Python-3.6.4.tgz

tar -zxvf Python-3.6.4.tgz

把解压后的 Python-3.6.4目录移到/usr/local下

mv Python-3.6.4 /usr/local/

4.  安装 python3.6

进入Python-3.6.4 下

cd /usr/local/Python-3.6.4/

执行配置(一分钟的样子)

./configure

编译和安装(时间稍长,三四分钟?)

make && make install

 

 5. 删除旧版本的python软链(步骤2中列出了当前默认的python软连指向的是python2)

阿里云 CentOS7 Linux 安装python3.6 安装发布httpbin_第3张图片

下面重新指向到刚安装的版本上

rm -rf /usr/bin/python

创建新的软链到最新的Python-3.6.4(注意,这里是/usr/local/bin/python3.6 ,而不是/usr/local/Python-3.6.4)

ln -s /usr/local/bin/python3.6 /usr/bin/python

再次查看系统现有python版本,以及默认python软链的指向是哪个版本

ll /usr/bin | grep python

也可以查看当前服务器默认版本 这里是v3.6.4

python -V

 

6. 根据步骤1的防火墙状态,判断防火墙是否开启,开启了,则需要修改防火墙配置文件里的python配置

 

修改防火墙配置
如果服务器用到了防火墙,最好把防火墙配置文件里的python指向改掉:

https://blog.csdn.net/torpidcat/article/details/105836846

 

二、httpbin相关:

唉。。。之前用的是python3.8.2,结果报错,大意是guicorn不支持当前版本的python(也不确定,所以为了省事遂  改用python3.6.4,这里也可能是pip版本的问题,所以我下边也重新用了其他方式获取了pip-10.0)

阿里云 CentOS7 Linux 安装python3.6 安装发布httpbin_第4张图片

 

1. pip工具的安装

wget 链接 的方式超级慢 建议换方式安装,我这里下好了,直接放服务器上用就可以了(pip-10.0.0br.tar.gz  链接:https://pan.baidu.com/s/1qB0EOdvO_BGf81iBoP7QvA  密码:blpu)

wget从官网下载pip-10.0或者上面的网盘里下载,压缩包下载或上传到服务器之后,解压 - 进入pip-10.0.0b2目录 - python安装pip

我这里是用我下载好的安装包放在了/root目录下

阿里云 CentOS7 Linux 安装python3.6 安装发布httpbin_第5张图片

#wget https://pypi.python.org/packages/32/67/572f642e6e42c580d3154964cfbab7d9322c23b0f417c6c01fdd206a2777/pip-10.0.0b2.tar.gz#md5=cbfc1208d00bb72aba19431a7bb4afd5

tar -zxvf pip-10.0.0b2.tar.gz

cd pip-10.0.0b2

python setup.py install

2. pip 安装 gunicorn 和 httpbin

pip工具安装 gunicorn

pip install gunicorn

阿里云 CentOS7 Linux 安装python3.6 安装发布httpbin_第6张图片

居然失败了,告诉我pip 10.0 不满足我的要求?,好吧  根据提示 执行命令  pip更新到20.1b1

pip install --upgrade pip

阿里云 CentOS7 Linux 安装python3.6 安装发布httpbin_第7张图片

emmmm (发现不是pip版本的问题,是我命令打错了。。)   重新执行命令,安装 gunicorn

 pip install gunicorn

 

pip工具安装httpbin

pip install httpbin

3. 运行httpbin程序,指向8000端口

gunicorn -b :8000 httpbin:app

运行httpbin成功后,重新打开一个新的命令窗口(我用的快捷键是command+d)

 

4. 尝试连接httpbin程序

http://服务器IP:8000/ip

访问不通,才想起来我用的是阿里云,好,阿里云后台安全组,新增一个8000端口配置(这里我没用nginx,直接对外开放了8000端口,怕nginx代理会影响我后续的httpbin使用)

阿里云 CentOS7 Linux 安装python3.6 安装发布httpbin_第8张图片

 

我的服务器也弄了防火墙,好,防火墙也加入8000端口,并重启

阿里云 CentOS7 Linux 安装python3.6 安装发布httpbin_第9张图片

上图是防火墙加入端口失败 解决方式看这里:https://blog.csdn.net/torpidcat/article/details/105836846

firewall-cmd --permanent --zone=public --add-port=8000/tcp

firewall-cmd --reload

阿里云 CentOS7 Linux 安装python3.6 安装发布httpbin_第10张图片

 

重新访问http://服务器IP:8000/ip,返回ip成功

阿里云 CentOS7 Linux 安装python3.6 安装发布httpbin_第11张图片

再测试其他接口 http://服务器IP:8000/headers,好样的,没问题

阿里云 CentOS7 Linux 安装python3.6 安装发布httpbin_第12张图片

完。

 

参考:https://www.cnblogs.com/NiceTime/p/9192855.html

拓展 阅读 

               guicorn  https://www.cnblogs.com/ifkite/p/5460328.html

               win安装httpbin https://blog.csdn.net/sanfye/article/details/101677859

httpbin自带接口列表 ,摘自 https://www.jianshu.com/p/00db00cd287d

Endpoint Descirption
/ This page.
/ip Returns Origin IP.
/user-agent Returns user-agent.
/headers Returns header dict.
/get Returns GET data.
/post Returns POST data.
/patch Returns PATCH data.
/put Returns PUT data.
/delete Returns DELETE data
/gzip Returns gzip-encoded data.
/deflate Returns deflate-encoded data.
/status/:code Returns given HTTP Status code.
/response-headers Returns given response headers.
/redirect/:n 302 Redirects n times.
/redirect-to?url=foo 302 Redirects to the foo URL.
/relative-redirect/:n 302 Relative redirects n times.
/cookies Returns cookie data.
/cookies/set?name=value Sets one or more simple cookies.
/cookies/delete?name Deletes one or more simple cookies.
/basic-auth/:user/:passwd Challenges HTTPBasic Auth.
/hidden-basic-auth/:user/:passwd 404'd BasicAuth.
/digest-auth/:qop/:user/:passwd Challenges HTTP Digest Auth.
/stream/:n Streams n – 100 lines.
/delay/:n Delays responding for n – 10 seconds.
/drip Drips data over a duration after an optional initial delay, then (optionally) returns with the given status code.
/range/:n Streams n bytes, and allows specifying a Range header to select a subset of the data. Accepts a chunk_size and request duration parameter.
/html Renders an HTML Page.
/robots.txt Returns some robots.txt rules.
/deny Denied by robots.txt file.
/cache Returns 200 unless an If-Modified-Since or If-None-Match header is provided, when it returns a 304.
/cache/:n Sets a Cache-Control header for n seconds.
/bytes/:n Generates n random bytes of binary data, accepts optional seed integer parameter.
/stream-bytes/:n Streams n random bytes of binary data, accepts optional seed and chunk_size integer parameters.
/links/:n Returns page containing n HTML links.
/forms/post HTML form that submits to /post
/xml Returns some XML
/encoding/utf8 Returns page containing UTF-8 data.

 

 

 

你可能感兴趣的:(python)