Python+django+uwsgi+virtualenv+nginx 网站环境搭建

分类:开发相关    发布时间:2018-01-31 13:52:10
Python+django+uwsgi+virtualenv+nginx 网站环境搭建
软件版本:
Python  2.7
Django  1.10
Uwsgi  2.0.13.1
Uwsgi是为 Python 语言定义的 Web 服务器和 Web 应用程序或框架之间的一种简单而通用的接口。自从 WSGI 被开发出来以后,许多其它语言中也出现了类似接口。
WSGI 的官方定义是,the Python Web Server Gateway Interface。从名字就可以看出来,这东西是一个Gateway,也就是网关。网关的作用就是在协议之间进行转换。
WSGI 是作为 Web 服务器与 Web 应用程序或应用框架之间的一种低级别的接口,以提升可移植 Web 应用开发的共同点。WSGI 是基于现存的 CGI 标准而设计的。
很多框架都自带了 WSGI server ,比如 Flask,webpy,Django、CherryPy等等。当然性能都不好,自带的 web server 更多的是测试用途,发布时则使用生产环境的 WSGI server或者是联合 nginx 做 uwsgi 。
Virtualenv  15.0.3
Virtualenv是python虚拟沙盒环境,它可同时部署多个python项目
Nginx 1.5.6
pip-1.5.4   
distribute-0.6.49   easy_install包管理工具

一、环境安装
1、安装基础开发包
Centos 下安装步骤如下:
yum groupinstall "Development tools"
yum install zlib-devel bzip2-devel pcre-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel

CentOS 自带 的是Python 2.6,我们需要升级到Python2.7:
参考本博地址:http://www.linuxtech.cn/article/29/
 
2、安装Python包管理工具
安装步骤:
wget https://pypi.python.org/packages/source/d/distribute/distribute-0.6.49.tar.gz
tar xf distribute-0.6.49.tar.gz
cd distribute-0.6.49
python setup.py install
easy_install --version

3、安装pip
参考本博地址:http://www.linuxtech.cn/article/41/

4、安装uwsgi
uwsgi:https://pypi.python.org/pypi/uWSGI
uwsgi参数详解:http://uwsgi-docs.readthedocs.org/en/latest/Options.html
pip install uwsgi
uwsgi --version    #查看 uwsgi 版本
测试uwsgi是否正常:
新建test.py文件,内容如下:
def application(env, start_response):
   start_response('200 OK', [('Content-Type','text/html')])
   return "Hello World"
然后在终端运行:
uwsgi --http :8001 --wsgi-file test.py
在浏览器输入:http://127.0.0.1:8001,查看是否有”Hello World”输出,若没有输出,请检查你的安装过程。

5、安装 Django
pip install django
测试django是否正常,运行:
django-admin.py startproject demosite
cd demosite
python manage.py runserver 0.0.0.0:8002
在浏览器内输入:http://127.0.0.1:8002,检查django是否运行正常。出现It worked!为正常。
如果启动报错No module named _sqlite3,需要执行yum install sqlite-devel -y 安装sqlite
安装完成后进入python安装目录重装make && make install,否则不生效. 

6、安装 Nginx
安装命令如下:
wget http://nginx.org/download/nginx-1.5.6.tar.gz
tar xf nginx-1.5.6.tar.gz
cd nginx-1.5.6
./configure --prefix=/usr/local/nginx-1.5.6 \
--with-http_stub_status_module \
--with-http_gzip_static_module
make && make install

7、安装virtualenv
pip install virtualenv

二、环境配置
1、创建虚拟环境
进入要存放项目的目录
Cd /export/server
[root@iZ289rr9y4zZ server]# virtualenv linuxtech
New python executable in /export/server/linuxtech/bin/python
Please make sure you remove any previous custom paths from your /root/.pydistutils.cfg file.
Installing setuptools, pip, wheel...done.
很简单,就是virtualenv 环境名称+[自定义的项目名称]

默认情况下,虚拟环境会依赖系统环境中的site packages,就是说系统中已经安装好的第三方package也会安装在虚拟环境中,
如果不想依赖这些package,那么可以加上参数 
--no-site-packages 
即变成了:
virtualenv linuxtech --no-site-packages
创建成功后,会在当前目录下生成对应的目录文件, 如下:
[root@iZ289rr9y4zZ server]# ls -l linuxtech/
total 24
drwxr-xr-x 2 root root 4096 Aug  6 23:14 bin
drwxr-xr-x 2 root root 4096 Aug  6 23:09 include
drwxr-xr-x 3 root root 4096 Aug  6 23:09 lib
-rw-r--r-- 1 root root   60 Aug  6 23:09 pip-selfcheck.json
我们先进入到该目录下:
cd linuxtech
然后激活该项目
[root@iZ289rr9y4zZ linuxtech]# source ./bin/activate
激活成功后,会在前面多出 linuxtech 字样,如下所示
(linuxtech) [root@iZ289rr9y4zZ linuxtech]#
在虚拟环境中安装django,因为启动时会从虚拟环境中找,如果找不到,会报找不到模块
(linuxtech) [root@iZ289rr9y4zZ linuxtech]# pip install django
退出虚拟环境
deactivate

2、配置nginx.conf
location / {
            include /export/servers/nginx/conf/uwsgi_params;
            uwsgi_pass  127.0.0.1:8001;             #//必须和uwsgi中的设置一致
            uwsgi_param UWSGI_SCRIPT bbs.wsgi;   #//入口文件,即wsgi.py相对于项目根目录的位置,“.”相当于一层目录
            uwsgi_param UWSGI_CHDIR /export/servers/cckd/cckd;  #//项目根目录
            index  index.html index.htm;
            client_max_body_size 35m;
        }
        location /statics {
            alias /export/servers/cckd/cckd/statics;  网站静态文件位置,请将后台admin文件也放入statics中,否则进入后台会提示找不到静态样式。
        }
Django后台admin默认位置.../python2.7/lib/python2.7/site-packages/django/contrib/admin/static/
3、配置项目启动所需的ini文件
Vim /etc/wsgi8001.ini 内容如下:
[uwsgi]
vhost = true
socket = 127.0.0.1:8001
master = true
enable-threads = true
workers = 1
wsgi-file = /export/server/bjcckd/bjcckd/bbs/wsgi.py  wsgi.py文件位置 
virtualenv = /export/server/bjcckd    #如果不是使用虚拟环境此处可注释掉
chdir = /export/server/bjcckd/bjcckd   项目目录
dfile = /var/run/wsgi8001.pid        PID文件位置
daemonize = /var/log/wsgi8001.log   日志位置
 
4、启动项目
uwsgi --ini /etc/uwsgi8001.ini &
/usr/local/nginx-1.5.6/sbin/nginx
 
5、查看启动日志
tail -f /var/log/uwsgi8001.log
 
6、测试项目  
http://127.0.01

出现以下画面为成功


标签: nginx django python

阅读(283)┆ 评论(0) ┆ (0) ┆ 返回博客首页


发表我的评论

欢迎您: | 退出登录


文章评论