1、部署框架
主要組件:nginx、uwsgi、django項(xiàng)目
訪問頁面流程:nginx---》uwsgi---》django---》uwsgi---》nginx
2、部署過程
參考鏈接:CentOS7下部署Django項(xiàng)目詳細(xì)操作步驟-Django社區(qū),Django中文網(wǎng),django教程,Django!
操作系統(tǒng):centos 7.9
配置信息:4核4G? 50G
內(nèi)網(wǎng) eip :10.241.103.216
部署過程:
步驟 |
命令 |
備注 |
---|---|---|
1、安裝依賴包 | yum? update? ?-y yum?-y?groupinstall?"Development?tools" yum?install?openssl-devel?bzip2-devel?expat-devel?gdbm-devel?readline-devel?sqlite-devel?psmisc?libffi-devel |
|
2、搭建python3和pip3環(huán)境 | 參考連接:https://www.cnblogs.com/minglee/p/9227191.html | 以下安裝步驟需要綁定公網(wǎng)eip |
3、安裝django項(xiàng)目依賴包 | pip freeze > requirements.txt? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?# 將當(dāng)前項(xiàng)目依賴包導(dǎo)入到requirements.txt中 將django項(xiàng)目源碼壓縮上傳到vm,并解壓 pip3?install?django? ?-i?Simple Index?--trusted-host?mirrors.aliyun.com pip3?install?-r?requirements.txt? ?-i?Simple Index?--trusted-host?mirrors.aliyun.com? ? ? ? ? # 使用國內(nèi)源 檢查django項(xiàng)目是否可以正常啟動 python3 manage.py runserver? ? 若能正常啟動,則進(jìn)行下一步,不能運(yùn)行的話,檢查以上步驟是否有遺漏? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?# 多數(shù)報(bào) 缺失依賴包或者依賴包的版本不符合要求信息? |
|
4、安裝并配置uwsgi |
pip3?install?uwsgi? ??-i?Simple Index?--trusted-host?mirrors.aliyun.com? 在項(xiàng)目根目錄創(chuàng)建uwsgi.ini 文件? [uwsgi]? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?#添加配置選擇 socket=127.0.0.1:8997? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?#配置和nginx連接的socket連接 chdir=/root/mysite/? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?#配置項(xiàng)目路徑,項(xiàng)目的所在目錄 wsgi-file=/root/mysite/mysite/wsgi.py? ? ? ? ? ? ? ? ? ? ? ?#配置wsgi接口模塊文件路徑,也就是wsgi.py這個(gè)文件所在的目錄名 processes=4? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??#配置啟動的進(jìn)程數(shù) threads=2? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? #配置每個(gè)進(jìn)程的線程數(shù) master=True? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??#配置啟動管理主進(jìn)程 pidfile=uwsgi.pid? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?#配置存放主進(jìn)程的進(jìn)程號文件 daemonize=uwsgi.log? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?#配置dump日志記錄 運(yùn)行uwsgi服務(wù)? ?? uwsgi??--ini??uwsgi.ini? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? # 若顯示??[uWSGI] getting INI configuration from uwsgi.ini? 信息,則表示uwsgi服務(wù)運(yùn)行成功 |
|
5、?安裝并配置nginx? | 安裝nginx cd?/home/ wget?http://nginx.org/download/nginx-1.13.7.tar.gz tar?-zxvf?nginx-1.13.7.tar.gz cd nginx-1.13.7/ ./configure make make?install 配置nginxcd /usr/local/nginx/conf/ cp?nginx.conf?nginx.conf.bak vim nginx.conf? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? # 清空原文件內(nèi)容 nginx.conf文件添加內(nèi)容 events { worker_connections 1024; } http { include mime.types; default_type application/octet-stream; sendfile on; server { ? ? ? ?listen 8002; server_name 127.0.0.1:8002;? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? #改為自己的域名,沒域名修改為127.0.0.1:80 charset utf-8; access_log /var/log/nginx/MyProject_access.log; error_log /var/log/nginx/MyProject_error.log; location / { include uwsgi_params; uwsgi_pass 127.0.0.1:8997;? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?#端口要和uwsgi里配置的一樣 uwsgi_param UWSGI_SCRIPT mysite.wsgi;? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?#wsgi.py所在的目錄名+.wsgi uwsgi_param UWSGI_CHDIR /root/mysite/;? ? ? ? ? ? ? ? ? ? ? ? ? ? ?#項(xiàng)目路徑 } location /static { alias /root/mysite/static/;? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?#靜態(tài)資源路徑 } } } 檢驗(yàn)配置文件是否有錯(cuò)誤 cd /usr/local/nginx/sbin/ ./nginx -t # 若沒錯(cuò),則執(zhí)行下一條命令 ./nginx |
|
6、修改項(xiàng)目中setting.py文件 | ALLOWED_HOSTS = ['*']? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? # 允許所有主機(jī)進(jìn)行連接訪問網(wǎng)站 |
|
7、依次啟動相關(guān)服務(wù) | 在項(xiàng)目根目錄下,運(yùn)行 django項(xiàng)目 python3 manage.py runserver 0.0.0.0:8000? ? ? ? ? ? ? ? ? ? ? ? ? ? # 與本地運(yùn)行不同,新增0.0.0.0:8000? 運(yùn)行uwsgi 服務(wù) uwsgi??--ini??uwsgi.ini 運(yùn)行nginx服務(wù) cd /usr/local/nginx/sbin ./nginx |
# 查看Uwsgi進(jìn)程 ps?-ef|grep?uwsgi? # 用kill方法把uwsgi進(jìn)程殺死,然后啟動uwsgi killall?-9?uwsgi # Nginx平滑重啟方法 /usr/local/nginx/sbin/nginx?-s?reload |
3、部署效果
瀏覽器輸入 內(nèi)網(wǎng)eip:8000/home/ 即可訪問平臺網(wǎng)頁
4、部署中遇到的問題總結(jié)
1、運(yùn)行django項(xiàng)目時(shí),報(bào) "django.db.utils.NotSupportedError:?deterministic=True requires SQLite?3.8.3 or higher" 錯(cuò)誤信息
? ? ??參考鏈接:關(guān)于django.db.utils.NotSupportedError: deterministic=True requires SQLite 3.8.3錯(cuò)誤的處理辦法_AAquiloo的博客-CSDN博客
? ? ? 解決辦法:使用第三方包運(yùn)行SQLite
? ? ??pip?install?pysqlite3
? ? ? pip?install?pysqlite3-binary
? ? ? vim? /usr/local/python3/lib/python3.8/site-packages/django/db/backends/sqlite3/base.py
? ? ??#from sqlite3 import dbapi2 as Database? ? ? ? ? ?#注釋
? ? ? from?pysqlite3?import?dbapi2?as?Database? ? ? ? ?#新加
2、運(yùn)行django項(xiàng)目時(shí),報(bào) ”urllib3 v2.0 only supports OpenSSL 1.1.1+, currently the 'ssl' module is compiled with OpenSSL 1.0.2k-fips“
? ? ?解決辦法1: 降低urllib3包的版本? ? ? ? ? ? ? ? ? ? ? ? # 本文采用的方法
? ? ? ? ? ? ? ? ? ? ? ? ? pip3? ?uninstall? ?urllib3
? ? ? ? ? ? ? ? ? ? ? ? ? pip3? ?install? ? ? ?urllib3==1.26.6? ? ? ?
? ? ?解決辦法2: 升級openSSL 版本
? ? ? ? ? ? ? ? ? ? ? ? ? yum? install? ?openssl-devel? ? ? ? ? ? ?# 經(jīng)測試后,安裝后 版本依然是1.0.2? ,沒用
3、運(yùn)行django項(xiàng)目時(shí),報(bào) “ModuleNotFoundError: No module named ‘_ctypes‘? 錯(cuò)誤
? ? ?解決辦法:yum install libffi-devel
? ? ? ? ? ? ? ? ? ? ? ?重新編譯python3.8
4、部署django項(xiàng)目后,瀏覽器訪問網(wǎng)址,提示:DISALLOWEDHOST AT / INVALID HTTP_HOST HEADER. YOU MAY NEED TO ADD TO ALLOWED_HOSTS
? ? 解決辦法 :進(jìn)入項(xiàng)目后,找到并編輯setting.py
? ? ? ? ? ? ? ? ? ? ? ?ALLOWED_HOSTS = ['*']?
5、部署django項(xiàng)目后,頁面樣式未生效,提示靜態(tài)文件404? not found錯(cuò)誤
? ? 參考鏈接:usgi+nginx部署Django樣式丟失問題處理 - CodeAntenna?
? ? ? ? ? ? ? ? ? ? ??Django項(xiàng)目部署上線解決樣式丟失的問題-ry-代碼改變世界博客
? ? 原因說明:對于本地運(yùn)行django,setting.py中debug默認(rèn)為true, 靜態(tài)文件則從static_dir中訪問;部署上線后,一般設(shè)置debug=False,這是就是生產(chǎn)環(huán)境,靜態(tài)文件不會從static_dir中訪問了,而是從static_root 中訪問;文章來源:http://www.zghlxwxcb.cn/news/detail-659500.html
? ? 備注信息:部署后,其實(shí)仍可使用debug為true,從static_dir中訪問? ? ? (本文使用的方法)文章來源地址http://www.zghlxwxcb.cn/news/detail-659500.html
到了這里,關(guān)于centos 7.9 部署django項(xiàng)目的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!