Django上線部署
django上線部署
安裝
-
線上上伺服器安裝虛擬開發環境(pyenv)
-
安裝nginx “#安裝nginx
sudo apt-get install nginx-full -y” -
安裝mysql
-
建立虛擬環境
-
在虛擬開發環境中安裝django、pymysql、pillow
-
虛擬環境安裝uwsgi
pip install uwsgi -
上傳專案
-
在專案中根目錄下建立uconfig.ini的檔案 程式碼在下方
[uwsgi]# 外部訪問地址,可以指定多種協議,現在用http便於除錯,之後用socket # socket = 0.0.0.0:8000 # uwsgi的監聽埠 # 指向專案根目錄 chdir = /var/www/xxx # wsgi.py所在位置 wsgi-file = 【專案名(有wsgi.py的檔案)】/wsgi.py module = 【專案名】.wsgi # 虛擬開發環境位置 virtualenv = /root/.pyenv/versions/env3.6.6/ #plugins = python master = true # 處理器數 processes = 1 # 執行緒數 threads = 2 執行: uwsgi uconfig.ini
-
更改nginx的default檔案程式碼在下方
cd /etc/nginx/sites-available
sudo cp default www.***.com
sudo vim www.***.com
server {
listen 80;
server_name www.fdy1995.top;
location / {
# 轉發埠必須和uconfig.ini中socket埠一致
uwsgi_pass 127.0.0.1:8000;
include uwsgi_params;
uwsgi_param UWSGI_SCRIPT xxx.wsgi;
# 專案的根目錄
uwsgi_param UWSGI_CHDIR /var/www/xxx;
}
# 靜態資源所在位置
location /static {
alias /var/www/xxx/static/;
}
}cd ../ cd sites-enabled/ sudo ln -s ../sites-available/www.xxx.com www.xxx.com 重啟nginx服務 sudo service nginx restart cd /var/www mkdir xxx(專案根目錄資料夾) 把專案拉進去(manage.py所在資料夾的所有檔案) 在xxx目錄進入虛擬環境:pip install uwsgi 在專案中根目錄下建立uconfig.ini的檔案,配置見第8步
-
更改nginx的nginx.conf檔案(403沒許可權)
-
重啟nginx
-
回到虛擬環境目錄啟動 uwsgi
uwsgi uconfig.ini -
關閉uwsgi
uwsgi --stop uconfig.ini -
如果關閉不掉殺死程式
ps -ef | grep uwsgi
Sudo kill -9 程式號(-9強制)
或者:sudo pkill -f uwsgi -9
問題描述:
django admin沒有樣式
admin管理頁面找不到base.css,dashboard.css檔案
解決辦法:
方法一
在settings檔案中設定STATIC_ROOT目錄,該目錄不能在STATICFILES_DIRS中.
然後,執行命令
python manage.py collectstatic
執行後,django會將STATICFILES_DIRS下的所有檔案以及admin所需要用到的js,css,image檔案全都放到STATIC_ROOT目錄下.
例如, 像下面這樣寫:
STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR, 'collectstatic')
STATICFILES_DIRS = [os.path.join(BASE_DIR, 'static'), ]
簡單描述一下這幾個變數的意思
STATIC_URL: 當訪問什麼樣的網址時, 按照訪問靜態檔案的方式去查詢檔案.
STATICFILES_DIRS: 當訪問靜態檔案是, 會在每個app中的static目錄中查詢, 然後再從STATICFILES_DIRS設定的路徑列表中逐一查詢.
STATIC_ROOT: 當執行python manage.py collectstatic時, 收集的靜態檔案放在該目錄下.
更多可參考: http://python.usyiyi.cn/translate/django_182/ref/settings.html
此刻axf下就會多出一個collectstatic的靜態資原始檔目錄
default程式碼更改為
server{
listen 80; # 伺服器監聽埠
server_name 192.168.1.132; # 這裡寫你的域名或者公網IP
location / {
uwsgi_pass 127.0.0.1:8000; # 轉發埠,需要和uwsgi配置當中的監聽埠一致
include uwsgi_params; # 匯入uwsgi配置
uwsgi_param UWSGI_PYTHON /home/xlg/axf/venv; #Python直譯器所在的路徑(這裡為虛擬環境)
uwsgi_param UWSGI_CHDIR /home/xlg/axf/;# 自己建立的目錄 專案根目錄
}
location /static{
alias /home/xlg/axf/collectstatic/;
}
}
訪問可能會出現403沒有許可權的問題
解決辦法
找到nginx.conf檔案的位置
將第一行的程式碼進行修改
#user www-data;
user root;
或者將 www-data更改許可權
此刻就可以訪問了
10.0.11.11/static/img/home.img
相關文章
- 基於Nginx和uwsgi搭建Django部署上線環境NginxDjango
- centos+nginx+uwsgi部署django專案上線詳解CentOSNginxDjango
- Django + react + 阿里雲ecs 前後端分離部署上線DjangoReact阿里後端
- Django部署HTTPSDjangoHTTP
- 多專案上線Nginx+Django+uwsgiNginxDjango
- golang: 線上上用nginx部署應用GolangNginx
- 上線部署系統-瓦力
- 部署伺服器上線部分伺服器
- Django在centos上部署DjangoCentOS
- Winserver+Apache+django部署ServerApacheDjango
- 上網部署(銳捷無線篇)
- Django遠端部署--命令收集Django
- 5.Django專案部署Django
- Linux 下部署Django專案LinuxDjango
- django_celery_beat的部署Django
- docker快速部署DNS,實現快速上線DockerDNS
- Linux部署Django (Nginx + uwsgi + Python3 + Django)的過程LinuxDjangoNginxPython
- django連線池Django
- docker 部署 Laravel 上線訪問 403 記錄DockerLaravel
- 本地部署FastGPT使用線上大語言模型ASTGPT模型
- 容器化部署實踐之Django應用部署(二)Django
- docker 部署 django + mysql + vue 專案DockerDjangoMySqlVue
- Vue專案打包到django部署VueDjango
- centos7部署djangoCentOSDjango
- Next.js腳手架進階 —— 部署上線JS
- 使用 Nginx 和 Gunicorn 部署 Django 部落格NginxDjango
- 寶塔皮膚部署django的坑Django
- Nginx + Gunicorn 伺服器配置部署 DjangoNginx伺服器Django
- Docker 部署 Django+Uwsgi+Nginx+MySQL+VueDockerDjangoNginxMySqlVue
- 使用 uWSGI 和 Nginx 部署 Django 專案NginxDjango
- 使用nginx+uwsgi部署Django專案NginxDjango
- Django model總結(上)Django
- Django Rest 與 React(Django2.1 + coverage測試 + xadmin + 線上api文件)-翻譯實踐強化版DjangoRESTReactAPI
- 使用Docker容器化部署實踐之Django應用部署(一)DockerDjango
- VS Code 線上執行:code-server部署(系列一)Server
- weblogic中介軟體軟體上線標準化部署Web
- 阿里雲伺服器部署django專案阿里伺服器Django
- Ubuntu Apache下部署Django2專案UbuntuApacheDjango