部署django项目

来源:互联网 发布:程序员升职路线 编辑:程序博客网 时间:2024/06/16 03:55
说明:本文所使用的环境为CentOS 6+Python3.5+Django1.11安装Django、Nginx和uWSGI1.安装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.pydef 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就可以了
原创粉丝点击