部署django项目

说明:本文所使用的环境为CentOS 6+Python3.5+Django1.11

安装Django、Nginx和uWSGI

1.安装python3,这里可以看我另外一篇文章http://blog.csdn.net/jj546630576/article/details/785214432.安装python-devel 
yum install python-devel 

3.安装uwsgi 
pip install uwsgi(如果查找不到pip,就用命令查询一下whereis pip,如果查找到pip3.x,就做一个软连接到/usr/bin/pip就好了)

测试uwsgi是否能正常工作

1.新建一个index.py;

# index.py
def application(env, start_response):
    start_response('200 OK', [('Content-Type','text/html')])
    return "Hello World"

2.uwsgi --http :8000 --wsgi-file index.py 
浏览器访问8000端口看是否有hello world输出 
注意:确保8000端口能被外网访问
此时,访问http://192.168.177.234:8000/,看到index.py中内容说明成功


安装Django,去官网下载源码包Django,然后手动安装,python setup.py install

测试Django能否正常工作
$ cd /var/www/ 
$ django-admin startproject mysite 
$ cd mysite 
$ make static  //创建一个静态资源文件夹
$ make media  //创建上传文件夹
$ python manage.py runserver 0.0.0.0:8000 

【注】:我这里报错了:No module named _sqlite3  
    解决:
        1,首先安装 sqlite-devel
        yum install sqlite-devel

        2,重新编译安装Python
        ./configure
        make
        make install 
浏览器访问8000端口看是否有hello world输出


测试uwsgi是否能和django集成,进入django项目根目录mysite:
uwsgi --http 192.168.177.234:8000 --file mysite/wsgi.py --static-map=/static=static
在浏览器中访问8000端口,看能否正常访问django网站。


在django项目同级目录创建script目录,用于存放配置脚本等等
进入/script目录,创建一个uwsgi.ini文件,内容如下:
  1 [uwsgi]
  2 # 项目目录
  3 chdir=/home/www/python_project/mysite
  4 # 指定项目的application
  5 module=mysite.wsgi:application
  6 # 指定sock的文件路径
  7 socket=/home/www/python_project/script/uwsgi.sock
  8 # 进程个数
  9 workers=5
 10 pidfile=/home/www/python_project/script/uwsgi.pid
 11 # 指定IP端口
 12 http=192.168.177.234:8000
 13 # 指定静态文件
 14 static-map=/static=/home/www/python_project/mysite/static
 15 # 启动uwsgi的用户名和用户组
 16 uid=root
 17 gid=root
 18 # 启用主进程
 19 master=true
 20 # 自动移除unix Socket和pid文件当服务停止的时候
 21 vacuum=true
 22 # 序列化接受的内容,如果可能的话
 23 thunder-lock=true
 24 # 启用线程
 25 enable-threads=true
 26 # 设置自中断时间
 27 harakiri=30
 28 # 设置缓冲
 29 post-buffering=4096
 30 # 设置日志目录
 31 daemonize=/home/www/python_project/script/uwsgi.log


在/script目录下执行命令启动项目:/usr/local/python3/bin/uwsgi --ini 
访问:192.168.177.234:8000
至此,uwsgi+django就完美结合了,但是,光有uwsgi还不够,uwsgi处理动态请求能力高,
但对于静态请求(如static文件,css,js文件等)处理能力差,此时就要结合nginx一起使用


安装nginx具体步骤:
    下载源码包,解压,编译安装就ok,自行百度
我是安装在/usr/local/nginx下,然后进入 /usr/local/nginx/conf,打开nginx.conf,在http{}内部最末尾处添加 
“include vhost/*.conf;” 保存退出。然后在/usr/local/nginx/conf建立一个文件夹vhost,
进入vhost,在vhost创建一个文件django.com.conf内容如下: 
  2 server { # 这个server标识我要配置了
  3 
  4         listen 8001; # 我要监听那个端口
  5         server_name 192.168.177.234; # 你访问的路径前面的url名称
  6         access_log /var/log/nginx/access.log; # Nginx日志配置
  7         error_log /var/log/nginx/error.log;
  8         charset utf-8; # Nginx编码
  9         gzip_types text/plain application/x-javascript text/css text/javascript application/x-httpd-php 
  application/json text/json image/jpeg image/gif image/png application/octet-stream; # 支持压缩的类型
 10 
 11         error_page 404 /404.html; # 错误页面
 12         error_page 500 502 503 504 /50x.html; # 错误页面
 13 
 14         # 指定项目路径uwsgi
 15          location / { # 这个location就和咱们Django的url(r'^admin/', admin.site.urls),
 16                 include /usr/local/nginx/conf/uwsgi_params; # 导入一个Nginx模块他是用来和uWSGI进行通讯的
 17                 uwsgi_connect_timeout 30; # 设置连接uWSGI超时时间
 18                 uwsgi_pass unix:/home/www/python_project/script/uwsgi.sock; # 指定uwsgi的sock文件请求给他
 19          }
 20 
 21         # 指定静态文件路径
 22         location /static/ {
 23                 alias /home/www/python_project/mysite/static/;
 24                 index index.html index.htm;
 25          }
 26 
 27  }

最后一步,重启/etc/init.d/nginx restart

然后访问nginx中的端口8001,nginx就会代理到uwsgi中就可以访问python项目了,访问地址:192.168.177.234:8001  大功告成

【注】:在这里我提一下,我配置时候都是一摸一样的但是最终访问192.168.177.234:8001 
还是502报错,后来我发现是script文件夹权限问题,nginx在去调用执行、写入时候没权限,
所以这个文件夹以及里面的文件都要有写、执行权限,直接就777就可以了







评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值