使用树莓派 + Nginx + uWSGI来搭建Web服务器并部署Django应用程序,尝试第二部分

首先

本文是《用Raspberry Pi + Nginx + uWSGI建立Web服务器并部署Django应用程序》系列文章的第一部分的续篇。如果您还没有阅读过之前的部分,请先去看一看。

在第一部分中,我们进行了Python虚拟环境的配置以及Django和uWSGI的安装和测试。接下来,我们将安装Web服务器Nginx。请一直支持到最后!

在安装Nginx之前

在安装之前简要介绍一下Nginx。
Nginx是一种Web服务器。当浏览器发出静态内容请求时,Nginx会响应并返回相应内容。对于动态内容,则会将请求发送给应用服务器(在本配置中为uWSGI)。
作为一种主要的Web服务器,Apache是很常见的选择,但与Apache相比,Nginx更轻量且能够处理大量请求。以前Apache曾是主流Web服务器,但近年来Nginx的份额大幅增加。

如果你对此有兴趣,请阅读此处有关详细比较的内容。比较了Apache和nginx的优缺点,来确定应该选择哪个。

如果您之前是从第一步继续进行的,那么我认为您现在处于虚拟环境(Test)中,所以先退出虚拟环境。
如果您按照第一步的指示进行,终端显示应该是这样的。

# その1の通りに進めている場合、ターミナルの表示は
(Test) pi@raspberrypi:~/Test/mysite $
# となっている筈なので、exitコマンドで仮想環境から抜けます
(Test) pi@raspberrypi:~/Test/mysite $ exit    # exitコマンド
# (Test)が取れ、仮想環境から抜けた事がわかります
pi@raspberrypi:~/Test/mysite $

从虚拟环境退出后,我们将开始安装Nginx。虽然实际上我们想要安装最新版本,但因为有些麻烦,所以这次我们将省略(将在日后另行说明)。
(6/17更新)
我已经写了一篇关于安装最新版本Nginx的文章。请参考以下内容,在Raspberry pi上安装最新版本的Nginx。

安装Nginx

那么我们来安装Nginx吧。安装完成后,让我们尝试启动一下。

$ sudo apt install nginx    # Nginxのインストール
$ sudo /etc/init.d/nginx start    # Nginxの起動
# 起動が成功すると以下が表示されます
[ ok ] Starting nginx (via systemctl): nginx.service.

成功启动后,请尝试访问 http://127.0.0.1:80 。如果一切正常,应该会显示下方的“Welcome to nginx!”页面。
这样就确认了浏览器和Web服务器的协作。

Nginx的配置

接下来,您需要对Nginx进行配置。在/etc/nginx目录下,我认为应该有一个名为uwsgi_params的文件。请将其复制到/home/pi/Test/mysite目录并粘贴。
如果在/etc/nginx目录下没有找到该文件,请按照以下内容将其保存为uwsgi_param文件,并放置在/home/pi/Test/mysite目录中。

uwsgi_param  QUERY_STRING       $query_string;
uwsgi_param  REQUEST_METHOD     $request_method;
uwsgi_param  CONTENT_TYPE       $content_type;
uwsgi_param  CONTENT_LENGTH     $content_length;

uwsgi_param  REQUEST_URI        $request_uri;
uwsgi_param  PATH_INFO          $document_uri;
uwsgi_param  DOCUMENT_ROOT      $document_root;
uwsgi_param  SERVER_PROTOCOL    $server_protocol;
uwsgi_param  REQUEST_SCHEME     $scheme;
uwsgi_param  HTTPS              $https if_not_empty;

uwsgi_param  REMOTE_ADDR        $remote_addr;
uwsgi_param  REMOTE_PORT        $remote_port;
uwsgi_param  SERVER_PORT        $server_port;
uwsgi_param  SERVER_NAME        $server_name;

接下来,在/etc/nginx目录下创建sites-available和sites-enabled文件夹,并在sites-available中创建mysite_nginx.conf文件。

$ sudo mkdir /etc/nginx/sites-available    # sites-availableフォルダ作成
$ sudo mkdir /etc/nginx/sites-enabled   # sites-enabledフォルダ作成
$ cd /etc/nginx/sites-available    # 作成したsites-availableに移動
$ sudo vi mysite_nginx.conf    # mysite_nginx.confを編集

请在mysite_nginx.conf文件中输入以下内容并保存。如果您是以pi用户的身份按照本文进行操作,则可以使用复制粘贴。其他情况下,请根据需要更改目录并保存。

# mysite_nginx.conf

# the upstream component nginx needs to connect to
upstream django {
    # server unix:///home/pi/Test/mysite/mysite.sock; # for a file socket
    server 127.0.0.1:8001; # for a web port socket (we'll use this first)
}

# configuration of the server
server {
    # the port your site will be served on
    listen      8000;
    # the domain name it will serve for
    server_name example.com; # substitute your machine's IP address or FQDN
    charset     utf-8;

    # max upload size
    client_max_body_size 75M;   # adjust to taste

    # Django media
    location /media  {
        alias /home/pi/Test/mysite/media;  # your Django project's media files - amend as required
    }

    location /static {
        alias /home/pi/Test/mysite/static; # your Django project's static files - amend as required
    }

    # Finally, send all non-media requests to the Django server.
    location / {
        uwsgi_pass  django;
        include     /home/pi/Test/mysite/uwsgi_params; # the uwsgi_params file you installed
    }
}

完成保存后,将mysite_nginx.conf文件复制到/home/pi/Test/mysite目录下。复制完成后,创建一个符号链接。

# mysite_nginx.confのコピペ
$ cp /etc/nginx/sites-available/mysite_nginx.conf ~/Test/mysite
# シンボリックリンクの作成
$ sudo ln -s ~/Test/mysite/mysite_nginx.conf /etc/nginx/sites-enabled/

检查在Nginx启动时是否会加载创建的符号链接sites-enabled。打开/etc/nginx/nginx.conf文件,确认是否已添加include /etc/nginx/sites-enabled/*;这一行。如果没有,请将其添加在include /etc/nginx/conf.d/*.conf;的下一行。这样,在Nginx启动时,将读取sites-enabled目录下的所有文件。

Django静态文件的部署

将Django静态文件解压到mysite/static目录中。在/home/pi/Test/mysite/mysite的settings.py文件末尾添加以下一行。

# 末尾に以下の一行を追加
STATIC_ROOT = os.path.join(BASE_DIR, "static/")

让我们按照以下的步骤来执行命令,先激活虚拟环境Test,然后进行Django静态文件的展开。

# Testディレクトリに移動してから仮想環境Testを実行
$ cd ~/Test
$ pipenv shell
$ cd mysite
# Django静的ファイルを展開
$ python manage.py collectstatic

你应该会在Test/mysite目录下生成一个名为static的文件夹及其子文件夹。请再次确认一下,以防万一。

确认媒体文件

media1.png
# /home/pi/Test/mysite に移動
$ cd /home/pi/Test/mysite
# mediaフォルダを生成
$ mkdir media
# media.pngを保存後、Nginxを再起動
$ sudo /etc/init.d/nginx restart
media_SS.png

猫真的很可爱。那么这次就结束在这里。下一部分是最后一部分,在前面的两个部分中我们已经安装了uWSGI和Nginx,现在将把Django应用程序部署起来。

下次更新(6月9日更新)

使用树莓派 + Nginx + uWSGI构建Web服务器并部署Django应用程序,第三部分(最终篇)

广告
将在 10 秒后关闭
bannerAds