Linux+Nginx+uWSGI配置

Nginx是Python在Linux环境下的首选Web服务器之一,所以以Ubuntu Linux为例演示Nginx的安装及配置方法。

 

1. 安装Nginx

在Ubuntu Linux中可以通过如下命令安装Nginx:

#sudo apt-get install nginx

安装程序把Nginx以服务的形式安装在系统中,相关的程序及文件路径如下:

•程序文件:放在/usr/sbin/nginx目录中。   
•全局配置文件:/etc/nginx/nginx.conf。   
•访问日志文件:/var/log/nginx/access.log。   
•错误日志文件:/var/log/nginx/error.log。   
•站点配置文件:/etc/nginx/sites-enabled/default。

安装好后,可以通过如下命令启动Nginx服务器:

.#sudo service nginx start

停止Nginx服务器:

#sudo service nginx stop

查看Nginx服务的状态:

#sudo service nginx status

重启Nginx服务器:

#sudo service nginx restart

-----------------------------------------------------------------------------------------------------------------------------------------------!

2. Nginx配置文件

Nginx安装后以默认方式启动,在开发调试的过程中可能需要调整Nginx的运行参数,这些运行参数通过全局配置文件(nginx.conf)和站点配置文件(sites-enabled/*)进行设置。

对全局配置文件(/etc/nginx/nginx.conf)中的关键可设置参数解析如下:

user www-data;                             ##定义运行Nginx的用户
worker_processes 4; ##Nginx进程数,应设置与系统CPU数量相等的数值
worker_rlimit_nofile 65535; ##每个Nginx进程可以打开的最大文件数 events {
worker_connections 768; ##每个Nginx进程允许的最大客户端连接数
#在Nginx接到一个新连接通知后调用accept()来接受尽量多的连接
multi_accept off; }
http {
 ##
# Basic Settings
##  
sendfile on;                            ##是否允许文件上传   
client_header_buffer_size 32k;         ##上传文件大小限制  
tcp_nopush on;                          ##防止网络阻塞   
tcp_nodelay on;                        ##防止网络阻塞   
keepalive_timeout 65;                  ##允许的客户端长连接最大秒数   
##Nginx散列表大小。本值越大,占用的内存空间越大,但路由速度越快   
types_hash_max_size 2048;   
access_log /var/log/nginx/access.log;  ##访问日志文件路径名   
error_log /var/log/nginx/error.log;    ##错误日志文件路径名   
## 如下两条用include命令加载站点配置文件   
include /etc/nginx/conf.d/*.conf;   
include /etc/nginx/sites-enabled/*;
}

在每个Nginx服务器中可以运行多个Web站点,每个站点的配置通过站点配置文件设置。
每个站点应该以一个单独的配置文件存放在/etc/nginx/sites-enabled目录中,默认站点的配置文件名为/etc/nginx/sites-enabled/default,对其中关键内容的解析如下:
server {
     ##配置站点监听的端口    
   listen 80;
   root /usr/share/nginx/html; ##配置HTTP根页面目录
   index index.html index.htm; ##配置HTTP根目录中的默认页面
   #站点监听的IP地址,默认的localhost只可用于本机访问,一般需要将其更改为真实IP
   server_name localhost;
   ##location用于配置URL的转发接口
   location /user/ {
    ##此处配置http://server_name/user/的转发地址
    proxy_pass http://127.0.0.1:8080; }
   ##错误页面配置,如下配置定义HTTP 404错误的显示页面为/404.html
   error_page 404 /404.html;
}

--------------------------------------------------------------------------------------

3. 安装uWSGI及配置

uWSGI是WSGI在Linux中的一种实现,这样开发者就无须自己编写WSGI Server了。

使用pip命令可以直接安装uWSGI:

#pip install uwsgi

安装完成后即可运行uwsgi命令启动WSGI服务器,uwsgi命令通过启动参数的方式配置可选的运行方式。

比如,如下命令可以运行uWSGI,用于加载之前编写的服务器端程序webapp.py:

#uwsgi --http :9090 --wsgi-file webapp.py

启动时用--http参数指定了监听端口,用--wsgi-file指定了服务器端的程序名。

如上所示,uWSGI在启动的过程中会输出系统的一些环境信息:服务器名、进程数限制、服务器硬件配置、最大文件句柄数等。

 

除了在uWSGI启动命令行中提供配置参数,uWSGI还允许通过一个配置文件设置这些配置参数,比如可以编写如下配置文件,保存在文件名uwsgi.ini中:

[uwsgi]
http=:9090
wsgi-file=webapp.py

启动uWSGI时直接指定配置文件即可:

#uwsgi uwsgi.ini

此时用浏览器访问服务器的9090端口:

127.0.0.1:9090

除了http和wsgi-file参数,uWSGI还有很多其他参数,常用的如下。

•socket:以WSGI的Socket方式运行,并指定连接地址和端口。该Socket接口是uWSGI与其他Web服务器(Ng-inx/Apache)等进行对接的方式。   
•chdir:指定uWSGI启动后的当前目录。   
•processes:指定启动服务器端程序的进程数。   
•threads:指定每个服务器端程序的线程数。即服务器端的总线程数为precesses×threads。   
•uid:指定运行uWSGI的Linux用户id。

比如,如下配置文件用于用Socket方式启动一个uWSGI服务器,并配置了进程和线程数:

[uwsgi]
socket=127.0.0.1:3011
wsgi-file=webapp.py
processes=4
threads=3

--------------------------------------------------------------------------------------------------------------------------------------------!

4. 集成Nginx与uWSGI

直接通过在站点配置文件中为location配置uwsgi_pass,即可将Nginx与uWSGI集成,建立一个基于Nginx+Python的正式站点。

针对如下uWSGI接口有:

[uwsgi]
socket=127.0.0.1:3011
wsgi-file=webapp.py

Nginx的站点配置文件为:

server { 
  listen 80;##此处改为服务器的真实IP
  server_name 121.12.134.11;
  location /{
  ##此处IP与Port配置必须与uwsgi接口中参数相同
  uwsgi_pass http://127.0.0.1:3011;
  }
}

技巧:可以为一个uWSGI配置多个Nginx Server和location,这样就轻松实现了以多域名访问同一个Python程序。

 

 

注意:

访问目标站点时,一定要向启动uwsgi

 

 
posted @ 2018-03-01 16:25  丰study  阅读(411)  评论(0)    收藏  举报