在開發(fā)機上的準備工作:
- 確認項目沒有bug陋气。
- 用
pip freeze > requirements.txt
將當前環(huán)境的包導出到requirements.txt
文件中,方便在部署的時候安裝鸥鹉。 - 將項目上傳到服務器上的
/srv
目錄下稳析。這里以git
的形式為例踊淳。scp
- git init
- git remote add origin xxx.git
- git add .
- git commit -m 'first commit'
- git pull origin master --allow-unrelated-histories
- git push origin master
在服務器上的準備工作:
- 安裝好項目用到的
Python
甚牲。- sudo apt install python
- sudo apt install python-pip
- pip install --upgrade pip
- 安裝
virtualenv
以及virutalenvwrapper
灶壶。并創(chuàng)建虛擬環(huán)境肝断。- pip install virtualenv
- pip install virtualenvwrapper
- sudo apt install vim
- vim ~/.bashrc 進入文件中,填入以下兩行代碼:
export WORKON_HOME=$HOME/.virtualenvs source /usr/local/bin/virtualenvwrapper.sh
- source ~/.bashrc
- 安裝
git
:sudo apt install git
- 為了方便XShell或者CRT連接服務器,建議安裝
OpenSSH
:sudo apt install openssh-server openssh-client service ssh restart
- 安裝
MySQL
服務器和客戶端:sudo apt install mysql-server mysql-client sudo apt-get install libmysqld-dev
- 進入虛擬環(huán)境中胸懈,然后進入到項目所在目錄担扑,執(zhí)行命令:
pip install -r requirements.txt
,安裝好相應的包趣钱。 - 在
mysql
數(shù)據(jù)庫中涌献,創(chuàng)建相應的數(shù)據(jù)庫。 - 執(zhí)行
python manage.py migrate
命令首有,將遷移文件燕垃,映射到數(shù)據(jù)庫中,創(chuàng)建相應的表井联。 - 執(zhí)行
python manage.py runserver 0.0.0.0:8000
卜壕,然后在你自己電腦上,在瀏覽器中輸入http://你的服務器的ip地址:8000/
低矮,訪問下網(wǎng)站所有頁 面印叁,確保所有頁面都沒有錯誤。 - 設置
ALLOW_HOST
為你的域名军掂,以及ip地址轮蜕。 - 設置
DEBUG=False
,避免如果你的網(wǎng)站產(chǎn)生錯誤蝗锥,而將錯誤信息暴漏給用戶跃洛。 - 收集靜態(tài)文件:
python manage.py collectstatic
。
安裝uwsgi
- uwsgi是一個應用服務器终议,非靜態(tài)文件的網(wǎng)絡請求就必須通過他完成汇竭,他也可以充當靜態(tài)文件服務器,但不是他的強項穴张。uwsgi是使用python編寫的细燎,因此通過
pip install uwsgi
就可以了。(uwsgi必須安裝在系統(tǒng)級別的Python環(huán)境中皂甘,不要安裝到虛擬環(huán)境中)玻驻。 - 使用命令
uwsgi --http :8000 --module zhiliaoketang.wsgi --vritualenv=/root/.virtualenvs/django-env-py2
。用uwsgi
啟動項目偿枕,如果能夠在瀏覽器中訪問到這個頁面璧瞬,說明uwsgi
可以加載項目了。
編寫uwsgi配置文件:
在項目的路徑下面渐夸,創(chuàng)建一個文件叫做zhiliaoketang_uwsgi.ini
的文件嗤锉,然后填寫以下代碼:
[uwsgi]
# Django相關的配置
# 必須全部為絕對路徑
# 項目的路徑
chdir = /srv/zhiliaoketang
# Django的wsgi文件
module = zhiliaoketang.wsgi
# Python虛擬環(huán)境的路徑
home = /root/.virtualenvs/django-env-py2
# 進程相關的設置
# 主進程
master = true
# 最大數(shù)量的工作進程
processes = 10
# socket文件路徑,絕對路徑
socket = /srv/zhiliaoketang/zhiliaoketang.sock
# 設置socket的權限
chmod-socket = 666
# 退出的時候是否清理環(huán)境
vacuum = true
然后使用命令uwsgi --ini zhiliaoketang.ini
墓塌,看下是否還能啟動這個項目瘟忱。
安裝nginx:
- nginx是一個web服務器奥额。用來加載靜態(tài)文件和接收http請求的。通過命令
sudo apt install nginx
即可安裝酷誓。 -
nginx
常用命令:- 啟動nginx:service nginx start
- 關閉nginx:service nginx stop
- 重啟nginx:service nginx restart
收集靜態(tài)文件:
靜態(tài)文件應該讓nginx來服務披坏,而不是讓django來做态坦。首先確保你的settings.py
文件中有一個STATIC_ROOT
配置盐数,這個配置應該指定你的靜態(tài)文件要放在哪個目錄下。那么我們可以執(zhí)行以下命令:python manage.py collectstatic
來收集所有靜態(tài)文件伞梯,將這些靜態(tài)文件放在指定的目錄下玫氢。
編寫nginx配置文件:
在/etc/nginx/conf.d
目錄下,新建一個文件谜诫,叫做zhiliaoketang.conf
漾峡,然后將以下代碼粘貼進去:
upstream zhiliaoketang {
server unix:///srv/zhiliaoketang/zhiliaoketang.sock;
}
# 配置服務器
server {
# 監(jiān)聽的端口號
listen 80;
# 域名
server_name 192.168.0.101;
charset utf-8;
# 最大的文件上傳尺寸
client_max_body_size 75M;
# 靜態(tài)文件訪問的url
location /static {
# 靜態(tài)文件地址
alias /srv/zhiliaoketang/static_dist;
}
# 最后,發(fā)送所有非靜態(tài)文件請求到django服務器
location / {
uwsgi_pass zhiliaoketang;
# uwsgi_params文件地址
include /etc/nginx/uwsgi_params;
}
}
寫完配置文件后喻旷,為了測試配置文件是否設置成功生逸,運行命令:service nginx configtest
,如果不報錯且预,說明成功槽袄。
每次修改完了配置文件,都要記得運行service nginx restart
锋谐。
使用supervisor配置:
讓supervisor管理uwsgi遍尺,可以在uwsgi發(fā)生意外的情況下,會自動的重啟涮拗。
-
supervisor
的安裝:在系統(tǒng)級別的python環(huán)境下pip install supervisor
乾戏。 - 在項目的根目錄下創(chuàng)建一個文件叫做
zlkt_supervisor.conf
。內容如下:# supervisor的程序名字 [program:mysite] # supervisor執(zhí)行的命令 command=uwsgi --ini zlkt_uwsgi.ini # 項目的目錄 directory = /srv/zhiliaoketang # 開始的時候等待多少秒 startsecs=0 # 停止的時候等待多少秒 stopwaitsecs=0 # 自動開始 autostart=true # 程序掛了后自動重啟 autorestart=true # 輸出的log文件 stdout_logfile=/srv/zhiliaoketang/log/supervisord.log # 輸出的錯誤文件 stderr_logfile=/srv/zhiliaoketang/log/supervisord.err [supervisord] # log的級別 loglevel=info # 使用supervisorctl的配置 [supervisorctl] # 使用supervisorctl登錄的地址和端口號 serverurl = http://127.0.0.1:9001 # 登錄supervisorctl的用戶名和密碼 username = admin password = 123 [inet_http_server] # supervisor的服務器 port = :9001 # 用戶名和密碼 username = admin password = 123 [rpcinterface:supervisor] supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface
然后使用命令supervisord -c zlkt_supervisor.conf
運行就可以了三热。
以后如果想要啟動uwsgi
鼓择,就可以通過命令supervisorctl -c supervisor.conf
進入到管理控制臺,然后可以執(zhí)行相關的命令進行管理:
* status # 查看狀態(tài)
* start program_name #啟動程序
* restart program_name #重新啟動程序
* stop program_name # 關閉程序
* reload # 重新加載配置文件
* quit # 退出控制臺