Linux之部署前后端分離項目


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

  一、創建一個虛擬環境

  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目錄下

  二、數據庫導入

  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;

  三、運行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

  如果項目代碼沒問題的話,是可以在瀏覽器上正常訪問的

   四、使用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

  五、使用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前端項目

  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文件:

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

  這樣就可以把整個項目運行起來了。記得平滑啟動nginx和啟動uwsgi

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

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

  七、superviosr守護進程工具

  我們在使用uwsgi啟動django時,每次都要輸入命令,然后才能啟動,而且界面還比保持在uwsgi的啟動界面,當退出這個界面的時候,就相當於退出了uwsgi進程,從而項目就停止了,所以用起來有點煩。我們可以用supervisor工具,只要uwsgi進程在supervisor里面是running狀態,那只要supervisor不關閉uwsgi進程,uwsgi進程就會一直跑起來。

  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啟動有問題,不要慌,把所有的的退出,重新連接之后,基本上就可以用了

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM