nginx+gunicorn项目部署
1.1安装虚拟环境
创建文件夹
mkdir data 目录文件夹
cd data 进入data文件夹
mkdir nginx 创建安装nginx的文件夹
mkdir server 存放代码的文件夹
mkdir logs 存放日志的文件夹
mkdir backup 备份代码的文件夹
mkdir softs 软件存放的位置
mkdir virtual 虚拟环境的位置
mkdir scripts 脚本的运行位置
mkdir scp_codes 上传的代码
安装虚拟环境
apt-get install python-virtualenv (ubuntu已经安装过,可省略)
virtualenv -p /usr/bin/python3 api_server (采用他,安装在本文件夹,)
mkvirtualenv api_server(不要用它,它会自己安装到其他地方)
source api_server/bin/activate (在虚拟环境的active进入虚拟环境)
安装的软件会在虚拟环境下的bin目录下
安装nginx的环境
解压
cd ~/data/softs/
tar xf pcre-8.39.tar.gz
配置
cd ~/data/softs/pcre-8.39
./configure
编译
make
安装
sudo make install
安装nginx
解压
cd ~/data/softs/
tar xf nginx-1.10.2.tar.gz
配置
cd nginx-1.10.2/
./configure --prefix=/root/data/nginx 安装在root/data下面的nginx文件夹
编译
make
安装
make install
查看进程
ps aux | grep nginx
nginx简单基础操作
检查
sudo ~/data/nginx/sbin/nginx -t
开启
sudo ~/data/nginx/sbin/nginx
关闭
sudo ~/data/nginx/sbin/nginx -s stop
重载
sudo ~/data/nginx/sbin/nginx -s reload
1、首先安装Gunicorn
pip install gunicorn
复制代码
2、在入口文件的app.run()加上以下内容
from werkzeug.contrib.fixers import ProxyFix
app.wsgi_app = ProxyFix(app.wsgi_app)
复制代码
例:
from flask import Flask
app = Flask(__name__)
@app.route('/')
def hello_world():
return 'Hello World!'
if __name__ == '__main__':
from werkzeug.contrib.fixers import ProxyFix
app.wsgi_app = ProxyFix(app.wsgi_app)
app.run()
复制代码
3、启动Gunicorn
最简单的方式为
gunicorn 入口文件名:app
复制代码
默认是监听127.0.0.1:8000
如果是要处理高并发则要开多个进程和修改监听端口的画
gunicorn -w 4 -b 127.0.0.1:8000 入口文件名:app
复制代码保存在supervisord 里面的etc/supervisord.d目录下添加一个logo.ini配置文件
添加配置文件
vim /etc/supervisord.d/logo.ini
[program:logo_api_server]
directory = /data/api-service #代码存放的地方
command = /usr/local/python3/bin/gunicorn -w 4 -b :5005 LogoSeverApi:app #-w的参数根据CPU的核数来定,不要超过CPU的核数
#process_name = %(process_num)s ; process_name expr (default %(program_name)s)
#process_name = %(process_num)s
#numprocs = 4 ; number of processes copies to start (def 1)
numprocs_start = 1
autostart = true ; start at supervisord start (default: true)
autorestart = unexpected ; whether/when to restart (default: unexpected)
startsecs = 10 ; number of secs prog must stay running (def. 1)
startretries = 3 ; max # of serial start failures (default 3)
user = dev
redirect_stderr = true
stdout_logfile_maxbytes = 20MB
stdout_logfile_backups = 20
stdout_logfile = /data/api-service/logs/supervisor.log
这样就可以启动4个进程同时处理HTTP请求,提高系统的使用效率及性能。 还可以把端口8000改为其他
而在实际应用中,应使用后台执行的方式启动服务
nohup 启动服务的命令 &
复制代码
即
nohup gunicorn -w 4 -b 127.0.0.1:8000 入口文件名:app &
复制代码
这时你可以在本机的浏览器上访问127.0.0.1:8000,浏览器上就会出现Hello World!
注意:如果是想通过外网访问的话就要把ip改为内网的ip
4、配置nginx
配置改为
server {
listen 80;
server_name example.org; # 这是HOST机器的外部域名,用地址也行
location / {
proxy_pass http://127.0.0.1:8000; # 这里是指向 gunicorn host 的服务地址
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
复制代码
这样启动之后80端口就可以转发到8000端口了
5、检查配置
nginx -t
复制代码
若出现一下内容,则表示配置成功
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
复制代码
6、更新nginx配置
nginx -s reload
复制代码
在已经运行了Gunicorn的前提下,在浏览器访问127.0.0.1就会出现Hello World!了
7、重启Gunicorn
输入命令
pstree -ap|grep gunicorn
1.2:安装wget(如果已经安装跳过)
yum install wget
1.3:安装python3.6(如果已经安装跳过)
2.1.下载python3.6
wget http://cdn.npm.taobao.org/dist/python/3.6.5/Python-3.6.5.tgz
2.2.解压安装包
tar -zxvf Python-3.6.5.tgz
---------------------
2.3安装python3.6的依赖包
yum install -y gcc zlib*
yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel
---------------------
2.4.配置安装路径为/usr/local/python3
./configure --prefix=/usr/local/python3 --with-ssl
make && make install
2.5.将python3.6的路径加入到PATH中
echo "export PATH=$PATH:/usr/local/python3/bin/" >>/etc/profile
source /etc/profile
2.6.建立软连接
ln -s /usr/local/python3/bin/python3 /usr/bin/python3
ln -s /usr/local/python3/bin/pip3 /usr/bin/pip3
---------------------
2.7.安装supervisor
yum install supervisor -y
如果报如下错误,安装yum的扩展源
安装yum的扩展源
yum install epel-*
2.8.添加supervisor的配置
在/etc/supervisord.d目录下添加一个logo.ini配置文件
vim /etc/supervisord.d/logo.ini
内容如下:
[program:logo_api_server]
directory = /data/api-service #代码存放的地方
command = /usr/local/python3/bin/gunicorn -w 4 -b :5005 LogoSeverApi:app #-w的参数根据CPU的核数来定,不要超过CPU的核数
\#process_name = %(process_num)s ; process_name expr (default %(program_name)s)
\#process_name = %(process_num)s
\#numprocs = 4 ; number of processes copies to start (def 1)
numprocs_start = 1
autostart = true ; start at supervisord start (default: true)
autorestart = unexpected ; whether/when to restart (default: unexpected)
startsecs = 10 ; number of secs prog must stay running (def. 1)
startretries = 3 ; max # of serial start failures (default 3)
user = dev
redirect_stderr = true
stdout_logfile_maxbytes = 20MB
stdout_logfile_backups = 20
stdout_logfile = /data/api-service/logs/supervisor.log
2.9创建data目录
mkdir /data
2.10从git上面将代码下载下来,git在内网,如果是线上请将git下载下来然后通过ftp上传到线上坏境
cd /data
git clone http://zhangxiaoyang:messi1020@git.epweike.net:3000/graphics/logo_api api-servicels -
2.11安装程序依赖包
cd /data/api-service/
yum install cairo-devel
pip3 install --upgrade pip
pip3 install -r requirements.txt
nginx+gunicorn项目部署的更多相关文章
- flask +gevent+nginx+Gunicorn+supervisor部署flask应用
上篇 可以完美部署flask ,但是视乎在结合gevent+apscheduler 实现异步非阻塞后台和定时任务的时候视乎不是那么完美.请教了前辈,决定使用flask+gevent+nginx+g ...
- 阿里云安装Nginx+vue项目部署
阿里云安装Nginx+vue项目部署 nginx安装包下载 http://nginx.org/en/download.html nginx安装 首先先安装PCRE pcre-devel 和Zlib,因 ...
- CentOS 下部署Nginx+Gunicorn+Supervisor部署Flask项目
原本之前有一部分东西是在Windows Server,但是由于Gunicorn不支持Windows部署起来颇为麻烦.最近转战CentOS,折腾一段时间,终于简单部署成功.CentOS新手,作为一个总结 ...
- 2020最新nginx+gunicorn+supervisor部署基于flask开发的项目的生产环境的详细攻略
本攻略基于ubuntu1804的版本,服务器用的华为云的服务器,python3(python2已经在2020彻底停止维护了,所以转到python3是必须的)欢迎加我的QQ6398903,或QQ群讨论相 ...
- Nginx+Gunicorn+Supervisor部署Flask应用
Flask 内置了简单的 Web 环境,让我们在开发的时候只需要专注于应用实现,而真正要在生产环境运行时这个简单的 Web 环境就不够用了,还需要一系列操作才能让 Web 应用高效的运行起来.现在记录 ...
- django+nginx+uwsgi 项目部署
Django虽然自带一个Server,但只能作为开发时测试使用,我们需要一个可以稳定而持续的服务器对网站进行部署,比如Apache, Nginx, lighttpd等,本篇将利用nginx和uWSGI ...
- nginx,wsgi项目部署
1.一些重要概念 https://www.cnblogs.com/xiaonq/p/8932266.html 1.1web容器 什么是web容器 1.web容器是帮助我们部署java丶php丶pyth ...
- Gunicorn+Nginx+Flask项目部署
安装python3.6 1)前往用户根目录 >: cd ~ 2)下载 或 上传 Python3.6.7 >: wget https://www.python.org/ftp/python/ ...
- 给我一台全新的服务器,使用nginx+gunicorn+supervisor部署django
0.准备工作 在一台全新的服务器中新建用户以及用户的工作目录,之后的操作都以这个用户的身份进行,而不是直接用root. 举个栗子: 在服务器下新建用户rinka并赋予sudo权限 1) root登陆, ...
随机推荐
- 通过证书请求Https站点
前几天在做与平安银行对接接口,主要是给平安银行推送用户数据(申请贷款的用户),平安银行提供的是https的地址,请求https地址的时候还要发送证书,刚接到这个任务的时候一头雾水,百度上各种所搜,最后 ...
- 11个教程中不常被提及的JavaScript小技巧
这次我们主要来分享11个在日常教程中不常被提及的JavaScript小技巧,他们往往在我们的日常工作中经常出现,但是我们又很容易忽略. 1.过滤唯一值 Set类型是在ES6中新增的,它类似于数组,但是 ...
- Netty源码分析之服务启动
本节主要分析server的启动过程. Netty是基于Nio实现的,所以也离不开selector.serverSocketChannel.socketChannel和selectKey等,只不过Net ...
- 了解Job和JobDeatil ,JobDataMap (三)
一:定义 Job:实现任务逻辑的接口. JobDeatil:JobDeatil为Job提供了许多设置属性,以及JobDataMap成员变量属性,他用来储存特定的Job实例状态信息,调度器需要使用Job ...
- Nginx反向代理上传大文件报错(failed to load resource : net :: ERR_CONNECTION_RESET)
转自: https://blog.csdn.net/kinginblue/article/details/50753271?locationNum=14&fps=1 Nginx反向代理上传大文 ...
- Java基础系列--final、finally关键字
原创作品,可以转载,但是请标注出处地址:http://www.cnblogs.com/V1haoge/p/8482909.html 一.概述 final是Java关键字中最常见之一,表示“最终的,不可 ...
- Java基础之循环语句、条件语句、switch case 语句
Java 循环结构 - for, while 及 do...while 顺序结构的程序语句只能被执行一次.如果您想要同样的操作执行多次,,就需要使用循环结构. Java中有三种主要的循环结构: whi ...
- net4log 添加自定义变量
在log4net.config中 <parameter> <parameterName value="@czyid" /> <dbType value ...
- vue 使用mint-ui实现上拉加载和下拉刷新
解决了官网中下拉刷新存在的问题 <template> <div class="tmpl"> <nav-bar title="商品列表&quo ...
- Asp.Net MVC3 简单入门详解过滤器Filter(转载)
前言 在开发大项目的时候总会有相关的AOP面向切面编程的组件,而MVC(特指:Asp.Net MVC,以下皆同)项目中不想让MVC开发人员去关心和写类似身份验证,日志,异常,行为截取等这部分重复的代码 ...