qgtk.xyz部署笔记
背景
众所周知,近年来,某学习软件下载量全球遥遥领先,连起来绕地球N圈。
于是花了点时间用Python写了个程序来帮助收集挑战答题的问题,虽然还无法完全摆脱人工,半自动怎么也要比全手动的省心。
随后利用Python + flask + Mongodb搭建了一个查询网站。
最近运行着qgtk.xyz的vps硬盘炸了,花了点时间恢复,遂整理了部署笔记如下。
P.S 部署由flask框架编写的Python Web应用,可以参考本文。
环境
Ubuntu 16.04 + Python 3 + Mongodb 3.6.17 + Nginx + uWSGI
环境准备
Mongodb数据库
详见:Mongodb安装与配置(还没写)
配置Python虚拟环境
安装pip3及virtualenv
安装
1 2 |
apt install python3-pip pip3 install virtualenv |
配置
新建虚拟环境
1 2 3 |
mkdir PythonEnv cd PythonEnv virtualenv qgtkRuntimeEnv |
进入虚拟环境
1 2 |
cd PythonEnv/qgtkRuntimeEnv source bin/activate |
安装模块
1 |
pip3 install pymongo flask flask_jsglue flask_pymongo flask_wtf |
安装完成后,退出虚拟环境。
1 |
deactivate |
部署
设置Nginx vhost并上传源码
新建源码目录并上传源码
1 |
mkdir -p /home/Source/qgtk |
配置vhost
1 2 |
cd /usr/local/nginx/conf/vhost/ vim qgtk.xyz.conf |
添加如下内容:
1 2 3 4 5 6 7 8 |
location / {try_files $uri @qgtk;} location @qgtk { include uwsgi_params; uwsgi_pass unix:/home/Source/qgtk/runsock/qgtkRuntime.sock; } location ~ /static { root /home/Source/qgtk/; } |
注释以下内容:
1 2 3 4 5 6 7 8 9 |
#location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$ #{ # expires 30d; #} #location ~ .*\.(js|css)?$ #{ # expires 12h; #} |
如果不注释掉,可能会导致出现大量的404错误。
http到https地址的跳转。
1 |
return 301 https://qgtk.xyz$request_uri; |
安装配置uWSGI
P.S 记得退出虚拟环境。
安装
1 |
pip3 install uWSGI |
提前将runsock、log目录建好。
编辑配置文件
1 |
vim /home/Source/qgtk/config.ini |
应用配置文件如下:
1 2 3 4 5 6 7 8 9 10 11 |
[uwsgi] socket=/home/Source/qgtk/runsock/qgtkRuntime.sock logto=/home/Source/qgtk/log/qgtk_uWSGI.log chmod-socket=066 chdir=/home/Source/qgtk wsgi-file=/home/Source/qgtk/run.py master=true processes=4 threads=2 callable=app virtualenv=/home/PythonEnv/qgtkRuntimeEnv |
这里需要注意的是,使用uwsgi后,要将代码中启动flask内置服务器的代码注释掉。
启动测试一下。
1 |
uwsgi --ini /home/Source/qgtk/config.ini |
正常启动的情况下不会报错。
使用Supervisor管理uWSGI
安装Supervisor
1 |
pip3 install supervisor |
新建目录
1 2 3 |
mkdir -p /home/supervisor/etc/supervisord/ mkdir -p /home/supervisor/etc/supervisord/log mkdir -p /home/supervisor/etc/supervisord/conf |
编辑配置文件
1 |
vim /home/supervisor/supervisor.conf |
内容如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
[unix_http_server] file = /home/supervisor/etc/supervisord/supervisor.sock [supervisord] logfile = /home/supervisor/etc/supervisord/log/supervisord.log loglevel = info pidfile = /home/supervisor/etc/supervisord/supervisord.pid [supervisorctl] serverurl = unix:///home/supervisor/etc/supervisord/supervisor.sock [rpcinterface:supervisor] supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface [include] files = /home/supervisor/etc/supervisord/conf/*.conf |
如果安装在其他地方,根据实际情况修改配置文件即可。
新建软连接到/etc/
1 |
ln -s /home/supervisor/supervisor.conf /etc/supervisord.conf |
编辑Supervisor启动uWSGI的配置文件
1 |
vim /home/supervisor/etc/supervisord/conf/qgtk.conf |
内容如下:
1 2 3 4 5 6 7 8 |
[program:qgtk] command = uwsgi --ini /home/Source/qgtk/config.ini autorestart = true redirect_stderr = true stdout_logfile = /home/Source/qgtk/log/qgtk_supervisor.log stopsignal = INT |
启动/重载配置文件
1 2 |
supervisord #启动 supervisorctl reload #重载配置文件 |
添加开机自动启动
1 |
vim /etc/rc.local |
将上面的启动命令加入rc.local中。
最后
版权声明
转载保留版权: 大D技研室 | 《qgtk.xyz部署笔记》
本文链接地址:https://www.dadclab.com/archives/7536.jiecao
转载须知:如果您需要转载本文,请将版权信息,版权授权方式,以及本文的链接地址注明,谢谢合作。
WSL 配置 →
已有 3 条评论
发表评论
电子邮件地址不会被公开。 必填项已标注。
好复杂,表示看不懂
新年好,好久不久。。
大D TG不。。。
哈哈,好久不见,很少用TG。