Linux之部署先後端分離項目

  首先得看我前兩個博客,把python3,虛擬環境,mariadb數據庫,redis數據庫,nginx安裝好。html

  1、建立一個虛擬環境

  1,建立虛擬環境

mkvirtualenv zijin   #建立了一個叫zijin的虛擬環境

  2,安裝模塊

1,上傳項目的requirement.txt文件 2,在當前的虛擬環境中安裝模塊 pip3 install -i https://pypi.douban.com/simple -r requirement.txt
注:安裝xadmin,會出現錯誤,須要咱們手動安裝,
pip install https://codeload.github.com/sshwsfc/xadmin/zip/django2

  3,上傳項目

我是把項目都上傳到opt目錄下

  2、數據庫導入

  1,把本地電腦上mysql數據庫的表結構和數據導出

第一種: mysqldump -u root -p --all-databases > luffy_city.sql 第二種 從navicat導出數據庫數據,導出爲luffycity.sql #我採用的是第二種,完成這步,會生成一個sql格式文件

  2,把生成的sql文件上傳到/opt目錄下

  3,在Linux系統下進入mariadb數據庫,新建一個lufei數據庫,而後進入lufei數據庫

  4,導入sql文件

source /opt/lufei.sql
#這樣就會自動生成表結構和數據

  5,刷新權限表

# 容許root用戶遠程登陸,而且給予全部數據庫全部表的全部權限 grant all privileges on *.* to root@'%' identified by '123'; flush privileges;

  3、運行django項目

  1,修改drf項目的settings.py文件

ALLOW_HOSTS=["*"] 數據庫鏈接配置 注意: mariadb就是mysql,這裏的ENGINE不用修改 DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', "HOST": "127.0.0.1", "PORT": 3306, "USER": "root", "PASSWORD": "123", "NAME": "lufei", } }

  2,運行項目

在opt/lufei_drf目錄下輸入命令 python3 manage.py runserver 0.0.0.0:8000

  若是項目代碼沒問題的話,是能夠在瀏覽器上正常訪問的前端

   4、使用uwsgi啓動項目

  1,安裝uwsgi

1,進入虛擬環境 workon lufei 2,安裝uwsgi pip3 install uwsgi

  2,使用uwsgi啓動項目

uwsgi --http :9000 --module lufei_drf.wsgi    #lufei_drf爲drf項目文件
在瀏覽器上輸入ip和端口就能夠訪問項目

  3,可使用uwsgi配置文件啓動項目

1,在lufei_drf項目建立uwsgi,ini文件 mkdir /opt/lufei_drf/uwsgi.ini 2,寫入配置信息 [uwsgi] chdir = /opt/lufei_drf #這是項目的絕對目錄 module = lufei_drf.wsgi #項目目錄加wsgi home = /root/Envs/lufei #虛擬環境的絕對路徑 master = true #啓動uwsgi主進程 processes = 1 #socket = 0.0.0.0:8000 #這個是當用nginx代理時使用 http = 0.0.0.0:8000 vacuum =true
3,使用uwsgi配置文件啓動項目
uwsgi uwsgi.ini

  5、使用nginx

  1,收集靜態文件

1,修改settings.py配置文件 STATIC_ROOT='/opt/static'
2,建立今天文件存放目錄 mkdir /opt/static
3,收集django下的全部今天文件 python3 manage.py collectstatic

  2,nginx轉發uwsgi的配置

1,在nginx.conf配置文件中修改 location / { include /opt/nginx112/conf/uwsgi_params; uwsgi_pass 0.0.0.0:9000; } location /static { alias /opt/static; } 2,將uwsgi.ini配置文件修改 socket = 0.0.0.0:9000 # 啓用此行 # http = 0.0.0.0:9000 # 停用此行 3,平滑重啓nginx /opt/nginx112/sbin/nginx -s reload

  如今,在瀏覽器上輸入192.168.12.64:8000就能夠訪問django項目vue

  6、配置vue前端項目

  1,安裝及配置node.js

1,在opt目錄下下載noode安裝包 wget https://nodejs.org/download/release/v10.15.3/node-v10.15.3-linux-x64.tar.gz
2,解壓 tar -zxvf node-v10.15.3-linux-x64.tar.gz 3,添加環境變量 vim /etc/profile 把path修改成: PATH=/opt/node-v10.15.3-linux-x64/bin:/opt/python36/bin:/usr/local/sbin:/usr/local/bin:
/usr/sbin:/usr/bin:/root/bin

  2,把vue項目中的全部ip改成192.168.12.64

  3,生成dist項目靜態文件

1,進入vue項目 cd /opt/lufei 2,輸入 npm run build

  4,在nginx添加服務

server { listen 80; #前端vue用80端口 server_name www.lufei.com ; #使用域名www.lufei.com location / { root /opt/lufei/dist; #靜態文件目錄 index index.html index.htm; } error_page 500 502 503 504  /50x.html; }

  修改hosts文件:node

  注意:在drf項目的settings.py文件中修改跨域問題python

  這樣就能夠把整個項目運行起來了。記得平滑啓動nginx和啓動uwsgimysql

  5,當咱們進入一個頁面後,刷新頁面,就會報404錯誤,解決辦法:

在nginx配置文件下的關於前端vue端口的server下的location下添加: try_files $uri $uri/ /index.html;

  7、superviosr守護進程工具

  咱們在使用uwsgi啓動django時,每次都要輸入命令,而後才能啓動,並且界面還比保持在uwsgi的啓動界面,當退出這個界面的時候,就至關於退出了uwsgi進程,從而項目就中止了,因此用起來有點煩。咱們能夠用supervisor工具,只要uwsgi進程在supervisor裏面是running狀態,那隻要supervisor不關閉uwsgi進程,uwsgi進程就會一直跑起來。linux

  1,安裝

因爲supervisor在python3下沒法使用,所以只能用python2去下載!!!!!! 退出虛擬環境,切記 deactivate 安裝 easy_install supervisor # 若是沒有easy_install的話,就yum安裝一個setuptools工具就能夠用了 yum install python-setuptools

  2,生成配置文件,並添加配置信息

1,生成配置文件 echo_supervisord_conf > /etc/supervisord.conf 2,進入配置文件 vim /etc/supervisord.conf 3,添加配置信息 [program:lufei_drf] #lufei_drf爲項目目錄 command=/root/Envs/lufei/bin/uwsgi /opt/lufei_drf/uwsgi.ini #lufei爲虛擬環境名,

  3,啓動及查看

1,啓動 supervisord -c /etc/supervisord.conf # 啓動supervisor supervisorctl -c /etc/supervisord.conf # 啓動和進入supervisor交互模式 2,查看 supervisorctl # 使用此命令後將會進入supervisor交互式管理界面 status # 查看進程運行狀態

  4,管理supervisor裏面的進程

stop luffy_city # 關閉luffy_city進程 stop all # 關閉全部進程 start luffy_city # 開啓luffy_city進程 start all # 開啓全部進程 status # 查看全部進程運行狀態 supervisorctl status # 能夠不用進入交互模式查看

  注:當你按照個人步驟進行的,若是出現supervisor啓動有問題,不要慌,把全部的的退出,從新鏈接以後,基本上就能夠用了ios

整個請求流程圖以下,手殘,望諒解

相關文章
相關標籤/搜索