Django项目部署:Nginx+uWSGI服务器

        

在Django项目的开发中,Django框架集成了开发者的服务器,但是在实际生产环境中并不能作为网站的服务器。项目开发完成,需要将它放到服务器上,这个服务器有固定的ip,通过域名绑定,浏览器在访问域名时就可以通过DNS解析出对应的服务器ip地址。服务器分为私有服务器和公有服务器,私有服务器需要自己维护,购买和专业维护的成本高。公有服务器事先已经分配好了ip地址,如阿里云、腾讯云、青云等,通过销售服务器空间或者主机,远程连接公有云服务,只需要安装服务器软件,就可以将自己的项目部署到公有服务器上。

我们使用的是Nginx和uWSGI作为服务器,浏览器访问的流程:  浏览器发起请求,如果是静态文件,Nginx服务器直接读取磁盘并返回给浏览器显示;如果是动态文件,则将请求信息转发给后面的uWSGI服务器,uwSGI进行url匹配,找出视图执行返回响应。


uWSGI安装和配置

1.安装

pip install uwsgi

2.配置,在项目目录下创建uwsgi.ini文件,配置如下

[uwsgi]
#使用nginx连接时使用
socket=127.0.0.1:8080
#直接做web服务器使用
#http=127.0.0.1:8080
#项目目录
chdir=/home/python/Desktop/pytest/test6
#项目中wsgi.py文件的目录,相对于项目目录
wsgi-file=test6/wsgi.py
processes=4
threads=2
master=True
pidfile=uwsgi.pid
daemonize=uwsgi.log
3.操作命令

启动:uwsgi --ini uwsgi.ini

结束:uwsgi --stop uwsgi.pid

查看: ps aux | grep uwsgi


Nginx安装和配置

1.安装

进入软件安装的文件夹:cd /usr/local/

下载压缩包:sudo wget http://nginx.org/download/nginx-1.5.6.

解压:tar.gztar xf nginx-1.5.6.tar.gz

执行安装文件:cd nginx-1.5.6            sudo ./configure               sudo make install                     

在usr/local 目录下多出来一个Nginx文件夹。说明:如果安装报错,可能缺少依赖文件,下载pcre-8.33.tar.gz,执行解压安装同Nginx。

错误解决:

(1)问题内容:

checking for C compiler ... found but is not working

./configure error : C compiler gcc is not found

(2)原因分析:

configure首先会编译一个小测试程序,通过测试其运行结果来判断编译器是否能正常工作,由于交叉编译器所编译出的程序是无法在编译主机上运行的,故而产生此错误。

(3)解决办法:

编辑auto/cc/name文件,将21行的“exit 1”注释掉(令测试程序不会报错)。


(1)问题内容:

执行./configure时显示:/configure: line 2407: config.log: Permission denied

(2)解决办法:

在配置时需要加sudo,否则权限不足,安装不成功。

2.配置

找到配置文件:cd nginx/conf     

编辑配置文件:sudo vi nginx.conf

 server{
          listen       80;           监听端口号
          server_name  localhost;          服务器地址
 
          location /{
              include uwsgi_params;             将所有参数转移到uwsgi下
              uwsgi_pass 127.0.0.1:8080;        uwsgi的ip和端口,这样Nginx就可以转给uwsgi
          }
          location /static{
              alias /var/www/dailyfresh/static/;          静态文件的位置,Nginx查找静态文件的路径
          }

          error_page   500 502 503 504  /50x.html;
          location = /50x.html {
              root   html;
       }
                          
创建静态文件夹: sudo mkdir -vp /var/www/dailyfresh/static/

修改目录权限:sudo chomd 777 /var/www/dailyfresh/static/
在项目中注册静态文件地址:STATIC_ROOT = '/var/www/dailyfresh/static' 

3.操作命令

收集静态文件命令:Python manage.py collectstatic

启动Nginx:sudo /usr/local/nginx/sbin/nginx

关闭Nginx:sudo /usr/local/nginx/sbin/nginx -s stop




猜你喜欢

转载自blog.csdn.net/tigaoban/article/details/79058507