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的配 ...
随机推荐
- 移动端自动化环境搭建-stuptools和pip的安装
安装stuptools和pip A.安装依赖 setuptools 和 pip 并非必须安装的两个包,但安装之后,后续再安装 Python 的库将变得非常简单. B.安装过程
- WIn7系统下 打开.exe程序出现已停止工作关闭程序之解决办法
新装WIN7系统出现 .NET组建没有安装 可到官网下载安装 NETFx4.0 运行MVB 上位机SIM.EXE出现应用程序已停止工作问题 解决办法: 需关闭WIN7 DEP 如下 开始-运行( ...
- 两个shell脚本
脚本1停止lampp #!/bin/bash #set -xv 开启调试模式? count=`ps -ef|grep lampp|grep -v "grep"|wc -l` # ...
- flume log4j配置
版权声明:本文为博主原创文章,未经博主允许不得转载. 1.依赖jar包导入,通过maven管理,pom文件增加如下配置: <!-- log4j输出日志到flume的appender依赖包 --& ...
- oracle 客户端单独配置
本文目的是在CentOS 5.3上安装Oracle 11.2 instant client来访问远端的Oracle 10.2数据库,笔者测试通过,应该也适用于Redhat Linux 5.x ...
- 珍惜每一滴水(kbmmw 中的内存调试)
作为一个服务器端的应用,最基本的要求就是稳定,当然要做一个稳定的服务器端,需要涉及到很多方面, 内存泄露就是稳定的一个致命杀手,因为服务器的物理内存是有限的,即使一个功能有很小的内存泄露,经过 长时间 ...
- BeanUtils.populate的作用
它是在org.apache.commons.beanutils.BeanUtils包中的一个方法. 方法的作用:将一些 key-value 的值(例如 hashmap)映射到 bean 中的属性. ...
- jQuery MiniUI Demo
http://www.miniui.com/demo/#src=datagrid/datagrid.html
- c# 实现 java 的 System.currentTimeMillis() 值
本文地址:http://www.cnblogs.com/jying/p/3875331.html 以下一句即可实现 java 中的 System.currentTimeMillis() 值 , , , ...
- Office 365 系列五 -------- Imap邮箱迁移步骤
当客户购买了我们的Office 365之后,第一个功能必然是会用我们的企业邮箱,如果企业之前是用 263.腾讯.网易等的邮件厂商的话,必然会涉及到邮件的迁移, 其实说到邮箱迁移,我们办法很多,如果人数 ...