Flask+Nginx+uWSGI在Ubuntu服务器上的配置
Flask+Nginx+uWSGI在Ubuntu服务器上的配置
Step1 安装系统环境
Ubuntu服务器选择是阿里云的ECS服务,ECS提供单独的内存\CPU\带宽\存储规格可以选择,并且提供合适的镜像可以安装。安装镜像后通过ssh进行远程管理,配置。配置的自由程度非常高,也适合进行远程的编程和调试,作为编程调试的服务器和测试服务器非常棒。
服务器的环境:
* 确认系统版本
cat /proc/version
Linux version 3.13.0-95-generic (buildd@lgw01-58) (gcc version 4.8.4 (Ubuntu 4.8.4-2ubuntu1~14.04.3) ) #142-Ubuntu SMP Fri Aug 12 17:00:09 UTC 2016
安装必要的软件
apt-get install python3 python3-dev build-essential mysql nginx
pip install uwsgi
Step2 部署运行环境
Flask应用的部署是通过uWSGI发布Nginx上运行的。这个结构简单来说Nginx是一个类似apache的提供静态网页的服务器,并不能直接运行和部署python的应用(Flask应用),因此需要uWSGI对Flask应用进行解析和运行,Nginx与uWSGI进行通信并提供Web服务。
创建应用目录
在部署之前先在/work下面创建应用目录,并将代码从服务器上同步下来。
mkdir /work/demoapp/
cd /work/demoapp/
git clone git://****
配置uWSGI
在应用目录中创建一个uWSGI的配置文件/work/demoapp/uwsgi_configuration.ini
,配置内容如下:
[uwsgi]
# 应用目录
base = /work/demoapp/
# 应用名称
app = demoapp
# 获取app的python模块名称
module = icetea_server
# 在模块中的app名称
callable = app
# 如果是使用venv的,使用这个python环境
# home = %(base)/venv
pythonpath = %(base)
# 用于和nginx通讯的socket文件路径
socket = /var/www/demoapp/icetea_uwsgi.sock
# socket文件的权限
chmod-socket = 664
# log文件的路径
logto = /var/log/uwsgi/icetea_uwsgi.log
创建上述中涉及到的两个目录,/var/www/demoapp/目录用于存放应用修改的文件,例如此时的socket文件以及其他的临时文件,/var/log/uwsgi存放应用的log文件,这两个目录chown到当前用户,然后在当前用户下,可以通过uWSGI使用此配置文件运行。
sudo mkdir /var/www/demoapp/
sudo chown demo:demo /var/www/demoapp/
sudo mkdir /var/log/uwsgi/
sudo chown demo:demo /var/www/uwsgi
uwsgi --ini /var/www/demoapp/demoapp_uwsgi.ini
多数情况下,uWSGI应该以系统服务运行。并且uWSGI提供了emperor模式管理多个uWSGI的应用。先切换到root模式创建一个服务配置文件sudo touch /etc/init.d/uwsgi.conf
,使用emperor模式管理/etc/uwsgi/vassals 下面的uwsgi的app配置文件。
description "uWSGI"
start on runlevel [2345]
stop on runlevel [06]
respawn
env UWSGI=/var/www/demoapp/venv/bin/uwsgi
env LOGTO=/var/log/uwsgi/emperor.log
exec $UWSGI --master --emperor /etc/uwsgi/vassals --die-on-term --uid www-data --gid www-data --logto $LOGTO
同样在root模式下,创建/etc/uwsgi/vassals
目录。并将之前demoapp的uwsgi配置文件链接到此文件目录下。
sudo mkdir /etc/uwsgi && sudo mkdir /etc/uwsgi/vassals
sudo ln -s /var/www/demoapp/demoapp_uwsgi.ini /etc/uwsgi/vassals
然后可以启动uWSGI服务sudo service uwsgi start
,由于此时uwsgi服务的运行用户是www-data,因此将之前创建的存放socket的文件目录以及存放log的文件目录的用户更改为www-data。
sudo chown -R www-data:www-data /var/www/demoapp/
sudo chown -R www-data:www-data /var/log/uwsgi/
配置Nginx
配置好的并已经成功启动的uwsgi服务,可以解析和运行flask应用,现在需要配置nginx和uwsgi服务通信将Flask应用部署为web服务。首先删除nginx的默认网站。
sudo rm /etc/nginx/sites-enabled/default
如果安装之前版本的nginx,默认网站可能存在于/etc/nginx/conf.d文件夹中
在应用目录中为应用创建nginx的配置文件。
server {
listen 80;
server_name localhost;
charset utf-8;
client_max_body_size 75M;
location / { try_files $uri @yourapplication; }
location @yourapplication {
include uwsgi_params;
uwsgi_pass unix:/var/www/demoapp/demoapp_uwsgi.sock;
}
}
连接到/etc/nginx/conf.d/文件夹中,并重启nginx服务。
sudo ln -s /var/www/demoapp/demoapp_nginx.conf /etc/nginx/conf.d/
sudo /etc/init.d/nginx restart
OK, 配置成功。
Flask+Nginx+uWSGI在Ubuntu服务器上的配置的更多相关文章
- 基于Centos7+Flask+Nginx+uWSGI+Python3的服务器网页搭建教程
之前完成了贴吧签到系统的搭建,笔者想将这个功能分享给更多人使用,所以尝试搭建了一个网页,一路遇到了很多问题,最终解决了,记录下过程分享给大家 首先安装 uWSGI ,和 Nginx 配套使用,具体用途 ...
- [阿里云部署] Ubuntu+Flask+Nginx+uWSGI+Mysql搭建阿里云Web服务器
部署地址:123.56.7.181 Ubuntu+Flask+Nginx+uWSGI+Mysql搭建阿里云Web服务器 这个标题就比之前的"ECS服务器配置Web环境的全过程及参考资料&qu ...
- Nginx+uwsgi+supervisor+Ubuntu+flask
Nginx+uwsgi+supervisor+Ubuntu+flask Nginx+uwsgi+supervisor在Ubuntu上部署flask应用 网上找了许多讲关于Flask应用部署的文章几乎都 ...
- 在ubuntu服务器上安装tomcat 9
前提条件: 确保ubuntu服务器上 已经安装 java 8 或更高版本,安装java8可以参考我的另一篇博文 通过 ppa 在ubuntu server 上安装java 8 java -versio ...
- 如何将web项目部署到Ubuntu服务器上
情景回顾: 前几天在下本着人道主义原则帮我老师的一个朋友做了个小网页,(啥人道不人道的,主要是给钱了),做完之后本来是想偷懒直接把网页扔给他自己部署去吧,结果让我帮忙部署一下,得,偷懒也偷不成了,搞吧 ...
- Ubuntu服务器上相关软件或应用时常打不开的问题
于接触linux系统时间不就,所以在操作上难免会出现失误,以下两个问题就是近期经常出现的问题,具体如下: 1.ubuntu服务器上的浏览器时常打不开. 2.安装的pycharm和系统自带的pychar ...
- 在阿里云的ubuntu服务器上安装xampp时出现unable to realloc unable to realloc 8380000 bytes错误
在阿里云的ubuntu服务器上安装xampp时出现unable to realloc unable to realloc 8380000 bytes错误 解决:增加Swap空间(阿里云缺省没有分配任何 ...
- ubuntu服务器上配置tomcat
前言 嗯,最近想在自己的腾讯云服务器上跑个项目玩玩,由于服务器是重装的系统,所以,只能自己手动装tomcat. 不过,tomcat是基于java的,必须又java环境tomcat才能够使用,因此首先要 ...
- ubuntu服务器上用Nginx和Uwsgi部署django项目
开发环境:ubuntu系统,python3环境 django项目目录: fast_foot 为项目根目录,app为项目应用 现在,我们登陆远程服务器 安装Nginx 安装好了,我们看一下nginx的配 ...
随机推荐
- Value must be an existing directory配置tomcat问题
今天tomcat配置遇到了这么个问题,表示tomcat下少什么文件夹,一般是你的安装目录tomcat文件夹下面少了一个temp文件夹,在tomcat的安装文件夹下建一个temp文件夹再加一次tomca ...
- android开发--sqlite数据库
一.SQLite简介 Google为Andriod的较大的数据处理提供了SQLite,他在数据存储.管理.维护等各方面都相当出色,功能也非常的强大.SQLite具备下列特点: 1.轻量级 使用 SQL ...
- win7配置SMTP服务
有人说WIN7系统没有SMTP服务 怎么可能呢??? 具体安装步骤如下: 控制面板\程序>打开和关闭Windows功能 Internet信息服务 将 万维网服务>应用程序开发功能> ...
- IE6-8下自定义标签的表现
IE6-8是支持自定义标签,但只支持<xxx-yyy />这样的形式,它会翻译成<xxx-yyy></xxx-yyy> 如果你想内套子标签会失败, <ms-k ...
- 宏碁台式机,如何设置u盘启动
1.按delete进入BIOS2.Authentication->Secure Boot状态改为Disabled;Boot Options->Launch CSM状态改为Always;Bo ...
- highchart 动态刷新(可用于制作股票时时走势)
最近项目中要求获取时时的cpu动态图,利用 highchart 可以轻松实现该功能,效果可在此地址查看:动态效果 代码如下: 页面 js 引用: <script src="你项目js的 ...
- Runtime初学习
什么是runtime? runtime是一套纯c的API.平时用oc写的代码在运行时都会先转成runtime代码,然后在执行. runtime可以干什么? 1.交换方法.(method_exchang ...
- php如何获取当前时间
$nowtime=date('Y-m-d'); 这样取出来的值默认为当天的零点,对于做一些数据统计的sql查询比较有用
- Linux性能工具介绍
l Linux性能工具介绍 p CPU高 p 磁盘I/O p 网络 p 内存 p 应用程序跟踪 l 操作系统与应用程序的关系比喻为“唇亡齿寒”一点不为过 l 应用程序的性能问题/功能问 ...
- SQL Server更新表(用一张表的数据更新另一张表的数据)
a) 写法轻松,更新效率高: update table1 set field1=table2.field1,field2=table2.field2 from table2 where table1. ...