以下基本是在文章 在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 应用可以实现高效、稳定且可扩展的部署。这种方式适用于小型项目到大型企业级应用,因为它能够灵活地处理负载、优化性能,并提供高可用性。
至此,你已经在阿里云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 ...
- 此时,uWSGI 和 Flask 应用应该已经连接并等待请求。 8. 最后一步: - 重启 Nginx 服务以应用配置更改:`sudo service nginx restart`。 - 通过浏览器访问服务器的 IP 地址,如果一切配置正确,你应该能看到你...
在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 ...
部署方面,可以使用Gunicorn或uWSGI作为WSGI服务器,Nginx作为反向代理和静态文件服务器,配合Gunicorn部署在如Ubuntu这样的Linux系统上。 10. **安全防护**:考虑系统安全,可以利用Python的CSRF(跨站请求伪造)...
10. **部署到生产环境**:在生产环境中,可能需要使用gunicorn或uWSGI等应用服务器,以及Nginx作为反向代理来提供高可用性和性能优化。 以上步骤是通用的安装流程,但在具体操作中,如Fedora系统下,可能还需要考虑...