<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          #Framework# Python+Uwsig+Nginx+Supervisor

          共 13950字,需瀏覽 28分鐘

           ·

          2024-05-16 22:55

           文章所涉及內(nèi)容更多來(lái)自網(wǎng)絡(luò),在此聲明,并感謝知識(shí)的貢獻(xiàn)者!

          Python 安裝
          ? Python3安裝:

          查看python版本

           

          查看python 可執(zhí)行文件的位置

           

          進(jìn)行python所在位置,查看python信息

           

          安裝 python依賴包

          yum -y group install "Development tools"

          yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel libffi-devel

          進(jìn)行python版本備份

          Mv /bin/python /bin/python.bak

           

          下載python安裝包

          wget https://www.python.org/ftp/python/3.7.6/Python-3.7.6.tar.xz

          解壓縮

          tar -xvJf Python-3.7.6.tar.xz

          安裝

          Cd Python-3.7.6

          ./configure --prefix=/usr/local/python3 --enable-optimizations --with-ssl #第一個(gè)指定安裝的路徑,不指定的話,安裝過(guò)程中可能軟件所需要的文件復(fù)制到其他不同目錄,刪除軟件很不方便,復(fù)制軟件也不方便. #第二個(gè)可以提高python10%-20%代碼運(yùn)行速度. #第三個(gè)是為了安裝pip需要用到ssl,后面報(bào)錯(cuò)會(huì)有提到.

          make && make install

          確認(rèn)目錄下/usr/local/目錄下就會(huì)有python3了。

          cd /usr/local/python3/

          創(chuàng)建軟鏈接

          ln -s /usr/local/python3/bin/python3 /usr/bin/python

          ln -s /usr/local/python3/bin/pip3 /usr/bin/pip

          查看版本

          python -V

          python2 -V

          cd /usr/bin/

          ll python*

          修改yum的配置

          vi /usr/bin/yum

          vi /usr/libexec/urlgrabber-ext-down

           

          Flask 安裝

          ? Python3 Flask安裝:

          Flask模塊安裝

          pip install flask

          創(chuàng)建flask項(xiàng)目

          cd /home/wwwroot/flask_project

          vi app.py

          from flask import Flask,request,render_template

          app = Flask(__name__)

          @app.route('/')

          def index():

              return 'hello world'

          if __name__ == '__main__':

              app.run(debug=True)

          python app.py

          瀏覽器輸入:

          192.168.1.20:9000

           

          ? Python3 Uwsgi安裝:

          uwigi安裝

          flask的作用只是一個(gè)框架,它不是服務(wù)器,也不會(huì)去關(guān)心一些安全問(wèn)題、HTTP 的性能問(wèn)題等。所以我們需要更加專業(yè)的 HTTP 服務(wù)器,如uwsgi。

          uwsgi 卸載

          yum remove uwsgi

          pip uninstall uwsgi

           

          yum install pcre

          yum install libxml2

          yum insall python-devel

          pip install uwsgi

          建立連接

          ln -s /usr/local/python3/bin/uwsgi /usr/bin/uwsgi

          編輯python文件

          Vi /home/wwwroot/flask/test.py

          def application(env, start_response):

              start_response('200 OK', [('Content-Type','text/html')])

          return [b"Hello World"]

          運(yùn)行命令

          uwsgi --http :8001 --wsgi-file test.py

           

          #app.py

          from flask import  Flask

          app = Flask(__name__)

          @app.route("/")

          def hello():

              return "Hello World"


          #run.py

          from app import app

          if __name__ == "__main__":

             app.run()


          [uwsgi]

          #uwsgi啟動(dòng)時(shí),所使用的地址和端口(這個(gè)是http協(xié)議的)

          http=0.0.0.0:5000

          #uwsgi 啟動(dòng)時(shí)所使用的地址與端口(這個(gè)是socke協(xié)議)

          socket=0.0.0.0:8001

          #指向網(wǎng)站目錄就是你那個(gè)包含flask項(xiàng)目的文件夾(如復(fù)制記得更改)

          chdir=/home/xrf/mypython/flaskWeb

          #python 啟動(dòng)程序文件就是包含if __name__ == "__main__":manager.run()的py文件(記得改哦)

          wsgi-file=run.py

          #python 程序內(nèi)用以啟動(dòng)的application 變量名   就是這個(gè):app = Flask(__name__)(記得改哦)

          callable=app

          #處理器數(shù)

          processes=4

          #線程數(shù)

          threads=2

          #狀態(tài)檢測(cè)地址

          stats=127.0.0.1:9191


          uwsgi uwsgi.ini

           

          后臺(tái)殺掉uwsgi進(jìn)程

          pkill -f uwsgi -9


          Nginx 安裝

          ? Python3 Nginx安裝:

          Nginx

          Uwsgi就是一個(gè)便攜的 web 服務(wù)器,當(dāng)然也可以做一個(gè)連接其他app的中間件,所以我們一般還是在它們前面檔一個(gè)更加專業(yè)的 HTTP 服務(wù)器——nginx,也就是上文提到的。僅僅只使用uWSGI的會(huì)有性能不夠,安全性不夠的情況。nginx是經(jīng)過(guò)長(zhǎng)時(shí)間驗(yàn)證的一個(gè)更好的服務(wù)器。

          Nginx安裝

          下載

          wget http://nginx.org/download/nginx-1.21.2.tar.gz

          解壓縮

          tar zxvf nginx-1.10.2.tar.gz

          進(jìn)入路徑

          cd nginx-1.21.2

          配置

          ./configure && make && make install

          查找安裝路徑

          whereis nginx

          把安裝路勁添加到環(huán)境變量

          vi ~/.bashrc

          加上一句上面找到的nginx的路徑

          export PATH=$PATH:/usr/local/nginx/sbin/

          保存并退出

          source ~/.bashrc

          系統(tǒng)添加nginx服務(wù)

          Vi /etc/init.d/nginx

          #!/bin/sh

          # nginx - this script starts and stops the nginx daemin

          #

          # chkconfig:   - 85 15


          # description:  Nginx is an HTTP(S) server, HTTP(S) reverse \

          #               proxy and IMAP/POP3 proxy server


          # processname: nginx

          # config:      /usr/local/nginx/conf/nginx.conf

          # pidfile:     /usr/local/nginx/logs/nginx.pid


          # Source function library.


          . /etc/rc.d/init.d/functions


          # Source networking configuration.


          . /etc/sysconfig/network


          # Check that networking is up.


          [ "$NETWORKING" = "no" ] && exit 0


          nginx="/usr/local/nginx/sbin/nginx"


          prog=$(basename $nginx)


          NGINX_CONF_FILE="/usr/local/nginx/conf/nginx.conf"


          lockfile=/var/lock/subsys/nginx


          start() {


              [ -x $nginx ] || exit 5


              [ -f $NGINX_CONF_FILE ] || exit 6


              echo -n $"Starting $prog: "


              daemon $nginx -c $NGINX_CONF_FILE


              retval=$?


              echo


              [ $retval -eq 0 ] && touch $lockfile


              return $retval


          }



          stop() {


              echo -n $"Stopping $prog: "


              killproc $prog -QUIT


              retval=$?


              echo


              [ $retval -eq 0 ] && rm -f $lockfile


              return $retval


          }



          restart() {


              configtest || return $?


              stop


              start


          }



          reload() {


              configtest || return $?


              echo -n $"Reloading $prog: "


              killproc $nginx -HUP


              RETVAL=$?


              echo


          }


          force_reload() {


              restart


          }



          configtest() {


            $nginx -t -c $NGINX_CONF_FILE


          }




          rh_status() {


              status $prog


          }



          rh_status_q() {


              rh_status >/dev/null 2>&1


          }


          case "$1" in


              start)


                  rh_status_q && exit 0

                  $1

                  ;;


              stop)



                  rh_status_q || exit 0

                  $1

                  ;;


              restart|configtest)

                  $1

                  ;;


              reload)

                  rh_status_q || exit 7

                  $1

                  ;;



              force-reload)

                  force_reload

                  ;;

              status)

                  rh_status

                  ;;



              condrestart|try-restart)


                  rh_status_q || exit 0

                      ;;


              *)


                  echo $"Usage: $0 {start|stop|status|restart|condrestart|try-restart|reload|force-reload|configtest}"

                  exit 2


          esac

          進(jìn)入目錄

          cd /etc/init.d

          修改權(quán)限

          chmod 755 /etc/init.d/nginx

          開(kāi)始注冊(cè)

          chkconfig --add nginx

          啟動(dòng)服務(wù)

          service nginx start

          nginx 管理服務(wù)命令

          systemctl start nginx #開(kāi)啟nginx服務(wù)

          systemctl stop nginx #停止nginx服務(wù)

          systemctl restart nginx #重啟nginx服務(wù)

          創(chuàng)建項(xiàng)目文件 hello.py

          Vi /home/wwwroot/flask_project/hello.py

          項(xiàng)目uwsgi配置文件 config.ini

          Vi /home/wwwroot/flask_project/config.ini

          系統(tǒng)nginx的配置文件

          Vi /usr/local/nginx/conf/nginx.conf

          關(guān)閉 uwsgi進(jìn)程

          Pkill -f uwsgi -9

          配置uwsgi以及啟動(dòng)nginx

          Uwsgi –ini /home/wwwroot/flask_project/config.ini & systemctl restart nginx

           

          Supervisor 安裝

          ? Python3 Supervisor安裝:

          Supervisor

          Supervisor(http://supervisord.org/)是用Python開(kāi)發(fā)的一個(gè)client/server服務(wù),是Linux/Unix系統(tǒng)下的一個(gè)進(jìn)程管理工具,不支持Windows系統(tǒng)。它可以很方便的監(jiān)聽(tīng)、啟動(dòng)、停止、重啟一個(gè)或多個(gè)進(jìn)程。用Supervisor管理的進(jìn)程,當(dāng)一個(gè)進(jìn)程意外被殺死,supervisort監(jiān)聽(tīng)到進(jìn)程死后,會(huì)自動(dòng)將它重新拉起,很方便的做到進(jìn)程自動(dòng)恢復(fù)的功能,不再需要自己寫(xiě)shell腳本來(lái)控制。

          安裝supervisor

          yum install -y supervisor

          如果提示supervisor找不到,則使用如下指令:

          Yum install epel-release

          Yum install -y supervisor

          如果有問(wèn)題

          [root@localhost bin]# easy_install supervisor

          配置supervisor

          編輯下/usr/bin/supervisord、/usr/bin/echo_supervisord_conf、/usr/bin/supervisorctl

          #!/usr/bin/python 改成 #!/usr/bin/python2

          查看 supervisord的使用幫助

          Supervisord -h

          創(chuàng)建默認(rèn)配置文件。

          [root@localhost bin]# echo_supervisord_conf > /etc/supervisord.conf

          修改/etc/supervisord.conf 默認(rèn)配置文件

          Vi /etc/supervisord.conf

          直接找到最下面的這個(gè)。

          [include]                                   # 這里的‘;’注釋去掉

          ;files = relative/directory/*.ini

          files = /etc/supervisor/conf.d/*.conf       # 這里加入自定義的配置文件文件路徑

           

          創(chuàng)建自定義文件配置文件夾

          [root@localhost etc]# mkdir -p supervisor/conf.d

          [root@localhost etc]# cd supervisor/conf.d

          [root@localhost conf.d]# vim uwsgi.conf

           

          stopasgroup=true     ;默認(rèn)為false,進(jìn)程被殺死時(shí),是否向這個(gè)進(jìn)程組發(fā)送stop信號(hào),包括子進(jìn)程

          killasgroup=true     ;默認(rèn)為false,向進(jìn)程組發(fā)送kill信號(hào),包括子進(jìn)程

          殺掉已經(jīng)存在的進(jìn)程

          Pkill -f supervisord -9

          -c指定配置文件路徑,-n可前臺(tái)運(yùn)行,方便自己調(diào)試

          /usr/bin/supervisord -c /etc/supervisord.conf

          查看程序

          Ps -aux | grep supervisord

          Ps -aux | grep uwsgi


          配置nginx文件

          Vi /usr/local/nginx/conf/nginx.conf

           

          Supervisor 配置文件 /etc/supervisord.conf

          自定義配置文件 /etc/supervisor/conf.d/uwsgi.conf       

          Supervisor 配置重啟

           

          確保nginx 啟動(dòng)

          Systemctl start nginx

          啟動(dòng)supervisord

          /usr/bin/supervisord -c /etc/supervisord.conf

          殺掉supervisord進(jìn)程

          Pkill -f supervisord -9


          supervisor出現(xiàn)Unlinking stale socket /tmp/supervisor、unix:/run/supervisor/supervisor.sock no such file

          1、修改配置文件

          vim supervisord.conf

          這里把所有的/tmp路徑改掉,

          /tmp/supervisor.sock 改成/var/run/supervisor.sock,

          /tmp/supervisord.log 改成/var/log/supervisor.log,

          /tmp/supervisord.pid 改成 /var/run/supervisor.pid 要不容易被linux自動(dòng)清掉。

          樣例如下:

          [unix_http_server]

          file=/run/supervisor/supervisor.sock   ; the path to the socket file

          [supervisord]

          logfile=/var/log/supervisord.log ; main log file; default $CWD/supervisord.log

          pidfile=/run/supervisor/supervisord.pid ; supervisord pidfile; default supervisord.pid

          [supervisorctl]

          serverurl=unix:///run/supervisor/supervisor.sock ; use a unix:// URL  for a unix socket

          2、修改權(quán)限

          sudo chmod 777 -R /run

          sudo chmod 777 -R /var

          如果沒(méi)改,啟動(dòng)可能會(huì)報(bào)錯(cuò) IOError: [Errno 13] Permission denied: ‘/var/log/supervisord.log’

          3、創(chuàng)建supervisor.sock

          sudo touch /run/supervisor/supervisor.sock

          sudo chmod 777 /run/supervisor/supervisor.sock

          sudo chmod 777 -R /run

          4、添加supervisor.sock鏈接

          unlink /run/supervisor/supervisor.sock

          5、啟動(dòng)supervisord


          參考資料

          ? 參考資料:

          Linux vi命令(vi編輯器)30分鐘入門(mén)教程 (biancheng.net)

          http://c.biancheng.net/vi/

          (4條消息) centos 7 網(wǎng)絡(luò)配置( 網(wǎng)關(guān)、dns、ip地址配置)_jcxch的專欄-CSDN博客

          https://blog.csdn.net/jcxch/article/details/48632761

          (4條消息) CentOS網(wǎng)絡(luò)配置與重啟方法_wxt_hillwill的博客-CSDN博客_centos重置網(wǎng)絡(luò)

          https://blog.csdn.net/wxt_hillwill/article/details/113742637

          CentOS 設(shè)置網(wǎng)絡(luò)(修改IP&修改網(wǎng)關(guān)&修改DNS) - 網(wǎng)絡(luò)愛(ài)上點(diǎn)擊 - 博客園 (cnblogs.com)

          https://www.cnblogs.com/visi_zhangyang/articles/2429185.html

          (4條消息) VMware虛擬機(jī)設(shè)置上網(wǎng)及與本地計(jì)算機(jī)通信_(tái)bobozai86的博客-CSDN博客_虛擬機(jī)網(wǎng)絡(luò)怎么設(shè)置可以與本機(jī)連接

          https://blog.csdn.net/bobozai86/article/details/82699983

          mysql細(xì)說(shuō)show slave status參數(shù)詳解(最全) - --smile - 博客園 (cnblogs.com)

          https://www.cnblogs.com/--smile/p/11811715.html

          (4條消息) CentOS7安裝MySQL(完整版)_程序員進(jìn)階之路-CSDN博客_centos7安裝mysql https://blog.csdn.net/qq_36582604/article/details/80526287

          (4條消息) CentOS7上實(shí)現(xiàn)mysql數(shù)據(jù)庫(kù)主從備份_貧僧想吃肉的博客-CSDN博客_centos mysql 主從備份

          https://blog.csdn.net/weixin_41659822/article/details/108146409

          supervisor介紹與使用 - 雪山過(guò)客 - 博客園 (cnblogs.com)

          https://www.cnblogs.com/blogyuhan/p/9330831.html

          centos7中安裝python3 - 修瑾 - 博客園 (cnblogs.com)

          https://www.cnblogs.com/xiujin/p/11477419.html

          centos7建立刪除軟連接 - 豆?jié){D - 博客園 (cnblogs.com)

          https://www.cnblogs.com/soymilk2019/p/14876096.html

          CentOS+uWSGI+Nginx 配置Django Web服務(wù)器 (lazynight.me)

          http://lazynight.me/2512.html

          (4條消息) django為什么需要uwsgi和nginx的配合_TY_ANG的博客-CSDN博客

          https://blog.csdn.net/weixin_44223088/article/details/105449446

          (4條消息) centos7安裝和配置uWSGI_u010863022的博客-CSDN博客_centos7 安裝uwsgi

          https://blog.csdn.net/u010863022/article/details/104866820

          在centos下啟動(dòng)nginx出現(xiàn)Failed to start nginx.service:unit not found - ansibee - 博客園 (cnblogs.com)

          https://www.cnblogs.com/ansibee/p/8087476.html

          CentOS 7 Nginx 錯(cuò)誤集合 - The-fat - 博客園 (cnblogs.com)

          https://www.cnblogs.com/wangye666/p/10225003.html

          (4條消息) centos7重啟nginx報(bào)錯(cuò)解決辦法nginx: [error] open() "/usr/local/nginx/logs/nginx.pid" failed_susu1083018911的博客-CSDN博客

          https://blog.csdn.net/susu1083018911/article/details/103526372

          (4條消息) uwsgi啟動(dòng)報(bào)錯(cuò) chdir(): No such file or directory [core/uwsgi.c line 2591]_中國(guó)移動(dòng)。4G的博客-CSDN博客

          https://blog.csdn.net/weixin_42292991/article/details/95976016

          阿里云:uwsgi--配置出錯(cuò) bind(): Address already in use [core/socket.c line 769] - Be-myself - 博客園 (cnblogs.com)

          https://www.cnblogs.com/gengyufei/p/11678141.html

          Centos7 下python3 uwsgi的安裝配置 - 云+社區(qū) - 騰訊云 (tencent.com)

          https://cloud.tencent.com/developer/article/1416183

          Centos7 搭建flask 應(yīng)用 nginx + uwsgi + flask - 肥冬瓜 - 博客園 (cnblogs.com)

          https://www.cnblogs.com/grayhuang/p/13447968.html

          CentOS7.2安裝配置nginx+uwsgi+python+flask運(yùn)行環(huán)境 - 挨踢學(xué)霸 - 博客園 (cnblogs.com)

          https://www.cnblogs.com/itxb/p/8570119.html

          CentOS7.2安裝配置nginx+uwsgi+python+flask運(yùn)行環(huán)境 - 挨踢學(xué)霸 - 博客園 (cnblogs.com)

          https://www.cnblogs.com/itxb/p/8570119.html

          Centos7 搭建flask 應(yīng)用 nginx + uwsgi + flask - 肥冬瓜 - 博客園 (cnblogs.com)

          https://www.cnblogs.com/grayhuang/p/13447968.html

          基于Centos7+Flask+Nginx+uWSGI+Python3的服務(wù)器網(wǎng)頁(yè)搭建教程 - Pyrokine - 博客園 (cnblogs.com)

          https://www.cnblogs.com/Pyrokine/p/9095629.html

          (4條消息) 阿里云centos 部署python flask應(yīng)用(centos+python3+nginx+flask+uwsgi+supervisor)_Courage-Hu的專欄-CSDN博客

          https://blog.csdn.net/u012135009/article/details/87397166

          Centos 7.6上supervisor問(wèn)題集錦- 阿文博客 (wenfeifei.com)

          http://www.wenfeifei.com/art/detail/n0baZG7

          (4條消息) supervisor出現(xiàn)Unlinking stale socket /tmp/supervisor、unix:/run/supervisor/supervisor.sock no such file_代碼講故事-CSDN博客

          https://blog.csdn.net/u014374009/article/details/109198777

          在Centos7使用supervisor - 知乎 (zhihu.com)

          https://zhuanlan.zhihu.com/p/79801019

          Supervisor + Nginx + Python3 部署Tornado - 云+社區(qū) - 騰訊云 (tencent.com)

          https://cloud.tencent.com/developer/article/1744828

          瀏覽 28
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  黄色成人视频免费 | 日日干夜夜操 | 国产精品久久久久久无码红治院 | a视频观看 | 操操插插 |