Mysql
Nginx
Virtualenv
Uwsgi
Flask
Ubuntu
自带Python
开发环境,可以通过apt-get
进行安装,此处不赘述
安装命令:
sudo apt-get install mysql-server
安装过程中会提示你输入MySQL root用户的密码。安装完成后通过终端输入以下命令进行登录
mysql -u root -p
然后为python
安装mysql
的连接库
pip install pymysql
PS: mysqldb
和pymysql
都可以用于连接操作mysql
数据库,前者速度较快,但两者性能差别不大
安装命令:
sudo apt-get install nginx
安装完成后,在浏览器输入http://localhost
可以看到
配置文件位置:/etc/nginx/sites-available
默认加载位置:/etc/nginx/sites-enabled
PS: sites-enabled
中的文件为sites-available
文件的软连接
创建软连接的命令:
sudo ln -s src_file dst_file
virtualenv用于创建独立的Python环境,多个Python相互独立,互不影响,它能够:
1. 在没有权限的情况下安装新套件
2. 不同应用可以使用不同的套件版本
3. 套件升级不影响其他应用
安装命令:
pip install virtualenv
使用方法:
virtualenv 虚拟环境名称
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
文件的软连接
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
Flask框架自带轻量级的web服务,这使得开发调试很方便,但是生产环境中自然不能这么简陋。
网站目录 /var/www/demoapp/
demoapp
venv
bin
include
lib
localhello.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()
创建/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
创建 /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
为nginx
和uwsgi
添加权限
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
至此已完成ubuntu环境下Nginx+Uwsgi+Flask+Mysql环境的搭建
参考文章:
在 Ubuntu 上使用 Nginx 部署 Flask 应用
flask 怎么使用nginx + uwsgi 部署