部署ubuntu + Nginx + uWSGI + web.py

原创 2012年03月29日 18:51:33

环境:ubuntu10.10(x64), python2.6


需要安装:

apt-get install build-essential psmisc python2.6-dev libxml2 libxml2-dev python-setuptools

apt-get install libpcre3-dev build-essential libssl-dev python-pip 
apt-get install mysql-server mysql-client python-mysqldb
apt-get install nginx 


pip install uwsgi
pip install web.py


注意

1.安装nginx时如果遇到"atal error: Python.h: No such file or directory"说明你需要安装python2.6-dev

2.安装python2.6-dev时会遇到"libssl-dev: depends: libssl0.9.8 (= 0.9.8o-1ubuntu4) but 0.9.8o-1ubuntu4 will be installed"

请到http://pkgs.org/download/libssl0.9.8下载对应的libssl包

这里使用libssl0.9.8_0.9.8o-1ubuntu4_amd64.deb 

3. 安装mysql-server的时候,使用密码为123456


下载:

http://simple-is-better.com/news/309下载基于web.py的事例

这个例子能够帮助我们学习在部署过程中遇到的各种问题

将simple-todo放到/var/www目录下

目录结构如下:

|-- code.py
|-- config/
|   |-- __init__.py
|   |-- settings.py
|   `-- url.py
|-- controllers/
|   |-- __init__.py
|   `-- todo.py
|-- static/
|   |-- images/
|   `-- styles/
|       |-- index/
|       |   |-- images/
|       |   |   `-- website.png
|       |   `-- style.css
|       `-- reset.css
`-- templates/
    |-- error.html
    |-- foot.html
    |-- header.html
    |-- index.html
    `-- todo/
        `-- edit.html



配置:

打开/etc/nginx/conf/nginx.conf(最好做个备份先)

修改server部分,如下:

server {
        #端口号,设置为8000,防止与80冲突
        listen       8000;

        #域名,在未使用之前请随便设置,此处仅讨论如何在本地搭建serve
        server_name  localhost;

        #log的存放位置
        access_log /var/log/nginx_access.log;
        error_log /var/log/nginx_error.log; 

        location / { 
               include uwsgi_params; 
               uwsgi_pass 127.0.0.1:9001;

                #web site的根目录
                root   /var/www/simple-todo;
                index  index.html index.htm;
        }



下面先配置并运行一下simple-todo,之后再将其部署在Nginx上

我们有一些数据需要导入到MySQL中

使用mysql -h localhost -u root -p

>123456

进入mysql

然后创建一个新的database

>create database todo;

进入到该database

>use todo;

导入sql语句

> source /var/www/simple-todo/static/sql/todo.sql

插入成功

打开/var/www/simple-todo/config/settings.py

添加mysql的登录密码,修改后如下

db = web.database(dbn='mysql', db='todo', user='root', pw='123456')

 

现在新开一个终端,进入到simple-todo输入python code.py

然后在浏览器中访问http://127.0.0.1:8080

发现从数据库中读取的中文显示为乱码,重新插入的数据(中文)则不会有乱码现象

进入数据库,进行一些修改:

show variables like 'char%';

发现charset_xx 默认为latin1

set names 'utf8';

show variables like 'char%';

将其改为utf8(注意不是utf-8)


将表todo清空,重新插入数据。再次访问http://127.0.0.1:8080,一切正常

部署:

进入/var/www/simple-todo,运行

$sudo uwsgi -s 127.0.0.1:9001 -w code

这时候访问http://127.0.0.1:8000(是8000,不是8080)

发现出错。仔细看终端的信息提示,会发现有错误信息

“unable to load app 0 (mountpoint='') (callable not found or import error)”

这样的话我们需要进入到code.py进行一下修改

我们去掉了if __name__xxx语句,这样才能保证最终在浏览器中显示正常

修改之后的代码如下:

#!/usr/bin/env python
# coding: utf-8
from config.url import urls
import web

app = web.application(urls, globals())
application = app.wsgifunc()

参考并感谢wangfsec的文章:http://wangfsec.iteye.com/blog/977361


linux下搭建nginx+uwsgi+web.py的python web服务器

前提声明:    python开发web,就现阶段的本人认知来收,还不是很成熟和优势鲜明,同样是脚本开发,开发便利性不如php,企业级开发不如java。唯一的优势就是类库基数大,基本上什么库都找得到,...
  • ownfire
  • ownfire
  • 2015年06月17日 13:55
  • 5443

轻松使用Nginx搭建web服务器

今天学习了下如何使用nginx搭建web服务器,下面这篇文章写得比较好,不过在安装nginx时比较复杂,讲的是源码安装,configuer配置时比较麻烦,而且还需要编译依赖的库pcre及openssl...
  • u011299686
  • u011299686
  • 2016年10月19日 14:23
  • 1431

python:使用web.py实现最简易的web服务器

对于web服务器,大家的第一印象是什么?tomcat/nginx?我的第一印象是tomcat。想当年,使用的是tomcat。现在python基于web.py框架也可以实现web服务器的需求。短短几行代...
  • DucklikeJAVA
  • DucklikeJAVA
  • 2017年08月13日 13:09
  • 504

centos7简单搭建nginx+uwsgi+web.py的Python web环境(记录)

简单配置nginx+uwsgi+webpy运行环境
  • zynicka
  • zynicka
  • 2015年01月14日 11:32
  • 2039

配置阿里云CentOS7.2+nginx+uwsgi 部署flask项目

网上其他的教程不是很简洁易懂,废话不多说,先上步骤。 首先来看一下项目结构: 项目根目录:/var/www/myproject ---|app ---|__init__.py ---|views.p...
  • Squeen_
  • Squeen_
  • 2017年02月09日 11:06
  • 2898

400行python 教你写个高性能 http服务器+web框架,性能秒胜tornado django webpy uwsgi

tornado 4kqps 多进程 1w nginx+tornado 9kqps nginx+uwsgi 8kqps (注意:没说比nginx快,只是这几个web框架不行)  本server 3...
  • xiaobaihe0825
  • xiaobaihe0825
  • 2014年05月20日 00:24
  • 11414

在阿里云ECS上部署 Django+MySQL+uWSGI+Nginx 项目的基本流程

django==1.10.6 python==3.5.2 Mysql==5.6 uWSGI==2.0.15 Nginx==我也不知道是啥版本的阿里云ECS服务器好像是自带 SSH 的,否则的话要安装 ...
  • HeatDeath
  • HeatDeath
  • 2017年04月23日 18:29
  • 1799

uWSGI定时器导致web.py的内存泄露问题

近期开发了一个小型Web应用,使用了uWSGI和web.py,遇到了一个内存泄露问题折腾了好久,记录一下,希望可以帮助别人少踩坑。 P.S. 公司项目,我不能把完整代码贴上来,所以大部分是文字说明,...
  • abcd1f2
  • abcd1f2
  • 2016年12月16日 15:16
  • 800

CentOS下Nginx+fastcgi+python2搭建web.py服务环境

环境依赖软件包 1、python2(以下的web.py和Flup不兼容python2的版本) 2、Nginx1.4(需要包含fastcgi和rewrite模块) 3、web.py 0.38(下载最新版...
  • u014236259
  • u014236259
  • 2017年07月10日 11:20
  • 313

CentOS下Nginx+fastcgi+python3搭建web.py服务环境

环境依赖软件包 1、python3 2、Nginx1.4(需要包含fastcgi和rewrite模块) 3、web.py-python3(https://github.com/webpy/webpy/...
  • u014236259
  • u014236259
  • 2017年07月10日 11:44
  • 801
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:部署ubuntu + Nginx + uWSGI + web.py
举报原因:
原因补充:

(最多只允许输入30个字)