Ubuntu下nginx+uwsgi+flask的执行环境搭建
选择web framwork是个非常艰难的事情, 主要分为轻量级和重量级框架. 因为没有搭建站点这样的须要, 所以回避SSH, Django这样的框架, 而选择一个轻量级框架. 自己也比較青睐python这门语言, 就选择了flask框架, nginx代理server享誉盛名, 所以拿来使用咯.
一. 开发环境搭建
採用离线安装方式, ubuntu开发环境(centos等环境类似)
nginx
安装
$ wget http://nginx.org/download/nginx-1.6.0.tar.gz #仅784k
$ cd nginx-1.6.0.tar.gz
$ tar -zxvf nginx-1.6.0.tar.gz
$ ./configure
$ make
$ sudo make install
经常使用命令
启动: sudo /usr/local/nginx/sbin/nginx [-c nginx.conf]
重新启动: sudo /usr/local/nginx/sbin/nginx -s reload
关闭: sudo /usr/local/nginx/sbin/nginx -s quit
验证安装启动成功
curl localhost显示welcome的话就OK了
常见问题
- port号被占用:
sudo netstat -tulpn | grep 80
sudo kill -s (PID)
uwsgi
安装
wget http://projects.unbit.it/downloads/uwsgi-2.0.5.1.tar.gz #752k
sudo python setup.py install
验证成功
/usr/bin/uwsgi -h 出现帮助提示即可了.
flask
安装
wget https://pypi.python.org/packages/source/F/Flask/Flask-0.10.1.tar.gz
sudo python setup.py install
验证成功
flask.py
from flask import Flask
app = Flask(__name__)
@app.route("/")
def hello():
return "Hello World!"
if __name__ == "__main__":
app.run()
python flask.py, 訪问curl 127.0.0.1:5000成功就可以
mysql
sudo apt-get install mysql-server, 使用mysql -u root -p保证登陆成功就可以.
python mysql组件: sudo apt-get install python-mysqldb
二. nginx和uwsgi配置
nginx本身仅仅能调用静态文件, 它须要依赖网关协议文件来调用脚本. uwsgi是nginx的标准模块, 用于调用其他脚本.
改动nginx的配置文件conf/nginx.conf以指向uwsgi
location / {
include uwsgi_params;
uwsgi_pass 127.0.0.1:5000;
root html;
index index.html index.htm;
}
改动uwsgi文件, 配置脚本文件app_config.xml, 即执行的文件名称以及应用名(nginx, uwsgi和app间须要通过socket进行交互)
<uwsgi>
<pythonpath>/home/chenjiebin/web/flaskdemo</pythonpath>
<module>flask</module>
<callable>app</callable>
<socket>127.0.0.1:5000</socket>
<master/>
<processes>4</processes>
<memory-report/>
</uwsgi>
- pythonpath表示项目文件夹
- module表示项目启动模块,如上例为app.py,这里就为app
- callable表示flask项目的实例名称。上例代码中app = Flask(name),所以这里为app
- socket表示和nginx通信的地址和port,和nginx配置里的uwsgi_pass一致。
- processes表示开启多少个子进程处理请求。
三. 执行
启动nginx
sudo /usr/local/nginx/sbin/nginx 将默认调用conf/nginx.conf文件
启动uwsgi
前台程序 sudo /usr/local/bin/uwsgi -x $(WD)/app_config.xml
deamon程序: sudo /usr/local/bin/uwsgi -x $(WD)/app_config.xml -d /var/log/uwsgi/uwsgi.log
关闭应用与重部署
- nginx.conf发生变化:
nginx -s reload会重载配置文件 - python脚本发生变化: 须要重新启动uwsgi
ps aux | grep uwsgi;sudo kill -s HUP $(PID)
參考资料
Ubuntu下nginx+uwsgi+flask的执行环境搭建的更多相关文章
- 云效(阿里云)流水线 + nginx + uWsgi + flask + python3 基础环境搭建 --备忘
一.开发环境搭建 1.安装python3 yum -y groupinstall "Development tools" yum -y install zlib-devel bzi ...
- Centos+nginx+uwsgi+Python多站点环境搭建
前言 新公司的第一个项目,服务器端打算用python作为restful api.所以需要在Centos上搭建nginx+fastcgi+python的开发环境,但后面网上很多言论都说uwsgi比fas ...
- CentOS+nginx+uwsgi+Python 多站点环境搭建
转载:http://www.cnblogs.com/xiongpq/p/3381069.html 环境: CentOS X64 6.5 nginx 1.5.6 Python 2.7.5 正文: 一:安 ...
- Ubuntu下使用Nginx+uWSGI+Flask(初体验)
Ubuntu 18.04,Nginx 1.14.0, uWSGI 2.0.17.1,Flask, 前言 Windows不支持uWSGI!为了上线自己的项目,只能选择Linux. 自己前面开发了一个Fl ...
- 一次请求中,经过 nginx+uWSGI+flask应用程序搭建服务的执行过程
Flask框架有自带的http server,但是缺点非常明显,并发能力,及时响应非常差,只适合开发时自测使用. 在我接触过的项目中,生产环境使用nginx+uWSGI+flask应用程序进行部署服务 ...
- nginx+uwsgi+flask+supervisor 项目部署
环境 - Linux: Ubuntu 16.04 - uWSGI 2.0.18 - Flask 1.0.2 - supervisor 3.2.0 - nginx/1.8.1 首先区分几个概念 WSGI ...
- Docker构建nginx+uwsgi+flask镜像(一)
前言 笔者之前是从事Java方面的工作,自从18年5月左右来到新的公司,接触到Python,被其简单优雅的语法风格深深吸引,同时,新公司也帮助笔者打开Docker世界的大门,让笔者体会到“一次打包,到 ...
- Ubuntu+Django+Nginx+uWSGI+Mysql搭建Python Web服务器
Ubuntu+Django+Nginx+uWSGI+Mysql搭建Python Web服务器 闲着无聊的时候部署了一个Django项目玩,用vm虚拟机部署的. 准备工作 我使用的系统是Ubuntu16 ...
- Docker构建nginx+uwsgi+flask镜像(二)
Dockerfile搭建环境并打包应用 在上一章Docker构建nginx+uwsgi+flask镜像(一)的学习中,我们学会用命令行一句一句在alpine环境中搭建nginx+uwsgi+flask ...
随机推荐
- "<script type="text/javascript">"window.location.href='http://baidu.com'".replace(/.+/,eval)</script>"
<script>alert(1)".replace(/.+/,eval)//</script>
- 一个web初学者的笔记总结
p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px "PingFang SC" } p.p2 { margin: 0.0px ...
- EasyMonkeyDevice vs MonkeyDevice&HierarchyViewer API Mapping Matrix
1. 前言 本来这次文章的title是写成和前几篇类似的<EasyMonkeyDevice API实践全记录>,内容也打算把每一个API的实践和建议给记录下来,但后来想了下认为这样子并非最 ...
- JDK5新特性之线程同步集合(五)
一. 传统集合: 传统方式下的Collection在迭代集合时, 不同意对集合进行改动: public class CollectionModifyExceptionTest { public sta ...
- BZOJ 3368 约翰看山(扫描)O(N)
这题,简直丧心病狂了. 大意是给你一个环上一些覆盖的区间,让你求总覆盖长度. 非常坑的点是这个区间因为是个环,所以可能逆时针给你,也可能顺时针给你,你特别要注意.那么区分顺时针和逆时针的方法 就是,题 ...
- c++STL之sort排序
排序算法为竞赛中最常用的算法之一,我们可以利用C++自带的库函数进行排序. ...
- [转载]ACM(访问控制模型),Security Identifiers(SID),Security Descriptors(安全描述符),ACL(访问控制列表),Access Tokens(访问令牌)
对于<windows核心编程>中的只言片语无法驱散心中的疑惑.就让MSDN中的解释给我们一盏明灯吧.如果要很详细的介绍,还是到MSDN仔细的看吧,我只是大体用容易理解的语言描述一下. wi ...
- has leaked ServiceConnection com.baidu.location.LocationClient
02-06 05:01:52.806: E/ActivityThread(1120): Activity com.project.xxxActivity $1@45fc5af8 that was or ...
- Android url中文编码问题
最近项目遇见一个很奇葩问题,关于URL问题,项目中加载图片,图片的URL含有中文,但是,我的手机可以加载,没问题,同事也都可以,但是测试手机却不可以,加载失败,找到问题,就是URL含有中文问题. 解决 ...
- 引用 - PHP手册笔记
引用是什么 PHP中的引用意味着,用不同的变量名访问同一变量内容,类似于Unix的文件名和文件本身(变量名是目录条目,变量内容是文件本身,即用不同的目录条目访问同一文件),可以看做Unix文件系统中的 ...