㈠ django+vue前後端分離項目部署
後端用的drf,使用的是uwsgi+nginx
進入伺服器項目文件目錄下,我的django項目放在了「/usr/myProjects/」目錄下了。在manage.py同級目錄下創建uwsgi.ini文件,配置如下:
測試效果命令:
如果訪問:xxx.xxx.xxx.xx:8000 成功, 則uwsgi.ini配置成功
我的nginx.conf所在位置是「/etc/nginx/nginx.conf」
配置文件如下:
1、第一行
主要就是給nginx加許可權,vue部署後使用history路由時會去掉地址後面的『#』號,打包部署後不加許可權會有bug。
2、如配置所示,有兩個Server,分別部署了前端服務,和後端服務,值得注意的是兩個Server用的是同一個伺服器,監聽的埠不同。
3、vue部署需要注意的是反向代理地址:
以及後面的埠問題
4、後端的Server需要注意location中的uwsgi_pass 後面的埠號要和uwsgi.ini中配的相同,否則監聽不到
5、後端跨域問題。如果遇到跨域需要自己網上找配置,我的沒遇到,可能是因為我在django的settings中配置了跨域。
6、django-suit後台管理樣式崩了,需要改,但是api可以正常訪問,這個有空再說
7、我開始後台監聽的是8008埠,vue前端監聽的是80埠,這樣前端顯示好看。然而問題出現了,雖然後台api可以正常訪問,vue的本地開發環境也能正常運行且文字、圖片資源均顯示正常,但是前端vue打包線上部署後,文字信息顯示正常,圖片信息缺失8008埠,導致顯示不出來。為圖方便我選擇了前端監聽8008埠,後端監聽80,部署後顯示正常。原因不太清楚///////有空再說吧。
8、不要問我為啥都前後端分離了還部署到一個伺服器上?窮,而且只是測試,沒必要
9、此文僅適合入門
關於django後台admin(suit)缺失的修改(參考:django中文網: https://www.django.cn/article/show-4.html )
在環境中進入項目目錄,需要收集css樣式,在終端輸入命令:
接下來你就回發現static文件中包含了css文件,此時再打開網站,樣式顯示正常
uWSGI 通過 xxx.ini 啟動後會在相同目錄下生成一個 xxx.pid 的文件,裡面只有一行內容是 uWSGI 的主進程的進程號。
關於uwsgi,進入同屆目錄下
教訓
獲取不到環境,那就指定環境
另外:記得重啟uwsgi,重啟Nginx,實在不行就先把監聽的埠kill掉再重啟
暴力刪埠:fuser -k 80/tcp
netstat -aptn命令行,查看所有開啟的埠號
netstat -ntlp | grep 80 查看具體的埠是否使用
ps -ef | grep uwsgi 查看是否有uwsgi埠存在