flask+uwsgi+nginx配置

flask+uwsgi+nginx配置

uwsgi文件

[uwsgi]
master = true
socket=127.0.0.1:5000 #监听的端口号
chdir = /var/app/flask_project #项目文件路径
wsgi-file = /var/app/flask_project/app.py #项目的启动文件
callable = app      # flask实例名称
pidfile =/var/app/flask_project/uwsgi.pid #项目的pid文件
processes = 2 #项目的进程数量
threads = 8 #项目的线程数量
buffer-size = 32768 #项目的缓存大小
daemonize=/var/app/flask_project/uwsgi.log #日志文件

# uwsgi启动命令 uwsgi -d --ini uwsgi.ini的文件目录 -d后台启动

nginx


server {
    listen       80; #监听的端口
    server_name  localhost; #域名

    #charset koi8-r;

    charset utf-8; #编码格式
    client_max_body_size 75M; 
    #access_log  logs/host.access.log  main;

    location / {
        include uwsgi_params; #导入uwsig文件
        uwsgi_pass 127.0.0.1:5000; #转发的端口
        uwsgi_param UWSGI_PYTHON /bin/python3; #python解释器所在的路径,如果有虚拟环境可将路径设置为虚拟环境
        uwsgi_param UWSGI_CHDIR /var/app/flask_project;#项目的根目录
        uwsgi_param UWSGI_SCRIPT app:app;#项目的主程序
    }
        

Vue

#Vue需要先打包 npm run build
#将生成的dist文件夹复制到服务器上
#修改nginx.conf
#写两个server,一个用来代理vue页面,一个用来代理后台服务

##代理的后台项目
server {
        listen 81;
        server_name  localhost;

        #charset koi8-r;

        charset utf-8;
        client_max_body_size 75M;
        #access_log  logs/host.access.log  main;

        location / {
            include uwsgi_params;
            uwsgi_pass 127.0.0.1:5000;
            uwsgi_param UWSGI_PYTHON /bin/python3;
            uwsgi_param UWSGI_CHDIR /var/app/flask_project;
            uwsgi_param UWSGI_SCRIPT app:app;
        }
        
## 代理的vue页面
  server {
        listen       80;
        server_name  localhost;

        charset utf-8;
        client_max_body_size 75M;
        #access_log  logs/host.access.log  main;

        location / {
            root /var/app/flask_vue/dist;
            index index.html index.html;
        }
        location /api {
	   	  proxy_pass http://127.0.0.1:81;     # 反向代理到后端
          proxy_set_header   X-Real-IP           $remote_addr;
          proxy_set_header   Host                $host;
          proxy_set_header   X-Forwarded-For     $proxy_add_x_forwarded_for;
          proxy_set_header   X-Forwarded-Proto   $scheme;
	    }
    }


将nginx添加到systemctl中

#需要在/usr/lib/systemd/system/下创建nginx.service文件
#配置如下
[Unit]
Description=nginx  web server
Documentation=http://nginx.org/en/docs/
After=network.target remote-fs.target nss-lookup.target

[Service]
Type=forking
PIDFile=/run/nginx.pid #nignx生成的pid文件,默认在nginx安装目录的logs下,可以再nginx.conf内修改nginx.pid的生成路径
ExecStartPre=/usr/local/nginx/sbin/nginx -t -c #nginx的启动路径
/usr/local/nginx/conf/nginx.conf #nginx的默认启动配置文件
ExecStart=/usr/local/nginx/sbin/nginx -c #nginx的启动路径 /usr/local/nginx/conf/nginx.conf
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true

[Install]
WantedBy=multi-user.target


将nginx添加到service中

#需要在/etc/init.d/下创建nginx文件
#配置如下
#!/bin/bash
# nginx Startup script for the Nginx HTTP Server
# it is v.0.0.2 version.
# chkconfig: - 85 15
# description: Nginx is a high-performance web and proxy server.
#              It has a lot of features, but it's not for everyone.
# processname: nginx
# pidfile: /var/run/nginx.pid
# config: /usr/local/nginx/conf/nginx.conf
nginxd=/usr/local/nginx/sbin/nginx
nginx_config=/usr/local/nginx/conf/nginx.conf
nginx_pid=/var/run/nginx.pid
RETVAL=0
prog="nginx"
# Source function library.
. /etc/rc.d/init.d/functions
# Source networking configuration.
. /etc/sysconfig/network
# Check that networking is up.
[ ${NETWORKING} = "no" ] && exit 0
[ -x $nginxd ] || exit 0
# Start nginx daemons functions.
start() {
if [ -e $nginx_pid ];then
   echo "nginx already running...."
   exit 1
fi
   echo -n $"Starting $prog: "
   daemon $nginxd -c ${nginx_config}
   RETVAL=$?
   echo
   [ $RETVAL = 0 ] && touch /var/lock/subsys/nginx
   return $RETVAL
}
# Stop nginx daemons functions.
stop() {
        echo -n $"Stopping $prog: "
        killproc $nginxd
        RETVAL=$?
        echo
        [ $RETVAL = 0 ] && rm -f /var/lock/subsys/nginx /var/run/nginx.pid

}
# reload nginx service functions.
reload() {
    echo -n $"Reloading $prog: "
    #kill -HUP `cat ${nginx_pid}`
    killproc $nginxd -HUP
    RETVAL=$?
    echo
}
# See how we were called.
case "$1" in
start)
        start
        ;;
stop)
        stop
        ;;
reload)
        reload
        ;;
restart)
        stop
        start
        ;;
status)
        status $prog
        RETVAL=$?
        ;;
*)
        echo $"Usage: $prog {start|stop|restart|reload|status|help}"
        exit 1
esac
exit $RETVAL

命令

  • window下默认编辑完的文本格式为utf-8,放到linux中是不能使用的,需要改为UNIX格式
  • 在vim下可以使用 set fileencoding 查看文件的编码格式
  • 可以使用 dos2unix工具转换文件格式
  • yum install dos2unix
  • dos2unix 文件路径
  • 重启uwsgi uwsgi --reload uwsgi.pid
Flask是一个基于Python的轻量级Web框架,它提供了简单易用的工具来构建Web应用程序。Flask具有灵活的设计,可以根据需求进行扩展和定制。它支持RESTful风格的API开发,并且具有良好的可扩展性,适用于开发小型到中型的Web应用。 uWSGI是一个Web服务器和应用服务器,它可以将Web应用程序从框架中分离出来,并通过WSGI协议与框架进行通信。它支持高并发和负载均衡,并且具有内置的缓存机制和性能监控。uWSGIFlask配合使用可以提高Web应用程序的性能和稳定性。 Nginx是一个高性能的开源HTTP服务器和反向代理服务器。它可以处理大量并发连接,并能有效地分发请求到后端服务器。Nginx的反向代理功能可以将请求转发给uWSGI服务器,然后由uWSGI服务器处理Flask应用程序的逻辑。 使用FlaskuWSGINginx的组合可以实现一个高性能的Web应用程序架构。首先,Flask用于开发Web应用程序的逻辑和路由。然后,uWSGI作为应用程序服务器,将Flask应用程序加载到内存中,并以WSGI协议与Nginx进行通信。最后,Nginx作为前端服务器,通过负载均衡和反向代理将请求分发到uWSGI服务器。 这种架构可以提供高并发、可扩展和稳定的Web应用程序。Flask提供了优雅的开发方式,uWSGI处理应用程序的逻辑和性能优化,而Nginx作为前端服务器提供高性能的负载均衡和反向代理。整个架构可以根据需求进行灵活的配置和扩展,以满足不同规模的Web应用程序的需求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值