Erlo

nginx+gunicorn项目部署

时间:2018-10-12 10:52   阅读:8次   来源:博客园页面报错

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		上传的代码
安装python环境
第一步:安装wget(如果已经安装跳过)
yum install wget

 

第二步:安装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
安装supervisor
yum install supervisor -y

如果报如下错误,安装yum的扩展源

安装yum的扩展源

yum install epel-*

 

添加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

配置信息

[program:logo_api_server]
directory = /root/data/server/logo_api/
command = /root/data/virtual/logo/bin/gunicorn -w 1 -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 = root
redirect_stderr = true
stdout_logfile_maxbytes = 20MB
stdout_logfile_backups = 20
stdout_logfile = /root/data/logs/supervisor.log
安装虚拟环境
apt-get install python-virtualenv (ubuntu已经安装过,可省略)
virtualenv -p /usr/bin/python3 logo (采用他,安装在本文件夹,)
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
开进程管理
/usr/bin/python /usr/bin/supervisord -c /etc/supervisord.conf
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!了

 

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配置文件

这样就可以启动4个进程同时处理HTTP请求,提高系统的使用效率及性能。 还可以把端口8000改为其他

而在实际应用中,应使用后台执行的方式启动服务

nohup 启动服务的命令 &
复制代码

nohup gunicorn -w 4 -b 127.0.0.1:8000 入口文件名:app &
复制代码

这时你可以在本机的浏览器上访问127.0.0.1:8000,浏览器上就会出现Hello World!

注意:如果是想通过外网访问的话就要把ip改为内网的ip

7、重启Gunicorn

输入命令

pstree -ap|grep gunicorn
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
2.22 使用supervisor进行线程监控
/usr/bin/python /usr/bin/supervisord -c /etc/supervisord.conf

 

下一篇:项目部署的流程

评论留言

还没有评论留言,赶紧来抢楼吧~~

Erlo大厅()

* 这里是“Erlo大厅”,在这发言所有人都可以看到。只保留当天信息

  • Erlo.vip2018-10-23 10:19:12Hello、欢迎使用Erlo大厅,这里是个吐槽的地方。
  • 首页 源码分享 新闻资讯 ERLO 搜索
    鼠标试试
    返回顶部