Django之nginx+wsgi部署

一、安装nginx 和 wsgi

安装wsgi:

pip install uwsgi

配置uWSGI, 在项目路径下创建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=uswgi.log

在uwsgi.ini文件所在目录下, 启动uwsgi 命令:

uwsgi --ini uwsgi.ini

查看是否启动成功:
这里写图片描述
浏览器访问: 127.0.0.1:8080, (红圈应该是8080, 忘了截图了, 再次访问出了ERR_EMPTY_RESPONSE, 不知如何修改, 但是之前是可以运行出来的, 请忽略这个小问题)
这里写图片描述

至此, uwsgi配置完成.


安装 nginx :

依次执行一下命令:

wget http://nginx.org/download/nginx-1.6.3.tar.gz
tar -zxvf nginx-1.6.3.tar.gz
cd nginx-1.6.3/
./configure
make
sudo make install

注: 本人执行sudo make install 时报错, 开启 nginx 服务后仍然可以正常访问, 因此忽略该问题.

进入默认安装路径: /usr/local/nginx/

启动nginx:

sudo sbin/nginx

查看是否启动成功:
这里写图片描述
浏览器输入: 127.0.0.1
这里写图片描述

nginx安装成功.


二、配置nginx

打开文件 /usr/local/nginx/conf/nginx.conf, 修改代码, 将原location注释, 添加新的location如下:

    server {
        listen       80;
        server_name  localhost;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        #location / {
        #    root   html;
        #    index  index.html index.htm;
        #}
        #新添加的location
        location / {
            #将所有的参数转到uwsgi下
            include uwsgi_params;
            #uwsgi的ip与端口
            uwsgi_pass 127.0.0.1:8080;
        }
        #error_page  404              /404.html;

此时将uwsgi.ini 文件里的http=127.0.0.1:8080注释掉, 启用上一行的socket=127.0.0.1:8080.

在目录/usr/local/nginx下, 关闭nginx 后再开启, :

sudo sbin/nginx -s stop
sudo sbin/nginx

浏览器访问: 127.0.0.1

这里写图片描述

至此, nginx 与 wsgi连接完成.

但是可以看到静态文件如图片不能显示, 接下来完成静态文件的显示.

三、将静态文件交由nginx处理的配置

打开文件 /usr/local/nginx/conf/nginx.conf, 在第二步修改的下方, 添加配置location /static:

        #新添加的location
        location / { 
            #将所有的参数转到uwsgi下
            include uwsgi_params;
            #uwsgi的ip与端口
            uwsgi_pass 127.0.0.1:8080;
        }
        location /static {
            alias /var/www/test6/static/;
        }

在服务器上创建目录及修改目录权限(test6为项目名称):

sudo mkdir -vp /var/www/test6/static/
sudo chmod 777 /var/www/test6/static/

修改项目中的settings.py文件, 添加代码:

STATIC_ROOT='/var/www/test6/static/'
STATIC_URL='/static/'

注: 本人的静态文件放在项目路径下的static/目录中, 如, 将显示的照片路径为 test6/static/img/hero1.png.
收集静态文件到static_root指定的目录:

python3 manage.py collectstatic

查看/var/www/test6/static/img目录, 多了几张图片:
这里写图片描述
在目录/usr/local/nginx下, 关闭nginx 后再开启, :

sudo sbin/nginx -s stop
sudo sbin/nginx

浏览器访问: 127.0.0.1
这里写图片描述

静态文件成功显示.

至此, nginx 与 wsgi部署完成.

猜你喜欢

转载自blog.csdn.net/qq_38038143/article/details/80291234