項(xiàng)目開發(fā)完成后可以部署到阿里云,華為云,騰訊云等服務(wù)器,
以騰訊云為例
本地部署
以下是ubuntu上的部署詳細(xì)步驟:
1.布署前需要關(guān)閉調(diào)試获三、允許任何機(jī)器訪問,打開settings.py文件
DEBUG = False
ALLOW_HOSTS=['*',]
2.安裝uwsgi
pip install uwsgi
3.配置uwsgi梳凛,在項(xiàng)目目錄下創(chuàng)建uwsgi.ini文件耿币,配置如下:
[uwsgi]
# Django-related settings
#python3 manage.py runserver
#http = 127.0.0.1:8000
socket = 127.0.0.1:8000
#項(xiàng)目路徑
chdir = /home/hu/桌面/1807project/MyBlog
#wsgi文件
module = MyBlog.wsgi
#主進(jìn)程
master = true
#指定工作進(jìn)程
processes = 4
#每個(gè)工作進(jìn)程2個(gè)線程
threads = 2
#指后臺(tái)啟動(dòng) 日志輸出的地方
daemonize = uwsgi.log
#保存主進(jìn)程進(jìn)程號(hào)
pidfile = uwsgi.pid
#虛擬環(huán)境路徑
virtualenv = /home/hu/.virtualenvs/1807_blog
4.啟動(dòng)uwsgi服務(wù)器
uwsgi --ini uwsgi.ini
5.不確定是否啟動(dòng)成功,搜進(jìn)程
ps -aux|grep uwsgi
同時(shí)會(huì)在項(xiàng)目目錄下生成uwsgi.log日志文件
uwsgi.pid 中保存主進(jìn)程的pid
6.進(jìn)入應(yīng)用下urls.py配置
url(r'^$', views.index)
7.只要改動(dòng)代碼就需重啟uwsgi
首先殺進(jìn)程
killall -9 uwsgi
查看是否殺掉
ps -aux|grep uwsgi
再次啟動(dòng)
uwsgi --ini uwsgi.ini
暫缺css樣式,此時(shí)用的服務(wù)器不再是django提供的服務(wù)器,用的是uwsgi服務(wù)器,django同時(shí)不再提供靜態(tài)資源,此時(shí)需用nginx服務(wù)器
8.安裝nginx
sudo apt install nginx
9.進(jìn)入/etc/nginx/配置nginx.conf
sudo vi nginx.conf
寫到http括號(hào)下,保存并退出
server {
listen 80;
server_name 127.0.0.1;
#動(dòng)態(tài)請(qǐng)求
location / {
include uwsgi_params;
uwsgi_pass 127.0.0.1:8000;
}
#靜態(tài)
location /static {
alias /home/hu/桌面/MyBlog/static ;
}
}
10.進(jìn)程殺掉
killall -9 nginx
查看是否殺掉進(jìn)程
ps -aux|grep nginx
指定進(jìn)程號(hào)殺掉
sudo kill -9 進(jìn)程號(hào)
11.啟動(dòng)nginx
/etc/init.d/nginx start
切記:配置uwsgi.ini中把http改為socket
重啟uwsgi
12.配置settings.py(收集靜態(tài)資源)
STATIC_ROOT = os.path.join(BASE_DIR, 'static/')
注意:
STATIC_URL = '/static/'
# STATICFILES_DIRS = [
# os.path.join(BASE_DIR, 'static')
# ]
收集所有靜態(tài)資源
執(zhí)行
python3 manage.py collectstatic
修改nginx配置,開啟靜態(tài)請(qǐng)求
殺nginx進(jìn)程,重啟nginx
pycharm同步殺uwsgi進(jìn)程,重啟nginx
127.0.0.1刷新 靜態(tài)資源出現(xiàn)(nginx給的靜態(tài)資源)
服務(wù)器部署
打開騰訊云,點(diǎn)擊右上角控制臺(tái),登錄,點(diǎn)擊云產(chǎn)品--云服務(wù)器,z找到你購買的服務(wù)器(我是重慶地區(qū))
修改密碼
選中ID/實(shí)例名,重置密碼,選中同意重啟,重啟的是遠(yuǎn)程服務(wù)端
遠(yuǎn)程登錄服務(wù)器
1.刷新
sudo apt update
2.升級(jí)
sudo apt upgrade
3.選中ok,然后一直Enter
4.本地有的配置遠(yuǎn)程服務(wù)端也得有
<1>安裝pip
sudo apt install python3-pip
<2>安裝虛擬環(huán)境
sudo pip3 install virtualenv
<3>若出現(xiàn)以下報(bào)錯(cuò)
分析原因:
locale是用來設(shè)置軟件運(yùn)行的語言環(huán)境,所以語言環(huán)境設(shè)置有問題
重新設(shè)置語言環(huán)境韧拒,最簡(jiǎn)單的解決辦法:
第一條
echo "export LC_ALL=en_US.UTF-8"
第二條
echo "export LC_ALL=en_US.UTF-8"
第三條
exit
重新登錄服務(wù)器,如果還報(bào)錯(cuò)
export LC_ALL=C
<4>安裝擴(kuò)展包
sudo pip3 install virtualenvwrapper
<5>配置虛擬環(huán)境
進(jìn)入
vi .bashrc
配置
export WORKON_HOME=$HOME/.virtualenvs
export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3
source /usr/local/bin/virtualenvwrapper.sh
生效
source .bashrc
<5>創(chuàng)建虛擬環(huán)境
mkvirtualenv 環(huán)境名
<6>安裝數(shù)據(jù)庫
退出環(huán)境
deactivate
安裝數(shù)據(jù)庫
sudo apt-get install mysql-server mysql-client
重新打開一個(gè)終端
導(dǎo)出本地?cái)?shù)據(jù)庫
mysqldump -uroot -p 1807_blog_db > /home/hu/桌面/blog.sql
導(dǎo)出本地依賴第三方
進(jìn)入虛擬環(huán)境
pip freeze > /home/hu/桌面/requirements.txt
<7>想任何辦法把數(shù)據(jù)庫和依賴文件還有源碼 上傳到服務(wù)器 git ftp scp
以下以scp為例
放到/home/ubuntu/目錄下
數(shù)據(jù)庫
scp -r blog.sql ubuntu@94.191.34.142
第三方依賴
scp -r requirements.txt ubuntu@94.191.34.142
項(xiàng)目源碼壓縮
tar -zcvf MyBlog MyBlog.tar.gz
上傳到服務(wù)器
scp -r MyBLog.zip ubuntu@94.191.34.142
解壓縮
unzip MyBlog.zip
進(jìn)入虛擬環(huán)境
workon 環(huán)境名
裝依賴包
pip install -r requirements.txt
安裝nginx
sudo apt-get install nginx
安裝uwsgi
pip install uwsgi
進(jìn)入項(xiàng)目,配置uwsgi
查看uwsgi是否啟動(dòng),若啟動(dòng)殺進(jìn)程,啟動(dòng)uwsgi
查看nginx配置文件
cd/etc/nginx/
vi nginx.conf
寫到http括號(hào)下,保存并退出
server {
listen 80;
server_name 94.191.34.142;
#動(dòng)態(tài)請(qǐng)求
location / {
include uwsgi_params;
uwsgi_pass 127.0.0.1:8000;
}
#靜態(tài)
location /static {
alias /home/ubuntu/MyBlog/static ;
}
}
查看nginx日志
cd /etc/nginx/var/log/ngix/
查看uwsgi日志
cd /home/ubuntu/MyBlog/
殺掉nginx進(jìn)程,再次啟動(dòng)
去瀏覽器訪問公網(wǎng)IP