DevOps 巔峰戰役 02

DevOps 巔峰戰役 02 - admin管理界面

產品名:應用中心

產品想法:在手機上我們都有應用商店,應用商店收錄了各種各樣的app,當我們需要地圖導航時只需要安裝地圖軟件即可使用。在我們的開發與生產環境中,linux平臺下安裝軟件需要有經驗加持,才能避免各種坑。開發一款基於centos7的應用中心,在日常開發和生產環境中可以快捷方便的安裝所需軟件,並自動配置讓軟件相對運行到最優。

萬事開頭難,第一篇我們部署了基礎環境,在繼續編寫教程的時候,我遇見了admin管理界面樣式缺失的問題。使用django 都會遇到這個問題,上篇我們是使用uwsgi來部署了django項目,現在管理界面樣式缺失首先要定位問題。

當我使用python3 manage.py runserver 0.0.0.0:8000啟動後,後臺管理界面樣式是正常顯示的,此刻可以定位樣式缺失是由於uwsgi部署導致的。從這個點出發,終於找到方法解決這個bug。同時在解決admin樣式缺失的問題,也接觸了xadmin,所以接下來後臺管理界面會嘗試使用一下xadmin。

最近幾天沒有更新,是在解決一個TLSv1.3的問題。我會將這個問題的解決思路和策略整理成下一篇文章。如果你們也想讓自己的網站使用最新安全的TLSv1.3,可以按照我的文檔試一下。

問題一:uwsgi 部署django項目後 admin樣式顯示異常

上一篇中,我們已經部署了django項目,當我們在web頁面訪問時,發現admin樣式缺失。今天我們來解決這個bug。

# 修改項目語言、項目時區
sed -i "/^LANGUAGE_CODE = /cLANGUAGE_CODE = 'zh-Hans'" /root/appcenter/appcenter/settings.py
sed -i "/^LANGUAGE_CODE = /cTIME_ZONE = 'Asia/Shanghai'" /root/appcenter/appcenter/settings.py
# 設置靜態資源目錄
mkdir /root/appcenter/filesold
echo "STATIC_ROOT = '/root/appcenter/filesold'" >> /root/appcenter/appcenter/settings.py
# 收集靜態資源
python3 manage.py collectstatic
# 重啟uwsgi
pkill -f uwsgi -9
sed -i "/^static-map=/cstatic-map=\\/static=\\/root\\/appcenter\\/files" /root/appcenter/uwsgi
uwsgi --ini /root/appcenter/uwsgi.ini
# 重啟nginx服務
systemctl stop nginx
systemctl start nginx
# 現在可以正常的訪問web了
http://localhost/admin

問題二:如何按照比原生的admin樣式更好看的後臺管理系統

# 安裝xadmin
訪問 https://github.com/sshwsfc/xadmin/tree/django2 網站,下載xadmin到本地,解壓xadmin上傳到服務器
cd /root/xadmin-django2
python3 setup.py install
# 安裝依賴包【xlwt、xlsxwriter是為了處理excel】
python3 -m pip install -r requirements.txt
python3 -m pip install xlwt
python3 -m pip install xlsxwriter

# 回到django項目,註冊app
cd /root/appcenter
sed -i "/ 'django.contrib.staticfiles',/a\\ 'xadmin'," appcenter/settings.py
sed -i "/ 'xadmin',/a\\ 'crispy_forms'," appcenter/settings.py
sed -i "/ 'crispy_forms',/a\\ 'reversion'," appcenter/settings.py
# 新建app xadmin
\\cp /admin.py /xadmin.py
# 新增url
sed -i "/from django.urls import path,include/a\\import xadmin" appcenter/settings.py
sed -i "/ path('admin/', admin.site.urls),/a\\ path('xadmin/', xadmin.site.urls)," appcenter/settings.py
# 同步到數據庫
python3 /root/appcenter/manage.py migrate
# 設置靜態資源目錄
mkdir /root/appcenter/files
sed -i "/STATIC_ROOT/d" /root/appcenter/appcenter/settings.py
echo "STATIC_ROOT = '/root/appcenter/filesold'" >> /root/appcenter/appcenter/settings.py
# 收集靜態資源
python3 manage.py collectstatic
# 修改xadmin 添加用戶小組件出錯bug
sed -i "/^ def render(self, name, value, attrs=None):/cdef render(self, name, value, attrs=None, renderer=None):" /usr/local/python3/lib/python3.7/site-packages/xadmin-2.0.1-py3.7.egg/xadmin/views/dashboard.py
# 重啟uwsgi
pkill -f uwsgi -9
sed -i "/^static-map=/cstatic-map=\\/static=\\/root\\/appcenter\\/filesold" /root/appcenter/uwsgi
uwsgi --ini /root/appcenter/uwsgi.ini
# 重啟nginx服務
systemctl stop nginx
systemctl start nginx
# 現在可以正常的訪問web了
http://localhost/xadmin


DevOps 巔峰戰役 02 - admin管理界面


分享到:


相關文章: