Ubuntu下nginx+uwsgi+flask的执行环境搭建

2021年11月20日 阅读数:4
这篇文章主要向大家介绍Ubuntu下nginx+uwsgi+flask的执行环境搭建,主要内容包括基础应用、实用技巧、原理机制等方面,希望对大家有所帮助。



选择web framwork是个很是艰难的事情, 主要分为轻量级和重量级框架. 由于没有搭建站点这样的需要, 因此回避SSH, Django这样的框架, 而选择一个轻量级框架. 本身也比較青睐python这门语言, 就选择了flask框架, nginx代理server享誉盛名, 因此拿来使用咯. 一. 开发环境搭建

採用离线安装方式, ubuntu开发环境(centos等环境相似)php

nginx

安装html



$ 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


常用命令python

启动: ​​sudo /usr/local/nginx/sbin/nginx [-c nginx.conf]​mysql

从新启动: ​​sudo /usr/local/nginx/sbin/nginx -s reload​nginx

关闭: ​​sudo /usr/local/nginx/sbin/nginx -s quit​web

验证安装启动成功sql

​curl localhost​​显示welcome的话就OK了flask

常见问题ubuntu

  1. port号被占用:



sudo netstat -tulpn | grep 80
sudo kill -s (PID)


uwsgi

安装centos



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)