vue+uwsgi+nginx部署luffty項目

在部署項目以前本人已經將前端代碼和後端代碼發佈在了一個網站上,你們可自行下載,固然若是有Xftp工具也能夠直接從本地導入。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服務器上

解壓縮:前端

unzip luffy_boy.zip 
unzip 07-luffy_project_01.zip

2、先從前端vue搞起

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

一、下載node二進制包,此包已經包含node,不須要再編譯vue

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命令,添加至linux環境變量,修改/etc/profile,寫入python

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

四、讀取文件,生效PATHlinux

source /etc/profile

五、測試pathios

[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項目,生成一個dist靜態文件夾
npm run build

#檢查dist文件夾
[root@web02 07-luffy_project_01]# ls dist/
index.html static

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

編輯nginx.conf文件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、配置後端代碼,解決虛擬環境,保證項目乾淨隔離

(一)激活虛擬環境

workon s15vuedrf

(二)經過一條命令,導出本地的全部軟件包依賴

pip3 freeze >  requirements.txt 

(三)將這個requirements.txt 傳至到服務器,在服務器的新虛擬環境中,安裝這個文件,就能安裝全部的軟件包了

pip3 install -r  requirements.txt

這個文件內容以下:項目所需的軟件包都在這裏了web

[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.1

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

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

redis-server /etc/redis.conf

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

(四)經過uwsgi啓動路飛項目

準備uwsgi 支持高併發的啓動python項目(注意uwsgi不支持靜態文件的解析,必須用nginx去處理靜態文件)

1.安裝uwsgi

pip3 install -i https://pypi.douban.com/simple uwsgi

二、學習uwsgi的使用方法

#經過uwsgi啓動一個python web文件
uwsgi --http :8000 --wsgi-file   s15testuwsgi.py
        --http 指定http協議 
        --wsgi-file  指定一個python文件

#經過uwsgi啓動django項目,而且支持熱加載項目,不重啓項目,自動生效 新的 後端代碼

uwsgi --http  :8000 --module s15drf.wsgi    --py-autoreload=1

        --module 指定找到django項目的wsgi.py文件

三、使用uwsgi的配置文件,啓動項目

建立一個uwsgi.ini配置文件

touch uwsgi.ini

寫入參數信息

[uwsgi]
# Django-related settings
# the base directory (full path)
#指定項目的絕對路徑的第一層路徑!!!!!!!!!!!!!!!!!!!!!!!!
chdir           = /opt/s15vuedrf/luffy_projec/

# Django's wsgi file
#  指定項目的 wsgi.py文件!!!!!!!!!!!!
#  寫入相對路徑便可,這個參數是以  chdir參數爲相對路徑
module          = luffy_projec.wsgi

# the virtualenv (full path)::
# 寫入虛擬環境解釋器的 絕對路徑!!!!!!
home            = /root/Envs/s15vuedrf
# process-related settings
# master
master          = true
# maximum number of worker processes
#指定uwsgi啓動的進程個數                
processes       = 1

#這個參數及其重要!!!!!!
#這個參數及其重要!!!!!!
#這個參數及其重要!!!!!!
#這個參數及其重要!!!!!!
# the socket (use the full path to be safe
#socket指的是,uwsgi啓動一個socket鏈接,當你使用nginx+uwsgi的時候,使用socket參數
socket          = 0.0.0.0:8000

#這個參數是uwsgi啓動一個http鏈接,當你不用nginx只用uwsgi的時候,使用這個參數
#這個參數是uwsgi啓動一個http鏈接,當你不用nginx只用uwsgi的時候,使用這個參數
#這個參數是uwsgi啓動一個http鏈接,當你不用nginx只用uwsgi的時候,使用這個參數
#這個參數是uwsgi啓動一個http鏈接,當你不用nginx只用uwsgi的時候,使用這個參數
#這個參數是uwsgi啓動一個http鏈接,當你不用nginx只用uwsgi的時候,使用這個參數
#http  =  0.0.0.0:8000

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

(五)supervisor進程管理工具

一、將linux進程運行在後臺的方法有哪些

  第一個,命令後面加上 & 符號

python manage.py runserver & 

  第二個 使用nohup命令

  第三個使用進程管理工具

二、安裝supervisor,使用python2的包管理工具 easy_install ,注意,此時要退出虛擬環境!!!!

yum install python-setuptools
easy_install supervisor

三、

supervisord -c  /etc/supervisor.conf

 

經過命令,生成一個配置文件,這個文件就是寫入你要管理的進程任務

echo_supervisord_conf > /etc/supervisor.conf

四、編輯這個配置文件,寫入操做  django項目的 命令

vim /etc/supervisor.conf  

#直接到最底行,寫入如下配置

[program:s15luffy]
command=/root/Envs/s15vuedrf/bin/uwsgi  --ini  /opt/s15vuedrf/luffy_projec/uwsgi.ini

五、啓動supervisord服務端,指定配置文件啓動

supervisord -c  /etc/supervisor.conf

六、經過supervisorctl管理任務

supervisorctl -c /etc/supervisor.conf 

七、supervisor管理django進程的命令以下

#supervisorctl直接輸入命令會進入交互式的操做界面
>  stop s15luffy 
>  start s15luffy 
>  status s15luffy 

八、啓動luffy的後端代碼

4、配置nginx,此步重要

nginx.conf配置以下

#第一個server虛擬主機是爲了找到vue的dist文件, 找到路飛的index.html
server {
        listen       80;
        server_name  192.168.13.79;
        
        #當請求來自於 192.168.13.79/的時候,直接進入如下location,而後找到vue的dist/index.html 
        location / {
            root   /opt/s15vuedrf/07-luffy_project_01/dist;
            index  index.html;
        }
        
    }
    
#因爲vue發送的接口數據地址是 192.168.13.79:8000  咱們還得再準備一個入口server
server {
    listen 8000;
    server_name  192.168.13.79;
    
    #當接收到接口數據時,請求url是 192.168.13.79:8000 就進入以下location
    location /  {
        #這裏是nginx將請求轉發給  uwsgi啓動的 9000端口
        uwsgi_pass  192.168.13.79:9000;
        # include  就是一個「引入的做用」,就是將外部一個文件的參數,導入到當前的nginx.conf中生效
        include /opt/nginx112/conf/uwsgi_params;
    }
}

啓動nginx

./sbin/nginx  #直接啓動
相關文章
相關標籤/搜索