vue+uwsgi+nginx部署路飛學城

有一天,老男孩的苑日天給我發來了兩個神祕代碼,據說是和mjj的結晶html

 

超哥將這兩個代碼,放到了一個網站上,你們能夠自行下載前端

路飛學城django代碼
https://files.cnblogs.com/files/pyyu/luffy_boy.zip
vue代碼
https://files.cnblogs.com/files/pyyu/07-luffy_project_01.zip

1、將代碼搞到服務器上

在linux上直接下載
wget https://files.cnblogs.com/files/pyyu/luffy_boy.zip
wget https://files.cnblogs.com/files/pyyu/07-luffy_project_01.zip
在window上下載,經過lrzsz,或者xftp傳輸到linux服務器上

2、先從前端vue搞起

要在服務器上,編譯打包vue項目,必須得有node環境

複製代碼
下載node二進制包,此包已經包含node,不須要再編譯
wget https://nodejs.org/download/release/v8.6.0/node-v8.6.0-linux-x64.tar.gz
解壓縮
tar -zxvf node-v8.6.0-linux-x64.tar.gz
進入node文件夾
[root@web02 opt]# cd node-v8.6.0-linux-x64/
[root@web02 node-v8.6.0-linux-x64]# ls
bin  CHANGELOG.md  etc  include  lib  LICENSE  README.md  share
[root@web02 node-v8.6.0-linux-x64]# ls bin
node  npm  npx
[root@web02 node-v8.6.0-linux-x64]# ./bin/node -v
v8.6.0
[root@web02 node-v8.6.0-linux-x64]# ./bin/npm -v
5.3.0
複製代碼

將node命令,添加至linux環境變量,修改/etc/profile,寫入vue

PATH=$PATH:/opt/node-v8.6.0-linux-x64/bin

讀取文件,生效PATHnode

source /etc/profile

測試pathlinux

[root@web02 node-v8.6.0-linux-x64]# node -v
v8.6.0
[root@web02 node-v8.6.0-linux-x64]# npm -v
5.3.0

node環境有了,安裝node模塊,以及打包node項目

複製代碼
進入vue源碼目錄
cd 07-luffy_project_01/
安裝vue模塊,默認去裝package.json的模塊內容,若是出現模塊安裝失敗,手動再裝
npm install 

此時注意,你本地寫的vue代碼,接口極可能鏈接的服務器地址有問題,注意Axios.POST提交的地址,必定得發送給django應用(若是用了nginx,就發送給nginx的入口端口)
超哥這裏爲了試驗方便,將vue項目和django項目放在了一臺服務器,經過nginx反向代理功能(8000端口),轉發vue請求給django(9000)

準備編譯打包vue項目,替換配置文件全部地址,改成服務器地址
sed -i 's/127.0.0.1/192.168.119.12/g' /opt/07-luffy_project_01/src/restful/api.js


確保vue的route模式是history
路徑:opt/luffy/07-luffy_project_01/src/router/index.js

export default new Router({
linkActiveClass:'is-active',
mode: 'history',//改爲history模式ios


此時打包vue項目,生成一個dist靜態文件夾 npm run build
檢查dist文件夾 [root@web02 07-luffy_project_01]# ls dist/ index.html static
複製代碼

至此vue代碼就結束了,只須要讓nginx配置,找到vue的index.html首頁文件便可

nginx這裏不作解釋,編譯安裝好便可nginx

複製代碼
server {
     #用戶訪問域名或者ip,默認是nginx的80端口
listen 80; server_name 192.168.119.12;
     #url匹配 / 也就是請求地址是192.168.119.12時,進入此location,返回vue的dist下index.html路飛學城首頁 location / { root /opt/07-luffy_project_01/dist; index index.html; } }
複製代碼

3、配置後端代碼,解決虛擬環境,保證項目乾淨隔離

激活虛擬環境venv1,在虛擬環境下,安裝路飛項目所需的依賴模塊

複製代碼

[root@web02 opt]# cat 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.1web

複製代碼

這個路飛代碼數據庫用的是sqllite,不須要配置數據庫了

購物車用都的是redis,所以要啓動服務器的redis-server服務端

redis-server /etc/redis.conf

ps -ef|grep redis
redis-server *:6379

經過uwsgi啓動路飛項目

複製代碼
[uwsgi]
# Django-related settings
# the base directory (full path)
chdir           = /opt/luffy_boy
# Django's wsgi file
module          = luffy_boy.wsgi
# the virtualenv (full path)
home            = /opt/venv1
# process-related settings
# master
master          = true
# maximum number of worker processes
processes       = 1
# the socket (use the full path to be safe
socket          = 0.0.0.0:9000
# clear environment on exit
vacuum          = true
#後臺運行uwsgi
daemonize=yes
複製代碼
(venv1) [root@web02 opt]# uwsgi --ini luffy_boy/uwsgi.ini

4、配置nginx,此步重要

複製代碼
worker_processes  1;

events {
    worker_connections  1024;
}


http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;
    server {
        listen       80;
        server_name  192.168.119.12;
        location / {
        root /opt/07-luffy_project_01/dist;
        index index.html;
    #這一條參數確保vue頁面刷新時候,不會出現404頁面
      try_files $uri $uri/ /index.html; } error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } } server { listen 8000; server_name 192.168.119.12; location / { uwsgi_pass 0.0.0.0:9000; include /opt/nginx/conf/uwsgi_params; } location /static { alias /opt/static; } } }
複製代碼

原理圖

項目訪問 

測試帳號密碼redis

alex
alex3714

目前代碼功能演示,演示流程:sql

  1. 登陸alex帳號
  2. 選擇免費課程,django框架學習
  3. 添加課程到購物車,檢查alex帳號的購物車記錄,添加成功後再redis有數據

相關文章
相關標籤/搜索