<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      SLAM+語音機(jī)器人DIY系列:(八)高階拓展——2.centos7下部署Django(nginx+uwsgi+django+python3)

      0.安裝步驟預(yù)覽
      (1)系統(tǒng)默認(rèn)自帶python2.x,所以需要先安裝python3.x
      (2)python2對(duì)應(yīng)pip,python3對(duì)應(yīng)pip3,用源碼安裝python3后pip3也自動(dòng)安裝了
      (3)用pip3安裝virtualenv
      (4)用virtualenv創(chuàng)建python3的虛擬環(huán)境
      (5)在創(chuàng)建的虛擬環(huán)境中,用pip3安裝Django和uwsgi
      (6)安裝nginx

      (7)創(chuàng)建django項(xiàng)目

      (8)關(guān)聯(lián)nginx、uwsgi、django


      #################使用root身份登錄系統(tǒng)執(zhí)行#####################

      1.編譯安裝python3

      (1)依賴安裝

      #為centos系統(tǒng)增加編譯功能:
      yum -y install gcc gcc-c++
      
      #防止編譯安裝python3出現(xiàn)各種異常:
      yum install wget openssl-devel bzip2-devel expat-devel gdbm-devel readline-devel sqlite-devel

      (2)編譯安裝

      #下載python3安裝包:
      cd /home/<username>/Downloads/ #<username>用自己的用戶名代替
      wget https://www.python.org/ftp/python/3.6.3/Python-3.6.3.tgz
      
      #解壓:
      tar -zxvf Python-3.6.3.tgz
      
      #配置,將python3安裝到/usr/local/python3/路徑下:
      cd Python-3.6.3
      ./configure --prefix=/usr/local/python3
      
      #編譯安裝:
      make -j2
      make install -j2
      
      #建立軟鏈接,方便在終端中直接使用python3和pip3命令:
      ln -s /usr/local/python3/bin/python3.6 /usr/bin/python3
      ln -s /usr/local/python3/bin/pip3 /usr/bin/pip3
      
      #安裝成功性測(cè)試,顯示相應(yīng)版本就表示成功了:
      python3 -V
      pip3 -V

      2.用pip3安裝virtualenv

      #更新pip3至最新版本
      pip3 install --upgrade pip
      
      #安裝virtualenv
      pip3 install virtualenv
      
      #賦予可執(zhí)行權(quán)限
      chmod 777 /usr/local/python3/lib/python3.6/site-packages/virtualenv.py
      #建立軟鏈接,方便在終端中直接使用virtualenv
      ln -s /usr/local/python3/lib/python3.6/site-packages/virtualenv.py /usr/bin/virtualenv

      3.用virtualenv創(chuàng)建python3的虛擬環(huán)境

      #切換到用戶家目錄下
      cd /home/<username>/
      
      #新建文件夾
      mkdir www_space_venv
      cd www_space_venv
      
      #創(chuàng)建名稱為venv的虛擬環(huán)境
      virtualenv -p /usr/bin/python3 venv

      4.在創(chuàng)建的虛擬環(huán)境中,用pip3安裝django和uwsgi

      cd /home/<username>/www_space_venv/
      
      #激活虛擬環(huán)境
      source venv/bin/activate
      
      #安裝django與uwsgi 
      pip3 install django
      pip3 install uwsgi
      
      #查看django安裝成功與否
      pip3 show django 
      #查看uwsgi安裝成功與否
      pip3 show uwsgi 
      
      #退出虛擬環(huán)境
      deactivate

      5.安裝nginx

      #添加nginx存儲(chǔ)庫
      yum install epel-release
      
      #安裝nginx
      yum install nginx
      
      #使用Nginx的幾個(gè)好處:
      安全:不管什么請(qǐng)求都要經(jīng)過代理服務(wù)器,這樣就避免了外部程序直接攻擊web服務(wù)器
      負(fù)載均衡:根據(jù)請(qǐng)求情況和服務(wù)器負(fù)載情況,將請(qǐng)求分配給不同的web服務(wù)器,保證服務(wù)器性能
      提高web服務(wù)器的IO性能:這個(gè)我也沒看懂,總結(jié)來說就是請(qǐng)求從客戶端傳到web服務(wù)器是需要時(shí)間的,傳遞多長時(shí)間就會(huì)讓這個(gè)進(jìn)程阻塞多長時(shí)間,而通過反向代理,就可以在反向代理這完整接受請(qǐng)求,然后再傳給web服務(wù)器,從而保證服務(wù)器性能,而且有的一些簡單的事情(比如靜態(tài)文件)可以直接由反向代理處理,不經(jīng)過web服務(wù)器

      6.創(chuàng)建一個(gè)django的項(xiàng)目

      (1)新建項(xiàng)目

      #切換到工作目錄
      cd /home/<username>/www_space_venv/
      
      #激活虛擬環(huán)境
      source venv/bin/activate
      
      #創(chuàng)建自己的django項(xiàng)目,項(xiàng)目取名為mysite_django
      django-admin.py startproject mysite_django
      
      #修改settings.py,允許所有HOST的訪問,不然瀏覽器訪問會(huì)報(bào)錯(cuò)DisallowedHost at / Invalid HTTP_HOST header
      ALLOWED_HOSTS = [ ] #修改前
      ALLOWED_HOSTS = ['*'] #修改后
      
      #啟動(dòng)django自帶web服務(wù)器
      cd mysite_django
      python3 manage.py runserver <自己主機(jī)地址IP>:8080 #<自己主機(jī)地址IP>填自己主機(jī)地址,后面需要指定一個(gè)可用的端口(如8080)
      
      #用瀏覽器訪問django,<自己主機(jī)地址IP>:8080,得到如下消息說明成功
      The install worked successfully! Congratulations!

      (2)新建應(yīng)用

      #切換到工作目錄
      cd /home/<username>/www_space_venv/
      
      #激活虛擬環(huán)境
      source venv/bin/activate
      
      #新建應(yīng)用
      cd mysite_django
      python3 manage.py startapp hello_app
      
      #新定義的應(yīng)用加到settings.py中的INSTALL_APPS中
      INSTALLED_APPS = [
      'django.contrib.admin',
      'django.contrib.auth',
      'django.contrib.contenttypes',
      'django.contrib.sessions',
      'django.contrib.messages',
      'django.contrib.staticfiles',
      'hello_app',
      ]

      編輯應(yīng)用中的views.py文件:

      from django.http.response import HttpResponse
      
      def hello(request):
          user = request.GET.get('user')
          if not user: user = 'world'
          return HttpResponse('hello %s' % user)

      編輯項(xiàng)目中的urls.py文件:

      from django.contrib import admin
      from django.urls import path
      
      from hello_app import views as hello_views
      
      urlpatterns = [
      path('admin/', admin.site.urls),
      path('hello',hello_views.hello),
      ]

      (3)測(cè)試

      #啟動(dòng)django自帶web服務(wù)器
      cd mysite_django
      python3 manage.py runserver <自己主機(jī)地址IP>:8080 #<自己主機(jī)地址IP>填自己主機(jī)地址,后面需要指定一個(gè)可用的端口(如8080)
      
      #用瀏覽器訪問django,訪問方式為
      <自己主機(jī)地址IP>:8080/hello
      <自己主機(jī)地址IP>:8080/hello?user=123
      
      #瀏覽器可以看到對(duì)應(yīng)返回信息,說明django項(xiàng)目新建成功

      7.關(guān)聯(lián)nginx、uwsgi、django

      (1)防火墻中相應(yīng)端口開放,允許外網(wǎng)訪問

      默認(rèn)開放給外網(wǎng)http訪問的端口是80,所以需要在服務(wù)器的防火墻中允許80端口,不然外網(wǎng)的請(qǐng)求進(jìn)不了服務(wù)器;

      如果想開放給外網(wǎng)http訪問的端口是其他端口(如8080),依照下面的例子,在服務(wù)器的防火墻中允許該端口(8080),同時(shí)用步驟(2)方法開放允許http訪問的端口(8080)。

      #以80端口為例
      
      #查詢TCP/UDP的80端口占用情況
      firewall-cmd --query-port=80/tcp
      firewall-cmd --query-port=80/udp
      #如果返回結(jié)果為“no”,則表示該端口尚未開放
      
      #永久開放TCP/UDP的80端口
      firewall-cmd --permanent --zone=public --add-port=80/tcp
      firewall-cmd --permanent --zone=public --add-port=80/udp
      
      #重啟防火墻
      firewall-cmd --reload

      (2)開放允許http訪問的端口

      確保外網(wǎng)訪問nginx服務(wù)器的http端口、nginx與uwsgi通信的socket的端口都在http訪問端口的列表中。

      #查看http允許訪問的端口
      semanage port -l | grep http_port_t
      #輸出結(jié)果
      http_port_t                    tcp      80, 81, 443, 488, 8008, 8009, 8443, 9000
      
      #將需要開放的端口加入到如上端口列表中,例如開放7878端口作為nginx與uwsgi通信的socket通道
      semanage port -a -t http_port_t  -p tcp 7878

      (3)關(guān)聯(lián)nginx與uwsgi

      #為django站點(diǎn)創(chuàng)建一個(gè)nginx服務(wù)的配置文件

      cd /etc/nginx/conf.d/
      touch mysite_django.conf
      vim mysite_django.conf

      #在文件mysite_django.conf中填入如下內(nèi)容

      server {
          server_name 192.168.2.141; #暴露給外部訪問的IP地址,根據(jù)實(shí)際情況改寫成自己主機(jī)IP
          listen 80; #暴露給外部訪問的端口,確保端口在http訪問和防火墻訪問的允許列表中
          location / {
              include uwsgi_params;
              uwsgi_pass 127.0.0.1:7878; #nginx與uwsgi通信用的socket接口,確保端口在http訪問端口的列表中
          }
      }

      #如遇到nginx服務(wù)啟動(dòng)失敗,請(qǐng)檢查mysite_django.conf中指定的端口是否被占用

      (4)關(guān)聯(lián)uwsgi與django

      #創(chuàng)建uwsgi配置文件

      cd /home/<username>/www_space_venv
      touch mysite_django_uwsgi.ini
      vim mysite_django_uwsgi.ini

      #在mysite_django_uwsgi.ini文件中填入如下內(nèi)容

      #mysite_django_uwsgi.ini
      [uwsgi]
      
      #與nginx通信
      socket = 127.0.0.1:7878
      #讓uwsgi作為單獨(dú)的web-server,這里注釋掉
      #http = 127.0.0.1:7878
      
      #django項(xiàng)目根目錄
      chdir = /home/chatbot/www_space_venv/mysite_django #根據(jù)實(shí)際情況改寫成自己django項(xiàng)目的路徑
      
      #本項(xiàng)指示uwsgi.py文件的位置,其位于Django工程目錄下有個(gè)與工程名同名的子文件夾內(nèi)(設(shè)置方式為:文件夾名.wsgi)
      #module = mysite_django
      wsgi-file = mysite_django/wsgi.py
      
      processes = 4
      threads = 2
      master = True
      pidfile = uwsgi.pid
      daemonize = uwsgi.log
      
      # 虛擬環(huán)境地址
      #virtualenv = /home/chatbot/www_space_venv/venv

      (5)nginx+uwsgi+django聯(lián)調(diào)測(cè)試

      #先關(guān)閉nginx與uwsgi服務(wù)
      pkill -9 nginx
      pkill -9 uwsgi
      
      #啟動(dòng)nginx服務(wù)
      service nginx start
      
      #啟動(dòng)uwsgi服務(wù)
      cd /home/chatbot/www_space_venv
      source venv/bin/activate #激活虛擬環(huán)境
      uwsgi --ini mysite_django_uwsgi.ini
      
      #用瀏覽器訪問django,訪問方式為
      <自己主機(jī)地址IP>:80/hello
      <自己主機(jī)地址IP>:80/hello?user=123
      
      #瀏覽器可以看到對(duì)應(yīng)返回信息,說明部署成功,后面只需專注于django項(xiàng)目的開發(fā)了

      聯(lián)調(diào)架構(gòu)如下圖所示

       

      后記                                                      

       

       參考文獻(xiàn)

      [1] 張虎,機(jī)器人SLAM導(dǎo)航核心技術(shù)與實(shí)戰(zhàn)[M]. 機(jī)械工業(yè)出版社,2022.

      購書鏈接:https://item.jd.com/13041503.html

      下載更多資料:www.xiihoo.com

      GitHub源碼:https://github.com/xiihoo/Books_Robot_SLAM_Navigation

      Gitee源碼(國內(nèi)訪問速度快):https://gitee.com/xiihoo-robot/Books_Robot_SLAM_Navigation

      知乎教程:https://www.zhihu.com/people/hiram_zhang

      視頻教程:https://space.bilibili.com/66815220

      郵箱:robot4xiihoo@163.com

      QQ群:117698356

       

      posted @ 2019-02-23 01:04  小虎哥哥愛學(xué)習(xí)  閱讀(1881)  評(píng)論(0)    收藏  舉報(bào)
      主站蜘蛛池模板: 中文字幕人妻中出制服诱惑| 内射少妇一区27p| 亚洲超碰97无码中文字幕| 国产精品国产片在线观看| 欧美一区二区三区啪啪| 龙里县| 欧美xxxx精品另类| 福利一区二区不卡国产| A级毛片100部免费看| 曰韩无码二三区中文字幕| 久草热在线视频免费播放| 男人的天堂av一二三区| 少妇熟女天堂网av| 欧美另类图区清纯亚洲| 国产精品久久久久7777| 欧美牲交a欧美牲交aⅴ一| 亚洲精品不卡无码福利在线观看 | 温州市| 蜜桃久久精品成人无码av| 国产精品va无码一区二区| 五月婷婷久久中文字幕| 久久精品夜夜夜夜夜久久| 国产乱子伦视频在线播放| 亚洲中文久久久久久精品国产| 三上悠亚精品二区在线观看| 一本av高清一区二区三区| 99久久亚洲综合网精品| 男女一边摸一边做爽爽| 国产精品亚洲综合一区二区| 熟女人妇 成熟妇女系列视频| 日韩精品一区二区亚洲av| 国产中文字幕精品免费| 宜黄县| av偷拍亚洲一区二区三区| 亚洲中文字幕无码一久久区| 久久久久国色av免费观看性色| 亚洲色欲色欱WWW在线| 镇原县| 亚洲青青草视频在线播放| 国产亚洲精品第一综合另类灬| 精品亚洲国产成人av|