Ubuntu下搭建Nginx+Uwsgi+Python+Mysql开发环境

Ubuntu下搭建Nginx+Uwsgi+Python+Mysql开发环境

  • Ubuntu下搭建NginxUwsgiPythonMysql开发环境
    • 软件清单
    • Python
    • Mysql 安装和配置
    • Nginx 安装
    • Virtualenv 安装
    • Uwsgi 安装
    • Flask 框架安装
    • 部署NginxUwsgiFlask
      • 创建应用
      • 配置 Nginx 服务器去连接 Uwsgi
      • 配置 Uwsgi 解析指定 Python 应用
      • 启动应用
    • 结束

软件清单

  1. Mysql
  2. Nginx
  3. Virtualenv
  4. Uwsgi
  5. Flask

Python

Ubuntu自带Python开发环境,可以通过apt-get进行安装,此处不赘述

Mysql 安装和配置

安装命令:

    sudo apt-get install mysql-server

安装过程中会提示你输入MySQL root用户的密码。安装完成后通过终端输入以下命令进行登录

    mysql -u root -p

然后为python安装mysql的连接库

    pip install pymysql

PS: mysqldbpymysql都可以用于连接操作mysql数据库,前者速度较快,但两者性能差别不大

Nginx 安装

安装命令:

    sudo apt-get install nginx

安装完成后,在浏览器输入http://localhost可以看到
Ubuntu下搭建Nginx+Uwsgi+Python+Mysql开发环境_第1张图片
配置文件位置:/etc/nginx/sites-available
默认加载位置:/etc/nginx/sites-enabled

PS: sites-enabled中的文件为sites-available文件的软连接

创建软连接的命令:

    sudo ln -s src_file dst_file

Virtualenv 安装

virtualenv用于创建独立的Python环境,多个Python相互独立,互不影响,它能够:
1. 在没有权限的情况下安装新套件
2. 不同应用可以使用不同的套件版本
3. 套件升级不影响其他应用

安装命令:

    pip install virtualenv

使用方法:

    virtualenv 虚拟环境名称

Uwsgi 安装

uWSGI是一个Web服务器,它实现了WSGI协议、uwsgi、http等协议。Nginx中HttpUwsgiModule的作用是与uWSGI服务器进行交换

安装命令:

    sudo apt-get install uwsgi
    sudo apt-get install uwsgi-plugin-python
    pip install uwsgi

配置文件位置:/etc/uwsgi/apps-available
默认加载位置:/etc/uwsgi/apps-enabled

PS: apps-enabled中的文件为apps-available文件的软连接

Flask 框架安装

    pip install flask

测试flask框架是否安装成功:编写hello.py并运行

    from flask import Flask
    app = Flask(__name__)

    @app.route("/")
    def hello():
        return "Hello World!"

    if __name__ == "__main__":
        app.run(host='0.0.0.0', port=8888)

在浏览器输入http://0.0.0.0:8888
Ubuntu下搭建Nginx+Uwsgi+Python+Mysql开发环境_第2张图片
Flask框架自带轻量级的web服务,这使得开发调试很方便,但是生产环境中自然不能这么简陋。

部署Nginx+Uwsgi+Flask

网站目录 /var/www/demoapp/

demoapp

venv

bin
include
lib
local

hello.py

Nginx 配置目录 /etc/nginx/

nginx

sites-available

demoapp_nginx

sites-enabled

demoapp_nginx

Uwsgi 配置目录 /etx/uwsgi/

uwsgi

apps-available

demoapp_uwsgi.ini

apps-enabled

demoapp_uwsgi.ini

创建应用

    sudo mkdir /var/www
    sudo mkdir /var/www/demoapp

由于我们使用root权限创建了这个文件夹,它目前归root用户所有,让我们更改它的所有权给你登录的用户(将username改成你的当前登录用户名)

    sudo chown -R username:username /var/www/demoapp/

创建并激活一个虚拟环境venv,在其中安装Flask

    cd /var/www/demoapp
    virtualenv venv
    . venv/bin/activate
    pip install flask

创建应用文件hello.py

    from flask import Flask
    app = Flask(__name__)

    @app.route("/")
    def hello():
        return "hello world"

    if __name__ == "__main__":
        app.run()

配置 Nginx 服务器去连接 Uwsgi

创建/etc/nginx/sites-available/demoapp_nginx文件

    server {
        listen 8080;
        server_name localhost;
        charset     utf-8;
        access_log /var/log/nginx/demoapp_access.log;
        error_log /var/log/nginx/demoapp_error.log;
        location /
        {
            include uwsgi_params;
            uwsgi_pass unix:/var/www/demoapp/demoapp_uwsgi.sock;
        }
    }

创建软连接

    sudo ln -s /etc/nginx/sites-available/demoapp_nginx /etc/nginx/sites-enabled/demoapp_nginx

配置 Uwsgi 解析指定 Python 应用

创建 /etc/uwsgi/apps-available/demoapp_uwsgi.ini文件

    [uwsgi]
    plugins = python
    vhost = true
    chmod-socket = 666
    socket = /var/www/demoapp/%n.sock
    venv = /var/www/demoapp/venv
    chdir = /var/www/demoapp
    module = hello
    callable = app
    logto = /var/log/uwsgi/%n.log

其中,model的值为hello.py的文件名

创建软连接

    sudo ln -s /etc/uwsgi/apps-available/demoapp_uwsgi.ini /etc/nginx/apps-enabled/demoapp_uwsgi.ini

启动应用

nginxuwsgi添加权限

    sudo chmod -R 775 /var/www/demoapp/
    sudo chown -R www-data:www-data /var/www/demoapp/

重启服务

    sudo service nginx restart
    sudo service uwsgi restart

浏览器打开http://localhost:8080
Ubuntu下搭建Nginx+Uwsgi+Python+Mysql开发环境_第3张图片

结束

至此已完成ubuntu环境下Nginx+Uwsgi+Flask+Mysql环境的搭建

参考文章:
在 Ubuntu 上使用 Nginx 部署 Flask 应用
flask 怎么使用nginx + uwsgi 部署

你可能感兴趣的:(ubuntu)