改進uwsgi啟動指令碼,使其支援多個獨立配置檔案

2022-02-28 02:09:30 字數 2467 閱讀 1844

最近在研究flask,在架設執行環境的時候犯了難。因為我想把每個獨立的應用像nginx處理多個**那樣,每個應用單獨乙個配置檔案。而網上流傳的uwsgi啟動指令碼都只支援單個配置檔案。雖然有文章說可以把多個應用的配置寫成命令整合到啟動指令碼裡,但那樣的話顯然不夠靈活。官方文件看了頭實在是大,找來找去也沒個頭緒。於是決定自己把啟動指令碼改進一下。在原來指令碼的基礎上加入了配置檔案遍歷獲取,再迴圈處理每個配置檔案。改造難度不大效果卻很好,完美實現我的需求。現將**貼出來分享給有需要的人。當然如果您有更簡便的方法能達到目的,還請勞煩告之一聲。

特別宣告:

1、 指令碼只支援ini格式配置檔案的載入,如需要載入其他格式配置檔案請自行修改指令碼中對應位置**。

3、 指令碼命名為uwsgi_svr儲存到/etc/init.d/目錄下,記得配置執行許可權。

#!/bin/bash

# chkconfig: 2345 55 25

# description: startup script for uwsgi webserver on debian. place in /etc/init.d and

# 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

# modify by lykyl

# ver:1.1

# description: script can loads multiple configs now.

path=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

desc="uwsgi daemon"

name=uwsgi_srv

daemon=/usr/local/bin/uwsgi

configdir=/etc/uwsgi/

piddir=/var/run/

scriptname=/etc/init.d/$name

findcmd="/usr/bin/find"

declare -a inilist

declare -a sitenamelist

function init()

dositenamelist=($ `basename $i|awk -f. ''`)

done

}function start()

doif $daemon $i; then

echo "$ started"

else

echo "$ already running"

filet ++c

done}

function stop()

doif $daemon --stop $$.pid; then

echo "$ stoped"

else

echo "$ not running"

firm -f $$.pid

let ++c

done}

function reload()

doif $daemon --reload $$.pid; then

echo "$ reloaded"

else

echo "$ can't reload"

filet ++c

done}

function status()

#main

set -e

[ -x "$daemon" ] || exit 0

init

case "$1" in

status)

echo -en "status $name: \n"

status

;; start)

echo -en "starting $name: \n"

start

;; stop)

echo -en "stopping $name: \n"

stop

;; reload|graceful)

echo -en "reloading $name: \n"

reload

;; *)

echo "usage: $scriptname " >&2

exit 3

;;esac

exit 0

tomcat啟動指令碼,支援啟動 停止 重啟命令

我們經常在部署tomcat專案的時候,部署了新包之後,需要重啟tomcat,如果你每次都是kill掉tomcat程序,然後再使用startup.sh啟動的話,是不是覺得很不爽?那你不妨使用 的方法。1 新建乙個tomcat.s 件,檔案內容如下 bin bash shutdown tomcat ho...

Oracle 啟動指令碼

大家都注意到用oracle自帶的dbstart指令碼無法在系統啟動時自動啟動oracle資料庫,下面介紹oracle啟動指令碼的編寫和設定!最簡單的指令碼示例 bin sh sqlplus as sysdba oracle instance started.total system global a...

bash啟動指令碼

啟動指令碼是bash啟動時自動執行的指令碼。使用者可以把一些環境變數的設定和alias umask設定放在啟動指令碼中,這樣每次啟動shell時這些設定都自動生效。思考一下,bash在執行啟動指令碼時是以fork子shell方式執行的還是以source方式執行的?啟動bash的方法不同,執行啟動指令...