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项目部署的更多相关文章

  1. flask +gevent+nginx+Gunicorn+supervisor部署flask应用

    上篇   可以完美部署flask ,但是视乎在结合gevent+apscheduler 实现异步非阻塞后台和定时任务的时候视乎不是那么完美.请教了前辈,决定使用flask+gevent+nginx+g ...

  2. 阿里云安装Nginx+vue项目部署

    阿里云安装Nginx+vue项目部署 nginx安装包下载 http://nginx.org/en/download.html nginx安装 首先先安装PCRE pcre-devel 和Zlib,因 ...

  3. CentOS 下部署Nginx+Gunicorn+Supervisor部署Flask项目

    原本之前有一部分东西是在Windows Server,但是由于Gunicorn不支持Windows部署起来颇为麻烦.最近转战CentOS,折腾一段时间,终于简单部署成功.CentOS新手,作为一个总结 ...

  4. 2020最新nginx+gunicorn+supervisor部署基于flask开发的项目的生产环境的详细攻略

    本攻略基于ubuntu1804的版本,服务器用的华为云的服务器,python3(python2已经在2020彻底停止维护了,所以转到python3是必须的)欢迎加我的QQ6398903,或QQ群讨论相 ...

  5. Nginx+Gunicorn+Supervisor部署Flask应用

    Flask 内置了简单的 Web 环境,让我们在开发的时候只需要专注于应用实现,而真正要在生产环境运行时这个简单的 Web 环境就不够用了,还需要一系列操作才能让 Web 应用高效的运行起来.现在记录 ...

  6. django+nginx+uwsgi 项目部署

    Django虽然自带一个Server,但只能作为开发时测试使用,我们需要一个可以稳定而持续的服务器对网站进行部署,比如Apache, Nginx, lighttpd等,本篇将利用nginx和uWSGI ...

  7. nginx,wsgi项目部署

    1.一些重要概念 https://www.cnblogs.com/xiaonq/p/8932266.html 1.1web容器 什么是web容器 1.web容器是帮助我们部署java丶php丶pyth ...

  8. Gunicorn+Nginx+Flask项目部署

    安装python3.6 1)前往用户根目录 >: cd ~ 2)下载 或 上传 Python3.6.7 >: wget https://www.python.org/ftp/python/ ...

  9. 给我一台全新的服务器,使用nginx+gunicorn+supervisor部署django

    0.准备工作 在一台全新的服务器中新建用户以及用户的工作目录,之后的操作都以这个用户的身份进行,而不是直接用root. 举个栗子: 在服务器下新建用户rinka并赋予sudo权限 1) root登陆, ...

随机推荐

  1. SpringCloud学习1-服务注册与发现(Eureka)

    由于样式兼容性问题,本文后半部分被截断,可到个人博客找到本文: https://blog.rmiao.top/springcloud-eureka/ 前言 Oracle转让Java,各种动态语言的曝光 ...

  2. process_begin: CreateProcess(NULL,......) make (e=87): 参数错误。

    在编译 trinity-android 的过程中,总是报 process_begin: CreateProcess(NULL,......) make (e=87): 参数错误 原因是.MK文件中包含 ...

  3. go map的使用

    欢迎关注go语言微信公众号 每日go语言 golang_everyday go中map用于存储健值对.map格式: map[KeyType]ValueType 声明一个map,键为字符型,值为int型 ...

  4. Electron学习(一)——— electron的安装

    前言 本人是做java开发的(菜鸟),做web项目的朋友们基本上都会遇到同样一个,永远不知道客户会怎么样使用,或者说永远不知道客户会用什么浏览器打开我们做出来的应用,就算你跟他说明了一定得用某某某浏览 ...

  5. Java基础之基础语法

    前言:Java内功心法之基础语法,看完这篇你向Java大神的路上又迈出了一步(有什么问题或者需要资料可以联系我的扣扣:734999078) 一个Java程序可以认为是一系列对象的集合,而这些对象通过调 ...

  6. FCKEditor的使用步骤

    在线发布信息难免要用到在线编辑器,下面就说下在线编辑器的使用步骤: 1.下载FCK,这个不说了 2.把ZZGSEditor文件夹放到网站根目录 3.把FredCK.FCKeditorV2.dll文件放 ...

  7. 关于height,line-height导致的样式混乱的问题

    设置固定border,padding,line-height,但是发现在ie下input标签竟然line-height不起作用,导致实际的高度无法控制 解决方法:添加固定高度height.

  8. c# Newtonsoft.Json封装

    public static T Deserialize<T>(string content) where T : class, new() { return JsonConvert.Des ...

  9. CheckBox-复选框-删除-选中行

    <!--删除选中的行,利用oTable.deleteRow(i)方法--> <!DOCTYPE html> <html xmlns="http://www.w3 ...

  10. EF select 匿名类 问题

    连续两次被相同问题困扰. 一.举例 var query=db.StudentScore.Where(r=> r.SubjectId==subjectId).Select(g=>new {S ...