主要分三块安装
版本
uwsgi 2.0.14
django 1.9.9
nginx 1.9.4
1:uwsgi安装
安装方式 pip install uwsgi(注意:因为uwsgi需要涉及到解析xml文件,所以需要保证libxml2支持,下载方式 yum -y install libxml*,如果各种镜像下载不下来,考虑填加nameserver),安装之后编写个脚本测试一下,脚本内容如下
脚本名:abc.py
def application(env, start_response):
start_response('200 OK', [('Content-Type','text/html')])
return "Hello World"
然后执行命令: uwsgi --http :8001 --wsgi-file abc.py
执行不报错,打开浏览器:http://ip:8001
页面出现 Hello World 字样,表示成功
2:django安装
pip install django
测试django是否正常,运行:
django-admin.py startproject demosite
cd demosite
python2.7 manage.py runserver0.0.0.0:8002
打开浏览器,输入 http://ip:8002
出现
It worked!
字样,表示成功(注意:如果不能访问,可能是因为设置的问题,试着去修改setting.py文件,ALLOWED_HOSTS=['*']或者改成ip,比如ALLOWED_HOSTS=['192.168.1.1',])
uwsgi和django配合使用
编写文件django_wsgi.py
#!/usr/bin/env python
# coding: utf-8
import os
import sys
# 将系统的编码设置为UTF8
reload(sys)
sys.setdefaultencoding('utf8')
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "demosite.settings")
#from django.core.handlers.wsgi import WSGIHandler
#application = WSGIHandler()
from django.core.wsgi import get_wsgi_application
application = get_wsgi_application()
被注释掉的是老的写法,注释下面的是最新写法,然后执行命令
uwsgi --http :8000 --chdir /data/demosite --module django_wsgi
之后浏览器访问:http://ip:8000/
看到
It worked!
表示组合成功
3:安装nginx
从
http://nginx.org/en/download.html 下载,我用的是目前的最新版1.9.4,下载之后解压安装(注意:安装之前要确认依赖包都有:
1.gzip 模块需要 zlib 库 ( 下载: http://www.zlib.NET/ )
2.rewrite 模块需要 pcre 库 ( 下载: http://www.pcre.org/ )
3.ssl 功能需要 openssl 库 ( 下载: http://www.openssl.org/ ),
2.rewrite 模块需要 pcre 库 ( 下载: http://www.pcre.org/ )
3.ssl 功能需要 openssl 库 ( 下载: http://www.openssl.org/ ),
如果没有安装c++编译环境,还得安装,通过yum install gcc-c++完成安装)
接下来是编译安装
cd nginx
-
1.9
.
4
./
configure
--
prefix
=
/usr/
local
/
nginx
-
1.9
.4
\
--
with
-
http_stub_status_module \
--
with
-
http_gzip_static_module
make
&&
make install
之后更改配置文件conf文件下nginx.conf文件,内容如下
server {
listen 80;
server_name www.aaa.com;#这个地方可以填写ip
access_log /home/work/var/test/logs/access.log;
error_log /home/work/var/test/logs/error.log;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
include uwsgi_params;
uwsgi_pass 127.0.0.1:8077;
}
#error_page 404 /404.html;
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
location /static/ {
alias /home/work/src/sites/testdjango1/testdjango/collectedstatic/;
index index.html index.htm;
}
location /media/ {
alias /home/work/src/sites/testdjango1/testdjango/public/media/;
}
}
nginx+uwsgi+django配合使用
新建配置文件django_socket.xml
<uwsgi>
<socket>:9090</socket>
<chdir>/data/demosite</chdir>
<module>django_wsgi</module>
<processes>4</processes> <!-- 进程数 -->
<daemonize>uwsgi.log</daemonize>
</uwsgi>
启动uwsgi服务器
uwsgi -x django_socket.xml
启动nginx服务器
我是杀掉进程,然后重新启动的,在nginx/sbin/nginx
访问服务
打开浏览器输入
http://www.aa.com
如果是ip,则是htpp://ip(注意:这个地方不需要端口号)
如果页面显示
It worked!
表示成功啦!
错误提示,
1)如果报错: connect() failed (111: Connection refused),这种情况一般是服务没有启动
2)如果报错:upstream prematurely closed connection while reading response,则可能是配置文件问题