使用Raspberry PI搭建最基本的nginx + uwsgi配置

首先

本次我想在树莓派上以最小配置方式运行nginx和uwsgi。如果能通过浏览器以80号端口访问”http://(IP地址)/uwsgi”并显示出”Hello World”,则任务完成。

准备nginx

首先准备nginx。

安装

使用apt-get命令安装nginx。

 $ sudo apt-get install nginx

配置 config.conf 的设置

安装完成后,将在 /etc/nginx 目录下创建 conf 文件。以 /etc/nginx/nginx.conf 为基础,打开文件后,可以看到以下内容,因此需要添加 include 命令来引入其他的 conf 文件。


include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;

禁用 sites-enabled/default

这次我们要在/etc/nginx/conf.d中添加一个conf文件,但是由于已经存在一个名为/etc/nginx/sites-enabled/default的conf文件,我们将把它禁用。
sites-enabled目录下有从sites-available目录创建的符号链接。
删除这个符号链接就能禁用它。


$ ls -al /etc/nginx/sites-enabled/default
lrwxrwxrwx 1 root root 34  3月  5 19:22 /etc/nginx/sites-enabled/default -> /etc/nginx/sites-available/default

$ sudo unlink /etc/nginx/sites-enabled/default

启动nginx

现在我们来试着启动nginx。


$ sudo /etc/init.d/nginx start
[ ok ] Starting nginx (via systemctl): nginx.service.

如果无问题启动,您可以通过浏览器访问 http://(IP地址),将显示「欢迎使用nginx!」。这样 nginx 就成功启动了。

准备uwsgi

接下来,我们将准备uwsgi。
我想参考官方的快速启动指南。

安装

使用pip安装uwsgi。


$ sudo pip install uwsgi

准备申请

接下来,我们要准备一个显示”Hello World”的应用程序。
我们将按照官方的规定来创建其内容。

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

尝试使用uwsgi独立启动

那么,试着独立运行uwsgi,并进行连接确认。


$ uwsgi --http :9090 --wsgi-file /home/pi/web/foobar.py
*** Starting uWSGI 2.0.17 (32bit) on [Tue Mar  6 11:36:09 2018] ***

如果成功启动,从浏览器访问 http://(IP 地址):9090 ,将显示 “Hello World”。通过这一步骤可以确认 uwsgi 也能够正常运行。

将nginx和uwsgi连接起来。

最后,我们将配置nginx以接收请求并将其传递给uwsgi。

将配置添加到“/etc/nginx/conf.d”目录中。

为了向Nginx添加配置,我们需要创建/etc/nginx/conf.d/default.conf文件。
当通过80端口访问http://(IP地址)/uwsgi时,我们将设置location来将请求传递给uwsgi。

server {
    listen 80 default;
    server_name 127.0.0.1 localhost;

    location /uwsgi/ {
        include uwsgi_params;
        uwsgi_pass unix:/home/pi/web/web.sock;
    }
}

添加uwsgi.ini文件

下一步,为了对uwsgi进行设置,我们将添加/etc/uwsgi/uwsgi.ini。

[uwsgi]
socket = /home/pi/web/web.sock
chmod-socket = 666
chdir = /home/pi/web/
wsgi-file = /home/pi/web/foobar.py

启动 nginx 和 uwsgi。

完成conf的添加后,尝试启动nginx和uwsgi。

启动Nginx

$ sudo /etc/init.d/nginx start
[ ok ] Starting nginx (via systemctl): nginx.service.

启动uwsgi
通过指定/etc/uwsgi/uwsgi.ini来启动uwsgi。

$ uwsgi /etc/uwsgi/uwsgi.ini
[uWSGI] getting INI configuration from /etc/uwsgi/uwsgi.ini
*** Starting uWSGI 2.0.17 (32bit) on [Tue Mar  6 11:48:44 2018] ***

请通过浏览器确认

那么,请从浏览器中访问 http://(IP地址)/uwsgi ,然后可以看到显示了「Hello World」。

检查日志

为了确保,我会检查日志。

Nginx 软件

当查看nginx的access.log时,可以确认日志是否存在。

$ tail -f /var/log/nginx/access.log
172.00.0.100 - - [06/Mar/2018:11:51:43 +0900] "GET /uwsgi/ HTTP/1.1" 200 42 "-" "... 

uWSGI

uWSGI 的日志直接输出在刚刚启动的界面上。

[pid: 7451|app: 0|req: 1/1]172.00.0.100 () {40 vars in 701 bytes} [Tue Mar  6 11:51:43 2018] GET /uwsgi/ => generated 11 bytes in 0 msecs (HTTP/1.1 200) 1 headers in 44 bytes (2 switches on core 0)

这样,nginx + uwsgi 的最小配置完成了。