django部署
redis緩存
上線項目debug要改成False
nginx轉發uwsgi及靜態資源(css、js等樣式加載)
問題:---經過重裝centos解決!!
1.解決依賴語句,報錯
2.pip3 提示無此命令
虛擬機用戶名:
root
root1234
virtualenv python中的一個模塊
pip3 list查看安裝的pip列表
which pip3 查看pip3的路徑
lsvirtualenv查看 virtualenv項目
在pycharm中使用虛擬環境:
settings,Project Interpreter---小齒輪---Add Local---Virtualenv Environment
新建虛擬環境:mkvirtualenv nginx_uwsgi
立刻:pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple uwsgi
uwsgi
啓動項目:
cd mysite
uwsgi --http :9999 --module mysite.wsgi
nginx:簡單的cs。
touch nginx.ini
vim nginx.ini
指定配置文件啓動命令
uwsgi --ini /etc/nginx.ini
supervisor:任務管理工具
supervisor 1.再也不經過命令行的方式,啓動項目,經過ps -ef kill 2.進行進程管理(python ,mysql,redis,nginx) 3.經過supervisr統一化管理linux進程 4.檢測到你服務掛了,自動重啓 安裝配置supervisor 1.經過easy_install安裝 #注意此時已經退出虛擬環境了!!!!! yum install python-setuptools easy_install supervisor 2.經過命令生成supervisor的配支文件 echo_supervisord_conf > /etc/supervisord.conf 3.在配置文件中,添加任務,管理django項目 vim /etc/supervisord.conf #寫入信息 [program:s21_django] #管理uwsgi的命令, 使用絕對路徑 command=/root/Envs/nginx_uwsgi/bin/uwsgi --ini /home/mysite/uwsgi.ini #檢測項目是否掛掉,自動重啓 autorestart=true 4.啓動supervisord supervisord -c supervisord.conf 5.管理supervisor的命令 1、添加好配置文件後 2、更新新的配置到supervisord supervisorctl update 3、從新啓動配置中的全部程序 supervisorctl reload 4、啓動某個進程(program_name=你配置中寫的程序名稱) supervisorctl start program_name 5、查看正在守候的進程 supervisorctl 6、中止某一進程 (program_name=你配置中寫的程序名稱) pervisorctl stop program_name 7、重啓某一進程 (program_name=你配置中寫的程序名稱) supervisorctl restart program_name 8、中止所有進程 supervisorctl stop all 注意:顯示用stop中止掉的進程,用reload或者update都不會自動重啓。 環境初始化: 關閉防火牆 systemctl stop firewalld iptables -F setenforce 0 #系統自帶防火牆也給關了 項目發佈博客地址: https://www.cnblogs.com/pyyu/p/9481344.html
總結:
1.準備linux環境,安裝虛擬機,準備服務器環境;
安裝python3,注意添加環境變量
編譯安裝python3 解決依賴 yum install gcc patch libffi-devel python-devel zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel -y 1.下載python3源碼包 wget https://www.python.org/ftp/python/3.4.7/Python-3.4.7.tar.xz xz -d Python-3.4.7.tar.xz tar -xf Python-3.4.7.tar 2.進入python3源碼包路徑,開始編譯安裝 ./configure --prefix=/opt/python3/ #生成一個makefile文件 make make install 結束後,完成編譯安裝 3.配置python3可執行命令,快捷方式 #linux添加python3的環境變量 #第一種方式 ln -s /opt/python3/bin/python3 /usr/bin/python3 #第二種方式,寫入到/etc/profile中,這一步很是重要 base prefix 基本路徑 export PATH=/opt/python3/bin/:$PATH source /etc/profile 使得配置文件生效 能夠用echo $PATH 查看,python3放在環境變量中! 4.測試直接輸入 python3,可否進入python
2.準備項目,上傳到服務器;
安裝一個遠程傳輸軟件 lrzsz
yum install lrzsz -y
sz #send 傳輸文件
rz #接受文件 選擇文件路徑;或者直接拖拽文件
3.unzip 解壓zip包
4.進入到項目目錄,修改settings
allow_host=['*']
5.建立virtualenv 1-3
virtualenv https://www.cnblogs.com/pyyu/p/9015317.html 問題比較多,不容易管理 1.下載virtualenv pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple virtualenv 2.經過命令建立虛擬環境venv #確保環境乾淨隔離,與宿主及解釋器隔離開 --no-site-packages virtualenv --no-site-packages --python=python3 venv 3.檢查環境變量,確認已經進入venv虛擬環境中 source venv/bin/activate-------------------------------------------- echo $PATH #打印環境變量 4.測試安裝兩個不一樣版本的django環境 1.在系統解釋器下---宿主機環境下(linux操做系統root開頭下) pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple django==1.11.15 2.在虛擬環境venv中(linux操做系統venv開頭下) pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple django==1.11.12 5.能夠測試在兩個解釋器中,運行不一樣的任務 6.退出虛擬環境 deactivate命令 保證開發/測試環境一致性 1.經過命令導入項目依賴(能夠在宿主機上執行) pip3 freeze > requirements.txt 2.傳輸此requirements.txt 文件到服務器環境,經過命令直接安裝 pip3 install -r requirements.txt
virtualenvwrapper 安裝
virtualenvwrapper (和virtualenv二選一) 爲了解決虛擬環境難以管理的問題,而且容易使用 1.安裝 pip3 install virtualenvwrapper 2.配置環境變量,使得每次登錄就啓動virtualenvwrapper 寫入到 ~/.bashrc 文件中, vim ~/.bashrc export WORKON_HOME=~/Envs #設置virtualenv的統一管理目錄 export VIRTUALENVWRAPPER_VIRTUALENV_ARGS='--no-site-packages' #添加virtualenvwrapper的參數,生成乾淨隔絕的環境 export VIRTUALENVWRAPPER_PYTHON=/opt/python3/bin/python3 #指定宿主機python3解釋器絕對路徑 source /opt/python3/bin/virtualenvwrapper.sh #執行virtualenvwrapper安裝腳本 3.使得腳本生效,從新登陸一次 logout 在從新登陸的時候,加載virtualenvwrapper腳本 4.使用virtualenvwrapper經常使用命令 建立一個虛擬環境:(在哪兒輸入無所謂,由於有統一目錄WORKON_HOME,能夠經過echo $WORKON_HOME查看) $ mkvirtualenv my_django115 這會在 ~/Envs 中建立 my_django115 文件夾。(建立後自動激活) 在虛擬環境上工做:激活虛擬環境my_django115 $ workon my_django115-------------------------------------------------------- 再建立一個新的虛擬環境 $ mkvirtualenv my_django2 virtualenvwrapper 提供環境名字的tab補全功能。 當有不少環境, 而且很難記住它們的名字時,這就顯得頗有用。 workon還能夠任意中止你當前的環境,能夠在多個虛擬環境中來回切換 workon my_django115 workon my_django2.0 也能夠手動中止虛擬環境 deactivate 刪除虛擬環境,須要先退出虛擬環境 rmvirtualenv my_django115
建立一個虛擬環境:mkvirtualenv s21crm
cdvirtualenv 查看pwd爲/root/Envs/s21crm,此時環境爲咱們所用
6.安裝django
django 準備一個django項目文件夾,配置好外網訪問 修改settings.py allow_host=['*'] 修改數據庫驅動---用mysql數據庫須要修改如下內容! DATABASES = { 'default': { 'ENGINE': 'django.db.backends.sqlite3', 'NAME': os.path.join(BASE_DIR, 'db.sqlite3'), } } pip3 install pymysql __init__.py 文件中添加數據庫驅動 import pymysql pymysql.install()
pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple django==1.11.11
測試運行: python3 manage.py runserver 0.0.0.0:7000
此時輸入ip:7000就能夠訪問界面啦!用戶名lijie 密碼123
注:修改數據庫驅動---用mysql數據庫須要修改如下內容!
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
}
}
注意virtualenvwrapper配置環境變量
7.優化:
用uwsgi 支持多進程,高併發
uwsgi django默認啓動 python manager.py runserver 它調用wsgiref單機web服務器模塊,性能不好 在線上啓動django項目,選擇的是uWSGI + django,使用多進程高性能的web服務器運行,支持併發性更好 重點標記: django建立時,會產生wsgi.py文件 mysite/mysite/wsgi.py #wsgi.py產生的application應用---------(沒有項目就沒法啓動!!提示「Internal Server Error」) application = get_wsgi_application() 可能出現的坑: 1. no application xxxxxx 這個問題就是說,你指定的wsgi.py文件不正確 新建虛擬環境:mkvirtualenv nginx_uwsgi 1.安裝uwsgi pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple uwsgi 2.經過uwsgi啓動一個python web文件 1.test.py def application(env, start_response): start_response('200 OK', [('Content-Type','text/html')]) return [b"Hello World"] # python3 2.經過命令啓動 uwsgi --http :9000 --wsgi-file test.py 3.啓動後能夠瀏覽器 ip:9000 訪問django程序 3.經過uwsgi啓動一個python django項目 1.準備django項目,編寫urls、views.py ,修改settings.py 2.經過命令啓動 django , 要點就是,必須先進入django的第一層目錄,而後經過相對路徑找到wsgi.py cd mysite uwsgi --http :9999 --module mysite.wsgi
在項目中 安裝uwsgi:pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple uwsgi
安裝成功後,在項目路徑下/opt/s21crm - all執行 uwsgi --http :8000 --module s21crm.wsgi
必須先進入django的第一層目錄
在瀏覽器中訪問發現靜態文件丟失,無css樣式,因此用到nginx
7.2安裝nginx,
nginx 1.由於nginx處理併發的良好性、 2.nginx對靜態文件處理的良好性 備註:由於uwsgi啓動django項目,不會讀取一個靜態文件的配置參數 3.nginx負載均衡的一個做用 安裝配置nginx 1.yum install nginx -y yum install epel-* -y #須要提早備好epel源 #檢測nginx是否安裝成功 rpm -qi nginx 2.啓動nginx web服務器 /usr/sbin/nginx 啓動nginx web服務 3.配置nginx.conf配置反向代理uwsgi,以及靜態資源處理 若是找不到nginx.conf ,經過命令查找 find / -name nginx.conf 結果: /etc/nginx/nginx.conf location / { include /etc/nginx/uwsgi_params; uwsgi_pass 0.0.0.0:8000; } #靜態資源入口 location /static { alias /opt/static/; } } 4.修改完,重啓nginx /usr/bin/nginx -s reload 配置項目的靜態文件資源,經過nginx加載 1.修改django的setings.py文件 s21crm/settings.py 加入如下信息 #指定靜態文件存放路徑 STATIC_ROOT='/opt/static' #指定靜態資源,請求入口 STATIC_URL = '/static/' STATICFILES_DIRS=[ os.path.join(BASE_DIR,"static"), ] 2.經過命令收集靜態文件資源 python3 manage.py collectstatic 收集全部你使用的靜態文件保存到STATIC_ROOT! 3.此時static_root下有了全部項目的靜態資源
檢測是否安裝成功 rpm -qi nginx ;
啓動nginx: /usr/sbin/nginx
啓動報錯???nginx: [emerg] "location" directive is not allowed here in /etc/nginx/nginx.conf:58
編輯配置文件:/etc/nginx/nginx.conf
建立、編輯uwsgi.ini,注意修改工做目錄、module和home
uwsgi --ini uwsgi.ini 啓動配置文件,此時項目就能夠訪問啦!!--??提示頁面找不到?settings中靜態文件的修改建立static目錄 mkdir static 全部靜態文件放入opt/static下執行:python3 manage.py collectstatic 選擇-- yes可經過ls /opt/static/rbac/查看是否拷貝成功,存在靜態文件,,再次訪問界面存在樣式!nginx+uwsgi完成項目發佈!