nginx+uWsgi访问python项目

一、安装uWsgi

1、yum安装

      yum -y install uwsgi

      yum -y install uwsgi-plugin-python

如果找不到安装包解决如下:

     yum -y install epel-release

安装完之后清除缓存

     yum clean all

 uWSGI配置文件如下

[uwsgi]
uid = uwsgi
gid = uwsgi
pidfile = /run/uwsgi/uwsgi.pid
emperor = /etc/uwsgi.d
stats = /run/uwsgi/stats.sock
chmod-socket = 666
emperor-tyrant = true
cap = setgid,setuid
;配置这个可以在浏览器直接访问
;http-socket = :8080 
plugin = python
;用nginx做反向代理的话必须这样配置否则报错
socket = :8080
wsgi-file=/var/www/python/index.py
py-autoreload = 1
;master = true
;processes = 4
;只要指定文件夹发生改动就重启实例
;touch-reload = /var/www/python
;使进程在后台运行,并将日志打到指定的日志文件或者udp服务器
daemonize = /var/log/uwsgi/%n_daemonize.log
使用yum安装可以使用 systemctl start uwsgi 启动,当然停止和重启也可以

2、编译安装

yum install -y pcre pcre-devel pcre-stati

yum -y install uwsgi-plugin-python

wget https://projects.unbit.it/downloads/uwsgi-2.0.15.tar.gz

解压安装

python uwsgiconfig.py --build

如果有错误根据错误提示解决

这样安装是安装在源码目录中的并且没有 uwsgi.ini文件需要手动添加

3、配置多个站点

思路:使用 uwsgi /etc/uwsgi.ini 这样的方式启动多个线程

shell脚本如下

#!/bin/bash
case $1 in
start)
  ini_file=`ls /etc/uwsgi.d/`
  for file in ${ini_file}
  do
    uwsgi /etc/uwsgi.d/${file}
  done
  if [ $? == 0 ]
  then
    echo "uwsgi start successed!"
  fi
;;
stop)
  ini_file=`ls /run/uwsgi/ |grep '.d'`
  for file in ${ini_file}
  do
    uwsgi --stop /run/uwsgi/${file}
  done
  if [ $? == 0 ]
  then
    echo "uwsgi stop successed!"
  fi
;;
restart)
  ${0} stop
  ${0} start
;;
*)
  echo "useage stop|start|restart"
;;
esac

需要注意的是uwsgi配置文件必须要都在/etc/uwsgi.d/文件夹下,另外pid文件都在/run/uwsgi/文件夹下

注意:

    linux下本身自带的python是2.7.5版本,升级到3.5.2的话,要用pip3 install uwsgi来进行安装 uwsgi 并且在配置文件中不能使用plugin=python这句

    通过pip3安装的uwsgi开机启动的话会不要把pid文件放在/run 或者是 /var/run目录下,在重启的时候会被删掉,可以自定义文件的位置


你可能感兴趣的:(python)