因爲新冠疫情的緣故,公司要求員工停薪休假,賦閒在家的時候仍是決定作點正事,學學習。python
本人Linux入門水平,Python入門水平,因此在網上找的那些python部署的帖子,看的是雲裏霧裏的,也沒有達到預期的運行效果。好不容易摸索了一個簡單易懂的部署方式,記錄一下爲了加深理解。web
CentOS Linux release 7.6.1810 sql
Python 2.7.5 # 系統自帶的python版本 數據庫
pip 20.0.2 # 已升過級django
查看系統版本vim
# cat /etc/redhat-releasecentos
CentOS Linux release 7.6.1810 (Core) 服務器
# rpm -q centos-release學習
centos-release-7-6.1810.2.el7.centos.x86_64阿里雲
yum groupinstall "Development tools"
yum install zlib-devel bzip2-devel pcre-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel
pip install uwsgi
uwsgi --version # 查看 uwsgi 版本
在安裝過程當中可能會遇到上面的錯誤,執行「yum install python-devel.x86_64」能夠應對。
安裝時報錯ModuleNotFoundError: No module named '_ctypes'的解決辦法
yum install libffi-devel
而後從config開始從新安裝
pip install django
pip list # 查看已經安裝的模塊
若是本地有本身的Django項目能夠上傳。我沒有項目,只是在服務器上新建了一個,爲了學習如何部署和運行。
若是項目有數據庫,則須要進行同步操做。在項目根目錄下執行以下命令。
# python manage.py makemigration
# python manage.py migrate
uwsgi --http=ip:port --file=wsgifile_path # 不配置靜態文件也可運行,可是項目加載不到靜態文件
# vim setting.py
找到: STATIC_URL = '/static/'
在下面添加: STATIC_ROOT = '/howm/damu/work/shopping/static_file/'
執行:python manage.py collectstatic
最後: uwsgi --http=192.168.37.128:8000 --file=shopping/wsgi.py --static-map=/static=static_file
# 命令 & # 則命令在後臺運行
若是是阿里雲服務器,此處的ip須要填寫內網的ip地址。
在shopping項目根目錄下建立wsgi.ini
[uwsgi] http = 192.168.37.128:8000 #web服務IP端口,uWSGI作web服務器時用 chdir = /home/damu/work/shopping/ # 項目根目錄 wsgi-file = shopping/wsgi.py #指定wsgi模塊 rocesses = 4 # 啓動的進程數 threads = 2 # 每一個進程的線程 master = true # 表示主進程模式進行 pidfile = uwsgi.pid # 主管理進程文件放置的位置 daemonize = uwsgi.log # 日誌文件 static-map = /static=static_file # 靜態文件
以配置文件方式啓動服務
# uwsgi --ini uwsgi.ini
進程文件,用於服務重啓、中止。如:
重啓指令:uwsgi --restart [pidfile路徑]
中止指令:uwsgi --stop [pidfile路徑]
或者:
pkill -f uwsgi -9
killall -s INT /uws/bin/uwsgi
killall -9 uwsgi # 刪除uwsgi進程,因爲釋放端口有延遲,要等幾秒。
ps -ef | grep uwsgi # 查看進程
一共六個進程(1個主進程,4個建立進程,1個守護進程)。