先说下业务,这边需要用到httpbin安装到自己的服务器上(https://httpbin.org),而httpbin又是基于python部署的,所以,这里先弄个python环境(阿里云的服务器,CentOS7 自带python2.7,我这里更新到3.6)
1. 提前查看防火墙是否开启
安装前,要看看防火墙有没有在用,如果在用的话,装完python后是需要重新配置防火墙关于python的配置的
systemctl status firewalld
好,状态是active(running) ,启用了防火墙,那安装完3.6之后要重新配置两个文件,在下面会有提到。
2. 查看在用的python是什么版本,以及系统现在安装了哪些版本的python,如果有你想用的,那么直接跳到 步骤5
检查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)
下面重新指向到刚安装的版本上
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
唉。。。之前用的是python3.8.2,结果报错,大意是guicorn不支持当前版本的python(也不确定,所以为了省事遂 改用python3.6.4,这里也可能是pip版本的问题,所以我下边也重新用了其他方式获取了pip-10.0)
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目录下
#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
居然失败了,告诉我pip 10.0 不满足我的要求?,好吧 根据提示 执行命令 pip更新到20.1b1
pip install --upgrade pip
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使用)
我的服务器也弄了防火墙,好,防火墙也加入8000端口,并重启
上图是防火墙加入端口失败 解决方式看这里:https://blog.csdn.net/torpidcat/article/details/105836846
firewall-cmd --permanent --zone=public --add-port=8000/tcp
firewall-cmd --reload
重新访问http://服务器IP:8000/ip,返回ip成功
再测试其他接口 http://服务器IP:8000/headers,好样的,没问题
完。
参考: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. |