PT-Gen 0.4.4 版,相比于之前的 0.3.5 版,有很大的改动:
- 增加了数据库缓存,所以服务器必须要安装 sqlite3。
- 5月13日豆瓣电影的公共API下线,导致 PT-Gen v0.4.2 及之前的版本无法获取电影数据,现在通过在前端页面和后端程序加入 apikey 才解决这个问题。
- 修改了 API 路径,由原来的
/movieinfo/gen
改为/infogen
- 去掉了 run.py
建议之前使用 v0.3.5 的朋友按此教程升级到 v0.4.5,同时前端页面也要注意更新。
服务器必备的软件环境:
- nginx
- python3.5 或者更高
- pip3
- uWSGI
- sqlite3
我使用的是 lnmp 安装环境,nginx 安装过程不再赘述。
如果你的 vps 系统是比较新的,例如 Debian 9 ,可能已经预置了 python3.5 和 sqlite3。可以通过下面的命令查看_sqlite3.so
情况,如果有类似 /usr/lib/python3.5/lib-dynload/_sqlite3.cpython-35m-x86_64-linux-gnu.so
这样的文件,则不需要再编译安装 sqlite3 和 python3。
1 | find / -name _sqlite*.so |
编译安装 sqlite3
- 下载源码
- 解压
- 进入目录
- 编译
- 安装
1 | wget https://www.sqlite.org/2019/sqlite-autoconf-3280000.tar.gz |
安装成功后,会出现类型下面的提示
编译安装 python 3
之前有编译安装 python3 的重新进入源码目录编译安装,没有的需下载源码。
下载 python 源码
用 wget 从官网下载源码,最低可选择版本 python3.5。
1 | cd ~ |
解压,配置
下载完成后解压,然后修改setup.py
1 | tar -xzvf Python-3.6.4.tgz |
查找 sqlite_inc_paths
新增
1 | '/usr/local/sqlite/include', |
完成后如下
保存并退出。
编译,安装
1 | ./configure --enable-loadable-sqlite-extensions --prefix=/usr/local/python3 |
建立软链
建立 python3 和 pip3 的软链(安装过 python3 的不需要再建软链)。
1 | ln -s /usr/local/python3/bin/python3 /usr/bin/python3 |
建立软链后输入 python3 即可进入 python3 解释器,同时你还可以输入 python 或 python2 进入 python2 解释器,二者可以共存。
下载 PT-Gen
lnmp 新建主机,设置网站根目录和配置文件
1 | lnmp vhost add |
进入网站根目录并下载程序源码, v0.3.5 用户先杀掉uwsig进程和删除网站目录里面的 PT-Gen。
1 | cd /home/wwwroot/api.example.com |
修改数据库文件权限,使 www 用户可以读写数据库。
1 | chmod -R 777 database/ |
安装依赖库
1 | pip3 install -r requirement.txt |
安装,配置 uWSGI
1 | pip3 install uwsgi |
新建配置文件
1 | vim config.ini |
填入此配置文件内容并保存
1 | [uwsgi] |
建议不要使用 root 用户启动 uwsgi,保持和 nginx 的启动用户一样。lnmp 中 nginx 进程是属于www ,所以 uwsgi 的 uid/gid 也要指定为 www 用户。
配置 nginx
修改 nginx 网站配置文件
1 | vim /usr/local/nginx/conf/vhost/api.example.com.conf |
location /
段添加 uwsgi 相关配置, v0.3.5 用户将 run:app
改成 app
1 | location / |
加载配置文件
1 | lnmp nginx reload |
运行后端
1 | uwsgi --ini config.ini |
这时访问 api 的域名,会出现提示 Hello world~
,表示程序已成功运行。
其他操作:
- 重载:
uwsgi --reload /tmp/uwsgi.pid
- 停止:
uwsgi --stop /tmp/uwsgi.pid
自动更新
后台自动更新数据库需要在 crontab 中添加,建议10分钟更新5个。
1 | crontab -e |
最后一行添加
1 | */10 * * * * cd /home/wwwroot/api.example.com/ && /usr/local/bin/flask update_infogen |
修改前端页面 api
PT-Gen 的 api 的路径为 api.example.com/infogen
,前端页面修改此处的api网址为自己的即可。