python web项目实战_Python Web项目搭建实战-Django篇

安装

环境:Ubuntu server 16.04 amd64

我用的是PyPy替代了CPython,在纯Python项目上还没有遇到幺蛾子,性能提升看得见。先把nginx和supervisor装上,这里用supervisor监控进程的状态以及开机启动下文用到的uwsgi

> sudo apt-get install nginx pypy pypy-lib pypy-dev supervisor

我们可以配置pip国内源,把下面内容写到 ~/.pip/pip.conf 文件中,这样就可以用豆瓣的pip源加速了

[global]

index-url = http://pypi.douban.com/simple

[install]

trusted-host=pypi.douban.com

下面我们为PyPy 安装pip和virtualenv、uwsgi

> sudo apt-get install libpcre3 libpcre3-dev -y

> wget https://bootstrap.pypa.io/get-pip.py && pypy get-pip.py && pypy -m pip install virtualenv uwsgi

MySQL 数据库安装(好像在本文用不到,先安装再说)

>apt-get install mysql-server libmysqlclient-dev -y

>pypy -m pip install mysql-python

我们先创建一个PyPy的虚拟环境,就叫env

> pypy -m virtualenv env

> source env/bin/activate

> pip install django tornado flask mysql-python

下面,我们就要要配置这些nginx、supervisor、uwsgi,我们通过supervisor来管理uwsgi,

先简单的建一个django的项目,叫blog,再创建一个blogapp

> django-admin startproject blog

> cd blog && django-admin startapp blogapp

通过django内置的wsgi服务器测试,是正常的

> pypy manage.py runserver 0.0.0.0:8080

下面我们把django和uwsgi桥接在一起,写一个桥接django_uwsgi.py 文件,放在blog目录里面

import os

import sys

import django

reload(sys)

sys.setdefaultencoding('utf8')

os.environ.setdefault("DJANGO_SETTINGS_MODULE", "blog.settings")

#from django.core.wsgi import get_wsgi_application

#application = get_wsgi_application()

django.setup()

from django.core.handlers.wsgi import WSGIHandler

application = WSGIHandler()

下面我们再写一个uwsgi的配置文件(还没有优化),就叫django.xml,也放到blog文件夹里面

127.0.0.1:8521

/root/.pip/blog

/root/.pip/env/site-packages

django_uwsgi

uwsgi.log

nginx 的配置文件,不过没有做静态文件处理,django的后台显示不正常

server {

listen 80; ## listen for ipv4; this line is default and implied

#listen [::]:80 default ipv6only=on; ## listen for ipv6

#server_name blog;

access_log /var/log/nginx/blog-access.log ;

error_log /var/log/nginx/blog-error.log ;

location / {

uwsgi_pass 127.0.0.1:8521;

include uwsgi_params;

}

}

然后,给我们自己开发的应用程序编写一个配置文件,让supervisor来管理它。每个进程的配置文件都可以单独分拆,放在/etc/supervisor/conf.d/目录下,以.conf作为扩展名,就叫django_app.conf

[program:app]

command=uwsgi -x django.xml

directory=/root/.pip/blog

user=root

其中,进程app定义在[program:app]中,command是命令,directory是进程的当前目录,user是进程运行的用户身份。

重启supervisor,让配置文件生效,然后运行命令supervisorctl启动进程:

supervisorctl start app

停止进程:

supervisorctl stop app

这样,系统重启的时候,uwsgi 也会自动启动,省的我们手动启动它了,我是用的root用户配置的,生产环境不推荐这样做,全文基本搭建完了,运行也是正常的,后期,再深入一点,优化一下性能。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值