选择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了

常见问题

  1. 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 uwsgisudo kill -s HUP $(PID)

參考资料

1. Centos 6.4下nginx+uwsgi+flask的执行环境搭建

Ubuntu下nginx+uwsgi+flask的执行环境搭建的更多相关文章

  1. 云效(阿里云)流水线 + nginx + uWsgi + flask + python3 基础环境搭建 --备忘

    一.开发环境搭建 1.安装python3 yum -y groupinstall "Development tools" yum -y install zlib-devel bzi ...

  2. Centos+nginx+uwsgi+Python多站点环境搭建

    前言 新公司的第一个项目,服务器端打算用python作为restful api.所以需要在Centos上搭建nginx+fastcgi+python的开发环境,但后面网上很多言论都说uwsgi比fas ...

  3. CentOS+nginx+uwsgi+Python 多站点环境搭建

    转载:http://www.cnblogs.com/xiongpq/p/3381069.html 环境: CentOS X64 6.5 nginx 1.5.6 Python 2.7.5 正文: 一:安 ...

  4. Ubuntu下使用Nginx+uWSGI+Flask(初体验)

    Ubuntu 18.04,Nginx 1.14.0, uWSGI 2.0.17.1,Flask, 前言 Windows不支持uWSGI!为了上线自己的项目,只能选择Linux. 自己前面开发了一个Fl ...

  5. 一次请求中,经过 nginx+uWSGI+flask应用程序搭建服务的执行过程

    Flask框架有自带的http server,但是缺点非常明显,并发能力,及时响应非常差,只适合开发时自测使用. 在我接触过的项目中,生产环境使用nginx+uWSGI+flask应用程序进行部署服务 ...

  6. 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 ...

  7. Docker构建nginx+uwsgi+flask镜像(一)

    前言 笔者之前是从事Java方面的工作,自从18年5月左右来到新的公司,接触到Python,被其简单优雅的语法风格深深吸引,同时,新公司也帮助笔者打开Docker世界的大门,让笔者体会到“一次打包,到 ...

  8. Ubuntu+Django+Nginx+uWSGI+Mysql搭建Python Web服务器

    Ubuntu+Django+Nginx+uWSGI+Mysql搭建Python Web服务器 闲着无聊的时候部署了一个Django项目玩,用vm虚拟机部署的. 准备工作 我使用的系统是Ubuntu16 ...

  9. Docker构建nginx+uwsgi+flask镜像(二)

    Dockerfile搭建环境并打包应用 在上一章Docker构建nginx+uwsgi+flask镜像(一)的学习中,我们学会用命令行一句一句在alpine环境中搭建nginx+uwsgi+flask ...

随机推荐

  1. WebService 通用接收方法

    /** * @Title: getNetStatusRequest * @Description: TODO(2.1检查网络状态字符串) * @param: * @return: String * @ ...

  2. 通过dataflow导入customer

    本文在Magento ver.1.9.1.1上测试通过 (1)在配置文件中设置对应的选项.如果是多website,记得选择相应的website下的store.如果没有添加新的website,建议还是选 ...

  3. Unity 改变类模板-为你的类添加一个命名空间

    之前在写代码的时候,就很疑惑为什么创建类的时候.没有命名空间呢?   后来自己的类终于和别人写的类名字有冲突.... 如何修改Unity创建类的模板呢?  找到下面这个文件 然后修改 保存文件在Uni ...

  4. EasyUI DataGrid编辑单元格时使用combogrid

    仅提供一段columns配置代码供参考: conditions对象是一个已赋值的数组对象集合.下拉框数据可直接使用conditions数据,也可以通过url获取. columns : [[ { fie ...

  5. java File的getLastModified在不同操作系统以下存在差异

    java对文件读取改动时间(getLastModified())在不同的操作系统下存在差异  //1.在windows下,返回值是毫秒级别,不存在问题 //2.在Linux下,返回的值是毫秒值,可是会 ...

  6. python 笔记3--高级特性

    切片 语法 L[l:r] 取L[l],L[l+1]-L[r-2],L[r-1] L[l:r:m] 取L[l],L[l+m],L[l+2*m],L[l+3*m]-.(满足l+n*m<=r-1) t ...

  7. 【计算几何初步-凸包-Graham扫描法-极角序】【HDU1348】 WALL

    Wall Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submi ...

  8. idea maven jetty插件热部署

    maven tomcat插件好像无法进行热部署,jetty可以如下配置实现热部署,但是idea无法进行自动编译,所以需要如下快捷键 Ctrl+Shift+F9,编译 Ctrl+F9,生成项目 < ...

  9. A - 高精度(大数)N次方(第二季水)

    Description Problems involving the computation of exact values of very large magnitude and precision ...

  10. Ubuntu修改计算机名称造成无法解析主机问题解决方法

    在通过修改/etc/hostname文件方法修改计算机名称后导致有时候出现无法解析主机的问题. 解决方法: 找到/etc/hosts文件,打开找到如下一行 127.0.1.1       旧主机名 将 ...