<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                [TOC] > [參考](https://www.restran.net/2015/10/04/supervisord-tutorial/) > [官方文檔](http://supervisord.org/configuration.html#unix-http-server-section-values) ## 開啟啟動 `vim /etc/rc.local` ``` /usr/bin/supervisord -c /etc/supervisord.conf ``` ## root 啟動 supervisord 再在配置文件中對不同服務使用不同用戶 ## 執行程序 `supervisord`,運行 Supervisor 時會啟動一個進程 supervisord,它負責啟動所管理的進程,并將所管理的進程作為自己的子進程來啟動,而且可以在所管理的進程出現崩潰時自動重啟。 `supervisorctl`,是命令行管理工具,可以用來執行 stop、start、restart 等命令,來對這些子進程進行管理 ## 默認配置文件 程序自動會找 `/etc/supervisord.conf`是否存在配置 ## 避免默認 `supervisord.pid`,` supervisor.sock` 放在 `/tmp`目錄 創建文件夾 ``` mkdir /home/supervisor mkdir /var/log/supervisor mkdir /etc/supervisor.d ``` ``` [unix_http_server] file=/home/supervisor/supervisor.sock ; (the path to the socket file) [supervisord] pidfile=/home/supervisor/supervisord.pid ; (supervisord pidfile;default supervisord.pid) [supervisorctl] serverurl=unix:///home/supervisor/supervisor.sock ; use a unix:// URL for a unix socket ``` ## 使用瀏覽器來管理 ``` [inet_http_server] ; inet (TCP) server disabled by default port=127.0.0.1:9001 ; (ip_address:port specifier, *:port for ;all iface) username=user ; (default is no username (open server)) password=123 ; (default is no password (open server)) [supervisorctl] serverurl=http://127.0.0.1:9001 ; use an http:// url to specify an inet socket username=chris ; should be same as http_username if set password=123 ; should be same as http_password if set ``` ## `[supervisord]` 配置 ``` [supervisord] logfile = /home/supervisor/supervisord.log logfile_maxbytes = 50MB logfile_backups=10 loglevel = info pidfile = /home/supervisor/supervisord.pid nodaemon = false ;如果為true,則supervisor將在前臺啟動而不是守護進程 minfds = 1024 minprocs = 200 umask = 022 user = chrism identifier = supervisor directory = /tmp nocleanup = true childlogdir = /tmp strip_ansi = false environment = KEY1="value1",KEY2="value2" ``` ## `[supervisorctl]` 配置 ``` [program:theprogramname] command=/bin/cat ; 程序(相對的使用PATH,可以接受args) process_name=%(program_name)s ; process_name expr (默認%(program_name)s) numprocs=1 ;numprocs=1;要啟動的進程拷貝數 (def 1) directory=/tmp ;目錄=/tmp;執行前要轉到 cwd 的目錄 (def no cwd) umask=022 ;進程的umask(默認為None)。 priority=999 ;相對的啟動優先級(默認999) autostart=true ;從supervisord開始(默認值:true)。 autorestart=unexpected ; 是否/何時重啟(默認值:意外) startecs=1 ; prog必須保持運行的秒數 (def. 1) startretries=3 ;startretries=3;最大序列啟動失敗次數(默認為3) exitcodes=0,2 ;exitcodes=0,2;進程的'預期'退出代碼(默認為0,2) stopignal=QUIT ;用于殺死進程的信號(默認為term)。 stopwaitsecs=10 ;stopwaitsecs=10;最大等待sigkill (默認為10) stopasgroup=false ;向UNIX進程組發送停止信號(默認為false)。 killasgroup=false ; SIGKILL UNIX進程組(def false) user=chrism ;setuid到這個UNIX賬戶,以運行程序。 redirect_stderr=true ; 重定向 proc stderr 到 stdout (默認為 false) stdout_logfile=/a/path ; stdout_logfile=/a/path ; stdout log path, NONE for none ; default AUTO stdout_logfile_maxbytes=1MB ;stdout_logfile_maxbytes=1MB ;max # logfile b4輪轉前的最大字節數 (默認為50MB) stdout_logfile_backups=10 ; # stdout日志文件備份的數量(默認為10) stdout_capture_maxbytes=1MB ; 'capturemode'中的字節數(默認為0) stdout_events_enabled=false ; stdout_events_enabled=false ; 在stdout寫入時發射事件(默認為false) stderr_logfile=/a/path ; stderr_logfile=/a/path ; stderr日志路徑,NONE表示無 ;默認為AUTO stderr_logfile_maxbytes=1MB ;stderr_logfile_maxbytes=1MB ;max # logfile b4輪轉前的最大字節數 (默認為50MB) tderr_logfile_backups=10 ; stderr_logfile_backups=10 ; # stderr logfile的備份數(默認為10) stderr_capture_maxbytes=1MB ; 'capturemode'中的字節數(默認為0) stderr_events_enabled=false ; stderr_events_enabled=false; 在stderr寫入時發射事件(默認為false) environment=A="1",B="2" ; 處理環境添加(def no adds) serverurl=AUTO ; 覆蓋serverurl計算(childutils) ``` demo: ``` ; 設置進程的名稱,使用 supervisorctl 來管理進程時需要使用該進程名 [program:your_program_name] command=python server.py --port=9000 ;numprocs=1 ; 默認為1 ;process_name=%(program_name)s ; 默認為 %(program_name)s,即 [program:x] 中的 x directory=/home/python/tornado_server ; 執行 command 之前,先切換到工作目錄 user=oxygen ; 使用 oxygen 用戶來啟動該進程 ; 程序崩潰時自動重啟,重啟次數是有限制的,默認為3次 autorestart=true redirect_stderr=true ; 重定向輸出的日志 stdout_logfile = /var/log/supervisor/tornado_server.log loglevel=info ``` ### 添加主進程來開啟多個相似進程 ``` [program:web] environment=port=":505%(process_num)d" command = ./main numprocs=2 process_name=web_%(process_num)d ``` port 為 `5051`,`5052` ## `[group:x]` 配置 ``` [group:foo] programs=bar,baz priority=999 ```
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看