# ubuntu16.04+nginx+gunicorn部署flask项目

ubuntu16.04+nginx+gunicorn部署flask项目

前期准备配置服务器上的环境:

1.我们部署项目需要使用到虚拟环境,因此下载一个虚拟环境包
sudo apt-get install python-dev python-pip python-virtualenv

如果不行使用这两种方法试试

python2/3创建方法;

1.pip install python3-env 安装虚拟环境包

2.python3 -m venv <虚拟环境文件名> 或者 python -m venv <虚拟环境名字>

3.进入该虚幻环境 并激活 激活指令activate

4.退出虚拟环境直接就是 deactivate

python2/3创建方法:

1.pip install virtualenv
2.virtualenv <虚拟环境名>
3.进入该虚幻环境 并激活 激活指令 进入bin文件内 source activate

(进入成功的话有个标志(venv))
在这里插入图片描述

4.退出虚拟环境直接就是 deactivate

2.安装nginx

sudo apt-get install nginx

3.进入虚拟环境安装gunicorn

(venv) $ pip install gunicorn

安装完之后就是上传项目文件

1.使用xftp传文件到服务器,项目就放到之前创建的虚拟环境目录内。

进入虚拟环境,安装第三方库,使用清单的方式。

2.先生成我们所需要安装的第三方库

pip freeze >> requirements.txt

说明:>>这个符号意思是增加内容,这里是将需要安装的第三方库安装到requirements.txt中

还有一个符号> 是覆盖的意思。

3.使用清单方式安装库

pip install -r requirements.txt

4.配置nginx

进入 /etc/nginx/sites-available

将default删除,重新写一个配置文件

这里写的是基本配置

注意“ ; ”不能省略

#负载均衡,说明本地项目运行的路径
upstream upstream_name{
    
    
	ip_hash;
	server 127.0.0.1:5000; #这里是自己项目运行的服务器+端口
}
server{
    
    

​		listen 80;    #你需要监听的端口
		listen 443 ssl; #装证书需要https时候添加 端口号一定是443 
		server_name  zhangsan.com  ;   #填写域名或者这里填你的服务器的公网ip ,那么最后打开网址 zhangsan.com:80就能打开你的项目,80可以不写,如果监听其他端口不得省略。

​		location  /static{
    
                            
				alias  /home/venv/flask-test/app/static;  #这里配置静态文件的地址    如果访问的链接是以/static结尾的,那么服务器就会自动从 /home/venv/falsk-test/app/static/上面找文件资源                           
		}

​		location /{
    
    
				proxy_pass  http://upstream_name;  #使用upstream
				proxy_set_header Host $host;                                 #这里就是默认的一样就可以。
				proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;  
		}

		#需要ssl证书的时候添加 以下配置
		ssl_certificate /etc/myapp/ssl/ssl.crt; # 改为自己申请得到的 crt 证书文件的绝对路径  pem文件也如此
 		ssl_certificate_key   /etc/myapp/ssl/ssl.key; # key文件证书的绝对路径
 
}

#这里是重定向跳转,监听80端口默认是http的链接,那么我们就跳转到https
server{
    
    
        listen 80;
        server_name zhangsan.com;
        rewrite ^/(.*)$ https://zhangsan.com:443/$1 permanent;
    }

5.启动gunicorn

进入虚拟环境启动,还有进入到当前项目的启动程序的目录

(venv) $ gunicorn -w 4 -b 127.0.0.1:9000 run:application

That’s all! 它的安装就这么简单。不过这里得作一个解释。就是最后的那个参数 run:application

表示启动flask程序。 run是这个项目启动程序的文件名,application是flask项目实例,即application=Flask(_name__)

6.结束

当然,就使用gunicorn启动完程序之后就可以了,不过也可以使用supervisor进程管理工具,使得项目可以更好的管理。

还可以参考:https://www.cnblogs.com/ray-liang/p/4837850.html

7.注意

如果不能启动,可能是你端口被占用,或者防火墙开启了,或者端口没有打开。

nginx基本使用

进程查看 ps aux|grep nginx

1.基本命令:

nginx 启动nginx服务

nginx -s reload 重启nginx

nginx -s quit 优雅退出 (此时执行此命令之时,若是有人在访问资源,要等到其访问完之后,nginx就会停止)

nginx -s stop 强行停止服务

2.nginx配置文件在

/etc/nginx/

sites-available 配置文件,在这里配置,然后链接文件到sites-enabled

sites-enabled 是sites-availablez中的文件执行的配置文件

3.基本的配置

进入 /etc/nginx/sites-available

将default删除,重新写一个配置文件

这里写的是基本配置

注意“ ; ”不能省略

server{

​ listen 80; //你需要监听的端口

​ server_name zhangsan.com ; //填写域名或者这里填你的服务器的公网ip

​ location /static{

​ alias /home/venv/flask-test/app/static ; //这里配置静态文件的地址

}

​ location /{

​ proxy_pass http://127.0.0.1:9000 //这里http一定不能省略 还有自己执行这个项目运行的端口

​ proxy_set_header Host $host; //这里就是默认的一样就可以。

​ proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

}

}

4.日志记录

nginx服务器执行日志在

/var/log/nginx中,

gunicorn说明

这是一个支持wsgi协议的一个服务器,他能能够与各种wsgi web框架协作。而flask是一个基于wsgi协议的web框架,所以我们这里使用了gunicorn。。 还有支持wsgi协议的服务器。比如uwsgi。不过不建议使用,比较复杂。

重启gunicorn
先查询gunicorn进程号关闭

ps -aux| grep gunicorn

根据pid杀死进程

kill -9  pid号

supervisor

一个进程管理工具。

supervisor命令行启动

    supervisorctl -c /etc/supervisor/supervisord.conf.dpkg-new

一些命令

start <需要运行的进程>

stop 《需要停止的进程》

reload 重新加载

猜你喜欢

转载自blog.csdn.net/weixin_43919632/article/details/101038987
今日推荐