nginx django-uwsgi服务脚本创建

Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器,django是python应用最普遍的Web框架, 许多成功的网站和APP都基于Django。uwsgi是nginx python django的主要中间件,但是因为uwsgi没有提供方便的脚本供启动和停止。下面为uwsgi服务脚本编写方法,将脚本注册为Linux服务,可以开机自启,通过service start|stop|restart,启动、停止、重启项目。

Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器,django是python应用最普遍的Web框架, 许多成功的网站和APP都基于Django。uwsgi是nginx python django的主要中间件,但是因为uwsgi没有提供方便的脚本供启动和停止。下面为uwsgi服务脚本编写方法,将脚本注册为Linux服务,可以开机自启,通过service start|stop|restart,启动、停止、重启项目。uwsgi参考网址https://uwsgi-docs-zh.readthedocs.io/zh_CN/latest/Nginx.html

1.在django项目根目录中创建uwsgi.ini

[uwsgi]
socket=127.0.0.1:8997
#项目目录
chdir=/home/wwwroot/tools
module=tools.wsgi
master=true
processes=2
daemonize=tools.log
vacuum=true
#设置pid文件可以使用uwsgi --stop pidfile
pidfile=uwsgi.pid 

用uwsgi --ini uwsgi.ini 启动uwsgi服务,通过netstat -an|grep 8997可以看到端口已开启。

2.创建项目服务脚本

#!/bin/bash

### BEGIN INIT INFO
# Provides:          VHSAL.COM
# Required-Start:    $network $local_fs $remote_fs
# Required-Stop:     $network $local_fs $remote_fs
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: UWSGI tool
# Description:       Start or stop the UWSGI server
### END INIT INFO

NAME="uwsgi"
INI_FILE="uwsgi.ini"
PID_FILE="uwsgi.pid"
FOLDER="/home/wwwroot/tools"
UWSGI_BIN="/usr/local/bin/uwsgi"
Info_font_prefix="\033[32m" && Error_font_prefix="\033[31m" && Info_background_prefix="\033[42;37m" && Error_background_prefix="\033[41;37m" && Font_suffix="\033[0m"
RETVAL=0

check_running(){
    PID=`ps -ef |grep "${NAME}" |grep -v "grep" |grep -v "init.d" |grep -v "service" |grep "${INI_FILE}"`
    if [[ ! -z ${PID} ]]; then
        return 0
    else
        return 1
    fi
}
do_start(){
    check_running
    if [[ $? -eq 0 ]]; then
    echo -e "${Info_font_prefix}[信息]${Font_suffix} $NAME (PID ${PID}) 正在运行..." && exit 0
    else
        cd ${FOLDER}
        $UWSGI_BIN --ini $INI_FILE 
        sleep 2s
        check_running
        if [[ $? -eq 0 ]]; then
            echo -e "${Info_font_prefix}[信息]${Font_suffix} $NAME 启动成功 !"
        else
            echo -e "${Error_font_prefix}[错误]${Font_suffix} $NAME 启动失败 !"
        fi
    fi
}
do_stop(){
    check_running
    if [[ $? -eq 0 ]]; then
        cd ${FOLDER}
        $UWSGI_BIN --stop $PID_FILE
        sleep 3s
        check_running 
        RETVAL=$?
        if [[ $RETVAL -eq 0 ]]; then
            echo -e "${Error_font_prefix}[错误]${Font_suffix}$NAME 停止失败 !"
        else
            echo -e "${Info_font_prefix}[信息]${Font_suffix} $NAME 停止成功 !"
        fi
    else
        echo -e "${Info_font_prefix}[信息]${Font_suffix} $NAME 未运行 !"
        RETVAL=1
    fi
}
do_status(){
    check_running
    if [[ $? -eq 0 ]]; then
        echo -e "${Info_font_prefix}[信息]${Font_suffix} $NAME (PID ${PID}) 正在运行..."
    else
        echo -e "${Info_font_prefix}[信息]${Font_suffix} $NAME 未运行 !"
        RETVAL=1
    fi
}
do_restart(){
    do_stop
    do_start
}
case "$1" in
    start|stop|restart|status)
    do_$1
    ;;
    *)
    echo "使用方法: $0 { start | stop | restart | status }"
    RETVAL=1
    ;;
esac
exit $RETVAL

在/etc/init.d目录中创建以上服务脚本,通过service uwsgi-tools start启动服务,service uwsgi-tools stop 停止服务。下载地址:

3.加入开机自启动

#将服务设置开机自启。
sudo update-rc.d uwsgi-tools defaults    
//设置服务开机自启(默认条件)
# update-rc.d -f uwsgi-tools remove    //设置服务删除开机自

一条评论

  1. 你好!.

    我可以在哪里免费下载XEvil在您的网站?
    从你的支持得到的信息。 XEvil确实是解决验证码的最佳方案,但我需要最新版本。

    多謝。.

留下评论

您的电子邮箱地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据