于 2024年6月1号开始把的云主机从张北迁移到杭州来,因为 OS 是从 6U 升级到 阿里云的龙蜥OS 8u,所以,光 WordPress 就折腾了1天多,终于搞定。
然后,记起来以前也通过 php 的 server 支持了 ios 的 API服务,所以,尝试把 ios 的服务端切换到 flask + python 来。
继续研究了 2018年的在博客记录的 flask 的配置,稍作了修改,如下:
1: 首先,使用一个域名 cmesoft.com 提供服务。
2:其次,配置 /etc/nginx/conf.d/cmesoft.conf 支持 WordPress站点,内容如下:
server {
listen 80; # 监听端口
server_name www.cmesoft.com cmesoft.com; # 站点域名
#server_name 121.199.16.184 121.199.16.184;
client_max_body_size 50M;
# 站点根目录
location / {
#index index.html index.htm index.php; # 默认导航页
root /data/web/cmesoft;
index index.php index.html index.htm;
}
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
#fastcgi_index index.php;
#fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
fastcgi_param SCRIPT_FILENAME /data/web/cmesoft/$fastcgi_script_name;
include fastcgi_params;
}
}
3:因为 wordpress 的页面放在: /data/web/cmesoft 下,而 python api的代码放在 /data/web/pyapi 底下,所以,为了把服务隔离开,不同的目录,不同额端口,给 pyapi 配置另外一个服务端口。
4. pyapi 的 nginx 配置如下:
cat /etc/nginx/conf.d/pyapi.conf
server {
listen 8080 default_server;
server_name _;
location ~ /pyapi {
proxy_pass http://127.0.0.1:8888;
}
error_page 404 /404.html;
location = /40x.html {
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
}
}
让 pyapi 监听 8080 端口,转到后端 flask 的 8888 端口,uwsgi 配置如下:
cat uwsgi.ini
[uwsgi]
## For directlly http access
http-socket=127.0.0.1:8888
### For nginx proxy
#socket=/tmp/ppt.sock
wsgi-file=/data/web/pyapi/server.py
#plugins = python
callable = app
#chdir = /data/install/bin
touch-reload=/data/web/pyapi/
processes = 4
threads = 4
stats = 127.0.0.1:9191
post-buffering = 8192
buffer-size = 65535
socket-timeout = 10
uid = apache
gid = apache
master = true
#protocol = uwsgi
daemonize = uwsgi.log
pidfile = uwsgi.pid
然后,/data/web/pyapi/server.py 内容如下:
cat server.py
from flask import Flask,render_template, jsonify
from flask import request
app = Flask(__name__)
@app.route('/pyapi', methods=['GET', 'POST'])
def index():
requester = request.remote_addr
#logging.info('Data request from: %s' % requester)
url = request.url
uid = url.split('uid=')[-1]
get_name=request.args.get("name")
post_name=request.form.get("name")
#return "Test message, your input uid=%s, method=%s, get_name=%s, post_name=%s from %s\n" % (uid, request.method, get_name, post_name, requester)
return jsonify(get_name=get_name,post_name=post_name)
if __name__ == '__main__':
app.run()
在阿里云的ECS上开启对外的 8080 端口服务,测试如下:
# curl -s "cmesoft.com:8080/pyapi?uid=3434&name=get_Wade" -d "name=post_james" | jq
{
"get_name": "get_Wade",
"post_name": "post_james"
}
从代码和测试可以看到,我们的 FLASK API 接受 GET 和 POST 调用,可以作为一个小小的 服务端 API 网关。
今天就更新到这里。 —- 2024-06-02 22:20 分。