上線Django 項(xiàng)目記錄,,超簡單,,避免無意義的踩坑!第一步:安裝python管理器在寶塔在線面板安裝“python項(xiàng)目管理器 ”
第二步:安裝適配python版本因?yàn)榉?wù)器centos7 系統(tǒng)默認(rèn)的python 版本是2.7 而我們項(xiàng)目是基于最新版Django 來開發(fā)的,,本地環(huán)境是python3.6.5 的,,為了盡量保證環(huán)境的相似,避免踩無意義的坑,。
第三步:導(dǎo)出項(xiàng)目包到requirments.txtpython 的安裝時(shí)間比較長,,所以先做一些別的工作,同時(shí)在
在本地項(xiàng)目下執(zhí)行如下命令導(dǎo)出: python3 -m pip freeze > requirements.txt 導(dǎo)出的包挺多的,,不要怕,,雖然似乎自己也沒用到那些包,在寶塔環(huán)境中,,我們會(huì)使用虛擬環(huán)境運(yùn)行,,所以不用擔(dān)心 更改settings.py 中對應(yīng)內(nèi)容如下: DEBUG = True
ALLOWED_HOSTS = ['*']
STATIC_URL = '/static/'
# STATICFILES_DIRS = [
# os.path.join(BASE_DIR, "static")
# ]
STATIC_ROOT = os.path.join(BASE_DIR, "static")
第四步:上傳本地項(xiàng)目到服務(wù)器上傳本地項(xiàng)目到www/wwwroot/ 目錄下
第五步:管理器中添加項(xiàng)目在python項(xiàng)目管理器 中配置,添加項(xiàng)目 按照如下圖類似配置即可
這里勾選“是否安裝模塊依賴”,,會(huì)自動(dòng)幫我們讀取項(xiàng)目下的requirements.txt ,,然后安裝響應(yīng)的模塊,所以這里的時(shí)間會(huì)比較長,。 管理器默認(rèn)使用pip 安裝項(xiàng)目根目錄requirements.txt 內(nèi)的模塊,,如有其他模塊需要安裝請手動(dòng)進(jìn)入虛擬環(huán)境安裝 進(jìn)入虛擬環(huán)境方法: 在命令行輸入 source 項(xiàng)目路徑/項(xiàng)目名_venv/bin/activate 如:source /data/python/project1_venv/bin/activate
第六步:映射域名映射域名 我們需要一個(gè)容易記住的域名,,所以給項(xiàng)目綁定一個(gè)預(yù)留的域名safe.top15.cn
第七步:配置站點(diǎn)配置 Nginx 映射成功后,,可在面板側(cè)邊欄“網(wǎng)站”中,發(fā)現(xiàn)多了我們的 python 項(xiàng)目
此時(shí),,就可以點(diǎn)擊scan.top15.cn 的綠色字,,顯示對應(yīng)項(xiàng)目的一些“站點(diǎn)配置 ” location /static/
{
alias /www/wwwroot/ThreatScan/static/;
}
Nginx 的配置按照如下,上圖有誤:
第八步:重啟項(xiàng)目因?yàn)樾薷牧艘恍〇|西,,所以我們需要在python管理器 中重啟項(xiàng)目
同時(shí)還需要重啟一下Nginx ,,這個(gè)相信大家都會(huì)~ 可是?。?!竟然沒有跑起來,,訪問域名顯示Internet server error 第九步:很不幸,,還是踩坑了
原因:Centos7 中默認(rèn)SQLite 版本為 3.7.17 ,,但是項(xiàng)目需要3.8.3 版本 解決辦法:1.降級Django 版本;2.升級SQLite 版本,。 小東采用第二種方式: 在寶塔任意目錄下可以打開shell // 獲取源碼
cd ~
pwd
wget https://www./2019/sqlite-autoconf-3270200.tar.gz
// 解壓到當(dāng)前目錄
tar -zxvf sqlite-autoconf-3270200.tar.gz
// 開始構(gòu)建安裝
cd sqlite-autoconf-3270200
./configure --prefix=/usr/local
make && make install
// 查看安裝情況
find /usr/ -name sqlite3
cd ~
ls
// 刪除文件
rm -rf sqlite-autoconf-3270200.tar.gz
rm -rf sqlite-autoconf-3270200/
// 查看新安裝的版本
/usr/local/bin/sqlite3 --version
// 查看舊版本
/usr/bin/sqlite3 --version
//移動(dòng)舊版本
mv /usr/bin/sqlite3 /usr/bin/sqlite3_old
// 創(chuàng)建軟連接
ln -s /usr/local/bin/sqlite3 /usr/bin/sqlite3
sqlite3 --version
// 關(guān)聯(lián)基礎(chǔ)庫
export LD_LIBRARY_PATH="/usr/local/lib"
// 去虛擬環(huán)境
source /www/wwwroot/ThreatScan/ThreatScan_venv/bin/activate
// 關(guān)聯(lián)基礎(chǔ)庫
export LD_LIBRARY_PATH="/usr/local/lib"
// 測試
python -V
python
import sqlite3
sqlite3.sqlite_version 但是,,運(yùn)行項(xiàng)目還是不行,也沒有什么錯(cuò)誤提示 陷入僵局~ 去寶塔論壇圍觀了一下,,發(fā)現(xiàn)大家的gunicorn似乎都不行~ emmm~ 換uwsgi 試試~
能啟動(dòng)了,,可是~
查看各種文章無果, 嘗試在虛擬環(huán)境下手動(dòng)執(zhí)行: uwsgi -d --ini /www/wwwroot/ThreatScan/uwsgi.ini -w ThreatScan.wsgi.application OK,,搞定~然后映射的 nginx 修改一下static 反向代理,,配置SSL 證書,強(qiáng)制HTTP 301跳轉(zhuǎn)HTTPS
一些注意的地方:域名映射好了之后,,寶塔里可以直接把8000端口關(guān)閉掉(之前添加了開放規(guī)則),,這樣別人就無法從8000端口訪問應(yīng)用,而只能通過域名訪問,,只能說nginx反向代理真的很實(shí)用,! 在對應(yīng)站點(diǎn)設(shè)置中,開啟防跨站攻擊,,如果有寶塔的nginx防火墻服務(wù),,可以直接配置,保證我們上線網(wǎng)站的安全,!
|