debian下python flask环境搭建
2016-04-13 11:31
736 查看
先来说明开发环境:
debian 8 jessie
python 3.4版本
virtualenv,pip
uwsgi 2.0.12
nginx 1.8(自行编译安装)
环境搭建步骤:
-已经安装python(debian自带)
-安装pip
-安装virtualenv
-创建项目目录
-安装uwsgi
-安装nginx
或者是
虚拟环境生效:
这个时候命令行头部会添加:
这时虚拟环境生效!
按照文件目录先进行创建,最后再一并说明代码编写以及配置
从源码安装:参考这篇文章
然后在项目根目录下,编写manager.py文件代码
这样我们的代码就写好了,你可以在项目根目录下执行下面代码运行:
然后在浏览器中访问127.0.0.1:5000,即可看到显示”Hello World”的字符串,说明我们的代码正确有效!
那么我们先来编辑根目录下的project_nginx.conf文件:
然后需要将这个文件通过链接文件的方式放到nginx安装目录下:
光这样操作是不行的,还需要的内容是将配置文件加载到启动文件中。那么在启动文件中就需要添加这样一行代码:
这时候是不能启动nginx运行的,如果运行nginx的话,会报502错误。原因在于配置文件中的 .sock 文件并未创建。那么需要我们在下面设置完uWSGI的配置文件后才可以运行。
这样我们的uWSGI也就配置完成了。现在就可以尝试运行一下了。
然后启动你的nginx:
最后直接访问localhost,出现HelloWorld字符串即为成功!
debian 8 jessie
python 3.4版本
virtualenv,pip
uwsgi 2.0.12
nginx 1.8(自行编译安装)
环境搭建步骤:
-已经安装python(debian自带)
-安装pip
-安装virtualenv
-创建项目目录
-安装uwsgi
-安装nginx
安装pip
$ sudo apt-get install python-pip
安装virtualenv
$ sudo pip install virtualenv
创建虚拟环境并生效
$ mkdir example_flask $ virtualenv venv (默认创建python2.7的环境)
或者是
$ virtualenv -p python3 venv (创建python3.4的环境)
虚拟环境生效:
$ source ./venv/bin/activate
这个时候命令行头部会添加:
(venv) yourLinux@adsfas:~ $
这时虚拟环境生效!
项目目录
www/ └── exmaple_flask │ ├── logs // 日志目录 │ └── venv // 虚拟环境(前面已经创建) │ │ ├── bin │ │ │ ├── activate │ │ │ ├── easy_install │ │ │ ├── gunicorn │ │ │ ├── pip │ │ │ └── python │ │ ├── include │ │ │ └── python2.7 -> /usr/include/python2.7 │ │ ├── lib │ │ │ └── python2.7 │ │ ├── local │ │ │ ├── bin -> /home/shenye/shenyefuli/bin │ │ │ ├── include -> /home/shenye/shenyefuli/include │ │ │ └── lib -> /home/shenye/shenyefuli/lib │ └── app //Flask 程序目录 │ │ └── __init__.py //这是程序包文件。这个目录下还有其它的文件此处略过 │ ├── manager.py // 管理文件 | |--project_nginx.conf // nginx配置文件 | |--project_uwsgi.ini // uWSGI配置文件 │ ├── requirements.txt // 依赖库文件
按照文件目录先进行创建,最后再一并说明代码编写以及配置
安装uWSGI
(venv) yourd@dsfas:~$ pip install uWSGI
安装nginx
直接安装:(venv) youtdebian@aasdfa:~$ sudo apt-get update (venv) youtdebian@aasdfa:~$ sudo apt-get install nginx
从源码安装:参考这篇文章
编写代码
首先从app文件夹下的 init.py 来开始编写代码# __init__.py #!/usr/bin/env python # encoding: utf-8 from flask import Flask app = Flask(__name__) @app.route("/") def index(): return "Hello World"
然后在项目根目录下,编写manager.py文件代码
# manager.py # !/usr/bin/env python # encoding: utf-8 from app import app if __name__ == "__main__": app.run()
这样我们的代码就写好了,你可以在项目根目录下执行下面代码运行:
(venv) yourdebian@adfa:~$ python manager.py
然后在浏览器中访问127.0.0.1:5000,即可看到显示”Hello World”的字符串,说明我们的代码正确有效!
配置nginx
这里我们先从nginx进行配置,由于我是从源码安装的,只是文件所在目录有所不同。那么我们先来编辑根目录下的project_nginx.conf文件:
server { listen 80; server_name localhost; charset utf-8; client_max_body_size 75M; location / { try_files $uri @yourapplication; } location @yourapplication { include uwsgi_params; uwsgi_pass unix:~/project_example_uwsgi.sock # 上面一行是创建项目根目录下的socket文件,通过socket实现代理 } }
然后需要将这个文件通过链接文件的方式放到nginx安装目录下:
(venv) yourdebian@afdsa:~$ sudo ln project_nginx.conf /usr/local/nginx/conf/
光这样操作是不行的,还需要的内容是将配置文件加载到启动文件中。那么在启动文件中就需要添加这样一行代码:
http { include ./project_nginx.conf; .......... }
这时候是不能启动nginx运行的,如果运行nginx的话,会报502错误。原因在于配置文件中的 .sock 文件并未创建。那么需要我们在下面设置完uWSGI的配置文件后才可以运行。
配置uWSGI
直接上配置文件:[uwsgi] #application's base folder base = ~/project_python/project_flask/ # 项目根目录 #python module to import app = manager # 启动app名称 module = %(app) # app实例 home = %(base)/venv_aichebao/ # 虚拟环境名称 pythonpath = %(home)/bin/python3.4 # 虚拟环境中的python版本 #socket file's location socket = %(base)/%n.sock # socket通讯文件 #permissions for the socket file chmod-socket = 666 #the variable that holds a flask application inside the module imported at line #6 callable = app # 启动项 #location of log files logto = %(base)/logs/%n.log # 日志文件
这样我们的uWSGI也就配置完成了。现在就可以尝试运行一下了。
项目运行
在命令行中执行下面命令:(venv) yourdebian@dfas:~$ uwsgi --ini project_uwsgi.ini
然后启动你的nginx:
(venv) yourdebian@dfas:~$sudo nginx
最后直接访问localhost,出现HelloWorld字符串即为成功!
相关文章推荐
- python中的argparse模块(参数解析)
- python 的日志logging模块学习
- 实用的 Python —— 快速进行相关计算
- python常用的一些东西——sys、os等(转)
- Python yield与实现
- Selenium2 Python 自动化测试实战学习笔记(三)
- 【LeetCode-1】Two Sum
- Python 进阶 —— 使用 map reduce
- Python常见错误归纳
- Python数组定义方法
- Python future模块小例子
- 【转】python通过文件头判断文件类型
- Python功能之反射
- python使用函数装饰器的示例,打印函数耗时
- Python的GIL是什么鬼,多线程性能究竟如何
- python入门(四)
- python小模块---fileinput
- Python:file (read,readline,readline )使用方法
- Python-1
- python 远程执行命令、上传、下载举例