python+django+uwsgi+nginx+virtualenv 部署高可用的python web环境

                                                                                              

【摘要】

 最近开始部署python的web环境,说实话对于python的单一站点部署还是有经验的,毕竟带团队已经多年(吹一下NB)。那么问题来了,不同版本的python环境部署还是必须了解的。今天,终于解决了python不同版本的环境配置。进入正题,我采用virtualenv 进行python环境隔离,部署不同的版本。然后在Nginx上进行反向代理,实现pythonweb环境。


一、python 安装(版本2.7)

1.下载python

wget http://python.org/ftp/python/2.7.3/Python-2.7.3.tar.bz2

2.解压

tar -jxvf Python-2.7.3.tar.bz2  

3.进入目录

cd Python-2.7.3  

4.安装

#./configure 

#make all             

#make install  

#make clean  

#make distclean

5.查看版本信息

/usr/local/bin/python2.7 -V 

建立软连接,使系统默认的 python指向 python2.7

#mv /usr/bin/python /usr/bin/python2.6.6  

#ln -s /usr/local/bin/python2.7 /usr/bin/python 

6.重新检验Python 版本 

python -V

7.解决系统 Python 软链接指向 Python2.7 版本后,因为yum是不兼容 Python 2.7的,所以yum不能正常工作,我们需要指定 yum 的Python版本

vi /usr/bin/yum  

将文件头部的
#!/usr/bin/python


改成
#!/usr/bin/python2.6.6



二、pip 和 django (1.5.6版本)安装


1.安装pip

curl https://bootstrap.pypa.io/get-pip.py | python


2.安装django


pip install django==1.5.6



三、安装uwsgi

pip install uwsgi #推荐熟悉使用 http://www.cnblogs.com/weiok/p/5719004.html


四、Nginx 安装


yun -y install nginx


五、virtualenv 安装及使用 

1.virtualenv 安装及使用(参考下面的链接)


廖雪峰 virtualenv 安装及使用

http://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000/001432712108300322c61f256c74803b43bfd65c6f8d0d0000


2.环境布局



第一步:在环境中 source /env/bin/activate 进入隔离环境中

############环境检测###############

python

  

import django  #是否在环境内有django框架


django.VERSION #获取django的版本信息


django-admin.py  startproject  python_app #创建一个python 工程


#########启动django应用############


在 python_app的根目录创建一个 py.ini 文件(内容如下)这是 uwsgi的启动文件


[uwsgi]
master = true
vhost = true
workers = 2
reload-mercy = 10
vacuum = true
max-requests = 1000
limit-as = 256
chmod-socket = 666
socket = 127.0.0.1:9090
pidfile = /usr/local/nginx/python_app.pid


########启动uwsgi##########

uwsgi py.ini -d uwsgi.log


##########配置Nginx############


server {
    listen       80;
    server_name a.baidu.com;#请填写自己的域名
        index index.html index.htm index.php;
        
        location / {
                include uwsgi_params;
                uwsgi_pass 127.0.0.1:9090;
                uwsgi_param UWSGI_PYHOME /python/venv_web/venv_new;
                uwsgi_param UWSGI_SCRIPT wsgi;
                uwsgi_param UWSGI_CHDIR /python/venv_web/python_app/python_app;
        }
        access_log  /www/log/nginx/python.log;
}



注:在wsgi.py 文件里我做了如下修改

apache_configuration = os.path.dirname(__file__)
project = os.path.dirname(apache_configuration)
workspace = os.path.dirname(project)
sys.path.append(workspace)
sys.path.append('/python/venv_web/python_app/python_app')
sys.path.append('/python/venv_web/python_app')
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "python_app.settings")


# This application object is used by any WSGI server configured to use this
# file. This includes Django's development server, if the WSGI_APPLICATION
# setting points here.
from django.core.wsgi import get_wsgi_application
application = get_wsgi_application()


# Apply WSGI middleware here.
# from helloworld.wsgi import HelloWorldApplication
# application = HelloWorldApplication(application)



uwsgi 单项目配置

<uwsgi>  
  <socket>127.0.0.1:8000</socket>  
  <listen>20</listen>  
  <master>true</master>  
  <pidfile>/usr/local/nginx/uwsgi.pid</pidfile>  
  <processes>2</processes>  
  <module>wsgi</module>
  <pythonpath>/python/web/website</pythonpath>  #刚才建立项目的路径
  <profiler>true</profiler>  
  <memory-report>true</memory-report>  
  <enable-threads>true</enable-threads>  
  <logdate>true</logdate>  
  <limit-as>6048</limit-as>  
  </uwsgi>



注:隔离环境与Nginx+uwsgi的部署问题

1:假如我部署的虚拟环境是python2.7,那么启动uwsgi.ini文件的时候,一定要保证 source shici/bin/activate  (切换到虚拟环境shici里)

2:如果启动了Nginx和uwsgi,但是无法访问项目(报错502),那么一定是项目路径除了问题,你就到环境的lib/python2.7目录下创建一个和Nginx里配置的uwsgi-script  一样的文件 wsgi.py

3:如果访问报错调用的是你虚拟环境里的site-page,恭喜你虚拟环境配置成功


  

如有疑问加QQ 1397981667 备注 python 其他一概不加 文章来至www.codexueyuan.com的实践


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值