Linux--先後端分離部署

項目部署 (vue + nginx + uwsgi + django + mysql + redis)

一 . 前端部署

  1. 下載vue代碼,解壓縮

wget https://files.cnblogs.com/files/pyyu/07-luffy_project_01.zip
# zip格式的用unzip解壓
unzip 07-luffy_project_01.zip

  2. 配置node環境,去打包編譯vue代碼

# 下載node的代碼包
    wget https://nodejs.org/download/release/v8.6.0/node-v8.6.0-linux-x64.tar.gz
# 解壓縮node代碼包
    tar -zxvf node-v8.6.0-linux-x64.tar.gz
# 配置node環境,找到bin的路徑添加到PATH裏,而後source /etc/profile

  3. 驗證node是否正確配置(node就如同python的解釋器, npm就是如同pip管理工具軟件包

node  -v
npm -v

  4.修改vue的代碼文件

複製代碼
由於vue須要向後臺發起請求,找到uwsgi
# 咱們的架構是將uwsgi隱藏在nginx後面
!!!全部 vue(端口80)首先找的是nginx(反向代理,端口是9000),而後nginx(反向代理,端口是9000)反向代理給uwsgi(後端地址,9001)
# 修改方式
找到/opt/s18luffy/07-luffy_project_01/src/restful 的 api.js 文件
#這裏更改你本身的服務器ip地址
sed -i  "s/127.0.0.1:8000/192.168.226.132:9000/g"  api.js
    sed 是linux處理字符串的命令
    -i 是將結果替換到文件
    "s/127.0.0.1:8000/192.168.226.128:9000/g"   #解釋  s是替換模式  /你想替換的內容/你想替換的結果/   g是全局替換 
    api.js  你想修改操做的文件
複製代碼

  5.進行打包vue,生成靜態文件夾 dist

# 要確保在vue文件夾下, 我直接在/luffy_project_01下安裝的,而後cd到這裏就能夠,ls命令能夠看到build就對了.
npm install  #解決vue代碼所需的模塊依賴  
npm run build    #進行編譯打包

  6.當vue打包正確完成後,ls指令就能夠看到生成一個dist靜態文件夾,此時就給丟給nginx去處理啦!!!

二 . 後端uwsgi部署

  1.下載路飛代碼

wget  https://files.cnblogs.com/files/pyyu/luffy_boy.zip

  2.安裝新的虛擬環境,解決環境依賴問題 ,能夠用requirements.txt解決依賴問題

複製代碼
mkvirtualenv  s18luffy
workon  s18luffy  # 進入到虛擬環境
vim requirements.txt  #打開,編輯寫入以下模塊依賴包信息:

certifi==2018.11.29
chardet==3.0.4
crypto==1.4.1
Django==2.1.4
django-redis==4.10.0
django-rest-framework==0.1.0
djangorestframework==3.9.0
idna==2.8
Naked==0.1.31
pycrypto==2.6.1
pytz==2018.7
PyYAML==3.13
redis==3.0.1
requests==2.21.0
shellescape==3.4.1
urllib3==1.24.1
uWSGI==2.0.17.1
複製代碼

  3.安裝這個文件 requirements.txt(這些東西必定要在虛擬環境下安裝)

pip3 install -i https://pypi.douban.com/simple -r requirements.txt

  4.使用uwsgi去啓動路飛學城後端

複製代碼
# 這個uwsgi.ini文件必定要寫到項目下,使用uwsgi.ini配置文件方式啓動,內容以下:

[uwsgi]
# Django-related settings
# the base directory (full path)
#填寫項目的絕對路徑(第一層路徑)
chdir           = /opt/s18luffy/luffy_boy
# Django's wsgi file
#填寫crm第二層目錄下的wsgi.py文件的路徑
module          = luffy_boy.wsgi
# the virtualenv (full path)
#填寫虛擬環境的絕對路徑
home            = /root/Envs/s18luffy

# process-related settings
# master
master          = true
# maximum number of worker processes
#基於uwsgi的多進程,根據cpu來優化 
processes       = 4
# the socket (use the full path to be safe

#若是你用了nginx反向代理,就填寫socket參數
#若是你用了nginx反向代理,就填寫socket參數
#若是你用了nginx反向代理,就填寫socket參數
socket          = 0.0.0.0:9001  

#若是你沒用nginx,想直接經過瀏覽器測試後端,使用http 
#http = 0.0.0.0:9001

# ... with appropriate permissions - may be needed
# chmod-socket    = 664
# clear environment on exit
vacuum          = true
複製代碼

  5.用supervisor也去管理路飛的後臺

[program:s18luffy]
command=/root/Envs/s18luffy/bin/uwsgi  --ini  /opt/s18luffy/luffy_boy/uwsgi.ini
stopasgroup=true
killasgroup=true

三 . nginx反向代理轉發

  修改nginx.conf內容以下

複製代碼
# 虛擬主機1
 server {
        #第一個虛擬主機,監聽的80端口
        listen       80;
        server_name  192.168.226.128;
        location / {
                        try_files $uri $uri/ /index.html;    # 保證vue刷新不404
            root /opt/s18luffy/07-luffy_project_01/dist;
            index index.html;
        }
}

# 虛擬主機2

server {
    listen 9000;
    server_name  192.168.226.128;
    location  / {
        uwsgi_pass 0.0.0.0:9001;
        include uwsgi_params;
    }
}

重啓nginx生效
複製代碼

四 . 啓動redis,用的是sqllite,不須要mysql

複製代碼
yum install redis -y  #安裝命令
systemctl start redis  

# redis登陸命令
redis-cli  
登陸後輸入 ping 返回一個pong表明正確啓動
複製代碼
相關文章
相關標籤/搜索