AI vocabulary database and dictionary
python3 -m venv venv
source venv/bin/activate
pip install pipenv && pipenv install
scp .env <remote>:~/dict_server
scp dictionary/oxfordstu.db <remote>:~/dict_server/dictionary
# environment
sudo apt-get install ffmpeg -y
brew install ffmpeg #MacOSsystemd服务的/usr/lib/systemd/system/monitor.service文件里只能执行一个脚本,而且这脚本结尾必须是一个持续性的process,不然.service会一直重新启动,因为内容有Restart,造成错误。
想要一个.service能执行多个脚本,就新创一个第三方脚本来执行多个目标脚本,要注意是这些脚本都是持续process,因此前面执行的脚本运行在后台,不然这第三方脚本会卡在前面持续process的脚本。
e.g. (third party ~/cmd.sh):
#!/bin/bash
set -e;
# 注意要将前面的process运行在后台,以免脚本运行卡住
nohup bash /home/yoyo/dict_server/cmd.sh > /dev/null &
# 最后维持一个process避免一直重启
bash /home/yoyo/monitor/cmd.sh编辑sudo vim /usr/lib/systemd/system/monitor.service
ExecStart=/home/yoyo/cmd.sh新增path给监听的port:
# sudo vim /etc/nginx/sites-available/cia1099.cloudns.ch
location /dict/ {
proxy_pass http://localhost:8866/;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
client_max_body_size 30M;
}
在 Nginx 里,默认的 client_max_body_size 只有 1MB,所以如果你上传文件、POST JSON 数据、或者转发大请求时,超过这个值就会报 413 错误。
FastAPI 提供了一个 root_path 配置选项,可以在创建应用实例时指定基础路径前缀。
from fastapi import FastAPI
app = FastAPI(root_path="/dict")但是,这种方法要求 Nginx 配置路径为 /dict/ 的所有请求都直接转发给 FastAPI,且不会去除 /dict。配置如下:
location /dict/ {
proxy_pass http://localhost:8866/dict/;
}