以下基本是在文章 在Ubuntu上使用Nginx部署Flask 应用 上做了部分调整,没有使用virtualenv,python版本3.4。
依赖
安装pip3
sudo apt-get install python3-setuptools sudo easy_install3 pip
安装python3-dev,uwsgi依赖,否则直接安装uwsgi可能会遇到python.h找不到的问题
sudo apt-get install python3-dev
安装Flask
sudo pip3 install Flask
安装uwsgi
sudo pip3 install uwsgi
项目路径
将Flask项目移动到/var/www/目录下(非必须),假设工程文件夹叫做pydemo,该文件夹下包含的Flask入口文件为demo.py,
设置一下项目文件权限归xuanzhui所有
sudo chown -R xuanzhui:xuanzhui /var/www/pydemo/
注意:按照Flask官网的说法,部署的python文件中,所有app.run() 必须放在if __name__ == '__main__'中
Please make sure in advance that any app.run()
calls you might have in your application file are inside an if __name__ == '__main__':
block or moved to a separate file. Just make sure it’s not called because this will always start a local WSGI server which we do not want if we deploy that application to uWSGI.
Nginx
安装
sudo apt-get install nginx
配置文件路径 /etc/nginx/conf.d/
启动
sudo /etc/init.d/nginx start
停止
sudo /etc/init.d/nginx stop
重启
sudo /etc/init.d/nginx restart
配置Nginx
删除默认的配置文件(不删也无所谓)
sudo rm /etc/nginx/sites-enabled/default
直接在工程目录下创建一个配置文件/var/www/pydemo/pydemo_nginx.conf
文件内容
server { listen 80; server_name localhost; charset utf-8; client_max_body_size 75M; location / { try_files $uri @yourapplication; } location /static { root /var/www/pydemo/; } location @yourapplication { include uwsgi_params; uwsgi_pass unix:/var/www/pydemo/pydemo_uwsgi.sock; } }
将刚建立的配置文件使用符号链接到Nginx配置文件文件夹中,重启Nginx
sudo ln -s /var/www/pydemo/pydemo_nginx.conf /etc/nginx/conf.d/ sudo /etc/init.d/nginx restart
配置uWSGI
在工程目录下创建配置文件 /var/www/pydemo/pydemo_uwsgi.ini
文件内容
[uwsgi] #application's base folder base = /var/www/pydemo chdir = /var/www/pydemo #python module to import module = demo pythonpath = /usr/bin/python3.4 #socket file's location #%n the file name without extension socket = /var/www/pydemo/%n.sock #permissions for the socket file chmod-socket = 666 #the variable that holds a flask application inside the module callable = app #location of log files logto = /var/log/uwsgi/%n.log
chdir在下面启动uwsgi emperor时是必须的
socket要和nginx中设置uwsgi_pass的文件名一致
然后创建log存放的文件夹并设置该文件夹的权限归xuanzhui
sudo mkdir -p /var/log/uwsgi sudo chown -R xuanzhui:xuanzhui /var/log/uwsgi
此时运行uwsgi,通过localhost就可以访问资源
uwsgi --ini /var/www/pydemo/pydemo_uwsgi.ini
为了让uwsgi在后台运行,继续配置emperor,此处使用systemd
uWSGI Emperor
创建一个systemd unit文件 /etc/systemd/system/emperor.uwsgi.service
文件内容
[Unit] Description=uWSGI Emperor After=syslog.target [Service] ExecStart=/usr/local/bin/uwsgi --master --emperor /etc/uwsgi/vassals --die-on-te rm --uid xuanzhui --gid xuanzhui --logto /var/log/uwsgi/emperor.log # Requires systemd version 211 or newer RuntimeDirectory=uwsgi Restart=always KillSignal=SIGQUIT Type=notify StandardError=syslog NotifyAccess=all [Install] WantedBy=multi-user.target
ExecStart运行uWSGI守护进程并让它到/etc/uwsgi/vassals文件夹查找配置文件。创建这个文件夹,在其中建立一个链到我们刚创建配置文件的符号链接。
sudo mkdir /etc/uwsgi && sudo mkdir /etc/uwsgi/vassals sudo ln -s /var/www/pydemo/pydemo_uwsgi.ini /etc/uwsgi/vassals
sudo systemctl enable emperor.uwsgi.service
enable之后将上面的uwsgi进程kill掉,启动emperor服务,所有配置完成
sudo systemctl start emperor.uwsgi.service
关闭
sudo systemctl stop emperor.uwsgi.service
重启
sudo systemctl restart emperor.uwsgi.service
日志文件
uWSGI Emperor将日志写到/var/log/uwsgi/emperor.log;这个文件夹还包含着每个应用的单独日志:/var/log/uwsgi/pydemo_uwsgi.log。
ref http://uwsgi-docs.readthedocs.org/en/latest/Systemd.html
相关推荐
在本教程中,我们将深入探讨如何在阿里云上部署基于Flask的应用,使用Nginx作为反向代理服务器和uWSGI作为应用服务器。Flask是一个轻量级的Python Web框架,而Nginx和uWSGI则为Flask应用程序提供了高效、稳定的服务...
部署python flask项目到云服务器 这是我第一次写博客,写的不好请多多见谅。 操作环境是ubuntu16.04,使用xshell和xftp工具,记得进入root用户,如果没有需要设置,怎么设置后面更新。 Python 3.5.2(自带的,需要...
带有 Nginx、uWSGI 和 Hello World Flask 应用程序的 Docker 镜像。 该图像基于我的 ubuntu-python 3.4 图像(它又在 phusion/baseimage 之上运行)。 Hello World 应用程序已启用并将在端口 80 上内部启动,并在...
超详细的flask部署全过程,压缩包内有部署详细步骤和Linux服务器历史命令记录,写的比较详细。我用的是阿里云的linux服务器,其他的linux服务器也大同小异,过程都差不多的,结合百度一定能够部署成功,祝你好运!
Python web 应用的部署通常涉及多...通过 Nginx 和 uWSGI 的组合,Python web 应用可以实现高效、稳定且可扩展的部署。这种方式适用于小型项目到大型企业级应用,因为它能够灵活地处理负载、优化性能,并提供高可用性。
额外收入毕业设计 -- 外包项目网站 -- vue+python+flask+uwsgi+nginx+mysql启动步骤启动后台光盘背面virtualenv --no-site-packages extra_envpip 安装-r 要求.txtpython 运行.py以上开启后台dev环境uwsgi extra_...
至此,你已经在阿里云Ubuntu 1.4服务器上成功部署了Flask应用,通过uWSGI和Nginx提供服务。现在,访问你的服务器域名或IP,就可以看到你的Flask应用在运行了。记得定期更新和监控你的服务器,以确保应用的安全性和...
最近博主在开发一个小项目,本机的开发环境是python3.6,因为需要部署到服务器(python2.7)的关系,所以研究了一下,网上大部分的教程是部署在Ubuntu上的,博主使用的是centos7.0,大部分的部署其实都是类似的,这...
项目部署指南 (Ubuntu16.04 + Nginx + uWSGI) 1. 新系统下, 安装必要的软件包 # apt-get upgrade & apt-get update # apt-get install build-essential python-dev python-pip virtualenv # apt-get install ...
# 基于Flask和TensorFlow的信用评估系统 ## 项目简介 本项目是一个基于Flask框架和TensorFlow深度学习库的信用评估系统。其主要功能是通过Web界面接收用户提交的信贷申请信息,并使用预训练的神经网络模型进行信用...
- 此时,uWSGI 和 Flask 应用应该已经连接并等待请求。 8. 最后一步: - 重启 Nginx 服务以应用配置更改:`sudo service nginx restart`。 - 通过浏览器访问服务器的 IP 地址,如果一切配置正确,你应该能看到你...
Ingredients This Docker image contains the following components Python 3.6.1 Requests Nginx 1.10.0uWSGI 2.0.15Psycopg2 2.7.1Pip 9.0.1SSHAzure SDK Flask Django 1.11.5Ubuntu 16.04 is used as the base ...
在Ubuntu环境中,Python的Flask框架是一个非常流行的轻量级Web服务器网关接口(WSGI)Web应用框架,用于快速构建动态网站、API和服务。这个项目利用Flask的强大功能,创建了一个网络配置程序,这对于自动化网络管理...
毕业设计 --外包项目网站 -- vue+python+flask+uwsgi+nginx+mysql 启动步骤: 启动后台: cd back virtualenv --no-site-packages extra_env pip install -r requirements.txt python run.py > 以上开启后台dev...
在本文记录了我在Ubuntu中部署Flask Web站点的过程, 其中包括用户创建、代码获取、Python3环境的安装、虚拟环境设置、uWSGI启动程序设置,并将Nginx作为前端反向代理。希望对各位有所帮助。 建立一个Python Web程序...
凯文·泽恩德(Kevin Zehnder)主页访问我的网站: 查看简历: 点击展开网站演示选定的项目缩图标题描述代码 Flask-uSWGI-NGINX-Ubuntu 在Ubuntu 20上使用uWSGI和NGINX服务Flask应用程序 C ++ ATM应用简单的C ++ ATM...
阿肖克G Flask Web App 安装与安装 设置ssh-keygen sudo ssh-keygen cat ~ /.ssh/id_rsa.pub # test ... 去做 虚拟服务器自动配置 ...如何在Ubuntu 18.04上使用uWSGI和Nginx服务Flask应用程序 Flask应用
项目部署指南 (Ubuntu16.04 + Nginx + uWSGI)1. 新系统下, 安装必要的软件包 # apt-get upgrade & apt-get update # apt-get install build-essential python-dev python-pip virtualenv # apt-get install nginx ...