uwsgi 是python的web容器,nginx作为转发代理
一、安装nginx

yum nginx

二:安装python
下载python3的源码进行安装

wget https://www.python.org/ftp/python/3.5.2/Python-3.5.2.tgz #下载python源码
chmod 777 Python-3.5.2.tgz #授权,不然不能解压
tar -zxvf Python-3.5.2.tgz #解压包在目前目录
cd Python-3.5.2 #进到解压后的文件夹
./configure --prefix=/opt/python3 #指定安装目录
make all  #编译
make install #安装
./opt/python3/python -V  #查看是否看装成功
make clean
make distclean

这时安装的python还不是默认的python工具。centos默认会带一个python2的环境。需要将python3设调为默认

mv /usr/bin/python /usr/bin/python2.6 
ln -s /opt/python3/bin/python3.5 /usr/bin/python
python -V

yum是python脚本,使用的是2.6版本。为了让yum能继续工作需要修改yum第一行,指定python 2.6版本

vi /usr/bin/yum
#!/usr/bin/python改成#!/usr/bin/python2.6 保存退出

三、安装uwsgi

cd /opt/python3/bin/
./pip3.5 install uwsgi #使用pip安装uwsgi
./uwsgi --version #检是否安装成功

四、安装django

./pip3.5 install django

五、配置uwsgi
在/etc下建uwsgi9090.ini

[uwsgi]
socket = 127.0.0.1:9090
master = true         #主进程
vhost = true          #多站模式
no-stie = true        #多站模式时不设置入口模块和文件
workers = 2           #子进程数
reload-mercy = 10     
vacuum = true         #退出、重启时清理文件
max-requests = 1000   
limit-as = 512
buffer-sizi = 30000
pidfile = /var/run/uwsgi9090.pid    #pid文件,用于下面的脚本启动、停止该进程
daemonize = /data/logs/uwsgi/uwsgi9090.log

设置uwsgi开机启动,在/ect/init.d/目录下新建uwsgi9090文件,内容如下:

#! /bin/sh
# chkconfig: 2345 55 25
# Description: Startup script for uwsgi webserver on Debian. Place in /etc/init.d and
# run 'update-rc.d -f uwsgi defaults', or use the appropriate command on your
# distro. For CentOS/Redhat run: 'chkconfig --add uwsgi'

### BEGIN INIT INFO
# Provides:          uwsgi
# Required-Start:    $all
# Required-Stop:     $all
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: starts the uwsgi web server
# Description:       starts uwsgi using start-stop-daemon
### END INIT INFO

# Author:   licess
# website:  http://lnmp.org

PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/opt/python3/bin
DESC="uwsgi deamo"
NAME=uwsgi9090
DAEMON=/opt/python3/bin/uwsgi
CONFIGFILE=/opt/python3/uwsgi-server/$NAME.ini

PIDFILE=/var/run/$NAME.pid
SCRIPTNAME=/etc/init.d/$NAME

set -e
[ -x "$DAEMON" ] || exit 0

do_start() {
    $DAEMON $CONFIGFILE || echo -n "uwsgi already running"
}

do_stop() {
    $DAEMON --stop $PIDFILE || echo -n "uwsgi not running"
    rm -f $PIDFILE
    echo "$DAEMON STOPED."
}

do_reload() {
    $DAEMON --reload $PIDFILE || echo -n "uwsgi can't reload"
}

do_status() {
    ps aux|grep $DAEMON
}

case "$1" in
 status)
    echo -en "Status $NAME: \n"
    do_status
 ;;
 start)
    echo -en "Starting $NAME: \n"
    do_start
 ;;
 stop)
    echo -en "Stopping $NAME: \n"
    do_stop
 ;;
 reload|graceful)
    echo -en "Reloading $NAME: \n"
    do_reload
 ;;
 *)
    echo "Usage: $SCRIPTNAME {start|stop|reload}" >&2
    exit 3
 ;;
esac
exit 0
uwsgi9090

然后在终端执行:

-- 添加服务
chkconfig --add uwsgi9090 
-- 设置开机启动
chkconfig uwsgi9090 on

六、配置nginx配置
在conf.d下建同域名相同的文件如:xxx.xxx.com.conf

server {
        listen       80;
        server_name  data.teanet.im;

        #配置资源文件
        location /resource {
            root   /opt/webapps/data/;
            autoindex on;
            autoindex_exact_size on;
            autoindex_localtime on;
            allow   all;
        }
        #重定向到uwsgi的配置
        location / {            
            include  uwsgi_params;
            uwsgi_pass  127.0.0.1:9090;
            uwsgi_param UWSGI_SCRIPT data.wsgi;
            uwsgi_param UWSGI_CHDIR /opt/webapps/;
            index  index.html index.htm;
            client_max_body_size 35m;
        }
    }

配置完后可以启动服务验证了

service uwsgi9090 start
service nginx start

如想配置多站点就得重复第五步、第六步

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐