这里是Ubuntu环境
1. 安装 - nginx1. 安装:sudo apt-get install nginx2. 查看nginx是否安装成功:sudo nginx -v3. 启动:sudo nginx4. nginx配置文件地址:Ubuntu一般都在`/etc/nginx/`目录下(下面会在这个目录下添加配置文件) - pyenv这里是教程地址,作者写的很好,可以按照这个进行配置:https://www.jianshu.com/p/3e93311fe6cb - uwsgi直接在上面创建的虚拟环境里安装即可:pip install uwsgi - supervisor(推荐使用root用户进行配置,非root用户会有权限问题)1. 安装:apt-get install supervisor2. 配置目录:Ubuntu一般都在`/etc/supervisor/`目录下3. 启动:sudo supervisord4. 管理使用:sudo supervisorcrl (使用此命令会进入一个交互环境)可以在环境里使用命令:(程序名配置文件中配置)查看进程状态:status停止进程:stop 程序名停止所有进程:stop all开始进程:start 程序名重启进程:restart 程序名重新载入所有进程:reload新增配置文件后:update (如果不执行update,新的配置不会出现) 2. 安装项目依赖库 - cd进项目目录然后安装项目的依赖库:pip install -r requirements.txt 3. uwsgi配置(先在项目根目录下创建uwsgi.ini文件) [uwsgi]master = trueprocesses = 2chmod-socket = 666uid = rootpythonpath = /home/test/api_test/websitelogformat = %(method) %(uri) %(status) %(addr) [%(ctime)]pidfile = /home/test/run/api_test.pidsocket = /home/test/run/api_test.sockmodule = appcallable = appharakiri = 120listen = 1024enable-threads=trueignore-sigpipe = trueignore-write-errors = truedisable-write-exception = true master:使用主进程来管理其他子进程
processes:启动2个工作进程,生成指定数目的worker/进程
chmod-socket:如果nginx使用socket文件来代理这个服务,需要对这个文件有写的权限,所以这里需要设置权限
uid:用户名
pythonpath:application所在文件目录
logformat:日志格式
pidfile:指定进程文件(自行创建目录存放)
socket:指定socket文件(自行创建目录存放)
module:application所在文件
callable:指向application的变量名
harakiri:请求超时时间秒
listen:监听的队列数
enable-threads:允许application启动子线程
最后三个是上传文件时flask创建临时文件时会出异常,这个是忽略OSError的配置
这里说下uid,我最开始是在本地mac环境配置的nginx代理,配置完之后请求过来日志里出现(13: Permission denied) while connecting to upstream...,意思是没有权限
所以需要设置nginx.conf里的user配置,我是sudo启动的nginx,所以nginx进程的用户,是root用户,(也可以使用ps aux | grep nginx查看启动进程的情况) 。
但是我把user设置成root之后,sudo nginx -t 检查到nginx配置不正确,然后可能是没有写用户组的原因,修改为user root wheel;检查nginx配置之后还是不正确,然后在uwsgi.ini中加入uid=root,就可以了,
原因可能是nginx没有权限去写这个socket的文件,(但是我明明设置了chmod-socket = 666) 。对这里也不了解,所以只能作出猜测,如果有知道的大佬,烦告知 。。
4. supervisor配置 1. 首先:cd /etc/supervisor/2. 发现这个目录下有一个`supervisord.conf`的配置文件3. vim supervisord.conf打开配置文件最后一行(见下面图)发现导入了同级目录下的conf.d目录下的所有.conf后缀的文件,所以把新的配置文件都写到这个conf.d目录下4. cd conf.d(如果没有这个目录创建一个 `sudo mkdir conf.d`)5. 然后编辑文件:vim example.conf(文件名可以随便写,只要后缀是.conf就可以)6. 配置如下:[program:api_test]command=/home/test/.pyenv/versions/api_test/bin/uwsgi /home/test/api_test/uwsgi.inidirectory=/home/test/api_testautostart=trueautorestart=truestdout_logfile=/home/test/logs/uwsgi.api_test.logredirect_stderr=trueexitcodes=0
第一行:program: 后面的就是程序名
command:要运行的命令,我这里是使用虚拟环境里的uwsgi去根据上面配置好的uwsgi.ini文件去运行
directory:项目地址
autostart:自动启动
autorestart:自动重启
stdout_logfile:输出log文件路径
redirect_stderr:error log是否重定向到上面写的输出log文件
exitcodes:默认为0.文档里写好像是退出时的code与是否重启的关系,这里按照文档里的,默认为0
supervisor配置到这里就结束了,可以先把superviso根据上面写的命令先运行起来,进入交互环境后,先update更新配置,然后reload一下,等一会儿之后,status,看一下程序的状态,如果出错,可能是哪块没配置好根据日志里的错误信息对应修改就好,修改完之后需要重新reload或者restart一下,这样supervisor就先运行起来了
5. nginx配置 1. cd /etc/nginx/进入nginx目录2. ls 之后会发现有一个`nginx.conf`的配置文件3. vim nginx.conf在`http`块里有include包含这两个目录下的配置文件(见下图),新增的配置文件就写到这俩目录下(如果没有这俩目录需要新建同名目录)4. cd /etc/nginx/sites-enabled/(两个目录自行选择一个)5. 然后编辑文件:vim example.conf (文件名可以随便写,只要后缀是.conf就可以)6. 配置如下:server {listen 5010;client_max_body_size 50M;server_name 127.0.0.1;location / {access_log/home/test/logs/nginx.api_test.access.log;error_log/home/test/logs/nginx.api_test.error.log;include uwsgi_params;uwsgi_pass unix:///home/test/run/api_test.sock;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_set_header X-Real-IP $remote_addr;proxy_set_header Host $http_host;proxy_set_header X-Forwarded-Proto $scheme;}}
listen:nginx监听的端口,可以有多个server指向同一个端口,只要server_name不同就好
client_max_body_size:客户端最大上传数据大小
server_name:用于配置基于名称的虚拟主机(这里可以直接写域名也可以写ip,也可以使用通配符)
location:路由分发块
access_log和error_log是两个日志文件的位置,自行指定
uwsgi_params:是nginx的设置,直接导入即可
uwsgi_pass:指向上面uwsgi.ini文件中的socket文件
剩下的是设置请求头的一些参数
6. 结束 【使用nginx+uwsgi+supervisor+pyenv部署flask】到这里就配置完了
设置完之后使用:sudo nginx -s reload 重启nginx,就可以了
现在访问:127.0.0.1:5010 已经可以访问到我的项目了
- 春季老年人吃什么养肝?土豆、米饭换着吃
- 三八妇女节节日祝福分享 三八妇女节节日语录
- 老人谨慎!选好你的“第三只脚”
- 校方进行了深刻的反思 青岛一大学生坠亡校方整改校规
- 脸皮厚的人长寿!有这特征的老人最长寿
- 长寿秘诀:记住这10大妙招 100%增寿
- 春季老年人心血管病高发 3条保命要诀
- 眼睛花不花要看四十八 老年人怎样延缓老花眼
- 香槟然能防治老年痴呆症? 一天三杯它人到90不痴呆
- 老人手抖的原因 为什么老人手会抖
